00001
00002
00003
00004
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
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