Просмотр исходного кода

cmTypeMacro: Extract from cmStandardIncludes.h

Daniel Pfeifer 9 лет назад
Родитель
Сommit
ffdc0a8e28
2 измененных файлов с 38 добавлено и 22 удалено
  1. 1 22
      Source/cmStandardIncludes.h
  2. 37 0
      Source/cmTypeMacro.h

+ 1 - 22
Source/cmStandardIncludes.h

@@ -57,28 +57,7 @@ extern void operator<<(std::ostream&, const std::ostringstream&);
 
 #include "cmCustomCommandLines.h"
 #include "cmDocumentationEntry.h"
-
-// 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 static_cast<thisClass*>(c);                                      \
-    }                                                                         \
-    return 0;                                                                 \
-  }                                                                           \
-  class cmTypeMacro_UseTrailingSemicolon
+#include "cmTypeMacro.h"
 
 enum cmTargetLinkLibraryType
 {

+ 37 - 0
Source/cmTypeMacro.h

@@ -0,0 +1,37 @@
+/*============================================================================
+  CMake - Cross Platform Makefile Generator
+  Copyright 2000-2009 Kitware, Inc., Insight Software Consortium
+
+  Distributed under the OSI-approved BSD License (the "License");
+  see accompanying file Copyright.txt for details.
+
+  This software is distributed WITHOUT ANY WARRANTY; without even the
+  implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+  See the License for more information.
+============================================================================*/
+#ifndef cmTypeMacro_h
+#define cmTypeMacro_h
+
+// 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 static_cast<thisClass*>(c);                                      \
+    }                                                                         \
+    return 0;                                                                 \
+  }                                                                           \
+  class cmTypeMacro_UseTrailingSemicolon
+
+#endif