source: CMT/v1r12p20020606/src/cmt_fragment.h @ 1

Last change on this file since 1 was 1, checked in by arnault, 19 years ago

Import all tags

File size: 4.2 KB
Line 
1#ifndef __cmt_fragment_h__
2#define __cmt_fragment_h__
3
4#include <stdarg.h>
5
6#include "cmt_parser.h"
7#include "cmt_system.h"
8
9class Variable
10{
11public:
12
13  typedef cmt_vector<Variable> VariableVector;
14
15  static Variable* find (VariableVector& vector, 
16                         const cmt_string& name);
17
18public:
19
20  Variable ();
21  Variable (const cmt_string& n);
22
23  const cmt_string& macro_braces () const;
24  const cmt_string& macro_pars () const;
25
26  void set (const cmt_string& new_name,
27            const cmt_string& new_value = "");
28
29  Variable& operator = (const Variable& other);
30  Variable& operator = (const cmt_string& v);
31  void operator += (const cmt_string& v);
32  cmt_string operator + (const cmt_string& v) const;
33  operator const cmt_string& () const;
34  bool operator == (const cmt_string& v) const;
35  bool operator != (const cmt_string& v) const;
36  cmt_string name;
37  cmt_string value;
38
39private:
40  cmt_string m_macro_braces;
41  cmt_string m_macro_pars;
42};
43
44class Fragment
45{
46public:
47  typedef cmt_vector<Fragment> FragmentVector;
48
49  static void action (const CmtSystem::cmt_string_vector& words,
50                      Use* use);
51  static Fragment* find (const cmt_string& name);
52  static void add (const cmt_string& name,
53                   const cmt_string& suffix,
54                   const cmt_string& header,
55                   const cmt_string& trailer,
56                   bool need_dependencies,
57                   Use* use);
58  static void show (const cmt_string& name);
59  static void show_all ();
60  static void clear_all ();
61  static bool copy (FILE* out, const cmt_string& name, int variables, ...);
62  static bool copy (cmt_string& out, const cmt_string& name, int variables, ...);
63  static bool copy (FILE* out, const cmt_string& name, 
64                    const Variable::VariableVector& vector, int variables, ...);
65  static bool copy (cmt_string& out, const cmt_string& name, 
66                    const Variable::VariableVector& vector, int variables, ...);
67
68  static FragmentVector& fragments ();
69
70public:
71  Fragment ();
72  Fragment (const cmt_string& fragment_name);
73  ~Fragment ();
74  void clear ();
75  int print ();
76  bool locate ();
77
78  bool copy (FILE* out, int variables, ...);
79  bool copy (cmt_string& out, int variables, ...);
80  bool copy (FILE* out, int variables, va_list ids);
81  bool copy (cmt_string& out, int variables, va_list ids);
82  bool wincopy (FILE* out, int variables, va_list ids);
83  bool wincopy (cmt_string& out, int variables, va_list ids);
84
85  bool copy (FILE* out, const Variable::VariableVector& vector, int variables, ...);
86  bool copy (cmt_string& out, const Variable::VariableVector& vector, int variables, ...);
87  bool copy (FILE* out, const Variable::VariableVector& vector, int variables, va_list ids);
88  bool copy (cmt_string& out, const Variable::VariableVector& vector, int variables, va_list ids);
89  bool wincopy (FILE* out, const Variable::VariableVector& vector, int variables, va_list ids);
90  bool wincopy (cmt_string& out, const Variable::VariableVector& vector, int variables, va_list ids);
91
92  cmt_string name;
93  cmt_string suffix;
94  cmt_string header;
95  cmt_string trailer;
96  bool need_dependencies;
97  cmt_string path;
98  UseRef use;
99};
100
101class FragmentHandle
102{
103public:
104  FragmentHandle ();
105  FragmentHandle (const cmt_string name);
106
107  FragmentHandle& operator = (const FragmentHandle& other);
108  void reset ();
109  void set (const cmt_string name);
110  cmt_string& name ();
111  cmt_string& suffix ();
112  cmt_string& header ();
113  cmt_string& trailer ();
114  bool need_dependencies ();
115
116  bool copy (FILE* out, int variables, ...);
117  bool copy (cmt_string& out, int variables, ...);
118  bool wincopy (FILE* out, int variables, ...);
119  bool wincopy (cmt_string& out, int variables, ...);
120
121  bool copy (FILE* out, const Variable::VariableVector& vector, int variables, ...);
122  bool copy (cmt_string& out, const Variable::VariableVector& vector, int variables, ...);
123  bool wincopy (FILE* out, const Variable::VariableVector& vector, int variables, ...);
124  bool wincopy (cmt_string& out, const Variable::VariableVector& vector, int variables, ...);
125
126private:
127  bool setup ();
128
129  Fragment* _fragment;
130  cmt_string _name;
131  bool _initialized;
132};
133
134#endif
Note: See TracBrowser for help on using the repository browser.