From: <syn...@us...> - 2009-11-21 10:44:18
|
Revision: 1060 http://loki-lib.svn.sourceforge.net/loki-lib/?rev=1060&view=rev Author: syntheticpp Date: 2009-11-21 10:44:08 +0000 (Sat, 21 Nov 2009) Log Message: ----------- use foreach in register code, add foreach tests Modified Paths: -------------- trunk/include/loki/Register.h trunk/include/loki/StrongPtr.h trunk/test/Register/classlist.h trunk/test/Register/foo.cpp trunk/test/Register/main.cpp Modified: trunk/include/loki/Register.h =================================================================== --- trunk/include/loki/Register.h 2009-11-21 10:40:59 UTC (rev 1059) +++ trunk/include/loki/Register.h 2009-11-21 10:44:08 UTC (rev 1060) @@ -17,7 +17,9 @@ #include "TypeManip.h" #include "HierarchyGenerators.h" +#include "ForEachType.h" + /// \defgroup RegisterGroup Register namespace Loki @@ -33,41 +35,39 @@ /// \ingroup RegisterGroup /// Must be specialized be the user //////////////////////////////////////////////////////////////////////////////// - template<class t> bool RegisterFunction(); + template<class T> + bool RegisterFunction(); //////////////////////////////////////////////////////////////////////////////// /// \ingroup RegisterGroup /// Must be specialized be the user //////////////////////////////////////////////////////////////////////////////// - template<class t> bool UnRegisterFunction(); + template<class T> + bool UnRegisterFunction(); namespace Private { - template<class T> struct RegisterOnCreate { - RegisterOnCreate() { RegisterFunction<T>(); } + template< int Index, typename T > + void operator()() + { + RegisterFunction<T>(); + } }; - template<class T> struct UnRegisterOnDelete { - ~UnRegisterOnDelete() { UnRegisterFunction<T>(); } - }; - - template<class T> - struct RegisterOnCreateElement - { - RegisterOnCreate<T> registerObj; + template< int Index, typename T > + void operator()() + { + UnRegisterFunction<T>(); + } }; - template<class T> - struct UnRegisterOnDeleteElement - { - UnRegisterOnDelete<T> unregisterObj; - }; } + //////////////////////////////////////////////////////////////////////////////// /// \class RegisterOnCreateSet /// @@ -79,9 +79,14 @@ //////////////////////////////////////////////////////////////////////////////// template<typename ElementList> - struct RegisterOnCreateSet - : GenScatterHierarchy<ElementList, Private::RegisterOnCreateElement> - {}; + struct RegisterOnCreateSet + { + RegisterOnCreateSet() + { + Private::RegisterOnCreate d; + ForEachType< ElementList, Private::RegisterOnCreate > dummy(d); + } + }; //////////////////////////////////////////////////////////////////////////////// /// \class UnRegisterOnDeleteSet @@ -93,9 +98,14 @@ /// see test/Register //////////////////////////////////////////////////////////////////////////////// template<typename ElementList> - struct UnRegisterOnDeleteSet - : GenScatterHierarchy<ElementList, Private::UnRegisterOnDeleteElement> - {}; + struct UnRegisterOnDeleteSet + { + ~UnRegisterOnDeleteSet() + { + Private::UnRegisterOnDelete d; + ForEachType< ElementList, Private::UnRegisterOnDelete > dummy(d); + } + }; //////////////////////////////////////////////////////////////////////////////// Modified: trunk/include/loki/StrongPtr.h =================================================================== --- trunk/include/loki/StrongPtr.h 2009-11-21 10:40:59 UTC (rev 1059) +++ trunk/include/loki/StrongPtr.h 2009-11-21 10:44:08 UTC (rev 1060) @@ -1810,4 +1810,3 @@ #endif // end file guardian - /// specialization of std::less for StroeTracker@Private@Loki@@@std@@@std@@QBEXABV123@@Z |