00001 //----------------------------------------------------------- 00002 // Copyright Christian Arnault LAL-Orsay CNRS 00003 // arnault@lal.in2p3.fr 00004 // See the complete license in cmt_license.txt "http://www.cecill.info". 00005 //----------------------------------------------------------- 00006 00007 #ifndef __cmt_language_h__ 00008 #define __cmt_language_h__ 00009 00010 #include "cmt_parser.h" 00011 #include "cmt_fragment.h" 00012 00013 class Language 00014 { 00015 public: 00016 typedef cmt_vector<Language> LanguageVector; 00017 static void action (const CmtSystem::cmt_string_vector& words); 00018 static Language& find (const cmt_string& name); 00019 static Language& find_with_suffix (const cmt_string& suffix); 00020 static Language& add (const cmt_string& name); 00021 static void show (const cmt_string& name); 00022 static void show_all (); 00023 static void show_names (); 00024 static void setup_all_fragments (); 00025 static void clear_all (); 00026 static LanguageVector& languages (); 00027 static Language& null (); 00028 00029 public: 00030 Language (); 00031 ~Language (); 00032 void clear (); 00033 void show (); 00034 void setup_fragments (); 00035 bool operator == (const cmt_string& name) const; 00036 bool operator == (const Language& other) const; 00037 bool operator != (const Language& other) const; 00038 00039 cmt_string m_name; 00040 cmt_string fragment_name; 00041 cmt_string linker; 00042 cmt_string output_suffix; 00043 bool prototypes; 00044 cmt_string preprocessor_command; 00045 CmtSystem::cmt_string_vector suffixes; 00046 CmtSystem::cmt_string_vector extra_output_suffixes; 00047 00048 FragmentHandle application; 00049 FragmentHandle library; 00050 }; 00051 00052 #endif