diff options
author | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-06-17 17:04:56 (GMT) |
---|---|---|
committer | Andy Cedilnik <andy.cedilnik@kitware.com> | 2005-06-17 17:04:56 (GMT) |
commit | d9dc9b54a62c20be2cf42ce050780e1b924e412c (patch) | |
tree | fbc9478d4a3559ec8c6ee5c61a008e031c982f99 /Source/cmStandardIncludes.h | |
parent | d3239ac68f4cc74e5f5c7cecf876f07262bbf57e (diff) | |
download | CMake-d9dc9b54a62c20be2cf42ce050780e1b924e412c.zip CMake-d9dc9b54a62c20be2cf42ce050780e1b924e412c.tar.gz CMake-d9dc9b54a62c20be2cf42ce050780e1b924e412c.tar.bz2 |
ENH: Add superclass for all commands and handlers. Improve handlers to have initialization code, and start initializing ctest when start is invoked
Diffstat (limited to 'Source/cmStandardIncludes.h')
-rw-r--r-- | Source/cmStandardIncludes.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/Source/cmStandardIncludes.h b/Source/cmStandardIncludes.h index ae83332..70d2048 100644 --- a/Source/cmStandardIncludes.h +++ b/Source/cmStandardIncludes.h @@ -323,4 +323,31 @@ public: # pragma reset woff 1375 /* base class destructor not virtual */ #endif +// All subclasses of cmCommand or cmCTestGenericHandler should invoke this macro. +#define cmTypeMacro(thisClass,superclass) \ +virtual const char* GetNameOfClass() { return #thisClass; } \ +typedef superclass Superclass; \ +static bool IsTypeOf(const char *type) \ +{ \ + if ( !strcmp(#thisClass,type) ) \ + { \ + return true; \ + } \ + return Superclass::IsTypeOf(type); \ +} \ +virtual bool IsA(const char *type) \ +{ \ + return thisClass::IsTypeOf(type); \ +} \ +static thisClass* SafeDownCast(cmObject *c) \ +{ \ + if ( c && c->IsA(#thisClass) ) \ + { \ + return (thisClass *)c; \ + } \ + return 0;\ +} + + + #endif |