00001 #ifndef __cmt_language_h__ 00002 #define __cmt_language_h__ 00003 00004 #include "cmt_parser.h" 00005 #include "cmt_fragment.h" 00006 00007 class Language 00008 { 00009 public: 00010 typedef cmt_vector<Language> LanguageVector; 00011 static void action (const CmtSystem::cmt_string_vector& words); 00012 static Language& find (const cmt_string& name); 00013 static Language& find_with_suffix (const cmt_string& suffix); 00014 static Language& add (const cmt_string& name); 00015 static void show (const cmt_string& name); 00016 static void show_all (); 00017 static void show_names (); 00018 static void setup_all_fragments (); 00019 static void clear_all (); 00020 static LanguageVector& languages (); 00021 static Language& null (); 00022 00023 public: 00024 Language (); 00025 ~Language (); 00026 void clear (); 00027 void show (); 00028 void setup_fragments (); 00029 bool operator == (const cmt_string& name) const; 00030 bool operator == (const Language& other) const; 00031 bool operator != (const Language& other) const; 00032 00033 cmt_string m_name; 00034 cmt_string fragment_name; 00035 cmt_string linker; 00036 cmt_string output_suffix; 00037 bool prototypes; 00038 cmt_string preprocessor_command; 00039 CmtSystem::cmt_string_vector suffixes; 00040 CmtSystem::cmt_string_vector extra_output_suffixes; 00041 00042 FragmentHandle application; 00043 FragmentHandle library; 00044 }; 00045 00046 #endif