Ver Fonte

ENH: add functions

Ken Martin há 18 anos atrás
pai
commit
257b775f70
2 ficheiros alterados com 109 adições e 0 exclusões
  1. 27 0
      Source/cmEndFunctionCommand.cxx
  2. 82 0
      Source/cmEndFunctionCommand.h

+ 27 - 0
Source/cmEndFunctionCommand.cxx

@@ -0,0 +1,27 @@
+/*=========================================================================
+
+  Program:   CMake - Cross-Platform Makefile Generator
+  Module:    $RCSfile$
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+  Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
+  See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even 
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+#include "cmEndFunctionCommand.h"
+
+bool cmEndFunctionCommand
+::InvokeInitialPass(std::vector<cmListFileArgument> const&)
+{
+  this->SetError("An ENDFUNCTION command was found outside of a proper "
+                 "FUNCTION ENDFUNCTION structure. Or its arguments did not "
+                 "match the opening FUNCTION command.");
+  return false;
+}
+

+ 82 - 0
Source/cmEndFunctionCommand.h

@@ -0,0 +1,82 @@
+/*=========================================================================
+
+  Program:   CMake - Cross-Platform Makefile Generator
+  Module:    $RCSfile$
+  Language:  C++
+  Date:      $Date$
+  Version:   $Revision$
+
+  Copyright (c) 2002 Kitware, Inc., Insight Consortium.  All rights reserved.
+  See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details.
+
+     This software is distributed WITHOUT ANY WARRANTY; without even 
+     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR 
+     PURPOSE.  See the above copyright notices for more information.
+
+=========================================================================*/
+#ifndef cmEndFunctionCommand_h
+#define cmEndFunctionCommand_h
+
+#include "cmCommand.h"
+
+/** \class cmEndFunctionCommand
+ * \brief ends an if block
+ *
+ * cmEndFunctionCommand ends an if block
+ */
+class cmEndFunctionCommand : public cmCommand
+{
+public:
+  /**
+   * This is a virtual constructor for the command.
+   */
+  virtual cmCommand* Clone() 
+    {
+    return new cmEndFunctionCommand;
+    }
+
+  /**
+   * Override cmCommand::InvokeInitialPass to get arguments before
+   * expansion.
+   */
+  virtual bool InvokeInitialPass(std::vector<cmListFileArgument> const&);
+  
+  /**
+   * This is called when the command is first encountered in
+   * the CMakeLists.txt file.
+   */
+  virtual bool InitialPass(std::vector<std::string> const&) {return false;}
+
+  /**
+   * This determines if the command is invoked when in script mode.
+   */
+  virtual bool IsScriptable() { return true; }
+
+  /**
+   * The name of the command as specified in CMakeList.txt.
+   */
+  virtual const char* GetName() { return "endfunction";}
+
+  /**
+   * Succinct documentation.
+   */
+  virtual const char* GetTerseDocumentation() 
+    {
+    return "Ends a list of commands in a function block.";
+    }
+  
+  /**
+   * More documentation.
+   */
+  virtual const char* GetFullDocumentation()
+    {
+    return
+      "  endfunction(expression)\n"
+      "See the function command.";
+    }
+  
+  cmTypeMacro(cmEndFunctionCommand, cmCommand);
+};
+
+
+#endif