From 5cc9577f96427b6c2f872b1b4a93efec38f66bde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Radek=20Hu=C5=A1ek?= <PitelVonSacek@gmail.com> Date: Wed, 9 Dec 2015 23:46:43 +0100 Subject: [PATCH] Refactor Tester::run() --- group-connectivity.h | 38 ++++++++++++++++++-------------------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/group-connectivity.h b/group-connectivity.h index 110faf4..eac1fd0 100644 --- a/group-connectivity.h +++ b/group-connectivity.h @@ -140,32 +140,30 @@ struct Tester : public AbstractTester { #endif virtual bool run() { +# if SAVE_MEMORY +# define INC(a) a = true +# else +# define INC(a) a++ +# endif + Mapping forb(edges); - -#if USE_NEXT_FORB - for (size_t i = 0; i < edges; i++) - forb.assign(i, 1); - do { - Mapping copy(forb); -#if SAVE_MEMORY - classes[pack(cannonize(copy))] = true; -#else - classes[pack(cannonize(copy))]++; -#endif - } while (nextForb(forb)); -#else // ! USE_NEXT_FORB - for (size_t i = 0; i < numForb; i++) -#if SAVE_MEMORY - classes[pack(cannonize(unpack(i, forb)))] = true; -#else - classes[pack(cannonize(unpack(i, forb)))]++; -#endif -#endif +# if USE_NEXT_FORB + for (size_t i = 0; i < edges; i++) forb.assign(i, 1); + + do { + Mapping copy(forb); + INC(classes[pack(cannonize(copy))]); + } while (nextForb(forb)); +# else + for (size_t i = 0; i < numForb; i++) + INC(classes[pack(cannonize(unpack(i, forb)))]); +# endif for (const auto &c : classes) if (!c) return (isConnected = false); return (isConnected = true); +# undef INC } virtual ~Tester() {} -- GitLab