source: CMT/HEAD/source/cmt_generators.h @ 561

Last change on this file since 561 was 561, checked in by rybkin, 13 years ago

See C.L. 444

  • Property svn:eol-style set to native
File size: 6.1 KB
Line 
1//-----------------------------------------------------------
2// Copyright Christian Arnault LAL-Orsay CNRS
3// arnault@lal.in2p3.fr
4// See the complete license in cmt_license.txt "http://www.cecill.info".
5//-----------------------------------------------------------
6
7#ifndef __cmt_generators_h__
8#define __cmt_generators_h__
9
10#include "cmt_constituent.h"
11#include "cmt_fragment.h"
12#include "cmt_generator.h"
13
14class AnyDocumentGenerator : public CmtGenerator
15{
16public:
17  AnyDocumentGenerator ();
18
19protected:
20  void reset ();
21
22  Variable m_TITLE;
23  Variable m_STRUCTURED_OUTPUT;
24
25  FragmentHandle make_header_fragment;
26  FragmentHandle cleanup_header_fragment;
27  FragmentHandle cleanup_fragment;
28  FragmentHandle dependencies_fragment;
29  FragmentHandle dependencies_and_triggers_fragment;
30};
31
32class DocumentGenerator : public AnyDocumentGenerator
33{
34public:
35  DocumentGenerator ();
36  void build (const cmt_string& package,
37              const Constituent& constituent,
38              const cmt_string& file = "");
39
40private:
41  void reset ();
42  bool analyze_file (const cmt_string& file,
43                     const cmt_string& constituent_name,
44                     const cmt_string& output_suffix);
45
46  FragmentHandle document_header_fragment;
47};
48
49class LibraryGenerator : public AnyDocumentGenerator
50{
51public:
52  LibraryGenerator ();
53  void build (const cmt_string& package,
54              const Constituent& constituent,
55              const cmt_string& file = "");
56
57protected:
58  void reset ();
59  bool analyze_file (const Constituent& constituent,
60                     const cmt_string& file);
61  void java_file_action (SourceFile& file, const Constituent& constituent);
62  void proto_file_action (const cmt_string& file, const Constituent& constituent);
63  void prepare_proto_file (const cmt_string& file);
64  void module_file_action (SourceFile& file, const Constituent& constituent);
65
66  FragmentHandle library_header_fragment;
67  FragmentHandle application_header_fragment;
68  FragmentHandle java_header_fragment;
69  FragmentHandle jar_header_fragment;
70  FragmentHandle library_fragment;
71  FragmentHandle library_no_share_fragment;
72  FragmentHandle library_no_static_fragment;
73  FragmentHandle application_fragment;
74  FragmentHandle jar_fragment;
75  FragmentHandle java_fragment;
76  FragmentHandle java_copy_fragment;
77  FragmentHandle cleanup_library_fragment;
78  FragmentHandle cleanup_application_fragment;
79  FragmentHandle cleanup_java_fragment;
80  FragmentHandle cleanup_objects_fragment;
81  FragmentHandle buildproto_fragment;
82  FragmentHandle check_application_fragment;
83  FragmentHandle check_java_fragment;
84  FragmentHandle protos_header_fragment;
85};
86
87class ApplicationGenerator : public LibraryGenerator
88{
89public:
90};
91
92class ReadmeGenerator : public CmtGenerator
93{
94public:
95  ReadmeGenerator ();
96  void build (const CmtSystem::cmt_string_vector& arguments);
97
98private:
99  void reset ();
100
101  FragmentHandle readme_header_fragment;
102  FragmentHandle readme_fragment;
103  FragmentHandle readme_doc_fragment;
104  FragmentHandle readme_use_fragment;
105  FragmentHandle readme_trailer_fragment;
106};
107
108class PrototypeGenerator : public CmtGenerator
109{
110public:
111  void build (const cmt_string& file_name);
112};
113
114class DefaultMakefileGenerator : public CmtGenerator
115{
116public:
117  void build ();
118};
119
120class MSDEVGenerator : public CmtGenerator
121{
122public:
123  MSDEVGenerator ();
124  int build_workspace (const Constituent::ConstituentVector& constituents);
125  int build_project (const Constituent& constituent);
126
127private:
128  void reset ();
129
130  cmt_string msdevdir;
131
132  FragmentHandle dsw_header_fragment;
133  FragmentHandle dsw_project_fragment;
134  FragmentHandle dsw_all_project_header_fragment;
135  FragmentHandle dsw_all_project_dependency_fragment;
136  FragmentHandle dsw_all_project_trailer_fragment;
137  FragmentHandle dsw_trailer_fragment;
138
139  FragmentHandle dsp_all_fragment;
140  FragmentHandle dsp_library_header_fragment;
141  FragmentHandle dsp_application_header_fragment;
142  FragmentHandle dsp_windows_header_fragment;
143  FragmentHandle dsp_contents_fragment;
144  FragmentHandle dsp_trailer_fragment;
145
146};
147
148class VSNETGenerator : public CmtGenerator
149{
150public:
151  VSNETGenerator ();
152  int build_workspace (const Constituent::ConstituentVector& constituents);
153  int build_project (const Constituent& constituent);
154
155private:
156  void reset ();
157
158  void pseudoGUID (const cmt_string& a, 
159                   const cmt_string& b, 
160                   const cmt_string& c, 
161                   cmt_string& d);
162
163  cmt_string vsnetdir;
164
165    //Visual Studio.net Support
166  FragmentHandle sln_header_fragment;
167  FragmentHandle sln_project_fragment;
168  FragmentHandle sln_dependency_header_fragment;
169  FragmentHandle sln_dependency_project_fragment;
170  FragmentHandle sln_dependency_trailer_fragment;
171  FragmentHandle sln_project_config_fragment;
172  FragmentHandle sln_trailer_fragment;
173
174  FragmentHandle vcproj_all_fragment;
175  FragmentHandle vcproj_library_header_fragment;
176  FragmentHandle vcproj_application_header_fragment;
177  FragmentHandle vcproj_windows_header_fragment;
178  FragmentHandle vcproj_contents_fragment;
179  FragmentHandle vcproj_directory_header_fragment;
180  FragmentHandle vcproj_directory_trailer_fragment;
181  FragmentHandle vcproj_trailer_fragment;
182};
183
184class MakeSetupGenerator : public CmtGenerator
185{
186public:
187  MakeSetupGenerator ();
188  void build (const cmt_string& package);
189
190private:
191  void reset ();
192
193  FragmentHandle make_setup_header_fragment;
194  FragmentHandle make_setup_fragment;
195};
196
197class ConstituentsMakefileGenerator : public CmtGenerator
198{
199public:
200  ConstituentsMakefileGenerator ();
201  void build (const cmt_string& package,
202              const cmt_string& file);
203  //          const CmtSystem::cmt_string_vector& arguments);
204
205private:
206  void reset ();
207
208  FragmentHandle constituents_header_fragment;
209  FragmentHandle constituents_trailer_fragment;
210  FragmentHandle group_fragment;
211  FragmentHandle constituent_fragment;
212  FragmentHandle constituent_lock_fragment;
213  FragmentHandle check_application_header_fragment;
214};
215
216class DependencyGenerator : public CmtGenerator
217{
218public:
219  void build (const CmtSystem::cmt_string_vector& arguments);
220  void prepare_header_file_filters ();
221 
222private:
223  void add_line_to_text (const cmt_string& line, cmt_string& text);
224  cmt_string build (const cmt_string& file_name);
225  bool m_stamps;
226};
227
228#endif
Note: See TracBrowser for help on using the repository browser.