summaryrefslogtreecommitdiffstats
path: root/Source/cmRuleMaker.h
diff options
context:
space:
mode:
authorBill Hoffman <bill.hoffman@kitware.com>2001-01-05 16:41:20 (GMT)
committerBill Hoffman <bill.hoffman@kitware.com>2001-01-05 16:41:20 (GMT)
commitc54a05bfc799f3e88459956ec37698bab22c27f9 (patch)
tree400b2eb0b6853952a4faa8c0fc41b90eb06deaec /Source/cmRuleMaker.h
parentd888b5e39d4e01af538b48ad16c2a6a474de34a0 (diff)
downloadCMake-c54a05bfc799f3e88459956ec37698bab22c27f9.zip
CMake-c54a05bfc799f3e88459956ec37698bab22c27f9.tar.gz
CMake-c54a05bfc799f3e88459956ec37698bab22c27f9.tar.bz2
ENH: rework cmake, added ruleMaker classes and changed the syntax of the CMakeLists.txt files.
Diffstat (limited to 'Source/cmRuleMaker.h')
-rw-r--r--Source/cmRuleMaker.h52
1 files changed, 52 insertions, 0 deletions
diff --git a/Source/cmRuleMaker.h b/Source/cmRuleMaker.h
new file mode 100644
index 0000000..e013ea5
--- /dev/null
+++ b/Source/cmRuleMaker.h
@@ -0,0 +1,52 @@
+#ifndef cmRuleMaker_h
+#define cmRuleMaker_h
+#include "cmStandardIncludes.h"
+#include "cmMakefile.h"
+
+class cmRuleMaker
+{
+public:
+ cmRuleMaker() { m_Makefile = 0; m_Enabled = true; }
+ void SetMakefile(cmMakefile*m) {m_Makefile = m; }
+ // This is called when the rule is firt encountered in
+ // the input file
+ virtual bool Invoke(std::vector<std::string>& args) = 0;
+ // This is called after the entire file has been parsed.
+ virtual void FinalPass() = 0;
+ // This is called to let the rule check the cache
+ virtual void LoadCache() { }
+
+ virtual cmRuleMaker* Clone() = 0;
+
+ // This determines if the rule gets passed down
+ // to sub directory makefiles
+ virtual bool IsInherited()
+ {
+ return false;
+ }
+ // This is the name used in the input file.
+ virtual const char* GetName() = 0;
+ // Return the terse documentaion for the rule
+ virtual const char* TerseDocumentaion() = 0;
+ // Return full documentation for the rule
+ virtual const char* FullDocumentaion() = 0;
+ // enable or disable this rule
+ bool GetEnabled() { return m_Enabled; }
+ void SetEnableOn() { m_Enabled = true; }
+ void SetEnableOff() { m_Enabled = false; }
+ const char* GetError() { return m_Error.c_str();}
+protected:
+ void SetError(const char* e)
+ {
+ m_Error = this->GetName();
+ m_Error += " ";
+ m_Error += e;
+ }
+ cmMakefile* m_Makefile;
+private:
+ bool m_Enabled;
+ std::string m_Error;
+};
+
+
+#endif