Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

cmt_generators.h

Go to the documentation of this file.
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_generators_h__
00008 #define __cmt_generators_h__
00009 
00010 #include "cmt_constituent.h"
00011 #include "cmt_fragment.h"
00012 #include "cmt_generator.h"
00013 
00014 class AnyDocumentGenerator : public CmtGenerator
00015 {
00016 public:
00017   AnyDocumentGenerator ();
00018 
00019 protected:
00020   void reset ();
00021 
00022   Variable m_TITLE;
00023 
00024   FragmentHandle make_header_fragment;
00025   FragmentHandle cleanup_header_fragment;
00026   FragmentHandle cleanup_fragment;
00027   FragmentHandle dependencies_fragment;
00028   FragmentHandle dependencies_and_triggers_fragment;
00029 };
00030 
00031 class DocumentGenerator : public AnyDocumentGenerator
00032 {
00033 public:
00034   DocumentGenerator ();
00035   void build (const cmt_string& package,
00036               const Constituent& constituent);
00037 
00038 private:
00039   void reset ();
00040   bool analyze_file (const cmt_string& file,
00041                      const cmt_string& constituent_name,
00042                      const cmt_string& output_suffix);
00043 
00044   FragmentHandle document_header_fragment;
00045 };
00046 
00047 class LibraryGenerator : public AnyDocumentGenerator
00048 {
00049 public:
00050   LibraryGenerator ();
00051   void build (const cmt_string& package,
00052               const Constituent& constituent);
00053 
00054 protected:
00055   void reset ();
00056   bool analyze_file (const Constituent& constituent,
00057                      const cmt_string& file);
00058   void java_file_action (SourceFile& file, const Constituent& constituent);
00059   void proto_file_action (const cmt_string& file, const Constituent& constituent);
00060   void prepare_proto_file (const cmt_string& file);
00061   void module_file_action (SourceFile& file, const Constituent& constituent);
00062 
00063   FragmentHandle library_header_fragment;
00064   FragmentHandle application_header_fragment;
00065   FragmentHandle java_header_fragment;
00066   FragmentHandle jar_header_fragment;
00067   FragmentHandle library_fragment;
00068   FragmentHandle library_no_share_fragment;
00069   FragmentHandle application_fragment;
00070   FragmentHandle jar_fragment;
00071   FragmentHandle java_fragment;
00072   FragmentHandle java_copy_fragment;
00073   FragmentHandle cleanup_library_fragment;
00074   FragmentHandle cleanup_application_fragment;
00075   FragmentHandle cleanup_java_fragment;
00076   FragmentHandle cleanup_objects_fragment;
00077   FragmentHandle buildproto_fragment;
00078   FragmentHandle check_application_fragment;
00079   FragmentHandle check_java_fragment;
00080   FragmentHandle protos_header_fragment;
00081 };
00082 
00083 class ApplicationGenerator : public LibraryGenerator
00084 {
00085 public:
00086 };
00087 
00088 class ReadmeGenerator : public CmtGenerator
00089 {
00090 public:
00091   ReadmeGenerator ();
00092   void build (const CmtSystem::cmt_string_vector& arguments);
00093 
00094 private:
00095   void reset ();
00096 
00097   FragmentHandle readme_header_fragment;
00098   FragmentHandle readme_fragment;
00099   FragmentHandle readme_doc_fragment;
00100   FragmentHandle readme_use_fragment;
00101   FragmentHandle readme_trailer_fragment;
00102 };
00103 
00104 class PrototypeGenerator : public CmtGenerator
00105 {
00106 public:
00107   void build (const cmt_string& file_name);
00108 };
00109 
00110 class DefaultMakefileGenerator : public CmtGenerator
00111 {
00112 public:
00113   void build ();
00114 };
00115 
00116 class MSDEVGenerator : public CmtGenerator
00117 {
00118 public:
00119   MSDEVGenerator ();
00120   int build_workspace (const Constituent::ConstituentVector& constituents);
00121   int build_project (const Constituent& constituent);
00122 
00123 private:
00124   void reset ();
00125 
00126   cmt_string msdevdir;
00127 
00128   FragmentHandle dsw_header_fragment;
00129   FragmentHandle dsw_project_fragment;
00130   FragmentHandle dsw_all_project_header_fragment;
00131   FragmentHandle dsw_all_project_dependency_fragment;
00132   FragmentHandle dsw_all_project_trailer_fragment;
00133   FragmentHandle dsw_trailer_fragment;
00134 
00135   FragmentHandle dsp_all_fragment;
00136   FragmentHandle dsp_library_header_fragment;
00137   FragmentHandle dsp_application_header_fragment;
00138   FragmentHandle dsp_windows_header_fragment;
00139   FragmentHandle dsp_contents_fragment;
00140   FragmentHandle dsp_trailer_fragment;
00141 
00142 };
00143 
00144 class VSNETGenerator : public CmtGenerator
00145 {
00146 public:
00147   VSNETGenerator ();
00148   int build_workspace (const Constituent::ConstituentVector& constituents);
00149   int build_project (const Constituent& constituent);
00150 
00151 private:
00152   void reset ();
00153 
00154   void pseudoGUID (const cmt_string& a, 
00155                    const cmt_string& b, 
00156                    const cmt_string& c, 
00157                    cmt_string& d);
00158 
00159   cmt_string vsnetdir;
00160 
00161     //Visual Studio.net Support
00162   FragmentHandle sln_header_fragment;
00163   FragmentHandle sln_project_fragment;
00164   FragmentHandle sln_dependency_header_fragment;
00165   FragmentHandle sln_dependency_project_fragment;
00166   FragmentHandle sln_dependency_trailer_fragment;
00167   FragmentHandle sln_project_config_fragment;
00168   FragmentHandle sln_trailer_fragment;
00169 
00170   FragmentHandle vcproj_all_fragment;
00171   FragmentHandle vcproj_library_header_fragment;
00172   FragmentHandle vcproj_application_header_fragment;
00173   FragmentHandle vcproj_windows_header_fragment;
00174   FragmentHandle vcproj_contents_fragment;
00175   FragmentHandle vcproj_directory_header_fragment;
00176   FragmentHandle vcproj_directory_trailer_fragment;
00177   FragmentHandle vcproj_trailer_fragment;
00178 };
00179 
00180 class MakeSetupGenerator : public CmtGenerator
00181 {
00182 public:
00183   MakeSetupGenerator ();
00184   void build (const cmt_string& package);
00185 
00186 private:
00187   void reset ();
00188 
00189   FragmentHandle make_setup_header_fragment;
00190   FragmentHandle make_setup_fragment;
00191 };
00192 
00193 class ConstituentsMakefileGenerator : public CmtGenerator
00194 {
00195 public:
00196   ConstituentsMakefileGenerator ();
00197   void build (const cmt_string& package,
00198               const CmtSystem::cmt_string_vector& arguments);
00199 
00200 private:
00201   void reset ();
00202 
00203   FragmentHandle constituents_header_fragment;
00204   FragmentHandle constituents_trailer_fragment;
00205   FragmentHandle group_fragment;
00206   FragmentHandle constituent_fragment;
00207   FragmentHandle check_application_header_fragment;
00208 };
00209 
00210 class DependencyGenerator : public CmtGenerator
00211 {
00212 public:
00213   void build (const CmtSystem::cmt_string_vector& arguments);
00214 
00215 private:
00216   void add_line_to_text (const cmt_string& line, cmt_string& text);
00217   cmt_string build (const cmt_string& file_name);
00218   bool m_stamps;
00219 };
00220 
00221 #endif

Generated on Mon May 2 10:25:04 2005 for CMT by doxygen 1.3.5