~ubuntu-branches/ubuntu/wily/aspectc++/wily

« back to all changes in this revision

Viewing changes to Puma/include/Puma/Token.h

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2005-12-23 10:49:40 UTC
  • Revision ID: james.westby@ubuntu.com-20051223104940-ig4klhoi991zs7km
Tags: upstream-0.99+1.0pre2
ImportĀ upstreamĀ versionĀ 0.99+1.0pre2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
2
#define __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
3
#define __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_inc_Puma_Token_h__
 
4
 
 
5
#ifndef __ac_h_
 
6
#define __ac_h_
 
7
namespace AC {
 
8
  typedef const char* Type;
 
9
  enum JPType { CALL = 0x0004, EXECUTION = 0x0008, CONSTRUCTION = 0x0010, DESTRUCTION = 0x0020 };
 
10
  struct Action {
 
11
    void **_args; void *_result; void *_target; void *_that; void *_fptr;
 
12
    void (*_wrapper)(Action &);
 
13
    inline void trigger () { _wrapper (*this); }
 
14
  };
 
15
  struct AnyResultBuffer {};
 
16
  template <typename T> struct ResultBuffer : public AnyResultBuffer {
 
17
    char _data[sizeof (T)];
 
18
    ~ResultBuffer () { ((T*)_data)->T::~T(); }
 
19
    operator T& () const { return *(T*)_data; }
 
20
  };
 
21
  template <class Aspect, int Index>
 
22
  struct CFlow {
 
23
    static int &instance () {
 
24
      static int counter = 0;
 
25
      return counter;
 
26
    }
 
27
    CFlow () { instance ()++; }
 
28
    ~CFlow () { instance ()--; }
 
29
    static bool active () { return instance () > 0; }
 
30
  };
 
31
}
 
32
inline void * operator new (__SIZE_TYPE__, AC::AnyResultBuffer *p) { return p; }
 
33
inline void operator delete (void *, AC::AnyResultBuffer *) { } // for VC++
 
34
#endif // __ac_h_
 
35
#endif // __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
36
 
 
37
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Token.h"
 
38
// This file is part of PUMA.
 
39
// Copyright (C) 1999-2003  The PUMA developer team.
 
40
//                                                                
 
41
// This program is free software;  you can redistribute it and/or 
 
42
// modify it under the terms of the GNU General Public License as 
 
43
// published by the Free Software Foundation; either version 2 of 
 
44
// the License, or (at your option) any later version.            
 
45
//                                                                
 
46
// This program is distributed in the hope that it will be useful,
 
47
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
48
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
49
// GNU General Public License for more details.                   
 
50
//                                                                
 
51
// You should have received a copy of the GNU General Public      
 
52
// License along with this program; if not, write to the Free     
 
53
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
54
// MA  02111-1307  USA                                            
 
55
 
 
56
#ifndef __Token_h__
 
57
#define __Token_h__
 
58
 
 
59
// Abstract interface of a language token. A token is created by an
 
60
// invocation of a scanner's 'scan' method. The token encapsulates a
 
61
// lexical unit of the scanned text.
 
62
 
 
63
#include <stdlib.h>
 
64
#include "Puma/LanguageID.h"
 
65
#include "Puma/Location.h"
 
66
#include "Puma/Printable.h"
 
67
#include "Puma/ListElement.h"
 
68
#include "Puma/Array.h"
 
69
#include <assert.h>
 
70
#include "Puma/DString.h"
 
71
#include "Puma/StrCol.h"
 
72
 
 
73
namespace Puma {
 
74
 
 
75
 
 
76
 
 
77
#line 78 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/inc/Puma/Token.h"
 
78
} // closed Puma
 
79
class WinIfExists;
 
80
class WinImportHandler;
 
81
class WinMacros;
 
82
class CMatchSyntax;
 
83
class ExtGnu;
 
84
class ExtAC;
 
85
class ExtACTree;
 
86
class WinAsm;
 
87
class WinDeclSpecs;
 
88
class WinMemberExplSpec;
 
89
class WinTypeKeywords;
 
90
class PragmaOnceUnitState;
 
91
class PragmaOnce;
 
92
class CCExprResolve;
 
93
class CExprResolve;
 
94
namespace Puma {
 
95
 
 
96
#line 39 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Token.h"
 
97
class Token : public ListElement {
 
98
#line 99 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/inc/Puma/Token.h"
 
99
  friend class ::WinIfExists;
 
100
  friend class ::WinImportHandler;
 
101
  friend class ::WinMacros;
 
102
  friend class ::CMatchSyntax;
 
103
  friend class ::ExtGnu;
 
104
  friend class ::ExtAC;
 
105
  friend class ::ExtACTree;
 
106
  friend class ::WinAsm;
 
107
  friend class ::WinDeclSpecs;
 
108
  friend class ::WinMemberExplSpec;
 
109
  friend class ::WinTypeKeywords;
 
110
  friend class ::PragmaOnceUnitState;
 
111
  friend class ::PragmaOnce;
 
112
  friend class ::CCExprResolve;
 
113
  friend class ::CExprResolve;
 
114
 
 
115
#line 39 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/inc/Puma/Token.h"
 
116
 
 
117
  int _type, _real_type;
 
118
 
 
119
  Location _location;
 
120
  LanguageID _language;
 
121
  DString _text;
 
122
 
 
123
  Array<int> *_cont_lines;
 
124
   
 
125
  enum TK_Flags {
 
126
          TK_COMMENT = (0x01 << 0),
 
127
          TK_CORE = (0x01 << 1),
 
128
          TK_MACRO_CALL = (0x01 << 2),
 
129
          TK_MACRO_GENERATED = (0x01 << 3)
 
130
  };
 
131
  unsigned short _flags;
 
132
 
 
133
public:
 
134
  enum {
 
135
    ID_END_OF_FILE = -1,
 
136
    ID_UNKNOWN = -2,
 
137
    ID_ERROR = -3,
 
138
    ID_WARNING = -4
 
139
  };
 
140
 
 
141
  static LanguageID comment_id, pre_id, dir_id, cpp_id, white_id, 
 
142
                    wildcard_id, keyword_id, open_id, macro_op_id,
 
143
                    identifier_id, comma_id, close_id;
 
144
 
 
145
public:
 
146
  Token (int = 0, LanguageID lang = LanguageID(0), const char * = "");
 
147
  Token (const Token &);
 
148
  virtual ~Token ();
 
149
 
 
150
//  virtual void print (ostream &) const;
 
151
  void print (ostream &) const;
 
152
  virtual ListElement *duplicate () { return new Token (*this); }
 
153
 
 
154
  void reset (int = 0, const char * = 0, LanguageID = LanguageID(0));
 
155
  
 
156
  void location (const Location &loc)      { _location = loc; }
 
157
  void cont_lines (Array<int> *cl)  { _cont_lines = cl; }
 
158
  int line_breaks () const;
 
159
  void macro_generated ()           { _flags |= TK_MACRO_GENERATED; }
 
160
  void macro_call ()                { _flags |= TK_MACRO_CALL; }
 
161
  
 
162
  const DString &text () const     { return _text; }
 
163
  char *get_static_text () const;
 
164
  int type () const                 { return _type; }
 
165
  const Location &location () const { return _location; }
 
166
   
 
167
  // functions to query token flags
 
168
  bool is_macro_generated () const  { return (_flags & TK_MACRO_GENERATED) != 0; }
 
169
  bool is_macro_call () const       { return (_flags & TK_MACRO_CALL) != 0; }
 
170
  bool is_core () const;
 
171
  bool is_identifier () const;    // subset of core
 
172
  bool is_keyword () const;       // subset of identifier
 
173
  bool is_wildcard () const;      // subset of core
 
174
  bool is_preprocessor () const;  // a preprocessor directive (include, etc.)
 
175
  bool is_directive () const;     // a compiler directive (pragma, line, etc.)
 
176
  bool is_whitespace () const;
 
177
  bool is_comment () const;
 
178
  bool is_macro_op () const;
 
179
  bool is_open () const;          // subset of core
 
180
  bool is_comma () const;         // subset of core
 
181
  bool is_close () const;         // subset of core
 
182
 
 
183
  void *operator new (size_t);
 
184
  void  operator delete (void *);
 
185
 
 
186
private:
 
187
  int get_general_type () const;
 
188
  LanguageID language () const { return _language; }
 
189
  void is_comment_internal ();
 
190
  void is_core_internal ();
 
191
};
 
192
 
 
193
 
 
194
inline void Token::is_core_internal () {
 
195
  if (_language == cpp_id || _language == wildcard_id || 
 
196
      _language == open_id || _language == comma_id || 
 
197
      _language == close_id || is_identifier ())
 
198
    _flags |= TK_CORE;
 
199
}
 
200
inline void Token::is_comment_internal () { 
 
201
  if (_language == comment_id) 
 
202
    _flags |= TK_COMMENT;
 
203
}
 
204
 
 
205
inline bool Token::is_core () const 
 
206
 { return (_flags & TK_CORE) != 0; }
 
207
inline bool Token::is_identifier () const 
 
208
 { return _language == identifier_id || is_keyword ();}
 
209
inline bool Token::is_keyword () const 
 
210
 { return _language == keyword_id; }
 
211
inline bool Token::is_wildcard () const 
 
212
 { return _language == wildcard_id; }
 
213
inline bool Token::is_preprocessor () const 
 
214
 { return _language == pre_id; }
 
215
inline bool Token::is_directive () const 
 
216
 { return _language == dir_id; }
 
217
inline bool Token::is_whitespace () const 
 
218
 { return _language == white_id; }
 
219
inline bool Token::is_comment () const 
 
220
 { return (_flags & TK_COMMENT) != 0; }
 
221
inline bool Token::is_macro_op () const 
 
222
 { return _language == macro_op_id; }
 
223
inline bool Token::is_open () const 
 
224
 { return _language == open_id; }
 
225
inline bool Token::is_comma () const 
 
226
 { return _language == comma_id; }
 
227
inline bool Token::is_close () const 
 
228
 { return _language == close_id; }
 
229
 
 
230
inline ostream &operator << (ostream &os, const Token &object) {
 
231
  object.print (os);
 
232
  return os;
 
233
}
 
234
 
 
235
} // namespace Puma
 
236
 
 
237
#endif /* __Token_h__ */
 
238
 
 
239
#line 240 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/inc/Puma/Token.h"
 
240
 
 
241
#ifdef __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_inc_Puma_Token_h__
 
242
/*** begin of aspect includes ***/
 
243
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__)
 
244
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
245
#include "WinIfExists.ah"
 
246
#endif
 
247
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinImportHandler_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinImportHandler_ah__)
 
248
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
249
#include "WinImportHandler.ah"
 
250
#endif
 
251
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMacros_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMacros_ah__)
 
252
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMacros_ah__
 
253
#include "WinMacros.ah"
 
254
#endif
 
255
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CMatchSyntax_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CMatchSyntax_ah__)
 
256
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
257
#include "CMatchSyntax.ah"
 
258
#endif
 
259
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtGnu_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtGnu_ah__)
 
260
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
261
#include "ExtGnu.ah"
 
262
#endif
 
263
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtAC_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtAC_ah__)
 
264
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtAC_ah__
 
265
#include "ExtAC.ah"
 
266
#endif
 
267
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtACTree_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtACTree_ah__)
 
268
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
269
#include "ExtACTree.ah"
 
270
#endif
 
271
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_TraceSyntax_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_TraceSyntax_ah__)
 
272
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
273
#include "TraceSyntax.ah"
 
274
#endif
 
275
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinAsm_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinAsm_ah__)
 
276
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinAsm_ah__
 
277
#include "WinAsm.ah"
 
278
#endif
 
279
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__)
 
280
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
281
#include "WinDeclSpecs.ah"
 
282
#endif
 
283
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__)
 
284
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
285
#include "WinMemberExplSpec.ah"
 
286
#endif
 
287
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__)
 
288
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
289
#include "WinTypeKeywords.ah"
 
290
#endif
 
291
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__)
 
292
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
293
#include "PragmaOnceUnitState.ah"
 
294
#endif
 
295
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnce_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnce_ah__)
 
296
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
297
#include "PragmaOnce.ah"
 
298
#endif
 
299
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CCExprResolve_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CCExprResolve_ah__)
 
300
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CCExprResolve_ah__
 
301
#include "CCExprResolve.ah"
 
302
#endif
 
303
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CExprResolve_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CExprResolve_ah__)
 
304
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CExprResolve_ah__
 
305
#include "CExprResolve.ah"
 
306
#endif
 
307
/*** end of aspect includes ***/
 
308
#undef __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
309
#undef __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_inc_Puma_Token_h__
 
310
#endif // __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_inc_Puma_Token_h__