00001 #ifndef __cmt_constituent_h__ 00002 #define __cmt_constituent_h__ 00003 00004 #include "cmt_parser.h" 00005 #include "cmt_system.h" 00006 #include "cmt_fragment.h" 00007 #include "cmt_group.h" 00008 00009 class Constituent 00010 { 00011 public: 00012 typedef cmt_vector<Constituent> ConstituentVector; 00013 static void action (ConstituentType type, 00014 const CmtSystem::cmt_string_vector& words); 00015 static Constituent* find (const cmt_string& name); 00016 static Constituent* add (ConstituentType type, 00017 const cmt_string& name, 00018 const cmt_string& generator); 00019 static void show (const cmt_string& name); 00020 static void parse_all (); 00021 static void show_all (); 00022 static void show_names (); 00023 static void build_all_makefiles (bool simulation); 00024 static void build_all_msdev_files (bool simulation); 00025 static void clear_all (); 00026 static ConstituentVector& constituents (); 00027 00028 public: 00029 Constituent (); 00030 ~Constituent (); 00031 void parse (); 00032 00033 void clear (); 00034 void build_makefile (bool simulation) const; 00035 void build_msdev_file (bool simulation) const; 00036 void show () const; 00037 00038 cmt_string name; 00039 cmt_string generator; 00040 ConstituentType type; 00041 Group* group; 00042 cmt_string suffix; 00043 CmtSystem::cmt_string_vector modules; 00044 bool need_OS9; 00045 bool windows; 00046 bool no_static; 00047 bool no_share; 00048 bool need_prototypes; 00049 bool need_check; 00050 bool build_triggers; 00051 CmtSystem::cmt_string_vector includes; 00052 CmtSystem::cmt_string_vector imports; 00053 Variable::VariableVector variables; 00054 00055 private: 00056 CmtSystem::cmt_string_vector parameters; 00057 00058 }; 00059 00060 #endif