summaryrefslogtreecommitdiffstats
path: root/Source/cmStandardIncludes.h
diff options
context:
space:
mode:
authorAndy Cedilnik <andy.cedilnik@kitware.com>2005-06-17 17:04:56 (GMT)
committerAndy Cedilnik <andy.cedilnik@kitware.com>2005-06-17 17:04:56 (GMT)
commitd9dc9b54a62c20be2cf42ce050780e1b924e412c (patch)
treefbc9478d4a3559ec8c6ee5c61a008e031c982f99 /Source/cmStandardIncludes.h
parentd3239ac68f4cc74e5f5c7cecf876f07262bbf57e (diff)
downloadCMake-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.h27
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