From 9855ebf11a1556bd0b73a1eaec39232842871528 Mon Sep 17 00:00:00 2001
From: Daniel Pfeifer <daniel@pfeifer-mail.de>
Date: Sun, 23 Oct 2016 00:45:08 +0200
Subject: Make cmCommand not inherit from cmObject

---
 Source/CTest/cmCTestBuildCommand.h                |  2 --
 Source/CTest/cmCTestCommand.h                     |  2 --
 Source/CTest/cmCTestConfigureCommand.h            |  2 --
 Source/CTest/cmCTestCoverageCommand.h             |  2 +-
 Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h |  2 --
 Source/CTest/cmCTestHandlerCommand.h              |  2 --
 Source/CTest/cmCTestMemCheckCommand.h             |  2 --
 Source/CTest/cmCTestReadCustomFilesCommand.h      |  2 --
 Source/CTest/cmCTestRunScriptCommand.h            |  2 --
 Source/CTest/cmCTestSleepCommand.h                |  2 --
 Source/CTest/cmCTestStartCommand.h                |  2 --
 Source/CTest/cmCTestSubmitCommand.h               |  2 +-
 Source/CTest/cmCTestTestCommand.h                 |  2 --
 Source/CTest/cmCTestTestHandler.cxx               |  8 --------
 Source/CTest/cmCTestUpdateCommand.h               |  2 --
 Source/CTest/cmCTestUploadCommand.h               |  2 +-
 Source/cmAddCompileOptionsCommand.h               |  2 --
 Source/cmAddCustomCommandCommand.h                |  2 --
 Source/cmAddCustomTargetCommand.h                 |  2 --
 Source/cmAddDefinitionsCommand.h                  |  2 --
 Source/cmAddDependenciesCommand.h                 |  2 --
 Source/cmAddExecutableCommand.h                   |  2 --
 Source/cmAddLibraryCommand.h                      |  2 --
 Source/cmAddSubDirectoryCommand.h                 |  2 --
 Source/cmAddTestCommand.h                         |  2 --
 Source/cmAuxSourceDirectoryCommand.h              |  2 --
 Source/cmBreakCommand.h                           |  2 --
 Source/cmBuildCommand.h                           |  2 --
 Source/cmBuildNameCommand.h                       |  1 -
 Source/cmCMakeHostSystemInformationCommand.h      |  2 --
 Source/cmCMakeMinimumRequired.h                   |  2 --
 Source/cmCMakePolicyCommand.h                     |  2 --
 Source/cmCommand.h                                | 14 +++++---------
 Source/cmConfigureFileCommand.h                   |  2 --
 Source/cmContinueCommand.h                        |  2 --
 Source/cmCoreTryCompile.h                         |  2 --
 Source/cmCreateTestSourceList.h                   |  2 --
 Source/cmDefinePropertyCommand.h                  |  2 --
 Source/cmElseCommand.h                            |  2 --
 Source/cmElseIfCommand.h                          |  2 --
 Source/cmEnableLanguageCommand.h                  |  2 --
 Source/cmEnableTestingCommand.h                   |  2 --
 Source/cmEndForEachCommand.h                      |  2 --
 Source/cmEndFunctionCommand.h                     |  2 --
 Source/cmEndIfCommand.h                           |  2 --
 Source/cmEndMacroCommand.h                        |  2 --
 Source/cmEndWhileCommand.h                        |  2 --
 Source/cmExecProgramCommand.h                     |  2 --
 Source/cmExecuteProcessCommand.h                  |  2 --
 Source/cmExportCommand.h                          |  2 --
 Source/cmExportLibraryDependenciesCommand.h       |  1 -
 Source/cmFLTKWrapUICommand.h                      |  2 --
 Source/cmFileCommand.h                            |  2 --
 Source/cmFindBase.h                               |  1 -
 Source/cmFindCommon.h                             |  1 -
 Source/cmFindFileCommand.h                        |  2 --
 Source/cmFindLibraryCommand.h                     |  2 --
 Source/cmFindPackageCommand.h                     |  2 --
 Source/cmFindPathCommand.h                        |  1 -
 Source/cmFindProgramCommand.h                     |  2 --
 Source/cmForEachCommand.h                         |  2 --
 Source/cmFunctionCommand.cxx                      |  9 ++-------
 Source/cmFunctionCommand.h                        |  2 --
 Source/cmGetCMakePropertyCommand.h                |  2 --
 Source/cmGetDirectoryPropertyCommand.h            |  2 --
 Source/cmGetFilenameComponentCommand.h            |  2 --
 Source/cmGetPropertyCommand.h                     |  2 --
 Source/cmGetSourceFilePropertyCommand.h           |  2 --
 Source/cmGetTargetPropertyCommand.h               |  2 --
 Source/cmGetTestPropertyCommand.h                 |  2 --
 Source/cmIfCommand.h                              |  2 --
 Source/cmIncludeCommand.h                         |  2 --
 Source/cmIncludeDirectoryCommand.h                |  2 --
 Source/cmIncludeExternalMSProjectCommand.h        |  2 --
 Source/cmIncludeRegularExpressionCommand.h        |  2 --
 Source/cmInstallCommand.h                         |  2 --
 Source/cmInstallFilesCommand.h                    |  2 --
 Source/cmInstallProgramsCommand.h                 |  2 --
 Source/cmInstallTargetsCommand.h                  |  2 --
 Source/cmLinkDirectoriesCommand.h                 |  2 --
 Source/cmLinkLibrariesCommand.h                   |  2 --
 Source/cmListCommand.h                            |  2 --
 Source/cmLoadCacheCommand.h                       |  2 --
 Source/cmLoadCommandCommand.cxx                   |  2 --
 Source/cmLoadCommandCommand.h                     |  1 -
 Source/cmMacroCommand.cxx                         |  9 ++-------
 Source/cmMacroCommand.h                           |  2 --
 Source/cmMakeDirectoryCommand.h                   |  2 --
 Source/cmMarkAsAdvancedCommand.h                  |  2 --
 Source/cmMathCommand.h                            |  2 --
 Source/cmMessageCommand.h                         |  2 --
 Source/cmOptionCommand.h                          |  2 --
 Source/cmOutputRequiredFilesCommand.h             |  1 -
 Source/cmParseArgumentsCommand.h                  |  2 --
 Source/cmProjectCommand.h                         |  2 --
 Source/cmQTWrapCPPCommand.h                       |  2 --
 Source/cmQTWrapUICommand.h                        |  1 -
 Source/cmRemoveCommand.h                          |  2 --
 Source/cmRemoveDefinitionsCommand.h               |  2 --
 Source/cmReturnCommand.h                          |  2 --
 Source/cmSeparateArgumentsCommand.h               |  2 --
 Source/cmSetCommand.h                             |  2 --
 Source/cmSetDirectoryPropertiesCommand.h          |  2 --
 Source/cmSetPropertyCommand.h                     |  2 --
 Source/cmSetSourceFilesPropertiesCommand.h        |  2 --
 Source/cmSetTargetPropertiesCommand.h             |  2 --
 Source/cmSetTestsPropertiesCommand.h              |  2 --
 Source/cmSiteNameCommand.h                        |  2 --
 Source/cmSourceGroupCommand.h                     |  2 --
 Source/cmState.cxx                                |  3 +--
 Source/cmStringCommand.h                          |  2 --
 Source/cmSubdirCommand.h                          |  2 --
 Source/cmSubdirDependsCommand.h                   |  1 -
 Source/cmTargetCompileDefinitionsCommand.h        |  2 --
 Source/cmTargetCompileFeaturesCommand.h           |  2 --
 Source/cmTargetCompileOptionsCommand.h            |  2 --
 Source/cmTargetIncludeDirectoriesCommand.h        |  2 --
 Source/cmTargetLinkLibrariesCommand.h             |  2 --
 Source/cmTargetPropCommandBase.h                  |  2 --
 Source/cmTargetSourcesCommand.h                   |  2 --
 Source/cmTryCompileCommand.h                      |  2 --
 Source/cmTryRunCommand.h                          |  2 --
 Source/cmUnsetCommand.h                           |  2 --
 Source/cmUseMangledMesaCommand.h                  |  1 -
 Source/cmUtilitySourceCommand.h                   |  1 -
 Source/cmVariableRequiresCommand.h                |  1 -
 Source/cmVariableWatchCommand.h                   |  2 --
 Source/cmWhileCommand.h                           |  2 --
 Source/cmWriteFileCommand.h                       |  2 --
 129 files changed, 13 insertions(+), 266 deletions(-)

diff --git a/Source/CTest/cmCTestBuildCommand.h b/Source/CTest/cmCTestBuildCommand.h
index 0aaf623..acc0ecf 100644
--- a/Source/CTest/cmCTestBuildCommand.h
+++ b/Source/CTest/cmCTestBuildCommand.h
@@ -47,8 +47,6 @@ public:
   bool InitialPass(std::vector<std::string> const& args,
                    cmExecutionStatus& status) CM_OVERRIDE;
 
-  cmTypeMacro(cmCTestBuildCommand, cmCTestHandlerCommand);
-
   cmGlobalGenerator* GlobalGenerator;
 
 protected:
diff --git a/Source/CTest/cmCTestCommand.h b/Source/CTest/cmCTestCommand.h
index 2b9b93b..6fc237a 100644
--- a/Source/CTest/cmCTestCommand.h
+++ b/Source/CTest/cmCTestCommand.h
@@ -26,8 +26,6 @@ public:
 
   cmCTest* CTest;
   cmCTestScriptHandler* CTestScriptHandler;
-
-  cmTypeMacro(cmCTestCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/CTest/cmCTestConfigureCommand.h b/Source/CTest/cmCTestConfigureCommand.h
index 8bc69fe..95a476f 100644
--- a/Source/CTest/cmCTestConfigureCommand.h
+++ b/Source/CTest/cmCTestConfigureCommand.h
@@ -39,8 +39,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_configure"; }
 
-  cmTypeMacro(cmCTestConfigureCommand, cmCTestHandlerCommand);
-
 protected:
   cmCTestGenericHandler* InitializeHandler() CM_OVERRIDE;
 
diff --git a/Source/CTest/cmCTestCoverageCommand.h b/Source/CTest/cmCTestCoverageCommand.h
index d54e68d..98dd6bf 100644
--- a/Source/CTest/cmCTestCoverageCommand.h
+++ b/Source/CTest/cmCTestCoverageCommand.h
@@ -40,7 +40,7 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_coverage"; }
 
-  cmTypeMacro(cmCTestCoverageCommand, cmCTestHandlerCommand);
+  typedef cmCTestHandlerCommand Superclass;
 
 protected:
   cmCTestGenericHandler* InitializeHandler() CM_OVERRIDE;
diff --git a/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h b/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h
index 8b5d5a4..a8d00e0 100644
--- a/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h
+++ b/Source/CTest/cmCTestEmptyBinaryDirectoryCommand.h
@@ -51,8 +51,6 @@ public:
   {
     return "ctest_empty_binary_directory";
   }
-
-  cmTypeMacro(cmCTestEmptyBinaryDirectoryCommand, cmCTestCommand);
 };
 
 #endif
diff --git a/Source/CTest/cmCTestHandlerCommand.h b/Source/CTest/cmCTestHandlerCommand.h
index 3fd384f..0a1bae4 100644
--- a/Source/CTest/cmCTestHandlerCommand.h
+++ b/Source/CTest/cmCTestHandlerCommand.h
@@ -32,8 +32,6 @@ public:
   bool InitialPass(std::vector<std::string> const& args,
                    cmExecutionStatus& status) CM_OVERRIDE;
 
-  cmTypeMacro(cmCTestHandlerCommand, cmCTestCommand);
-
   enum
   {
     ct_NONE,
diff --git a/Source/CTest/cmCTestMemCheckCommand.h b/Source/CTest/cmCTestMemCheckCommand.h
index d3b8be7..efd4ecf 100644
--- a/Source/CTest/cmCTestMemCheckCommand.h
+++ b/Source/CTest/cmCTestMemCheckCommand.h
@@ -39,8 +39,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_memcheck"; }
 
-  cmTypeMacro(cmCTestMemCheckCommand, cmCTestTestCommand);
-
 protected:
   cmCTestGenericHandler* InitializeActualHandler() CM_OVERRIDE;
 };
diff --git a/Source/CTest/cmCTestReadCustomFilesCommand.h b/Source/CTest/cmCTestReadCustomFilesCommand.h
index 29eba90..53610ba 100644
--- a/Source/CTest/cmCTestReadCustomFilesCommand.h
+++ b/Source/CTest/cmCTestReadCustomFilesCommand.h
@@ -46,8 +46,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_read_custom_files"; }
-
-  cmTypeMacro(cmCTestReadCustomFilesCommand, cmCTestCommand);
 };
 
 #endif
diff --git a/Source/CTest/cmCTestRunScriptCommand.h b/Source/CTest/cmCTestRunScriptCommand.h
index 2978bb9..ac79db4 100644
--- a/Source/CTest/cmCTestRunScriptCommand.h
+++ b/Source/CTest/cmCTestRunScriptCommand.h
@@ -47,8 +47,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_run_script"; }
-
-  cmTypeMacro(cmCTestRunScriptCommand, cmCTestCommand);
 };
 
 #endif
diff --git a/Source/CTest/cmCTestSleepCommand.h b/Source/CTest/cmCTestSleepCommand.h
index b144012..c7e076f 100644
--- a/Source/CTest/cmCTestSleepCommand.h
+++ b/Source/CTest/cmCTestSleepCommand.h
@@ -47,8 +47,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_sleep"; }
-
-  cmTypeMacro(cmCTestSleepCommand, cmCTestCommand);
 };
 
 #endif
diff --git a/Source/CTest/cmCTestStartCommand.h b/Source/CTest/cmCTestStartCommand.h
index 6bb0bc6..1686b20 100644
--- a/Source/CTest/cmCTestStartCommand.h
+++ b/Source/CTest/cmCTestStartCommand.h
@@ -60,8 +60,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_start"; }
 
-  cmTypeMacro(cmCTestStartCommand, cmCTestCommand);
-
 private:
   bool InitialCheckout(std::ostream& ofs, std::string const& sourceDir);
   bool CreateNewTag;
diff --git a/Source/CTest/cmCTestSubmitCommand.h b/Source/CTest/cmCTestSubmitCommand.h
index db8a604..f8b9a45 100644
--- a/Source/CTest/cmCTestSubmitCommand.h
+++ b/Source/CTest/cmCTestSubmitCommand.h
@@ -55,7 +55,7 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_submit"; }
 
-  cmTypeMacro(cmCTestSubmitCommand, cmCTestHandlerCommand);
+  typedef cmCTestHandlerCommand Superclass;
 
 protected:
   cmCTestGenericHandler* InitializeHandler() CM_OVERRIDE;
diff --git a/Source/CTest/cmCTestTestCommand.h b/Source/CTest/cmCTestTestCommand.h
index 6161acb..b4a01dc 100644
--- a/Source/CTest/cmCTestTestCommand.h
+++ b/Source/CTest/cmCTestTestCommand.h
@@ -39,8 +39,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_test"; }
 
-  cmTypeMacro(cmCTestTestCommand, cmCTestHandlerCommand);
-
 protected:
   virtual cmCTestGenericHandler* InitializeActualHandler();
   cmCTestGenericHandler* InitializeHandler() CM_OVERRIDE;
diff --git a/Source/CTest/cmCTestTestHandler.cxx b/Source/CTest/cmCTestTestHandler.cxx
index 4e6f1e9..132d049 100644
--- a/Source/CTest/cmCTestTestHandler.cxx
+++ b/Source/CTest/cmCTestTestHandler.cxx
@@ -59,8 +59,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "subdirs"; }
 
-  cmTypeMacro(cmCTestSubdirCommand, cmCommand);
-
   cmCTestTestHandler* TestHandler;
 };
 
@@ -140,8 +138,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "add_subdirectory"; }
 
-  cmTypeMacro(cmCTestAddSubdirectoryCommand, cmCommand);
-
   cmCTestTestHandler* TestHandler;
 };
 
@@ -214,8 +210,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "add_test"; }
 
-  cmTypeMacro(cmCTestAddTestCommand, cmCommand);
-
   cmCTestTestHandler* TestHandler;
 };
 
@@ -254,8 +248,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "set_tests_properties"; }
 
-  cmTypeMacro(cmCTestSetTestsPropertiesCommand, cmCommand);
-
   cmCTestTestHandler* TestHandler;
 };
 
diff --git a/Source/CTest/cmCTestUpdateCommand.h b/Source/CTest/cmCTestUpdateCommand.h
index 9d1a86e..e834a295 100644
--- a/Source/CTest/cmCTestUpdateCommand.h
+++ b/Source/CTest/cmCTestUpdateCommand.h
@@ -39,8 +39,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_update"; }
 
-  cmTypeMacro(cmCTestUpdateCommand, cmCTestHandlerCommand);
-
 protected:
   cmCTestGenericHandler* InitializeHandler() CM_OVERRIDE;
 };
diff --git a/Source/CTest/cmCTestUploadCommand.h b/Source/CTest/cmCTestUploadCommand.h
index b858077..b231844 100644
--- a/Source/CTest/cmCTestUploadCommand.h
+++ b/Source/CTest/cmCTestUploadCommand.h
@@ -41,7 +41,7 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "ctest_upload"; }
 
-  cmTypeMacro(cmCTestUploadCommand, cmCTestHandlerCommand);
+  typedef cmCTestHandlerCommand Superclass;
 
 protected:
   cmCTestGenericHandler* InitializeHandler() CM_OVERRIDE;
diff --git a/Source/cmAddCompileOptionsCommand.h b/Source/cmAddCompileOptionsCommand.h
index 52c4b51..9f2cf66 100644
--- a/Source/cmAddCompileOptionsCommand.h
+++ b/Source/cmAddCompileOptionsCommand.h
@@ -24,8 +24,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "add_compile_options"; }
-
-  cmTypeMacro(cmAddCompileOptionsCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmAddCustomCommandCommand.h b/Source/cmAddCustomCommandCommand.h
index 527bb6c..643163c 100644
--- a/Source/cmAddCustomCommandCommand.h
+++ b/Source/cmAddCustomCommandCommand.h
@@ -31,8 +31,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "add_custom_command"; }
 
-  cmTypeMacro(cmAddCustomCommandCommand, cmCommand);
-
 protected:
   bool CheckOutputs(const std::vector<std::string>& outputs);
 };
diff --git a/Source/cmAddCustomTargetCommand.h b/Source/cmAddCustomTargetCommand.h
index a4475c7..2ad244c 100644
--- a/Source/cmAddCustomTargetCommand.h
+++ b/Source/cmAddCustomTargetCommand.h
@@ -31,8 +31,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "add_custom_target"; }
-
-  cmTypeMacro(cmAddCustomTargetCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmAddDefinitionsCommand.h b/Source/cmAddDefinitionsCommand.h
index 43d0199..c6b5699 100644
--- a/Source/cmAddDefinitionsCommand.h
+++ b/Source/cmAddDefinitionsCommand.h
@@ -30,8 +30,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "add_definitions"; }
-
-  cmTypeMacro(cmAddDefinitionsCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmAddDependenciesCommand.h b/Source/cmAddDependenciesCommand.h
index 95e2ac6..2c7aa02 100644
--- a/Source/cmAddDependenciesCommand.h
+++ b/Source/cmAddDependenciesCommand.h
@@ -29,8 +29,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "add_dependencies"; }
-
-  cmTypeMacro(cmAddDependenciesCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmAddExecutableCommand.h b/Source/cmAddExecutableCommand.h
index fc08e8b..03faaf1 100644
--- a/Source/cmAddExecutableCommand.h
+++ b/Source/cmAddExecutableCommand.h
@@ -30,8 +30,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "add_executable"; }
-
-  cmTypeMacro(cmAddExecutableCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmAddLibraryCommand.h b/Source/cmAddLibraryCommand.h
index d072b80..d8eba8d 100644
--- a/Source/cmAddLibraryCommand.h
+++ b/Source/cmAddLibraryCommand.h
@@ -30,8 +30,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "add_library"; }
-
-  cmTypeMacro(cmAddLibraryCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmAddSubDirectoryCommand.h b/Source/cmAddSubDirectoryCommand.h
index 7347482..f300b2e 100644
--- a/Source/cmAddSubDirectoryCommand.h
+++ b/Source/cmAddSubDirectoryCommand.h
@@ -31,8 +31,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "add_subdirectory"; }
-
-  cmTypeMacro(cmAddSubDirectoryCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmAddTestCommand.h b/Source/cmAddTestCommand.h
index 92db7bc..7bbf7cf 100644
--- a/Source/cmAddTestCommand.h
+++ b/Source/cmAddTestCommand.h
@@ -30,8 +30,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "add_test"; }
 
-  cmTypeMacro(cmAddTestCommand, cmCommand);
-
 private:
   bool HandleNameMode(std::vector<std::string> const& args);
 };
diff --git a/Source/cmAuxSourceDirectoryCommand.h b/Source/cmAuxSourceDirectoryCommand.h
index cca70dc..9840d8e 100644
--- a/Source/cmAuxSourceDirectoryCommand.h
+++ b/Source/cmAuxSourceDirectoryCommand.h
@@ -33,8 +33,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "aux_source_directory"; }
-
-  cmTypeMacro(cmAuxSourceDirectoryCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmBreakCommand.h b/Source/cmBreakCommand.h
index ab58ab2..f1ade9a 100644
--- a/Source/cmBreakCommand.h
+++ b/Source/cmBreakCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "break"; }
-
-  cmTypeMacro(cmBreakCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmBuildCommand.h b/Source/cmBuildCommand.h
index a53a099..0dce4e4 100644
--- a/Source/cmBuildCommand.h
+++ b/Source/cmBuildCommand.h
@@ -40,8 +40,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "build_command"; }
 
-  cmTypeMacro(cmBuildCommand, cmCommand);
-
 private:
   bool IgnoreErrors() const;
 };
diff --git a/Source/cmBuildNameCommand.h b/Source/cmBuildNameCommand.h
index 7c09d73..6e8d98b 100644
--- a/Source/cmBuildNameCommand.h
+++ b/Source/cmBuildNameCommand.h
@@ -8,7 +8,6 @@
 class cmBuildNameCommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmBuildNameCommand, cmCommand);
   cmCommand* Clone() CM_OVERRIDE { return new cmBuildNameCommand; }
   bool InitialPass(std::vector<std::string> const& args,
                    cmExecutionStatus& status) CM_OVERRIDE;
diff --git a/Source/cmCMakeHostSystemInformationCommand.h b/Source/cmCMakeHostSystemInformationCommand.h
index 4ab6aa1..bddd7e1 100644
--- a/Source/cmCMakeHostSystemInformationCommand.h
+++ b/Source/cmCMakeHostSystemInformationCommand.h
@@ -44,8 +44,6 @@ public:
     return "cmake_host_system_information";
   }
 
-  cmTypeMacro(cmCMakeHostSystemInformationCommand, cmCommand);
-
 private:
   bool GetValue(cmsys::SystemInformation& info, std::string const& key,
                 std::string& value);
diff --git a/Source/cmCMakeMinimumRequired.h b/Source/cmCMakeMinimumRequired.h
index 425aeed..3acedd2 100644
--- a/Source/cmCMakeMinimumRequired.h
+++ b/Source/cmCMakeMinimumRequired.h
@@ -35,8 +35,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "cmake_minimum_required"; }
 
-  cmTypeMacro(cmCMakeMinimumRequired, cmCommand);
-
 private:
   std::vector<std::string> UnknownArguments;
   bool EnforceUnknownArguments();
diff --git a/Source/cmCMakePolicyCommand.h b/Source/cmCMakePolicyCommand.h
index d5c5cb5..68d9f7b 100644
--- a/Source/cmCMakePolicyCommand.h
+++ b/Source/cmCMakePolicyCommand.h
@@ -36,8 +36,6 @@ public:
     */
   std::string GetName() const CM_OVERRIDE { return "cmake_policy"; }
 
-  cmTypeMacro(cmCMakePolicyCommand, cmCommand);
-
 private:
   bool HandleSetMode(std::vector<std::string> const& args);
   bool HandleGetMode(std::vector<std::string> const& args);
diff --git a/Source/cmCommand.h b/Source/cmCommand.h
index d8e337d..dcbd0dc 100644
--- a/Source/cmCommand.h
+++ b/Source/cmCommand.h
@@ -19,11 +19,9 @@
  * to support such features as enable/disable, inheritance,
  * documentation, and construction.
  */
-class cmCommand : public cmObject
+class cmCommand
 {
 public:
-  cmTypeMacro(cmCommand, cmObject);
-
   /**
    * Construct the command. By default it is enabled with no makefile.
    */
@@ -36,7 +34,7 @@ public:
   /**
    * Need virtual destructor to destroy real command type.
    */
-  ~cmCommand() CM_OVERRIDE {}
+  virtual ~cmCommand() {}
 
   /**
    * Specify the makefile.
@@ -92,12 +90,10 @@ public:
   virtual bool IsScriptable() const { return false; }
 
   /**
-   * This is used to avoid including this command
-   * in documentation. This is mainly used by
-   * cmMacroHelperCommand and cmFunctionHelperCommand
-   * which cannot provide appropriate documentation.
+   * This determines if the command is defined in a cmake script.
+   * It is the case for cmMacroHelperCommand and cmFunctionHelperCommand.
    */
-  virtual bool ShouldAppearInDocumentation() const { return true; }
+  virtual bool IsUserDefined() const { return false; }
 
   /**
    * The name of the command as specified in CMakeList.txt.
diff --git a/Source/cmConfigureFileCommand.h b/Source/cmConfigureFileCommand.h
index f9a0f2a..9df4550 100644
--- a/Source/cmConfigureFileCommand.h
+++ b/Source/cmConfigureFileCommand.h
@@ -8,8 +8,6 @@
 class cmConfigureFileCommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmConfigureFileCommand, cmCommand);
-
   cmCommand* Clone() CM_OVERRIDE { return new cmConfigureFileCommand; }
 
   /**
diff --git a/Source/cmContinueCommand.h b/Source/cmContinueCommand.h
index a36d5f3..0c4e650 100644
--- a/Source/cmContinueCommand.h
+++ b/Source/cmContinueCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "continue"; }
-
-  cmTypeMacro(cmContinueCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmCoreTryCompile.h b/Source/cmCoreTryCompile.h
index 43b971f..5f909dd 100644
--- a/Source/cmCoreTryCompile.h
+++ b/Source/cmCoreTryCompile.h
@@ -37,8 +37,6 @@ protected:
   void FindOutputFile(const std::string& targetName,
                       cmStateEnums::TargetType targetType);
 
-  cmTypeMacro(cmCoreTryCompile, cmCommand);
-
   std::string BinaryDirectory;
   std::string OutputFile;
   std::string FindErrorMessage;
diff --git a/Source/cmCreateTestSourceList.h b/Source/cmCreateTestSourceList.h
index ffd06f0..2f71a00 100644
--- a/Source/cmCreateTestSourceList.h
+++ b/Source/cmCreateTestSourceList.h
@@ -29,8 +29,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "create_test_sourcelist"; }
-
-  cmTypeMacro(cmCreateTestSourceList, cmCommand);
 };
 
 #endif
diff --git a/Source/cmDefinePropertyCommand.h b/Source/cmDefinePropertyCommand.h
index f494123..cdfff9f 100644
--- a/Source/cmDefinePropertyCommand.h
+++ b/Source/cmDefinePropertyCommand.h
@@ -22,8 +22,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "define_property"; }
 
-  cmTypeMacro(cmDefinePropertyCommand, cmCommand);
-
 private:
   std::string PropertyName;
   std::string BriefDocs;
diff --git a/Source/cmElseCommand.h b/Source/cmElseCommand.h
index 33f73ee..32e04a7 100644
--- a/Source/cmElseCommand.h
+++ b/Source/cmElseCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "else"; }
-
-  cmTypeMacro(cmElseCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmElseIfCommand.h b/Source/cmElseIfCommand.h
index a489e30..79484c9 100644
--- a/Source/cmElseIfCommand.h
+++ b/Source/cmElseIfCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "elseif"; }
-
-  cmTypeMacro(cmElseIfCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmEnableLanguageCommand.h b/Source/cmEnableLanguageCommand.h
index 98b3841..34e1d3d 100644
--- a/Source/cmEnableLanguageCommand.h
+++ b/Source/cmEnableLanguageCommand.h
@@ -32,8 +32,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "enable_language"; }
-
-  cmTypeMacro(cmEnableLanguageCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmEnableTestingCommand.h b/Source/cmEnableTestingCommand.h
index 750ae8c..b94967a 100644
--- a/Source/cmEnableTestingCommand.h
+++ b/Source/cmEnableTestingCommand.h
@@ -37,8 +37,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "enable_testing"; }
-
-  cmTypeMacro(cmEnableTestingCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmEndForEachCommand.h b/Source/cmEndForEachCommand.h
index 3bcc7cf..a146e4d 100644
--- a/Source/cmEndForEachCommand.h
+++ b/Source/cmEndForEachCommand.h
@@ -44,8 +44,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "endforeach"; }
-
-  cmTypeMacro(cmEndForEachCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmEndFunctionCommand.h b/Source/cmEndFunctionCommand.h
index 8b4d2f9..ab174fd 100644
--- a/Source/cmEndFunctionCommand.h
+++ b/Source/cmEndFunctionCommand.h
@@ -44,8 +44,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "endfunction"; }
-
-  cmTypeMacro(cmEndFunctionCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmEndIfCommand.h b/Source/cmEndIfCommand.h
index b476c72..d068bb4 100644
--- a/Source/cmEndIfCommand.h
+++ b/Source/cmEndIfCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "endif"; }
-
-  cmTypeMacro(cmEndIfCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmEndMacroCommand.h b/Source/cmEndMacroCommand.h
index 806750d..34ae880 100644
--- a/Source/cmEndMacroCommand.h
+++ b/Source/cmEndMacroCommand.h
@@ -44,8 +44,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "endmacro"; }
-
-  cmTypeMacro(cmEndMacroCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmEndWhileCommand.h b/Source/cmEndWhileCommand.h
index 861d2f0..2366706 100644
--- a/Source/cmEndWhileCommand.h
+++ b/Source/cmEndWhileCommand.h
@@ -44,8 +44,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "endwhile"; }
-
-  cmTypeMacro(cmEndWhileCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmExecProgramCommand.h b/Source/cmExecProgramCommand.h
index 1cc46d3..a3e96ae 100644
--- a/Source/cmExecProgramCommand.h
+++ b/Source/cmExecProgramCommand.h
@@ -37,8 +37,6 @@ public:
    */
   bool IsScriptable() const CM_OVERRIDE { return true; }
 
-  cmTypeMacro(cmExecProgramCommand, cmCommand);
-
 private:
   static bool RunCommand(const char* command, std::string& output, int& retVal,
                          const char* directory = CM_NULLPTR,
diff --git a/Source/cmExecuteProcessCommand.h b/Source/cmExecuteProcessCommand.h
index f7e376a..2242998 100644
--- a/Source/cmExecuteProcessCommand.h
+++ b/Source/cmExecuteProcessCommand.h
@@ -35,8 +35,6 @@ public:
    * This determines if the command is invoked when in script mode.
    */
   bool IsScriptable() const CM_OVERRIDE { return true; }
-
-  cmTypeMacro(cmExecuteProcessCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmExportCommand.h b/Source/cmExportCommand.h
index ebde71c..52996d0 100644
--- a/Source/cmExportCommand.h
+++ b/Source/cmExportCommand.h
@@ -35,8 +35,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "export"; }
 
-  cmTypeMacro(cmExportCommand, cmCommand);
-
 private:
   cmCommandArgumentGroup ArgumentGroup;
   cmCAStringVector Targets;
diff --git a/Source/cmExportLibraryDependenciesCommand.h b/Source/cmExportLibraryDependenciesCommand.h
index fa9f353..1d8f330 100644
--- a/Source/cmExportLibraryDependenciesCommand.h
+++ b/Source/cmExportLibraryDependenciesCommand.h
@@ -8,7 +8,6 @@
 class cmExportLibraryDependenciesCommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmExportLibraryDependenciesCommand, cmCommand);
   cmCommand* Clone() CM_OVERRIDE
   {
     return new cmExportLibraryDependenciesCommand;
diff --git a/Source/cmFLTKWrapUICommand.h b/Source/cmFLTKWrapUICommand.h
index 202067f..8807328 100644
--- a/Source/cmFLTKWrapUICommand.h
+++ b/Source/cmFLTKWrapUICommand.h
@@ -14,8 +14,6 @@
 class cmFLTKWrapUICommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmFLTKWrapUICommand, cmCommand);
-
   /**
    * This is a virtual constructor for the command.
    */
diff --git a/Source/cmFileCommand.h b/Source/cmFileCommand.h
index 1d21a19..b53bae8 100644
--- a/Source/cmFileCommand.h
+++ b/Source/cmFileCommand.h
@@ -36,8 +36,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "file"; }
 
-  cmTypeMacro(cmFileCommand, cmCommand);
-
 protected:
   bool HandleRename(std::vector<std::string> const& args);
   bool HandleRemove(std::vector<std::string> const& args, bool recurse);
diff --git a/Source/cmFindBase.h b/Source/cmFindBase.h
index 8561f5d..2b8d4a2 100644
--- a/Source/cmFindBase.h
+++ b/Source/cmFindBase.h
@@ -20,7 +20,6 @@ public:
    * the CMakeLists.txt file.
    */
   virtual bool ParseArguments(std::vector<std::string> const& args);
-  cmTypeMacro(cmFindBase, cmFindCommon);
 
 protected:
   void PrintFindStuff();
diff --git a/Source/cmFindCommon.h b/Source/cmFindCommon.h
index 3211bc2..1809c0a 100644
--- a/Source/cmFindCommon.h
+++ b/Source/cmFindCommon.h
@@ -19,7 +19,6 @@ class cmFindCommon : public cmCommand
 public:
   cmFindCommon();
   ~cmFindCommon() CM_OVERRIDE;
-  cmTypeMacro(cmFindCommon, cmCommand);
 
 protected:
   friend class cmSearchPath;
diff --git a/Source/cmFindFileCommand.h b/Source/cmFindFileCommand.h
index feb6ad2..e121784 100644
--- a/Source/cmFindFileCommand.h
+++ b/Source/cmFindFileCommand.h
@@ -22,8 +22,6 @@ public:
    */
   cmCommand* Clone() CM_OVERRIDE { return new cmFindFileCommand; }
   std::string GetName() const CM_OVERRIDE { return "find_file"; }
-
-  cmTypeMacro(cmFindFileCommand, cmFindPathCommand);
 };
 
 #endif
diff --git a/Source/cmFindLibraryCommand.h b/Source/cmFindLibraryCommand.h
index 39393f6..8531e51 100644
--- a/Source/cmFindLibraryCommand.h
+++ b/Source/cmFindLibraryCommand.h
@@ -38,8 +38,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "find_library"; }
 
-  cmTypeMacro(cmFindLibraryCommand, cmFindBase);
-
 protected:
   void AddArchitecturePaths(const char* suffix);
   void AddArchitecturePath(std::string const& dir,
diff --git a/Source/cmFindPackageCommand.h b/Source/cmFindPackageCommand.h
index 501a5a5..101749e 100644
--- a/Source/cmFindPackageCommand.h
+++ b/Source/cmFindPackageCommand.h
@@ -60,8 +60,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "find_package"; }
 
-  cmTypeMacro(cmFindPackageCommand, cmFindCommon);
-
 private:
   class PathLabel : public cmFindCommon::PathLabel
   {
diff --git a/Source/cmFindPathCommand.h b/Source/cmFindPathCommand.h
index 58cc0f3..4ba67ed 100644
--- a/Source/cmFindPathCommand.h
+++ b/Source/cmFindPathCommand.h
@@ -38,7 +38,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "find_path"; }
 
-  cmTypeMacro(cmFindPathCommand, cmFindBase);
   bool IncludeFileInPath;
 
 private:
diff --git a/Source/cmFindProgramCommand.h b/Source/cmFindProgramCommand.h
index 2d88b79..4326124 100644
--- a/Source/cmFindProgramCommand.h
+++ b/Source/cmFindProgramCommand.h
@@ -39,8 +39,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "find_program"; }
 
-  cmTypeMacro(cmFindProgramCommand, cmFindBase);
-
 private:
   std::string FindProgram();
   std::string FindNormalProgram();
diff --git a/Source/cmForEachCommand.h b/Source/cmForEachCommand.h
index 1e3d786..9ba4af0 100644
--- a/Source/cmForEachCommand.h
+++ b/Source/cmForEachCommand.h
@@ -51,8 +51,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "foreach"; }
 
-  cmTypeMacro(cmForEachCommand, cmCommand);
-
 private:
   bool HandleInMode(std::vector<std::string> const& args);
 };
diff --git a/Source/cmFunctionCommand.cxx b/Source/cmFunctionCommand.cxx
index 99d883a..21e0c25 100644
--- a/Source/cmFunctionCommand.cxx
+++ b/Source/cmFunctionCommand.cxx
@@ -14,12 +14,9 @@ public:
   ~cmFunctionHelperCommand() CM_OVERRIDE {}
 
   /**
-   * This is used to avoid including this command
-   * in documentation. This is mainly used by
-   * cmMacroHelperCommand and cmFunctionHelperCommand
-   * which cannot provide appropriate documentation.
+   * This determines if the command is defined in a cmake script.
    */
-  bool ShouldAppearInDocumentation() const CM_OVERRIDE { return false; }
+  bool IsUserDefined() const CM_OVERRIDE { return true; }
 
   /**
    * This is a virtual constructor for the command.
@@ -58,8 +55,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return this->Args[0]; }
 
-  cmTypeMacro(cmFunctionHelperCommand, cmCommand);
-
   std::vector<std::string> Args;
   std::vector<cmListFileFunction> Functions;
   cmPolicies::PolicyMap Policies;
diff --git a/Source/cmFunctionCommand.h b/Source/cmFunctionCommand.h
index 277708b..7d868b2 100644
--- a/Source/cmFunctionCommand.h
+++ b/Source/cmFunctionCommand.h
@@ -46,8 +46,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "function"; }
-
-  cmTypeMacro(cmFunctionCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmGetCMakePropertyCommand.h b/Source/cmGetCMakePropertyCommand.h
index 644db33..30bc2d8 100644
--- a/Source/cmGetCMakePropertyCommand.h
+++ b/Source/cmGetCMakePropertyCommand.h
@@ -26,8 +26,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "get_cmake_property"; }
-
-  cmTypeMacro(cmGetCMakePropertyCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmGetDirectoryPropertyCommand.h b/Source/cmGetDirectoryPropertyCommand.h
index c6d9329..625adb0 100644
--- a/Source/cmGetDirectoryPropertyCommand.h
+++ b/Source/cmGetDirectoryPropertyCommand.h
@@ -27,8 +27,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "get_directory_property"; }
 
-  cmTypeMacro(cmGetDirectoryPropertyCommand, cmCommand);
-
 private:
   void StoreResult(const std::string& variable, const char* prop);
 };
diff --git a/Source/cmGetFilenameComponentCommand.h b/Source/cmGetFilenameComponentCommand.h
index 32096d1..68bf31f 100644
--- a/Source/cmGetFilenameComponentCommand.h
+++ b/Source/cmGetFilenameComponentCommand.h
@@ -35,8 +35,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "get_filename_component"; }
-
-  cmTypeMacro(cmGetFilenameComponentCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmGetPropertyCommand.h b/Source/cmGetPropertyCommand.h
index ee61416..20268b4 100644
--- a/Source/cmGetPropertyCommand.h
+++ b/Source/cmGetPropertyCommand.h
@@ -29,8 +29,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "get_property"; }
 
-  cmTypeMacro(cmGetPropertyCommand, cmCommand);
-
 private:
   enum OutType
   {
diff --git a/Source/cmGetSourceFilePropertyCommand.h b/Source/cmGetSourceFilePropertyCommand.h
index 184b3ce..1edc392 100644
--- a/Source/cmGetSourceFilePropertyCommand.h
+++ b/Source/cmGetSourceFilePropertyCommand.h
@@ -24,8 +24,6 @@ public:
   {
     return "get_source_file_property";
   }
-
-  cmTypeMacro(cmGetSourceFilePropertyCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmGetTargetPropertyCommand.h b/Source/cmGetTargetPropertyCommand.h
index f16dea7..f36cc48 100644
--- a/Source/cmGetTargetPropertyCommand.h
+++ b/Source/cmGetTargetPropertyCommand.h
@@ -21,8 +21,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "get_target_property"; }
-
-  cmTypeMacro(cmGetTargetPropertyCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmGetTestPropertyCommand.h b/Source/cmGetTestPropertyCommand.h
index 527ee1a..5dc89bd 100644
--- a/Source/cmGetTestPropertyCommand.h
+++ b/Source/cmGetTestPropertyCommand.h
@@ -21,8 +21,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "get_test_property"; }
-
-  cmTypeMacro(cmGetTestPropertyCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmIfCommand.h b/Source/cmIfCommand.h
index f449023..e071acb 100644
--- a/Source/cmIfCommand.h
+++ b/Source/cmIfCommand.h
@@ -66,8 +66,6 @@ public:
   // Filter the given variable definition based on policy CMP0054.
   static const char* GetDefinitionIfUnquoted(
     const cmMakefile* mf, cmExpandedCommandArgument const& argument);
-
-  cmTypeMacro(cmIfCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmIncludeCommand.h b/Source/cmIncludeCommand.h
index 7ff7b9d..9065ef7 100644
--- a/Source/cmIncludeCommand.h
+++ b/Source/cmIncludeCommand.h
@@ -35,8 +35,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "include"; }
-
-  cmTypeMacro(cmIncludeCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmIncludeDirectoryCommand.h b/Source/cmIncludeDirectoryCommand.h
index 46e433a..d0a20b3 100644
--- a/Source/cmIncludeDirectoryCommand.h
+++ b/Source/cmIncludeDirectoryCommand.h
@@ -31,8 +31,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "include_directories"; }
 
-  cmTypeMacro(cmIncludeDirectoryCommand, cmCommand);
-
 protected:
   // used internally
   void GetIncludes(const std::string& arg, std::vector<std::string>& incs);
diff --git a/Source/cmIncludeExternalMSProjectCommand.h b/Source/cmIncludeExternalMSProjectCommand.h
index 9401016..4f8ec81 100644
--- a/Source/cmIncludeExternalMSProjectCommand.h
+++ b/Source/cmIncludeExternalMSProjectCommand.h
@@ -37,8 +37,6 @@ public:
   {
     return "include_external_msproject";
   }
-
-  cmTypeMacro(cmIncludeExternalMSProjectCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmIncludeRegularExpressionCommand.h b/Source/cmIncludeRegularExpressionCommand.h
index 648bce2..b7c937d 100644
--- a/Source/cmIncludeRegularExpressionCommand.h
+++ b/Source/cmIncludeRegularExpressionCommand.h
@@ -36,8 +36,6 @@ public:
   {
     return "include_regular_expression";
   }
-
-  cmTypeMacro(cmIncludeRegularExpressionCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmInstallCommand.h b/Source/cmInstallCommand.h
index 6f785ae..b350330 100644
--- a/Source/cmInstallCommand.h
+++ b/Source/cmInstallCommand.h
@@ -31,8 +31,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "install"; }
 
-  cmTypeMacro(cmInstallCommand, cmCommand);
-
 private:
   bool HandleScriptMode(std::vector<std::string> const& args);
   bool HandleTargetsMode(std::vector<std::string> const& args);
diff --git a/Source/cmInstallFilesCommand.h b/Source/cmInstallFilesCommand.h
index a80184a..da09fae 100644
--- a/Source/cmInstallFilesCommand.h
+++ b/Source/cmInstallFilesCommand.h
@@ -40,8 +40,6 @@ public:
   void FinalPass() CM_OVERRIDE;
   bool HasFinalPass() const CM_OVERRIDE { return !this->IsFilesForm; }
 
-  cmTypeMacro(cmInstallFilesCommand, cmCommand);
-
 protected:
   void CreateInstallGenerator() const;
   std::string FindInstallSource(const char* name) const;
diff --git a/Source/cmInstallProgramsCommand.h b/Source/cmInstallProgramsCommand.h
index cb85cce..1fb7d91 100644
--- a/Source/cmInstallProgramsCommand.h
+++ b/Source/cmInstallProgramsCommand.h
@@ -41,8 +41,6 @@ public:
 
   bool HasFinalPass() const CM_OVERRIDE { return true; }
 
-  cmTypeMacro(cmInstallProgramsCommand, cmCommand);
-
 protected:
   std::string FindInstallSource(const char* name) const;
 
diff --git a/Source/cmInstallTargetsCommand.h b/Source/cmInstallTargetsCommand.h
index 2ddeaf0..0625722 100644
--- a/Source/cmInstallTargetsCommand.h
+++ b/Source/cmInstallTargetsCommand.h
@@ -31,8 +31,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "install_targets"; }
-
-  cmTypeMacro(cmInstallTargetsCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmLinkDirectoriesCommand.h b/Source/cmLinkDirectoriesCommand.h
index cd6d2de..ba0313b 100644
--- a/Source/cmLinkDirectoriesCommand.h
+++ b/Source/cmLinkDirectoriesCommand.h
@@ -33,8 +33,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "link_directories"; }
 
-  cmTypeMacro(cmLinkDirectoriesCommand, cmCommand);
-
 private:
   void AddLinkDir(std::string const& dir);
 };
diff --git a/Source/cmLinkLibrariesCommand.h b/Source/cmLinkLibrariesCommand.h
index b4943b6..75a31c8 100644
--- a/Source/cmLinkLibrariesCommand.h
+++ b/Source/cmLinkLibrariesCommand.h
@@ -31,8 +31,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "link_libraries"; }
-
-  cmTypeMacro(cmLinkLibrariesCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmListCommand.h b/Source/cmListCommand.h
index b6b0a47..43a482c 100644
--- a/Source/cmListCommand.h
+++ b/Source/cmListCommand.h
@@ -34,8 +34,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "list"; }
 
-  cmTypeMacro(cmListCommand, cmCommand);
-
 protected:
   bool HandleLengthCommand(std::vector<std::string> const& args);
   bool HandleGetCommand(std::vector<std::string> const& args);
diff --git a/Source/cmLoadCacheCommand.h b/Source/cmLoadCacheCommand.h
index 57f64cd..0b57a61 100644
--- a/Source/cmLoadCacheCommand.h
+++ b/Source/cmLoadCacheCommand.h
@@ -30,8 +30,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "load_cache"; }
 
-  cmTypeMacro(cmLoadCacheCommand, cmCommand);
-
 protected:
   std::set<std::string> VariablesToRead;
   std::string Prefix;
diff --git a/Source/cmLoadCommandCommand.cxx b/Source/cmLoadCommandCommand.cxx
index bcfec79..ed4e009 100644
--- a/Source/cmLoadCommandCommand.cxx
+++ b/Source/cmLoadCommandCommand.cxx
@@ -93,8 +93,6 @@ public:
     }
   }
 
-  cmTypeMacro(cmLoadedCommand, cmCommand);
-
   cmLoadedCommandInfo info;
 };
 
diff --git a/Source/cmLoadCommandCommand.h b/Source/cmLoadCommandCommand.h
index e42d46a..9628464 100644
--- a/Source/cmLoadCommandCommand.h
+++ b/Source/cmLoadCommandCommand.h
@@ -12,7 +12,6 @@ public:
   bool InitialPass(std::vector<std::string> const& args,
                    cmExecutionStatus& status) CM_OVERRIDE;
   std::string GetName() const CM_OVERRIDE { return "load_command"; }
-  cmTypeMacro(cmLoadCommandCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmMacroCommand.cxx b/Source/cmMacroCommand.cxx
index 9917394..a8446d9 100644
--- a/Source/cmMacroCommand.cxx
+++ b/Source/cmMacroCommand.cxx
@@ -15,12 +15,9 @@ public:
   ~cmMacroHelperCommand() CM_OVERRIDE {}
 
   /**
-   * This is used to avoid including this command
-   * in documentation. This is mainly used by
-   * cmMacroHelperCommand and cmFunctionHelperCommand
-   * which cannot provide appropriate documentation.
+   * This determines if the command is defined in a cmake script.
    */
-  bool ShouldAppearInDocumentation() const CM_OVERRIDE { return false; }
+  bool IsUserDefined() const CM_OVERRIDE { return true; }
 
   /**
    * This is a virtual constructor for the command.
@@ -59,8 +56,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return this->Args[0]; }
 
-  cmTypeMacro(cmMacroHelperCommand, cmCommand);
-
   std::vector<std::string> Args;
   std::vector<cmListFileFunction> Functions;
   cmPolicies::PolicyMap Policies;
diff --git a/Source/cmMacroCommand.h b/Source/cmMacroCommand.h
index 362d272..8e3cd95 100644
--- a/Source/cmMacroCommand.h
+++ b/Source/cmMacroCommand.h
@@ -46,8 +46,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "macro"; }
-
-  cmTypeMacro(cmMacroCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmMakeDirectoryCommand.h b/Source/cmMakeDirectoryCommand.h
index 2117fae..74b4a63 100644
--- a/Source/cmMakeDirectoryCommand.h
+++ b/Source/cmMakeDirectoryCommand.h
@@ -38,8 +38,6 @@ public:
    * This determines if the command is invoked when in script mode.
    */
   bool IsScriptable() const CM_OVERRIDE { return true; }
-
-  cmTypeMacro(cmMakeDirectoryCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmMarkAsAdvancedCommand.h b/Source/cmMarkAsAdvancedCommand.h
index 54fa78a..0f5270c 100644
--- a/Source/cmMarkAsAdvancedCommand.h
+++ b/Source/cmMarkAsAdvancedCommand.h
@@ -37,8 +37,6 @@ public:
    * FindUnixMake.cmake used by the CTEST_BUILD command.
   */
   bool IsScriptable() const CM_OVERRIDE { return true; }
-
-  cmTypeMacro(cmMarkAsAdvancedCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmMathCommand.h b/Source/cmMathCommand.h
index 6fa7389..17a1575 100644
--- a/Source/cmMathCommand.h
+++ b/Source/cmMathCommand.h
@@ -31,8 +31,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "math"; }
 
-  cmTypeMacro(cmMathCommand, cmCommand);
-
 protected:
   bool HandleExprCommand(std::vector<std::string> const& args);
 };
diff --git a/Source/cmMessageCommand.h b/Source/cmMessageCommand.h
index a67d52b..cd16ffa 100644
--- a/Source/cmMessageCommand.h
+++ b/Source/cmMessageCommand.h
@@ -33,8 +33,6 @@ public:
    * This determines if the command is invoked when in script mode.
    */
   bool IsScriptable() const CM_OVERRIDE { return true; }
-
-  cmTypeMacro(cmMessageCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmOptionCommand.h b/Source/cmOptionCommand.h
index 3ca62d7..d77215a 100644
--- a/Source/cmOptionCommand.h
+++ b/Source/cmOptionCommand.h
@@ -34,8 +34,6 @@ public:
    * This determines if the command is invoked when in script mode.
    */
   bool IsScriptable() const CM_OVERRIDE { return true; }
-
-  cmTypeMacro(cmOptionCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmOutputRequiredFilesCommand.h b/Source/cmOutputRequiredFilesCommand.h
index 7a81a76..8b7104b 100644
--- a/Source/cmOutputRequiredFilesCommand.h
+++ b/Source/cmOutputRequiredFilesCommand.h
@@ -10,7 +10,6 @@ class cmDependInformation;
 class cmOutputRequiredFilesCommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmOutputRequiredFilesCommand, cmCommand);
   cmCommand* Clone() CM_OVERRIDE { return new cmOutputRequiredFilesCommand; }
   bool InitialPass(std::vector<std::string> const& args,
                    cmExecutionStatus& status) CM_OVERRIDE;
diff --git a/Source/cmParseArgumentsCommand.h b/Source/cmParseArgumentsCommand.h
index fbeb3df..af87d81 100644
--- a/Source/cmParseArgumentsCommand.h
+++ b/Source/cmParseArgumentsCommand.h
@@ -32,8 +32,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "cmake_parse_arguments"; }
-
-  cmTypeMacro(cmParseArgumentsCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmProjectCommand.h b/Source/cmProjectCommand.h
index c9c2549..ef554f3 100644
--- a/Source/cmProjectCommand.h
+++ b/Source/cmProjectCommand.h
@@ -32,8 +32,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "project"; }
-
-  cmTypeMacro(cmProjectCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmQTWrapCPPCommand.h b/Source/cmQTWrapCPPCommand.h
index 3567fb6..afcaf69 100644
--- a/Source/cmQTWrapCPPCommand.h
+++ b/Source/cmQTWrapCPPCommand.h
@@ -16,8 +16,6 @@
 class cmQTWrapCPPCommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmQTWrapCPPCommand, cmCommand);
-
   /**
    * This is a virtual constructor for the command.
    */
diff --git a/Source/cmQTWrapUICommand.h b/Source/cmQTWrapUICommand.h
index 84b88a8..8efa747 100644
--- a/Source/cmQTWrapUICommand.h
+++ b/Source/cmQTWrapUICommand.h
@@ -15,7 +15,6 @@
 class cmQTWrapUICommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmQTWrapUICommand, cmCommand);
   /**
    * This is a virtual constructor for the command.
    */
diff --git a/Source/cmRemoveCommand.h b/Source/cmRemoveCommand.h
index bf33de0..d7b2a65 100644
--- a/Source/cmRemoveCommand.h
+++ b/Source/cmRemoveCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "remove"; }
-
-  cmTypeMacro(cmRemoveCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmRemoveDefinitionsCommand.h b/Source/cmRemoveDefinitionsCommand.h
index 016f5fd..67dcfee 100644
--- a/Source/cmRemoveDefinitionsCommand.h
+++ b/Source/cmRemoveDefinitionsCommand.h
@@ -31,8 +31,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "remove_definitions"; }
-
-  cmTypeMacro(cmRemoveDefinitionsCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmReturnCommand.h b/Source/cmReturnCommand.h
index 1159e78..06b91bc 100644
--- a/Source/cmReturnCommand.h
+++ b/Source/cmReturnCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "return"; }
-
-  cmTypeMacro(cmReturnCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmSeparateArgumentsCommand.h b/Source/cmSeparateArgumentsCommand.h
index 66fbef7..d80d043 100644
--- a/Source/cmSeparateArgumentsCommand.h
+++ b/Source/cmSeparateArgumentsCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "separate_arguments"; }
-
-  cmTypeMacro(cmSeparateArgumentsCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmSetCommand.h b/Source/cmSetCommand.h
index 94f7cf0..6fa3865 100644
--- a/Source/cmSetCommand.h
+++ b/Source/cmSetCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "set"; }
-
-  cmTypeMacro(cmSetCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmSetDirectoryPropertiesCommand.h b/Source/cmSetDirectoryPropertiesCommand.h
index 9abefda..9608742 100644
--- a/Source/cmSetDirectoryPropertiesCommand.h
+++ b/Source/cmSetDirectoryPropertiesCommand.h
@@ -40,8 +40,6 @@ public:
                          std::vector<std::string>::const_iterator ait,
                          std::vector<std::string>::const_iterator aitend,
                          std::string& errors);
-
-  cmTypeMacro(cmSetDirectoryPropertiesCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmSetPropertyCommand.h b/Source/cmSetPropertyCommand.h
index 01295c1..b4dff76 100644
--- a/Source/cmSetPropertyCommand.h
+++ b/Source/cmSetPropertyCommand.h
@@ -29,8 +29,6 @@ public:
    */
   bool IsScriptable() const CM_OVERRIDE { return true; }
 
-  cmTypeMacro(cmSetPropertyCommand, cmCommand);
-
 private:
   std::set<std::string> Names;
   std::string PropertyName;
diff --git a/Source/cmSetSourceFilesPropertiesCommand.h b/Source/cmSetSourceFilesPropertiesCommand.h
index c683ac0..62cc404 100644
--- a/Source/cmSetSourceFilesPropertiesCommand.h
+++ b/Source/cmSetSourceFilesPropertiesCommand.h
@@ -28,8 +28,6 @@ public:
     return "set_source_files_properties";
   }
 
-  cmTypeMacro(cmSetSourceFilesPropertiesCommand, cmCommand);
-
   static bool RunCommand(cmMakefile* mf,
                          std::vector<std::string>::const_iterator filebeg,
                          std::vector<std::string>::const_iterator fileend,
diff --git a/Source/cmSetTargetPropertiesCommand.h b/Source/cmSetTargetPropertiesCommand.h
index 6e2a242..ed02fa8 100644
--- a/Source/cmSetTargetPropertiesCommand.h
+++ b/Source/cmSetTargetPropertiesCommand.h
@@ -28,8 +28,6 @@ public:
   static bool SetOneTarget(const std::string& tname,
                            std::vector<std::string>& propertyPairs,
                            cmMakefile* mf);
-
-  cmTypeMacro(cmSetTargetPropertiesCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmSetTestsPropertiesCommand.h b/Source/cmSetTestsPropertiesCommand.h
index 3f5ce21..04ba76e 100644
--- a/Source/cmSetTestsPropertiesCommand.h
+++ b/Source/cmSetTestsPropertiesCommand.h
@@ -22,8 +22,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "set_tests_properties"; }
 
-  cmTypeMacro(cmSetTestsPropertiesCommand, cmCommand);
-
   static bool SetOneTest(const std::string& tname,
                          std::vector<std::string>& propertyPairs,
                          cmMakefile* mf, std::string& errors);
diff --git a/Source/cmSiteNameCommand.h b/Source/cmSiteNameCommand.h
index 5578b03..48d1035 100644
--- a/Source/cmSiteNameCommand.h
+++ b/Source/cmSiteNameCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "site_name"; }
-
-  cmTypeMacro(cmSiteNameCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmSourceGroupCommand.h b/Source/cmSourceGroupCommand.h
index e3639df..deee740 100644
--- a/Source/cmSourceGroupCommand.h
+++ b/Source/cmSourceGroupCommand.h
@@ -30,8 +30,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "source_group"; }
-
-  cmTypeMacro(cmSourceGroupCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmState.cxx b/Source/cmState.cxx
index 0d1eb3e..468b191 100644
--- a/Source/cmState.cxx
+++ b/Source/cmState.cxx
@@ -446,8 +446,7 @@ void cmState::RemoveUserDefinedCommands()
   std::vector<cmCommand*> renamedCommands;
   for (std::map<std::string, cmCommand*>::iterator j = this->Commands.begin();
        j != this->Commands.end();) {
-    if (j->second->IsA("cmMacroHelperCommand") ||
-        j->second->IsA("cmFunctionHelperCommand")) {
+    if (j->second->IsUserDefined()) {
       delete j->second;
       this->Commands.erase(j++);
     } else if (j->first != j->second->GetName()) {
diff --git a/Source/cmStringCommand.h b/Source/cmStringCommand.h
index edb138d..b928f3c 100644
--- a/Source/cmStringCommand.h
+++ b/Source/cmStringCommand.h
@@ -39,8 +39,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "string"; }
 
-  cmTypeMacro(cmStringCommand, cmCommand);
-
 protected:
   bool HandleConfigureCommand(std::vector<std::string> const& args);
   bool HandleAsciiCommand(std::vector<std::string> const& args);
diff --git a/Source/cmSubdirCommand.h b/Source/cmSubdirCommand.h
index c425852..0778638 100644
--- a/Source/cmSubdirCommand.h
+++ b/Source/cmSubdirCommand.h
@@ -31,8 +31,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "subdirs"; }
-
-  cmTypeMacro(cmSubdirCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmSubdirDependsCommand.h b/Source/cmSubdirDependsCommand.h
index 0f3deb6..097244d 100644
--- a/Source/cmSubdirDependsCommand.h
+++ b/Source/cmSubdirDependsCommand.h
@@ -12,7 +12,6 @@ public:
   bool InitialPass(std::vector<std::string> const& args,
                    cmExecutionStatus& status) CM_OVERRIDE;
   std::string GetName() const CM_OVERRIDE { return "subdir_depends"; }
-  cmTypeMacro(cmSubdirDependsCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmTargetCompileDefinitionsCommand.h b/Source/cmTargetCompileDefinitionsCommand.h
index b49f616..0aaad4e 100644
--- a/Source/cmTargetCompileDefinitionsCommand.h
+++ b/Source/cmTargetCompileDefinitionsCommand.h
@@ -31,8 +31,6 @@ public:
     return "target_compile_definitions";
   }
 
-  cmTypeMacro(cmTargetCompileDefinitionsCommand, cmTargetPropCommandBase);
-
 private:
   void HandleImportedTarget(const std::string& tgt) CM_OVERRIDE;
   void HandleMissingTarget(const std::string& name) CM_OVERRIDE;
diff --git a/Source/cmTargetCompileFeaturesCommand.h b/Source/cmTargetCompileFeaturesCommand.h
index 8273e02..00c84d7 100644
--- a/Source/cmTargetCompileFeaturesCommand.h
+++ b/Source/cmTargetCompileFeaturesCommand.h
@@ -14,8 +14,6 @@ class cmTargetCompileFeaturesCommand : public cmTargetPropCommandBase
 
   std::string GetName() const CM_OVERRIDE { return "target_compile_features"; }
 
-  cmTypeMacro(cmTargetCompileFeaturesCommand, cmTargetPropCommandBase);
-
 private:
   void HandleImportedTarget(const std::string& tgt) CM_OVERRIDE;
   void HandleMissingTarget(const std::string& name) CM_OVERRIDE;
diff --git a/Source/cmTargetCompileOptionsCommand.h b/Source/cmTargetCompileOptionsCommand.h
index f5b4c70..06b05a2 100644
--- a/Source/cmTargetCompileOptionsCommand.h
+++ b/Source/cmTargetCompileOptionsCommand.h
@@ -25,8 +25,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "target_compile_options"; }
 
-  cmTypeMacro(cmTargetCompileOptionsCommand, cmTargetPropCommandBase);
-
 private:
   void HandleImportedTarget(const std::string& tgt) CM_OVERRIDE;
   void HandleMissingTarget(const std::string& name) CM_OVERRIDE;
diff --git a/Source/cmTargetIncludeDirectoriesCommand.h b/Source/cmTargetIncludeDirectoriesCommand.h
index 671627a..d96b28a 100644
--- a/Source/cmTargetIncludeDirectoriesCommand.h
+++ b/Source/cmTargetIncludeDirectoriesCommand.h
@@ -31,8 +31,6 @@ public:
     return "target_include_directories";
   }
 
-  cmTypeMacro(cmTargetIncludeDirectoriesCommand, cmTargetPropCommandBase);
-
 private:
   void HandleImportedTarget(const std::string& tgt) CM_OVERRIDE;
   void HandleMissingTarget(const std::string& name) CM_OVERRIDE;
diff --git a/Source/cmTargetLinkLibrariesCommand.h b/Source/cmTargetLinkLibrariesCommand.h
index 85888f9..69bb6eb 100644
--- a/Source/cmTargetLinkLibrariesCommand.h
+++ b/Source/cmTargetLinkLibrariesCommand.h
@@ -32,8 +32,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "target_link_libraries"; }
 
-  cmTypeMacro(cmTargetLinkLibrariesCommand, cmCommand);
-
 private:
   void LinkLibraryTypeSpecifierWarning(int left, int right);
   static const char* LinkLibraryTypeNames[3];
diff --git a/Source/cmTargetPropCommandBase.h b/Source/cmTargetPropCommandBase.h
index de0a7d3..485a7f3 100644
--- a/Source/cmTargetPropCommandBase.h
+++ b/Source/cmTargetPropCommandBase.h
@@ -21,8 +21,6 @@ public:
                        const std::string& prop,
                        ArgumentFlags flags = NO_FLAGS);
 
-  cmTypeMacro(cmTargetPropCommandBase, cmCommand);
-
 protected:
   std::string Property;
   cmTarget* Target;
diff --git a/Source/cmTargetSourcesCommand.h b/Source/cmTargetSourcesCommand.h
index 8f88b25..839f07c 100644
--- a/Source/cmTargetSourcesCommand.h
+++ b/Source/cmTargetSourcesCommand.h
@@ -25,8 +25,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "target_sources"; }
 
-  cmTypeMacro(cmTargetSourcesCommand, cmTargetPropCommandBase);
-
 private:
   void HandleImportedTarget(const std::string& tgt) CM_OVERRIDE;
   void HandleMissingTarget(const std::string& name) CM_OVERRIDE;
diff --git a/Source/cmTryCompileCommand.h b/Source/cmTryCompileCommand.h
index 45d92df..ed74ae1 100644
--- a/Source/cmTryCompileCommand.h
+++ b/Source/cmTryCompileCommand.h
@@ -29,8 +29,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "try_compile"; }
-
-  cmTypeMacro(cmTryCompileCommand, cmCoreTryCompile);
 };
 
 #endif
diff --git a/Source/cmTryRunCommand.h b/Source/cmTryRunCommand.h
index b569b0b..24447ed 100644
--- a/Source/cmTryRunCommand.h
+++ b/Source/cmTryRunCommand.h
@@ -30,8 +30,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "try_run"; }
 
-  cmTypeMacro(cmTryRunCommand, cmCoreTryCompile);
-
 private:
   void RunExecutable(const std::string& runArgs,
                      std::string* runOutputContents);
diff --git a/Source/cmUnsetCommand.h b/Source/cmUnsetCommand.h
index b3f045a..37b9270 100644
--- a/Source/cmUnsetCommand.h
+++ b/Source/cmUnsetCommand.h
@@ -34,8 +34,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "unset"; }
-
-  cmTypeMacro(cmUnsetCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmUseMangledMesaCommand.h b/Source/cmUseMangledMesaCommand.h
index a5fa146..3200327 100644
--- a/Source/cmUseMangledMesaCommand.h
+++ b/Source/cmUseMangledMesaCommand.h
@@ -8,7 +8,6 @@
 class cmUseMangledMesaCommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmUseMangledMesaCommand, cmCommand);
   cmCommand* Clone() CM_OVERRIDE { return new cmUseMangledMesaCommand; }
   bool InitialPass(std::vector<std::string> const& args,
                    cmExecutionStatus& status) CM_OVERRIDE;
diff --git a/Source/cmUtilitySourceCommand.h b/Source/cmUtilitySourceCommand.h
index 6ee5f3e..3c28e11 100644
--- a/Source/cmUtilitySourceCommand.h
+++ b/Source/cmUtilitySourceCommand.h
@@ -8,7 +8,6 @@
 class cmUtilitySourceCommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmUtilitySourceCommand, cmCommand);
   cmCommand* Clone() CM_OVERRIDE { return new cmUtilitySourceCommand; }
   bool InitialPass(std::vector<std::string> const& args,
                    cmExecutionStatus& status) CM_OVERRIDE;
diff --git a/Source/cmVariableRequiresCommand.h b/Source/cmVariableRequiresCommand.h
index e40151b..92878ba 100644
--- a/Source/cmVariableRequiresCommand.h
+++ b/Source/cmVariableRequiresCommand.h
@@ -8,7 +8,6 @@
 class cmVariableRequiresCommand : public cmCommand
 {
 public:
-  cmTypeMacro(cmVariableRequiresCommand, cmCommand);
   cmCommand* Clone() CM_OVERRIDE { return new cmVariableRequiresCommand; }
   bool InitialPass(std::vector<std::string> const& args,
                    cmExecutionStatus& status) CM_OVERRIDE;
diff --git a/Source/cmVariableWatchCommand.h b/Source/cmVariableWatchCommand.h
index b1862f0..8518fd2 100644
--- a/Source/cmVariableWatchCommand.h
+++ b/Source/cmVariableWatchCommand.h
@@ -44,8 +44,6 @@ public:
    */
   std::string GetName() const CM_OVERRIDE { return "variable_watch"; }
 
-  cmTypeMacro(cmVariableWatchCommand, cmCommand);
-
 protected:
   std::set<std::string> WatchedVariables;
 };
diff --git a/Source/cmWhileCommand.h b/Source/cmWhileCommand.h
index 9c70ca2..cc114ec 100644
--- a/Source/cmWhileCommand.h
+++ b/Source/cmWhileCommand.h
@@ -60,8 +60,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "while"; }
-
-  cmTypeMacro(cmWhileCommand, cmCommand);
 };
 
 #endif
diff --git a/Source/cmWriteFileCommand.h b/Source/cmWriteFileCommand.h
index dbadf84..76a0536 100644
--- a/Source/cmWriteFileCommand.h
+++ b/Source/cmWriteFileCommand.h
@@ -33,8 +33,6 @@ public:
    * The name of the command as specified in CMakeList.txt.
    */
   std::string GetName() const CM_OVERRIDE { return "write_file"; }
-
-  cmTypeMacro(cmWriteFileCommand, cmCommand);
 };
 
 #endif
-- 
cgit v0.12


From 2169b0faa40a20cd9aae25f9170cca074579a023 Mon Sep 17 00:00:00 2001
From: Daniel Pfeifer <daniel@pfeifer-mail.de>
Date: Sun, 23 Oct 2016 00:48:09 +0200
Subject: Make cmCPackLog not inherit from cmObject

---
 Source/CPack/cmCPackLog.h | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/Source/CPack/cmCPackLog.h b/Source/CPack/cmCPackLog.h
index 370879d..2ac805d 100644
--- a/Source/CPack/cmCPackLog.h
+++ b/Source/CPack/cmCPackLog.h
@@ -23,13 +23,11 @@
  * \brief A container for CPack generators
  *
  */
-class cmCPackLog : public cmObject
+class cmCPackLog
 {
 public:
-  cmTypeMacro(cmCPackLog, cmObject);
-
   cmCPackLog();
-  ~cmCPackLog() CM_OVERRIDE;
+  ~cmCPackLog();
 
   enum __log_tags
   {
-- 
cgit v0.12


From fb0b087c4dc65f18aef431e41de3aa9b91e35371 Mon Sep 17 00:00:00 2001
From: Daniel Pfeifer <daniel@pfeifer-mail.de>
Date: Sun, 23 Oct 2016 00:59:55 +0200
Subject: Make cmCTestGenericHandler not inherit from cmObject

---
 Source/CTest/cmCTestBuildAndTestHandler.h | 2 +-
 Source/CTest/cmCTestBuildHandler.h        | 2 +-
 Source/CTest/cmCTestConfigureHandler.h    | 2 +-
 Source/CTest/cmCTestCoverageHandler.h     | 2 +-
 Source/CTest/cmCTestGenericHandler.h      | 4 ++--
 Source/CTest/cmCTestMemCheckHandler.h     | 2 +-
 Source/CTest/cmCTestScriptHandler.h       | 2 +-
 Source/CTest/cmCTestSubmitHandler.h       | 2 +-
 Source/CTest/cmCTestTestHandler.h         | 2 +-
 Source/CTest/cmCTestUpdateHandler.h       | 2 +-
 Source/CTest/cmCTestUploadHandler.h       | 2 +-
 11 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/Source/CTest/cmCTestBuildAndTestHandler.h b/Source/CTest/cmCTestBuildAndTestHandler.h
index 8d787ea..1d424f3 100644
--- a/Source/CTest/cmCTestBuildAndTestHandler.h
+++ b/Source/CTest/cmCTestBuildAndTestHandler.h
@@ -22,7 +22,7 @@ class cmake;
 class cmCTestBuildAndTestHandler : public cmCTestGenericHandler
 {
 public:
-  cmTypeMacro(cmCTestBuildAndTestHandler, cmCTestGenericHandler);
+  typedef cmCTestGenericHandler Superclass;
 
   /*
    * The main entry point for this class
diff --git a/Source/CTest/cmCTestBuildHandler.h b/Source/CTest/cmCTestBuildHandler.h
index 16563ce..69970d5 100644
--- a/Source/CTest/cmCTestBuildHandler.h
+++ b/Source/CTest/cmCTestBuildHandler.h
@@ -25,7 +25,7 @@ class cmXMLWriter;
 class cmCTestBuildHandler : public cmCTestGenericHandler
 {
 public:
-  cmTypeMacro(cmCTestBuildHandler, cmCTestGenericHandler);
+  typedef cmCTestGenericHandler Superclass;
 
   /*
    * The main entry point for this class
diff --git a/Source/CTest/cmCTestConfigureHandler.h b/Source/CTest/cmCTestConfigureHandler.h
index 913e5c9..4a7c74b 100644
--- a/Source/CTest/cmCTestConfigureHandler.h
+++ b/Source/CTest/cmCTestConfigureHandler.h
@@ -15,7 +15,7 @@
 class cmCTestConfigureHandler : public cmCTestGenericHandler
 {
 public:
-  cmTypeMacro(cmCTestConfigureHandler, cmCTestGenericHandler);
+  typedef cmCTestGenericHandler Superclass;
 
   /*
    * The main entry point for this class
diff --git a/Source/CTest/cmCTestCoverageHandler.h b/Source/CTest/cmCTestCoverageHandler.h
index 062f971..0ba4a7a 100644
--- a/Source/CTest/cmCTestCoverageHandler.h
+++ b/Source/CTest/cmCTestCoverageHandler.h
@@ -38,7 +38,7 @@ public:
 class cmCTestCoverageHandler : public cmCTestGenericHandler
 {
 public:
-  cmTypeMacro(cmCTestCoverageHandler, cmCTestGenericHandler);
+  typedef cmCTestGenericHandler Superclass;
 
   /*
    * The main entry point for this class
diff --git a/Source/CTest/cmCTestGenericHandler.h b/Source/CTest/cmCTestGenericHandler.h
index b2ab1d2..ef9fdc0 100644
--- a/Source/CTest/cmCTestGenericHandler.h
+++ b/Source/CTest/cmCTestGenericHandler.h
@@ -22,7 +22,7 @@ class cmMakefile;
  * \brief A superclass of all CTest Handlers
  *
  */
-class cmCTestGenericHandler : public cmObject
+class cmCTestGenericHandler
 {
 public:
   /**
@@ -70,7 +70,7 @@ public:
    * Construct handler
    */
   cmCTestGenericHandler();
-  ~cmCTestGenericHandler() CM_OVERRIDE;
+  virtual ~cmCTestGenericHandler();
 
   typedef std::map<std::string, std::string> t_StringToString;
 
diff --git a/Source/CTest/cmCTestMemCheckHandler.h b/Source/CTest/cmCTestMemCheckHandler.h
index 8d678af..2300f68 100644
--- a/Source/CTest/cmCTestMemCheckHandler.h
+++ b/Source/CTest/cmCTestMemCheckHandler.h
@@ -23,7 +23,7 @@ class cmCTestMemCheckHandler : public cmCTestTestHandler
   friend class cmCTestRunTest;
 
 public:
-  cmTypeMacro(cmCTestMemCheckHandler, cmCTestTestHandler);
+  typedef cmCTestTestHandler Superclass;
 
   void PopulateCustomVectors(cmMakefile* mf) CM_OVERRIDE;
 
diff --git a/Source/CTest/cmCTestScriptHandler.h b/Source/CTest/cmCTestScriptHandler.h
index 2bace58..5ba8ecf 100644
--- a/Source/CTest/cmCTestScriptHandler.h
+++ b/Source/CTest/cmCTestScriptHandler.h
@@ -56,7 +56,7 @@ class cmake;
 class cmCTestScriptHandler : public cmCTestGenericHandler
 {
 public:
-  cmTypeMacro(cmCTestScriptHandler, cmCTestGenericHandler);
+  typedef cmCTestGenericHandler Superclass;
 
   /**
    * Add a script to run, and if is should run in the current process
diff --git a/Source/CTest/cmCTestSubmitHandler.h b/Source/CTest/cmCTestSubmitHandler.h
index abe4fa2..6e57de8 100644
--- a/Source/CTest/cmCTestSubmitHandler.h
+++ b/Source/CTest/cmCTestSubmitHandler.h
@@ -23,7 +23,7 @@
 class cmCTestSubmitHandler : public cmCTestGenericHandler
 {
 public:
-  cmTypeMacro(cmCTestSubmitHandler, cmCTestGenericHandler);
+  typedef cmCTestGenericHandler Superclass;
 
   cmCTestSubmitHandler();
   ~cmCTestSubmitHandler() CM_OVERRIDE { this->LogFile = CM_NULLPTR; }
diff --git a/Source/CTest/cmCTestTestHandler.h b/Source/CTest/cmCTestTestHandler.h
index 73b3174..703707f 100644
--- a/Source/CTest/cmCTestTestHandler.h
+++ b/Source/CTest/cmCTestTestHandler.h
@@ -32,7 +32,7 @@ class cmCTestTestHandler : public cmCTestGenericHandler
   friend class cmCTestBatchTestHandler;
 
 public:
-  cmTypeMacro(cmCTestTestHandler, cmCTestGenericHandler);
+  typedef cmCTestGenericHandler Superclass;
 
   /**
    * The main entry point for this class
diff --git a/Source/CTest/cmCTestUpdateHandler.h b/Source/CTest/cmCTestUpdateHandler.h
index c9a8682..9a3ec1b 100644
--- a/Source/CTest/cmCTestUpdateHandler.h
+++ b/Source/CTest/cmCTestUpdateHandler.h
@@ -19,7 +19,7 @@
 class cmCTestUpdateHandler : public cmCTestGenericHandler
 {
 public:
-  cmTypeMacro(cmCTestUpdateHandler, cmCTestGenericHandler);
+  typedef cmCTestGenericHandler Superclass;
 
   /*
    * The main entry point for this class
diff --git a/Source/CTest/cmCTestUploadHandler.h b/Source/CTest/cmCTestUploadHandler.h
index 251cd3e..eb05a86 100644
--- a/Source/CTest/cmCTestUploadHandler.h
+++ b/Source/CTest/cmCTestUploadHandler.h
@@ -18,7 +18,7 @@
 class cmCTestUploadHandler : public cmCTestGenericHandler
 {
 public:
-  cmTypeMacro(cmCTestUploadHandler, cmCTestGenericHandler);
+  typedef cmCTestGenericHandler Superclass;
 
   cmCTestUploadHandler();
   ~cmCTestUploadHandler() CM_OVERRIDE {}
-- 
cgit v0.12


From 7f9a8d53aa8a3595f4f1f2f81607f8df3627642d Mon Sep 17 00:00:00 2001
From: Daniel Pfeifer <daniel@pfeifer-mail.de>
Date: Sun, 23 Oct 2016 01:01:34 +0200
Subject: Make cmCPackGeneratorFactory not inherit from cmObject

---
 Source/CPack/cmCPackGeneratorFactory.h | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/Source/CPack/cmCPackGeneratorFactory.h b/Source/CPack/cmCPackGeneratorFactory.h
index 145867e..5381eb2 100644
--- a/Source/CPack/cmCPackGeneratorFactory.h
+++ b/Source/CPack/cmCPackGeneratorFactory.h
@@ -19,13 +19,11 @@ class cmCPackLog;
  * \brief A container for CPack generators
  *
  */
-class cmCPackGeneratorFactory : public cmObject
+class cmCPackGeneratorFactory
 {
 public:
-  cmTypeMacro(cmCPackGeneratorFactory, cmObject);
-
   cmCPackGeneratorFactory();
-  ~cmCPackGeneratorFactory() CM_OVERRIDE;
+  ~cmCPackGeneratorFactory();
 
   //! Get the generator
   cmCPackGenerator* NewGenerator(const std::string& name);
-- 
cgit v0.12


From 2214011f7b3b13fe7ae0f68f0f9d49af11e12edd Mon Sep 17 00:00:00 2001
From: Daniel Pfeifer <daniel@pfeifer-mail.de>
Date: Sun, 23 Oct 2016 01:12:26 +0200
Subject: Make cmCPackGenerator not inherit from cmObject

---
 Source/CPack/cmCPackArchiveGenerator.h | 2 +-
 Source/CPack/cmCPackGenerator.h        | 9 +++++----
 2 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/Source/CPack/cmCPackArchiveGenerator.h b/Source/CPack/cmCPackArchiveGenerator.h
index e960a6a..7010664 100644
--- a/Source/CPack/cmCPackArchiveGenerator.h
+++ b/Source/CPack/cmCPackArchiveGenerator.h
@@ -23,7 +23,7 @@ class cmCPackComponent;
 class cmCPackArchiveGenerator : public cmCPackGenerator
 {
 public:
-  cmTypeMacro(cmCPackArchiveGenerator, cmCPackGenerator);
+  typedef cmCPackGenerator Superclass;
 
   /**
    * Construct generator
diff --git a/Source/CPack/cmCPackGenerator.h b/Source/CPack/cmCPackGenerator.h
index db20998..a7652b1 100644
--- a/Source/CPack/cmCPackGenerator.h
+++ b/Source/CPack/cmCPackGenerator.h
@@ -20,7 +20,8 @@ class cmInstalledFile;
 class cmMakefile;
 
 #define cmCPackTypeMacro(klass, superclass)                                   \
-  cmTypeMacro(klass, superclass);                                             \
+  typedef superclass Superclass;                                              \
+  const char* GetNameOfClass() CM_OVERRIDE { return #klass; }                 \
   static cmCPackGenerator* CreateGenerator() { return new klass; }            \
   class cmCPackTypeMacro_UseTrailingSemicolon
 
@@ -36,10 +37,10 @@ class cmMakefile;
  * \brief A superclass of all CPack Generators
  *
  */
-class cmCPackGenerator : public cmObject
+class cmCPackGenerator
 {
 public:
-  cmTypeMacro(cmCPackGenerator, cmObject);
+  virtual const char* GetNameOfClass() = 0;
   /**
    * If verbose then more information is printed out
    */
@@ -83,7 +84,7 @@ public:
    * Construct generator
    */
   cmCPackGenerator();
-  ~cmCPackGenerator() CM_OVERRIDE;
+  virtual ~cmCPackGenerator();
 
   //! Set and get the options
   void SetOption(const std::string& op, const char* value);
-- 
cgit v0.12