~ubuntu-branches/ubuntu/jaunty/aspectc++/jaunty

« back to all changes in this revision

Viewing changes to Puma/gen-release/step2/src/CSemDatabase.cc

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2008-07-07 14:41:02 UTC
  • mfrom: (1.1.3 upstream) (6.1.1 lenny)
  • Revision ID: james.westby@ubuntu.com-20080707144102-lzml7t07f3sl00r5
Tags: 1.0pre4~svn.20080711-1
* new upstream snapshot.
* include all upstream documentation. Clarifying emails regarding
  licensing has been included into debian/copyright.
* reformat description following recomendations of
  http://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-Description
  (Closes: #480316)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
3
#ifndef __ac_FIRST__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1__
 
4
#define __ac_FIRST__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1__
 
5
#define __ac_FIRST_FILE__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_src_CSemDatabase_cc__
 
6
#endif // __ac_FIRST__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1__
 
7
 
 
8
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
9
 
 
10
#line 11 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11
 
 
12
#ifndef __ac_h_
 
13
#define __ac_h_
 
14
#ifdef __cplusplus
 
15
namespace AC {
 
16
  typedef const char* Type;
 
17
  enum JPType { CALL = 0x0004, EXECUTION = 0x0008, CONSTRUCTION = 0x0010, DESTRUCTION = 0x0020 };
 
18
  struct Action {
 
19
    void **_args; void *_result; void *_target; void *_that; void *_fptr;
 
20
    void (*_wrapper)(Action &);
 
21
    inline void trigger () { _wrapper (*this); }
 
22
  };
 
23
  struct AnyResultBuffer {};
 
24
  template <typename T> struct ResultBuffer : public AnyResultBuffer {
 
25
    char _data[sizeof (T)];
 
26
    ~ResultBuffer () { ((T*)_data)->T::~T(); }
 
27
    operator T& () const { return *(T*)_data; }
 
28
  };
 
29
  template <typename T, typename N> struct TL {
 
30
    typedef T type; typedef N next; enum { ARGS = next::ARGS + 1 };
 
31
  };
 
32
  struct TLE { enum { ARGS = 0 }; };
 
33
  template <typename T> struct Referred { typedef T type; };
 
34
  template <typename T> struct Referred<T &> { typedef T type; };
 
35
  template <typename TL, int I> struct Arg {
 
36
    typedef typename Arg<typename TL::next, I - 1>::Type Type;
 
37
    typedef typename Referred<Type>::type ReferredType;
 
38
  };
 
39
  template <typename TL> struct Arg<TL, 0> {
 
40
    typedef typename TL::type Type;
 
41
    typedef typename Referred<Type>::type ReferredType;
 
42
  };
 
43
  template <typename T> int ttest(...);
 
44
  template <typename T> char ttest(typename T::__AttrTypes const volatile *);
 
45
  template<typename T> struct HasTypeInfo {
 
46
    enum { RET=((sizeof(ttest<T>(0))==1)?1:0) };
 
47
  };
 
48
  template<typename T, int HAVE = HasTypeInfo<T>::RET> struct TypeInfo {
 
49
    enum { AVAILABLE = 0 };
 
50
  };
 
51
  template<typename T> struct TypeInfo<T, 1> {
 
52
    enum { AVAILABLE = 1 };
 
53
    enum { ELEMENTS = T::__AttrTypes::ARGS };
 
54
    template<int I>
 
55
    struct Member : public AC::Arg<typename T::__AttrTypes,I> {};
 
56
    template<int I>
 
57
    static typename Member<I>::ReferredType* member (T* obj) {
 
58
      return (typename Member<I>::ReferredType*)obj->__attr (I);
 
59
    }
 
60
    static const char *member_name (T &obj, int i) {
 
61
      return obj.__attr_name (i);
 
62
    }
 
63
         };
 
64
  template <class Aspect, int Index>
 
65
  struct CFlow {
 
66
    static int &instance () {
 
67
      static int counter = 0;
 
68
      return counter;
 
69
    }
 
70
    CFlow () { instance ()++; }
 
71
    ~CFlow () { instance ()--; }
 
72
    static bool active () { return instance () > 0; }
 
73
  };
 
74
}
 
75
inline void * operator new (__SIZE_TYPE__, AC::AnyResultBuffer *p) { return p; }
 
76
inline void operator delete (void *, AC::AnyResultBuffer *) { } // for VC++
 
77
#endif // __cplusplus
 
78
#endif // __ac_h_
 
79
 
 
80
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
81
 
 
82
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
83
 
 
84
#line 85 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85
 
 
86
#ifndef __ac_fwd_ExtAC__
 
87
#define __ac_fwd_ExtAC__
 
88
class ExtAC;
 
89
namespace AC {
 
90
  template <class JoinPoint>
 
91
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a0_before (JoinPoint *tjp);
 
92
  template <class JoinPoint>
 
93
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a1_after (JoinPoint *tjp);
 
94
  template <class JoinPoint>
 
95
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a2_around (JoinPoint *tjp);
 
96
  template <class JoinPoint>
 
97
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a3_around (JoinPoint *tjp);
 
98
  template <class JoinPoint>
 
99
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a4_after (JoinPoint *tjp);
 
100
  template <class JoinPoint>
 
101
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a5_around (JoinPoint *tjp);
 
102
  template <class JoinPoint>
 
103
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a6_after (JoinPoint *tjp);
 
104
  template <class JoinPoint>
 
105
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a7_around (JoinPoint *tjp);
 
106
  template <class JoinPoint>
 
107
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a8_after (JoinPoint *tjp);
 
108
  template <class JoinPoint>
 
109
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a9_before (JoinPoint *tjp);
 
110
  template <class JoinPoint>
 
111
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a10_after (JoinPoint *tjp);
 
112
  template <class JoinPoint>
 
113
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a11_after (JoinPoint *tjp);
 
114
}
 
115
#endif
 
116
 
 
117
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
 
118
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
 
119
#endif
 
120
 
 
121
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
122
// This file is part of PUMA.
 
123
// Copyright (C) 1999-2003  The PUMA developer team.
 
124
//                                                                
 
125
// This program is free software;  you can redistribute it and/or 
 
126
// modify it under the terms of the GNU General Public License as 
 
127
// published by the Free Software Foundation; either version 2 of 
 
128
// the License, or (at your option) any later version.            
 
129
//                                                                
 
130
// This program is distributed in the hope that it will be useful,
 
131
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
132
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
133
// GNU General Public License for more details.                   
 
134
//                                                                
 
135
// You should have received a copy of the GNU General Public      
 
136
// License along with this program; if not, write to the Free     
 
137
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
138
// MA  02111-1307  USA                                            
 
139
 
 
140
 
 
141
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumeratorInfo.h"
 
142
// This file is part of PUMA.
 
143
// Copyright (C) 1999-2003  The PUMA developer team.
 
144
//                                                                
 
145
// This program is free software;  you can redistribute it and/or 
 
146
// modify it under the terms of the GNU General Public License as 
 
147
// published by the Free Software Foundation; either version 2 of 
 
148
// the License, or (at your option) any later version.            
 
149
//                                                                
 
150
// This program is distributed in the hope that it will be useful,
 
151
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
152
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
153
// GNU General Public License for more details.                   
 
154
//                                                                
 
155
// You should have received a copy of the GNU General Public      
 
156
// License along with this program; if not, write to the Free     
 
157
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
158
// MA  02111-1307  USA                                            
 
159
 
 
160
#ifndef __CEnumeratorInfo_h__
 
161
#define __CEnumeratorInfo_h__
 
162
 
 
163
/** \file 
 
164
 *  Semantic information about an enumeration constant. */
 
165
 
 
166
 
 
167
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CAttributeInfo.h"
 
168
// This file is part of PUMA.
 
169
// Copyright (C) 1999-2003  The PUMA developer team.
 
170
//                                                                
 
171
// This program is free software;  you can redistribute it and/or 
 
172
// modify it under the terms of the GNU General Public License as 
 
173
// published by the Free Software Foundation; either version 2 of 
 
174
// the License, or (at your option) any later version.            
 
175
//                                                                
 
176
// This program is distributed in the hope that it will be useful,
 
177
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
178
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
179
// GNU General Public License for more details.                   
 
180
//                                                                
 
181
// You should have received a copy of the GNU General Public      
 
182
// License along with this program; if not, write to the Free     
 
183
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
184
// MA  02111-1307  USA                                            
 
185
 
 
186
#ifndef __CAttributeInfo_h__
 
187
#define __CAttributeInfo_h__
 
188
 
 
189
/** \file 
 
190
 *  Semantic information about local/global objects and class data members. */
 
191
 
 
192
 
 
193
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeRequest.h"
 
194
// This file is part of PUMA.
 
195
// Copyright (C) 1999-2003  The PUMA developer team.
 
196
//                                                                
 
197
// This program is free software;  you can redistribute it and/or 
 
198
// modify it under the terms of the GNU General Public License as 
 
199
// published by the Free Software Foundation; either version 2 of 
 
200
// the License, or (at your option) any later version.            
 
201
//                                                                
 
202
// This program is distributed in the hope that it will be useful,
 
203
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
204
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
205
// GNU General Public License for more details.                   
 
206
//                                                                
 
207
// You should have received a copy of the GNU General Public      
 
208
// License along with this program; if not, write to the Free     
 
209
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
210
// MA  02111-1307  USA                                            
 
211
 
 
212
#ifndef __CScopeRequest_h__
 
213
#define __CScopeRequest_h__
 
214
 
 
215
/** \file
 
216
 *  Additional scope information. */
 
217
 
 
218
 
 
219
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
220
// This file is part of PUMA.
 
221
// Copyright (C) 1999-2003  The PUMA developer team.
 
222
//                                                                
 
223
// This program is free software;  you can redistribute it and/or 
 
224
// modify it under the terms of the GNU General Public License as 
 
225
// published by the Free Software Foundation; either version 2 of 
 
226
// the License, or (at your option) any later version.            
 
227
//                                                                
 
228
// This program is distributed in the hope that it will be useful,
 
229
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
230
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
231
// GNU General Public License for more details.                   
 
232
//                                                                
 
233
// You should have received a copy of the GNU General Public      
 
234
// License along with this program; if not, write to the Free     
 
235
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
236
// MA  02111-1307  USA                                            
 
237
 
 
238
#ifndef __CObjectInfo_h__
 
239
#define __CObjectInfo_h__
 
240
 
 
241
/** \file
 
242
 *  Basic semantic information class. */
 
243
 
 
244
 
 
245
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSourceInfo.h"
 
246
// This file is part of PUMA.
 
247
// Copyright (C) 1999-2003  The PUMA developer team.
 
248
//                                                                
 
249
// This program is free software;  you can redistribute it and/or 
 
250
// modify it under the terms of the GNU General Public License as 
 
251
// published by the Free Software Foundation; either version 2 of 
 
252
// the License, or (at your option) any later version.            
 
253
//                                                                
 
254
// This program is distributed in the hope that it will be useful,
 
255
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
256
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
257
// GNU General Public License for more details.                   
 
258
//                                                                
 
259
// You should have received a copy of the GNU General Public      
 
260
// License along with this program; if not, write to the Free     
 
261
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
262
// MA  02111-1307  USA                                            
 
263
 
 
264
#ifndef __CSourceInfo_h__
 
265
#define __CSourceInfo_h__
 
266
 
 
267
/** \file
 
268
 *  Source file information. */
 
269
 
 
270
namespace Puma {
 
271
 
 
272
 
 
273
class CFileInfo;
 
274
class CT_Token;
 
275
class Token;
 
276
class Unit;
 
277
 
 
278
 
 
279
/** \class CSourceInfo CSourceInfo.h Puma/CSourceInfo.h
 
280
 *  Source file information for an entity. Stores the 
 
281
 *  file information and start token of the entity in
 
282
 *  the source file. */
 
283
 
 
284
#line 285 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
285
} // closed Puma
 
286
class CCExprResolve;
 
287
class CExprResolve;
 
288
class WinIfExists;
 
289
class WinImportHandler;
 
290
class WinMacros;
 
291
class WinAsm;
 
292
class WinDeclSpecs;
 
293
class WinMemberExplSpec;
 
294
class WinTypeKeywords;
 
295
class WinFriend;
 
296
class ExtAC;
 
297
class ExtACBuilderCoupling;
 
298
class ExtACSyntaxCoupling;
 
299
class ExtACTree;
 
300
class ExtACKeywords;
 
301
class ExtGnu;
 
302
class PragmaOnceUnitState;
 
303
class PragmaOnce;
 
304
class CMatchSyntax;
 
305
namespace Puma {
 
306
 
 
307
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSourceInfo.h"
 
308
class CSourceInfo {
 
309
#line 310 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
310
  friend class ::CCExprResolve;
 
311
  friend class ::CExprResolve;
 
312
  friend class ::WinIfExists;
 
313
  friend class ::WinImportHandler;
 
314
  friend class ::WinMacros;
 
315
  friend class ::WinAsm;
 
316
  friend class ::WinDeclSpecs;
 
317
  friend class ::WinMemberExplSpec;
 
318
  friend class ::WinTypeKeywords;
 
319
  friend class ::WinFriend;
 
320
  friend class ::ExtAC;
 
321
  friend class ::ExtACBuilderCoupling;
 
322
  friend class ::ExtACSyntaxCoupling;
 
323
  friend class ::ExtACTree;
 
324
  friend class ::ExtACKeywords;
 
325
  friend class ::ExtGnu;
 
326
  friend class ::PragmaOnceUnitState;
 
327
  friend class ::PragmaOnce;
 
328
  friend class ::CMatchSyntax;
 
329
 
 
330
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSourceInfo.h"
 
331
 
 
332
  CFileInfo *_FileInfo; 
 
333
  CT_Token *_StartToken;
 
334
 
 
335
public: 
 
336
  /** Constructor. */
 
337
  CSourceInfo ();
 
338
  /** Destructor. */
 
339
  ~CSourceInfo ();
 
340
  
 
341
  /** Check if the source file locations are equal. 
 
342
   *  \param si The source file location to compare with. */
 
343
  bool operator ==(const CSourceInfo &si) const;
 
344
  /** Check if the source file locations are not equal. 
 
345
   *  \param si The source file location to compare with. */
 
346
  bool operator !=(const CSourceInfo &si) const;
 
347
  /** Check if this source file location is before the given location. 
 
348
   *  \param si The source file location to compare with. */
 
349
  bool operator <(const CSourceInfo &si) const;
 
350
  /** Check if this source file location is behind the given location. 
 
351
   *  \param si The source file location to compare with. */
 
352
  bool operator >(const CSourceInfo &si) const;
 
353
  /** Check if this source file location equals or is before the given location. 
 
354
   *  \param si The source file location to compare with. */
 
355
  bool operator <=(const CSourceInfo &si) const;
 
356
  /** Check if this source file location equals or is behind the given location. 
 
357
   *  \param si The source file location to compare with. */
 
358
  bool operator >=(const CSourceInfo &si) const;
 
359
 
 
360
  /** Check if the source file locations are equal. 
 
361
   *  \param token The token in the source file to compare with. */
 
362
  bool operator ==(const CT_Token *token) const;
 
363
  /** Check if the source file locations are not equal. 
 
364
   *  \param token The token in the source file to compare with. */
 
365
  bool operator !=(const CT_Token *token) const;
 
366
  /** Check if this source file location is before the given location. 
 
367
   *  \param token The token in the source file to compare with. */
 
368
  bool operator <(const CT_Token *token) const;
 
369
  /** Check if this source file location is behind the given location. 
 
370
   *  \param token The token in the source file to compare with. */
 
371
  bool operator >(const CT_Token *token) const;
 
372
  /** Check if this source file location equals or is before the given location. 
 
373
   *  \param token The token in the source file to compare with. */
 
374
  bool operator <=(const CT_Token *token) const;
 
375
  /** Check if this source file location equals or is behind the given location. 
 
376
   *  \param token The token in the source file to compare with. */
 
377
  bool operator >=(const CT_Token *token) const;
 
378
 
 
379
  /** Check if the source file locations are equal. 
 
380
   *  \param token The token in the source file to compare with. */
 
381
  bool operator ==(const Token *token) const;
 
382
 
 
383
  /** Get the source file information. */
 
384
  CFileInfo *FileInfo () const;
 
385
  /** Get the start token of the entity in the source file. */
 
386
  CT_Token *StartToken () const;
 
387
  /** Get name of the source file. */
 
388
  const char *FileName () const;
 
389
  /** Get the line number of the entity in the source file. */
 
390
  int Line () const;
 
391
  /** Get the column number of the entity in the source file. */
 
392
  int Column () const;
 
393
  /** Get the token unit of the source file. */
 
394
  Unit *SrcUnit () const;
 
395
 
 
396
  /** Set the source file information. 
 
397
   *  \param file The source file. */
 
398
  void FileInfo (CFileInfo *file);
 
399
  /** Set the start token of the entity in the source file. 
 
400
   *  \param token The start token. */
 
401
  void StartToken (CT_Token *token);
 
402
public:
 
403
  typedef AC::TL<Puma::CFileInfo *,AC::TL<Puma::CT_Token *,AC::TLE > > __AttrTypes;
 
404
  const char *__attr_name (unsigned i) const {
 
405
    static const char *names[] = { "_FileInfo", "_StartToken" }; return names[i];
 
406
  }
 
407
  const void *__attr (unsigned __i) const {
 
408
    switch (__i) { case 0: return &_FileInfo; case 1: return &_StartToken; default: return 0; }
 
409
  }
 
410
#line 109 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSourceInfo.h"
 
411
};
 
412
 
 
413
inline CSourceInfo::CSourceInfo () :
 
414
  _FileInfo ((CFileInfo*)0),
 
415
  _StartToken ((CT_Token*)0)
 
416
 {}
 
417
 
 
418
inline CSourceInfo::~CSourceInfo ()
 
419
 {}
 
420
 
 
421
inline bool CSourceInfo::operator !=(const CSourceInfo &info) const 
 
422
 { return ! (*this == info); }
 
423
inline bool CSourceInfo::operator <=(const CSourceInfo &info) const 
 
424
 { return ! (*this > info); }
 
425
inline bool CSourceInfo::operator >=(const CSourceInfo &info) const 
 
426
 { return ! (*this < info); }
 
427
 
 
428
inline bool CSourceInfo::operator !=(const CT_Token *token) const 
 
429
 { return ! (*this == token); }
 
430
inline bool CSourceInfo::operator <=(const CT_Token *token) const 
 
431
 { return ! (*this > token); }
 
432
inline bool CSourceInfo::operator >=(const CT_Token *token) const 
 
433
 { return ! (*this < token); }
 
434
 
 
435
inline CFileInfo *CSourceInfo::FileInfo () const
 
436
 { return _FileInfo; }
 
437
inline CT_Token *CSourceInfo::StartToken () const
 
438
 { return _StartToken; }
 
439
 
 
440
inline void CSourceInfo::FileInfo (CFileInfo *info)
 
441
 { _FileInfo = info; }
 
442
inline void CSourceInfo::StartToken (CT_Token *token)
 
443
 { _StartToken = token; }
 
444
 
 
445
 
 
446
} // namespace Puma
 
447
 
 
448
#endif /* __CSourceInfo_h__ */
 
449
 
 
450
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProtection.h"
 
451
// This file is part of PUMA.
 
452
// Copyright (C) 1999-2003  The PUMA developer team.
 
453
//                                                                
 
454
// This program is free software;  you can redistribute it and/or 
 
455
// modify it under the terms of the GNU General Public License as 
 
456
// published by the Free Software Foundation; either version 2 of 
 
457
// the License, or (at your option) any later version.            
 
458
//                                                                
 
459
// This program is distributed in the hope that it will be useful,
 
460
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
461
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
462
// GNU General Public License for more details.                   
 
463
//                                                                
 
464
// You should have received a copy of the GNU General Public      
 
465
// License along with this program; if not, write to the Free     
 
466
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
467
// MA  02111-1307  USA                                            
 
468
 
 
469
#ifndef __CProtection_h__
 
470
#define __CProtection_h__
 
471
 
 
472
/** \file
 
473
 *  C++ class member protection. */
 
474
 
 
475
namespace Puma {
 
476
 
 
477
 
 
478
/** \class CProtection CProtection.h Puma/CProtection.h
 
479
 *  Access protection of C++ class members for the purpose
 
480
 *  of member access control. There are three kinds of
 
481
 *  protection: private, public, and protected. The
 
482
 *  protection either is defined implicitely or explicitely
 
483
 *  using member access specifiers. */
 
484
 
 
485
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
486
} // closed Puma
 
487
class CCExprResolve;
 
488
class CExprResolve;
 
489
class WinIfExists;
 
490
class WinImportHandler;
 
491
class WinMacros;
 
492
class WinAsm;
 
493
class WinDeclSpecs;
 
494
class WinMemberExplSpec;
 
495
class WinTypeKeywords;
 
496
class WinFriend;
 
497
class ExtAC;
 
498
class ExtACBuilderCoupling;
 
499
class ExtACSyntaxCoupling;
 
500
class ExtACTree;
 
501
class ExtACKeywords;
 
502
class ExtGnu;
 
503
class PragmaOnceUnitState;
 
504
class PragmaOnce;
 
505
class CMatchSyntax;
 
506
namespace Puma {
 
507
 
 
508
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProtection.h"
 
509
struct CProtection {
 
510
#line 511 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
511
  friend class ::CCExprResolve;
 
512
  friend class ::CExprResolve;
 
513
  friend class ::WinIfExists;
 
514
  friend class ::WinImportHandler;
 
515
  friend class ::WinMacros;
 
516
  friend class ::WinAsm;
 
517
  friend class ::WinDeclSpecs;
 
518
  friend class ::WinMemberExplSpec;
 
519
  friend class ::WinTypeKeywords;
 
520
  friend class ::WinFriend;
 
521
  friend class ::ExtAC;
 
522
  friend class ::ExtACBuilderCoupling;
 
523
  friend class ::ExtACSyntaxCoupling;
 
524
  friend class ::ExtACTree;
 
525
  friend class ::ExtACKeywords;
 
526
  friend class ::ExtGnu;
 
527
  friend class ::PragmaOnceUnitState;
 
528
  friend class ::PragmaOnce;
 
529
  friend class ::CMatchSyntax;
 
530
 
 
531
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProtection.h"
 
532
 
 
533
  /** The member access types. */
 
534
  enum Type {
 
535
    /** Public member access. */
 
536
    PROT_PUBLIC, 
 
537
    /** Protected member access. */
 
538
    PROT_PROTECTED, 
 
539
    /** Private member access. */
 
540
    PROT_PRIVATE,
 
541
    /** Undefined member access. */
 
542
    PROT_NONE
 
543
  };
 
544
public:
 
545
  typedef AC::TLE __AttrTypes;
 
546
  const char *__attr_name (unsigned i) const {
 
547
    static const char *names[] = {  }; return names[i];
 
548
  }
 
549
  const void *__attr (unsigned __i) const {
 
550
    switch (__i) { default: return 0; }
 
551
  }
 
552
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProtection.h"
 
553
};
 
554
 
 
555
 
 
556
} // namespace Puma
 
557
 
 
558
#endif /* __CProtection_h__ */
 
559
 
 
560
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStorage.h"
 
561
// This file is part of PUMA.
 
562
// Copyright (C) 1999-2003  The PUMA developer team.
 
563
//                                                                
 
564
// This program is free software;  you can redistribute it and/or 
 
565
// modify it under the terms of the GNU General Public License as 
 
566
// published by the Free Software Foundation; either version 2 of 
 
567
// the License, or (at your option) any later version.            
 
568
//                                                                
 
569
// This program is distributed in the hope that it will be useful,
 
570
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
571
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
572
// GNU General Public License for more details.                   
 
573
//                                                                
 
574
// You should have received a copy of the GNU General Public      
 
575
// License along with this program; if not, write to the Free     
 
576
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
577
// MA  02111-1307  USA                                            
 
578
 
 
579
#ifndef __CStorage_h__
 
580
#define __CStorage_h__
 
581
 
 
582
/** \file
 
583
 *  C/C++ object storage classes. */
 
584
 
 
585
namespace Puma {
 
586
 
 
587
 
 
588
/** \class CStorage CStorage.h Puma/CStorage.h
 
589
 *  Storage class of an object. Defines the minimum potential 
 
590
 *  lifetime of the storage containing the object. There are
 
591
 *  three different storage classes: static, automatic, and
 
592
 *  dynamic. */
 
593
 
 
594
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
595
} // closed Puma
 
596
class CCExprResolve;
 
597
class CExprResolve;
 
598
class WinIfExists;
 
599
class WinImportHandler;
 
600
class WinMacros;
 
601
class WinAsm;
 
602
class WinDeclSpecs;
 
603
class WinMemberExplSpec;
 
604
class WinTypeKeywords;
 
605
class WinFriend;
 
606
class ExtAC;
 
607
class ExtACBuilderCoupling;
 
608
class ExtACSyntaxCoupling;
 
609
class ExtACTree;
 
610
class ExtACKeywords;
 
611
class ExtGnu;
 
612
class PragmaOnceUnitState;
 
613
class PragmaOnce;
 
614
class CMatchSyntax;
 
615
namespace Puma {
 
616
 
 
617
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStorage.h"
 
618
struct CStorage {
 
619
#line 620 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
620
  friend class ::CCExprResolve;
 
621
  friend class ::CExprResolve;
 
622
  friend class ::WinIfExists;
 
623
  friend class ::WinImportHandler;
 
624
  friend class ::WinMacros;
 
625
  friend class ::WinAsm;
 
626
  friend class ::WinDeclSpecs;
 
627
  friend class ::WinMemberExplSpec;
 
628
  friend class ::WinTypeKeywords;
 
629
  friend class ::WinFriend;
 
630
  friend class ::ExtAC;
 
631
  friend class ::ExtACBuilderCoupling;
 
632
  friend class ::ExtACSyntaxCoupling;
 
633
  friend class ::ExtACTree;
 
634
  friend class ::ExtACKeywords;
 
635
  friend class ::ExtGnu;
 
636
  friend class ::PragmaOnceUnitState;
 
637
  friend class ::PragmaOnce;
 
638
  friend class ::CMatchSyntax;
 
639
 
 
640
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStorage.h"
 
641
 
 
642
  /** The storage classes. */
 
643
  enum Type {
 
644
    /** Static storage class. */
 
645
    CLASS_STATIC,
 
646
    /** Automatic storage class. */
 
647
    CLASS_AUTOMATIC, 
 
648
    /** Dynamic storage class. */
 
649
    CLASS_DYNAMIC,
 
650
    /** Undefined storage class. */
 
651
    CLASS_NONE
 
652
  };
 
653
public:
 
654
  typedef AC::TLE __AttrTypes;
 
655
  const char *__attr_name (unsigned i) const {
 
656
    static const char *names[] = {  }; return names[i];
 
657
  }
 
658
  const void *__attr (unsigned __i) const {
 
659
    switch (__i) { default: return 0; }
 
660
  }
 
661
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStorage.h"
 
662
};
 
663
 
 
664
 
 
665
} // namespace Puma
 
666
 
 
667
#endif /* __CStorage_h__ */
 
668
 
 
669
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CLinkage.h"
 
670
// This file is part of PUMA.
 
671
// Copyright (C) 1999-2003  The PUMA developer team.
 
672
//                                                                
 
673
// This program is free software;  you can redistribute it and/or 
 
674
// modify it under the terms of the GNU General Public License as 
 
675
// published by the Free Software Foundation; either version 2 of 
 
676
// the License, or (at your option) any later version.            
 
677
//                                                                
 
678
// This program is distributed in the hope that it will be useful,
 
679
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
680
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
681
// GNU General Public License for more details.                   
 
682
//                                                                
 
683
// You should have received a copy of the GNU General Public      
 
684
// License along with this program; if not, write to the Free     
 
685
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
686
// MA  02111-1307  USA                                            
 
687
 
 
688
#ifndef __CLinkage_h__
 
689
#define __CLinkage_h__
 
690
 
 
691
/** \file
 
692
 *  Entity name linkage. */
 
693
 
 
694
namespace Puma {
 
695
 
 
696
 
 
697
/** \class CLinkage CLinkage.h Puma/CLinkage.h
 
698
 *  Linkage of an entity name (object, function, etc). The 
 
699
 *  linkage controls where a name is visible. There are
 
700
 *  three types of linkage: internal, external, and
 
701
 *  no linkage. Names with external linkage are visible outside
 
702
 *  the object file where they occur. Names with internal or 
 
703
 *  no linkage are only visible in one object file.
 
704
 *
 
705
 *  The linkage is implicitely defined by the scope in which
 
706
 *  the entity is declared. With the linkage specifier 'extern'
 
707
 *  an entity name can be explicitely declared to have external 
 
708
 *  linkage. */
 
709
 
 
710
#line 711 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
711
} // closed Puma
 
712
class CCExprResolve;
 
713
class CExprResolve;
 
714
class WinIfExists;
 
715
class WinImportHandler;
 
716
class WinMacros;
 
717
class WinAsm;
 
718
class WinDeclSpecs;
 
719
class WinMemberExplSpec;
 
720
class WinTypeKeywords;
 
721
class WinFriend;
 
722
class ExtAC;
 
723
class ExtACBuilderCoupling;
 
724
class ExtACSyntaxCoupling;
 
725
class ExtACTree;
 
726
class ExtACKeywords;
 
727
class ExtGnu;
 
728
class PragmaOnceUnitState;
 
729
class PragmaOnce;
 
730
class CMatchSyntax;
 
731
namespace Puma {
 
732
 
 
733
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CLinkage.h"
 
734
struct CLinkage {
 
735
#line 736 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
736
  friend class ::CCExprResolve;
 
737
  friend class ::CExprResolve;
 
738
  friend class ::WinIfExists;
 
739
  friend class ::WinImportHandler;
 
740
  friend class ::WinMacros;
 
741
  friend class ::WinAsm;
 
742
  friend class ::WinDeclSpecs;
 
743
  friend class ::WinMemberExplSpec;
 
744
  friend class ::WinTypeKeywords;
 
745
  friend class ::WinFriend;
 
746
  friend class ::ExtAC;
 
747
  friend class ::ExtACBuilderCoupling;
 
748
  friend class ::ExtACSyntaxCoupling;
 
749
  friend class ::ExtACTree;
 
750
  friend class ::ExtACKeywords;
 
751
  friend class ::ExtGnu;
 
752
  friend class ::PragmaOnceUnitState;
 
753
  friend class ::PragmaOnce;
 
754
  friend class ::CMatchSyntax;
 
755
 
 
756
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CLinkage.h"
 
757
 
 
758
  /** The linkage types. */
 
759
  enum Type {
 
760
    /** Internal linkage. */
 
761
    LINK_INTERNAL,  
 
762
    /** External linkage. */
 
763
    LINK_EXTERNAL,  
 
764
    /** No linkage. */
 
765
    LINK_NONE       
 
766
  };
 
767
public:
 
768
  typedef AC::TLE __AttrTypes;
 
769
  const char *__attr_name (unsigned i) const {
 
770
    static const char *names[] = {  }; return names[i];
 
771
  }
 
772
  const void *__attr (unsigned __i) const {
 
773
    switch (__i) { default: return 0; }
 
774
  }
 
775
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CLinkage.h"
 
776
};
 
777
 
 
778
 
 
779
} // namespace Puma
 
780
 
 
781
#endif /* __CLinkage_h__ */
 
782
 
 
783
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
784
// This file is part of PUMA.
 
785
// Copyright (C) 1999-2003  The PUMA developer team.
 
786
//                                                                
 
787
// This program is free software;  you can redistribute it and/or 
 
788
// modify it under the terms of the GNU General Public License as 
 
789
// published by the Free Software Foundation; either version 2 of 
 
790
// the License, or (at your option) any later version.            
 
791
//                                                                
 
792
// This program is distributed in the hope that it will be useful,
 
793
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
794
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
795
// GNU General Public License for more details.                   
 
796
//                                                                
 
797
// You should have received a copy of the GNU General Public      
 
798
// License along with this program; if not, write to the Free     
 
799
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
800
// MA  02111-1307  USA                                            
 
801
 
 
802
#ifndef __CLanguage_h__
 
803
#define __CLanguage_h__
 
804
 
 
805
/** \file
 
806
 *  Entity name encoding. */
 
807
 
 
808
 
 
809
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
810
// This file is part of PUMA.
 
811
// Copyright (C) 1999-2003  The PUMA developer team.
 
812
//                                                                
 
813
// This program is free software;  you can redistribute it and/or 
 
814
// modify it under the terms of the GNU General Public License as 
 
815
// published by the Free Software Foundation; either version 2 of 
 
816
// the License, or (at your option) any later version.            
 
817
//                                                                
 
818
// This program is distributed in the hope that it will be useful,
 
819
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
820
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
821
// GNU General Public License for more details.                   
 
822
//                                                                
 
823
// You should have received a copy of the GNU General Public      
 
824
// License along with this program; if not, write to the Free     
 
825
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
826
// MA  02111-1307  USA                                            
 
827
 
 
828
#ifndef __DString_h__
 
829
#define __DString_h__
 
830
 
 
831
/** \file
 
832
 *  Global hash table based string container. */
 
833
 
 
834
 
 
835
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
836
// This file is part of PUMA.
 
837
// Copyright (C) 1999-2003  The PUMA developer team.
 
838
//                                                                
 
839
// This program is free software;  you can redistribute it and/or 
 
840
// modify it under the terms of the GNU General Public License as 
 
841
// published by the Free Software Foundation; either version 2 of 
 
842
// the License, or (at your option) any later version.            
 
843
//                                                                
 
844
// This program is distributed in the hope that it will be useful,
 
845
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
846
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
847
// GNU General Public License for more details.                   
 
848
//                                                                
 
849
// You should have received a copy of the GNU General Public      
 
850
// License along with this program; if not, write to the Free     
 
851
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
852
// MA  02111-1307  USA                                            
 
853
 
 
854
#ifndef __StrHashTable_h__
 
855
#define __StrHashTable_h__
 
856
 
 
857
 
 
858
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
859
// This file is part of PUMA.
 
860
// Copyright (C) 1999-2003  The PUMA developer team.
 
861
//                                                                
 
862
// This program is free software;  you can redistribute it and/or 
 
863
// modify it under the terms of the GNU General Public License as 
 
864
// published by the Free Software Foundation; either version 2 of 
 
865
// the License, or (at your option) any later version.            
 
866
//                                                                
 
867
// This program is distributed in the hope that it will be useful,
 
868
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
869
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
870
// GNU General Public License for more details.                   
 
871
//                                                                
 
872
// You should have received a copy of the GNU General Public      
 
873
// License along with this program; if not, write to the Free     
 
874
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
875
// MA  02111-1307  USA                                            
 
876
 
 
877
#ifndef __StrHashKey_h__
 
878
#define __StrHashKey_h__
 
879
 
 
880
 
 
881
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
882
// This file is part of PUMA.
 
883
// Copyright (C) 1999-2003  The PUMA developer team.
 
884
//                                                                
 
885
// This program is free software;  you can redistribute it and/or 
 
886
// modify it under the terms of the GNU General Public License as 
 
887
// published by the Free Software Foundation; either version 2 of 
 
888
// the License, or (at your option) any later version.            
 
889
//                                                                
 
890
// This program is distributed in the hope that it will be useful,
 
891
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
892
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
893
// GNU General Public License for more details.                   
 
894
//                                                                
 
895
// You should have received a copy of the GNU General Public      
 
896
// License along with this program; if not, write to the Free     
 
897
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
898
// MA  02111-1307  USA                                            
 
899
 
 
900
#ifndef __str_col__
 
901
#define __str_col__
 
902
 
 
903
// Collection of functions handling strings.
 
904
 
 
905
namespace Puma {
 
906
 
 
907
 
 
908
class Unit;
 
909
 
 
910
 
 
911
#line 912 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
912
} // closed Puma
 
913
class CCExprResolve;
 
914
class CExprResolve;
 
915
class WinIfExists;
 
916
class WinImportHandler;
 
917
class WinMacros;
 
918
class WinAsm;
 
919
class WinDeclSpecs;
 
920
class WinMemberExplSpec;
 
921
class WinTypeKeywords;
 
922
class WinFriend;
 
923
class ExtAC;
 
924
class ExtACBuilderCoupling;
 
925
class ExtACSyntaxCoupling;
 
926
class ExtACTree;
 
927
class ExtACKeywords;
 
928
class ExtGnu;
 
929
class PragmaOnceUnitState;
 
930
class PragmaOnce;
 
931
class CMatchSyntax;
 
932
namespace Puma {
 
933
 
 
934
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
935
class StrCol {
 
936
#line 937 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
937
  friend class ::CCExprResolve;
 
938
  friend class ::CExprResolve;
 
939
  friend class ::WinIfExists;
 
940
  friend class ::WinImportHandler;
 
941
  friend class ::WinMacros;
 
942
  friend class ::WinAsm;
 
943
  friend class ::WinDeclSpecs;
 
944
  friend class ::WinMemberExplSpec;
 
945
  friend class ::WinTypeKeywords;
 
946
  friend class ::WinFriend;
 
947
  friend class ::ExtAC;
 
948
  friend class ::ExtACBuilderCoupling;
 
949
  friend class ::ExtACSyntaxCoupling;
 
950
  friend class ::ExtACTree;
 
951
  friend class ::ExtACKeywords;
 
952
  friend class ::ExtGnu;
 
953
  friend class ::PragmaOnceUnitState;
 
954
  friend class ::PragmaOnce;
 
955
  friend class ::CMatchSyntax;
 
956
 
 
957
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
958
 
 
959
protected:
 
960
  StrCol () {}
 
961
        
 
962
public:
 
963
  // Return true if c is a white space character.
 
964
  static bool isSpace (const char c);
 
965
 
 
966
  // Return true if the string consists only of spaces.
 
967
  static bool onlySpaces (const char *);
 
968
 
 
969
  // Return true if the two strings differ not only in spaces.
 
970
  static bool effectivelyDifferent (const char *, const char *);
 
971
 
 
972
  // Build a string from a unit.
 
973
  static char *buildString (Unit *);
 
974
        
 
975
  // Duplicate a string
 
976
  static char *dup (const char *);
 
977
  static char *dup (const char *, int);
 
978
public:
 
979
  typedef AC::TLE __AttrTypes;
 
980
  const char *__attr_name (unsigned i) const { return 0; }
 
981
  const void *__attr (unsigned __i) const { return 0; }
 
982
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
983
};
 
984
 
 
985
 
 
986
} // namespace Puma
 
987
 
 
988
#endif /* __str_col__ */
 
989
 
 
990
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Chain.h"
 
991
// This file is part of PUMA.
 
992
// Copyright (C) 1999-2003  The PUMA developer team.
 
993
//                                                                
 
994
// This program is free software;  you can redistribute it and/or 
 
995
// modify it under the terms of the GNU General Public License as 
 
996
// published by the Free Software Foundation; either version 2 of 
 
997
// the License, or (at your option) any later version.            
 
998
//                                                                
 
999
// This program is distributed in the hope that it will be useful,
 
1000
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1001
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1002
// GNU General Public License for more details.                   
 
1003
//                                                                
 
1004
// You should have received a copy of the GNU General Public      
 
1005
// License along with this program; if not, write to the Free     
 
1006
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1007
// MA  02111-1307  USA                                            
 
1008
 
 
1009
#ifndef __Chain_h__
 
1010
#define __Chain_h__
 
1011
 
 
1012
//
 
1013
// implements a simple chain
 
1014
// 
 
1015
 
 
1016
#ifndef __puma
 
1017
#include <iostream>
 
1018
using namespace std;
 
1019
#endif 
 
1020
 
 
1021
namespace Puma {
 
1022
 
 
1023
 
 
1024
 
 
1025
#line 1026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1026
} // closed Puma
 
1027
class CCExprResolve;
 
1028
class CExprResolve;
 
1029
class WinIfExists;
 
1030
class WinImportHandler;
 
1031
class WinMacros;
 
1032
class WinAsm;
 
1033
class WinDeclSpecs;
 
1034
class WinMemberExplSpec;
 
1035
class WinTypeKeywords;
 
1036
class WinFriend;
 
1037
class ExtAC;
 
1038
class ExtACBuilderCoupling;
 
1039
class ExtACSyntaxCoupling;
 
1040
class ExtACTree;
 
1041
class ExtACKeywords;
 
1042
class ExtGnu;
 
1043
class PragmaOnceUnitState;
 
1044
class PragmaOnce;
 
1045
class CMatchSyntax;
 
1046
namespace Puma {
 
1047
 
 
1048
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1049
class Chain {
 
1050
#line 1051 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1051
  friend class ::CCExprResolve;
 
1052
  friend class ::CExprResolve;
 
1053
  friend class ::WinIfExists;
 
1054
  friend class ::WinImportHandler;
 
1055
  friend class ::WinMacros;
 
1056
  friend class ::WinAsm;
 
1057
  friend class ::WinDeclSpecs;
 
1058
  friend class ::WinMemberExplSpec;
 
1059
  friend class ::WinTypeKeywords;
 
1060
  friend class ::WinFriend;
 
1061
  friend class ::ExtAC;
 
1062
  friend class ::ExtACBuilderCoupling;
 
1063
  friend class ::ExtACSyntaxCoupling;
 
1064
  friend class ::ExtACTree;
 
1065
  friend class ::ExtACKeywords;
 
1066
  friend class ::ExtGnu;
 
1067
  friend class ::PragmaOnceUnitState;
 
1068
  friend class ::PragmaOnce;
 
1069
  friend class ::CMatchSyntax;
 
1070
 
 
1071
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1072
 
 
1073
  Chain *next;
 
1074
 
 
1075
public:
 
1076
  Chain () { next = 0; }
 
1077
   
 
1078
  void select (Chain *c) { next = c; }
 
1079
  Chain *select () const { return next; }
 
1080
 
 
1081
  Chain *unlink () {
 
1082
    Chain *res = next;
 
1083
    if (next) {
 
1084
      next = next->select ();
 
1085
    }
 
1086
    return res;
 
1087
  }
 
1088
 
 
1089
  void insert (Chain *c) {
 
1090
    c->select (next);
 
1091
    next = c;
 
1092
  }
 
1093
public:
 
1094
  typedef AC::TL<Puma::Chain *,AC::TLE > __AttrTypes;
 
1095
  const char *__attr_name (unsigned i) const {
 
1096
    static const char *names[] = { "next" }; return names[i];
 
1097
  }
 
1098
  const void *__attr (unsigned __i) const {
 
1099
    switch (__i) { case 0: return &next; default: return 0; }
 
1100
  }
 
1101
#line 55 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1102
};
 
1103
 
 
1104
#ifndef __puma
 
1105
 
 
1106
 
 
1107
//
 
1108
// Chain with useage/max counter
 
1109
// 
 
1110
 
 
1111
class ChainCnt : public Chain {
 
1112
  const char* name;
 
1113
 
 
1114
public:
 
1115
  long long max, use;
 
1116
  
 
1117
  ChainCnt (const char *n) : name (n) { max = use = 0; }
 
1118
  ~ChainCnt () {
 
1119
    cout << "max list " << name << ": " << max << endl;
 
1120
  }
 
1121
 
 
1122
  Chain *unlink () {
 
1123
    Chain *c = Chain::unlink ();
 
1124
    if (c) 
 
1125
      use--;
 
1126
    return c;
 
1127
  }
 
1128
  
 
1129
  void insert (Chain *c) {
 
1130
    use++;
 
1131
    if(use > max) 
 
1132
      max = use;
 
1133
    Chain::insert (c);
 
1134
  }
 
1135
};
 
1136
 
 
1137
#endif /* __puma */
 
1138
 
 
1139
 
 
1140
} // namespace Puma
 
1141
 
 
1142
#endif /* __Chain_h__ */
 
1143
 
 
1144
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1145
namespace Puma {
 
1146
 
 
1147
 
 
1148
 
 
1149
#line 1150 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1150
} // closed Puma
 
1151
class CCExprResolve;
 
1152
class CExprResolve;
 
1153
class WinIfExists;
 
1154
class WinImportHandler;
 
1155
class WinMacros;
 
1156
class WinAsm;
 
1157
class WinDeclSpecs;
 
1158
class WinMemberExplSpec;
 
1159
class WinTypeKeywords;
 
1160
class WinFriend;
 
1161
class ExtAC;
 
1162
class ExtACBuilderCoupling;
 
1163
class ExtACSyntaxCoupling;
 
1164
class ExtACTree;
 
1165
class ExtACKeywords;
 
1166
class ExtGnu;
 
1167
class PragmaOnceUnitState;
 
1168
class PragmaOnce;
 
1169
class CMatchSyntax;
 
1170
namespace Puma {
 
1171
 
 
1172
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1173
class StrHashKey : public Chain {
 
1174
#line 1175 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1175
  friend class ::CCExprResolve;
 
1176
  friend class ::CExprResolve;
 
1177
  friend class ::WinIfExists;
 
1178
  friend class ::WinImportHandler;
 
1179
  friend class ::WinMacros;
 
1180
  friend class ::WinAsm;
 
1181
  friend class ::WinDeclSpecs;
 
1182
  friend class ::WinMemberExplSpec;
 
1183
  friend class ::WinTypeKeywords;
 
1184
  friend class ::WinFriend;
 
1185
  friend class ::ExtAC;
 
1186
  friend class ::ExtACBuilderCoupling;
 
1187
  friend class ::ExtACSyntaxCoupling;
 
1188
  friend class ::ExtACTree;
 
1189
  friend class ::ExtACKeywords;
 
1190
  friend class ::ExtGnu;
 
1191
  friend class ::PragmaOnceUnitState;
 
1192
  friend class ::PragmaOnce;
 
1193
  friend class ::CMatchSyntax;
 
1194
 
 
1195
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1196
 
 
1197
  unsigned int m_Magic;
 
1198
  unsigned int m_Len;
 
1199
  const char  *m_Str;
 
1200
 
 
1201
  StrHashKey () : m_Len (0), m_Str (0) {}
 
1202
 
 
1203
public:
 
1204
  StrHashKey (int m, const char *s, int l) : 
 
1205
    m_Magic (m), m_Len (l), m_Str (StrCol::dup (s, l)) {}
 
1206
  ~StrHashKey () { if (m_Str) delete[] m_Str; }
 
1207
 
 
1208
  unsigned int getMagic () const { return m_Magic; }
 
1209
  unsigned int length () const { return m_Len; }
 
1210
  const char  *c_str () const { return m_Str; }
 
1211
public:
 
1212
  typedef AC::TL<unsigned int,AC::TL<unsigned int,AC::TL<const char *,AC::TLE > > > __AttrTypes;
 
1213
  const char *__attr_name (unsigned i) const {
 
1214
    static const char *names[] = { "m_Magic", "m_Len", "m_Str" }; return names[i];
 
1215
  }
 
1216
  const void *__attr (unsigned __i) const {
 
1217
    switch (__i) { case 0: return &m_Magic; case 1: return &m_Len; case 2: return &m_Str; default: return 0; }
 
1218
  }
 
1219
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1220
};
 
1221
 
 
1222
 
 
1223
} // namespace Puma
 
1224
 
 
1225
#endif /* __StrHashKey_h__ */
 
1226
 
 
1227
#line 23 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1228
#include <assert.h>
 
1229
 
 
1230
namespace Puma {
 
1231
 
 
1232
 
 
1233
 
 
1234
#line 1235 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1235
} // closed Puma
 
1236
class CCExprResolve;
 
1237
class CExprResolve;
 
1238
class WinIfExists;
 
1239
class WinImportHandler;
 
1240
class WinMacros;
 
1241
class WinAsm;
 
1242
class WinDeclSpecs;
 
1243
class WinMemberExplSpec;
 
1244
class WinTypeKeywords;
 
1245
class WinFriend;
 
1246
class ExtAC;
 
1247
class ExtACBuilderCoupling;
 
1248
class ExtACSyntaxCoupling;
 
1249
class ExtACTree;
 
1250
class ExtACKeywords;
 
1251
class ExtGnu;
 
1252
class PragmaOnceUnitState;
 
1253
class PragmaOnce;
 
1254
class CMatchSyntax;
 
1255
namespace Puma {
 
1256
 
 
1257
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1258
class StrHashTable {
 
1259
#line 1260 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1260
  friend class ::CCExprResolve;
 
1261
  friend class ::CExprResolve;
 
1262
  friend class ::WinIfExists;
 
1263
  friend class ::WinImportHandler;
 
1264
  friend class ::WinMacros;
 
1265
  friend class ::WinAsm;
 
1266
  friend class ::WinDeclSpecs;
 
1267
  friend class ::WinMemberExplSpec;
 
1268
  friend class ::WinTypeKeywords;
 
1269
  friend class ::WinFriend;
 
1270
  friend class ::ExtAC;
 
1271
  friend class ::ExtACBuilderCoupling;
 
1272
  friend class ::ExtACSyntaxCoupling;
 
1273
  friend class ::ExtACTree;
 
1274
  friend class ::ExtACKeywords;
 
1275
  friend class ::ExtGnu;
 
1276
  friend class ::PragmaOnceUnitState;
 
1277
  friend class ::PragmaOnce;
 
1278
  friend class ::CMatchSyntax;
 
1279
 
 
1280
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1281
 
 
1282
  StrHashKey *_emptyKey;
 
1283
 
 
1284
public:
 
1285
  StrHashTable () {
 
1286
    _emptyKey = insert ("");
 
1287
    assert (_emptyKey);
 
1288
  }
 
1289
 
 
1290
  StrHashKey *empty () const { assert (_emptyKey); return _emptyKey; }
 
1291
  StrHashKey *insert (const char *);
 
1292
  void remove (StrHashKey *);
 
1293
  void clear ();
 
1294
 
 
1295
  enum { STRHASHTABLE_SIZE=0xffff };
 
1296
  
 
1297
private:
 
1298
  Chain m_Table[STRHASHTABLE_SIZE];
 
1299
 
 
1300
  StrHashKey *find (unsigned int, const char *, unsigned int);
 
1301
  unsigned int hash (const char *, unsigned int &);
 
1302
public:
 
1303
  typedef AC::TL<Puma::StrHashKey *,AC::TL<Puma::Chain [65535],AC::TLE > > __AttrTypes;
 
1304
  const char *__attr_name (unsigned i) const {
 
1305
    static const char *names[] = { "_emptyKey", "m_Table" }; return names[i];
 
1306
  }
 
1307
  const void *__attr (unsigned __i) const {
 
1308
    switch (__i) { case 0: return &_emptyKey; case 2: return &m_Table; default: return 0; }
 
1309
  }
 
1310
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1311
};
 
1312
 
 
1313
 
 
1314
} // namespace Puma
 
1315
 
 
1316
#endif /* __StrHashTable_h__ */
 
1317
 
 
1318
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
1319
#include <assert.h>
 
1320
 
 
1321
namespace Puma {
 
1322
 
 
1323
 
 
1324
/** Global string hash table used by Puma::DString. */
 
1325
extern StrHashTable ___str_dict;
 
1326
 
 
1327
 
 
1328
/** \class DString DString.h Puma/DString.h
 
1329
 *  Global hash table based string container. */
 
1330
 
 
1331
#line 1332 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1332
} // closed Puma
 
1333
class CCExprResolve;
 
1334
class CExprResolve;
 
1335
class WinIfExists;
 
1336
class WinImportHandler;
 
1337
class WinMacros;
 
1338
class WinAsm;
 
1339
class WinDeclSpecs;
 
1340
class WinMemberExplSpec;
 
1341
class WinTypeKeywords;
 
1342
class WinFriend;
 
1343
class ExtAC;
 
1344
class ExtACBuilderCoupling;
 
1345
class ExtACSyntaxCoupling;
 
1346
class ExtACTree;
 
1347
class ExtACKeywords;
 
1348
class ExtGnu;
 
1349
class PragmaOnceUnitState;
 
1350
class PragmaOnce;
 
1351
class CMatchSyntax;
 
1352
namespace Puma {
 
1353
 
 
1354
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
1355
class DString {
 
1356
#line 1357 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1357
  friend class ::CCExprResolve;
 
1358
  friend class ::CExprResolve;
 
1359
  friend class ::WinIfExists;
 
1360
  friend class ::WinImportHandler;
 
1361
  friend class ::WinMacros;
 
1362
  friend class ::WinAsm;
 
1363
  friend class ::WinDeclSpecs;
 
1364
  friend class ::WinMemberExplSpec;
 
1365
  friend class ::WinTypeKeywords;
 
1366
  friend class ::WinFriend;
 
1367
  friend class ::ExtAC;
 
1368
  friend class ::ExtACBuilderCoupling;
 
1369
  friend class ::ExtACSyntaxCoupling;
 
1370
  friend class ::ExtACTree;
 
1371
  friend class ::ExtACKeywords;
 
1372
  friend class ::ExtGnu;
 
1373
  friend class ::PragmaOnceUnitState;
 
1374
  friend class ::PragmaOnce;
 
1375
  friend class ::CMatchSyntax;
 
1376
 
 
1377
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
1378
 
 
1379
  StrHashKey *m_Key;
 
1380
 
 
1381
public:
 
1382
  /** Constructor. */
 
1383
  DString () {
 
1384
    m_Key = ___str_dict.empty ();
 
1385
    assert (m_Key);
 
1386
  }
 
1387
  /** Constructor.
 
1388
   *  \param s The string, is put into the hash table. */
 
1389
  DString (const char *s) {
 
1390
    if(s == 0) {
 
1391
      m_Key = ___str_dict.empty ();
 
1392
    } else {
 
1393
      m_Key = ___str_dict.insert (s);
 
1394
    }
 
1395
    assert (m_Key);
 
1396
  }
 
1397
  /** Copy constructor.
 
1398
   *  \param s The string to copy. */
 
1399
  DString (const DString &s) : m_Key (s.m_Key) {
 
1400
    assert (s.m_Key);
 
1401
  }
 
1402
  /** Destructor. */
 
1403
  ~DString () {
 
1404
    m_Key = 0;
 
1405
  }
 
1406
  
 
1407
  /** Assignment operator.
 
1408
   *  \param s The string to copy. */
 
1409
  DString &operator = (const DString &s) {
 
1410
    assert (s.m_Key);
 
1411
    m_Key = s.m_Key;
 
1412
    return *this;
 
1413
  }
 
1414
  
 
1415
  /** Assignment operator.
 
1416
   *  \param s The string to copy. */
 
1417
  DString &operator = (const char *s) {
 
1418
    if(s == 0) {
 
1419
      m_Key = ___str_dict.empty ();
 
1420
    } else {
 
1421
      m_Key = ___str_dict.insert (s);
 
1422
    }
 
1423
    assert (m_Key);
 
1424
    return *this;
 
1425
  }
 
1426
 
 
1427
  /** Check if the given string equals this string.
 
1428
   *  \param s The string to compare with. */
 
1429
  bool operator == (const DString &s) const { 
 
1430
    assert (m_Key && s.m_Key);
 
1431
    return m_Key == s.m_Key; 
 
1432
  }
 
1433
  /** Check if the given string not equals this string.
 
1434
   *  \param s The string to compare with. */
 
1435
  bool operator != (const DString &s) const { 
 
1436
    assert (m_Key && s.m_Key);
 
1437
    return m_Key != s.m_Key; 
 
1438
  }
 
1439
 
 
1440
  /** Get the contained C string. */
 
1441
  const char *c_str() const { 
 
1442
    assert (m_Key);
 
1443
    return m_Key->c_str (); 
 
1444
  }
 
1445
  /** Get the length of the string. */
 
1446
  unsigned int length () const { 
 
1447
    assert (m_Key);
 
1448
    return m_Key->length (); 
 
1449
  }
 
1450
  /** Check if the string is empty (length=0). */
 
1451
  bool empty () const {
 
1452
    assert (m_Key);
 
1453
    return m_Key->length () == 0;
 
1454
  }
 
1455
  /** Get the magic number of the string. */
 
1456
  unsigned int magic () const { 
 
1457
    assert (m_Key);
 
1458
    return m_Key->getMagic (); 
 
1459
  }
 
1460
 
 
1461
  /** Get the contained C string. */
 
1462
  operator const char *() const {
 
1463
    assert (m_Key);
 
1464
    return c_str ();
 
1465
  }
 
1466
  
 
1467
  /** Clear the global string hash table. */
 
1468
  static void clearDict() {
 
1469
    ___str_dict.clear ();
 
1470
  }
 
1471
public:
 
1472
  typedef AC::TL<Puma::StrHashKey *,AC::TLE > __AttrTypes;
 
1473
  const char *__attr_name (unsigned i) const {
 
1474
    static const char *names[] = { "m_Key" }; return names[i];
 
1475
  }
 
1476
  const void *__attr (unsigned __i) const {
 
1477
    switch (__i) { case 0: return &m_Key; default: return 0; }
 
1478
  }
 
1479
#line 130 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
1480
};
 
1481
 
 
1482
 
 
1483
} // namespace Puma
 
1484
 
 
1485
#endif /* __DString_h__ */
 
1486
 
 
1487
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
1488
namespace Puma {
 
1489
 
 
1490
 
 
1491
/** \class CLanguage CLanguage.h Puma/CLanguage.h
 
1492
 *  Language specific encoding of entity names. The language
 
1493
 *  is specified using the 'extern' linkage specifier.
 
1494
 *
 
1495
 *  Following languages are supported: "C", "C++". C entity 
 
1496
 *  names are not encoded. C++ entity names usually are encoded
 
1497
 *  according to the C++ V3 ABI mangling (see 
 
1498
 *  http://www.codesourcery.com/cxx-abi/abi.html#mangling).
 
1499
 *
 
1500
 *  Example: 
 
1501
 *  \code 
 
1502
 * void foo(char);             // encoded as: _Z3fooc
 
1503
 * extern "C" void bar(int);   // encoded as: bar
 
1504
 *  \endcode */
 
1505
 
 
1506
#line 1507 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1507
} // closed Puma
 
1508
class CCExprResolve;
 
1509
class CExprResolve;
 
1510
class WinIfExists;
 
1511
class WinImportHandler;
 
1512
class WinMacros;
 
1513
class WinAsm;
 
1514
class WinDeclSpecs;
 
1515
class WinMemberExplSpec;
 
1516
class WinTypeKeywords;
 
1517
class WinFriend;
 
1518
class ExtAC;
 
1519
class ExtACBuilderCoupling;
 
1520
class ExtACSyntaxCoupling;
 
1521
class ExtACTree;
 
1522
class ExtACKeywords;
 
1523
class ExtGnu;
 
1524
class PragmaOnceUnitState;
 
1525
class PragmaOnce;
 
1526
class CMatchSyntax;
 
1527
namespace Puma {
 
1528
 
 
1529
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
1530
class CLanguage {
 
1531
#line 1532 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1532
  friend class ::CCExprResolve;
 
1533
  friend class ::CExprResolve;
 
1534
  friend class ::WinIfExists;
 
1535
  friend class ::WinImportHandler;
 
1536
  friend class ::WinMacros;
 
1537
  friend class ::WinAsm;
 
1538
  friend class ::WinDeclSpecs;
 
1539
  friend class ::WinMemberExplSpec;
 
1540
  friend class ::WinTypeKeywords;
 
1541
  friend class ::WinFriend;
 
1542
  friend class ::ExtAC;
 
1543
  friend class ::ExtACBuilderCoupling;
 
1544
  friend class ::ExtACSyntaxCoupling;
 
1545
  friend class ::ExtACTree;
 
1546
  friend class ::ExtACKeywords;
 
1547
  friend class ::ExtGnu;
 
1548
  friend class ::PragmaOnceUnitState;
 
1549
  friend class ::PragmaOnce;
 
1550
  friend class ::CMatchSyntax;
 
1551
 
 
1552
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
1553
 
 
1554
public:
 
1555
  /** Entity language encoding types. */
 
1556
  enum LangType {
 
1557
    /** Language C. */
 
1558
    LANG_C,           
 
1559
    /** Language C++. */
 
1560
    LANG_CPLUSPLUS,   
 
1561
    /** Neither C nor C++. */
 
1562
    LANG_OTHER,       
 
1563
    /** No explicit language encoding. */
 
1564
    LANG_UNDEFINED    
 
1565
  };
 
1566
    
 
1567
private:
 
1568
  LangType m_Type;
 
1569
  DString m_Text;
 
1570
 
 
1571
public:
 
1572
  /** Constructor. */
 
1573
  CLanguage () : m_Type (LANG_UNDEFINED), m_Text ("") {}
 
1574
  
 
1575
  /** Set the language encoding type.
 
1576
   *  \param lt The language type. */
 
1577
  void Type (LangType lt) { 
 
1578
    m_Type = lt; m_Text = (lt==LANG_C)?"C":(lt==LANG_CPLUSPLUS)?"C++":""; 
 
1579
  }
 
1580
  /** Set the language encoding type.
 
1581
   *  \param lt The language type.
 
1582
   *  \param txt The language identifier for languages other than C or C++. */
 
1583
  void Type (LangType lt, const char *txt) { 
 
1584
    m_Type = lt; m_Text = (lt==LANG_C)?"C":(lt==LANG_CPLUSPLUS)?"C++":(lt==LANG_OTHER)?txt:""; 
 
1585
  }
 
1586
 
 
1587
  /** Get the language type. */
 
1588
  LangType Type () const { return m_Type; }
 
1589
  /** Get the language identifier like "C" or "C++".
 
1590
   *  \return The language identifier or the empty string. */
 
1591
  const DString &Text () const { return m_Text; }
 
1592
 
 
1593
  /** Compare two language encodings.
 
1594
   *  \param lang The language encoding to compare with. */
 
1595
  bool operator== (const CLanguage &lang) { return (m_Type == lang.Type ()) && (m_Text == lang.Text ()); }
 
1596
  /** Compare two language encodings.
 
1597
   *  \param lt The language encoding type to compare with. */
 
1598
  bool operator== (LangType lt) { return (m_Type == lt); }
 
1599
public:
 
1600
  typedef AC::TL<Puma::CLanguage::LangType,AC::TL<Puma::DString,AC::TLE > > __AttrTypes;
 
1601
  const char *__attr_name (unsigned i) const {
 
1602
    static const char *names[] = { "m_Type", "m_Text" }; return names[i];
 
1603
  }
 
1604
  const void *__attr (unsigned __i) const {
 
1605
    switch (__i) { case 4: return &m_Type; case 5: return &m_Text; default: return 0; }
 
1606
  }
 
1607
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
1608
};
 
1609
 
 
1610
 
 
1611
} // namespace Puma
 
1612
 
 
1613
#endif /* __CLanguage_h__ */
 
1614
 
 
1615
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSpecifiers.h"
 
1616
// This file is part of PUMA.
 
1617
// Copyright (C) 1999-2003  The PUMA developer team.
 
1618
//                                                                
 
1619
// This program is free software;  you can redistribute it and/or 
 
1620
// modify it under the terms of the GNU General Public License as 
 
1621
// published by the Free Software Foundation; either version 2 of 
 
1622
// the License, or (at your option) any later version.            
 
1623
//                                                                
 
1624
// This program is distributed in the hope that it will be useful,
 
1625
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1626
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1627
// GNU General Public License for more details.                   
 
1628
//                                                                
 
1629
// You should have received a copy of the GNU General Public      
 
1630
// License along with this program; if not, write to the Free     
 
1631
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1632
// MA  02111-1307  USA                                            
 
1633
 
 
1634
#ifndef __CSpecifiers__
 
1635
#define __CSpecifiers__
 
1636
 
 
1637
/** \file
 
1638
 *  C/C++ declaration specifiers. */
 
1639
 
 
1640
namespace Puma {
 
1641
 
 
1642
 
 
1643
/** \class CSpecifiers CSpecifiers.h Puma/CSpecifiers.h
 
1644
 *  C/C++ declaration specifiers for the declaration 
 
1645
 *  of an entity. */
 
1646
 
 
1647
#line 1648 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1648
} // closed Puma
 
1649
class CCExprResolve;
 
1650
class CExprResolve;
 
1651
class WinIfExists;
 
1652
class WinImportHandler;
 
1653
class WinMacros;
 
1654
class WinAsm;
 
1655
class WinDeclSpecs;
 
1656
class WinMemberExplSpec;
 
1657
class WinTypeKeywords;
 
1658
class WinFriend;
 
1659
class ExtAC;
 
1660
class ExtACBuilderCoupling;
 
1661
class ExtACSyntaxCoupling;
 
1662
class ExtACTree;
 
1663
class ExtACKeywords;
 
1664
class ExtGnu;
 
1665
class PragmaOnceUnitState;
 
1666
class PragmaOnce;
 
1667
class CMatchSyntax;
 
1668
namespace Puma {
 
1669
 
 
1670
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSpecifiers.h"
 
1671
class CSpecifiers {
 
1672
#line 1673 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
1673
  friend class ::CCExprResolve;
 
1674
  friend class ::CExprResolve;
 
1675
  friend class ::WinIfExists;
 
1676
  friend class ::WinImportHandler;
 
1677
  friend class ::WinMacros;
 
1678
  friend class ::WinAsm;
 
1679
  friend class ::WinDeclSpecs;
 
1680
  friend class ::WinMemberExplSpec;
 
1681
  friend class ::WinTypeKeywords;
 
1682
  friend class ::WinFriend;
 
1683
  friend class ::ExtAC;
 
1684
  friend class ::ExtACBuilderCoupling;
 
1685
  friend class ::ExtACSyntaxCoupling;
 
1686
  friend class ::ExtACTree;
 
1687
  friend class ::ExtACKeywords;
 
1688
  friend class ::ExtGnu;
 
1689
  friend class ::PragmaOnceUnitState;
 
1690
  friend class ::PragmaOnce;
 
1691
  friend class ::CMatchSyntax;
 
1692
 
 
1693
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSpecifiers.h"
 
1694
 
 
1695
public:
 
1696
  /** Declaration specifiers. */
 
1697
  enum Spec {
 
1698
    /** No declaration specifier. */
 
1699
    SPEC_NONE     = 0x0,
 
1700
    /** Declaration specifier \c virtual. */
 
1701
    SPEC_VIRTUAL  = 0x1,
 
1702
    /** Declaration specifier \c static. */
 
1703
    SPEC_STATIC   = 0x2,
 
1704
    /** Declaration specifier \c extern. */
 
1705
    SPEC_EXTERN   = 0x4,
 
1706
    /** Declaration specifier \c mutable. */
 
1707
    SPEC_MUTABLE  = 0x8,
 
1708
    /** Declaration specifier \c register. */
 
1709
    SPEC_REGISTER = 0x10,
 
1710
    /** Declaration specifier \c explicit. */
 
1711
    SPEC_EXPLICIT = 0x20,
 
1712
    /** Declaration specifier \c auto. */
 
1713
    SPEC_AUTO     = 0x40,
 
1714
    /** Declaration specifier \c inline. */
 
1715
    SPEC_INLINE   = 0x80
 
1716
  };
 
1717
 
 
1718
private:
 
1719
  unsigned char _specs;
 
1720
  
 
1721
public:
 
1722
  /** Constructor. */
 
1723
  CSpecifiers ();
 
1724
  /** Copy-constructor.
 
1725
   *  \param copy The declaration specifiers to copy. */
 
1726
  CSpecifiers (const CSpecifiers &copy);
 
1727
  /** Assignment operator.
 
1728
   *  \param s The assigned declaration specifiers. */
 
1729
  CSpecifiers &operator =(const CSpecifiers &s);
 
1730
 
 
1731
  /** Add a declaration specifier. 
 
1732
   *  \param s The declaration specifier. */
 
1733
  CSpecifiers &operator +=(Spec s);
 
1734
  /** Remove a declaration specifier. 
 
1735
   *  \param s The declaration specifier. */
 
1736
  CSpecifiers &operator -=(Spec s);
 
1737
  
 
1738
  /** Check if the given declaration specifier was specified.
 
1739
   *  \param s The declaration specifier. */
 
1740
  bool operator ==(Spec) const;
 
1741
  /** Check if the given declaration specifier was not specified.
 
1742
   *  \param s The declaration specifier. */
 
1743
  bool operator !=(Spec) const;
 
1744
public:
 
1745
  typedef AC::TL<unsigned char,AC::TLE > __AttrTypes;
 
1746
  const char *__attr_name (unsigned i) const {
 
1747
    static const char *names[] = { "_specs" }; return names[i];
 
1748
  }
 
1749
  const void *__attr (unsigned __i) const {
 
1750
    switch (__i) { case 9: return &_specs; default: return 0; }
 
1751
  }
 
1752
#line 81 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSpecifiers.h"
 
1753
};
 
1754
 
 
1755
inline CSpecifiers::CSpecifiers () : _specs (SPEC_NONE) 
 
1756
 {}
 
1757
inline CSpecifiers::CSpecifiers (const CSpecifiers &s)
 
1758
 { _specs = s._specs; }
 
1759
inline CSpecifiers &CSpecifiers::operator =(const CSpecifiers &s)
 
1760
 { _specs = s._specs; return *(CSpecifiers*)this; }
 
1761
 
 
1762
inline CSpecifiers &CSpecifiers::operator +=(CSpecifiers::Spec s)
 
1763
 { _specs = _specs | (unsigned char)s; return *(CSpecifiers*)this; }
 
1764
inline CSpecifiers &CSpecifiers::operator -=(CSpecifiers::Spec s)
 
1765
 { _specs = _specs ^ (_specs & (unsigned char)s); return *(CSpecifiers*)this; }
 
1766
 
 
1767
inline bool CSpecifiers::operator ==(CSpecifiers::Spec s) const
 
1768
 { return _specs & (unsigned char)s; }
 
1769
inline bool CSpecifiers::operator !=(CSpecifiers::Spec s) const
 
1770
 { return ! (_specs & (unsigned char)s); }
 
1771
 
 
1772
 
 
1773
} // namespace Puma
 
1774
 
 
1775
#endif /* __CSpecifiers__ */
 
1776
 
 
1777
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Array.h"
 
1778
// This file is part of PUMA.
 
1779
// Copyright (C) 1999-2003  The PUMA developer team.
 
1780
//                                                                
 
1781
// This program is free software;  you can redistribute it and/or 
 
1782
// modify it under the terms of the GNU General Public License as 
 
1783
// published by the Free Software Foundation; either version 2 of 
 
1784
// the License, or (at your option) any later version.            
 
1785
//                                                                
 
1786
// This program is distributed in the hope that it will be useful,
 
1787
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1788
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1789
// GNU General Public License for more details.                   
 
1790
//                                                                
 
1791
// You should have received a copy of the GNU General Public      
 
1792
// License along with this program; if not, write to the Free     
 
1793
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1794
// MA  02111-1307  USA                                            
 
1795
 
 
1796
#ifndef __array_h__
 
1797
#define __array_h__
 
1798
 
 
1799
/** \file
 
1800
 *  Variable length array implementation. */
 
1801
 
 
1802
#include <assert.h>
 
1803
 
 
1804
namespace Puma {
 
1805
 
 
1806
 
 
1807
/** \class Array Array.h Puma/Array.h
 
1808
 *  Variable length array implementation. */
 
1809
template <class Item>
 
1810
class Array {
 
1811
protected:
 
1812
  /** Default array size. */
 
1813
  static const long default_init_size = 5;
 
1814
  /** Default array size increment. */
 
1815
  static const long default_increment = 5;
 
1816
 
 
1817
public:
 
1818
  /** Constructor.
 
1819
   *  \param is The default size of the array. 
 
1820
   *  \param incr The default increment value. */
 
1821
  Array (long is = default_init_size, long incr = default_increment);
 
1822
  /** Copy-constructor.
 
1823
   *  \param array The array to copy. */
 
1824
  Array (const Array<Item>& array);
 
1825
  /** Assignment operator.
 
1826
   *  \param copy The array to copy. */
 
1827
  Array<Item>& operator =(const Array<Item>& copy);
 
1828
  /** Destructor. Destroys the array. */
 
1829
  ~Array ();
 
1830
  /** Append an item to the array. 
 
1831
   *  \param item The item to append. */
 
1832
  void append (const Item& item);
 
1833
  /** Insert an item at the given array index. 
 
1834
   *  \param index The array index. 
 
1835
   *  \param item The item to insert. */
 
1836
  void insert (long index, const Item& item);
 
1837
  /** Prepend an item. 
 
1838
   *  \param item The item to prepend. */
 
1839
  void prepend (const Item& item);
 
1840
  /** Remove the array item at the given array index.
 
1841
   *  \param index The array index. */
 
1842
  void remove (long index);
 
1843
  /** Reset the array. Destroys the current array. */
 
1844
  void reset ();
 
1845
  /** Get a reference to the array item at the given 
 
1846
   *  array index. If the index exceeds the array
 
1847
   *  bounds, then the array is reallocated accordingly.
 
1848
   *  \param index The array index. */
 
1849
  Item& get (long index);
 
1850
  /** Get a reference to the array item at the given 
 
1851
   *  array index. If the index exceeds the array
 
1852
   *  bounds, then the array is reallocated accordingly.
 
1853
   *  \param index The array index. */
 
1854
  Item& operator[] (long index);
 
1855
  /** Get the array item at the given array index.
 
1856
   *  Does not return a reference, thus the item may
 
1857
   *  be implicitely copied. 
 
1858
   *  \warning Does not validate the index!
 
1859
   *  \param index The array index. */
 
1860
  Item fetch (long index) const;
 
1861
  /** Get a reference to the array item at the given 
 
1862
   *  array index.
 
1863
   *  \warning Does not validate the index!
 
1864
   *  \param index The array index. */
 
1865
  Item& lookup (long index) const;
 
1866
  /** Get the number of items in the array. */
 
1867
  long length () const;
 
1868
 
 
1869
private:
 
1870
  Item* data;
 
1871
  long size;
 
1872
  long count;
 
1873
  long increment;
 
1874
      
 
1875
  void grow (long wanted);
 
1876
};
 
1877
 
 
1878
template <class Item>
 
1879
inline Array<Item>::Array (long is, long incr) {
 
1880
  count     = 0; 
 
1881
  size      = is;
 
1882
  increment = incr;
 
1883
  data      = 0;
 
1884
}
 
1885
 
 
1886
template <class Item>
 
1887
Array<Item>::Array (const Array<Item>& array) {
 
1888
  count     = 0;
 
1889
  size      = array.size;
 
1890
  increment = array.increment;
 
1891
  
 
1892
  if (size && array.data) {
 
1893
    data = new Item[size];
 
1894
    for (; count < array.count; count++) {
 
1895
      data[count] = array.data[count];
 
1896
    }
 
1897
  } else
 
1898
    data = 0;
 
1899
}
 
1900
 
 
1901
template <class Item>
 
1902
Array<Item>& Array<Item>::operator =(const Array<Item>& array) {
 
1903
  if (data)
 
1904
    delete[] data;
 
1905
 
 
1906
  count     = 0;
 
1907
  size      = array.size;
 
1908
  increment = array.increment;
 
1909
 
 
1910
  if (size && array.data) {
 
1911
    data = new Item[size];
 
1912
    for (; count < array.count; count++) {
 
1913
      data[count] = array.data[count];
 
1914
    }
 
1915
  } else
 
1916
    data = 0;
 
1917
  
 
1918
  return *this;
 
1919
}
 
1920
 
 
1921
template <class Item>
 
1922
Array<Item>::~Array () {
 
1923
  if (data)
 
1924
    delete[] data;
 
1925
}
 
1926
 
 
1927
template <class Item>
 
1928
inline void Array<Item>::grow (long wanted) {
 
1929
  do {
 
1930
    size += increment;
 
1931
    increment *= 2;
 
1932
  } while (wanted >= size);
 
1933
 
 
1934
  if (data) {
 
1935
    Item* new_data = new Item[size];
 
1936
    for (long i = 0; i < count; i++) {
 
1937
      new_data[i] = data[i];
 
1938
    }
 
1939
    delete[] data;
 
1940
    data = new_data;
 
1941
  } else
 
1942
    data = new Item[size];
 
1943
}
 
1944
   
 
1945
template <class Item>
 
1946
inline void Array<Item>::append (const Item& item) {
 
1947
  if (count >= size || ! data) {
 
1948
    grow (count);
 
1949
  }
 
1950
  data[count++] = item;
 
1951
}
 
1952
 
 
1953
template <class Item>
 
1954
void Array<Item>::prepend (const Item& item) {
 
1955
  insert (0, item);
 
1956
}
 
1957
 
 
1958
template <class Item>
 
1959
void Array<Item>::insert (long index, const Item& item) {
 
1960
  if (count >= size || ! data) {
 
1961
    grow (count);
 
1962
  }
 
1963
  for (long i = count; i > index; i--)
 
1964
    data[i] = data[i - 1];
 
1965
  data[index] = item;
 
1966
  count++;
 
1967
}
 
1968
 
 
1969
template <class Item>
 
1970
inline Item& Array<Item>::get (long index) {
 
1971
  if (index >= size || ! data) {
 
1972
    grow (index);
 
1973
  }
 
1974
  if (index >= count)
 
1975
    count = index + 1;
 
1976
  return data[index];
 
1977
}
 
1978
 
 
1979
template <class Item>
 
1980
inline Item& Array<Item>::operator[] (long index) {
 
1981
  return get (index);
 
1982
}
 
1983
 
 
1984
template <class Item>
 
1985
inline Item Array<Item>::fetch (long index) const {
 
1986
  assert(index < count && data);
 
1987
  return data[index];
 
1988
}
 
1989
 
 
1990
template <class Item>
 
1991
inline long Array<Item>::length () const {
 
1992
  return count;
 
1993
}
 
1994
 
 
1995
template <class Item>
 
1996
inline void Array<Item>::remove (long index) {
 
1997
  if (index < count && count > 0) {
 
1998
    for (long i = index; i < count - 1; i++)
 
1999
      data[i] = data[i + 1];
 
2000
    count--;
 
2001
  }
 
2002
}
 
2003
 
 
2004
#ifndef __puma
 
2005
template <>
 
2006
inline void Array<int>::reset () {
 
2007
  count = 0; 
 
2008
}
 
2009
#endif
 
2010
 
 
2011
template <class Item>
 
2012
void Array<Item>::reset () {
 
2013
  if (data)
 
2014
    delete[] data;
 
2015
    
 
2016
  count     = 0; 
 
2017
  size      = default_init_size;
 
2018
  increment = default_increment;
 
2019
  data      = new Item[size];
 
2020
}
 
2021
 
 
2022
template <class Item>
 
2023
inline Item& Array<Item>::lookup (long index) const {
 
2024
  assert(index >= 0 && index < count);
 
2025
  return data[index];
 
2026
}
 
2027
 
 
2028
 
 
2029
} // namespace Puma
 
2030
 
 
2031
// Array specialization for pointer types sharing method definitions
 
2032
 
 
2033
#ifndef __puma
 
2034
 
 
2035
#include "Puma/VoidPtrArray.h"
 
2036
 
 
2037
namespace Puma {
 
2038
 
 
2039
 
 
2040
template <class Item>
 
2041
class Array<Item*> : private VoidPtrArray {
 
2042
  typedef VoidPtrArray Base;
 
2043
 
 
2044
public:
 
2045
  Array (long is = default_init_size, long incr = default_increment) :
 
2046
    Base (is, incr) {}
 
2047
  Array (const Array<Item*> &array) : 
 
2048
    Base (array) {}
 
2049
  Array<Item*> &operator= (const Array<Item*> &array) 
 
2050
   { return (Array<Item*>&)Base::operator= (array); }
 
2051
 
 
2052
  ~Array () {}
 
2053
 
 
2054
  void append (const Item *item)           { Base::append ((void*)item); }
 
2055
  void insert (long idx, const Item *item) { Base::insert (idx, (void*)item); }
 
2056
  void prepend (const Item *item)          { Base::prepend ((void*)item); }
 
2057
  void remove (long idx)                   { Base::remove (idx); }
 
2058
  void reset ()                            { Base::reset (); }
 
2059
 
 
2060
  Item *&get (long idx)                    { return (Item*&)Base::get (idx); }
 
2061
  Item *&operator[] (long idx)             { return (Item*&)Base::operator[] (idx); }
 
2062
  Item *fetch (long idx) const             { return (Item*)Base::fetch (idx); }
 
2063
  Item *&lookup (long idx) const           { return (Item*&)Base::lookup (idx); }
 
2064
  long length () const                     { return Base::length (); }
 
2065
};
 
2066
 
 
2067
 
 
2068
} // namespace Puma
 
2069
 
 
2070
#endif /* __puma */
 
2071
 
 
2072
#endif /* __array_h__ */
 
2073
 
 
2074
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
2075
namespace Puma {
 
2076
 
 
2077
 
 
2078
class CRecord;
 
2079
class CStructure;
 
2080
class CFileInfo;
 
2081
class CClassInfo;
 
2082
class CBaseClassInfo;
 
2083
class CMemberAliasInfo;
 
2084
class CTypeInfo;
 
2085
class CScopeInfo;
 
2086
class CLabelInfo;
 
2087
class CUnionInfo;
 
2088
class CLocalScope;
 
2089
class CEnumInfo;
 
2090
class CUsingInfo;
 
2091
class CEnumeratorInfo;
 
2092
class CTypedefInfo;
 
2093
class CFunctionInfo;
 
2094
class CArgumentInfo;
 
2095
class CAttributeInfo;
 
2096
class CTemplateParamInfo;
 
2097
class CTemplateInfo;
 
2098
class CNamespaceInfo;
 
2099
class CClassInstance;
 
2100
class CUnionInstance;
 
2101
class CFctInstance;
 
2102
class CSemDatabase;
 
2103
class CTree;
 
2104
class CT_ExprList;
 
2105
class CTemplateInstance;
 
2106
 
 
2107
 
 
2108
/** \class CObjectInfo CObjectInfo.h Puma/CObjectInfo.h 
 
2109
 *  Abstract base class of all semantic information classes.
 
2110
 *  Provides all semantic information about an entity (class,
 
2111
 *  function, object, etc). 
 
2112
 *
 
2113
 *  A semantic object is identified by its object ID. %Semantic
 
2114
 *  information objects for the same kind of entity have the
 
2115
 *  same object ID (like object ID CObjectInfo::FUNCTION_INFO
 
2116
 *  for all semantic objects of functions). 
 
2117
 * 
 
2118
 *  Example:
 
2119
 *
 
2120
 *  \code 
 
2121
 * // check if sem_obj is a semantic object for a function
 
2122
 * if (sem_obj.Id() == Puma::CObjectInfo::FUNCTION_INFO) {
 
2123
 *   ...
 
2124
 * }
 
2125
 * // same check
 
2126
 * if (sem_obj.FunctionInfo()) {
 
2127
 *   ...
 
2128
 * }
 
2129
 *  \endcode 
 
2130
 *
 
2131
 *  %Semantic information objects are created by the semantic
 
2132
 *  analysis component of %Puma (see Puma::Semantic) during 
 
2133
 *  the parse process and are collected in the semantic
 
2134
 *  information database (see Puma::CSemDatabase). 
 
2135
 *
 
2136
 *  There are several relations between the semantic objects 
 
2137
 *  forming the semantic tree. There is one semantic tree for 
 
2138
 *  each translation unit. 
 
2139
 *
 
2140
 *  The root of the semantic tree usually is the semantic 
 
2141
 *  object for the file scope (see Puma::CFileInfo). It contains 
 
2142
 *  all the other scopes of the analysed source file, such 
 
2143
 *  as namespaces and class definitions, function definitions, 
 
2144
 *  global variables, and so on. The semantic tree is destroyed 
 
2145
 *  by destroying the root object of the tree. This recursively 
 
2146
 *  destroys all sub-objects of the tree. */
 
2147
 
 
2148
#line 2149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
2149
} // closed Puma
 
2150
class CCExprResolve;
 
2151
class CExprResolve;
 
2152
class WinIfExists;
 
2153
class WinImportHandler;
 
2154
class WinMacros;
 
2155
class WinAsm;
 
2156
class WinDeclSpecs;
 
2157
class WinMemberExplSpec;
 
2158
class WinTypeKeywords;
 
2159
class WinFriend;
 
2160
class ExtAC;
 
2161
class ExtACBuilderCoupling;
 
2162
class ExtACSyntaxCoupling;
 
2163
class ExtACTree;
 
2164
class ExtACKeywords;
 
2165
class ExtGnu;
 
2166
class PragmaOnceUnitState;
 
2167
class PragmaOnce;
 
2168
class CMatchSyntax;
 
2169
namespace Puma {
 
2170
 
 
2171
#line 106 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
2172
class CObjectInfo {
 
2173
#line 2174 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
2174
  friend class ::CCExprResolve;
 
2175
  friend class ::CExprResolve;
 
2176
  friend class ::WinIfExists;
 
2177
  friend class ::WinImportHandler;
 
2178
  friend class ::WinMacros;
 
2179
  friend class ::WinAsm;
 
2180
  friend class ::WinDeclSpecs;
 
2181
  friend class ::WinMemberExplSpec;
 
2182
  friend class ::WinTypeKeywords;
 
2183
  friend class ::WinFriend;
 
2184
  friend class ::ExtAC;
 
2185
  friend class ::ExtACBuilderCoupling;
 
2186
  friend class ::ExtACSyntaxCoupling;
 
2187
  friend class ::ExtACTree;
 
2188
  friend class ::ExtACKeywords;
 
2189
  friend class ::ExtGnu;
 
2190
  friend class ::PragmaOnceUnitState;
 
2191
  friend class ::PragmaOnce;
 
2192
  friend class ::CMatchSyntax;
 
2193
 
 
2194
#line 106 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
2195
 
 
2196
public:
 
2197
  /** %Semantic information object types. */
 
2198
  enum ObjectId {
 
2199
    /** %Semantic information about the file scope. */
 
2200
    FILE_INFO, 
 
2201
    /** %Semantic information about a union. */
 
2202
    UNION_INFO, 
 
2203
    /** %Semantic information about a class. */
 
2204
    CLASS_INFO,
 
2205
    /** %Semantic information about a base class specifier. */
 
2206
    BASECLASS_INFO,
 
2207
    /** %Semantic information about class/namespace member alias. */
 
2208
    MEMBERALIAS_INFO,
 
2209
    /** %Semantic information about an enumeration. */
 
2210
    ENUM_INFO, 
 
2211
    /** %Semantic information about a typedef. */
 
2212
    TYPEDEF_INFO, 
 
2213
    /** %Semantic information about a function, method, or overloaded operator. */
 
2214
    FUNCTION_INFO, 
 
2215
    /** %Semantic information about a label. */
 
2216
    LABEL_INFO,
 
2217
    /** %Semantic information about an enumerator constant. */
 
2218
    ENUMERATOR_INFO,
 
2219
    /** %Semantic information about an object (variables etc). */
 
2220
    ATTRIBUTE_INFO, 
 
2221
    /** %Semantic information about a template parameter. */
 
2222
    TEMPLATE_PARAM_INFO,
 
2223
    /** %Semantic information about a class or function template. */
 
2224
    TEMPLATE_INFO,
 
2225
    /** %Semantic information about an instance of a class template. */
 
2226
    CLASS_INSTANCE_INFO,
 
2227
    /** %Semantic information about an instance of a union template. */
 
2228
    UNION_INSTANCE_INFO,
 
2229
    /** %Semantic information about an instance of a function template. */
 
2230
    FCT_INSTANCE_INFO,
 
2231
    /** %Semantic information about a function parameter. */
 
2232
    ARGUMENT_INFO, 
 
2233
    /** %Semantic information about a local scope (block scope). */
 
2234
    LOCAL_INFO, 
 
2235
    /** %Semantic information about a named or anonymous namespace. */
 
2236
    NAMESPACE_INFO,
 
2237
    /** %Semantic information about a using declaration. */
 
2238
    USING_INFO
 
2239
  };
 
2240
 
 
2241
protected:
 
2242
  /** If true than only the members are destroyed in the destructor.
 
2243
   *  Otherwise it is also tried to remove all references to this 
 
2244
   *  object in other semantic objects. */
 
2245
  bool               _DeleteMembersOnly;
 
2246
  
 
2247
private:
 
2248
  DString            _Name;
 
2249
  const char        *_QualName;         // Full qualified name
 
2250
  bool              _abs, _tdef;        // Flags that were used for QualName()
 
2251
  CTypeInfo         *_TypeInfo;
 
2252
  CObjectInfo       *_BaseObject;       // corresponding object of base class
 
2253
  CObjectInfo       *_Next;             // next linked object
 
2254
  CObjectInfo       *_Prev;             // previous linked object
 
2255
  CSemDatabase      *_SemDB;
 
2256
  CTree             *_Tree;             // corresponding syntax tree
 
2257
  ObjectId           _Id;               // object type
 
2258
  CSpecifiers        _Specifiers;
 
2259
  CSourceInfo        _SourceInfo;       // location in source file
 
2260
  CProtection::Type  _Protection;
 
2261
  CLinkage::Type     _Linkage;
 
2262
  CStorage::Type     _Storage;            
 
2263
  CLanguage          _Language;
 
2264
 
 
2265
protected:
 
2266
  /** Qualified name scope. Set only for CAttributeInfo,
 
2267
   *  CFunctionInfo, and CRecord. */
 
2268
  CStructure        *_QualScope;
 
2269
  /** The scope of a friend class or function. This is not 
 
2270
   *  the scope in which the friend class or function 
 
2271
   *  was declared. A friend function of a class may be declared
 
2272
   *  first inside the scope of a class definition. But the
 
2273
   *  declared function does not belong to this scope. In fact
 
2274
   *  it belongs to the nearest non-class scope (usually the
 
2275
   *  file scope). This is the assigned scope. */
 
2276
  CStructure        *_AssignedScope;
 
2277
  /** Set of semantic objects connected to this object in
 
2278
   *  any way. */
 
2279
  Array<CStructure*> _Registered;         
 
2280
  
 
2281
public: 
 
2282
  /** Destructor. */
 
2283
  ~CObjectInfo ();
 
2284
  
 
2285
  /** Compare the addresses of this object and all objects
 
2286
   *  linked to this object with the address of the given 
 
2287
   *  object.
 
2288
   *  \return True if the addresses are the same and thus
 
2289
   *          the given object describes the same entity. */
 
2290
  bool operator ==(const CObjectInfo &) const;
 
2291
  /** Compare the addresses of this object and all objects
 
2292
   *  linked to this object with the address of the given 
 
2293
   *  object.
 
2294
   *  \return True if the addresses are different and thus
 
2295
   *          the given object does not describe the same entity. */
 
2296
  bool operator !=(const CObjectInfo &) const;
 
2297
 
 
2298
  /** Get a pointer to CObjectInfo for any semantic object type. */
 
2299
  CObjectInfo        *ObjectInfo () const;
 
2300
  /** Return a pointer to CLabelInfo if the entity is a label. 
 
2301
   *  The object type has to be one of:
 
2302
   *  \li CObjectInfo::LABEL_INFO
 
2303
   * 
 
2304
   *  \return The valid pointer or NULL. */
 
2305
  CLabelInfo         *LabelInfo () const;
 
2306
  /** Return a pointer to CMemberAliasInfo if the entity is a member alias.
 
2307
   *  The object type has to be one of:
 
2308
   *  \li CObjectInfo::MEMBERALIAS_INFO
 
2309
   *
 
2310
   *  \return The valid pointer or NULL. */
 
2311
  CMemberAliasInfo   *MemberAliasInfo () const; 
 
2312
  /** Return a pointer to CBaseClassInfo if the entity is a base class specifier.
 
2313
   *  The object type has to be one of:
 
2314
   *  \li CObjectInfo::BASECLASS_INFO 
 
2315
   *
 
2316
   *  \return The valid pointer or NULL. */
 
2317
  CBaseClassInfo     *BaseClassInfo () const;
 
2318
  /** Return a pointer to CUsingInfo if the entity is a using-directive.
 
2319
   *  The object type has to be one of:
 
2320
   *  \li CObjectInfo::USING_INFO
 
2321
   *
 
2322
   *  \return The valid pointer or NULL. */
 
2323
  CUsingInfo         *UsingInfo () const;
 
2324
  /** Return a pointer to CTypedefInfo if the entity is a typedef.
 
2325
   *  The object type has to be one of:
 
2326
   *  \li CObjectInfo::TYPEDEF_INFO
 
2327
   *
 
2328
   *  \return The valid pointer or NULL. */
 
2329
  CTypedefInfo       *TypedefInfo () const;
 
2330
  /** Return a pointer to CArgumentInfo if the entity is a function parameter.
 
2331
   *  The object type has to be one of:
 
2332
   *  \li CObjectInfo::ARGUMENT_INFO
 
2333
   *
 
2334
   *  \return The valid pointer or NULL. */
 
2335
  CArgumentInfo      *ArgumentInfo () const;
 
2336
  /** Return a pointer to CAttributeInfo if the entity is an object or 
 
2337
   *  enumeration constant.
 
2338
   *  The object type has to be one of:
 
2339
   *  \li CObjectInfo::ATTRIBUTE_INFO
 
2340
   *  \li CObjectInfo::ENUMERATOR_INFO
 
2341
   *
 
2342
   *  \return The valid pointer or NULL. */
 
2343
  CAttributeInfo     *AttributeInfo () const;
 
2344
  /** Return a pointer to CTemplateParemInfo if the entity is a template parameter.
 
2345
   *  The object type has to be one of:
 
2346
   *  \li CObjectInfo::TEMPLATE_PARAM_INFO
 
2347
   *
 
2348
   *  \return The valid pointer or NULL. */
 
2349
  CTemplateParamInfo *TemplateParamInfo () const; 
 
2350
  /** Return a pointer to CStructure if the entity is a namespace, class, 
 
2351
   *  function, or any other construct that can contain other entities.
 
2352
   *  The object type has to be one of:
 
2353
   *  \li CObjectInfo::NAMESPACE_INFO
 
2354
   *  \li CObjectInfo::FILE_INFO
 
2355
   *  \li CObjectInfo::CLASS_INFO
 
2356
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
2357
   *  \li CObjectInfo::UNION_INFO
 
2358
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
2359
   *  \li CObjectInfo::FUNCTION_INFO,
 
2360
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
2361
   *  \li CObjectInfo::TEMPLATE_INFO
 
2362
   *  \li CObjectInfo::LOCAL_INFO
 
2363
   *
 
2364
   *  \return The valid pointer or NULL. */
 
2365
  CStructure         *Structure () const; 
 
2366
  /** Return a pointer to CFileInfo if this is the file scope.
 
2367
   *  The object type has to be one of:
 
2368
   *  \li CObjectInfo::FILE_INFO
 
2369
   *
 
2370
   *  \return The valid pointer or NULL. */
 
2371
  CFileInfo          *FileInfo () const;  
 
2372
  /** Return a pointer to CRecord if the entity is a class or union.
 
2373
   *  The object type has to be one of:
 
2374
   *  \li CObjectInfo::CLASS_INFO
 
2375
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
2376
   *  \li CObjectInfo::UNION_INFO
 
2377
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
2378
   *
 
2379
   *  \return The valid pointer or NULL. */
 
2380
  CRecord            *Record () const;        
 
2381
  /** Return a pointer to CLocalScope if the entity is a local scope
 
2382
   *  (block scope).
 
2383
   *  The object type has to be one of:
 
2384
   *  \li CObjectInfo::LOCAL_INFO
 
2385
   *
 
2386
   *  \return The valid pointer or NULL. */
 
2387
  CLocalScope        *LocalScope () const;
 
2388
  /** Return a pointer to CScopeInfo if the entity defines a scope.
 
2389
   *  The object type has to be one of:
 
2390
   *  \li CObjectInfo::NAMESPACE_INFO
 
2391
   *  \li CObjectInfo::FILE_INFO
 
2392
   *  \li CObjectInfo::CLASS_INFO
 
2393
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
2394
   *  \li CObjectInfo::UNION_INFO
 
2395
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
2396
   *  \li CObjectInfo::FUNCTION_INFO
 
2397
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
2398
   *  \li CObjectInfo::TEMPLATE_INFO
 
2399
   *  \li CObjectInfo::LOCAL_INFO
 
2400
   *
 
2401
   *  \return The valid pointer or NULL. */
 
2402
  CScopeInfo         *ScopeInfo () const; 
 
2403
  /** Return a pointer to CClassInfo if the entity is a class.
 
2404
   *  The object type has to be one of:
 
2405
   *  \li CObjectInfo::CLASS_INFO
 
2406
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
2407
   *
 
2408
   *  \return The valid pointer or NULL. */
 
2409
  CClassInfo         *ClassInfo () const;
 
2410
  /** Return a pointer to CUnionInfo if the entity is a union.
 
2411
   *  The object type has to be one of:
 
2412
   *  \li CObjectInfo::UNION_INFO
 
2413
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
2414
   *
 
2415
   *  \return The valid pointer or NULL. */
 
2416
  CUnionInfo         *UnionInfo () const;
 
2417
  /** Return a pointer to CEnumInfo if the entity is an enumeration.
 
2418
   *  The object type has to be one of:
 
2419
   *  \li CObjectInfo::ENUM_INFO
 
2420
   *
 
2421
   *  \return The valid pointer or NULL. */
 
2422
  CEnumInfo          *EnumInfo () const;
 
2423
  /** Return a pointer to CFunctionInfo if the entity is a function,
 
2424
   *  method, or overloaded operator.
 
2425
   *  The object type has to be one of:
 
2426
   *  \li CObjectInfo::FUNCTION_INFO
 
2427
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
2428
   *
 
2429
   *  \return The valid pointer or NULL. */
 
2430
  CFunctionInfo      *FunctionInfo () const;
 
2431
  /** Return a pointer to CNamespaceInfo if the entity is a namespace.
 
2432
   *  The object type has to be one of:
 
2433
   *  \li CObjectInfo::NAMESPACE_INFO
 
2434
   *  \li CObjectInfo::FILE_INFO
 
2435
   *
 
2436
   *  \return The valid pointer or NULL. */
 
2437
  CNamespaceInfo     *NamespaceInfo () const;
 
2438
  /** Return a pointer to CEnumeratorInfo if the entity is an 
 
2439
   *  enumeration constant.
 
2440
   *  The object type has to be one of:
 
2441
   *  \li CObjectInfo::ENUMERATOR_INFO
 
2442
   *
 
2443
   *  \return The valid pointer or NULL. */
 
2444
  CEnumeratorInfo    *EnumeratorInfo () const;
 
2445
  /** Return a pointer to CTemplateInfo if the entity is a template.
 
2446
   *  The object type has to be one of:
 
2447
   *  \li CObjectInfo::TEMPLATE_INFO
 
2448
   *
 
2449
   *  \return The valid pointer or NULL. */
 
2450
  CTemplateInfo      *TemplateInfo () const; 
 
2451
  /** Return a pointer to CClassInstance if the entity is an instance
 
2452
   *  of a class template.
 
2453
   *  The object type has to be one of:
 
2454
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
2455
   *
 
2456
   *  \return The valid pointer or NULL. */
 
2457
  CClassInstance     *ClassInstance () const; 
 
2458
  /** Return a pointer to CFctInstance if the entity is an instance
 
2459
   *  of a function template.
 
2460
   *  The object type has to be one of:
 
2461
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
2462
   *
 
2463
   *  \return The valid pointer or NULL. */
 
2464
  CFctInstance       *FctInstance () const; 
 
2465
  /** Return a pointer to CUnionInstance if the entity is an instance
 
2466
   *  of a union template.
 
2467
   *  The object type has to be one of:
 
2468
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
2469
   *
 
2470
   *  \return The valid pointer or NULL. */
 
2471
  CUnionInstance     *UnionInstance () const; 
 
2472
 
 
2473
  /** Return a pointer to CTemplateInfo if the entity is a template.
 
2474
   *  The object type has to be one of:
 
2475
   *  \li CObjectInfo::CLASS_INFO
 
2476
   *  \li CObjectInfo::UNION_INFO
 
2477
   *  \li CObjectInfo::FUNCTION_INFO
 
2478
   *  \li CObjectInfo::TEMPLATE_PARAM_INFO
 
2479
   *
 
2480
   *  \return The valid pointer or NULL. */
 
2481
  CTemplateInfo      *Template () const;
 
2482
  /** Return a pointer to CTemplateInstance if the entity is an
 
2483
   *  instance of a class or function template.
 
2484
   *  The object type has to be one of:
 
2485
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
2486
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
2487
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
2488
   *
 
2489
   *  \return The valid pointer or NULL. */
 
2490
  CTemplateInstance  *TemplateInstance () const;
 
2491
  
 
2492
  /** Get the scope in which the entity was declared. */
 
2493
  CScopeInfo         *Scope () const; 
 
2494
  /** Get the scope of qualified names. The scope of a class member
 
2495
   *  for instance is the corresponding class. If a function is declared
 
2496
   *  in a namespace, then the qualified scope is that namespace. */
 
2497
  CStructure         *QualifiedScope () const;
 
2498
  /** Get the class containing the class member described by this object.
 
2499
   *  The object type has to be one of:
 
2500
   *  \li CObjectInfo::FUNCTION_INFO
 
2501
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
2502
   *  \li CObjectInfo::ATTRIBUTE_INFO
 
2503
   *  \li CObjectInfo::ENUMERATOR_INFO 
 
2504
   *
 
2505
   *  \return The class or union, or NULL if not a member of a class or union. */
 
2506
  CRecord            *ClassScope () const;
 
2507
  /** Get the scope of a friend class or function. This is not 
 
2508
   *  the scope in which the friend class or function 
 
2509
   *  was declared. A friend function of a class may be declared
 
2510
   *  first inside the scope of a class definition. But the
 
2511
   *  declared function does not belong to this scope. In fact
 
2512
   *  it belongs to the nearest non-class scope (usually the
 
2513
   *  file scope). This is the assigned scope. 
 
2514
   *  \return The assigned scope or NULL. */
 
2515
  CStructure          *AssignedScope () const; 
 
2516
 
 
2517
  /** Get the type of this semantic object. */
 
2518
  ObjectId            Id () const;
 
2519
  /** Get the name of entity described by this semantic object. */
 
2520
  const DString&      Name () const; 
 
2521
  /** Get the qualified name of the entity described by this semantic object. 
 
2522
   *  \param abs Create root qualified name (like ::X::Y::Z).
 
2523
   *  \param tdef Insert the name of a typedef instead of the named type. */
 
2524
  const char         *QualName (bool abs = false, bool tdef = false);
 
2525
  /** Get the semantic information object for the definition of an entity.
 
2526
   *  Some entities, like functions and classes, can be declared several
 
2527
   *  times before a definition of the entity appears. The semantic objects
 
2528
   *  for the definition and declarations are linked. This method searches
 
2529
   *  the linked semantic objects for the semantic object of the definition
 
2530
   *  of the entity.
 
2531
   *  \return The semantic object for the definition or this object if
 
2532
   *          no definition found. */
 
2533
  CObjectInfo        *DefObject () const;
 
2534
  /** Get the data type of the entity. */
 
2535
  CTypeInfo          *TypeInfo () const;
 
2536
  /** Get the source file information. Contains the position and token 
 
2537
   *  of the entity in the source file. */
 
2538
  CSourceInfo        *SourceInfo () const;
 
2539
  /** Get the semantic information database object containing this
 
2540
   *  semantic object. 
 
2541
   *  \deprecated Use CObjectInfo::SemDB() instead. */
 
2542
  CSemDatabase       *ClassDB () const; 
 
2543
  /** Get the semantic information database object containing this
 
2544
   *  semantic object. */
 
2545
  CSemDatabase       *SemDB () const; 
 
2546
  /** Get the syntax tree node for the entity described by this 
 
2547
   *  semantic object. */
 
2548
  CTree              *Tree () const;
 
2549
  /** Get the next semantic object linked with this object. Usually
 
2550
   *  the definition and the declarations of an entity are linked. */
 
2551
  CObjectInfo        *NextObject () const;
 
2552
  /** Get the previous semantic object linked with this object. Usually
 
2553
   *  the definition and the declarations of an entity are linked. */
 
2554
  CObjectInfo        *PrevObject () const;
 
2555
  /** Get the semantic object for the base class entity this entity
 
2556
   *  is overloading. 
 
2557
   *  \note Not yet implemented! 
 
2558
   *  \return Always returns NULL. */
 
2559
  CObjectInfo        *BaseObject () const;
 
2560
  /** Get the initializer of the entity.
 
2561
   *  \return The initializer expression or NULL if no initializer. */
 
2562
  CT_ExprList        *Init () const;
 
2563
  /** Get the member protection of the entity, if it is a class member. */
 
2564
  CProtection::Type   Protection () const;
 
2565
  /** Get the linkage of the entity. */
 
2566
  CLinkage::Type      Linkage () const;
 
2567
  /** Get the storage class of the entity. */
 
2568
  CStorage::Type      Storage () const;
 
2569
  /** Get the entity encoding language. */
 
2570
  const CLanguage    &Language () const;
 
2571
  /** Get the entity encoding language. */
 
2572
  CLanguage          &Language ();
 
2573
 
 
2574
  /** Check if the entity is anonymous (has no explicit name). */
 
2575
  bool                isAnonymous () const;
 
2576
  /** Check if the entity is a class or function template, or a 
 
2577
   *  template template parameter. */
 
2578
  bool                isTemplate () const;
 
2579
  /** Check if the entity is a class or function template instance. */
 
2580
  bool                isTemplateInstance () const;
 
2581
  /** Check if the entity describes a built-in type or function.
 
2582
   *  In this case the entity has no syntax tree (Tree() returns NULL). */
 
2583
  bool                isBuiltin () const;
 
2584
  /** Check if the entity is a method or data member of a class. */
 
2585
  bool                isClassMember () const;
 
2586
  /** Check if the entity is declared \e virtual. */
 
2587
  bool                isVirtual () const;
 
2588
  /** Check if the entity is declared \e static. */
 
2589
  bool                isStatic () const;
 
2590
  /** Check if the entity is declared \e extern. */
 
2591
  bool                isExtern () const;
 
2592
  /** Check if the entity is declared \e mutable. */
 
2593
  bool                isMutable () const;
 
2594
  /** Check if the entity is declared \e register. */
 
2595
  bool                isRegister () const;
 
2596
  /** Check if the entity is declared \e explicit. */
 
2597
  bool                isExplicit () const;
 
2598
  /** Check if the entity is declared \e inline. */
 
2599
  bool                isInline () const;
 
2600
  /** Check if the entity is declared \e auto. */
 
2601
  bool                isAuto () const;
 
2602
  /** Check if the given semantic object is registered as
 
2603
   *  being connected to this semantic object in any way.
 
2604
   *  \param s The semantic object. */
 
2605
  bool                isRegistered (const CStructure* s) const;
 
2606
 
 
2607
  /** Set the name of the entity.
 
2608
   *  \param s The name. */
 
2609
  void                Name (const char* s) { Name(DString(s==0?"":s)); }
 
2610
  /** Set the name of the entity.
 
2611
   *  \param ds The name. */
 
2612
  void                Name (const DString& ds);
 
2613
  /** Set the type of the entity. 
 
2614
   *  \param type The type information. */
 
2615
  void                TypeInfo (CTypeInfo *type);
 
2616
  /** Set the base class object for the entity this entity overloads.
 
2617
   *  \param base The base object. */
 
2618
  void                BaseObject (CObjectInfo *base);
 
2619
  /** Set the member access protection of the entity. 
 
2620
   *  \param p The protection. */
 
2621
  void                Protection (CProtection::Type p);
 
2622
  /** Set the linkage of the entity.
 
2623
   *  \param l The linkage. */
 
2624
  void                Linkage (CLinkage::Type l);
 
2625
  /** Set the storage class of the entity. 
 
2626
   *  \param s The storage class. */
 
2627
  void                Storage (CStorage::Type s);
 
2628
  /** Set the source file information for the entity.
 
2629
   *  \param finfo The file information. */
 
2630
  void                FileInfo (CFileInfo *finfo);
 
2631
  /** Set the syntax tree node of the entity.
 
2632
   *  \param tree The syntax tree node. */
 
2633
  void                Tree (CTree *tree);    
 
2634
  /** Set the semantic information database object containing
 
2635
   *  this semantic object. 
 
2636
   *  \deprecated Use CObjectInfo::SemDB(CSemDatabase*) instead. 
 
2637
   *  \param db The semantic database. */
 
2638
  void                ClassDB (CSemDatabase *db);
 
2639
  /** Set the semantic information database object containing
 
2640
   *  this semantic object. 
 
2641
   *  \param db The semantic database. */
 
2642
  void                SemDB (CSemDatabase *db);
 
2643
  /** Set that only the members of this semantic object are destroyed 
 
2644
   *  in the destructor. Otherwise it is also tried to remove all 
 
2645
   *  references to this object in other semantic objects. */
 
2646
  void                DeleteMembersOnly ();
 
2647
  /** Set the link to next semantic object. Usually the semantic objects
 
2648
   *  for the definition and declaration of an entity are linked. 
 
2649
   *  \param obj The next object in the chain. */
 
2650
  void                NextObject (CObjectInfo *obj); 
 
2651
  /** Set the link to next semantic object. Usually the semantic objects
 
2652
   *  for the definition and declaration of an entity are linked.
 
2653
   *  \param obj The previous object in the chain. */
 
2654
  void                PrevObject (CObjectInfo *obj); 
 
2655
  /** Unlink this semantic object. Usually the semantic objects
 
2656
   *  for the definition and declaration of an entity are linked. 
 
2657
   *  This method removes this object from the chain. */
 
2658
  void                Unlink (); 
 
2659
  /** Register the given semantic object as being connected to 
 
2660
   *  this semantic object in any way.
 
2661
   *  \param s The semantic object. */
 
2662
  void                Register (CStructure *s);
 
2663
  /** Unregister the given semantic object as being connected to 
 
2664
   *  this semantic object in any way.
 
2665
   *  \param s The semantic object. */
 
2666
  void                Unregister (CStructure *s);
 
2667
  /** Set whether the entity was declared \e virtual.
 
2668
   *  \param v True for yes, false for no. */
 
2669
  void                isVirtual (bool v);
 
2670
  /** Set whether the entity was declared \e static.
 
2671
   *  \param v True for yes, false for no. */
 
2672
  void                isStatic (bool v);
 
2673
  /** Set whether the entity was declared \e extern.
 
2674
   *  \param v True for yes, false for no. */
 
2675
  void                isExtern (bool v);
 
2676
  /** Set whether the entity was declared \e mutable.
 
2677
   *  \param v True for yes, false for no. */
 
2678
  void                isMutable (bool v);
 
2679
  /** Set whether the entity was declared \e register.
 
2680
   *  \param v True for yes, false for no. */
 
2681
  void                isRegister (bool v);
 
2682
  /** Set whether the entity was declared \e explicit.
 
2683
   *  \param v True for yes, false for no. */
 
2684
  void                isExplicit (bool v);
 
2685
  /** Set whether the entity was declared \e inline.
 
2686
   *  \param v True for yes, false for no. */
 
2687
  void                isInline (bool v);
 
2688
  /** Set whether the entity was declared \e auto.
 
2689
   *  \param v True for yes, false for no. */
 
2690
  void                isAuto (bool v);
 
2691
  /** Set the assigned scope of the entity. This is the scope of
 
2692
   *  a friend class or function. It is not the scope in which the 
 
2693
   *  friend class or function was declared. A friend function of 
 
2694
   *  a class may be declared first inside the scope of a class 
 
2695
   *  definition. But the declared function does not belong to 
 
2696
   *  this scope. In fact it belongs to the nearest non-class scope 
 
2697
   *  (usually the file scope). This is the assigned scope.
 
2698
   *  \param s The assigned scope. */
 
2699
  void                AssignedScope (CStructure *s);
 
2700
 
 
2701
protected:  
 
2702
  /** Constructor.
 
2703
   *  \param id The semantic object type. */
 
2704
  CObjectInfo (ObjectId id);
 
2705
 
 
2706
  /** Clean up the semantic object. This is usually done before
 
2707
   *  the semantic object is destroyed. */
 
2708
  void CleanUp ();
 
2709
public:
 
2710
  typedef AC::TL<bool,AC::TL<Puma::DString,AC::TL<const char *,AC::TL<bool,AC::TL<bool,AC::TL<Puma::CTypeInfo *,AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CSemDatabase *,AC::TL<Puma::CTree *,AC::TL<Puma::CObjectInfo::ObjectId,AC::TL<Puma::CSpecifiers,AC::TL<Puma::CSourceInfo,AC::TL<Puma::CProtection::Type,AC::TL<Puma::CLinkage::Type,AC::TL<Puma::CStorage::Type,AC::TL<Puma::CLanguage,AC::TL<Puma::CStructure *,AC::TL<Puma::CStructure *,AC::TL<Puma::Array< Puma::CStructure * >,AC::TLE > > > > > > > > > > > > > > > > > > > > > __AttrTypes;
 
2711
  const char *__attr_name (unsigned i) const {
 
2712
    static const char *names[] = { "_DeleteMembersOnly", "_Name", "_QualName", "_abs", "_tdef", "_TypeInfo", "_BaseObject", "_Next", "_Prev", "_SemDB", "_Tree", "_Id", "_Specifiers", "_SourceInfo", "_Protection", "_Linkage", "_Storage", "_Language", "_QualScope", "_AssignedScope", "_Registered" }; return names[i];
 
2713
  }
 
2714
  const void *__attr (unsigned __i) const {
 
2715
    switch (__i) { case 20: return &_DeleteMembersOnly; case 21: return &_Name; case 22: return &_QualName; case 23: return &_abs; case 24: return &_tdef; case 25: return &_TypeInfo; case 26: return &_BaseObject; case 27: return &_Next; case 28: return &_Prev; case 29: return &_SemDB; case 30: return &_Tree; case 31: return &_Id; case 32: return &_Specifiers; case 33: return &_SourceInfo; case 34: return &_Protection; case 35: return &_Linkage; case 36: return &_Storage; case 37: return &_Language; case 38: return &_QualScope; case 39: return &_AssignedScope; case 41: return &_Registered; default: return 0; }
 
2716
  }
 
2717
#line 620 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
2718
};
 
2719
 
 
2720
inline CObjectInfo::CObjectInfo (CObjectInfo::ObjectId id) :
 
2721
  _DeleteMembersOnly (false),
 
2722
  _Name              (),
 
2723
  _QualName          ((const char*)0),
 
2724
  _TypeInfo          ((CTypeInfo*)0),
 
2725
  _BaseObject        ((CObjectInfo*)0),
 
2726
  _Next              ((CObjectInfo*)this),
 
2727
  _Prev              ((CObjectInfo*)this),
 
2728
  _SemDB             ((CSemDatabase*)0),
 
2729
  _Tree              ((CTree*)0),
 
2730
  _Id                (id),
 
2731
  _Protection        (CProtection::PROT_NONE), 
 
2732
  _Linkage           (CLinkage::LINK_NONE),
 
2733
  _Storage           (CStorage::CLASS_NONE),
 
2734
  _QualScope         ((CStructure*)0),
 
2735
  _AssignedScope     ((CStructure*)0)
 
2736
 {}
 
2737
 
 
2738
inline CObjectInfo::ObjectId CObjectInfo::Id () const
 
2739
 { return _Id; }
 
2740
 
 
2741
inline bool CObjectInfo::operator !=(const CObjectInfo &info) const
 
2742
 { return ! (*this == info); }
 
2743
 
 
2744
inline const DString& CObjectInfo::Name () const 
 
2745
 { return _Name; }
 
2746
inline CTypeInfo *CObjectInfo::TypeInfo () const
 
2747
 { return _TypeInfo; }
 
2748
inline CSourceInfo *CObjectInfo::SourceInfo () const
 
2749
 { return (CSourceInfo*)&_SourceInfo; }
 
2750
inline CProtection::Type CObjectInfo::Protection () const
 
2751
 { return _Protection; }
 
2752
inline CLinkage::Type CObjectInfo::Linkage () const
 
2753
 { return _Linkage; }
 
2754
inline CStorage::Type CObjectInfo::Storage () const
 
2755
 { return _Storage; }
 
2756
inline CLanguage &CObjectInfo::Language ()
 
2757
 { return _Language; }
 
2758
inline const CLanguage &CObjectInfo::Language () const
 
2759
 { return _Language; }
 
2760
inline CObjectInfo *CObjectInfo::BaseObject () const
 
2761
 { return _BaseObject; }
 
2762
inline CTree *CObjectInfo::Tree () const 
 
2763
 { return _Tree; }
 
2764
inline CSemDatabase *CObjectInfo::ClassDB () const
 
2765
 { return _SemDB; }
 
2766
inline CSemDatabase *CObjectInfo::SemDB () const
 
2767
 { return _SemDB; }
 
2768
inline CT_ExprList *CObjectInfo::Init () const 
 
2769
 { return (CT_ExprList*)0; }
 
2770
 
 
2771
inline void CObjectInfo::Protection (CProtection::Type s)
 
2772
 { _Protection = s; }
 
2773
inline void CObjectInfo::Linkage (CLinkage::Type s)
 
2774
 { _Linkage = s; }
 
2775
inline void CObjectInfo::Storage (CStorage::Type s)
 
2776
 { _Storage = s; }
 
2777
inline void CObjectInfo::BaseObject (CObjectInfo *info)
 
2778
 { _BaseObject = info; }
 
2779
inline void CObjectInfo::Tree (CTree *t)    
 
2780
 { _Tree = t; }
 
2781
inline void CObjectInfo::ClassDB (CSemDatabase *db) 
 
2782
 { _SemDB = db; }
 
2783
inline void CObjectInfo::SemDB (CSemDatabase *db) 
 
2784
 { _SemDB = db; }
 
2785
inline void CObjectInfo::DeleteMembersOnly () 
 
2786
 { _DeleteMembersOnly = true; }
 
2787
 
 
2788
inline void CObjectInfo::Register (CStructure *scope)
 
2789
 { _Registered.append (scope); }
 
2790
 
 
2791
inline bool CObjectInfo::isAnonymous () const 
 
2792
 { return (Name ().empty () || *Name ().c_str () == '%'); }
 
2793
inline bool CObjectInfo::isBuiltin () const
 
2794
 { return ! (Tree ()); }
 
2795
inline bool CObjectInfo::isTemplateInstance () const 
 
2796
 { return (ClassInstance () || UnionInstance () || FctInstance ()); }
 
2797
 
 
2798
inline bool CObjectInfo::isVirtual () const
 
2799
 { return _Specifiers == CSpecifiers::SPEC_VIRTUAL; }
 
2800
inline bool CObjectInfo::isStatic () const
 
2801
 { return _Specifiers == CSpecifiers::SPEC_STATIC; }
 
2802
inline bool CObjectInfo::isExtern () const
 
2803
 { return _Specifiers == CSpecifiers::SPEC_EXTERN; }
 
2804
inline bool CObjectInfo::isMutable () const
 
2805
 { return _Specifiers == CSpecifiers::SPEC_MUTABLE; }
 
2806
inline bool CObjectInfo::isRegister () const
 
2807
 { return _Specifiers == CSpecifiers::SPEC_REGISTER; }
 
2808
inline bool CObjectInfo::isExplicit () const
 
2809
 { return _Specifiers == CSpecifiers::SPEC_EXPLICIT; }
 
2810
inline bool CObjectInfo::isInline () const
 
2811
 { return _Specifiers == CSpecifiers::SPEC_INLINE; }
 
2812
inline bool CObjectInfo::isAuto () const
 
2813
 { return _Specifiers == CSpecifiers::SPEC_AUTO; }
 
2814
 
 
2815
inline void CObjectInfo::isVirtual (bool v)
 
2816
 { if (v) _Specifiers += CSpecifiers::SPEC_VIRTUAL; 
 
2817
   else   _Specifiers -= CSpecifiers::SPEC_VIRTUAL; }
 
2818
inline void CObjectInfo::isStatic (bool v)
 
2819
 { if (v) _Specifiers += CSpecifiers::SPEC_STATIC; 
 
2820
   else   _Specifiers -= CSpecifiers::SPEC_STATIC; }
 
2821
inline void CObjectInfo::isExtern (bool v)
 
2822
 { if (v) _Specifiers += CSpecifiers::SPEC_EXTERN; 
 
2823
   else   _Specifiers -= CSpecifiers::SPEC_EXTERN; }
 
2824
inline void CObjectInfo::isMutable (bool v)
 
2825
 { if (v) _Specifiers += CSpecifiers::SPEC_MUTABLE; 
 
2826
   else   _Specifiers -= CSpecifiers::SPEC_MUTABLE; }
 
2827
inline void CObjectInfo::isRegister (bool v)
 
2828
 { if (v) _Specifiers += CSpecifiers::SPEC_REGISTER; 
 
2829
   else   _Specifiers -= CSpecifiers::SPEC_REGISTER; }
 
2830
inline void CObjectInfo::isExplicit (bool v)
 
2831
 { if (v) _Specifiers += CSpecifiers::SPEC_EXPLICIT; 
 
2832
   else   _Specifiers -= CSpecifiers::SPEC_EXPLICIT; }
 
2833
inline void CObjectInfo::isInline (bool v)
 
2834
 { if (v) _Specifiers += CSpecifiers::SPEC_INLINE; 
 
2835
   else   _Specifiers -= CSpecifiers::SPEC_INLINE; }
 
2836
inline void CObjectInfo::isAuto (bool v)
 
2837
 { if (v) _Specifiers += CSpecifiers::SPEC_AUTO; 
 
2838
   else   _Specifiers -= CSpecifiers::SPEC_AUTO; }
 
2839
 
 
2840
// link objects
 
2841
 
 
2842
inline CObjectInfo *CObjectInfo::NextObject () const
 
2843
 { return _Next; }
 
2844
inline CObjectInfo *CObjectInfo::PrevObject () const
 
2845
 { return _Prev; }
 
2846
 
 
2847
inline CMemberAliasInfo *CObjectInfo::MemberAliasInfo () const
 
2848
 { return _Id == MEMBERALIAS_INFO ? (CMemberAliasInfo*)this : (CMemberAliasInfo*)0; }
 
2849
inline CBaseClassInfo *CObjectInfo::BaseClassInfo () const
 
2850
 { return _Id == BASECLASS_INFO ? (CBaseClassInfo*)this : (CBaseClassInfo*)0; }
 
2851
inline CClassInfo *CObjectInfo::ClassInfo () const
 
2852
 { return _Id == CLASS_INFO || _Id == CLASS_INSTANCE_INFO ? (CClassInfo*)this : (CClassInfo*)0; }
 
2853
inline CUnionInfo *CObjectInfo::UnionInfo () const
 
2854
 { return _Id == UNION_INFO || _Id == UNION_INSTANCE_INFO ? (CUnionInfo*)this : (CUnionInfo*)0; }
 
2855
inline CEnumInfo *CObjectInfo::EnumInfo () const
 
2856
 { return _Id == ENUM_INFO ? (CEnumInfo*)this : (CEnumInfo*)0; }
 
2857
inline CUsingInfo *CObjectInfo::UsingInfo () const
 
2858
 { return _Id == USING_INFO ? (CUsingInfo*)this : (CUsingInfo*)0; }
 
2859
inline CEnumeratorInfo *CObjectInfo::EnumeratorInfo () const
 
2860
 { return _Id == ENUMERATOR_INFO ? (CEnumeratorInfo*)this : (CEnumeratorInfo*)0; }
 
2861
inline CTypedefInfo *CObjectInfo::TypedefInfo () const
 
2862
 { return _Id == TYPEDEF_INFO ? (CTypedefInfo*)this : (CTypedefInfo*)0; }
 
2863
inline CFunctionInfo *CObjectInfo::FunctionInfo () const
 
2864
 { return _Id == FUNCTION_INFO || _Id == FCT_INSTANCE_INFO ? (CFunctionInfo*)this : (CFunctionInfo*)0; }
 
2865
inline CArgumentInfo *CObjectInfo::ArgumentInfo () const
 
2866
 { return _Id == ARGUMENT_INFO ? (CArgumentInfo*)this : (CArgumentInfo*)0; }
 
2867
inline CAttributeInfo *CObjectInfo::AttributeInfo () const
 
2868
 { return _Id == ATTRIBUTE_INFO || _Id == ENUMERATOR_INFO ? (CAttributeInfo*)this : (CAttributeInfo*)0; }
 
2869
inline CNamespaceInfo *CObjectInfo::NamespaceInfo () const
 
2870
 { return _Id == NAMESPACE_INFO || _Id == FILE_INFO ? (CNamespaceInfo*)this : (CNamespaceInfo*)0; }
 
2871
inline CLabelInfo *CObjectInfo::LabelInfo () const
 
2872
 { return _Id == LABEL_INFO ? (CLabelInfo*)this : (CLabelInfo*)0; }
 
2873
inline CFileInfo *CObjectInfo::FileInfo () const
 
2874
 { return _Id == FILE_INFO ? (CFileInfo*)this : (CFileInfo*)0; }
 
2875
inline CStructure *CObjectInfo::Structure () const
 
2876
 { return NamespaceInfo () || ClassInfo () || UnionInfo () || 
 
2877
          FunctionInfo () || TemplateInfo () || LocalScope () ? 
 
2878
          (CStructure*)this : (CStructure*)0; }
 
2879
inline CRecord *CObjectInfo::Record () const
 
2880
 { return ClassInfo () || UnionInfo () ? (CRecord*)this : (CRecord*)0; }
 
2881
inline CLocalScope *CObjectInfo::LocalScope () const
 
2882
 { return _Id == LOCAL_INFO ? (CLocalScope*)this : (CLocalScope*)0; }
 
2883
inline CTemplateParamInfo *CObjectInfo::TemplateParamInfo () const
 
2884
 { return _Id == TEMPLATE_PARAM_INFO ? (CTemplateParamInfo*)this : (CTemplateParamInfo*)0; }
 
2885
inline CTemplateInfo *CObjectInfo::TemplateInfo () const
 
2886
 { return _Id == TEMPLATE_INFO ? (CTemplateInfo*)this : (CTemplateInfo*)0; }
 
2887
inline CScopeInfo *CObjectInfo::ScopeInfo () const
 
2888
 { return /*_Id == SCOPE_INFO ||*/ Structure () ? (CScopeInfo*)this : (CScopeInfo*)0; }
 
2889
inline CObjectInfo *CObjectInfo::ObjectInfo () const
 
2890
 { return (CObjectInfo*)this; }
 
2891
inline CClassInstance *CObjectInfo::ClassInstance () const
 
2892
 { return _Id == CLASS_INSTANCE_INFO ? (CClassInstance*)this : (CClassInstance*)0; }
 
2893
inline CUnionInstance *CObjectInfo::UnionInstance () const
 
2894
 { return _Id == UNION_INSTANCE_INFO ? (CUnionInstance*)this : (CUnionInstance*)0; }
 
2895
inline CFctInstance *CObjectInfo::FctInstance () const
 
2896
 { return _Id == FCT_INSTANCE_INFO ? (CFctInstance*)this : (CFctInstance*)0; }
 
2897
 
 
2898
inline CStructure *CObjectInfo::QualifiedScope () const { 
 
2899
  return _QualScope;
 
2900
}
 
2901
 
 
2902
inline void CObjectInfo::AssignedScope (CStructure *s)
 
2903
 { _AssignedScope = s; }
 
2904
inline CStructure *CObjectInfo::AssignedScope () const
 
2905
 { return _AssignedScope; } 
 
2906
 
 
2907
 
 
2908
} // namespace Puma
 
2909
 
 
2910
#endif /* __CObjectInfo_h__ */
 
2911
 
 
2912
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeRequest.h"
 
2913
namespace Puma {
 
2914
 
 
2915
 
 
2916
class CScopeInfo;
 
2917
 
 
2918
 
 
2919
/** \class CScopeRequest CScopeRequest.h Puma/CScopeRequest.h
 
2920
 *  Provides additional scope information for semantic 
 
2921
 *  objects that are not scopes itself (like objects). */
 
2922
 
 
2923
#line 2924 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
2924
} // closed Puma
 
2925
class CCExprResolve;
 
2926
class CExprResolve;
 
2927
class WinIfExists;
 
2928
class WinImportHandler;
 
2929
class WinMacros;
 
2930
class WinAsm;
 
2931
class WinDeclSpecs;
 
2932
class WinMemberExplSpec;
 
2933
class WinTypeKeywords;
 
2934
class WinFriend;
 
2935
class ExtAC;
 
2936
class ExtACBuilderCoupling;
 
2937
class ExtACSyntaxCoupling;
 
2938
class ExtACTree;
 
2939
class ExtACKeywords;
 
2940
class ExtGnu;
 
2941
class PragmaOnceUnitState;
 
2942
class PragmaOnce;
 
2943
class CMatchSyntax;
 
2944
namespace Puma {
 
2945
 
 
2946
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeRequest.h"
 
2947
class CScopeRequest : public CObjectInfo {
 
2948
#line 2949 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
2949
  friend class ::CCExprResolve;
 
2950
  friend class ::CExprResolve;
 
2951
  friend class ::WinIfExists;
 
2952
  friend class ::WinImportHandler;
 
2953
  friend class ::WinMacros;
 
2954
  friend class ::WinAsm;
 
2955
  friend class ::WinDeclSpecs;
 
2956
  friend class ::WinMemberExplSpec;
 
2957
  friend class ::WinTypeKeywords;
 
2958
  friend class ::WinFriend;
 
2959
  friend class ::ExtAC;
 
2960
  friend class ::ExtACBuilderCoupling;
 
2961
  friend class ::ExtACSyntaxCoupling;
 
2962
  friend class ::ExtACTree;
 
2963
  friend class ::ExtACKeywords;
 
2964
  friend class ::ExtGnu;
 
2965
  friend class ::PragmaOnceUnitState;
 
2966
  friend class ::PragmaOnce;
 
2967
  friend class ::CMatchSyntax;
 
2968
 
 
2969
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeRequest.h"
 
2970
 
 
2971
  CScopeInfo *_Scope;
 
2972
 
 
2973
protected:
 
2974
  /** Constructor.
 
2975
   *  \param id The object type. */
 
2976
  CScopeRequest (ObjectId id);
 
2977
 
 
2978
public: 
 
2979
  /** Destructor. */
 
2980
  ~CScopeRequest ();
 
2981
  
 
2982
  /** Get the enclosing scope. */
 
2983
  CScopeInfo *Scope () const;
 
2984
  /** Set the enclosing scope.
 
2985
   *  \param scope The scope. */
 
2986
  void Scope (CScopeInfo *scope);
 
2987
public:
 
2988
  typedef AC::TL<Puma::CScopeInfo *,AC::TLE > __AttrTypes;
 
2989
  const char *__attr_name (unsigned i) const {
 
2990
    static const char *names[] = { "_Scope" }; return names[i];
 
2991
  }
 
2992
  const void *__attr (unsigned __i) const {
 
2993
    switch (__i) { case 0: return &_Scope; default: return 0; }
 
2994
  }
 
2995
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeRequest.h"
 
2996
};
 
2997
 
 
2998
inline CScopeRequest::CScopeRequest (CObjectInfo::ObjectId id) :
 
2999
  CObjectInfo (id),
 
3000
  _Scope ((CScopeInfo*)0)
 
3001
 {}
 
3002
inline CScopeRequest::~CScopeRequest ()
 
3003
 {}
 
3004
 
 
3005
inline CScopeInfo *CScopeRequest::Scope () const
 
3006
 { return _Scope; }
 
3007
inline void CScopeRequest::Scope (CScopeInfo *s)
 
3008
 { _Scope = s; }
 
3009
 
 
3010
 
 
3011
} // namespace Puma
 
3012
 
 
3013
#endif /* __CScopeRequest_h__ */
 
3014
 
 
3015
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CAttributeInfo.h"
 
3016
namespace Puma {
 
3017
 
 
3018
 
 
3019
class CT_InitDeclarator;
 
3020
class CT_ExprList;
 
3021
class CTemplateInfo;
 
3022
class CRecord;
 
3023
class CNamespaceInfo;
 
3024
 
 
3025
/** \class CAttributeInfo CAttributeInfo.h Puma/CAttributeInfo.h
 
3026
 *  Semantic information about a local or global object or a 
 
3027
 *  class data member. */
 
3028
 
 
3029
#line 3030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
3030
} // closed Puma
 
3031
class CCExprResolve;
 
3032
class CExprResolve;
 
3033
class WinIfExists;
 
3034
class WinImportHandler;
 
3035
class WinMacros;
 
3036
class WinAsm;
 
3037
class WinDeclSpecs;
 
3038
class WinMemberExplSpec;
 
3039
class WinTypeKeywords;
 
3040
class WinFriend;
 
3041
class ExtAC;
 
3042
class ExtACBuilderCoupling;
 
3043
class ExtACSyntaxCoupling;
 
3044
class ExtACTree;
 
3045
class ExtACKeywords;
 
3046
class ExtGnu;
 
3047
class PragmaOnceUnitState;
 
3048
class PragmaOnce;
 
3049
class CMatchSyntax;
 
3050
namespace Puma {
 
3051
 
 
3052
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CAttributeInfo.h"
 
3053
class CAttributeInfo : public CScopeRequest {
 
3054
#line 3055 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
3055
  friend class ::CCExprResolve;
 
3056
  friend class ::CExprResolve;
 
3057
  friend class ::WinIfExists;
 
3058
  friend class ::WinImportHandler;
 
3059
  friend class ::WinMacros;
 
3060
  friend class ::WinAsm;
 
3061
  friend class ::WinDeclSpecs;
 
3062
  friend class ::WinMemberExplSpec;
 
3063
  friend class ::WinTypeKeywords;
 
3064
  friend class ::WinFriend;
 
3065
  friend class ::ExtAC;
 
3066
  friend class ::ExtACBuilderCoupling;
 
3067
  friend class ::ExtACSyntaxCoupling;
 
3068
  friend class ::ExtACTree;
 
3069
  friend class ::ExtACKeywords;
 
3070
  friend class ::ExtGnu;
 
3071
  friend class ::PragmaOnceUnitState;
 
3072
  friend class ::PragmaOnce;
 
3073
  friend class ::CMatchSyntax;
 
3074
 
 
3075
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CAttributeInfo.h"
 
3076
 
 
3077
  CTemplateInfo *_TemplateInfo;
 
3078
  
 
3079
protected:
 
3080
  /** Constructor. 
 
3081
   *  \param id The object type. */
 
3082
  CAttributeInfo (ObjectId id);
 
3083
 
 
3084
public: 
 
3085
  /** Constructor. */
 
3086
  CAttributeInfo ();
 
3087
  /** Destructor. If the object type is CObjectInfo::ATTRIBUTE_INFO, 
 
3088
   *  then CObjectInfo::CleanUp() is called. */
 
3089
  ~CAttributeInfo ();
 
3090
  
 
3091
  /** Get the semantic object for the object definition. 
 
3092
   *  \see CObjectInfo::DefObject() */
 
3093
  CAttributeInfo *DefObject () const;         
 
3094
  /** Get the syntax tree node of the object. */
 
3095
  CT_InitDeclarator *Tree () const;  
 
3096
  /** Get the initializer of the object.
 
3097
   *  \return The syntax tree node of the initializer or NULL
 
3098
   *          if there is no initializer. */  
 
3099
  CT_ExprList *Init () const;
 
3100
 
 
3101
  /** Get the template information object if this is a static 
 
3102
   *  data member of a class template. 
 
3103
   *  \return The template information object or NULL. */
 
3104
  CTemplateInfo *TemplateInfo () const;
 
3105
  /** Set the template information object of a static data 
 
3106
   *  member of a class template. 
 
3107
   *  \param info The semantic object of the template. */
 
3108
  void TemplateInfo (CTemplateInfo *info);
 
3109
 
 
3110
  /** Get the class or union if this is a data member of a class or union. 
 
3111
   *  \return The class or union, or NULL if not a member. */
 
3112
  CRecord *Record () const;
 
3113
  /** Get the namespace if the object is declared in a namespace. 
 
3114
   *  \return The namespace or NULL if not declared in a namespace. */
 
3115
  CNamespaceInfo *Namespace () const;
 
3116
  /** Set the qualification scope of the object. This can be a namespace
 
3117
   *  for objects declared in a namespace or a class/union for data 
 
3118
   *  members of a class/union. 
 
3119
   *  \param scope The qualification scope. */
 
3120
  void QualifiedScope (CStructure *scope);
 
3121
public:
 
3122
  typedef AC::TL<Puma::CTemplateInfo *,AC::TLE > __AttrTypes;
 
3123
  const char *__attr_name (unsigned i) const {
 
3124
    static const char *names[] = { "_TemplateInfo" }; return names[i];
 
3125
  }
 
3126
  const void *__attr (unsigned __i) const {
 
3127
    switch (__i) { case 0: return &_TemplateInfo; default: return 0; }
 
3128
  }
 
3129
#line 84 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CAttributeInfo.h"
 
3130
};
 
3131
 
 
3132
inline CAttributeInfo::CAttributeInfo () :
 
3133
  CScopeRequest (CObjectInfo::ATTRIBUTE_INFO),
 
3134
  _TemplateInfo ((CTemplateInfo*)0)
 
3135
 {}
 
3136
inline CAttributeInfo::CAttributeInfo (CObjectInfo::ObjectId id) :
 
3137
  CScopeRequest (id),
 
3138
  _TemplateInfo ((CTemplateInfo*)0)
 
3139
 {}
 
3140
 
 
3141
inline CTemplateInfo *CAttributeInfo::TemplateInfo () const
 
3142
 { return _TemplateInfo; }
 
3143
inline void CAttributeInfo::TemplateInfo (CTemplateInfo *info) 
 
3144
 { _TemplateInfo = info; }
 
3145
 
 
3146
inline void CAttributeInfo::QualifiedScope (CStructure *s)
 
3147
 { _QualScope = s; }
 
3148
 
 
3149
 
 
3150
} // namespace Puma
 
3151
 
 
3152
#endif /* __CAttributeInfo_h__ */
 
3153
 
 
3154
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
3155
// This file is part of PUMA.
 
3156
// Copyright (C) 1999-2003  The PUMA developer team.
 
3157
//                                                                
 
3158
// This program is free software;  you can redistribute it and/or 
 
3159
// modify it under the terms of the GNU General Public License as 
 
3160
// published by the Free Software Foundation; either version 2 of 
 
3161
// the License, or (at your option) any later version.            
 
3162
//                                                                
 
3163
// This program is distributed in the hope that it will be useful,
 
3164
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
3165
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
3166
// GNU General Public License for more details.                   
 
3167
//                                                                
 
3168
// You should have received a copy of the GNU General Public      
 
3169
// License along with this program; if not, write to the Free     
 
3170
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
3171
// MA  02111-1307  USA                                            
 
3172
 
 
3173
#ifndef __CTypeInfo_h__
 
3174
#define __CTypeInfo_h__
 
3175
 
 
3176
/** \file
 
3177
 *  Entity type information. */
 
3178
 
 
3179
 
 
3180
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Printable.h"
 
3181
// This file is part of PUMA.
 
3182
// Copyright (C) 1999-2003  The PUMA developer team.
 
3183
//                                                                
 
3184
// This program is free software;  you can redistribute it and/or 
 
3185
// modify it under the terms of the GNU General Public License as 
 
3186
// published by the Free Software Foundation; either version 2 of 
 
3187
// the License, or (at your option) any later version.            
 
3188
//                                                                
 
3189
// This program is distributed in the hope that it will be useful,
 
3190
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
3191
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
3192
// GNU General Public License for more details.                   
 
3193
//                                                                
 
3194
// You should have received a copy of the GNU General Public      
 
3195
// License along with this program; if not, write to the Free     
 
3196
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
3197
// MA  02111-1307  USA                                            
 
3198
 
 
3199
#ifndef __printable_h__
 
3200
#define __printable_h__
 
3201
 
 
3202
/** \file
 
3203
 *  Object printing. */
 
3204
 
 
3205
#include <iostream>
 
3206
using namespace std;
 
3207
 
 
3208
namespace Puma {
 
3209
 
 
3210
 
 
3211
/** \class Printable Printable.h Puma/Printable.h
 
3212
 *  Provides that possibility for an object to be 
 
3213
 *  used with output streams (std::ostream). Derived 
 
3214
 *  classes have to implement method Printable::print(). 
 
3215
 *
 
3216
 *  Example:
 
3217
 *  \code
 
3218
 * class Name : public Puma::Printable {
 
3219
 *   const char* the_name;
 
3220
 * public:
 
3221
 *   Name(const char* n) : the_name(n) {}
 
3222
 *   void print(ostream &os) { 
 
3223
 *     os << "[name: " << the_name << "]"; 
 
3224
 *   }
 
3225
 * };
 
3226
 *
 
3227
 * Name adam("adam");
 
3228
 * std::cout << adam << std::endl;  // prints "[name: adam]\n"
 
3229
 *  \endcode */
 
3230
 
 
3231
#line 3232 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
3232
} // closed Puma
 
3233
class CCExprResolve;
 
3234
class CExprResolve;
 
3235
class WinIfExists;
 
3236
class WinImportHandler;
 
3237
class WinMacros;
 
3238
class WinAsm;
 
3239
class WinDeclSpecs;
 
3240
class WinMemberExplSpec;
 
3241
class WinTypeKeywords;
 
3242
class WinFriend;
 
3243
class ExtAC;
 
3244
class ExtACBuilderCoupling;
 
3245
class ExtACSyntaxCoupling;
 
3246
class ExtACTree;
 
3247
class ExtACKeywords;
 
3248
class ExtGnu;
 
3249
class PragmaOnceUnitState;
 
3250
class PragmaOnce;
 
3251
class CMatchSyntax;
 
3252
namespace Puma {
 
3253
 
 
3254
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Printable.h"
 
3255
class Printable {
 
3256
#line 3257 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
3257
  friend class ::CCExprResolve;
 
3258
  friend class ::CExprResolve;
 
3259
  friend class ::WinIfExists;
 
3260
  friend class ::WinImportHandler;
 
3261
  friend class ::WinMacros;
 
3262
  friend class ::WinAsm;
 
3263
  friend class ::WinDeclSpecs;
 
3264
  friend class ::WinMemberExplSpec;
 
3265
  friend class ::WinTypeKeywords;
 
3266
  friend class ::WinFriend;
 
3267
  friend class ::ExtAC;
 
3268
  friend class ::ExtACBuilderCoupling;
 
3269
  friend class ::ExtACSyntaxCoupling;
 
3270
  friend class ::ExtACTree;
 
3271
  friend class ::ExtACKeywords;
 
3272
  friend class ::ExtGnu;
 
3273
  friend class ::PragmaOnceUnitState;
 
3274
  friend class ::PragmaOnce;
 
3275
  friend class ::CMatchSyntax;
 
3276
 
 
3277
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Printable.h"
 
3278
 
 
3279
public:
 
3280
  /** Destructor. */
 
3281
  virtual ~Printable () {}
 
3282
  /** Print something on the given output stream.
 
3283
   *  \param os The output stream. */
 
3284
  virtual void print (ostream &os) const = 0;
 
3285
public:
 
3286
  typedef AC::TLE __AttrTypes;
 
3287
  const char *__attr_name (unsigned i) const { return 0; }
 
3288
  const void *__attr (unsigned __i) const { return 0; }
 
3289
#line 57 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Printable.h"
 
3290
};
 
3291
 
 
3292
 
 
3293
/** Output stream operator for Puma::Printable objects. 
 
3294
 *  Calls method Printable::print() on the output stream.
 
3295
 *  \param os The output stream. 
 
3296
 *  \param object The object to print. */
 
3297
inline ostream &operator << (ostream &os, const Printable &object) {
 
3298
  object.print (os);
 
3299
  return os;
 
3300
}
 
3301
 
 
3302
 
 
3303
} // namespace Puma
 
3304
 
 
3305
#endif /* __printable_h__ */
 
3306
 
 
3307
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
3308
namespace Puma {
 
3309
 
 
3310
 
 
3311
class CSemDatabase;
 
3312
class CRecord;
 
3313
class CClassInfo;
 
3314
class CUnionInfo;
 
3315
class CEnumInfo;
 
3316
class CFunctionInfo;
 
3317
class CTypeList;
 
3318
class CTypeQualified;
 
3319
class CTypeFunction;
 
3320
class CTypeBitField; 
 
3321
class CTypePointer; 
 
3322
class CTypeMemberPointer; 
 
3323
class CTypeTemplateParam; 
 
3324
class CTypeAddress; 
 
3325
class CTypeArray; 
 
3326
class CTypeVarArray;
 
3327
class CTypeClass;
 
3328
class CTypeUnion;
 
3329
class CTypeEnum;
 
3330
class CTypePrimitive;
 
3331
class CTypeRecord;
 
3332
class CT_ExprList;
 
3333
class CObjectInfo;
 
3334
class CScopeInfo;
 
3335
class CTemplateParamInfo;
 
3336
 
 
3337
 
 
3338
/** \class CTypeInfo CTypeInfo.h Puma/CTypeInfo.h
 
3339
 *  Type information for an entity (class, function, object, etc). 
 
3340
 *  There are two kinds of types: fundamental types like 'int', 
 
3341
 *  and compound types like 'class X {int i;}'. Types describe 
 
3342
 *  objects, references, or functions. 
 
3343
 *
 
3344
 *  A type is identified by its ID.
 
3345
 *  \code 
 
3346
 * // check if type is a function type
 
3347
 * if (type.Id() == Puma::CTypeInfo::TYPE_FUNCTION) {
 
3348
 *   ...
 
3349
 * }
 
3350
 * // same check
 
3351
 * if (type.TypeFunction()) {
 
3352
 *   ...
 
3353
 * }
 
3354
 * // same check
 
3355
 * if (type.isFunction()) {
 
3356
 *   ...
 
3357
 * }
 
3358
 *  \endcode */
 
3359
 
 
3360
#line 3361 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
3361
} // closed Puma
 
3362
class CCExprResolve;
 
3363
class CExprResolve;
 
3364
class WinIfExists;
 
3365
class WinImportHandler;
 
3366
class WinMacros;
 
3367
class WinAsm;
 
3368
class WinDeclSpecs;
 
3369
class WinMemberExplSpec;
 
3370
class WinTypeKeywords;
 
3371
class WinFriend;
 
3372
class ExtAC;
 
3373
class ExtACBuilderCoupling;
 
3374
class ExtACSyntaxCoupling;
 
3375
class ExtACTree;
 
3376
class ExtACKeywords;
 
3377
class ExtGnu;
 
3378
class PragmaOnceUnitState;
 
3379
class PragmaOnce;
 
3380
class CMatchSyntax;
 
3381
namespace Puma {
 
3382
 
 
3383
#line 78 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
3384
class CTypeInfo : public Printable {
 
3385
#line 3386 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
3386
  friend class ::CCExprResolve;
 
3387
  friend class ::CExprResolve;
 
3388
  friend class ::WinIfExists;
 
3389
  friend class ::WinImportHandler;
 
3390
  friend class ::WinMacros;
 
3391
  friend class ::WinAsm;
 
3392
  friend class ::WinDeclSpecs;
 
3393
  friend class ::WinMemberExplSpec;
 
3394
  friend class ::WinTypeKeywords;
 
3395
  friend class ::WinFriend;
 
3396
  friend class ::ExtAC;
 
3397
  friend class ::ExtACBuilderCoupling;
 
3398
  friend class ::ExtACSyntaxCoupling;
 
3399
  friend class ::ExtACTree;
 
3400
  friend class ::ExtACKeywords;
 
3401
  friend class ::ExtGnu;
 
3402
  friend class ::PragmaOnceUnitState;
 
3403
  friend class ::PragmaOnce;
 
3404
  friend class ::CMatchSyntax;
 
3405
 
 
3406
#line 78 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
3407
 
 
3408
  // needed for type printing
 
3409
  enum PrintState {
 
3410
    PRINT_STD = 0,  // standard
 
3411
    PRINT_PRE = 1,  // printing a declarator prefix like '*' or '&'
 
3412
    PRINT_ABS = 2,  // printing absolute names
 
3413
    PRINT_TPL = 4,  // printing template argument list
 
3414
    PRINT_TDN = 8,  // print typedef names instead of defined type
 
3415
    PRINT_ELA = 16  // print elaborated type specifiers (struct, enum, union)
 
3416
  };
 
3417
 
 
3418
public:
 
3419
  /** Type identifiers. */
 
3420
  enum TypeId {
 
3421
    // DO NOT CHANGE THIS ORDER!!!
 
3422
    /** bool */
 
3423
    TYPE_BOOL,
 
3424
    /** signed char */
 
3425
    TYPE_SIGNED_CHAR,
 
3426
    /** unsiged char */
 
3427
    TYPE_UNSIGNED_CHAR,
 
3428
    /** char */
 
3429
    TYPE_CHAR,
 
3430
    /** unsigned short */
 
3431
    TYPE_UNSIGNED_SHORT,
 
3432
    /** short */
 
3433
    TYPE_SHORT,
 
3434
    /** unsigned int */
 
3435
    TYPE_UNSIGNED_INT,
 
3436
    /** wchar_t */
 
3437
    TYPE_WCHAR_T,
 
3438
    /** int */
 
3439
    TYPE_INT,
 
3440
    /** unsigned long */
 
3441
    TYPE_UNSIGNED_LONG,
 
3442
    /** long */
 
3443
    TYPE_LONG,
 
3444
    /** unsigned long long */
 
3445
    TYPE_UNSIGNED_LONG_LONG,
 
3446
    /** long long */
 
3447
    TYPE_LONG_LONG,
 
3448
    /** float */
 
3449
    TYPE_FLOAT,
 
3450
    /** double */
 
3451
    TYPE_DOUBLE,
 
3452
    /** long double */
 
3453
    TYPE_LONG_DOUBLE,
 
3454
 
 
3455
    /** void */
 
3456
    TYPE_VOID,
 
3457
    /** Undefined type. */
 
3458
    TYPE_UNDEFINED,
 
3459
    /** unknown_t */
 
3460
    TYPE_UNKNOWN_T,
 
3461
    /** Any type. */
 
3462
    TYPE_ELLIPSIS,
 
3463
    
 
3464
    /** Class type. */
 
3465
    TYPE_CLASS,
 
3466
    /** Union type. */
 
3467
    TYPE_UNION,
 
3468
    /** Enumeration type. */
 
3469
    TYPE_ENUM,
 
3470
    /** Pointer type. */
 
3471
    TYPE_POINTER,
 
3472
    /** Reference type. */
 
3473
    TYPE_ADDRESS,
 
3474
    /** Member pointer type. */
 
3475
    TYPE_MEMBER_POINTER,
 
3476
    /** Function type. */
 
3477
    TYPE_FUNCTION,
 
3478
    /** Array type. */
 
3479
    TYPE_ARRAY,
 
3480
    /** Variable length array type. */
 
3481
    TYPE_VAR_ARRAY,
 
3482
    /** Qualified type. */
 
3483
    TYPE_QUALIFIED,
 
3484
    /** Bitfield type. */
 
3485
    TYPE_BIT_FIELD,
 
3486
    
 
3487
    /** Template parameter type. */
 
3488
    TYPE_TEMPLATE_PARAM,
 
3489
    /** No type. */
 
3490
    TYPE_EMPTY
 
3491
  };
 
3492
  
 
3493
  /** Internal representation of size_t. */
 
3494
  static CTypeInfo *CTYPE_SIZE_T;
 
3495
  /** Internal representation of ptrdiff_t. */
 
3496
  static CTypeInfo *CTYPE_PTRDIFF_T;
 
3497
 
 
3498
private:
 
3499
  CTypeInfo   *_Base;
 
3500
  TypeId       _Id;
 
3501
  CObjectInfo *_TypedefInfo;
 
3502
 
 
3503
public:
 
3504
  /** Constructor.
 
3505
   *  \param base The base type of a compound type.
 
3506
   *  \param id The type ID. */
 
3507
  CTypeInfo (CTypeInfo *base, TypeId id);
 
3508
  /** Destructor. */
 
3509
  ~CTypeInfo ();
 
3510
 
 
3511
  /** Check if this type equals the given type. 
 
3512
   *  \param type The type to compare with. */
 
3513
  bool operator ==(const CTypeInfo &type) const;
 
3514
  /** Check if this type not equals the given type. 
 
3515
   *  \param type The type to compare with. */
 
3516
  bool operator !=(const CTypeInfo &type) const;
 
3517
  
 
3518
  /** Print the textual representation of this 
 
3519
   *  type on the given stream.
 
3520
   *  \param os The output stream. */
 
3521
  void print (ostream& os) const;
 
3522
  /** Print the textual representation of this 
 
3523
   *  type on the given stream.
 
3524
   *  \param os The output stream. 
 
3525
   *  \param name Optional name of the entity to print. 
 
3526
   *  \param abs Print qualified names with root qualifier. 
 
3527
   *  \param tdef Print the name of a typedef instead of the underlying type.
 
3528
   *  \param elaborated_type_spec Print elaborated type specifier before 
 
3529
   *                              class, union, and enumeration types. */
 
3530
  void TypeText (ostream &os, const char *name = (const char*)0,
 
3531
                 bool abs = false, bool tdef = false, 
 
3532
                 bool elaborated_type_spec = false) const;
 
3533
  
 
3534
  /** Get the dimension of an array type. */
 
3535
  long int Dimension () const;
 
3536
  /** Get the size in bits of a type. */
 
3537
  long int Size () const;
 
3538
  /** Get the alignment of a type. */
 
3539
  long int Align () const;
 
3540
 
 
3541
  /** Get the type identifier. */
 
3542
  TypeId Id () const;
 
3543
 
 
3544
  /** Get the base type of a compound type. 
 
3545
   *  \return The base type or this if not a compound type. */
 
3546
  CTypeInfo *BaseType () const;
 
3547
  /** Set the base type of a compount type.
 
3548
   *  \param base The base type. */
 
3549
  void BaseType (CTypeInfo *base);
 
3550
 
 
3551
  /** Check if this is a typedef type. */
 
3552
  bool isTypedef () const;
 
3553
  /** Get the typedef information if this is a typedef type. */
 
3554
  CObjectInfo *TypedefInfo () const;
 
3555
  /** Set the typedef information if this is a typedef type. */
 
3556
  CTypeInfo *TypedefInfo (CObjectInfo *);
 
3557
 
 
3558
  /** Check if this is a complete type. Optionally limited to
 
3559
   *  a specific source code position. A type is complete
 
3560
   *  if it is not undefined, not void, not an fixed length
 
3561
   *  array without dimension, and not a class or enumeration 
 
3562
   *  that is only declared but not defined.
 
3563
   *  \param pos Optional source code position. */
 
3564
  bool isComplete (unsigned long pos = 0) const;
 
3565
  
 
3566
  /** Check if this type or one of its base types depends on 
 
3567
   *  a template parameter. 
 
3568
   *  \param consider_unknown_t Consider unknown_t as dependent. */
 
3569
  bool isDependent (bool consider_unknown_t = true) const;
 
3570
 
 
3571
  /** Check if this type is \e const qualified. */
 
3572
  bool isConst () const;
 
3573
  /** Check if this type is \e volatile qualified. */
 
3574
  bool isVolatile () const;
 
3575
  /** Check if this type is \e restrict qualified. */
 
3576
  bool isRestrict () const;
 
3577
 
 
3578
  /** Get the class or union of a class or union type.
 
3579
   *  \return The class or union, or NULL if not such a type. */  
 
3580
  CRecord *Record () const;
 
3581
  /** Get the class information if this is a class type.
 
3582
   *  \return The class information or NULL if not a class type. */  
 
3583
  CClassInfo *ClassInfo () const;
 
3584
  /** Get the union information if this is a union type.
 
3585
   *  \return The union information or NULL if not a union type. */  
 
3586
  CUnionInfo *UnionInfo () const;
 
3587
  /** Get the enumeration information if this is an enumeration type.
 
3588
   *  \return The enumeration information or NULL if not an enumeration type. */  
 
3589
  CEnumInfo *EnumInfo () const;
 
3590
  /** Get the function information if this is a function type.
 
3591
   *  \return The function information or NULL if not a function type. */  
 
3592
  CFunctionInfo *FunctionInfo () const;
 
3593
 
 
3594
  /** Get the base type of a pointer type. */
 
3595
  CTypeInfo *PtrBaseType () const;
 
3596
  /** Get the argument type list of a function or qualified type. */
 
3597
  CTypeList *ArgTypes () const;
 
3598
  /** Get the virtual type of this type. If this type is a qualified, 
 
3599
   *  bit-field, or reference type then the virtual type is the 
 
3600
   *  virtual type of the base type of this type. 
 
3601
   *  \return The base type or this. */
 
3602
  CTypeInfo *VirtualType () const;
 
3603
  /** Get the unqualified version of this type.
 
3604
   *  \return The unqualified type or this if not qualified. */
 
3605
  CTypeInfo *UnqualType () const;
 
3606
    
 
3607
  /** Get the function type of a pointer-to-function type.
 
3608
   *  \return The function type or NULL if not a pointer to function. */
 
3609
  CTypeFunction *PtrToFct () const;
 
3610
  /** Get the array type of a pointer-to-array type.
 
3611
   *  \return The array type or NULL if not a pointer to array. */
 
3612
  CTypeArray *PtrToArray () const;
 
3613
  
 
3614
  /** Get the pointer to CTypeQualified if this is a qualified type. 
 
3615
   *  \return The valid pointer or NULL. */
 
3616
  CTypeQualified *TypeQualified () const;
 
3617
  /** Get the pointer to CTypeFunction if this is a function type.
 
3618
   *  \return The valid pointer or NULL. */
 
3619
  CTypeFunction *TypeFunction () const;
 
3620
  /** Get the pointer to CTypeBitField if this is a bit-field type.
 
3621
   *  \return The valid pointer or NULL. */
 
3622
  CTypeBitField *TypeBitField () const; 
 
3623
  /** Get the pointer to CTypePointer if this is a pointer type.
 
3624
   *  \return The valid pointer or NULL. */
 
3625
  CTypePointer *TypePointer () const; 
 
3626
  /** Get the pointer to CTypeMemberPointer if this is a member pointer type.
 
3627
   *  \return The valid pointer or NULL. */
 
3628
  CTypeMemberPointer *TypeMemberPointer () const; 
 
3629
  /** Get the pointer to CTypeAddress if this is a reference type.
 
3630
   *  \return The valid pointer or NULL. */
 
3631
  CTypeAddress *TypeAddress () const; 
 
3632
  /** Get the pointer to CTypeArray if this is an array type.
 
3633
   *  \return The valid pointer or NULL. */
 
3634
  CTypeArray *TypeArray () const; 
 
3635
  /** Get the pointer to CTypeVarArray if this is a variable length array type.
 
3636
   *  \return The valid pointer or NULL. */
 
3637
  CTypeVarArray *TypeVarArray () const;
 
3638
  /** Get the pointer to CTypeClass if this is a class type.
 
3639
   *  \return The valid pointer or NULL. */
 
3640
  CTypeClass *TypeClass () const;
 
3641
  /** Get the pointer to CTypeUnion if this is a union type.
 
3642
   *  \return The valid pointer or NULL. */
 
3643
  CTypeUnion *TypeUnion () const;
 
3644
  /** Get the pointer to CTypeRecord if this is a class or union type.
 
3645
   *  \return The valid pointer or NULL. */
 
3646
  CTypeRecord *TypeRecord () const;
 
3647
  /** Get the pointer to CTypeEnum if this is an enumeration type.
 
3648
   *  \return The valid pointer or NULL. */
 
3649
  CTypeEnum *TypeEnum () const;
 
3650
  /** Get the pointer to CTypePrimitive if this is a primitive type.
 
3651
   *  \return The valid pointer or NULL. */
 
3652
  CTypePrimitive *TypePrimitive () const;
 
3653
  /** Get the pointer to CTypeInfo if this is type Puma::CTYPE_EMPTY.
 
3654
   *  \return The valid pointer or NULL. */
 
3655
  CTypeInfo *TypeEmpty () const;
 
3656
  /** Get the pointer to CTypeTemplateParam if this is a template parameter type.
 
3657
   *  \return The valid pointer or NULL. */
 
3658
  CTypeTemplateParam *TypeTemplateParam () const;
 
3659
 
 
3660
  /** Check if this is a qualified type. */
 
3661
  bool isQualified () const;
 
3662
  /** Check if this is a pointer type. */
 
3663
  bool isPointer () const;
 
3664
  /** Check if this is a pointer or array type. */
 
3665
  bool isPointerOrArray () const;
 
3666
  /** Check if this is a reference type. */
 
3667
  bool isAddress () const;
 
3668
  /** Check if this is a class or union type. */
 
3669
  bool isRecord () const;
 
3670
  /** Check if this is a class type. */
 
3671
  bool isClass () const;
 
3672
  /** Check if this is a union type. */
 
3673
  bool isUnion () const;
 
3674
  /** Check if this is an array type. */
 
3675
  bool isArray () const;
 
3676
  /** Check if this is a fixed length array type. */
 
3677
  bool isFixedArray () const;
 
3678
  /** Check if this is a variable length type. */
 
3679
  bool isVarArray () const;
 
3680
  /** Check if this is an arithmetic type. */
 
3681
  bool isArithmetic () const;
 
3682
  /** Check if this is a pointer or arithmetic type. */
 
3683
  bool isScalar () const;
 
3684
  /** Check if this is an array, class, or union type. */
 
3685
  bool isAggregate () const;
 
3686
  /** Check if this is an integer type. */
 
3687
  bool isInteger () const;
 
3688
  /** Check if this is type \e void. */
 
3689
  bool isVoid () const;
 
3690
  /** Check if this is an enumeration type. */
 
3691
  bool isEnum () const;
 
3692
  /** Check if this is a floating point type. */
 
3693
  bool isReal () const;
 
3694
  /** Check if this is a member pointer type. */
 
3695
  bool isMemberPointer () const;
 
3696
  /** Check if this is an undefined type. */
 
3697
  bool isUndefined () const;
 
3698
  /** Check if this is a function type. */
 
3699
  bool isFunction () const;
 
3700
  /** Check if this is a bit-field type. */
 
3701
  bool isBitField () const;
 
3702
  /** Check if this is a class member function type. */
 
3703
  bool isMethod () const;
 
3704
  /** Check if this is a non-class-member function type. */
 
3705
  bool isStdFunction () const;
 
3706
  /** Check if this is a template type. */
 
3707
  bool isTemplate () const;
 
3708
  /** Check if this is a template instance type. */
 
3709
  bool isTemplateInstance () const;
 
3710
  /** Check if this is a template parameter type. */
 
3711
  bool isTemplateParam () const;
 
3712
  /** Check if this is a type template parameter type. */
 
3713
  bool isTypeParam () const;
 
3714
  /** Check if this is a non-type template parameter type. */
 
3715
  bool isNonTypeParam () const;
 
3716
  /** Check if this is an object type. An object type is a 
 
3717
   *  complete non-function type. 
 
3718
   *  \param pos Optional source code position. */
 
3719
  bool isObject (unsigned long pos = 0) const;
 
3720
 
 
3721
  // Primitive types.
 
3722
  /** Check if the ID of this type is CTypeInfo::TYPE_BOOL. */
 
3723
  bool is_bool () const;
 
3724
  /** Check if the ID of this type is CTypeInfo::TYPE_CHAR. */
 
3725
  bool is_char () const;
 
3726
  /** Check if the ID of this type is CTypeInfo::TYPE_WCHAR_T. */
 
3727
  bool is_wchar_t () const;
 
3728
  /** Check if the ID of this type is CTypeInfo::TYPE_SHORT. */
 
3729
  bool is_short () const;
 
3730
  /** Check if the ID of this type is CTypeInfo::TYPE_INT. */
 
3731
  bool is_int () const;
 
3732
  /** Check if the ID of this type is CTypeInfo::TYPE_LONG. */
 
3733
  bool is_long () const;
 
3734
  /** Check if the ID of this type is CTypeInfo::TYPE_LONG_LONG. */
 
3735
  bool is_long_long () const;
 
3736
  /** Check if the ID of this type is CTypeInfo::TYPE_SIGNED_CHAR. */
 
3737
  bool is_signed_char () const;
 
3738
  /** Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_CHAR. */
 
3739
  bool is_unsigned_char () const;
 
3740
  /** Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_SHORT. */
 
3741
  bool is_unsigned_short () const;
 
3742
  /** Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_INT. */
 
3743
  bool is_unsigned_int () const;
 
3744
  /** Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_LONG. */
 
3745
  bool is_unsigned_long () const;
 
3746
  /** Check if the ID of this type is CTypeInfo::TYPE_UNSIGNED_LONG_LONG. */
 
3747
  bool is_unsigned_long_long () const;
 
3748
  /** Check if the ID of this type is CTypeInfo::TYPE_FLOAT. */
 
3749
  bool is_float () const;
 
3750
  /** Check if the ID of this type is CTypeInfo::TYPE_DOUBLE. */
 
3751
  bool is_double () const;
 
3752
  /** Check if the ID of this type is CTypeInfo::TYPE_LONG_DOUBLE. */
 
3753
  bool is_long_double () const;
 
3754
  /** Check if the ID of this type is CTypeInfo::TYPE_VOID. */
 
3755
  bool is_void () const;
 
3756
  /** Check if the ID of this type is CTypeInfo::TYPE_UNDEFINED. */
 
3757
  bool is_undefined () const;
 
3758
  /** Check if the ID of this type is CTypeInfo::TYPE_UNKNOWN_T. */
 
3759
  bool is_unknown_t () const;
 
3760
  /** Check if the ID of this type is CTypeInfo::TYPE_ELLIPSIS. */
 
3761
  bool is_ellipsis () const;
 
3762
  
 
3763
  /** Check if this is a signed integer type. */
 
3764
  bool is_signed () const;
 
3765
  /** Check if this is an unsigned integer type. */
 
3766
  bool is_unsigned () const;
 
3767
 
 
3768
  /** Get the arithmetic conversion rank of the type.
 
3769
   *  \note Language C only! */
 
3770
  unsigned conv_rank () const;
 
3771
  /** Check if the conversion rank of this type is greater
 
3772
   *  than the conversion rank of the given type.
 
3773
   *  \note Language C only!
 
3774
   *  \param type The type to compare with. */
 
3775
  bool operator >(const CTypeInfo &type) const;
 
3776
  /** Check if the conversion rank of this type equals or
 
3777
   *  is greater than the conversion rank of the given type.
 
3778
   *  \note Language C only!
 
3779
   *  \param type The type to compare with. */
 
3780
  bool operator >=(const CTypeInfo &type) const;
 
3781
  /** Check if the conversion rank of this type equals or
 
3782
   *  is greater than the conversion rank of the given type.
 
3783
   *  \note Language C only!
 
3784
   *  \param type The type to compare with. */
 
3785
  bool operator <=(const CTypeInfo &type) const;
 
3786
  /** Check if the conversion rank of this type is less
 
3787
   *  than the conversion rank of the given type.
 
3788
   *  \note Language C only!
 
3789
   *  \param type The type to compare with. */
 
3790
  bool operator <(const CTypeInfo &type) const;
 
3791
  
 
3792
  /** Get the rank of this type if it is an arithmetic type.
 
3793
   *  \note Language C++ only! 
 
3794
   *  \return The rank or 0 if not an arithmetic type. */
 
3795
  unsigned rank () const;
 
3796
  
 
3797
public:
 
3798
  /** Make a duplicate of the given type.
 
3799
   *  \param type The type to duplicate. */
 
3800
  static CTypeInfo *Duplicate (const CTypeInfo *type);
 
3801
  /** Maka a duplicate of this type. */
 
3802
  CTypeInfo *Duplicate () const;
 
3803
 
 
3804
  /** Destroy the given type.
 
3805
   *  \param type The type to destroy. */
 
3806
  static void Destroy (CTypeInfo *type);
 
3807
 
 
3808
  /** Print the mangled textual representation of
 
3809
   *  the type on the given stream. According to the
 
3810
   *  C++ V3 ABI mangling (see http://www.codesourcery.com/cxx-abi/abi.html).
 
3811
   *  \param os The output stream. */
 
3812
  void Mangled (ostream &os) const;
 
3813
 
 
3814
private:
 
3815
  bool equalTemplateParams (CTemplateParamInfo *p1, CTemplateParamInfo *p2) const;
 
3816
  void TypeText (char, ostream &, const char * = (const char*)0) const;
 
3817
  void printName (char, ostream &, CObjectInfo *) const;
 
3818
  void printScope (char, ostream &, CObjectInfo *) const;
 
3819
public:
 
3820
  typedef AC::TL<Puma::CTypeInfo *,AC::TL<Puma::CTypeInfo::TypeId,AC::TL<Puma::CObjectInfo *,AC::TLE > > > __AttrTypes;
 
3821
  const char *__attr_name (unsigned i) const {
 
3822
    static const char *names[] = { "_Base", "_Id", "_TypedefInfo" }; return names[i];
 
3823
  }
 
3824
  const void *__attr (unsigned __i) const {
 
3825
    switch (__i) { case 41: return &_Base; case 42: return &_Id; case 43: return &_TypedefInfo; default: return 0; }
 
3826
  }
 
3827
#line 490 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
3828
};
 
3829
 
 
3830
/** Empty type. */
 
3831
extern CTypeInfo CTYPE_EMPTY;
 
3832
 
 
3833
} // namespace Puma
 
3834
 
 
3835
 
 
3836
 
 
3837
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
 
3838
// This file is part of PUMA.
 
3839
// Copyright (C) 1999-2003  The PUMA developer team.
 
3840
//                                                                
 
3841
// This program is free software;  you can redistribute it and/or 
 
3842
// modify it under the terms of the GNU General Public License as 
 
3843
// published by the Free Software Foundation; either version 2 of 
 
3844
// the License, or (at your option) any later version.            
 
3845
//                                                                
 
3846
// This program is distributed in the hope that it will be useful,
 
3847
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
3848
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
3849
// GNU General Public License for more details.                   
 
3850
//                                                                
 
3851
// You should have received a copy of the GNU General Public      
 
3852
// License along with this program; if not, write to the Free     
 
3853
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
3854
// MA  02111-1307  USA                                            
 
3855
 
 
3856
#ifndef __CTypePrimitive_h__
 
3857
#define __CTypePrimitive_h__
 
3858
 
 
3859
/** \file
 
3860
 *  Primitive types. */
 
3861
 
 
3862
#ifndef __CTypeInfo_h__
 
3863
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
3864
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
3865
#endif
 
3866
 
 
3867
namespace Puma {
 
3868
 
 
3869
 
 
3870
/** \class CTypePrimitive CTypePrimitive.h Puma/CTypeInfo.h
 
3871
 *  Primitive type. Fundamental arithmetic types and 
 
3872
 *  type void are called primitive types. */
 
3873
 
 
3874
#line 3875 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
3875
} // closed Puma
 
3876
class CCExprResolve;
 
3877
class CExprResolve;
 
3878
class WinIfExists;
 
3879
class WinImportHandler;
 
3880
class WinMacros;
 
3881
class WinAsm;
 
3882
class WinDeclSpecs;
 
3883
class WinMemberExplSpec;
 
3884
class WinTypeKeywords;
 
3885
class WinFriend;
 
3886
class ExtAC;
 
3887
class ExtACBuilderCoupling;
 
3888
class ExtACSyntaxCoupling;
 
3889
class ExtACTree;
 
3890
class ExtACKeywords;
 
3891
class ExtGnu;
 
3892
class PragmaOnceUnitState;
 
3893
class PragmaOnce;
 
3894
class CMatchSyntax;
 
3895
namespace Puma {
 
3896
 
 
3897
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
 
3898
class CTypePrimitive : public CTypeInfo {
 
3899
#line 3900 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
3900
  friend class ::CCExprResolve;
 
3901
  friend class ::CExprResolve;
 
3902
  friend class ::WinIfExists;
 
3903
  friend class ::WinImportHandler;
 
3904
  friend class ::WinMacros;
 
3905
  friend class ::WinAsm;
 
3906
  friend class ::WinDeclSpecs;
 
3907
  friend class ::WinMemberExplSpec;
 
3908
  friend class ::WinTypeKeywords;
 
3909
  friend class ::WinFriend;
 
3910
  friend class ::ExtAC;
 
3911
  friend class ::ExtACBuilderCoupling;
 
3912
  friend class ::ExtACSyntaxCoupling;
 
3913
  friend class ::ExtACTree;
 
3914
  friend class ::ExtACKeywords;
 
3915
  friend class ::ExtGnu;
 
3916
  friend class ::PragmaOnceUnitState;
 
3917
  friend class ::PragmaOnce;
 
3918
  friend class ::CMatchSyntax;
 
3919
 
 
3920
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
 
3921
 
 
3922
  const char *_Text;
 
3923
 
 
3924
public:
 
3925
  /** Constructor.
 
3926
   *  \param name The type name.
 
3927
   *  \param id The type identifier. */
 
3928
  CTypePrimitive (const char *name, TypeId id);
 
3929
  /** Destructor. */
 
3930
  ~CTypePrimitive ();
 
3931
  
 
3932
  /** Get the type name. */
 
3933
  const char *TypeName () const;
 
3934
public:
 
3935
  typedef AC::TL<const char *,AC::TLE > __AttrTypes;
 
3936
  const char *__attr_name (unsigned i) const {
 
3937
    static const char *names[] = { "_Text" }; return names[i];
 
3938
  }
 
3939
  const void *__attr (unsigned __i) const {
 
3940
    switch (__i) { case 0: return &_Text; default: return 0; }
 
3941
  }
 
3942
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
 
3943
};
 
3944
 
 
3945
inline CTypePrimitive::CTypePrimitive (const char *t, CTypeInfo::TypeId id) :
 
3946
  CTypeInfo (&CTYPE_EMPTY, id),
 
3947
  _Text (t)
 
3948
 {}
 
3949
inline CTypePrimitive::~CTypePrimitive () 
 
3950
 {}
 
3951
 
 
3952
inline const char *CTypePrimitive::TypeName () const
 
3953
 { return _Text; }
 
3954
 
 
3955
// Basic types //////////////////////////////////////////////////
 
3956
 
 
3957
/** bool */
 
3958
extern CTypePrimitive CTYPE_BOOL;
 
3959
/** char */
 
3960
extern CTypePrimitive CTYPE_CHAR;
 
3961
/** signed char */
 
3962
extern CTypePrimitive CTYPE_SIGNED_CHAR;
 
3963
/** unsigned char */
 
3964
extern CTypePrimitive CTYPE_UNSIGNED_CHAR;
 
3965
/** wchar_t */
 
3966
extern CTypePrimitive CTYPE_WCHAR_T;
 
3967
/** short */
 
3968
extern CTypePrimitive CTYPE_SHORT;
 
3969
/** unsigned short */
 
3970
extern CTypePrimitive CTYPE_UNSIGNED_SHORT;
 
3971
/** int */
 
3972
extern CTypePrimitive CTYPE_INT;
 
3973
/** unsigned int */
 
3974
extern CTypePrimitive CTYPE_UNSIGNED_INT;
 
3975
/** long */
 
3976
extern CTypePrimitive CTYPE_LONG;
 
3977
/** unsigned long */
 
3978
extern CTypePrimitive CTYPE_UNSIGNED_LONG;
 
3979
/** long long */
 
3980
extern CTypePrimitive CTYPE_LONG_LONG;
 
3981
/** unsigned long long */
 
3982
extern CTypePrimitive CTYPE_UNSIGNED_LONG_LONG;
 
3983
/** float */
 
3984
extern CTypePrimitive CTYPE_FLOAT;
 
3985
/** double */
 
3986
extern CTypePrimitive CTYPE_DOUBLE;
 
3987
/** long double */
 
3988
extern CTypePrimitive CTYPE_LONG_DOUBLE;
 
3989
/** void */
 
3990
extern CTypePrimitive CTYPE_VOID;
 
3991
/** unknown_t */
 
3992
extern CTypePrimitive CTYPE_UNKNOWN_T;
 
3993
/** Undefined type. */
 
3994
extern CTypePrimitive CTYPE_UNDEFINED;
 
3995
/** Any type. */
 
3996
extern CTypePrimitive CTYPE_ELLIPSIS;
 
3997
 
 
3998
 
 
3999
} // namespace Puma
 
4000
 
 
4001
#endif /* __CTypePrimitive_h__ */
 
4002
 
 
4003
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
 
4004
// This file is part of PUMA.
 
4005
// Copyright (C) 1999-2003  The PUMA developer team.
 
4006
//                                                                
 
4007
// This program is free software;  you can redistribute it and/or 
 
4008
// modify it under the terms of the GNU General Public License as 
 
4009
// published by the Free Software Foundation; either version 2 of 
 
4010
// the License, or (at your option) any later version.            
 
4011
//                                                                
 
4012
// This program is distributed in the hope that it will be useful,
 
4013
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
4014
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
4015
// GNU General Public License for more details.                   
 
4016
//                                                                
 
4017
// You should have received a copy of the GNU General Public      
 
4018
// License along with this program; if not, write to the Free     
 
4019
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
4020
// MA  02111-1307  USA                                            
 
4021
 
 
4022
#ifndef __CTypeQualified_h__
 
4023
#define __CTypeQualified_h__
 
4024
 
 
4025
/** \file
 
4026
 *  Type qualification. */
 
4027
 
 
4028
#ifndef __CTypeInfo_h__
 
4029
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
4030
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
4031
#endif
 
4032
 
 
4033
namespace Puma {
 
4034
 
 
4035
 
 
4036
/** \class CTypeQualified CTypeQualified.h Puma/CTypeInfo.h
 
4037
 *  Type qualification. There are three type qualifier:
 
4038
 *  \e const, \e volatile, and \e restrict.
 
4039
 *  Examples: 
 
4040
 *  \code 
 
4041
 * const int i = 0;     // i has type 'const int'
 
4042
 *                      // type structure:
 
4043
 *                      // CTypeQualified const
 
4044
 *                      //   CTypePrimitive int
 
4045
 * char * const s = 0;  // s has type 'const pointer to char'
 
4046
 *                      // type structure:
 
4047
 *                      // CTypeQualified const
 
4048
 *                      //   CTypePointer
 
4049
 *                      //     CTypePrimitive char
 
4050
 *  \endcode */
 
4051
 
 
4052
#line 4053 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4053
} // closed Puma
 
4054
class CCExprResolve;
 
4055
class CExprResolve;
 
4056
class WinIfExists;
 
4057
class WinImportHandler;
 
4058
class WinMacros;
 
4059
class WinAsm;
 
4060
class WinDeclSpecs;
 
4061
class WinMemberExplSpec;
 
4062
class WinTypeKeywords;
 
4063
class WinFriend;
 
4064
class ExtAC;
 
4065
class ExtACBuilderCoupling;
 
4066
class ExtACSyntaxCoupling;
 
4067
class ExtACTree;
 
4068
class ExtACKeywords;
 
4069
class ExtGnu;
 
4070
class PragmaOnceUnitState;
 
4071
class PragmaOnce;
 
4072
class CMatchSyntax;
 
4073
namespace Puma {
 
4074
 
 
4075
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
 
4076
class CTypeQualified : public CTypeInfo {
 
4077
#line 4078 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4078
  friend class ::CCExprResolve;
 
4079
  friend class ::CExprResolve;
 
4080
  friend class ::WinIfExists;
 
4081
  friend class ::WinImportHandler;
 
4082
  friend class ::WinMacros;
 
4083
  friend class ::WinAsm;
 
4084
  friend class ::WinDeclSpecs;
 
4085
  friend class ::WinMemberExplSpec;
 
4086
  friend class ::WinTypeKeywords;
 
4087
  friend class ::WinFriend;
 
4088
  friend class ::ExtAC;
 
4089
  friend class ::ExtACBuilderCoupling;
 
4090
  friend class ::ExtACSyntaxCoupling;
 
4091
  friend class ::ExtACTree;
 
4092
  friend class ::ExtACKeywords;
 
4093
  friend class ::ExtGnu;
 
4094
  friend class ::PragmaOnceUnitState;
 
4095
  friend class ::PragmaOnce;
 
4096
  friend class ::CMatchSyntax;
 
4097
 
 
4098
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
 
4099
 
 
4100
  bool _QualConst;
 
4101
  bool _QualVolatile;
 
4102
  bool _QualRestrict;
 
4103
 
 
4104
protected:
 
4105
  /** Constructor.
 
4106
   *  \param base The base type.
 
4107
   *  \param c Type has qualifier \e const.
 
4108
   *  \param v Type has qualifier \e volatile.
 
4109
   *  \param r Type has qualifier \e restrict.
 
4110
   *  \param id The type identifier. */
 
4111
  CTypeQualified (CTypeInfo *base, bool c, bool v, bool r, TypeId id);
 
4112
  
 
4113
public:
 
4114
  /** Constructor. Type has id CTypeInfo::TYPE_QUALIFIED.
 
4115
   *  \param base The base type.
 
4116
   *  \param c Type has qualifier \e const.
 
4117
   *  \param v Type has qualifier \e volatile.
 
4118
   *  \param r Type has qualifier \e restrict. */
 
4119
  CTypeQualified (CTypeInfo *base, bool c, bool v, bool r);
 
4120
  /** Destructor. */
 
4121
  ~CTypeQualified ();
 
4122
 
 
4123
  /** Check if the type has qualifier \e const. */
 
4124
  bool isConst () const;
 
4125
  /** Check if the type has qualifier \e volatile. */
 
4126
  bool isVolatile () const;
 
4127
  /** Check if the type has qualifier \e restrict. */
 
4128
  bool isRestrict () const;
 
4129
 
 
4130
  /** Set whether the type has qualifier \e const. 
 
4131
   *  \param v True if qualified. */
 
4132
  void isConst (bool v);
 
4133
  /** Set whether the type has qualifier \e volatile. 
 
4134
   *  \param v True if qualified. */
 
4135
  void isVolatile (bool v);
 
4136
  /** Set whether the type has qualifier \e restrict. 
 
4137
   *  \param v True if qualified. */
 
4138
  void isRestrict (bool v);
 
4139
public:
 
4140
  typedef AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TLE > > > __AttrTypes;
 
4141
  const char *__attr_name (unsigned i) const {
 
4142
    static const char *names[] = { "_QualConst", "_QualVolatile", "_QualRestrict" }; return names[i];
 
4143
  }
 
4144
  const void *__attr (unsigned __i) const {
 
4145
    switch (__i) { case 0: return &_QualConst; case 1: return &_QualVolatile; case 2: return &_QualRestrict; default: return 0; }
 
4146
  }
 
4147
#line 88 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
 
4148
};
 
4149
 
 
4150
inline CTypeQualified::CTypeQualified (CTypeInfo *base, bool c, bool v, bool r, 
 
4151
 CTypeInfo::TypeId id) :
 
4152
  CTypeInfo (base, id),
 
4153
  _QualConst (c),
 
4154
  _QualVolatile (v),
 
4155
  _QualRestrict (r)
 
4156
 {}
 
4157
inline CTypeQualified::CTypeQualified (CTypeInfo *base, bool c, bool v, bool r) :
 
4158
  CTypeInfo (base, CTypeInfo::TYPE_QUALIFIED),
 
4159
  _QualConst (c),
 
4160
  _QualVolatile (v),
 
4161
  _QualRestrict (r)
 
4162
 {}
 
4163
inline CTypeQualified::~CTypeQualified ()
 
4164
 {}
 
4165
 
 
4166
inline bool CTypeQualified::isConst () const
 
4167
 { return _QualConst; }
 
4168
inline bool CTypeQualified::isVolatile () const
 
4169
 { return _QualVolatile; }
 
4170
inline bool CTypeQualified::isRestrict () const
 
4171
 { return _QualRestrict; }
 
4172
 
 
4173
inline void CTypeQualified::isConst (bool v)
 
4174
 { _QualConst = v; }
 
4175
inline void CTypeQualified::isVolatile (bool v)
 
4176
 { _QualVolatile = v; }
 
4177
inline void CTypeQualified::isRestrict (bool v)
 
4178
 { _QualRestrict = v; }
 
4179
 
 
4180
 
 
4181
} // namespace Puma
 
4182
 
 
4183
#endif /* __CTypeQualified_h__ */
 
4184
 
 
4185
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
 
4186
// This file is part of PUMA.
 
4187
// Copyright (C) 1999-2003  The PUMA developer team.
 
4188
//                                                                
 
4189
// This program is free software;  you can redistribute it and/or 
 
4190
// modify it under the terms of the GNU General Public License as 
 
4191
// published by the Free Software Foundation; either version 2 of 
 
4192
// the License, or (at your option) any later version.            
 
4193
//                                                                
 
4194
// This program is distributed in the hope that it will be useful,
 
4195
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
4196
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
4197
// GNU General Public License for more details.                   
 
4198
//                                                                
 
4199
// You should have received a copy of the GNU General Public      
 
4200
// License along with this program; if not, write to the Free     
 
4201
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
4202
// MA  02111-1307  USA                                            
 
4203
 
 
4204
#ifndef __CTypeAddress_h__
 
4205
#define __CTypeAddress_h__
 
4206
 
 
4207
/** \file
 
4208
 *  Type of a reference. */
 
4209
 
 
4210
#ifndef __CTypeInfo_h__
 
4211
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
4212
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
4213
#endif
 
4214
 
 
4215
namespace Puma {
 
4216
 
 
4217
 
 
4218
/** \class CTypeAddress CTypeAddress.h Puma/CTypeInfo.h
 
4219
 *  Type of a reference. 
 
4220
 *  Examples: 
 
4221
 *  \code 
 
4222
 * int& i = i0;      // i has type 'reference to int'
 
4223
 *                   // type structure:
 
4224
 *                   // CTypeAddress
 
4225
 *                   //   CTypePrimitive int
 
4226
 * const X& x = x0;  // x has type 'reference to const X'
 
4227
 *                   // type structure:
 
4228
 *                   // CTypeAddress
 
4229
 *                   //   CTypeQualified const
 
4230
 *                   //     CTypeClass X
 
4231
 *  \endcode */
 
4232
 
 
4233
#line 4234 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4234
} // closed Puma
 
4235
class CCExprResolve;
 
4236
class CExprResolve;
 
4237
class WinIfExists;
 
4238
class WinImportHandler;
 
4239
class WinMacros;
 
4240
class WinAsm;
 
4241
class WinDeclSpecs;
 
4242
class WinMemberExplSpec;
 
4243
class WinTypeKeywords;
 
4244
class WinFriend;
 
4245
class ExtAC;
 
4246
class ExtACBuilderCoupling;
 
4247
class ExtACSyntaxCoupling;
 
4248
class ExtACTree;
 
4249
class ExtACKeywords;
 
4250
class ExtGnu;
 
4251
class PragmaOnceUnitState;
 
4252
class PragmaOnce;
 
4253
class CMatchSyntax;
 
4254
namespace Puma {
 
4255
 
 
4256
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
 
4257
class CTypeAddress : public CTypeInfo {
 
4258
#line 4259 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4259
  friend class ::CCExprResolve;
 
4260
  friend class ::CExprResolve;
 
4261
  friend class ::WinIfExists;
 
4262
  friend class ::WinImportHandler;
 
4263
  friend class ::WinMacros;
 
4264
  friend class ::WinAsm;
 
4265
  friend class ::WinDeclSpecs;
 
4266
  friend class ::WinMemberExplSpec;
 
4267
  friend class ::WinTypeKeywords;
 
4268
  friend class ::WinFriend;
 
4269
  friend class ::ExtAC;
 
4270
  friend class ::ExtACBuilderCoupling;
 
4271
  friend class ::ExtACSyntaxCoupling;
 
4272
  friend class ::ExtACTree;
 
4273
  friend class ::ExtACKeywords;
 
4274
  friend class ::ExtGnu;
 
4275
  friend class ::PragmaOnceUnitState;
 
4276
  friend class ::PragmaOnce;
 
4277
  friend class ::CMatchSyntax;
 
4278
 
 
4279
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
 
4280
 
 
4281
public:
 
4282
  /** Constructor. Type has id CTypeInfo::TYPE_ADDRESS.
 
4283
   *  \param base The base type. */
 
4284
  CTypeAddress (CTypeInfo *base);
 
4285
  /** Destructor. */
 
4286
  ~CTypeAddress ();
 
4287
public:
 
4288
  typedef AC::TLE __AttrTypes;
 
4289
  const char *__attr_name (unsigned i) const { return 0; }
 
4290
  const void *__attr (unsigned __i) const { return 0; }
 
4291
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
 
4292
};
 
4293
 
 
4294
inline CTypeAddress::CTypeAddress (CTypeInfo *base) :
 
4295
  CTypeInfo (base, CTypeInfo::TYPE_ADDRESS)
 
4296
 {}
 
4297
inline CTypeAddress::~CTypeAddress ()
 
4298
 {}
 
4299
 
 
4300
 
 
4301
} // namespace Puma
 
4302
 
 
4303
#endif /* __CTypeAddress_h__ */
 
4304
 
 
4305
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
 
4306
// This file is part of PUMA.
 
4307
// Copyright (C) 1999-2003  The PUMA developer team.
 
4308
//                                                                
 
4309
// This program is free software;  you can redistribute it and/or 
 
4310
// modify it under the terms of the GNU General Public License as 
 
4311
// published by the Free Software Foundation; either version 2 of 
 
4312
// the License, or (at your option) any later version.            
 
4313
//                                                                
 
4314
// This program is distributed in the hope that it will be useful,
 
4315
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
4316
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
4317
// GNU General Public License for more details.                   
 
4318
//                                                                
 
4319
// You should have received a copy of the GNU General Public      
 
4320
// License along with this program; if not, write to the Free     
 
4321
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
4322
// MA  02111-1307  USA                                            
 
4323
 
 
4324
#ifndef __CTypeBitField_h__
 
4325
#define __CTypeBitField_h__
 
4326
 
 
4327
/** \file
 
4328
 *  Type of a bit-field. */
 
4329
 
 
4330
#ifndef __CTypeInfo_h__
 
4331
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
4332
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
4333
#endif
 
4334
 
 
4335
namespace Puma {
 
4336
 
 
4337
 
 
4338
/** \class CTypeBitField CTypeBitField.h Puma/CTypeInfo.h
 
4339
 *  Type of a bit-field. 
 
4340
 *  Example: 
 
4341
 *  \code 
 
4342
 * class X {
 
4343
 *   int i : 10;      // i has type 'bit-field of size 10'
 
4344
 *                    // type structure:
 
4345
 *                    // CTypeBitField dim=10
 
4346
 *                    //   CTypePrimitive int
 
4347
 * };
 
4348
 *  \endcode */
 
4349
 
 
4350
#line 4351 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4351
} // closed Puma
 
4352
class CCExprResolve;
 
4353
class CExprResolve;
 
4354
class WinIfExists;
 
4355
class WinImportHandler;
 
4356
class WinMacros;
 
4357
class WinAsm;
 
4358
class WinDeclSpecs;
 
4359
class WinMemberExplSpec;
 
4360
class WinTypeKeywords;
 
4361
class WinFriend;
 
4362
class ExtAC;
 
4363
class ExtACBuilderCoupling;
 
4364
class ExtACSyntaxCoupling;
 
4365
class ExtACTree;
 
4366
class ExtACKeywords;
 
4367
class ExtGnu;
 
4368
class PragmaOnceUnitState;
 
4369
class PragmaOnce;
 
4370
class CMatchSyntax;
 
4371
namespace Puma {
 
4372
 
 
4373
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
 
4374
class CTypeBitField : public CTypeInfo {
 
4375
#line 4376 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4376
  friend class ::CCExprResolve;
 
4377
  friend class ::CExprResolve;
 
4378
  friend class ::WinIfExists;
 
4379
  friend class ::WinImportHandler;
 
4380
  friend class ::WinMacros;
 
4381
  friend class ::WinAsm;
 
4382
  friend class ::WinDeclSpecs;
 
4383
  friend class ::WinMemberExplSpec;
 
4384
  friend class ::WinTypeKeywords;
 
4385
  friend class ::WinFriend;
 
4386
  friend class ::ExtAC;
 
4387
  friend class ::ExtACBuilderCoupling;
 
4388
  friend class ::ExtACSyntaxCoupling;
 
4389
  friend class ::ExtACTree;
 
4390
  friend class ::ExtACKeywords;
 
4391
  friend class ::ExtGnu;
 
4392
  friend class ::PragmaOnceUnitState;
 
4393
  friend class ::PragmaOnce;
 
4394
  friend class ::CMatchSyntax;
 
4395
 
 
4396
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
 
4397
 
 
4398
  long int _Size;
 
4399
 
 
4400
public:
 
4401
  /** Constructor. Type has id CTypeInfo::TYPE_BIT_FIELD.
 
4402
   *  \param base The base type. */
 
4403
  CTypeBitField (CTypeInfo *base);
 
4404
  /** Destructor. */
 
4405
  ~CTypeBitField ();
 
4406
 
 
4407
  /** Set the dimension of the bit-field.
 
4408
   *  \param dim The dimension. */
 
4409
  void Dimension (long int dim);
 
4410
  /** Get the dimension of the bit-field. */
 
4411
  long int Dimension () const;
 
4412
public:
 
4413
  typedef AC::TL<long int,AC::TLE > __AttrTypes;
 
4414
  const char *__attr_name (unsigned i) const {
 
4415
    static const char *names[] = { "_Size" }; return names[i];
 
4416
  }
 
4417
  const void *__attr (unsigned __i) const {
 
4418
    switch (__i) { case 0: return &_Size; default: return 0; }
 
4419
  }
 
4420
#line 59 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
 
4421
};
 
4422
 
 
4423
inline CTypeBitField::CTypeBitField (CTypeInfo *base) :
 
4424
  CTypeInfo (base, CTypeInfo::TYPE_BIT_FIELD),
 
4425
  _Size (0)
 
4426
 {}
 
4427
inline CTypeBitField::~CTypeBitField ()
 
4428
 {}
 
4429
 
 
4430
inline void CTypeBitField::Dimension (long int v) 
 
4431
 { _Size = v; }
 
4432
inline long int CTypeBitField::Dimension () const
 
4433
 { return _Size; }
 
4434
 
 
4435
 
 
4436
} // namespace Puma
 
4437
 
 
4438
#endif /* __CTypeBitField_h__ */
 
4439
 
 
4440
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
 
4441
// This file is part of PUMA.
 
4442
// Copyright (C) 1999-2003  The PUMA developer team.
 
4443
//                                                                
 
4444
// This program is free software;  you can redistribute it and/or 
 
4445
// modify it under the terms of the GNU General Public License as 
 
4446
// published by the Free Software Foundation; either version 2 of 
 
4447
// the License, or (at your option) any later version.            
 
4448
//                                                                
 
4449
// This program is distributed in the hope that it will be useful,
 
4450
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
4451
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
4452
// GNU General Public License for more details.                   
 
4453
//                                                                
 
4454
// You should have received a copy of the GNU General Public      
 
4455
// License along with this program; if not, write to the Free     
 
4456
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
4457
// MA  02111-1307  USA                                            
 
4458
 
 
4459
#ifndef __CTypeArray_h__
 
4460
#define __CTypeArray_h__
 
4461
 
 
4462
/** \file
 
4463
 *  Type of an array. */
 
4464
 
 
4465
#ifndef __CTypeInfo_h__
 
4466
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
4467
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
4468
#endif
 
4469
 
 
4470
namespace Puma {
 
4471
 
 
4472
 
 
4473
/** \class CTypeArray CTypeArray.h Puma/CTypeInfo.h
 
4474
 *  Type of an array. 
 
4475
 *  Examples: 
 
4476
 *  \code 
 
4477
 * int i[10];      // i has type 'array of int'
 
4478
 *                 // type structure:
 
4479
 *                 // CTypeArray dim=10
 
4480
 *                 //   CTypePrimitive int
 
4481
 * char* sa[5];    // sa has type 'array of pointer to char'
 
4482
 *                 // type structure:
 
4483
 *                 // CTypeArray dim=5
 
4484
 *                 //   CTypePointer
 
4485
 *                 //     CTypePrimitive char
 
4486
 *  \endcode */
 
4487
 
 
4488
#line 4489 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4489
} // closed Puma
 
4490
class CCExprResolve;
 
4491
class CExprResolve;
 
4492
class WinIfExists;
 
4493
class WinImportHandler;
 
4494
class WinMacros;
 
4495
class WinAsm;
 
4496
class WinDeclSpecs;
 
4497
class WinMemberExplSpec;
 
4498
class WinTypeKeywords;
 
4499
class WinFriend;
 
4500
class ExtAC;
 
4501
class ExtACBuilderCoupling;
 
4502
class ExtACSyntaxCoupling;
 
4503
class ExtACTree;
 
4504
class ExtACKeywords;
 
4505
class ExtGnu;
 
4506
class PragmaOnceUnitState;
 
4507
class PragmaOnce;
 
4508
class CMatchSyntax;
 
4509
namespace Puma {
 
4510
 
 
4511
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
 
4512
class CTypeArray : public CTypeInfo {
 
4513
#line 4514 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4514
  friend class ::CCExprResolve;
 
4515
  friend class ::CExprResolve;
 
4516
  friend class ::WinIfExists;
 
4517
  friend class ::WinImportHandler;
 
4518
  friend class ::WinMacros;
 
4519
  friend class ::WinAsm;
 
4520
  friend class ::WinDeclSpecs;
 
4521
  friend class ::WinMemberExplSpec;
 
4522
  friend class ::WinTypeKeywords;
 
4523
  friend class ::WinFriend;
 
4524
  friend class ::ExtAC;
 
4525
  friend class ::ExtACBuilderCoupling;
 
4526
  friend class ::ExtACSyntaxCoupling;
 
4527
  friend class ::ExtACTree;
 
4528
  friend class ::ExtACKeywords;
 
4529
  friend class ::ExtGnu;
 
4530
  friend class ::PragmaOnceUnitState;
 
4531
  friend class ::PragmaOnce;
 
4532
  friend class ::CMatchSyntax;
 
4533
 
 
4534
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
 
4535
 
 
4536
  long int _Size;
 
4537
  bool _isFixed;
 
4538
  CTypeQualified *_Quals;
 
4539
  CTypeTemplateParam *_DepDim;
 
4540
  bool _hasDim;
 
4541
 
 
4542
protected:
 
4543
  /** Constructor.
 
4544
   *  \param base The base type of the array.
 
4545
   *  \param quals The type qualifiers.
 
4546
   *  \param id The type identifier. */
 
4547
  CTypeArray (CTypeInfo *base, CTypeQualified *quals, TypeId id);
 
4548
  
 
4549
public:
 
4550
  /** Constructor. Type has id CTypeInfo::TYPE_ARRAY.
 
4551
   *  \param base The base type of the array.
 
4552
   *  \param quals The type qualifiers.
 
4553
   *  \param has_dimension The array was declared with a constant dimension. */
 
4554
  CTypeArray (CTypeInfo *base, CTypeQualified *quals = 0, bool has_dimension = false);
 
4555
  /** Destructor. */
 
4556
  ~CTypeArray ();
 
4557
 
 
4558
  /** Set the dimension of the array.
 
4559
   *  \param dim The dimension. */
 
4560
  void Dimension (long int dim);
 
4561
  /** Get the dimension of the array. */
 
4562
  long int Dimension () const;
 
4563
  /** Set whether the array was declared with a constant dimension. 
 
4564
   *  \param constant Array has constant dimension. */
 
4565
  void hasDimension (bool constant);
 
4566
  /** Check if the array has a constant dimension. */
 
4567
  bool hasDimension () const;
 
4568
  
 
4569
  /** Set whether the array has a fixed length. 
 
4570
   *  \param fixed Has fixed length. */
 
4571
  void isFixed (bool fixed);
 
4572
  /** Check if the array has a fixed length. */
 
4573
  bool isFixed () const;
 
4574
  
 
4575
  /** Get the array type qualifiers. */
 
4576
  CTypeQualified *Qualifiers () const;
 
4577
  
 
4578
  /** Set the template parameter information if the dimension 
 
4579
   *  of the array depends on this template parameter. 
 
4580
   *  \param param The template parameter. */
 
4581
  void DepDim (CTypeTemplateParam *param);
 
4582
  /** Get the template parameter information if the dimension
 
4583
   *  of the array depends on a template parameter.
 
4584
   *  \return The template parameter or NULL. */
 
4585
  CTypeTemplateParam *DepDim () const;
 
4586
public:
 
4587
  typedef AC::TL<long int,AC::TL<bool,AC::TL<Puma::CTypeQualified *,AC::TL<Puma::CTypeTemplateParam *,AC::TL<bool,AC::TLE > > > > > __AttrTypes;
 
4588
  const char *__attr_name (unsigned i) const {
 
4589
    static const char *names[] = { "_Size", "_isFixed", "_Quals", "_DepDim", "_hasDim" }; return names[i];
 
4590
  }
 
4591
  const void *__attr (unsigned __i) const {
 
4592
    switch (__i) { case 0: return &_Size; case 1: return &_isFixed; case 2: return &_Quals; case 3: return &_DepDim; case 4: return &_hasDim; default: return 0; }
 
4593
  }
 
4594
#line 98 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
 
4595
};
 
4596
 
 
4597
inline CTypeArray::CTypeArray (CTypeInfo *base, CTypeQualified *quals, bool has_dimension) :
 
4598
  CTypeInfo (base, CTypeInfo::TYPE_ARRAY),
 
4599
  _Size (0),
 
4600
  _isFixed (false),
 
4601
  _Quals (quals),
 
4602
  _DepDim (0),
 
4603
  _hasDim (has_dimension)
 
4604
 {}
 
4605
inline CTypeArray::CTypeArray (CTypeInfo *base, CTypeQualified *quals, CTypeInfo::TypeId id) :
 
4606
  CTypeInfo (base, id),
 
4607
  _Size (0),
 
4608
  _isFixed (false),
 
4609
  _Quals (quals),
 
4610
  _DepDim (0),
 
4611
  _hasDim (false)
 
4612
 {}
 
4613
inline CTypeArray::~CTypeArray ()
 
4614
 { if (_Quals) CTypeInfo::Destroy (_Quals); }
 
4615
 
 
4616
inline void CTypeArray::Dimension (long int d)
 
4617
 { _Size = d; }
 
4618
inline long int CTypeArray::Dimension () const
 
4619
 { return _Size; }
 
4620
 
 
4621
inline void CTypeArray::isFixed (bool v)
 
4622
 { _isFixed = v; }
 
4623
inline bool CTypeArray::isFixed () const
 
4624
 { return _isFixed; }
 
4625
 
 
4626
inline void CTypeArray::hasDimension (bool v)
 
4627
 { _hasDim = v; }
 
4628
inline bool CTypeArray::hasDimension () const
 
4629
 { return _hasDim || _Size != 0; }
 
4630
 
 
4631
inline CTypeQualified *CTypeArray::Qualifiers () const
 
4632
 { return _Quals; }
 
4633
 
 
4634
inline void CTypeArray::DepDim (CTypeTemplateParam *tp) 
 
4635
 { _DepDim = tp; }
 
4636
inline CTypeTemplateParam *CTypeArray::DepDim () const
 
4637
 { return _DepDim; }
 
4638
 
 
4639
 
 
4640
} // namespace Puma
 
4641
 
 
4642
#endif /* __CTypeArray_h__ */
 
4643
 
 
4644
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
 
4645
// This file is part of PUMA.
 
4646
// Copyright (C) 1999-2003  The PUMA developer team.
 
4647
//                                                                
 
4648
// This program is free software;  you can redistribute it and/or 
 
4649
// modify it under the terms of the GNU General Public License as 
 
4650
// published by the Free Software Foundation; either version 2 of 
 
4651
// the License, or (at your option) any later version.            
 
4652
//                                                                
 
4653
// This program is distributed in the hope that it will be useful,
 
4654
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
4655
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
4656
// GNU General Public License for more details.                   
 
4657
//                                                                
 
4658
// You should have received a copy of the GNU General Public      
 
4659
// License along with this program; if not, write to the Free     
 
4660
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
4661
// MA  02111-1307  USA                                            
 
4662
 
 
4663
#ifndef __CTypeVarArray_h__
 
4664
#define __CTypeVarArray_h__
 
4665
 
 
4666
/** \file
 
4667
 *  Type of a variable length array. */
 
4668
 
 
4669
#ifndef __CTypeInfo_h__
 
4670
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
4671
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
4672
#endif
 
4673
 
 
4674
namespace Puma {
 
4675
 
 
4676
 
 
4677
/** \class CTypeVarArray CTypeVarArray.h Puma/CTypeInfo.h
 
4678
 *  Type of a variable length array.
 
4679
 *  Example: 
 
4680
 *  \code 
 
4681
 * void foo(int len) {
 
4682
 *   int i[len];      // i has type 'variable length array of int'
 
4683
 * }
 
4684
 *  \endcode */
 
4685
 
 
4686
#line 4687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4687
} // closed Puma
 
4688
class CCExprResolve;
 
4689
class CExprResolve;
 
4690
class WinIfExists;
 
4691
class WinImportHandler;
 
4692
class WinMacros;
 
4693
class WinAsm;
 
4694
class WinDeclSpecs;
 
4695
class WinMemberExplSpec;
 
4696
class WinTypeKeywords;
 
4697
class WinFriend;
 
4698
class ExtAC;
 
4699
class ExtACBuilderCoupling;
 
4700
class ExtACSyntaxCoupling;
 
4701
class ExtACTree;
 
4702
class ExtACKeywords;
 
4703
class ExtGnu;
 
4704
class PragmaOnceUnitState;
 
4705
class PragmaOnce;
 
4706
class CMatchSyntax;
 
4707
namespace Puma {
 
4708
 
 
4709
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
 
4710
class CTypeVarArray : public CTypeArray {
 
4711
#line 4712 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4712
  friend class ::CCExprResolve;
 
4713
  friend class ::CExprResolve;
 
4714
  friend class ::WinIfExists;
 
4715
  friend class ::WinImportHandler;
 
4716
  friend class ::WinMacros;
 
4717
  friend class ::WinAsm;
 
4718
  friend class ::WinDeclSpecs;
 
4719
  friend class ::WinMemberExplSpec;
 
4720
  friend class ::WinTypeKeywords;
 
4721
  friend class ::WinFriend;
 
4722
  friend class ::ExtAC;
 
4723
  friend class ::ExtACBuilderCoupling;
 
4724
  friend class ::ExtACSyntaxCoupling;
 
4725
  friend class ::ExtACTree;
 
4726
  friend class ::ExtACKeywords;
 
4727
  friend class ::ExtGnu;
 
4728
  friend class ::PragmaOnceUnitState;
 
4729
  friend class ::PragmaOnce;
 
4730
  friend class ::CMatchSyntax;
 
4731
 
 
4732
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
 
4733
 
 
4734
public:
 
4735
  /** Constructor. Type has id CTypeInfo::TYPE_VAR_ARRAY.
 
4736
   *  \param base The base type of the array.
 
4737
   *  \param quals The type qualifiers. */
 
4738
  CTypeVarArray (CTypeInfo *base, CTypeQualified *quals = 0);
 
4739
  /** Destructor. */
 
4740
  ~CTypeVarArray ();
 
4741
public:
 
4742
  typedef AC::TLE __AttrTypes;
 
4743
  const char *__attr_name (unsigned i) const { return 0; }
 
4744
  const void *__attr (unsigned __i) const { return 0; }
 
4745
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
 
4746
};
 
4747
 
 
4748
inline CTypeVarArray::CTypeVarArray (CTypeInfo *base, CTypeQualified *quals) :
 
4749
  CTypeArray (base, quals, CTypeInfo::TYPE_VAR_ARRAY)
 
4750
 {}
 
4751
inline CTypeVarArray::~CTypeVarArray ()
 
4752
 {}
 
4753
 
 
4754
 
 
4755
} // namespace Puma
 
4756
 
 
4757
#endif /* __CTypeVarArray_h__ */
 
4758
 
 
4759
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
 
4760
// This file is part of PUMA.
 
4761
// Copyright (C) 1999-2003  The PUMA developer team.
 
4762
//                                                                
 
4763
// This program is free software;  you can redistribute it and/or 
 
4764
// modify it under the terms of the GNU General Public License as 
 
4765
// published by the Free Software Foundation; either version 2 of 
 
4766
// the License, or (at your option) any later version.            
 
4767
//                                                                
 
4768
// This program is distributed in the hope that it will be useful,
 
4769
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
4770
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
4771
// GNU General Public License for more details.                   
 
4772
//                                                                
 
4773
// You should have received a copy of the GNU General Public      
 
4774
// License along with this program; if not, write to the Free     
 
4775
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
4776
// MA  02111-1307  USA                                            
 
4777
 
 
4778
#ifndef __CTypePointer_h__
 
4779
#define __CTypePointer_h__
 
4780
 
 
4781
/** \file
 
4782
 *  Type of a pointer. */
 
4783
 
 
4784
#ifndef __CTypeInfo_h__
 
4785
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
4786
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
4787
#endif
 
4788
 
 
4789
namespace Puma {
 
4790
 
 
4791
 
 
4792
/** \class CTypePointer CTypePointer.h Puma/CTypeInfo.h
 
4793
 *  Type of a pointer. 
 
4794
 *  Examples: 
 
4795
 *  \code 
 
4796
 * int* ip = 0;          // ip has type 'pointer to int'
 
4797
 *                       // type structure:
 
4798
 *                       // CTypePointer
 
4799
 *                       //   CTypePrimitive int
 
4800
 * const char* s = 0;    // s has type 'pointer to const char'
 
4801
 *                       // type structure:
 
4802
 *                       // CTypePointer
 
4803
 *                       //   CTypeQualified const
 
4804
 *                       //     CTypePrimitive char
 
4805
 *  \endcode */
 
4806
 
 
4807
#line 4808 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4808
} // closed Puma
 
4809
class CCExprResolve;
 
4810
class CExprResolve;
 
4811
class WinIfExists;
 
4812
class WinImportHandler;
 
4813
class WinMacros;
 
4814
class WinAsm;
 
4815
class WinDeclSpecs;
 
4816
class WinMemberExplSpec;
 
4817
class WinTypeKeywords;
 
4818
class WinFriend;
 
4819
class ExtAC;
 
4820
class ExtACBuilderCoupling;
 
4821
class ExtACSyntaxCoupling;
 
4822
class ExtACTree;
 
4823
class ExtACKeywords;
 
4824
class ExtGnu;
 
4825
class PragmaOnceUnitState;
 
4826
class PragmaOnce;
 
4827
class CMatchSyntax;
 
4828
namespace Puma {
 
4829
 
 
4830
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
 
4831
class CTypePointer : public CTypeInfo {
 
4832
#line 4833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4833
  friend class ::CCExprResolve;
 
4834
  friend class ::CExprResolve;
 
4835
  friend class ::WinIfExists;
 
4836
  friend class ::WinImportHandler;
 
4837
  friend class ::WinMacros;
 
4838
  friend class ::WinAsm;
 
4839
  friend class ::WinDeclSpecs;
 
4840
  friend class ::WinMemberExplSpec;
 
4841
  friend class ::WinTypeKeywords;
 
4842
  friend class ::WinFriend;
 
4843
  friend class ::ExtAC;
 
4844
  friend class ::ExtACBuilderCoupling;
 
4845
  friend class ::ExtACSyntaxCoupling;
 
4846
  friend class ::ExtACTree;
 
4847
  friend class ::ExtACKeywords;
 
4848
  friend class ::ExtGnu;
 
4849
  friend class ::PragmaOnceUnitState;
 
4850
  friend class ::PragmaOnce;
 
4851
  friend class ::CMatchSyntax;
 
4852
 
 
4853
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
 
4854
 
 
4855
protected:
 
4856
  /** Constructor.
 
4857
   *  \param base The base type. 
 
4858
   *  \param id The type identifier. */
 
4859
  CTypePointer (CTypeInfo *base, CTypeInfo::TypeId id);
 
4860
 
 
4861
public:
 
4862
  /** Constructor. Type has id CTypeInfo::TYPE_POINTER.
 
4863
   *  \param base The base type. */
 
4864
  CTypePointer (CTypeInfo *base);
 
4865
  /** Destructor. */
 
4866
  ~CTypePointer ();
 
4867
public:
 
4868
  typedef AC::TLE __AttrTypes;
 
4869
  const char *__attr_name (unsigned i) const { return 0; }
 
4870
  const void *__attr (unsigned __i) const { return 0; }
 
4871
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
 
4872
};
 
4873
 
 
4874
inline CTypePointer::CTypePointer (CTypeInfo *base) :
 
4875
  CTypeInfo (base, CTypeInfo::TYPE_POINTER)
 
4876
 {}
 
4877
inline CTypePointer::CTypePointer (CTypeInfo *base, CTypeInfo::TypeId id) :
 
4878
  CTypeInfo (base, id)
 
4879
 {}
 
4880
inline CTypePointer::~CTypePointer ()
 
4881
 {}
 
4882
 
 
4883
 
 
4884
} // namespace Puma
 
4885
 
 
4886
#endif /* __CTypePointer_h__ */
 
4887
 
 
4888
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
 
4889
// This file is part of PUMA.
 
4890
// Copyright (C) 1999-2003  The PUMA developer team.
 
4891
//                                                                
 
4892
// This program is free software;  you can redistribute it and/or 
 
4893
// modify it under the terms of the GNU General Public License as 
 
4894
// published by the Free Software Foundation; either version 2 of 
 
4895
// the License, or (at your option) any later version.            
 
4896
//                                                                
 
4897
// This program is distributed in the hope that it will be useful,
 
4898
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
4899
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
4900
// GNU General Public License for more details.                   
 
4901
//                                                                
 
4902
// You should have received a copy of the GNU General Public      
 
4903
// License along with this program; if not, write to the Free     
 
4904
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
4905
// MA  02111-1307  USA                                            
 
4906
 
 
4907
#ifndef __CTypeMemberPointer_h__
 
4908
#define __CTypeMemberPointer_h__
 
4909
 
 
4910
/** \file
 
4911
 *  Type of a member pointer. */
 
4912
 
 
4913
#ifndef __CTypeInfo_h__
 
4914
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
4915
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
4916
#endif
 
4917
 
 
4918
namespace Puma {
 
4919
 
 
4920
 
 
4921
class CObjectInfo;
 
4922
class CRecord;
 
4923
class CTemplateParamInfo;
 
4924
 
 
4925
 
 
4926
/** \class CTypeMemberPointer CTypeMemberPointer.h Puma/CTypeInfo.h
 
4927
 *  Type of a member pointer. 
 
4928
 *  Examples: 
 
4929
 *  \code 
 
4930
 * struct X { int a; void f(int); };
 
4931
 * int X::* aptr = &X::a;          // aptr has type 'member pointer to int'
 
4932
 *                                 // type structure:
 
4933
 *                                 // CTypeMemberPointer class=X
 
4934
 *                                 //   CTypePrimitive int
 
4935
 * void (X::*fptr)(int) = &X::f;   // fptr has type 'member pointer to function returning void with one argument int'
 
4936
 *                                 // type structure:
 
4937
 *                                 // CTypeMemberPointer class=X
 
4938
 *                                 //   CTypeFunction args=int
 
4939
 *                                 //     CTypePrimitive void
 
4940
 *  \endcode */
 
4941
 
 
4942
#line 4943 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4943
} // closed Puma
 
4944
class CCExprResolve;
 
4945
class CExprResolve;
 
4946
class WinIfExists;
 
4947
class WinImportHandler;
 
4948
class WinMacros;
 
4949
class WinAsm;
 
4950
class WinDeclSpecs;
 
4951
class WinMemberExplSpec;
 
4952
class WinTypeKeywords;
 
4953
class WinFriend;
 
4954
class ExtAC;
 
4955
class ExtACBuilderCoupling;
 
4956
class ExtACSyntaxCoupling;
 
4957
class ExtACTree;
 
4958
class ExtACKeywords;
 
4959
class ExtGnu;
 
4960
class PragmaOnceUnitState;
 
4961
class PragmaOnce;
 
4962
class CMatchSyntax;
 
4963
namespace Puma {
 
4964
 
 
4965
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
 
4966
class CTypeMemberPointer : public CTypePointer {
 
4967
#line 4968 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
4968
  friend class ::CCExprResolve;
 
4969
  friend class ::CExprResolve;
 
4970
  friend class ::WinIfExists;
 
4971
  friend class ::WinImportHandler;
 
4972
  friend class ::WinMacros;
 
4973
  friend class ::WinAsm;
 
4974
  friend class ::WinDeclSpecs;
 
4975
  friend class ::WinMemberExplSpec;
 
4976
  friend class ::WinTypeKeywords;
 
4977
  friend class ::WinFriend;
 
4978
  friend class ::ExtAC;
 
4979
  friend class ::ExtACBuilderCoupling;
 
4980
  friend class ::ExtACSyntaxCoupling;
 
4981
  friend class ::ExtACTree;
 
4982
  friend class ::ExtACKeywords;
 
4983
  friend class ::ExtGnu;
 
4984
  friend class ::PragmaOnceUnitState;
 
4985
  friend class ::PragmaOnce;
 
4986
  friend class ::CMatchSyntax;
 
4987
 
 
4988
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
 
4989
 
 
4990
  CObjectInfo *_Class;
 
4991
 
 
4992
public:
 
4993
  /** Constructor. Type has id CTypeInfo::TYPE_MEMBER_POINTER.
 
4994
   *  \param base The base type (type of the member). 
 
4995
   *  \param info The class containing the member. */
 
4996
  CTypeMemberPointer (CTypeInfo *base, CObjectInfo *info);
 
4997
  /** Destructor. */
 
4998
  ~CTypeMemberPointer ();
 
4999
 
 
5000
  /** Get the class or union containing the member. */
 
5001
  CRecord *Record () const;
 
5002
  /** Get the template parameter information if the member's 
 
5003
   *  class is a type template parameter. */
 
5004
  CTemplateParamInfo *TemplateParam () const;
 
5005
public:
 
5006
  typedef AC::TL<Puma::CObjectInfo *,AC::TLE > __AttrTypes;
 
5007
  const char *__attr_name (unsigned i) const {
 
5008
    static const char *names[] = { "_Class" }; return names[i];
 
5009
  }
 
5010
  const void *__attr (unsigned __i) const {
 
5011
    switch (__i) { case 0: return &_Class; default: return 0; }
 
5012
  }
 
5013
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
 
5014
};
 
5015
 
 
5016
inline CTypeMemberPointer::CTypeMemberPointer (CTypeInfo *base, CObjectInfo *c) :
 
5017
  CTypePointer (base, CTypeInfo::TYPE_MEMBER_POINTER),
 
5018
  _Class (c)
 
5019
 {}
 
5020
inline CTypeMemberPointer::~CTypeMemberPointer ()
 
5021
 {}
 
5022
 
 
5023
 
 
5024
} // namespace Puma
 
5025
 
 
5026
#endif /* __CTypeMemberPointer_h__ */
 
5027
 
 
5028
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
5029
// This file is part of PUMA.
 
5030
// Copyright (C) 1999-2003  The PUMA developer team.
 
5031
//                                                                
 
5032
// This program is free software;  you can redistribute it and/or 
 
5033
// modify it under the terms of the GNU General Public License as 
 
5034
// published by the Free Software Foundation; either version 2 of 
 
5035
// the License, or (at your option) any later version.            
 
5036
//                                                                
 
5037
// This program is distributed in the hope that it will be useful,
 
5038
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
5039
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
5040
// GNU General Public License for more details.                   
 
5041
//                                                                
 
5042
// You should have received a copy of the GNU General Public      
 
5043
// License along with this program; if not, write to the Free     
 
5044
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
5045
// MA  02111-1307  USA                                            
 
5046
 
 
5047
#ifndef __CTypeFunction_h__
 
5048
#define __CTypeFunction_h__
 
5049
 
 
5050
/** \file
 
5051
 *  Type of a function. */
 
5052
 
 
5053
#ifndef __CTypeInfo_h__
 
5054
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
5055
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
5056
#endif
 
5057
 
 
5058
 
 
5059
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
5060
// This file is part of PUMA.
 
5061
// Copyright (C) 1999-2003  The PUMA developer team.
 
5062
//                                                                
 
5063
// This program is free software;  you can redistribute it and/or 
 
5064
// modify it under the terms of the GNU General Public License as 
 
5065
// published by the Free Software Foundation; either version 2 of 
 
5066
// the License, or (at your option) any later version.            
 
5067
//                                                                
 
5068
// This program is distributed in the hope that it will be useful,
 
5069
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
5070
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
5071
// GNU General Public License for more details.                   
 
5072
//                                                                
 
5073
// You should have received a copy of the GNU General Public      
 
5074
// License along with this program; if not, write to the Free     
 
5075
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
5076
// MA  02111-1307  USA                                            
 
5077
 
 
5078
#ifndef __CTypeList_h__
 
5079
#define __CTypeList_h__
 
5080
 
 
5081
/** \file
 
5082
 *  Type list. */
 
5083
 
 
5084
 
 
5085
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
5086
namespace Puma {
 
5087
 
 
5088
 
 
5089
class CTypeInfo;
 
5090
class CT_ArgDeclList;
 
5091
 
 
5092
 
 
5093
/** \class CTypeList CTypeList.h Puma/CTypeList.h
 
5094
 *  %List of types. Used for instance for the list of function
 
5095
 *  parameter types. */
 
5096
 
 
5097
#line 5098 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5098
} // closed Puma
 
5099
class CCExprResolve;
 
5100
class CExprResolve;
 
5101
class WinIfExists;
 
5102
class WinImportHandler;
 
5103
class WinMacros;
 
5104
class WinAsm;
 
5105
class WinDeclSpecs;
 
5106
class WinMemberExplSpec;
 
5107
class WinTypeKeywords;
 
5108
class WinFriend;
 
5109
class ExtAC;
 
5110
class ExtACBuilderCoupling;
 
5111
class ExtACSyntaxCoupling;
 
5112
class ExtACTree;
 
5113
class ExtACKeywords;
 
5114
class ExtGnu;
 
5115
class PragmaOnceUnitState;
 
5116
class PragmaOnce;
 
5117
class CMatchSyntax;
 
5118
namespace Puma {
 
5119
 
 
5120
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
5121
class CTypeList {
 
5122
#line 5123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5123
  friend class ::CCExprResolve;
 
5124
  friend class ::CExprResolve;
 
5125
  friend class ::WinIfExists;
 
5126
  friend class ::WinImportHandler;
 
5127
  friend class ::WinMacros;
 
5128
  friend class ::WinAsm;
 
5129
  friend class ::WinDeclSpecs;
 
5130
  friend class ::WinMemberExplSpec;
 
5131
  friend class ::WinTypeKeywords;
 
5132
  friend class ::WinFriend;
 
5133
  friend class ::ExtAC;
 
5134
  friend class ::ExtACBuilderCoupling;
 
5135
  friend class ::ExtACSyntaxCoupling;
 
5136
  friend class ::ExtACTree;
 
5137
  friend class ::ExtACKeywords;
 
5138
  friend class ::ExtGnu;
 
5139
  friend class ::PragmaOnceUnitState;
 
5140
  friend class ::PragmaOnce;
 
5141
  friend class ::CMatchSyntax;
 
5142
 
 
5143
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
5144
 
 
5145
  Array<CTypeInfo*> _List;
 
5146
  CT_ArgDeclList *_ArgumentList;
 
5147
 
 
5148
public:
 
5149
  /** Constructor. 
 
5150
   *  \param len The initial length of the list. */
 
5151
  CTypeList (int len = 3);
 
5152
  /** Destructor. */
 
5153
  ~CTypeList ();
 
5154
 
 
5155
  /** Get the number of types in the list. */
 
5156
  unsigned Entries () const;
 
5157
  /** Get the n-th type.
 
5158
   *  \param n The index of the type. */
 
5159
  CTypeInfo *Entry (unsigned n) const;
 
5160
  /** Replace the n-th type in the list by the given type.
 
5161
   *  \param n The index of the type to replace.
 
5162
   *  \param type The new type. */
 
5163
  void ReplaceEntry (unsigned n, CTypeInfo *type);
 
5164
  
 
5165
  /** Get the argument declaration list for K&R functions. */
 
5166
  CT_ArgDeclList *ArgumentList () const;
 
5167
  /** Set the argument declaration list for K&R functions. 
 
5168
   *  \param args The argument declaration list. */
 
5169
  void ArgumentList (CT_ArgDeclList *args);
 
5170
  
 
5171
  /** Add a type to the list.
 
5172
   *  \param type The type to add. */
 
5173
  void AddEntry (CTypeInfo *type);
 
5174
  
 
5175
  /** Check if one of the types in the list depends on 
 
5176
   *  a template parameter. */
 
5177
  bool isDependent () const;
 
5178
public:
 
5179
  typedef AC::TL<Puma::Array< Puma::CTypeInfo * >,AC::TL<Puma::CT_ArgDeclList *,AC::TLE > > __AttrTypes;
 
5180
  const char *__attr_name (unsigned i) const {
 
5181
    static const char *names[] = { "_List", "_ArgumentList" }; return names[i];
 
5182
  }
 
5183
  const void *__attr (unsigned __i) const {
 
5184
    switch (__i) { case 1: return &_List; case 2: return &_ArgumentList; default: return 0; }
 
5185
  }
 
5186
#line 71 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
5187
};
 
5188
 
 
5189
inline CTypeList::CTypeList (int len) :
 
5190
  _List (len),
 
5191
  _ArgumentList ((CT_ArgDeclList*)0)
 
5192
 {}
 
5193
inline CTypeList::~CTypeList ()
 
5194
 {}
 
5195
 
 
5196
inline CT_ArgDeclList *CTypeList::ArgumentList () const
 
5197
 { return _ArgumentList; }
 
5198
inline void CTypeList::ArgumentList (CT_ArgDeclList *al)
 
5199
 { _ArgumentList = al; }
 
5200
 
 
5201
inline unsigned CTypeList::Entries () const
 
5202
 { return _List.length (); }
 
5203
inline CTypeInfo *CTypeList::Entry (unsigned i) const
 
5204
 { return _List.lookup (i); }
 
5205
 
 
5206
inline void CTypeList::AddEntry (CTypeInfo *info) 
 
5207
 { if (info) _List.append (info); }
 
5208
inline void CTypeList::ReplaceEntry (unsigned i, CTypeInfo *info)
 
5209
 { if (info && (i < Entries ())) _List[i] = info; }
 
5210
 
 
5211
 
 
5212
} // namespace Puma
 
5213
 
 
5214
#endif /* __CTypeList_h__ */
 
5215
 
 
5216
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
5217
namespace Puma {
 
5218
 
 
5219
 
 
5220
class CFunctionInfo;
 
5221
class CRecord;
 
5222
 
 
5223
 
 
5224
/** \class CTypeFunction CTypeFunction.h Puma/CTypeInfo.h
 
5225
 *  Type of a function. 
 
5226
 *  Example: 
 
5227
 *  \code 
 
5228
 * void foo(int);  // foo has type 'function returning void with one argument int'
 
5229
 *                 // type structure:
 
5230
 *                 // CTypeFunction args=int
 
5231
 *                 //   CTypePrimitive void
 
5232
 *  \endcode */
 
5233
 
 
5234
#line 5235 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5235
} // closed Puma
 
5236
class CCExprResolve;
 
5237
class CExprResolve;
 
5238
class WinIfExists;
 
5239
class WinImportHandler;
 
5240
class WinMacros;
 
5241
class WinAsm;
 
5242
class WinDeclSpecs;
 
5243
class WinMemberExplSpec;
 
5244
class WinTypeKeywords;
 
5245
class WinFriend;
 
5246
class ExtAC;
 
5247
class ExtACBuilderCoupling;
 
5248
class ExtACSyntaxCoupling;
 
5249
class ExtACTree;
 
5250
class ExtACKeywords;
 
5251
class ExtGnu;
 
5252
class PragmaOnceUnitState;
 
5253
class PragmaOnce;
 
5254
class CMatchSyntax;
 
5255
namespace Puma {
 
5256
 
 
5257
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
5258
class CTypeFunction : public CTypeQualified {
 
5259
#line 5260 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5260
  friend class ::CCExprResolve;
 
5261
  friend class ::CExprResolve;
 
5262
  friend class ::WinIfExists;
 
5263
  friend class ::WinImportHandler;
 
5264
  friend class ::WinMacros;
 
5265
  friend class ::WinAsm;
 
5266
  friend class ::WinDeclSpecs;
 
5267
  friend class ::WinMemberExplSpec;
 
5268
  friend class ::WinTypeKeywords;
 
5269
  friend class ::WinFriend;
 
5270
  friend class ::ExtAC;
 
5271
  friend class ::ExtACBuilderCoupling;
 
5272
  friend class ::ExtACSyntaxCoupling;
 
5273
  friend class ::ExtACTree;
 
5274
  friend class ::ExtACKeywords;
 
5275
  friend class ::ExtGnu;
 
5276
  friend class ::PragmaOnceUnitState;
 
5277
  friend class ::PragmaOnce;
 
5278
  friend class ::CMatchSyntax;
 
5279
 
 
5280
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
5281
 
 
5282
  CTypeList *_ArgTypes;
 
5283
  CFunctionInfo *_Function;
 
5284
  bool _hasPrototype;
 
5285
 
 
5286
public:
 
5287
  /** Constructor. Type has id CTypeInfo::TYPE_FUNCTION.
 
5288
   *  \param base The base type (return type). 
 
5289
   *  \param args The argument type list. 
 
5290
   *  \param prototype Function has prototype. */
 
5291
  CTypeFunction (CTypeInfo *base, CTypeList *args, bool prototype);
 
5292
  /** Destructor. */
 
5293
  ~CTypeFunction ();
 
5294
 
 
5295
  /** Get the argument type list. */
 
5296
  CTypeList *ArgTypes () const;
 
5297
  /** Get the return type. */
 
5298
  CTypeInfo *ReturnType () const;  
 
5299
 
 
5300
  /** Get the semantic information about the function. */
 
5301
  CFunctionInfo *FunctionInfo () const;
 
5302
  /** Get the semantic information about the class if
 
5303
   *  the function is a class method. */
 
5304
  CRecord *Record () const;
 
5305
 
 
5306
  /** Set the semantic information about the function. */
 
5307
  void FunctionInfo (CFunctionInfo *);
 
5308
  
 
5309
  /** Check if the function is declared \e static. */
 
5310
  bool isStatic () const;
 
5311
  /** Check if the function has a prototype. */
 
5312
  bool hasPrototype () const;
 
5313
public:
 
5314
  typedef AC::TL<Puma::CTypeList *,AC::TL<Puma::CFunctionInfo *,AC::TL<bool,AC::TLE > > > __AttrTypes;
 
5315
  const char *__attr_name (unsigned i) const {
 
5316
    static const char *names[] = { "_ArgTypes", "_Function", "_hasPrototype" }; return names[i];
 
5317
  }
 
5318
  const void *__attr (unsigned __i) const {
 
5319
    switch (__i) { case 0: return &_ArgTypes; case 1: return &_Function; case 2: return &_hasPrototype; default: return 0; }
 
5320
  }
 
5321
#line 80 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
5322
};
 
5323
 
 
5324
inline CTypeFunction::CTypeFunction (CTypeInfo *base, CTypeList *l, 
 
5325
  bool prototype) :
 
5326
  CTypeQualified (base, false, false, false, CTypeInfo::TYPE_FUNCTION),
 
5327
  _ArgTypes (l),
 
5328
  _Function (0),
 
5329
  _hasPrototype (prototype)
 
5330
 {}
 
5331
inline CTypeFunction::~CTypeFunction ()
 
5332
 {}
 
5333
 
 
5334
inline bool CTypeFunction::hasPrototype () const
 
5335
 { return _hasPrototype; }
 
5336
inline CTypeList *CTypeFunction::ArgTypes () const 
 
5337
 { return _ArgTypes; }
 
5338
inline CTypeInfo *CTypeFunction::ReturnType () const 
 
5339
 { return BaseType (); }
 
5340
inline CFunctionInfo *CTypeFunction::FunctionInfo () const 
 
5341
 { return _Function; }
 
5342
inline void CTypeFunction::FunctionInfo (CFunctionInfo *info)
 
5343
 { _Function = info; }
 
5344
 
 
5345
 
 
5346
} // namespace Puma
 
5347
 
 
5348
#endif /* __CTypeFunction_h__ */
 
5349
 
 
5350
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
 
5351
// This file is part of PUMA.
 
5352
// Copyright (C) 1999-2003  The PUMA developer team.
 
5353
//                                                                
 
5354
// This program is free software;  you can redistribute it and/or 
 
5355
// modify it under the terms of the GNU General Public License as 
 
5356
// published by the Free Software Foundation; either version 2 of 
 
5357
// the License, or (at your option) any later version.            
 
5358
//                                                                
 
5359
// This program is distributed in the hope that it will be useful,
 
5360
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
5361
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
5362
// GNU General Public License for more details.                   
 
5363
//                                                                
 
5364
// You should have received a copy of the GNU General Public      
 
5365
// License along with this program; if not, write to the Free     
 
5366
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
5367
// MA  02111-1307  USA                                            
 
5368
 
 
5369
#ifndef __CTypeEnum_h__
 
5370
#define __CTypeEnum_h__
 
5371
 
 
5372
/** \file
 
5373
 *  Type of an enumeration. */
 
5374
 
 
5375
#ifndef __CTypeInfo_h__
 
5376
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
5377
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
5378
#endif
 
5379
 
 
5380
namespace Puma {
 
5381
 
 
5382
 
 
5383
class CEnumInfo;
 
5384
 
 
5385
 
 
5386
/** \class CTypeEnum CTypeEnum.h Puma/CTypeInfo.h
 
5387
 *  Type of an enumeration. 
 
5388
 *  Examples: 
 
5389
 *  \code 
 
5390
 * enum E { A,B } e;  // e has type 'enum E'
 
5391
 * enum { C,D } a;    // a has type 'enum <anonymous>'
 
5392
 *  \endcode */
 
5393
 
 
5394
#line 5395 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5395
} // closed Puma
 
5396
class CCExprResolve;
 
5397
class CExprResolve;
 
5398
class WinIfExists;
 
5399
class WinImportHandler;
 
5400
class WinMacros;
 
5401
class WinAsm;
 
5402
class WinDeclSpecs;
 
5403
class WinMemberExplSpec;
 
5404
class WinTypeKeywords;
 
5405
class WinFriend;
 
5406
class ExtAC;
 
5407
class ExtACBuilderCoupling;
 
5408
class ExtACSyntaxCoupling;
 
5409
class ExtACTree;
 
5410
class ExtACKeywords;
 
5411
class ExtGnu;
 
5412
class PragmaOnceUnitState;
 
5413
class PragmaOnce;
 
5414
class CMatchSyntax;
 
5415
namespace Puma {
 
5416
 
 
5417
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
 
5418
class CTypeEnum : public CTypeInfo {
 
5419
#line 5420 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5420
  friend class ::CCExprResolve;
 
5421
  friend class ::CExprResolve;
 
5422
  friend class ::WinIfExists;
 
5423
  friend class ::WinImportHandler;
 
5424
  friend class ::WinMacros;
 
5425
  friend class ::WinAsm;
 
5426
  friend class ::WinDeclSpecs;
 
5427
  friend class ::WinMemberExplSpec;
 
5428
  friend class ::WinTypeKeywords;
 
5429
  friend class ::WinFriend;
 
5430
  friend class ::ExtAC;
 
5431
  friend class ::ExtACBuilderCoupling;
 
5432
  friend class ::ExtACSyntaxCoupling;
 
5433
  friend class ::ExtACTree;
 
5434
  friend class ::ExtACKeywords;
 
5435
  friend class ::ExtGnu;
 
5436
  friend class ::PragmaOnceUnitState;
 
5437
  friend class ::PragmaOnce;
 
5438
  friend class ::CMatchSyntax;
 
5439
 
 
5440
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
 
5441
 
 
5442
  CEnumInfo *_Enum;
 
5443
 
 
5444
public:
 
5445
  /** Constructor. Type has id CTypeInfo::TYPE_ENUM.
 
5446
   *  \param e The semantic information about the enumeration. */
 
5447
  CTypeEnum (CEnumInfo *e);
 
5448
  /** Destructor. */
 
5449
  ~CTypeEnum ();
 
5450
 
 
5451
  /** Get the semantic information about the enumeration. */
 
5452
  CEnumInfo *EnumInfo () const;
 
5453
 
 
5454
  /** Check if the enumeration is complete.
 
5455
   *  \param pos Optional source code position. */
 
5456
  bool isComplete (unsigned long pos = 0) const;
 
5457
  
 
5458
  /** Get the implementation-defined underlying data
 
5459
   *  type of the enumeration (defaults to \e int). */
 
5460
  CTypeInfo *UnderlyingType () const;
 
5461
public:
 
5462
  typedef AC::TL<Puma::CEnumInfo *,AC::TLE > __AttrTypes;
 
5463
  const char *__attr_name (unsigned i) const {
 
5464
    static const char *names[] = { "_Enum" }; return names[i];
 
5465
  }
 
5466
  const void *__attr (unsigned __i) const {
 
5467
    switch (__i) { case 0: return &_Enum; default: return 0; }
 
5468
  }
 
5469
#line 63 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
 
5470
};
 
5471
 
 
5472
inline CTypeEnum::CTypeEnum (CEnumInfo *e) :
 
5473
  CTypeInfo (&CTYPE_EMPTY, CTypeInfo::TYPE_ENUM),
 
5474
  _Enum (e)
 
5475
 {}
 
5476
inline CTypeEnum::~CTypeEnum ()
 
5477
 {}
 
5478
 
 
5479
inline CEnumInfo *CTypeEnum::EnumInfo () const 
 
5480
 { return _Enum; }
 
5481
 
 
5482
 
 
5483
} // namespace Puma
 
5484
 
 
5485
#endif /* __CTypeEnum_h__ */
 
5486
 
 
5487
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
 
5488
// This file is part of PUMA.
 
5489
// Copyright (C) 1999-2003  The PUMA developer team.
 
5490
//                                                                
 
5491
// This program is free software;  you can redistribute it and/or 
 
5492
// modify it under the terms of the GNU General Public License as 
 
5493
// published by the Free Software Foundation; either version 2 of 
 
5494
// the License, or (at your option) any later version.            
 
5495
//                                                                
 
5496
// This program is distributed in the hope that it will be useful,
 
5497
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
5498
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
5499
// GNU General Public License for more details.                   
 
5500
//                                                                
 
5501
// You should have received a copy of the GNU General Public      
 
5502
// License along with this program; if not, write to the Free     
 
5503
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
5504
// MA  02111-1307  USA                                            
 
5505
 
 
5506
#ifndef __CTypeRecord_h__
 
5507
#define __CTypeRecord_h__
 
5508
 
 
5509
/** \file
 
5510
 *  Type of a class or union. */
 
5511
 
 
5512
#ifndef __CTypeInfo_h__
 
5513
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
5514
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
5515
#endif
 
5516
 
 
5517
namespace Puma {
 
5518
 
 
5519
 
 
5520
class CRecord;
 
5521
 
 
5522
/** \class CTypeRecord CTypeRecord.h Puma/CTypeInfo.h
 
5523
 *  Type of a class or union. */ 
 
5524
 
 
5525
#line 5526 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5526
} // closed Puma
 
5527
class CCExprResolve;
 
5528
class CExprResolve;
 
5529
class WinIfExists;
 
5530
class WinImportHandler;
 
5531
class WinMacros;
 
5532
class WinAsm;
 
5533
class WinDeclSpecs;
 
5534
class WinMemberExplSpec;
 
5535
class WinTypeKeywords;
 
5536
class WinFriend;
 
5537
class ExtAC;
 
5538
class ExtACBuilderCoupling;
 
5539
class ExtACSyntaxCoupling;
 
5540
class ExtACTree;
 
5541
class ExtACKeywords;
 
5542
class ExtGnu;
 
5543
class PragmaOnceUnitState;
 
5544
class PragmaOnce;
 
5545
class CMatchSyntax;
 
5546
namespace Puma {
 
5547
 
 
5548
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
 
5549
class CTypeRecord : public CTypeInfo {
 
5550
#line 5551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5551
  friend class ::CCExprResolve;
 
5552
  friend class ::CExprResolve;
 
5553
  friend class ::WinIfExists;
 
5554
  friend class ::WinImportHandler;
 
5555
  friend class ::WinMacros;
 
5556
  friend class ::WinAsm;
 
5557
  friend class ::WinDeclSpecs;
 
5558
  friend class ::WinMemberExplSpec;
 
5559
  friend class ::WinTypeKeywords;
 
5560
  friend class ::WinFriend;
 
5561
  friend class ::ExtAC;
 
5562
  friend class ::ExtACBuilderCoupling;
 
5563
  friend class ::ExtACSyntaxCoupling;
 
5564
  friend class ::ExtACTree;
 
5565
  friend class ::ExtACKeywords;
 
5566
  friend class ::ExtGnu;
 
5567
  friend class ::PragmaOnceUnitState;
 
5568
  friend class ::PragmaOnce;
 
5569
  friend class ::CMatchSyntax;
 
5570
 
 
5571
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
 
5572
 
 
5573
  bool _hasConstMember;
 
5574
 
 
5575
  long int _Size;
 
5576
  long int _Align;
 
5577
 
 
5578
  CRecord *_Record;
 
5579
 
 
5580
protected:
 
5581
  /** Constructor.
 
5582
   *  \param id The type identifier.
 
5583
   *  \param cu The class or union. */
 
5584
  CTypeRecord (TypeId id, CRecord *cu);
 
5585
 
 
5586
public:
 
5587
  /** Destructor. */
 
5588
  ~CTypeRecord ();
 
5589
 
 
5590
  /** Get the size of the class or union in bits. */
 
5591
  long int Size ();
 
5592
  /** Get the alignment of the type. */
 
5593
  long int Align ();
 
5594
 
 
5595
  /** Set whether the class or union has a 
 
5596
   *  const member and thus is not modifiable.
 
5597
   *  \param v True if it has a const member. */
 
5598
  void hasConstMember (bool v);
 
5599
  /** Check if the class or union type has a 
 
5600
   *  const member and thus is not modifiable. */
 
5601
  bool hasConstMember () const;
 
5602
 
 
5603
  /** Check if the class or union is complete.
 
5604
   *  \param pos Optional source code position. */
 
5605
  bool isComplete (unsigned long pos = 0) const;
 
5606
 
 
5607
  /** Get the class or union. */
 
5608
  CRecord *Record () const;
 
5609
  /** Set the class or union. */
 
5610
  void Record (CRecord *);
 
5611
public:
 
5612
  typedef AC::TL<bool,AC::TL<long int,AC::TL<long int,AC::TL<Puma::CRecord *,AC::TLE > > > > __AttrTypes;
 
5613
  const char *__attr_name (unsigned i) const {
 
5614
    static const char *names[] = { "_hasConstMember", "_Size", "_Align", "_Record" }; return names[i];
 
5615
  }
 
5616
  const void *__attr (unsigned __i) const {
 
5617
    switch (__i) { case 0: return &_hasConstMember; case 1: return &_Size; case 2: return &_Align; case 3: return &_Record; default: return 0; }
 
5618
  }
 
5619
#line 76 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
 
5620
};
 
5621
 
 
5622
inline CTypeRecord::CTypeRecord (CTypeInfo::TypeId id, CRecord *r) :
 
5623
  CTypeInfo (&CTYPE_EMPTY, id),
 
5624
  _hasConstMember (false),
 
5625
  _Size (0),
 
5626
  _Align (0),
 
5627
  _Record (r)
 
5628
 {}
 
5629
inline CTypeRecord::~CTypeRecord ()
 
5630
 {}
 
5631
 
 
5632
inline CRecord *CTypeRecord::Record () const 
 
5633
 { return _Record; }
 
5634
inline void CTypeRecord::Record (CRecord *r)
 
5635
 { _Record = r; }
 
5636
 
 
5637
inline long int CTypeRecord::Align () 
 
5638
 { return (Size (), _Align); }
 
5639
 
 
5640
inline bool CTypeRecord::hasConstMember () const
 
5641
 { return _hasConstMember; }
 
5642
inline void CTypeRecord::hasConstMember (bool v)
 
5643
 { _hasConstMember = v; }
 
5644
 
 
5645
 
 
5646
} // namespace Puma
 
5647
 
 
5648
#endif /* __CTypeRecord_h__ */
 
5649
 
 
5650
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
 
5651
// This file is part of PUMA.
 
5652
// Copyright (C) 1999-2003  The PUMA developer team.
 
5653
//                                                                
 
5654
// This program is free software;  you can redistribute it and/or 
 
5655
// modify it under the terms of the GNU General Public License as 
 
5656
// published by the Free Software Foundation; either version 2 of 
 
5657
// the License, or (at your option) any later version.            
 
5658
//                                                                
 
5659
// This program is distributed in the hope that it will be useful,
 
5660
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
5661
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
5662
// GNU General Public License for more details.                   
 
5663
//                                                                
 
5664
// You should have received a copy of the GNU General Public      
 
5665
// License along with this program; if not, write to the Free     
 
5666
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
5667
// MA  02111-1307  USA                                            
 
5668
 
 
5669
#ifndef __CTypeClass_h__
 
5670
#define __CTypeClass_h__
 
5671
 
 
5672
/** \file
 
5673
 *  Type of a class. */
 
5674
 
 
5675
#ifndef __CTypeInfo_h__
 
5676
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
5677
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
5678
#endif
 
5679
 
 
5680
namespace Puma {
 
5681
 
 
5682
 
 
5683
class CClassInfo;
 
5684
class CRecord;
 
5685
 
 
5686
 
 
5687
/** \class CTypeClass CTypeClass.h Puma/CTypeInfo.h
 
5688
 *  Type of a class. 
 
5689
 *  Examples: 
 
5690
 *  \code 
 
5691
 * class X x;    // x has type 'class X'
 
5692
 * struct Y y;   // y has type 'class Y'
 
5693
 *  \endcode */
 
5694
 
 
5695
#line 5696 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5696
} // closed Puma
 
5697
class CCExprResolve;
 
5698
class CExprResolve;
 
5699
class WinIfExists;
 
5700
class WinImportHandler;
 
5701
class WinMacros;
 
5702
class WinAsm;
 
5703
class WinDeclSpecs;
 
5704
class WinMemberExplSpec;
 
5705
class WinTypeKeywords;
 
5706
class WinFriend;
 
5707
class ExtAC;
 
5708
class ExtACBuilderCoupling;
 
5709
class ExtACSyntaxCoupling;
 
5710
class ExtACTree;
 
5711
class ExtACKeywords;
 
5712
class ExtGnu;
 
5713
class PragmaOnceUnitState;
 
5714
class PragmaOnce;
 
5715
class CMatchSyntax;
 
5716
namespace Puma {
 
5717
 
 
5718
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
 
5719
class CTypeClass : public CTypeRecord {
 
5720
#line 5721 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5721
  friend class ::CCExprResolve;
 
5722
  friend class ::CExprResolve;
 
5723
  friend class ::WinIfExists;
 
5724
  friend class ::WinImportHandler;
 
5725
  friend class ::WinMacros;
 
5726
  friend class ::WinAsm;
 
5727
  friend class ::WinDeclSpecs;
 
5728
  friend class ::WinMemberExplSpec;
 
5729
  friend class ::WinTypeKeywords;
 
5730
  friend class ::WinFriend;
 
5731
  friend class ::ExtAC;
 
5732
  friend class ::ExtACBuilderCoupling;
 
5733
  friend class ::ExtACSyntaxCoupling;
 
5734
  friend class ::ExtACTree;
 
5735
  friend class ::ExtACKeywords;
 
5736
  friend class ::ExtGnu;
 
5737
  friend class ::PragmaOnceUnitState;
 
5738
  friend class ::PragmaOnce;
 
5739
  friend class ::CMatchSyntax;
 
5740
 
 
5741
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
 
5742
 
 
5743
public:
 
5744
  /** Constructor. Type has id CTypeInfo::TYPE_CLASS.
 
5745
   *  \param c The semantic information about the class. */
 
5746
  CTypeClass (CRecord *c);
 
5747
  /** Destructor. */
 
5748
  ~CTypeClass ();
 
5749
 
 
5750
  /** Get the semantic information about the class. */
 
5751
  CClassInfo *ClassInfo () const;
 
5752
public:
 
5753
  typedef AC::TLE __AttrTypes;
 
5754
  const char *__attr_name (unsigned i) const { return 0; }
 
5755
  const void *__attr (unsigned __i) const { return 0; }
 
5756
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
 
5757
};
 
5758
 
 
5759
inline CTypeClass::CTypeClass (CRecord *c) :
 
5760
  CTypeRecord (CTypeInfo::TYPE_CLASS, c)
 
5761
 {}
 
5762
inline CTypeClass::~CTypeClass ()
 
5763
 {}
 
5764
 
 
5765
 
 
5766
} // namespace Puma
 
5767
 
 
5768
#endif /* __CTypeClass_h__ */
 
5769
 
 
5770
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
 
5771
// This file is part of PUMA.
 
5772
// Copyright (C) 1999-2003  The PUMA developer team.
 
5773
//                                                                
 
5774
// This program is free software;  you can redistribute it and/or 
 
5775
// modify it under the terms of the GNU General Public License as 
 
5776
// published by the Free Software Foundation; either version 2 of 
 
5777
// the License, or (at your option) any later version.            
 
5778
//                                                                
 
5779
// This program is distributed in the hope that it will be useful,
 
5780
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
5781
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
5782
// GNU General Public License for more details.                   
 
5783
//                                                                
 
5784
// You should have received a copy of the GNU General Public      
 
5785
// License along with this program; if not, write to the Free     
 
5786
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
5787
// MA  02111-1307  USA                                            
 
5788
 
 
5789
#ifndef __CTypeUnion_h__
 
5790
#define __CTypeUnion_h__
 
5791
 
 
5792
/** \file
 
5793
 *  Type of a union. */
 
5794
 
 
5795
#ifndef __CTypeInfo_h__
 
5796
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
5797
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
5798
#endif
 
5799
 
 
5800
namespace Puma {
 
5801
 
 
5802
 
 
5803
class CUnionInfo;
 
5804
class CRecord;
 
5805
 
 
5806
 
 
5807
/** \class CTypeUnion CTypeUnion.h Puma/CTypeInfo.h
 
5808
 *  Type of a union. 
 
5809
 *  Example: 
 
5810
 *  \code 
 
5811
 * union X x;    // x has type 'union X'
 
5812
 *  \endcode */
 
5813
 
 
5814
#line 5815 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5815
} // closed Puma
 
5816
class CCExprResolve;
 
5817
class CExprResolve;
 
5818
class WinIfExists;
 
5819
class WinImportHandler;
 
5820
class WinMacros;
 
5821
class WinAsm;
 
5822
class WinDeclSpecs;
 
5823
class WinMemberExplSpec;
 
5824
class WinTypeKeywords;
 
5825
class WinFriend;
 
5826
class ExtAC;
 
5827
class ExtACBuilderCoupling;
 
5828
class ExtACSyntaxCoupling;
 
5829
class ExtACTree;
 
5830
class ExtACKeywords;
 
5831
class ExtGnu;
 
5832
class PragmaOnceUnitState;
 
5833
class PragmaOnce;
 
5834
class CMatchSyntax;
 
5835
namespace Puma {
 
5836
 
 
5837
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
 
5838
class CTypeUnion : public CTypeRecord {
 
5839
#line 5840 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5840
  friend class ::CCExprResolve;
 
5841
  friend class ::CExprResolve;
 
5842
  friend class ::WinIfExists;
 
5843
  friend class ::WinImportHandler;
 
5844
  friend class ::WinMacros;
 
5845
  friend class ::WinAsm;
 
5846
  friend class ::WinDeclSpecs;
 
5847
  friend class ::WinMemberExplSpec;
 
5848
  friend class ::WinTypeKeywords;
 
5849
  friend class ::WinFriend;
 
5850
  friend class ::ExtAC;
 
5851
  friend class ::ExtACBuilderCoupling;
 
5852
  friend class ::ExtACSyntaxCoupling;
 
5853
  friend class ::ExtACTree;
 
5854
  friend class ::ExtACKeywords;
 
5855
  friend class ::ExtGnu;
 
5856
  friend class ::PragmaOnceUnitState;
 
5857
  friend class ::PragmaOnce;
 
5858
  friend class ::CMatchSyntax;
 
5859
 
 
5860
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
 
5861
 
 
5862
public:
 
5863
  /** Constructor. Type has id CTypeInfo::TYPE_UNION.
 
5864
   *  \param c The semantic information about the union. */
 
5865
  CTypeUnion (CRecord *c);
 
5866
  /** Destructor. */
 
5867
  ~CTypeUnion ();
 
5868
  
 
5869
  /** Get the semantic information about the union. */
 
5870
  CUnionInfo *UnionInfo () const;
 
5871
public:
 
5872
  typedef AC::TLE __AttrTypes;
 
5873
  const char *__attr_name (unsigned i) const { return 0; }
 
5874
  const void *__attr (unsigned __i) const { return 0; }
 
5875
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
 
5876
};
 
5877
 
 
5878
inline CTypeUnion::CTypeUnion (CRecord *u) :
 
5879
  CTypeRecord (CTypeInfo::TYPE_UNION, u)
 
5880
 {}
 
5881
inline CTypeUnion::~CTypeUnion ()
 
5882
 {}
 
5883
 
 
5884
 
 
5885
} // namespace Puma
 
5886
 
 
5887
#endif /* __CTypeUnion_h__ */
 
5888
 
 
5889
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
 
5890
// This file is part of PUMA.
 
5891
// Copyright (C) 1999-2003  The PUMA developer team.
 
5892
//                                                                
 
5893
// This program is free software;  you can redistribute it and/or 
 
5894
// modify it under the terms of the GNU General Public License as 
 
5895
// published by the Free Software Foundation; either version 2 of 
 
5896
// the License, or (at your option) any later version.            
 
5897
//                                                                
 
5898
// This program is distributed in the hope that it will be useful,
 
5899
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
5900
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
5901
// GNU General Public License for more details.                   
 
5902
//                                                                
 
5903
// You should have received a copy of the GNU General Public      
 
5904
// License along with this program; if not, write to the Free     
 
5905
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
5906
// MA  02111-1307  USA                                            
 
5907
 
 
5908
#ifndef __CTypeTemplateParam_h__
 
5909
#define __CTypeTemplateParam_h__
 
5910
 
 
5911
/** \file
 
5912
 *  Type of a template parameter. */
 
5913
 
 
5914
#ifndef __CTypeInfo_h__
 
5915
#warning !!!      DO NOT INCLUDE THIS FILE      !!!  
 
5916
#warning !!! INCLUDE FILE "CTypeInfo.h" INSTEAD !!!  
 
5917
#endif
 
5918
 
 
5919
namespace Puma {
 
5920
 
 
5921
 
 
5922
class CTemplateParamInfo;
 
5923
 
 
5924
 
 
5925
/** \class CTypeTemplateParam CTypeTemplateParam.h Puma/CTypeInfo.h
 
5926
 *  Type of a template parameter. */
 
5927
 
 
5928
#line 5929 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5929
} // closed Puma
 
5930
class CCExprResolve;
 
5931
class CExprResolve;
 
5932
class WinIfExists;
 
5933
class WinImportHandler;
 
5934
class WinMacros;
 
5935
class WinAsm;
 
5936
class WinDeclSpecs;
 
5937
class WinMemberExplSpec;
 
5938
class WinTypeKeywords;
 
5939
class WinFriend;
 
5940
class ExtAC;
 
5941
class ExtACBuilderCoupling;
 
5942
class ExtACSyntaxCoupling;
 
5943
class ExtACTree;
 
5944
class ExtACKeywords;
 
5945
class ExtGnu;
 
5946
class PragmaOnceUnitState;
 
5947
class PragmaOnce;
 
5948
class CMatchSyntax;
 
5949
namespace Puma {
 
5950
 
 
5951
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
 
5952
class CTypeTemplateParam : public CTypeInfo {
 
5953
#line 5954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
5954
  friend class ::CCExprResolve;
 
5955
  friend class ::CExprResolve;
 
5956
  friend class ::WinIfExists;
 
5957
  friend class ::WinImportHandler;
 
5958
  friend class ::WinMacros;
 
5959
  friend class ::WinAsm;
 
5960
  friend class ::WinDeclSpecs;
 
5961
  friend class ::WinMemberExplSpec;
 
5962
  friend class ::WinTypeKeywords;
 
5963
  friend class ::WinFriend;
 
5964
  friend class ::ExtAC;
 
5965
  friend class ::ExtACBuilderCoupling;
 
5966
  friend class ::ExtACSyntaxCoupling;
 
5967
  friend class ::ExtACTree;
 
5968
  friend class ::ExtACKeywords;
 
5969
  friend class ::ExtGnu;
 
5970
  friend class ::PragmaOnceUnitState;
 
5971
  friend class ::PragmaOnce;
 
5972
  friend class ::CMatchSyntax;
 
5973
 
 
5974
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
 
5975
 
 
5976
  CTemplateParamInfo *_TemplateParam;
 
5977
 
 
5978
public:
 
5979
  /** Constructor. The type ID is CTypeInfo::TYPE_TEMPLATE_PARAM.
 
5980
   *  \param info The template parameter. */
 
5981
  CTypeTemplateParam (CTemplateParamInfo *info);
 
5982
  /** Destructor. */
 
5983
  ~CTypeTemplateParam ();
 
5984
 
 
5985
  /** Get the template parameter information. */
 
5986
  CTemplateParamInfo *TemplateParamInfo () const;
 
5987
  /** Set the template parameter information. 
 
5988
   *  \param info The template parameter. */
 
5989
  void TemplateParamInfo (CTemplateParamInfo *info);
 
5990
  /** Check if this is the type of a type template parameter. */
 
5991
  bool isType () const;
 
5992
  /** Check if this is the type of a non-type template parameter. */
 
5993
  bool isNonType () const;
 
5994
public:
 
5995
  typedef AC::TL<Puma::CTemplateParamInfo *,AC::TLE > __AttrTypes;
 
5996
  const char *__attr_name (unsigned i) const {
 
5997
    static const char *names[] = { "_TemplateParam" }; return names[i];
 
5998
  }
 
5999
  const void *__attr (unsigned __i) const {
 
6000
    switch (__i) { case 0: return &_TemplateParam; default: return 0; }
 
6001
  }
 
6002
#line 57 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
 
6003
};
 
6004
 
 
6005
inline CTypeTemplateParam::CTypeTemplateParam (CTemplateParamInfo *t) :
 
6006
  CTypeInfo (&CTYPE_EMPTY, CTypeInfo::TYPE_TEMPLATE_PARAM),
 
6007
  _TemplateParam (t)
 
6008
 {}
 
6009
inline CTypeTemplateParam::~CTypeTemplateParam ()
 
6010
 {}
 
6011
 
 
6012
inline CTemplateParamInfo *CTypeTemplateParam::TemplateParamInfo () const 
 
6013
 { return _TemplateParam; }
 
6014
 
 
6015
inline bool CTypeTemplateParam::isNonType () const
 
6016
 { return (! isType ()); }
 
6017
 
 
6018
inline void CTypeTemplateParam::TemplateParamInfo (CTemplateParamInfo *info)
 
6019
 { _TemplateParam = info; }
 
6020
 
 
6021
} // namespace Puma
 
6022
 
 
6023
#endif /* __CTypeTemplateParam_h__ */
 
6024
 
 
6025
#line 514 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
6026
namespace Puma {
 
6027
 
 
6028
inline CTypeInfo::CTypeInfo (CTypeInfo *info, CTypeInfo::TypeId id) :
 
6029
  _Base (info ? info : this), 
 
6030
  _Id (id),
 
6031
  _TypedefInfo (0)
 
6032
 {}
 
6033
inline CTypeInfo::~CTypeInfo () 
 
6034
 {}
 
6035
 
 
6036
inline CTypeInfo *CTypeInfo::Duplicate () const 
 
6037
 { 
 
6038
#ifndef __puma
 
6039
return Duplicate (this);
 
6040
#endif
 
6041
 }
 
6042
 
 
6043
inline CTypeInfo::TypeId CTypeInfo::Id () const 
 
6044
 { return _Id; }
 
6045
 
 
6046
inline bool CTypeInfo::operator !=(const CTypeInfo &type) const 
 
6047
 { return ! (*this == type); }
 
6048
 
 
6049
inline void CTypeInfo::print (ostream& out) const 
 
6050
 { TypeText ((char)PRINT_STD, out); }
 
6051
inline void CTypeInfo::TypeText (ostream &out, const char *t, bool abs, bool tdef, bool elaborated_type_spec) const
 
6052
 { char flags = (char)(abs ? PRINT_ABS : PRINT_STD);
 
6053
   if (tdef) flags |= (char)PRINT_TDN; 
 
6054
   if (elaborated_type_spec) flags |= (char)PRINT_ELA;
 
6055
   TypeText (flags, out, t); }
 
6056
 
 
6057
inline long int CTypeInfo::Dimension () const
 
6058
 { return TypeArray () ? TypeArray ()->Dimension () : 
 
6059
          TypeBitField () ? TypeBitField ()->Dimension () : -1; }
 
6060
 
 
6061
inline bool CTypeInfo::isTypedef () const
 
6062
 { return (bool)_TypedefInfo; }
 
6063
inline CObjectInfo *CTypeInfo::TypedefInfo () const
 
6064
 { return _TypedefInfo; }
 
6065
 
 
6066
inline bool CTypeInfo::isConst () const
 
6067
 { return TypeQualified () && TypeQualified ()->isConst (); }
 
6068
inline bool CTypeInfo::isVolatile () const
 
6069
 { return TypeQualified () && TypeQualified ()->isVolatile (); }
 
6070
inline bool CTypeInfo::isRestrict () const
 
6071
 { return TypeQualified () && TypeQualified ()->isRestrict (); }
 
6072
  
 
6073
inline CRecord *CTypeInfo::Record () const
 
6074
 { return TypeRecord () ? TypeRecord ()->Record () :
 
6075
          TypeFunction () ? TypeFunction ()->Record () :
 
6076
          TypeMemberPointer () ? TypeMemberPointer ()->Record () : (CRecord*)0; }
 
6077
inline CEnumInfo *CTypeInfo::EnumInfo () const
 
6078
 { return TypeEnum () ? TypeEnum ()->EnumInfo () : (CEnumInfo*)0; }
 
6079
inline CFunctionInfo *CTypeInfo::FunctionInfo () const
 
6080
 { return TypeFunction () ? TypeFunction ()->FunctionInfo () : (CFunctionInfo*)0; }
 
6081
 
 
6082
inline CTypeInfo *CTypeInfo::BaseType () const
 
6083
 { assert(_Base); return _Base; }
 
6084
inline void CTypeInfo::BaseType (CTypeInfo *type)
 
6085
 { _Base = type; }
 
6086
inline CTypeInfo *CTypeInfo::PtrBaseType () const
 
6087
 { return VirtualType ()->BaseType (); }
 
6088
 
 
6089
inline CTypeList *CTypeInfo::ArgTypes () const
 
6090
 { return TypeFunction () ? TypeFunction ()->ArgTypes () :
 
6091
          TypeQualified () ? TypeQualified ()->ArgTypes () : (CTypeList*)0; }
 
6092
 
 
6093
inline CTypePrimitive *CTypeInfo::TypePrimitive () const
 
6094
 { return _Id < TYPE_CLASS ? (CTypePrimitive*)this : (CTypePrimitive*)0; }
 
6095
inline CTypeQualified *CTypeInfo::TypeQualified () const
 
6096
 { return _Id == TYPE_QUALIFIED ? (CTypeQualified*)this : (CTypeQualified*)0; }
 
6097
inline CTypeFunction *CTypeInfo::TypeFunction () const
 
6098
 { return _Id == TYPE_FUNCTION ? (CTypeFunction*)this : (CTypeFunction*)0; }
 
6099
inline CTypeBitField *CTypeInfo::TypeBitField () const 
 
6100
 { return _Id == TYPE_BIT_FIELD ? (CTypeBitField*)this : (CTypeBitField*)0; }
 
6101
inline CTypePointer *CTypeInfo::TypePointer () const
 
6102
 { return _Id == TYPE_POINTER || _Id == TYPE_MEMBER_POINTER ? (CTypePointer*)this : (CTypePointer*)0; }
 
6103
inline CTypeMemberPointer* CTypeInfo::TypeMemberPointer () const
 
6104
 { return _Id == TYPE_MEMBER_POINTER ? (CTypeMemberPointer*)this : (CTypeMemberPointer*)0; }
 
6105
inline CTypeAddress *CTypeInfo::TypeAddress () const
 
6106
 { return _Id == TYPE_ADDRESS ? (CTypeAddress*)this : (CTypeAddress*)0; }
 
6107
inline CTypeArray *CTypeInfo::TypeArray () const
 
6108
 { return _Id == TYPE_ARRAY || _Id == TYPE_VAR_ARRAY ? (CTypeArray*)this : (CTypeArray*)0; }
 
6109
inline CTypeVarArray *CTypeInfo::TypeVarArray () const
 
6110
 { return _Id == TYPE_VAR_ARRAY ? (CTypeVarArray*)this : (CTypeVarArray*)0; }
 
6111
inline CTypeRecord *CTypeInfo::TypeRecord () const
 
6112
 { return _Id == TYPE_CLASS || _Id == TYPE_UNION ? (CTypeRecord*)this : (CTypeRecord*)0; }
 
6113
inline CTypeClass *CTypeInfo::TypeClass () const
 
6114
 { return _Id == TYPE_CLASS ? (CTypeClass*)this : (CTypeClass*)0; }
 
6115
inline CTypeUnion *CTypeInfo::TypeUnion () const
 
6116
 { return _Id == TYPE_UNION ? (CTypeUnion*)this : (CTypeUnion*)0; }
 
6117
inline CTypeEnum *CTypeInfo::TypeEnum () const
 
6118
 { return _Id == TYPE_ENUM ? (CTypeEnum*)this : (CTypeEnum*)0; }
 
6119
inline CTypeInfo *CTypeInfo::TypeEmpty () const
 
6120
 { return _Id == TYPE_EMPTY ? (CTypeInfo*)this : (CTypeInfo*)0; }
 
6121
inline CTypeTemplateParam *CTypeInfo::TypeTemplateParam () const
 
6122
 { return _Id == TYPE_TEMPLATE_PARAM ? (CTypeTemplateParam*)this : (CTypeTemplateParam*)0; }
 
6123
 
 
6124
inline CTypeInfo *CTypeInfo::VirtualType () const 
 
6125
 { return TypeQualified () || TypeBitField () || TypeAddress () ?
 
6126
          BaseType ()->VirtualType () : (CTypeInfo*)this; }
 
6127
inline CTypeInfo *CTypeInfo::UnqualType () const 
 
6128
 { return TypeQualified () ? BaseType ()->UnqualType () : (CTypeInfo*)this; }
 
6129
 
 
6130
inline bool CTypeInfo::isQualified () const 
 
6131
 { return TypeQualified (); }
 
6132
inline bool CTypeInfo::isTemplateParam () const 
 
6133
 { return VirtualType ()->TypeTemplateParam (); }
 
6134
inline bool CTypeInfo::isPointer () const 
 
6135
 { return VirtualType ()->TypePointer (); }
 
6136
inline bool CTypeInfo::isMemberPointer () const
 
6137
 { return VirtualType ()->TypeMemberPointer (); }
 
6138
inline bool CTypeInfo::isClass () const
 
6139
 { return VirtualType ()->TypeClass (); }
 
6140
inline bool CTypeInfo::isUnion () const
 
6141
 { return VirtualType ()->TypeUnion (); }
 
6142
inline bool CTypeInfo::isArray () const
 
6143
 { return VirtualType ()->TypeArray (); }
 
6144
inline bool CTypeInfo::isFixedArray () const
 
6145
 { return VirtualType ()->TypeArray () && 
 
6146
          VirtualType ()->TypeArray ()->isFixed (); }
 
6147
inline bool CTypeInfo::isVarArray () const
 
6148
 { return VirtualType ()->TypeVarArray (); }
 
6149
inline bool CTypeInfo::isEnum () const
 
6150
 { return VirtualType ()->TypeEnum (); }
 
6151
inline bool CTypeInfo::isFunction () const
 
6152
 { return VirtualType ()->TypeFunction (); }
 
6153
inline bool CTypeInfo::isBitField () const
 
6154
 { return TypeBitField (); }
 
6155
inline bool CTypeInfo::isUndefined () const
 
6156
 { return VirtualType ()->is_undefined (); }
 
6157
inline bool CTypeInfo::isInteger () const 
 
6158
 { return VirtualType ()->_Id < TYPE_FLOAT || VirtualType ()->isEnum (); }
 
6159
inline bool CTypeInfo::isReal () const 
 
6160
 { CTypeInfo *base = VirtualType ();
 
6161
   return base->is_float () || base->is_double () || base->is_long_double (); }
 
6162
inline bool CTypeInfo::isMethod () const 
 
6163
 { CTypeInfo *base = VirtualType ();
 
6164
   return base->TypeFunction () && base->TypeFunction ()->Record (); }
 
6165
inline bool CTypeInfo::isStdFunction () const
 
6166
 { return VirtualType ()->TypeFunction () && ! isMethod (); }
 
6167
inline bool CTypeInfo::isPointerOrArray () const 
 
6168
 { CTypeInfo *base = VirtualType ();
 
6169
   return base->TypePointer () || base->TypeArray (); }
 
6170
inline bool CTypeInfo::isAddress () const 
 
6171
 { return TypeAddress () || ((TypeQualified () || TypeBitField ()) && 
 
6172
                             BaseType ()->isAddress ()); }
 
6173
inline bool CTypeInfo::isRecord () const 
 
6174
 { return VirtualType ()->TypeRecord (); }
 
6175
inline bool CTypeInfo::isScalar () const 
 
6176
 { return isArithmetic () || isPointer (); }
 
6177
inline bool CTypeInfo::isAggregate () const 
 
6178
 { return isArray () || isClass () || isUnion (); }
 
6179
inline bool CTypeInfo::isVoid () const
 
6180
 { return VirtualType ()->is_void (); }
 
6181
inline bool CTypeInfo::isObject (unsigned long pos) const
 
6182
 { return ! isFunction () && (pos ? isComplete (pos) : true); }
 
6183
inline bool CTypeInfo::isTypeParam () const
 
6184
 { return isTemplateParam () && 
 
6185
          VirtualType ()->TypeTemplateParam ()->isType (); }
 
6186
inline bool CTypeInfo::isNonTypeParam () const
 
6187
 { return isTemplateParam () && 
 
6188
          ! VirtualType ()->TypeTemplateParam ()->isType (); }
 
6189
 
 
6190
inline bool CTypeInfo::is_bool () const 
 
6191
 { return _Id == TYPE_BOOL; }
 
6192
inline bool CTypeInfo::is_char () const 
 
6193
 { return _Id == TYPE_CHAR; }
 
6194
inline bool CTypeInfo::is_wchar_t () const 
 
6195
 { return _Id == TYPE_WCHAR_T; }
 
6196
inline bool CTypeInfo::is_short () const 
 
6197
 { return _Id == TYPE_SHORT; }
 
6198
inline bool CTypeInfo::is_int () const 
 
6199
 { return _Id == TYPE_INT; }
 
6200
inline bool CTypeInfo::is_long () const 
 
6201
 { return _Id == TYPE_LONG; }
 
6202
inline bool CTypeInfo::is_long_long () const 
 
6203
 { return _Id == TYPE_LONG_LONG; }
 
6204
inline bool CTypeInfo::is_signed_char () const 
 
6205
 { return _Id == TYPE_SIGNED_CHAR; }
 
6206
inline bool CTypeInfo::is_unsigned_char () const 
 
6207
 { return _Id == TYPE_UNSIGNED_CHAR; }
 
6208
inline bool CTypeInfo::is_unsigned_short () const 
 
6209
 { return _Id == TYPE_UNSIGNED_SHORT; }
 
6210
inline bool CTypeInfo::is_unsigned_int () const 
 
6211
 { return _Id == TYPE_UNSIGNED_INT; }
 
6212
inline bool CTypeInfo::is_unsigned_long () const 
 
6213
 { return _Id == TYPE_UNSIGNED_LONG; }
 
6214
inline bool CTypeInfo::is_unsigned_long_long () const 
 
6215
 { return _Id == TYPE_UNSIGNED_LONG_LONG; }
 
6216
inline bool CTypeInfo::is_float () const 
 
6217
 { return _Id == TYPE_FLOAT; }
 
6218
inline bool CTypeInfo::is_double () const 
 
6219
 { return _Id == TYPE_DOUBLE; }
 
6220
inline bool CTypeInfo::is_long_double () const 
 
6221
 { return _Id == TYPE_LONG_DOUBLE; }
 
6222
inline bool CTypeInfo::is_void () const 
 
6223
 { return _Id == TYPE_VOID; }
 
6224
inline bool CTypeInfo::is_unknown_t () const 
 
6225
 { return _Id == TYPE_UNKNOWN_T; }
 
6226
inline bool CTypeInfo::is_undefined () const 
 
6227
 { return _Id == TYPE_UNDEFINED; }
 
6228
inline bool CTypeInfo::is_ellipsis () const 
 
6229
 { return _Id == TYPE_ELLIPSIS; }
 
6230
 
 
6231
inline bool CTypeInfo::operator <=(const CTypeInfo &type) const
 
6232
 { return ! (*this > type); }
 
6233
inline bool CTypeInfo::operator >=(const CTypeInfo &type) const
 
6234
 { return ! (*this < type); }
 
6235
 
 
6236
 
 
6237
} // namespace Puma
 
6238
 
 
6239
#endif /* __CTypeInfo_h__ */
 
6240
 
 
6241
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Limits.h"
 
6242
/* This file was generated by the PUMA library, version 1.1. */
 
6243
 
 
6244
// This file is part of PUMA.
 
6245
// Copyright (C) 1999-2003  The PUMA developer team.
 
6246
//                                                                
 
6247
// This program is free software;  you can redistribute it and/or 
 
6248
// modify it under the terms of the GNU General Public License as 
 
6249
// published by the Free Software Foundation; either version 2 of 
 
6250
// the License, or (at your option) any later version.            
 
6251
//                                                                
 
6252
// This program is distributed in the hope that it will be useful,
 
6253
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
6254
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
6255
// GNU General Public License for more details.                   
 
6256
//                                                                
 
6257
// You should have received a copy of the GNU General Public      
 
6258
// License along with this program; if not, write to the Free     
 
6259
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
6260
// MA  02111-1307  USA                                            
 
6261
 
 
6262
#ifndef __Limits_h__
 
6263
#define __Limits_h__
 
6264
 
 
6265
#include <limits.h>
 
6266
 
 
6267
namespace Puma {
 
6268
 
 
6269
 
 
6270
// type `long long' support
 
6271
 
 
6272
#if defined(__GNUC__) || defined(_MSC_VER)
 
6273
typedef long long LONG_LONG;
 
6274
typedef unsigned long long U_LONG_LONG;
 
6275
#else /* __GNUC__ */
 
6276
typedef long LONG_LONG;
 
6277
typedef unsigned long U_LONG_LONG;
 
6278
#endif /* __GNUC__ */
 
6279
 
 
6280
#ifndef LLONG_MAX
 
6281
#  if defined(__GNUC__) || defined(_MSC_VER)
 
6282
#    define LLONG_MAX        9223372036854775807LL
 
6283
#    define LLONG_MIN        (-LLONG_MAX - 1LL)
 
6284
#    define ULLONG_MAX        18446744073709551615ULL
 
6285
#  else /* __GNUC__ */
 
6286
#    define LLONG_MAX        LONG_MAX
 
6287
#    define LLONG_MIN        LONG_MIN
 
6288
#    define ULLONG_MAX       ULONG_MAX
 
6289
#  endif /* __GNUC__ */
 
6290
#endif /* LLONG_MAX */
 
6291
 
 
6292
// type size (in bits)
 
6293
 
 
6294
#define BOOL_SIZE             8
 
6295
#define CHAR_SIZE             8
 
6296
#define SCHAR_SIZE            8
 
6297
#define UCHAR_SIZE            8
 
6298
#define SHORT_SIZE            16
 
6299
#define USHORT_SIZE           16
 
6300
#define WCHAR_T_SIZE          32
 
6301
#define INT_SIZE              32
 
6302
#define UINT_SIZE             32
 
6303
#define LONG_SIZE             32
 
6304
#define ULONG_SIZE            32
 
6305
#define LLONG_SIZE            64
 
6306
#define ULLONG_SIZE           64
 
6307
 
 
6308
#define FLOAT_SIZE            32
 
6309
#define DOUBLE_SIZE           64
 
6310
#define LDOUBLE_SIZE          96
 
6311
 
 
6312
#define PTR_SIZE              32
 
6313
#define MEMB_PTR_SIZE         64
 
6314
 
 
6315
#define ENUM_SIZE             32
 
6316
 
 
6317
 
 
6318
} // namespace Puma
 
6319
 
 
6320
#endif /* __Limits_h__ */
 
6321
 
 
6322
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumeratorInfo.h"
 
6323
namespace Puma {
 
6324
 
 
6325
 
 
6326
class CEnumInfo;
 
6327
class CT_Enumerator;
 
6328
class CT_ExprList;
 
6329
 
 
6330
/** \class CEnumeratorInfo CEnumeratorInfo.h Puma/CEnumeratorInfo.h
 
6331
 *  Semantic information about an enumeration constant. 
 
6332
 *  An enumeration constant also is called enumerator. */
 
6333
 
 
6334
#line 6335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
6335
} // closed Puma
 
6336
class CCExprResolve;
 
6337
class CExprResolve;
 
6338
class WinIfExists;
 
6339
class WinImportHandler;
 
6340
class WinMacros;
 
6341
class WinAsm;
 
6342
class WinDeclSpecs;
 
6343
class WinMemberExplSpec;
 
6344
class WinTypeKeywords;
 
6345
class WinFriend;
 
6346
class ExtAC;
 
6347
class ExtACBuilderCoupling;
 
6348
class ExtACSyntaxCoupling;
 
6349
class ExtACTree;
 
6350
class ExtACKeywords;
 
6351
class ExtGnu;
 
6352
class PragmaOnceUnitState;
 
6353
class PragmaOnce;
 
6354
class CMatchSyntax;
 
6355
namespace Puma {
 
6356
 
 
6357
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumeratorInfo.h"
 
6358
class CEnumeratorInfo : public CAttributeInfo {
 
6359
#line 6360 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
6360
  friend class ::CCExprResolve;
 
6361
  friend class ::CExprResolve;
 
6362
  friend class ::WinIfExists;
 
6363
  friend class ::WinImportHandler;
 
6364
  friend class ::WinMacros;
 
6365
  friend class ::WinAsm;
 
6366
  friend class ::WinDeclSpecs;
 
6367
  friend class ::WinMemberExplSpec;
 
6368
  friend class ::WinTypeKeywords;
 
6369
  friend class ::WinFriend;
 
6370
  friend class ::ExtAC;
 
6371
  friend class ::ExtACBuilderCoupling;
 
6372
  friend class ::ExtACSyntaxCoupling;
 
6373
  friend class ::ExtACTree;
 
6374
  friend class ::ExtACKeywords;
 
6375
  friend class ::ExtGnu;
 
6376
  friend class ::PragmaOnceUnitState;
 
6377
  friend class ::PragmaOnce;
 
6378
  friend class ::CMatchSyntax;
 
6379
 
 
6380
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumeratorInfo.h"
 
6381
 
 
6382
  CEnumInfo *_Enum;
 
6383
  LONG_LONG _Value;
 
6384
 
 
6385
public: 
 
6386
  /** Constructor. */
 
6387
  CEnumeratorInfo ();
 
6388
  /** Destructor. If the object type is CObjectInfo::ENUMERATOR_INFO, 
 
6389
   *  then CObjectInfo::CleanUp() is called. */
 
6390
  ~CEnumeratorInfo ();
 
6391
  
 
6392
  /** Get the syntax tree node of the enumerator constant. */
 
6393
  CT_Enumerator *Tree () const;
 
6394
  /** Get the initialization expression syntax tree node of
 
6395
   *  the enumerator. 
 
6396
   *  \return The syntax tree node or NULL if no initializer. */
 
6397
  CT_ExprList *Init () const;
 
6398
  
 
6399
  /** Get the underlying value type. This is implementation-defined
 
6400
   *  and defaults to \e int.*/
 
6401
  CTypeInfo *UnderlyingType () const;
 
6402
 
 
6403
  /** Get the enumeration containing this enumerator. */
 
6404
  CEnumInfo *Enum () const;
 
6405
  /** Set the enumeration containing this enumerator.
 
6406
   *  \param ei The enumeration. */
 
6407
  void Enum (CEnumInfo *ei);
 
6408
 
 
6409
  /** Get the value of the enumerator. */
 
6410
  LONG_LONG Value () const;
 
6411
  /** Set the value of the enumerator. 
 
6412
   *  \param v The value. */
 
6413
  void Value (LONG_LONG v);
 
6414
public:
 
6415
  typedef AC::TL<Puma::CEnumInfo *,AC::TL<long long int,AC::TLE > > __AttrTypes;
 
6416
  const char *__attr_name (unsigned i) const {
 
6417
    static const char *names[] = { "_Enum", "_Value" }; return names[i];
 
6418
  }
 
6419
  const void *__attr (unsigned __i) const {
 
6420
    switch (__i) { case 0: return &_Enum; case 1: return &_Value; default: return 0; }
 
6421
  }
 
6422
#line 72 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumeratorInfo.h"
 
6423
};
 
6424
 
 
6425
inline CEnumeratorInfo::CEnumeratorInfo () :
 
6426
  CAttributeInfo (CObjectInfo::ENUMERATOR_INFO),
 
6427
  _Enum ((CEnumInfo*)0),
 
6428
  _Value (0)
 
6429
 {}
 
6430
 
 
6431
inline void CEnumeratorInfo::Enum (CEnumInfo *e) 
 
6432
 { _Enum = e; }
 
6433
inline void CEnumeratorInfo::Value (LONG_LONG v) 
 
6434
 { _Value = v; }
 
6435
 
 
6436
inline CEnumInfo *CEnumeratorInfo::Enum () const 
 
6437
 { return _Enum; }
 
6438
inline LONG_LONG CEnumeratorInfo::Value () const 
 
6439
 { return _Value; }
 
6440
 
 
6441
 
 
6442
} // namespace Puma
 
6443
 
 
6444
#endif /* __CEnumeratorInfo_h__ */
 
6445
 
 
6446
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateParamInfo.h"
 
6447
// This file is part of PUMA.
 
6448
// Copyright (C) 1999-2003  The PUMA developer team.
 
6449
//                                                                
 
6450
// This program is free software;  you can redistribute it and/or 
 
6451
// modify it under the terms of the GNU General Public License as 
 
6452
// published by the Free Software Foundation; either version 2 of 
 
6453
// the License, or (at your option) any later version.            
 
6454
//                                                                
 
6455
// This program is distributed in the hope that it will be useful,
 
6456
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
6457
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
6458
// GNU General Public License for more details.                   
 
6459
//                                                                
 
6460
// You should have received a copy of the GNU General Public      
 
6461
// License along with this program; if not, write to the Free     
 
6462
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
6463
// MA  02111-1307  USA                                            
 
6464
 
 
6465
#ifndef __CTemplateParamInfo_h__
 
6466
#define __CTemplateParamInfo_h__
 
6467
 
 
6468
/** \file
 
6469
 *  Semantic information about a template parameter. */
 
6470
 
 
6471
 
 
6472
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateParamInfo.h"
 
6473
namespace Puma {
 
6474
 
 
6475
 
 
6476
class CT_TemplateParamDecl;
 
6477
class CTypeTemplateParam;
 
6478
class CTemplateInstance;
 
6479
class CTemplateInfo;
 
6480
class CT_ExprList;
 
6481
 
 
6482
 
 
6483
/** \class CTemplateParamInfo CTemplateParamInfo.h Puma/CTemplateParamInfo.h
 
6484
 *  Semantic information about a template parameter. There are 
 
6485
 *  three kinds of template parameter: type, non-type, and template
 
6486
 *  template parameter. 
 
6487
 *
 
6488
 *  \code
 
6489
 * // T is a type template parameter
 
6490
 * // I is a non-type template parameter
 
6491
 * // TT is a template template parameter
 
6492
 * template<class T, int I, template<typename,int> class TT> 
 
6493
 * class X {
 
6494
 *   TT<T,I> x;
 
6495
 * };
 
6496
 *  \endcode */
 
6497
 
 
6498
#line 6499 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
6499
} // closed Puma
 
6500
class CCExprResolve;
 
6501
class CExprResolve;
 
6502
class WinIfExists;
 
6503
class WinImportHandler;
 
6504
class WinMacros;
 
6505
class WinAsm;
 
6506
class WinDeclSpecs;
 
6507
class WinMemberExplSpec;
 
6508
class WinTypeKeywords;
 
6509
class WinFriend;
 
6510
class ExtAC;
 
6511
class ExtACBuilderCoupling;
 
6512
class ExtACSyntaxCoupling;
 
6513
class ExtACTree;
 
6514
class ExtACKeywords;
 
6515
class ExtGnu;
 
6516
class PragmaOnceUnitState;
 
6517
class PragmaOnce;
 
6518
class CMatchSyntax;
 
6519
namespace Puma {
 
6520
 
 
6521
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateParamInfo.h"
 
6522
class CTemplateParamInfo : public CObjectInfo {
 
6523
#line 6524 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
6524
  friend class ::CCExprResolve;
 
6525
  friend class ::CExprResolve;
 
6526
  friend class ::WinIfExists;
 
6527
  friend class ::WinImportHandler;
 
6528
  friend class ::WinMacros;
 
6529
  friend class ::WinAsm;
 
6530
  friend class ::WinDeclSpecs;
 
6531
  friend class ::WinMemberExplSpec;
 
6532
  friend class ::WinTypeKeywords;
 
6533
  friend class ::WinFriend;
 
6534
  friend class ::ExtAC;
 
6535
  friend class ::ExtACBuilderCoupling;
 
6536
  friend class ::ExtACSyntaxCoupling;
 
6537
  friend class ::ExtACTree;
 
6538
  friend class ::ExtACKeywords;
 
6539
  friend class ::ExtGnu;
 
6540
  friend class ::PragmaOnceUnitState;
 
6541
  friend class ::PragmaOnce;
 
6542
  friend class ::CMatchSyntax;
 
6543
 
 
6544
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateParamInfo.h"
 
6545
 
 
6546
  CTemplateInfo *_TemplateInfo;
 
6547
  CTemplateInfo *_TemplateTemplate;
 
6548
  CTemplateInstance *_InstanceInfo;
 
6549
  CTypeInfo *_ValueType;
 
6550
  bool _TypeParam;
 
6551
 
 
6552
public: 
 
6553
  /** Constructor. */
 
6554
  CTemplateParamInfo ();
 
6555
  /** Destructor. If the object type is CObjectInfo::TEMPLATE_PARAM_INFO, 
 
6556
   *  then CObjectInfo::CleanUp() is called and the template instance
 
6557
   *  information object of a template template parameter is destroyed. */
 
6558
  ~CTemplateParamInfo ();
 
6559
  
 
6560
  /** Check if this is a template template parameter. */
 
6561
  bool isTemplate () const;
 
6562
  /** Check if this is a type template parameter. */
 
6563
  bool isTypeParam () const;
 
6564
  /** Get the template parameters of a template template parameter. */
 
6565
  CTemplateInfo *TemplateInfo () const;
 
6566
  /** Get the template information of a template template parameter. */
 
6567
  CTemplateInfo *TemplateTemplate () const;
 
6568
  /** Get the syntax tree node representing the template parameter. */
 
6569
  CT_TemplateParamDecl *Tree () const;
 
6570
  /** Get the default argument of the template parameter.
 
6571
   *  \return The default argument expression or NULL if no default argument. */
 
6572
  CT_ExprList *DefaultArgument () const;
 
6573
  /** Get the template parameter type. */
 
6574
  CTypeTemplateParam *TypeInfo () const; 
 
6575
  /** Get the value type of a type template parameter. */
 
6576
  CTypeInfo *ValueType () const;
 
6577
  /** Get the template instance information for an instantiated 
 
6578
   *  template template parameter. */
 
6579
  CTemplateInstance *TemplateInstance () const;
 
6580
  /** Get the position/index of this parameter in the template parameter list. */
 
6581
  int getPosition () const;
 
6582
 
 
6583
  /** Set whether this is a type template parameter. 
 
6584
   *  \param v True for yes, false for no. */
 
6585
  void isTypeParam (bool v);
 
6586
  /** Set the value type of a type template parameter. 
 
6587
   *  \param type The value type. */
 
6588
  void ValueType (CTypeInfo *type);
 
6589
  /** Set the template parameter list information for 
 
6590
   *  a template template parameter. 
 
6591
   *  \param info The template parameter list information. */
 
6592
  void TemplateInfo (CTemplateInfo *info);
 
6593
  /** Set the template information for a template template parameter. 
 
6594
   *  \param info The template information. */
 
6595
  void TemplateTemplate (CTemplateInfo *info);
 
6596
  /** Set the template instance information for an instantiated template 
 
6597
   *  template parameter. 
 
6598
   *  \param inst The template instance. */
 
6599
  void TemplateInstance (CTemplateInstance *inst);
 
6600
public:
 
6601
  typedef AC::TL<Puma::CTemplateInfo *,AC::TL<Puma::CTemplateInfo *,AC::TL<Puma::CTemplateInstance *,AC::TL<Puma::CTypeInfo *,AC::TL<bool,AC::TLE > > > > > __AttrTypes;
 
6602
  const char *__attr_name (unsigned i) const {
 
6603
    static const char *names[] = { "_TemplateInfo", "_TemplateTemplate", "_InstanceInfo", "_ValueType", "_TypeParam" }; return names[i];
 
6604
  }
 
6605
  const void *__attr (unsigned __i) const {
 
6606
    switch (__i) { case 0: return &_TemplateInfo; case 1: return &_TemplateTemplate; case 2: return &_InstanceInfo; case 3: return &_ValueType; case 4: return &_TypeParam; default: return 0; }
 
6607
  }
 
6608
#line 106 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateParamInfo.h"
 
6609
};
 
6610
 
 
6611
inline CTemplateParamInfo::CTemplateParamInfo () :
 
6612
  CObjectInfo (CObjectInfo::TEMPLATE_PARAM_INFO),
 
6613
  _TemplateInfo ((CTemplateInfo*)0),
 
6614
  _TemplateTemplate ((CTemplateInfo*)0),
 
6615
  _InstanceInfo ((CTemplateInstance*)0),
 
6616
  _ValueType ((CTypeInfo*)0),
 
6617
  _TypeParam (false)
 
6618
 {}
 
6619
 
 
6620
inline void CTemplateParamInfo::isTypeParam (bool tp)
 
6621
 { _TypeParam = tp; }
 
6622
inline bool CTemplateParamInfo::isTypeParam () const 
 
6623
 { return _TypeParam; }
 
6624
 
 
6625
inline bool CTemplateParamInfo::isTemplate () const 
 
6626
 { return (_TemplateTemplate); }
 
6627
 
 
6628
inline void CTemplateParamInfo::ValueType (CTypeInfo *vt) 
 
6629
 { _ValueType = vt; }
 
6630
inline CTypeInfo *CTemplateParamInfo::ValueType () const 
 
6631
 { return _ValueType; }
 
6632
 
 
6633
inline CTemplateInfo *CTemplateParamInfo::TemplateInfo () const
 
6634
 { return _TemplateInfo; }
 
6635
inline CTemplateInfo *CTemplateParamInfo::TemplateTemplate () const
 
6636
 { return _TemplateTemplate; }
 
6637
inline void CTemplateParamInfo::TemplateInfo (CTemplateInfo *info) 
 
6638
 { _TemplateInfo = info; }
 
6639
inline void CTemplateParamInfo::TemplateTemplate (CTemplateInfo *info) 
 
6640
 { _TemplateTemplate = info; }
 
6641
inline void CTemplateParamInfo::TemplateInstance (CTemplateInstance *info)
 
6642
 { _InstanceInfo = info; }
 
6643
 
 
6644
inline CT_TemplateParamDecl *CTemplateParamInfo::Tree () const 
 
6645
 { return (CT_TemplateParamDecl*)CObjectInfo::Tree (); }
 
6646
 
 
6647
inline CTypeTemplateParam *CTemplateParamInfo::TypeInfo () const
 
6648
 { return (CTypeTemplateParam*)CObjectInfo::TypeInfo (); }
 
6649
 
 
6650
inline CTemplateInstance *CTemplateParamInfo::TemplateInstance () const
 
6651
 { return _InstanceInfo; }
 
6652
 
 
6653
 
 
6654
} // namespace Puma
 
6655
 
 
6656
#endif /* __CTemplateParamInfo_h__ */
 
6657
 
 
6658
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDatabase.h"
 
6659
// This file is part of PUMA.
 
6660
// Copyright (C) 1999-2003  The PUMA developer team.
 
6661
//                                                                
 
6662
// This program is free software;  you can redistribute it and/or 
 
6663
// modify it under the terms of the GNU General Public License as 
 
6664
// published by the Free Software Foundation; either version 2 of 
 
6665
// the License, or (at your option) any later version.            
 
6666
//                                                                
 
6667
// This program is distributed in the hope that it will be useful,
 
6668
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
6669
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
6670
// GNU General Public License for more details.                   
 
6671
//                                                                
 
6672
// You should have received a copy of the GNU General Public      
 
6673
// License along with this program; if not, write to the Free     
 
6674
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
6675
// MA  02111-1307  USA                                            
 
6676
 
 
6677
#ifndef __CSemDatabase_h__
 
6678
#define __CSemDatabase_h__
 
6679
 
 
6680
/** \file 
 
6681
 *  Semantic information database. */
 
6682
 
 
6683
 
 
6684
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
6685
// This file is part of PUMA.
 
6686
// Copyright (C) 1999-2003  The PUMA developer team.
 
6687
//                                                                
 
6688
// This program is free software;  you can redistribute it and/or 
 
6689
// modify it under the terms of the GNU General Public License as 
 
6690
// published by the Free Software Foundation; either version 2 of 
 
6691
// the License, or (at your option) any later version.            
 
6692
//                                                                
 
6693
// This program is distributed in the hope that it will be useful,
 
6694
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
6695
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
6696
// GNU General Public License for more details.                   
 
6697
//                                                                
 
6698
// You should have received a copy of the GNU General Public      
 
6699
// License along with this program; if not, write to the Free     
 
6700
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
6701
// MA  02111-1307  USA                                            
 
6702
 
 
6703
#ifndef __CScopeInfo_h__
 
6704
#define __CScopeInfo_h__
 
6705
 
 
6706
/** \file
 
6707
 *  Semantic information about a scope. */
 
6708
 
 
6709
 
 
6710
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
6711
namespace Puma {
 
6712
 
 
6713
 
 
6714
class CLocalScope;
 
6715
class CFunctionInfo;
 
6716
class CNamespaceInfo;
 
6717
class CClassInfo;
 
6718
class CUnionInfo;
 
6719
class CTemplateInfo;
 
6720
 
 
6721
/** \class CScopeInfo CScopeInfo.h Puma/CScopeInfo.h
 
6722
 *  Semantic information about a scope. Several syntactic
 
6723
 *  constructs have its own scope, such as class definitions,
 
6724
 *  functions, and compound statements. */
 
6725
 
 
6726
#line 6727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
6727
} // closed Puma
 
6728
class CCExprResolve;
 
6729
class CExprResolve;
 
6730
class WinIfExists;
 
6731
class WinImportHandler;
 
6732
class WinMacros;
 
6733
class WinAsm;
 
6734
class WinDeclSpecs;
 
6735
class WinMemberExplSpec;
 
6736
class WinTypeKeywords;
 
6737
class WinFriend;
 
6738
class ExtAC;
 
6739
class ExtACBuilderCoupling;
 
6740
class ExtACSyntaxCoupling;
 
6741
class ExtACTree;
 
6742
class ExtACKeywords;
 
6743
class ExtGnu;
 
6744
class PragmaOnceUnitState;
 
6745
class PragmaOnce;
 
6746
class CMatchSyntax;
 
6747
namespace Puma {
 
6748
 
 
6749
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
6750
class CScopeInfo : public CObjectInfo {
 
6751
#line 6752 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
6752
  friend class ::CCExprResolve;
 
6753
  friend class ::CExprResolve;
 
6754
  friend class ::WinIfExists;
 
6755
  friend class ::WinImportHandler;
 
6756
  friend class ::WinMacros;
 
6757
  friend class ::WinAsm;
 
6758
  friend class ::WinDeclSpecs;
 
6759
  friend class ::WinMemberExplSpec;
 
6760
  friend class ::WinTypeKeywords;
 
6761
  friend class ::WinFriend;
 
6762
  friend class ::ExtAC;
 
6763
  friend class ::ExtACBuilderCoupling;
 
6764
  friend class ::ExtACSyntaxCoupling;
 
6765
  friend class ::ExtACTree;
 
6766
  friend class ::ExtACKeywords;
 
6767
  friend class ::ExtGnu;
 
6768
  friend class ::PragmaOnceUnitState;
 
6769
  friend class ::PragmaOnce;
 
6770
  friend class ::CMatchSyntax;
 
6771
 
 
6772
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
6773
 
 
6774
  Array<CScopeInfo*> _Children; // child scopes
 
6775
  CScopeInfo *_Parent; // parent scope
 
6776
 
 
6777
protected:
 
6778
  /** Constructor.
 
6779
   *  \param id The object type. */
 
6780
  CScopeInfo (ObjectId id);
 
6781
 
 
6782
public:
 
6783
  /** Destructor. */
 
6784
  ~CScopeInfo ();
 
6785
 
 
6786
  /** Get the number of child scopes (nested scopes). */
 
6787
  unsigned Children () const;
 
6788
  /** Get the n-th child scope.
 
6789
   *  \param n The index of the child scope.
 
6790
   *  \return The n-th child scope or NULL. */
 
6791
  CScopeInfo *Child (unsigned) const;
 
6792
  /** Get the parent scope of this scope. The top
 
6793
   *  scope is the file scope. 
 
6794
   *  \return The parent scope, or this scope if no parent. */
 
6795
  CScopeInfo *Parent () const;
 
6796
  /** Check if this is a file (file scope). */
 
6797
  bool isFile () const;
 
6798
  /** Check if this is namespace. */
 
6799
  bool isNamespace () const;
 
6800
  /** Check if this is class or union. */
 
6801
  bool isRecord () const;
 
6802
  /** Check if this is a class. */
 
6803
  bool isClass () const;
 
6804
  /** Check if this is a union. */
 
6805
  bool isUnion () const;
 
6806
  /** Check if this is a function. */
 
6807
  bool isFunction () const;
 
6808
  /** Check if this is a class method. */
 
6809
  bool isMethod () const;
 
6810
  /** Check if this is a class template. */
 
6811
  bool isClassTemplate () const;
 
6812
  /** Check if this is a function template. */
 
6813
  bool isFctTemplate () const;
 
6814
  /** Check if this is a local scope. */
 
6815
  bool isLocalScope () const;
 
6816
  /** Check if this is a local class or union. */
 
6817
  bool isLocalRecord () const;
 
6818
  /** Check if this is a local class. */
 
6819
  bool isLocalClass () const;
 
6820
  /** Check if this is a local union. */
 
6821
  bool isLocalUnion () const;
 
6822
  /** Check if this is the global (file) scope. */
 
6823
  bool GlobalScope () const;
 
6824
  
 
6825
  /** Check if this scope is inside a class or 
 
6826
   *  function template scope. */
 
6827
  bool insideTemplate () const;
 
6828
  /** Check if this scope is inside a class or
 
6829
   *  union scope. */
 
6830
  bool insideRecord () const;
 
6831
  /** Check if this scope is inside a class scope. */
 
6832
  bool insideClass () const;
 
6833
  /** Check if this scope is inside a union scope. */
 
6834
  bool insideUnion () const;
 
6835
  /** Check if this scope is inside a function scope. */
 
6836
  bool insideFunction () const;
 
6837
  /** Check if this scope is inside a class method scope. */
 
6838
  bool insideMethod () const;
 
6839
 
 
6840
  /** Set the parent scope of this scope.
 
6841
   *  \param scope The parent scope. */
 
6842
  void Parent (const CScopeInfo *scope);
 
6843
  /** Add a child scope to this scope.
 
6844
   *  \param scope The child scope. */
 
6845
  void addChild (CScopeInfo *scope);
 
6846
  /** Remove a child scope.
 
6847
   *  \param scope The child scope. */
 
6848
  void removeChild (const CScopeInfo *scope);
 
6849
  
 
6850
  /** Create a new local scope information object. */
 
6851
  CLocalScope *newLocalScope ();
 
6852
  /** Create a new function or function template 
 
6853
   *  instance semantic object. 
 
6854
   *  \param inst \e true if to a function template instance. */
 
6855
  CFunctionInfo *newFunction (bool inst = false);
 
6856
  /** Create a new class or class template 
 
6857
   *  instance semantic object. 
 
6858
   *  \param inst \e true if to a class template instance. */
 
6859
  CClassInfo *newClass (bool inst = false);
 
6860
  /** Create a new union or union template 
 
6861
   *  instance semantic object. 
 
6862
   *  \param inst \e true if to a union template instance. */
 
6863
  CUnionInfo *newUnion (bool inst = false);
 
6864
  /** Create a new namespace semantic object. */
 
6865
  CNamespaceInfo *newNamespace ();
 
6866
  /** Create a new template semantic object. */
 
6867
  CTemplateInfo *newTemplate ();
 
6868
 
 
6869
  /** Delete the given local scope semantic object. 
 
6870
   *  \param scope The local scope. */
 
6871
  void deleteLocalScope (const CLocalScope *scope);
 
6872
  /** Delete the given function semantic object.
 
6873
   *  \param fct The function. */
 
6874
  void deleteFunction (const CFunctionInfo *fct);
 
6875
  /** Delete the given class semantic object.
 
6876
   *  \param c The class. */
 
6877
  void deleteClass (const CClassInfo *c);
 
6878
  /** Delete the given union semantic object.
 
6879
   *  \param u The union. */
 
6880
  void deleteUnion (const CUnionInfo *u);
 
6881
  /** Delete the given namespace semantic object. 
 
6882
   *  \param ns The namespace. */
 
6883
  void deleteNamespace (const CNamespaceInfo *ns);
 
6884
  /** Delete the given template semantic object.
 
6885
   *  \param tpl The template. */
 
6886
  void deleteTemplate (const CTemplateInfo *tpl);
 
6887
public:
 
6888
  typedef AC::TL<Puma::Array< Puma::CScopeInfo * >,AC::TL<Puma::CScopeInfo *,AC::TLE > > __AttrTypes;
 
6889
  const char *__attr_name (unsigned i) const {
 
6890
    static const char *names[] = { "_Children", "_Parent" }; return names[i];
 
6891
  }
 
6892
  const void *__attr (unsigned __i) const {
 
6893
    switch (__i) { case 1: return &_Children; case 2: return &_Parent; default: return 0; }
 
6894
  }
 
6895
#line 156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
6896
};
 
6897
 
 
6898
 
 
6899
inline CScopeInfo::CScopeInfo (CObjectInfo::ObjectId id) :
 
6900
  CObjectInfo (id),
 
6901
  _Children (20, 20),
 
6902
  _Parent ((CScopeInfo*)this)
 
6903
 {}
 
6904
 
 
6905
inline unsigned CScopeInfo::Children () const
 
6906
 { return _Children.length (); }
 
6907
inline CScopeInfo *CScopeInfo::Child (unsigned n) const
 
6908
 { return _Children.lookup (n); }
 
6909
inline CScopeInfo *CScopeInfo::Parent () const
 
6910
 { return _Parent; }
 
6911
 
 
6912
inline bool CScopeInfo::isLocalScope () const
 
6913
 { return LocalScope (); }
 
6914
inline bool CScopeInfo::isFile () const 
 
6915
 { return FileInfo (); }
 
6916
inline bool CScopeInfo::isNamespace () const 
 
6917
 { return NamespaceInfo (); }
 
6918
inline bool CScopeInfo::isRecord () const 
 
6919
 { return Record (); }
 
6920
inline bool CScopeInfo::isClass () const 
 
6921
 { return ClassInfo (); }
 
6922
inline bool CScopeInfo::isUnion () const 
 
6923
 { return UnionInfo (); }
 
6924
inline bool CScopeInfo::isFunction () const 
 
6925
 { return FunctionInfo (); }
 
6926
inline bool CScopeInfo::GlobalScope () const 
 
6927
 { return FileInfo (); }
 
6928
 
 
6929
inline bool CScopeInfo::insideFunction () const 
 
6930
 { return isFunction () || (Parent () && Parent () != this && 
 
6931
                            Parent ()->insideFunction ()); }
 
6932
inline bool CScopeInfo::insideMethod () const 
 
6933
 { return isMethod () || (Parent () && Parent () != this && 
 
6934
                          Parent ()->insideMethod ()); }
 
6935
inline bool CScopeInfo::insideRecord () const 
 
6936
 { return isRecord () || (Parent () && Parent () != this && 
 
6937
                          Parent ()->insideRecord ()); }
 
6938
inline bool CScopeInfo::insideTemplate () const 
 
6939
 { return isTemplate () || (Parent () && Parent () != this && 
 
6940
                            Parent ()->insideTemplate ()); }
 
6941
inline bool CScopeInfo::insideClass () const 
 
6942
 { return isClass () || (Parent () && Parent () != this && 
 
6943
                         Parent ()->insideClass ()); }
 
6944
inline bool CScopeInfo::insideUnion () const 
 
6945
 { return isUnion () || (Parent () && Parent () != this && 
 
6946
                         Parent ()->insideUnion ()); }
 
6947
 
 
6948
inline bool CScopeInfo::isLocalClass () const 
 
6949
 { return isClass () && insideFunction (); }
 
6950
inline bool CScopeInfo::isLocalUnion () const 
 
6951
 { return isUnion () && insideFunction (); }
 
6952
inline bool CScopeInfo::isLocalRecord () const 
 
6953
 { return isRecord () && insideFunction (); }
 
6954
 
 
6955
 
 
6956
} // namespace Puma
 
6957
 
 
6958
#endif /* __CScopeInfo_h__ */
 
6959
 
 
6960
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
6961
 
 
6962
#line 6963 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
6963
 
 
6964
#ifndef __ac_fwd_ExtACKeywords__
 
6965
#define __ac_fwd_ExtACKeywords__
 
6966
class ExtACKeywords;
 
6967
namespace AC {
 
6968
  template <class JoinPoint>
 
6969
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a0_before (JoinPoint *tjp);
 
6970
  template <class JoinPoint>
 
6971
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a1_before (JoinPoint *tjp);
 
6972
  template <class JoinPoint>
 
6973
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a2_before (JoinPoint *tjp);
 
6974
}
 
6975
#endif
 
6976
 
 
6977
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
6978
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
6979
#endif
 
6980
 
 
6981
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
6982
// This file is part of PUMA.
 
6983
// Copyright (C) 1999-2003  The PUMA developer team.
 
6984
//                                                                
 
6985
// This program is free software;  you can redistribute it and/or 
 
6986
// modify it under the terms of the GNU General Public License as 
 
6987
// published by the Free Software Foundation; either version 2 of 
 
6988
// the License, or (at your option) any later version.            
 
6989
//                                                                
 
6990
// This program is distributed in the hope that it will be useful,
 
6991
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
6992
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
6993
// GNU General Public License for more details.                   
 
6994
//                                                                
 
6995
// You should have received a copy of the GNU General Public      
 
6996
// License along with this program; if not, write to the Free     
 
6997
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
6998
// MA  02111-1307  USA                                            
 
6999
 
 
7000
#ifndef __CProject_h__
 
7001
#define __CProject_h__
 
7002
 
 
7003
// Special project derivation for C++ sources.
 
7004
 
 
7005
 
 
7006
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
7007
// This file is part of PUMA.
 
7008
// Copyright (C) 1999-2003  The PUMA developer team.
 
7009
//                                                                
 
7010
// This program is free software;  you can redistribute it and/or 
 
7011
// modify it under the terms of the GNU General Public License as 
 
7012
// published by the Free Software Foundation; either version 2 of 
 
7013
// the License, or (at your option) any later version.            
 
7014
//                                                                
 
7015
// This program is distributed in the hope that it will be useful,
 
7016
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7017
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7018
// GNU General Public License for more details.                   
 
7019
//                                                                
 
7020
// You should have received a copy of the GNU General Public      
 
7021
// License along with this program; if not, write to the Free     
 
7022
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7023
// MA  02111-1307  USA                                            
 
7024
 
 
7025
#ifndef __Config_h__
 
7026
#define __Config_h__
 
7027
 
 
7028
/** \file
 
7029
 *  Configuration information from file or command line. */
 
7030
 
 
7031
 
 
7032
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Flags.h"
 
7033
// This file is part of PUMA.
 
7034
// Copyright (C) 1999-2003  The PUMA developer team.
 
7035
//                                                                
 
7036
// This program is free software;  you can redistribute it and/or 
 
7037
// modify it under the terms of the GNU General Public License as 
 
7038
// published by the Free Software Foundation; either version 2 of 
 
7039
// the License, or (at your option) any later version.            
 
7040
//                                                                
 
7041
// This program is distributed in the hope that it will be useful,
 
7042
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7043
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7044
// GNU General Public License for more details.                   
 
7045
//                                                                
 
7046
// You should have received a copy of the GNU General Public      
 
7047
// License along with this program; if not, write to the Free     
 
7048
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7049
// MA  02111-1307  USA                                            
 
7050
 
 
7051
#ifndef __Flags_h__
 
7052
#define __Flags_h__
 
7053
 
 
7054
namespace Puma {
 
7055
 
 
7056
 
 
7057
 
 
7058
#line 7059 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7059
} // closed Puma
 
7060
class CCExprResolve;
 
7061
class CExprResolve;
 
7062
class WinIfExists;
 
7063
class WinImportHandler;
 
7064
class WinMacros;
 
7065
class WinAsm;
 
7066
class WinDeclSpecs;
 
7067
class WinMemberExplSpec;
 
7068
class WinTypeKeywords;
 
7069
class WinFriend;
 
7070
class ExtAC;
 
7071
class ExtACBuilderCoupling;
 
7072
class ExtACSyntaxCoupling;
 
7073
class ExtACTree;
 
7074
class ExtACKeywords;
 
7075
class ExtGnu;
 
7076
class PragmaOnceUnitState;
 
7077
class PragmaOnce;
 
7078
class CMatchSyntax;
 
7079
namespace Puma {
 
7080
 
 
7081
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Flags.h"
 
7082
class Flags {
 
7083
#line 7084 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7084
  friend class ::CCExprResolve;
 
7085
  friend class ::CExprResolve;
 
7086
  friend class ::WinIfExists;
 
7087
  friend class ::WinImportHandler;
 
7088
  friend class ::WinMacros;
 
7089
  friend class ::WinAsm;
 
7090
  friend class ::WinDeclSpecs;
 
7091
  friend class ::WinMemberExplSpec;
 
7092
  friend class ::WinTypeKeywords;
 
7093
  friend class ::WinFriend;
 
7094
  friend class ::ExtAC;
 
7095
  friend class ::ExtACBuilderCoupling;
 
7096
  friend class ::ExtACSyntaxCoupling;
 
7097
  friend class ::ExtACTree;
 
7098
  friend class ::ExtACKeywords;
 
7099
  friend class ::ExtGnu;
 
7100
  friend class ::PragmaOnceUnitState;
 
7101
  friend class ::PragmaOnce;
 
7102
  friend class ::CMatchSyntax;
 
7103
 
 
7104
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Flags.h"
 
7105
 
 
7106
public:
 
7107
  enum Flag {
 
7108
    NONE                       = 0x0,
 
7109
    
 
7110
    SKIP_FCT_BODY              = 0x1,
 
7111
    SKIP_INITS                 = 0x2,
 
7112
    
 
7113
    // GNU extensions
 
7114
    GNU_NESTED_FCT             = 0x4,
 
7115
    GNU_CONDITION_SCOPE        = 0x8,
 
7116
    GNU_PARAM_DECL             = 0x10,
 
7117
    GNU_FCT_DECL               = 0x20,
 
7118
    GNU_PARAM_SCOPE            = 0x40,
 
7119
    GNU_DEFAULT_ARGS           = 0x80,
 
7120
    GNU_EXTENDED_ASM           = 0x100,
 
7121
    GNU_EXTENDED_EXPR          = 0x200,
 
7122
    GNU_LONG_LONG              = 0x400,
 
7123
    GNU_NAME_SCOPE             = 0x800, 
 
7124
    GNU_IMPLICIT_INT           = 0x1000,
 
7125
    GNU_FCT_ATTRIBUTE          = 0x2000,
 
7126
    GNU_IF_THEN_EXPR           = 0x4000
 
7127
  };
 
7128
  
 
7129
private:
 
7130
  Flag _Flags;
 
7131
  
 
7132
public:
 
7133
  Flags ();
 
7134
  Flags (const Flags &);
 
7135
  Flags &operator =(const Flags &);
 
7136
 
 
7137
  // add/remove flag
 
7138
  Flags &operator +=(Flag);
 
7139
  Flags &operator -=(Flag);
 
7140
  
 
7141
  // test for flag
 
7142
  bool operator ==(Flag) const;
 
7143
  bool operator !=(Flag) const;
 
7144
public:
 
7145
  typedef AC::TL<Puma::Flags::Flag,AC::TLE > __AttrTypes;
 
7146
  const char *__attr_name (unsigned i) const {
 
7147
    static const char *names[] = { "_Flags" }; return names[i];
 
7148
  }
 
7149
  const void *__attr (unsigned __i) const {
 
7150
    switch (__i) { case 16: return &_Flags; default: return 0; }
 
7151
  }
 
7152
#line 64 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Flags.h"
 
7153
};
 
7154
 
 
7155
inline Flags::Flags () : _Flags (NONE) 
 
7156
 {}
 
7157
inline Flags::Flags (const Flags &f)
 
7158
 { _Flags = f._Flags; }
 
7159
inline Flags &Flags::operator =(const Flags &f)
 
7160
 { _Flags = f._Flags; return *(Flags*)this; }
 
7161
 
 
7162
inline Flags &Flags::operator +=(Flags::Flag f)
 
7163
 { _Flags = (Flag)(_Flags | f); return *(Flags*)this; }
 
7164
inline Flags &Flags::operator -=(Flags::Flag f)
 
7165
 { _Flags = (Flag)(_Flags ^ (_Flags & f)); return *(Flags*)this; }
 
7166
 
 
7167
inline bool Flags::operator ==(Flags::Flag f) const
 
7168
 { return _Flags & f; }
 
7169
inline bool Flags::operator !=(Flags::Flag f) const
 
7170
 { return ! (_Flags & f); }
 
7171
 
 
7172
 
 
7173
} // namespace Puma
 
7174
 
 
7175
#endif /* __Flags_h__ */
 
7176
 
 
7177
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
7178
// This file is part of PUMA.
 
7179
// Copyright (C) 1999-2003  The PUMA developer team.
 
7180
//                                                                
 
7181
// This program is free software;  you can redistribute it and/or 
 
7182
// modify it under the terms of the GNU General Public License as 
 
7183
// published by the Free Software Foundation; either version 2 of 
 
7184
// the License, or (at your option) any later version.            
 
7185
//                                                                
 
7186
// This program is distributed in the hope that it will be useful,
 
7187
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7188
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7189
// GNU General Public License for more details.                   
 
7190
//                                                                
 
7191
// You should have received a copy of the GNU General Public      
 
7192
// License along with this program; if not, write to the Free     
 
7193
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7194
// MA  02111-1307  USA                                            
 
7195
 
 
7196
#ifndef __ConfOption_h__
 
7197
#define __ConfOption_h__
 
7198
 
 
7199
 
 
7200
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
7201
#include <stdlib.h>
 
7202
 
 
7203
namespace Puma {
 
7204
 
 
7205
 
 
7206
 
 
7207
#line 7208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7208
} // closed Puma
 
7209
class CCExprResolve;
 
7210
class CExprResolve;
 
7211
class WinIfExists;
 
7212
class WinImportHandler;
 
7213
class WinMacros;
 
7214
class WinAsm;
 
7215
class WinDeclSpecs;
 
7216
class WinMemberExplSpec;
 
7217
class WinTypeKeywords;
 
7218
class WinFriend;
 
7219
class ExtAC;
 
7220
class ExtACBuilderCoupling;
 
7221
class ExtACSyntaxCoupling;
 
7222
class ExtACTree;
 
7223
class ExtACKeywords;
 
7224
class ExtGnu;
 
7225
class PragmaOnceUnitState;
 
7226
class PragmaOnce;
 
7227
class CMatchSyntax;
 
7228
namespace Puma {
 
7229
 
 
7230
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
7231
class ConfOption {
 
7232
#line 7233 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7233
  friend class ::CCExprResolve;
 
7234
  friend class ::CExprResolve;
 
7235
  friend class ::WinIfExists;
 
7236
  friend class ::WinImportHandler;
 
7237
  friend class ::WinMacros;
 
7238
  friend class ::WinAsm;
 
7239
  friend class ::WinDeclSpecs;
 
7240
  friend class ::WinMemberExplSpec;
 
7241
  friend class ::WinTypeKeywords;
 
7242
  friend class ::WinFriend;
 
7243
  friend class ::ExtAC;
 
7244
  friend class ::ExtACBuilderCoupling;
 
7245
  friend class ::ExtACSyntaxCoupling;
 
7246
  friend class ::ExtACTree;
 
7247
  friend class ::ExtACKeywords;
 
7248
  friend class ::ExtGnu;
 
7249
  friend class ::PragmaOnceUnitState;
 
7250
  friend class ::PragmaOnce;
 
7251
  friend class ::CMatchSyntax;
 
7252
 
 
7253
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
7254
 
 
7255
  const char *_name;
 
7256
  Array<const char *> _args;
 
7257
  
 
7258
public:
 
7259
  ConfOption (const char *);
 
7260
  ConfOption (const char *, const char *);
 
7261
  ConfOption (const char *, const char *, const char *);
 
7262
  ~ConfOption ();
 
7263
  
 
7264
  const char *Name () const;
 
7265
  unsigned Arguments () const;
 
7266
  const char *Argument (unsigned) const;
 
7267
  
 
7268
  void addArgument (const char *);
 
7269
public:
 
7270
  typedef AC::TL<const char *,AC::TL<Puma::Array< const char * >,AC::TLE > > __AttrTypes;
 
7271
  const char *__attr_name (unsigned i) const {
 
7272
    static const char *names[] = { "_name", "_args" }; return names[i];
 
7273
  }
 
7274
  const void *__attr (unsigned __i) const {
 
7275
    switch (__i) { case 0: return &_name; case 2: return &_args; default: return 0; }
 
7276
  }
 
7277
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
7278
};
 
7279
 
 
7280
inline ConfOption::ConfOption (const char *n) : _args (1, 1) 
 
7281
 { _name = StrCol::dup (n); }
 
7282
inline ConfOption::ConfOption (const char *n, const char *a1) : _args (1, 1) 
 
7283
 { _name = StrCol::dup (n); addArgument (a1); }
 
7284
inline ConfOption::ConfOption (const char *n, const char *a1, const char *a2) : _args (2, 1) 
 
7285
 { _name = StrCol::dup (n); addArgument (a1); addArgument (a2); }
 
7286
 
 
7287
inline ConfOption::~ConfOption ()
 
7288
 { delete[] _name; 
 
7289
   for (unsigned i = 0; i < Arguments (); i++) 
 
7290
     delete[] Argument (i);
 
7291
 }
 
7292
 
 
7293
inline const char *ConfOption::Name () const 
 
7294
 { return _name; }
 
7295
inline unsigned ConfOption::Arguments () const
 
7296
 { return _args.length (); }
 
7297
inline const char *ConfOption::Argument (unsigned i) const
 
7298
 { return _args.lookup (i); }
 
7299
  
 
7300
inline void ConfOption::addArgument (const char *a) 
 
7301
 { if (a) _args.append (StrCol::dup (a)); }
 
7302
 
 
7303
 
 
7304
} // namespace Puma
 
7305
 
 
7306
#endif /* __ConfOption_h__ */
 
7307
 
 
7308
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
7309
// This file is part of PUMA.
 
7310
// Copyright (C) 1999-2003  The PUMA developer team.
 
7311
//                                                                
 
7312
// This program is free software;  you can redistribute it and/or 
 
7313
// modify it under the terms of the GNU General Public License as 
 
7314
// published by the Free Software Foundation; either version 2 of 
 
7315
// the License, or (at your option) any later version.            
 
7316
//                                                                
 
7317
// This program is distributed in the hope that it will be useful,
 
7318
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7319
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7320
// GNU General Public License for more details.                   
 
7321
//                                                                
 
7322
// You should have received a copy of the GNU General Public      
 
7323
// License along with this program; if not, write to the Free     
 
7324
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7325
// MA  02111-1307  USA                                            
 
7326
 
 
7327
#ifndef __error_stream_h__
 
7328
#define __error_stream_h__
 
7329
 
 
7330
// An ErrorStream is a special ErrorSink that prints out an error message
 
7331
// as soon as it complete. It also stores the maximum error severity.
 
7332
// The ErrorStream can be reset to it's initial state.
 
7333
 
 
7334
#include <sstream>
 
7335
 
 
7336
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
7337
// This file is part of PUMA.
 
7338
// Copyright (C) 1999-2003  The PUMA developer team.
 
7339
//                                                                
 
7340
// This program is free software;  you can redistribute it and/or 
 
7341
// modify it under the terms of the GNU General Public License as 
 
7342
// published by the Free Software Foundation; either version 2 of 
 
7343
// the License, or (at your option) any later version.            
 
7344
//                                                                
 
7345
// This program is distributed in the hope that it will be useful,
 
7346
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7347
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7348
// GNU General Public License for more details.                   
 
7349
//                                                                
 
7350
// You should have received a copy of the GNU General Public      
 
7351
// License along with this program; if not, write to the Free     
 
7352
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7353
// MA  02111-1307  USA                                            
 
7354
 
 
7355
#ifndef __error_sink_h__
 
7356
#define __error_sink_h__
 
7357
 
 
7358
// This is an interface for classes that may be used to consume error
 
7359
// messages during a process where many errors can occur like parsing
 
7360
// a program.
 
7361
// The error information is handed over to the ErrorSink in stream-like
 
7362
// style. Different severities of errors are predefined and can be used
 
7363
// to classify error information that follows. Also a location can be
 
7364
// handed over to the ErrorSink to specify where the error was found
 
7365
// (filename, line, etc.). The error information itself can be of any
 
7366
// standard data type or anything that is "Printable".
 
7367
// Specializations of this class could either build and print error
 
7368
// messages or collect them for a later processing.
 
7369
 
 
7370
 
 
7371
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
7372
// This file is part of PUMA.
 
7373
// Copyright (C) 1999-2003  The PUMA developer team.
 
7374
//                                                                
 
7375
// This program is free software;  you can redistribute it and/or 
 
7376
// modify it under the terms of the GNU General Public License as 
 
7377
// published by the Free Software Foundation; either version 2 of 
 
7378
// the License, or (at your option) any later version.            
 
7379
//                                                                
 
7380
// This program is distributed in the hope that it will be useful,
 
7381
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7382
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7383
// GNU General Public License for more details.                   
 
7384
//                                                                
 
7385
// You should have received a copy of the GNU General Public      
 
7386
// License along with this program; if not, write to the Free     
 
7387
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7388
// MA  02111-1307  USA                                            
 
7389
 
 
7390
#ifndef __error_severity_h__
 
7391
#define __error_severity_h__
 
7392
 
 
7393
// Severity of errors: represented by a short integer and a text
 
7394
 
 
7395
namespace Puma {
 
7396
 
 
7397
 
 
7398
 
 
7399
#line 7400 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7400
} // closed Puma
 
7401
class CCExprResolve;
 
7402
class CExprResolve;
 
7403
class WinIfExists;
 
7404
class WinImportHandler;
 
7405
class WinMacros;
 
7406
class WinAsm;
 
7407
class WinDeclSpecs;
 
7408
class WinMemberExplSpec;
 
7409
class WinTypeKeywords;
 
7410
class WinFriend;
 
7411
class ExtAC;
 
7412
class ExtACBuilderCoupling;
 
7413
class ExtACSyntaxCoupling;
 
7414
class ExtACTree;
 
7415
class ExtACKeywords;
 
7416
class ExtGnu;
 
7417
class PragmaOnceUnitState;
 
7418
class PragmaOnce;
 
7419
class CMatchSyntax;
 
7420
namespace Puma {
 
7421
 
 
7422
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
7423
class ErrorSeverity {
 
7424
#line 7425 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7425
  friend class ::CCExprResolve;
 
7426
  friend class ::CExprResolve;
 
7427
  friend class ::WinIfExists;
 
7428
  friend class ::WinImportHandler;
 
7429
  friend class ::WinMacros;
 
7430
  friend class ::WinAsm;
 
7431
  friend class ::WinDeclSpecs;
 
7432
  friend class ::WinMemberExplSpec;
 
7433
  friend class ::WinTypeKeywords;
 
7434
  friend class ::WinFriend;
 
7435
  friend class ::ExtAC;
 
7436
  friend class ::ExtACBuilderCoupling;
 
7437
  friend class ::ExtACSyntaxCoupling;
 
7438
  friend class ::ExtACTree;
 
7439
  friend class ::ExtACKeywords;
 
7440
  friend class ::ExtGnu;
 
7441
  friend class ::PragmaOnceUnitState;
 
7442
  friend class ::PragmaOnce;
 
7443
  friend class ::CMatchSyntax;
 
7444
 
 
7445
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
7446
 
 
7447
  unsigned short _severity;
 
7448
  const char *_text;
 
7449
 
 
7450
public:
 
7451
  ErrorSeverity (unsigned short s = 0, const char* t = (const char*)0) :
 
7452
    _severity (s), _text (t) {}
 
7453
  ErrorSeverity (const ErrorSeverity &s) :
 
7454
    _severity (s._severity), _text (s._text) {}
 
7455
  ErrorSeverity &operator =(const ErrorSeverity &s) 
 
7456
    { _severity = s._severity; _text = s._text; return *this; }
 
7457
 
 
7458
  int operator < (const ErrorSeverity &s) const
 
7459
   { return _severity < s._severity; }
 
7460
  int operator > (const ErrorSeverity &s) const
 
7461
   { return _severity > s._severity; }
 
7462
  int operator <= (const ErrorSeverity &s) const
 
7463
   { return _severity < s._severity || _severity == s._severity; }
 
7464
  int operator >= (const ErrorSeverity &s) const
 
7465
   { return _severity > s._severity || _severity == s._severity; }
 
7466
  int operator == (const ErrorSeverity &s) const
 
7467
   { return _severity == s._severity; }
 
7468
  int operator != (const ErrorSeverity &s) const
 
7469
   { return _severity != s._severity; }
 
7470
  const char *text () const
 
7471
   { return _text; }
 
7472
public:
 
7473
  typedef AC::TL<unsigned short int,AC::TL<const char *,AC::TLE > > __AttrTypes;
 
7474
  const char *__attr_name (unsigned i) const {
 
7475
    static const char *names[] = { "_severity", "_text" }; return names[i];
 
7476
  }
 
7477
  const void *__attr (unsigned __i) const {
 
7478
    switch (__i) { case 0: return &_severity; case 1: return &_text; default: return 0; }
 
7479
  }
 
7480
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
7481
};
 
7482
 
 
7483
extern const ErrorSeverity sev_none;
 
7484
extern const ErrorSeverity sev_message;
 
7485
extern const ErrorSeverity sev_warning;
 
7486
extern const ErrorSeverity sev_error;
 
7487
extern const ErrorSeverity sev_fatal;
 
7488
      
 
7489
 
 
7490
} // namespace Puma
 
7491
 
 
7492
#endif /* __error_severity_h__ */
 
7493
 
 
7494
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
7495
// This file is part of PUMA.
 
7496
// Copyright (C) 1999-2003  The PUMA developer team.
 
7497
//                                                                
 
7498
// This program is free software;  you can redistribute it and/or 
 
7499
// modify it under the terms of the GNU General Public License as 
 
7500
// published by the Free Software Foundation; either version 2 of 
 
7501
// the License, or (at your option) any later version.            
 
7502
//                                                                
 
7503
// This program is distributed in the hope that it will be useful,
 
7504
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7505
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7506
// GNU General Public License for more details.                   
 
7507
//                                                                
 
7508
// You should have received a copy of the GNU General Public      
 
7509
// License along with this program; if not, write to the Free     
 
7510
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7511
// MA  02111-1307  USA                                            
 
7512
 
 
7513
#ifndef __location_h__
 
7514
#define __location_h__
 
7515
 
 
7516
 
 
7517
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
7518
// This file is part of PUMA.
 
7519
// Copyright (C) 1999-2003  The PUMA developer team.
 
7520
//                                                                
 
7521
// This program is free software;  you can redistribute it and/or 
 
7522
// modify it under the terms of the GNU General Public License as 
 
7523
// published by the Free Software Foundation; either version 2 of 
 
7524
// the License, or (at your option) any later version.            
 
7525
//                                                                
 
7526
// This program is distributed in the hope that it will be useful,
 
7527
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7528
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7529
// GNU General Public License for more details.                   
 
7530
//                                                                
 
7531
// You should have received a copy of the GNU General Public      
 
7532
// License along with this program; if not, write to the Free     
 
7533
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7534
// MA  02111-1307  USA                                            
 
7535
 
 
7536
#ifndef __filename_h__
 
7537
#define __filename_h__
 
7538
 
 
7539
 
 
7540
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
7541
// This file is part of PUMA.
 
7542
// Copyright (C) 1999-2003  The PUMA developer team.
 
7543
//                                                                
 
7544
// This program is free software;  you can redistribute it and/or 
 
7545
// modify it under the terms of the GNU General Public License as 
 
7546
// published by the Free Software Foundation; either version 2 of 
 
7547
// the License, or (at your option) any later version.            
 
7548
//                                                                
 
7549
// This program is distributed in the hope that it will be useful,
 
7550
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7551
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7552
// GNU General Public License for more details.                   
 
7553
//                                                                
 
7554
// You should have received a copy of the GNU General Public      
 
7555
// License along with this program; if not, write to the Free     
 
7556
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7557
// MA  02111-1307  USA                                            
 
7558
 
 
7559
#ifndef __smart_ptr_h__
 
7560
#define __smart_ptr_h__
 
7561
 
 
7562
 
 
7563
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
7564
// This file is part of PUMA.
 
7565
// Copyright (C) 1999-2003  The PUMA developer team.
 
7566
//                                                                
 
7567
// This program is free software;  you can redistribute it and/or 
 
7568
// modify it under the terms of the GNU General Public License as 
 
7569
// published by the Free Software Foundation; either version 2 of 
 
7570
// the License, or (at your option) any later version.            
 
7571
//                                                                
 
7572
// This program is distributed in the hope that it will be useful,
 
7573
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7574
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7575
// GNU General Public License for more details.                   
 
7576
//                                                                
 
7577
// You should have received a copy of the GNU General Public      
 
7578
// License along with this program; if not, write to the Free     
 
7579
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7580
// MA  02111-1307  USA                                            
 
7581
 
 
7582
#ifndef __ref_cnt_h__
 
7583
#define __ref_cnt_h__
 
7584
 
 
7585
namespace Puma {
 
7586
 
 
7587
 
 
7588
 
 
7589
#line 7590 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7590
} // closed Puma
 
7591
class CCExprResolve;
 
7592
class CExprResolve;
 
7593
class WinIfExists;
 
7594
class WinImportHandler;
 
7595
class WinMacros;
 
7596
class WinAsm;
 
7597
class WinDeclSpecs;
 
7598
class WinMemberExplSpec;
 
7599
class WinTypeKeywords;
 
7600
class WinFriend;
 
7601
class ExtAC;
 
7602
class ExtACBuilderCoupling;
 
7603
class ExtACSyntaxCoupling;
 
7604
class ExtACTree;
 
7605
class ExtACKeywords;
 
7606
class ExtGnu;
 
7607
class PragmaOnceUnitState;
 
7608
class PragmaOnce;
 
7609
class CMatchSyntax;
 
7610
namespace Puma {
 
7611
 
 
7612
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
7613
class RefCnt {
 
7614
#line 7615 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7615
  friend class ::CCExprResolve;
 
7616
  friend class ::CExprResolve;
 
7617
  friend class ::WinIfExists;
 
7618
  friend class ::WinImportHandler;
 
7619
  friend class ::WinMacros;
 
7620
  friend class ::WinAsm;
 
7621
  friend class ::WinDeclSpecs;
 
7622
  friend class ::WinMemberExplSpec;
 
7623
  friend class ::WinTypeKeywords;
 
7624
  friend class ::WinFriend;
 
7625
  friend class ::ExtAC;
 
7626
  friend class ::ExtACBuilderCoupling;
 
7627
  friend class ::ExtACSyntaxCoupling;
 
7628
  friend class ::ExtACTree;
 
7629
  friend class ::ExtACKeywords;
 
7630
  friend class ::ExtGnu;
 
7631
  friend class ::PragmaOnceUnitState;
 
7632
  friend class ::PragmaOnce;
 
7633
  friend class ::CMatchSyntax;
 
7634
 
 
7635
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
7636
 
 
7637
  int _counter;
 
7638
 
 
7639
public:
 
7640
  RefCnt () : _counter (0) {}
 
7641
  virtual ~RefCnt () {}
 
7642
  
 
7643
  void ref () { _counter++; }
 
7644
  void deref () { _counter--; }
 
7645
  int counter () { return _counter; }
 
7646
public:
 
7647
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
7648
  const char *__attr_name (unsigned i) const {
 
7649
    static const char *names[] = { "_counter" }; return names[i];
 
7650
  }
 
7651
  const void *__attr (unsigned __i) const {
 
7652
    switch (__i) { case 0: return &_counter; default: return 0; }
 
7653
  }
 
7654
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
7655
};
 
7656
 
 
7657
 
 
7658
} // namespace Puma
 
7659
 
 
7660
#endif /* __ref_cnt_h__ */
 
7661
 
 
7662
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
7663
namespace Puma {
 
7664
 
 
7665
 
 
7666
 
 
7667
#line 7668 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7668
} // closed Puma
 
7669
class CCExprResolve;
 
7670
class CExprResolve;
 
7671
class WinIfExists;
 
7672
class WinImportHandler;
 
7673
class WinMacros;
 
7674
class WinAsm;
 
7675
class WinDeclSpecs;
 
7676
class WinMemberExplSpec;
 
7677
class WinTypeKeywords;
 
7678
class WinFriend;
 
7679
class ExtAC;
 
7680
class ExtACBuilderCoupling;
 
7681
class ExtACSyntaxCoupling;
 
7682
class ExtACTree;
 
7683
class ExtACKeywords;
 
7684
class ExtGnu;
 
7685
class PragmaOnceUnitState;
 
7686
class PragmaOnce;
 
7687
class CMatchSyntax;
 
7688
namespace Puma {
 
7689
 
 
7690
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
7691
class SmartPtr {
 
7692
#line 7693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7693
  friend class ::CCExprResolve;
 
7694
  friend class ::CExprResolve;
 
7695
  friend class ::WinIfExists;
 
7696
  friend class ::WinImportHandler;
 
7697
  friend class ::WinMacros;
 
7698
  friend class ::WinAsm;
 
7699
  friend class ::WinDeclSpecs;
 
7700
  friend class ::WinMemberExplSpec;
 
7701
  friend class ::WinTypeKeywords;
 
7702
  friend class ::WinFriend;
 
7703
  friend class ::ExtAC;
 
7704
  friend class ::ExtACBuilderCoupling;
 
7705
  friend class ::ExtACSyntaxCoupling;
 
7706
  friend class ::ExtACTree;
 
7707
  friend class ::ExtACKeywords;
 
7708
  friend class ::ExtGnu;
 
7709
  friend class ::PragmaOnceUnitState;
 
7710
  friend class ::PragmaOnce;
 
7711
  friend class ::CMatchSyntax;
 
7712
 
 
7713
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
7714
 
 
7715
  RefCnt *_data;
 
7716
 
 
7717
public:
 
7718
  SmartPtr () : _data ((RefCnt*)0) {}
 
7719
  ~SmartPtr () { clear (); }
 
7720
  SmartPtr (const SmartPtr &copy);
 
7721
  SmartPtr (RefCnt *rc) : _data (rc) {}
 
7722
  SmartPtr &operator = (const SmartPtr &copy);
 
7723
 
 
7724
  void data (RefCnt *d);
 
7725
  void clear ();
 
7726
  RefCnt *data () const { return _data; }
 
7727
  bool is_defined () const { return _data != (RefCnt*)0; }
 
7728
public:
 
7729
  typedef AC::TL<Puma::RefCnt *,AC::TLE > __AttrTypes;
 
7730
  const char *__attr_name (unsigned i) const {
 
7731
    static const char *names[] = { "_data" }; return names[i];
 
7732
  }
 
7733
  const void *__attr (unsigned __i) const {
 
7734
    switch (__i) { case 0: return &_data; default: return 0; }
 
7735
  }
 
7736
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
7737
};
 
7738
 
 
7739
 
 
7740
} // namespace Puma
 
7741
 
 
7742
#endif /* __smart_ptr_h__ */
 
7743
 
 
7744
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
7745
// This file is part of PUMA.
 
7746
// Copyright (C) 1999-2003  The PUMA developer team.
 
7747
//                                                                
 
7748
// This program is free software;  you can redistribute it and/or 
 
7749
// modify it under the terms of the GNU General Public License as 
 
7750
// published by the Free Software Foundation; either version 2 of 
 
7751
// the License, or (at your option) any later version.            
 
7752
//                                                                
 
7753
// This program is distributed in the hope that it will be useful,
 
7754
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
7755
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
7756
// GNU General Public License for more details.                   
 
7757
//                                                                
 
7758
// You should have received a copy of the GNU General Public      
 
7759
// License along with this program; if not, write to the Free     
 
7760
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
7761
// MA  02111-1307  USA                                            
 
7762
 
 
7763
#ifndef __filename_info_h__
 
7764
#define __filename_info_h__
 
7765
 
 
7766
 
 
7767
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
7768
namespace Puma {
 
7769
 
 
7770
 
 
7771
 
 
7772
#line 7773 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7773
} // closed Puma
 
7774
class CCExprResolve;
 
7775
class CExprResolve;
 
7776
class WinIfExists;
 
7777
class WinImportHandler;
 
7778
class WinMacros;
 
7779
class WinAsm;
 
7780
class WinDeclSpecs;
 
7781
class WinMemberExplSpec;
 
7782
class WinTypeKeywords;
 
7783
class WinFriend;
 
7784
class ExtAC;
 
7785
class ExtACBuilderCoupling;
 
7786
class ExtACSyntaxCoupling;
 
7787
class ExtACTree;
 
7788
class ExtACKeywords;
 
7789
class ExtGnu;
 
7790
class PragmaOnceUnitState;
 
7791
class PragmaOnce;
 
7792
class CMatchSyntax;
 
7793
namespace Puma {
 
7794
 
 
7795
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
7796
class FilenameInfo : public RefCnt {
 
7797
#line 7798 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7798
  friend class ::CCExprResolve;
 
7799
  friend class ::CExprResolve;
 
7800
  friend class ::WinIfExists;
 
7801
  friend class ::WinImportHandler;
 
7802
  friend class ::WinMacros;
 
7803
  friend class ::WinAsm;
 
7804
  friend class ::WinDeclSpecs;
 
7805
  friend class ::WinMemberExplSpec;
 
7806
  friend class ::WinTypeKeywords;
 
7807
  friend class ::WinFriend;
 
7808
  friend class ::ExtAC;
 
7809
  friend class ::ExtACBuilderCoupling;
 
7810
  friend class ::ExtACSyntaxCoupling;
 
7811
  friend class ::ExtACTree;
 
7812
  friend class ::ExtACKeywords;
 
7813
  friend class ::ExtGnu;
 
7814
  friend class ::PragmaOnceUnitState;
 
7815
  friend class ::PragmaOnce;
 
7816
  friend class ::CMatchSyntax;
 
7817
 
 
7818
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
7819
 
 
7820
  DString _name;
 
7821
  const char *_path;
 
7822
  const char *_root;
 
7823
 
 
7824
public:
 
7825
  FilenameInfo () : _path ((const char*)0), _root ((const char*)0) {}
 
7826
  ~FilenameInfo ();
 
7827
  void name (const char *n);
 
7828
//  void name (const DString &dsn) { _name = dsn; }
 
7829
  const char *name () const { return _name.c_str (); }
 
7830
  const char *path ();
 
7831
  const char *root ();
 
7832
  bool is_absolute () const;
 
7833
  bool operator == (const FilenameInfo &rc) const {
 
7834
    return _name == rc._name;
 
7835
  }
 
7836
public:
 
7837
  typedef AC::TL<Puma::DString,AC::TL<const char *,AC::TL<const char *,AC::TLE > > > __AttrTypes;
 
7838
  const char *__attr_name (unsigned i) const {
 
7839
    static const char *names[] = { "_name", "_path", "_root" }; return names[i];
 
7840
  }
 
7841
  const void *__attr (unsigned __i) const {
 
7842
    switch (__i) { case 0: return &_name; case 1: return &_path; case 2: return &_root; default: return 0; }
 
7843
  }
 
7844
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
7845
};
 
7846
 
 
7847
 
 
7848
} // namespace Puma
 
7849
 
 
7850
#endif /* __filename_info_h__ */
 
7851
 
 
7852
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
7853
namespace Puma {
 
7854
 
 
7855
 
 
7856
 
 
7857
#line 7858 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7858
} // closed Puma
 
7859
class CCExprResolve;
 
7860
class CExprResolve;
 
7861
class WinIfExists;
 
7862
class WinImportHandler;
 
7863
class WinMacros;
 
7864
class WinAsm;
 
7865
class WinDeclSpecs;
 
7866
class WinMemberExplSpec;
 
7867
class WinTypeKeywords;
 
7868
class WinFriend;
 
7869
class ExtAC;
 
7870
class ExtACBuilderCoupling;
 
7871
class ExtACSyntaxCoupling;
 
7872
class ExtACTree;
 
7873
class ExtACKeywords;
 
7874
class ExtGnu;
 
7875
class PragmaOnceUnitState;
 
7876
class PragmaOnce;
 
7877
class CMatchSyntax;
 
7878
namespace Puma {
 
7879
 
 
7880
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
7881
class Filename : public SmartPtr, public Printable {
 
7882
#line 7883 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7883
  friend class ::CCExprResolve;
 
7884
  friend class ::CExprResolve;
 
7885
  friend class ::WinIfExists;
 
7886
  friend class ::WinImportHandler;
 
7887
  friend class ::WinMacros;
 
7888
  friend class ::WinAsm;
 
7889
  friend class ::WinDeclSpecs;
 
7890
  friend class ::WinMemberExplSpec;
 
7891
  friend class ::WinTypeKeywords;
 
7892
  friend class ::WinFriend;
 
7893
  friend class ::ExtAC;
 
7894
  friend class ::ExtACBuilderCoupling;
 
7895
  friend class ::ExtACSyntaxCoupling;
 
7896
  friend class ::ExtACTree;
 
7897
  friend class ::ExtACKeywords;
 
7898
  friend class ::ExtGnu;
 
7899
  friend class ::PragmaOnceUnitState;
 
7900
  friend class ::PragmaOnce;
 
7901
  friend class ::CMatchSyntax;
 
7902
 
 
7903
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
7904
 
 
7905
  FilenameInfo *info () const { return (FilenameInfo*)data (); }
 
7906
 
 
7907
public:
 
7908
  Filename () {}
 
7909
  Filename (const char *n) { name (n); }
 
7910
  Filename &operator = (const char *n) { name (n); return *this; }
 
7911
  bool operator ~ () const { return info () != 0; }
 
7912
  void name (const char *n);
 
7913
  const char *name () const;
 
7914
  const char *path () const;
 
7915
  const char *root () const;
 
7916
  bool is_absolute () const;
 
7917
  bool operator == (const Filename &f) const;
 
7918
  bool operator != (const Filename &f) const { return !(*this == f); }
 
7919
  virtual void print (ostream &os) const { if (info ()) os << name (); }
 
7920
public:
 
7921
  typedef AC::TLE __AttrTypes;
 
7922
  const char *__attr_name (unsigned i) const { return 0; }
 
7923
  const void *__attr (unsigned __i) const { return 0; }
 
7924
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
7925
};
 
7926
 
 
7927
 
 
7928
} // namespace Puma
 
7929
 
 
7930
#endif /* __filename_h__ */
 
7931
 
 
7932
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
7933
namespace Puma {
 
7934
 
 
7935
 
 
7936
 
 
7937
#line 7938 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7938
} // closed Puma
 
7939
class CCExprResolve;
 
7940
class CExprResolve;
 
7941
class WinIfExists;
 
7942
class WinImportHandler;
 
7943
class WinMacros;
 
7944
class WinAsm;
 
7945
class WinDeclSpecs;
 
7946
class WinMemberExplSpec;
 
7947
class WinTypeKeywords;
 
7948
class WinFriend;
 
7949
class ExtAC;
 
7950
class ExtACBuilderCoupling;
 
7951
class ExtACSyntaxCoupling;
 
7952
class ExtACTree;
 
7953
class ExtACKeywords;
 
7954
class ExtGnu;
 
7955
class PragmaOnceUnitState;
 
7956
class PragmaOnce;
 
7957
class CMatchSyntax;
 
7958
namespace Puma {
 
7959
 
 
7960
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
7961
class Location {
 
7962
#line 7963 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
7963
  friend class ::CCExprResolve;
 
7964
  friend class ::CExprResolve;
 
7965
  friend class ::WinIfExists;
 
7966
  friend class ::WinImportHandler;
 
7967
  friend class ::WinMacros;
 
7968
  friend class ::WinAsm;
 
7969
  friend class ::WinDeclSpecs;
 
7970
  friend class ::WinMemberExplSpec;
 
7971
  friend class ::WinTypeKeywords;
 
7972
  friend class ::WinFriend;
 
7973
  friend class ::ExtAC;
 
7974
  friend class ::ExtACBuilderCoupling;
 
7975
  friend class ::ExtACSyntaxCoupling;
 
7976
  friend class ::ExtACTree;
 
7977
  friend class ::ExtACKeywords;
 
7978
  friend class ::ExtGnu;
 
7979
  friend class ::PragmaOnceUnitState;
 
7980
  friend class ::PragmaOnce;
 
7981
  friend class ::CMatchSyntax;
 
7982
 
 
7983
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
7984
 
 
7985
  Filename _filename;
 
7986
  int _line;
 
7987
  int _column;
 
7988
 
 
7989
public:
 
7990
  Location () : _filename (), _line (0), _column (0) {}
 
7991
  Location (Filename f, int l, int c = 0) { setup (f, l, c); }
 
7992
  void setup (Filename f, int l, int c = 0) {
 
7993
    _filename = f;
 
7994
    _line     = l;
 
7995
    _column   = c;
 
7996
  }
 
7997
  const Filename &filename () const { return _filename; }
 
7998
  int line () const { return _line; }
 
7999
  int column () const { return _column; }
 
8000
  bool operator == (const Location &l) const {
 
8001
    return filename () == l.filename () && line () == l.line () &&
 
8002
      column () == l.column ();
 
8003
  }
 
8004
  bool operator != (const Location &l) const { return ! (*this == l); }
 
8005
  bool operator < (const Location &l) const {
 
8006
    // TODO: does it make sense to compare the filenames? better assert?
 
8007
    if (filename () != l.filename ())
 
8008
      return false;
 
8009
    return line () < l.line () && column () < l.column ();
 
8010
  }
 
8011
public:
 
8012
  typedef AC::TL<Puma::Filename,AC::TL<int,AC::TL<int,AC::TLE > > > __AttrTypes;
 
8013
  const char *__attr_name (unsigned i) const {
 
8014
    static const char *names[] = { "_filename", "_line", "_column" }; return names[i];
 
8015
  }
 
8016
  const void *__attr (unsigned __i) const {
 
8017
    switch (__i) { case 0: return &_filename; case 1: return &_line; case 2: return &_column; default: return 0; }
 
8018
  }
 
8019
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
8020
};
 
8021
 
 
8022
inline std::ostream &operator << (std::ostream &os, const Location &loc) {
 
8023
#ifdef VISUAL_STUDIO
 
8024
  os << loc.filename () << "(" << loc.line () << ")";
 
8025
#else
 
8026
  os << loc.filename () << ":" << loc.line ();
 
8027
#endif
 
8028
  return os;  
 
8029
}
 
8030
} // namespace Puma
 
8031
 
 
8032
#endif /* __location_h__ */
 
8033
 
 
8034
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
8035
namespace Puma {
 
8036
 
 
8037
 
 
8038
 
 
8039
#line 8040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8040
} // closed Puma
 
8041
class CCExprResolve;
 
8042
class CExprResolve;
 
8043
class WinIfExists;
 
8044
class WinImportHandler;
 
8045
class WinMacros;
 
8046
class WinAsm;
 
8047
class WinDeclSpecs;
 
8048
class WinMemberExplSpec;
 
8049
class WinTypeKeywords;
 
8050
class WinFriend;
 
8051
class ExtAC;
 
8052
class ExtACBuilderCoupling;
 
8053
class ExtACSyntaxCoupling;
 
8054
class ExtACTree;
 
8055
class ExtACKeywords;
 
8056
class ExtGnu;
 
8057
class PragmaOnceUnitState;
 
8058
class PragmaOnce;
 
8059
class CMatchSyntax;
 
8060
namespace Puma {
 
8061
 
 
8062
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
8063
class ErrorSink {
 
8064
#line 8065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8065
  friend class ::CCExprResolve;
 
8066
  friend class ::CExprResolve;
 
8067
  friend class ::WinIfExists;
 
8068
  friend class ::WinImportHandler;
 
8069
  friend class ::WinMacros;
 
8070
  friend class ::WinAsm;
 
8071
  friend class ::WinDeclSpecs;
 
8072
  friend class ::WinMemberExplSpec;
 
8073
  friend class ::WinTypeKeywords;
 
8074
  friend class ::WinFriend;
 
8075
  friend class ::ExtAC;
 
8076
  friend class ::ExtACBuilderCoupling;
 
8077
  friend class ::ExtACSyntaxCoupling;
 
8078
  friend class ::ExtACTree;
 
8079
  friend class ::ExtACKeywords;
 
8080
  friend class ::ExtGnu;
 
8081
  friend class ::PragmaOnceUnitState;
 
8082
  friend class ::PragmaOnce;
 
8083
  friend class ::CMatchSyntax;
 
8084
 
 
8085
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
8086
 
 
8087
public:
 
8088
  virtual ~ErrorSink () {}
 
8089
  virtual ErrorSink &operator << (const char *) = 0;
 
8090
  virtual ErrorSink &operator << (long) = 0;
 
8091
  virtual ErrorSink &operator << (unsigned) = 0;
 
8092
  virtual ErrorSink &operator << (int) = 0;
 
8093
  virtual ErrorSink &operator << (short) = 0;
 
8094
  virtual ErrorSink &operator << (char) = 0;
 
8095
  virtual ErrorSink &operator << (double) = 0;
 
8096
  virtual ErrorSink &operator << (const ErrorSeverity &) = 0;
 
8097
  virtual ErrorSink &operator << (Location) = 0;
 
8098
  virtual ErrorSink &operator << (const Printable &) = 0;
 
8099
  virtual ErrorSink &operator << (void (*f)(ErrorSink &)) = 0;
 
8100
  virtual void endMessage () = 0;
 
8101
public:
 
8102
  typedef AC::TLE __AttrTypes;
 
8103
  const char *__attr_name (unsigned i) const { return 0; }
 
8104
  const void *__attr (unsigned __i) const { return 0; }
 
8105
#line 56 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
8106
};
 
8107
 
 
8108
void endMessage (ErrorSink &);
 
8109
 
 
8110
 
 
8111
} // namespace Puma
 
8112
 
 
8113
#endif /* __error_sink_h__ */
 
8114
 
 
8115
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
8116
using namespace std;
 
8117
 
 
8118
namespace Puma {
 
8119
 
 
8120
 
 
8121
 
 
8122
#line 8123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8123
} // closed Puma
 
8124
class CCExprResolve;
 
8125
class CExprResolve;
 
8126
class WinIfExists;
 
8127
class WinImportHandler;
 
8128
class WinMacros;
 
8129
class WinAsm;
 
8130
class WinDeclSpecs;
 
8131
class WinMemberExplSpec;
 
8132
class WinTypeKeywords;
 
8133
class WinFriend;
 
8134
class ExtAC;
 
8135
class ExtACBuilderCoupling;
 
8136
class ExtACSyntaxCoupling;
 
8137
class ExtACTree;
 
8138
class ExtACKeywords;
 
8139
class ExtGnu;
 
8140
class PragmaOnceUnitState;
 
8141
class PragmaOnce;
 
8142
class CMatchSyntax;
 
8143
namespace Puma {
 
8144
 
 
8145
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
8146
class ErrorStream : public ErrorSink {
 
8147
#line 8148 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8148
  friend class ::CCExprResolve;
 
8149
  friend class ::CExprResolve;
 
8150
  friend class ::WinIfExists;
 
8151
  friend class ::WinImportHandler;
 
8152
  friend class ::WinMacros;
 
8153
  friend class ::WinAsm;
 
8154
  friend class ::WinDeclSpecs;
 
8155
  friend class ::WinMemberExplSpec;
 
8156
  friend class ::WinTypeKeywords;
 
8157
  friend class ::WinFriend;
 
8158
  friend class ::ExtAC;
 
8159
  friend class ::ExtACBuilderCoupling;
 
8160
  friend class ::ExtACSyntaxCoupling;
 
8161
  friend class ::ExtACTree;
 
8162
  friend class ::ExtACKeywords;
 
8163
  friend class ::ExtGnu;
 
8164
  friend class ::PragmaOnceUnitState;
 
8165
  friend class ::PragmaOnce;
 
8166
  friend class ::CMatchSyntax;
 
8167
 
 
8168
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
8169
 
 
8170
  ostream *_ostream;
 
8171
  ErrorSeverity _max_severity;
 
8172
  ErrorSeverity _curr_severity;
 
8173
  Location _location;
 
8174
  bool _have_location;
 
8175
  std::ostringstream *_msg;
 
8176
  bool _silently;
 
8177
 
 
8178
  void output ();
 
8179
  void clear ();
 
8180
 
 
8181
public:
 
8182
  ErrorStream (std::ostream &s = cerr) : _ostream (&s), _msg ((std::ostringstream*)0)
 
8183
   { reset (); _silently = false; }
 
8184
  virtual ~ErrorStream () { delete _msg; }
 
8185
 
 
8186
  ErrorStream &operator << (const char *);
 
8187
  ErrorStream &operator << (long);
 
8188
  ErrorStream &operator << (unsigned);
 
8189
  ErrorStream &operator << (int);
 
8190
  ErrorStream &operator << (short);
 
8191
  ErrorStream &operator << (char);
 
8192
  ErrorStream &operator << (double);
 
8193
  ErrorStream &operator << (const ErrorSeverity &);
 
8194
  ErrorStream &operator << (Location);
 
8195
  ErrorStream &operator << (const Printable &);
 
8196
  ErrorStream &operator << (void (*f)(ErrorSink &));
 
8197
 
 
8198
  void endMessage ();
 
8199
  void reset ();
 
8200
  void silent ();
 
8201
  void loud ();
 
8202
 
 
8203
  ErrorSeverity severity () const { return _max_severity; }
 
8204
public:
 
8205
  typedef AC::TL<std::basic_ostream< char > *,AC::TL<Puma::ErrorSeverity,AC::TL<Puma::ErrorSeverity,AC::TL<Puma::Location,AC::TL<bool,AC::TL<std::basic_ostringstream< char > *,AC::TL<bool,AC::TLE > > > > > > > __AttrTypes;
 
8206
  const char *__attr_name (unsigned i) const {
 
8207
    static const char *names[] = { "_ostream", "_max_severity", "_curr_severity", "_location", "_have_location", "_msg", "_silently" }; return names[i];
 
8208
  }
 
8209
  const void *__attr (unsigned __i) const {
 
8210
    switch (__i) { case 0: return &_ostream; case 1: return &_max_severity; case 2: return &_curr_severity; case 3: return &_location; case 4: return &_have_location; case 5: return &_msg; case 6: return &_silently; default: return 0; }
 
8211
  }
 
8212
#line 70 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
8213
};
 
8214
 
 
8215
 
 
8216
} // namespace Puma
 
8217
 
 
8218
#endif /* __error_stream_h__ */
 
8219
 
 
8220
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
8221
// This file is part of PUMA.
 
8222
// Copyright (C) 1999-2003  The PUMA developer team.
 
8223
//                                                                
 
8224
// This program is free software;  you can redistribute it and/or 
 
8225
// modify it under the terms of the GNU General Public License as 
 
8226
// published by the Free Software Foundation; either version 2 of 
 
8227
// the License, or (at your option) any later version.            
 
8228
//                                                                
 
8229
// This program is distributed in the hope that it will be useful,
 
8230
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
8231
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
8232
// GNU General Public License for more details.                   
 
8233
//                                                                
 
8234
// You should have received a copy of the GNU General Public      
 
8235
// License along with this program; if not, write to the Free     
 
8236
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
8237
// MA  02111-1307  USA                                            
 
8238
 
 
8239
#ifndef __OptsParser_h__
 
8240
#define __OptsParser_h__
 
8241
 
 
8242
 
 
8243
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
8244
// This file is part of PUMA.
 
8245
// Copyright (C) 1999-2003  The PUMA developer team.
 
8246
//                                                                
 
8247
// This program is free software;  you can redistribute it and/or 
 
8248
// modify it under the terms of the GNU General Public License as 
 
8249
// published by the Free Software Foundation; either version 2 of 
 
8250
// the License, or (at your option) any later version.            
 
8251
//                                                                
 
8252
// This program is distributed in the hope that it will be useful,
 
8253
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
8254
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
8255
// GNU General Public License for more details.                   
 
8256
//                                                                
 
8257
// You should have received a copy of the GNU General Public      
 
8258
// License along with this program; if not, write to the Free     
 
8259
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
8260
// MA  02111-1307  USA                                            
 
8261
 
 
8262
#ifndef __SimpleParser_h__
 
8263
#define __SimpleParser_h__
 
8264
 
 
8265
 
 
8266
#line 23 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
8267
#include <vector>
 
8268
using namespace std;
 
8269
 
 
8270
namespace Puma {
 
8271
 
 
8272
 
 
8273
/** 
 
8274
 * Simple string parser. 
 
8275
 * \class SimpleParser SimpleParser.h Puma/common/SimpleParser.h
 
8276
 */
 
8277
 
 
8278
#line 8279 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8279
} // closed Puma
 
8280
class CCExprResolve;
 
8281
class CExprResolve;
 
8282
class WinIfExists;
 
8283
class WinImportHandler;
 
8284
class WinMacros;
 
8285
class WinAsm;
 
8286
class WinDeclSpecs;
 
8287
class WinMemberExplSpec;
 
8288
class WinTypeKeywords;
 
8289
class WinFriend;
 
8290
class ExtAC;
 
8291
class ExtACBuilderCoupling;
 
8292
class ExtACSyntaxCoupling;
 
8293
class ExtACTree;
 
8294
class ExtACKeywords;
 
8295
class ExtGnu;
 
8296
class PragmaOnceUnitState;
 
8297
class PragmaOnce;
 
8298
class CMatchSyntax;
 
8299
namespace Puma {
 
8300
 
 
8301
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
8302
class SimpleParser {
 
8303
#line 8304 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8304
  friend class ::CCExprResolve;
 
8305
  friend class ::CExprResolve;
 
8306
  friend class ::WinIfExists;
 
8307
  friend class ::WinImportHandler;
 
8308
  friend class ::WinMacros;
 
8309
  friend class ::WinAsm;
 
8310
  friend class ::WinDeclSpecs;
 
8311
  friend class ::WinMemberExplSpec;
 
8312
  friend class ::WinTypeKeywords;
 
8313
  friend class ::WinFriend;
 
8314
  friend class ::ExtAC;
 
8315
  friend class ::ExtACBuilderCoupling;
 
8316
  friend class ::ExtACSyntaxCoupling;
 
8317
  friend class ::ExtACTree;
 
8318
  friend class ::ExtACKeywords;
 
8319
  friend class ::ExtGnu;
 
8320
  friend class ::PragmaOnceUnitState;
 
8321
  friend class ::PragmaOnce;
 
8322
  friend class ::CMatchSyntax;
 
8323
 
 
8324
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
8325
 
 
8326
public:
 
8327
  /**
 
8328
   * Remove enclosing double-quotes from a string.
 
8329
   * \param str The string to strip.
 
8330
   * \return String without the enclosing double-quotes.
 
8331
   */
 
8332
  static string strip (const string& str);
 
8333
  /**
 
8334
   * Splits a given string into tokens recognized by the given delimiters.
 
8335
   * \param str The string to split.
 
8336
   * \param tokens A vector for the tokens.
 
8337
   * \param delimiters A string with the delimiters. Default is a space or tab.
 
8338
   * \return Number of recognized tokens.
 
8339
   */
 
8340
  static int tokenize (const string& str, vector<string>& tokens, const string& delimiters = " ");
 
8341
 
 
8342
private:
 
8343
  /**
 
8344
   * Get the position of the next token.
 
8345
   * \param line The string to tokenize.
 
8346
   * \param delimiters A string with the token delimiters.
 
8347
   * \param pos The current position in the string.
 
8348
   * \param lastPos The last position in the string.
 
8349
   * \return The position of the next token.
 
8350
   */
 
8351
  static string::size_type next (const string& line, const string& delimiters, string::size_type pos, string::size_type& lastPos);
 
8352
  /**
 
8353
   * Get the begin of the next token.
 
8354
   * \param line The string to tokenize.
 
8355
   * \param delimiters A string with the token delimiters.
 
8356
   * \param pos The current position in the string.
 
8357
   * \return The begin of the next token.
 
8358
   */
 
8359
  static string::size_type findBeginOfNextToken (const string& line, const string& delimiters, string::size_type pos);
 
8360
  /**
 
8361
   * Get the end of the next token.
 
8362
   * \param line The string to tokenize.
 
8363
   * \param delimiters A string with the token delimiters.
 
8364
   * \param lastPos The last position in the string, i.e. the begin of the next token.
 
8365
   * \return The end of the next token.
 
8366
   */
 
8367
  static string::size_type findEndOfNextToken (const string& line, const string& delimiters, string::size_type lastPos);
 
8368
public:
 
8369
  typedef AC::TLE __AttrTypes;
 
8370
  const char *__attr_name (unsigned i) const { return 0; }
 
8371
  const void *__attr (unsigned __i) const { return 0; }
 
8372
#line 76 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
8373
};
 
8374
 
 
8375
 
 
8376
} // namespace Puma
 
8377
 
 
8378
#endif /* __SimpleParser_h__ */
 
8379
 
 
8380
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
8381
using namespace std;
 
8382
 
 
8383
namespace Puma {
 
8384
 
 
8385
 
 
8386
/** \brief The %Options %Parser searches command line parameters for options and
 
8387
 *  handles their option arguments, if applicable.
 
8388
 */
 
8389
 
 
8390
#line 8391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8391
} // closed Puma
 
8392
class CCExprResolve;
 
8393
class CExprResolve;
 
8394
class WinIfExists;
 
8395
class WinImportHandler;
 
8396
class WinMacros;
 
8397
class WinAsm;
 
8398
class WinDeclSpecs;
 
8399
class WinMemberExplSpec;
 
8400
class WinTypeKeywords;
 
8401
class WinFriend;
 
8402
class ExtAC;
 
8403
class ExtACBuilderCoupling;
 
8404
class ExtACSyntaxCoupling;
 
8405
class ExtACTree;
 
8406
class ExtACKeywords;
 
8407
class ExtGnu;
 
8408
class PragmaOnceUnitState;
 
8409
class PragmaOnce;
 
8410
class CMatchSyntax;
 
8411
namespace Puma {
 
8412
 
 
8413
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
8414
class OptsParser : public SimpleParser {
 
8415
#line 8416 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8416
  friend class ::CCExprResolve;
 
8417
  friend class ::CExprResolve;
 
8418
  friend class ::WinIfExists;
 
8419
  friend class ::WinImportHandler;
 
8420
  friend class ::WinMacros;
 
8421
  friend class ::WinAsm;
 
8422
  friend class ::WinDeclSpecs;
 
8423
  friend class ::WinMemberExplSpec;
 
8424
  friend class ::WinTypeKeywords;
 
8425
  friend class ::WinFriend;
 
8426
  friend class ::ExtAC;
 
8427
  friend class ::ExtACBuilderCoupling;
 
8428
  friend class ::ExtACSyntaxCoupling;
 
8429
  friend class ::ExtACTree;
 
8430
  friend class ::ExtACKeywords;
 
8431
  friend class ::ExtGnu;
 
8432
  friend class ::PragmaOnceUnitState;
 
8433
  friend class ::PragmaOnce;
 
8434
  friend class ::CMatchSyntax;
 
8435
 
 
8436
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
8437
 
 
8438
  
 
8439
  
 
8440
  /** \brief Vector holding the commandline parameters. 
 
8441
   *  
 
8442
   *  This vector is filled in the constructor
 
8443
   */
 
8444
  vector<string> m_argv;
 
8445
 
 
8446
  /** \brief Position of current parameter analyzed by the 
 
8447
   *  options parser.
 
8448
   */
 
8449
  unsigned int m_curarg;
 
8450
  
 
8451
  /** \brief The increment added to m_curarg used to get to the next 
 
8452
   *  entry of m_argv which shall be analysed.
 
8453
   */
 
8454
  unsigned int m_tonext;
 
8455
  
 
8456
  /** \brief %Option number of currently processed element of m_argv
 
8457
   */
 
8458
  int m_number;
 
8459
  
 
8460
  /** \brief Name of current option
 
8461
   */
 
8462
  string m_opt;
 
8463
 
 
8464
  /** \brief Value of current option argument
 
8465
   */
 
8466
  string m_arg;
 
8467
  
 
8468
   
 
8469
public:
 
8470
  
 
8471
  /** \enum
 
8472
   *  Return codes for OptsParser::getOption() and OptsParser::getArgument()
 
8473
   */
 
8474
  enum {
 
8475
     NOARG =-4, /**< %Option has no argument */
 
8476
     ERR = -3, /**< Error when parsing option */
 
8477
     NOOPTION = -2, /**< Command line parameter is not an option */
 
8478
     UNKNOWN = -1, /**< Parameter is an unknown option */
 
8479
     FINISH = 0 /**< All options are handled */
 
8480
  };
 
8481
  
 
8482
  /** \enum
 
8483
   *  Type of argument associated to an option  
 
8484
   */
 
8485
  enum ArgType { 
 
8486
     AT_NONE = 0, /**< %Option receives no argument */
 
8487
     AT_MANDATORY = 1, /**< %Option requires an argument */
 
8488
     AT_OPTIONAL = 2 /**< %Option has optionally an argument */
 
8489
  };
 
8490
  
 
8491
  /** \struct
 
8492
   *  Type for specifying an array of options recognized by the %Option %Parser.
 
8493
   *  An array of this type has to be passed to the constructor OptsParser::OptsParser()
 
8494
   */
 
8495
  struct Option {
 
8496
#line 8497 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8497
  friend class ::CCExprResolve;
 
8498
  friend class ::CExprResolve;
 
8499
  friend class ::WinIfExists;
 
8500
  friend class ::WinImportHandler;
 
8501
  friend class ::WinMacros;
 
8502
  friend class ::WinAsm;
 
8503
  friend class ::WinDeclSpecs;
 
8504
  friend class ::WinMemberExplSpec;
 
8505
  friend class ::WinTypeKeywords;
 
8506
  friend class ::WinFriend;
 
8507
  friend class ::ExtAC;
 
8508
  friend class ::ExtACBuilderCoupling;
 
8509
  friend class ::ExtACSyntaxCoupling;
 
8510
  friend class ::ExtACTree;
 
8511
  friend class ::ExtACKeywords;
 
8512
  friend class ::ExtGnu;
 
8513
  friend class ::PragmaOnceUnitState;
 
8514
  friend class ::PragmaOnce;
 
8515
  friend class ::CMatchSyntax;
 
8516
 
 
8517
#line 91 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
8518
 
 
8519
    int number; /**< Number associated with this option */
 
8520
    const char *shortName; /**< Short name of this option. Should ideally not contain more than one character */
 
8521
    const char *longName; /**< Long namen of this option */
 
8522
    const char *desc; /**< Description of this option **/ 
 
8523
    ArgType argType; /**< Type of argument for this option */
 
8524
  public:
 
8525
  typedef AC::TL<int,AC::TL<const char *,AC::TL<const char *,AC::TL<const char *,AC::TL<Puma::OptsParser::ArgType,AC::TLE > > > > > __AttrTypes;
 
8526
  const char *__attr_name (unsigned i) const {
 
8527
    static const char *names[] = { "number", "shortName", "longName", "desc", "argType" }; return names[i];
 
8528
  }
 
8529
  const void *__attr (unsigned __i) const {
 
8530
    switch (__i) { case 0: return &number; case 1: return &shortName; case 2: return &longName; case 3: return &desc; case 4: return &argType; default: return 0; }
 
8531
  }
 
8532
#line 97 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
8533
};
 
8534
 
 
8535
private:
 
8536
  /** Pointer to array of available options. This value is set to the value of the 
 
8537
   * parameter passed to the constructor OptsParser::OptsParser()
 
8538
   */
 
8539
  const Option *m_opts;
 
8540
   
 
8541
public:
 
8542
  /** \brief Constructor of OptsParser
 
8543
   *  
 
8544
   *  \param argc Number of parameters to be analyzed
 
8545
   *  \param argv Parameters to be analyzed
 
8546
   *  \param opts Pointer to array of options which shall be
 
8547
   *              recognized by the options parser
 
8548
   *
 
8549
   */
 
8550
  OptsParser (int argc, char **argv, const Option *opts);
 
8551
  
 
8552
  /** \brief Constructor of OptsParser
 
8553
   *  
 
8554
   *  \param line Reference to string with parameters to analyse
 
8555
   *              The paramaters are extracted from the string by splitting it up 
 
8556
   *              into tokens at:
 
8557
   *               - space character
 
8558
   *               - tabs 
 
8559
   *               - newline
 
8560
   *               - carriage return
 
8561
   *  \param opts Pointer to array of options which shall be 
 
8562
   *              recognized by the options parser
 
8563
   */
 
8564
  OptsParser (const string &line, const Option *opts);
 
8565
 
 
8566
  
 
8567
  /** Get next parameter without modification. 
 
8568
   * No option parsing is done
 
8569
   *
 
8570
   * \return OptsParser::NOOPTION or OptsParser::FINISH 
 
8571
   */
 
8572
  int getRawOption ();
 
8573
  
 
8574
  /** \brief Get next option
 
8575
   *
 
8576
   * This function processes the next parameter passed to the constructor 
 
8577
   * OptsParser::OptsParser(). 
 
8578
   * That is, search for options and eventually process
 
8579
   * option and option arguement. 
 
8580
   *
 
8581
   * \return Number of option recognized by the options parser or
 
8582
   *         OptsParser::NOARG, OptsParser::ERR, OptsParser::NOOPTION,
 
8583
   *         OptsParser::UNKNOWN or OptsParser::FINISH.
 
8584
   *
 
8585
   */
 
8586
  int getOption ();
 
8587
  
 
8588
  /** \brief Get result of last processed parameter
 
8589
   *
 
8590
   *  The number returned by this function is identical to the number 
 
8591
   *  returned by the last call of OptsParser::getOption
 
8592
   *   
 
8593
   * \return Number of option recognized by the options parser or
 
8594
   *         OptsParser::NOARG, OptsParser::ERR, OptsParser::NOOPTION,
 
8595
   *         OptsParser::UNKNOWN or OptsParser::FINISH.
 
8596
   *
 
8597
   */
 
8598
  int getResult () const;
 
8599
  
 
8600
  /** \brief Get option argument of last processed parameter
 
8601
   *
 
8602
   *  This function returns the argument of the option processed during 
 
8603
   *  OptsParser::getOption. If the option does not provide any argument
 
8604
   *  the string will be empty.
 
8605
   *
 
8606
   *  If OptsParser::getOption or respectively OptsParser::getResult returns with 
 
8607
   *  OptsParser::NOOPTION this function (OptsParser::getArgument) returns the last processed parameter, 
 
8608
   *  which is no option, of course.
 
8609
   *
 
8610
   *  \return Argument of last processed parameter
 
8611
   */
 
8612
  const string &getArgument () const;
 
8613
  
 
8614
  /** \brief Get option name of last processed parameter
 
8615
   *
 
8616
   *  If the last processed parameter did not contain an option the string 
 
8617
   *  returned by this function is empty.
 
8618
   *
 
8619
   *  \return Name of last processed parameter
 
8620
   *
 
8621
   */
 
8622
  const string &getOptionName () const;
 
8623
  
 
8624
  /** \brief Get position of current argument
 
8625
   *
 
8626
   *  \return Position of currently processed parameter previously passed to OptsParser::OptsParser()
 
8627
   *
 
8628
   */
 
8629
  int getCurrentArgNum () const;
 
8630
  
 
8631
  /** \brief Get position of next argument
 
8632
   *
 
8633
   *  \return Position of next parameter which will be processed by the %Options %Parser
 
8634
   *
 
8635
   */
 
8636
  int getNextArgNum () const;
 
8637
 
 
8638
private:
 
8639
  /** Search for an option in m_argv at position m_curarg
 
8640
   *
 
8641
   *  \param arg Currently processed parameter 
 
8642
   */
 
8643
  const Option*  findOption(const string &arg, bool isLong);
 
8644
  
 
8645
  /** Process an option found by OptsParser::findOption(). 
 
8646
   */
 
8647
  bool processOption  (const string &arg, const Option* curOpt, bool isLong);
 
8648
public:
 
8649
  typedef AC::TL<std::vector< std::basic_string< char > >,AC::TL<unsigned int,AC::TL<unsigned int,AC::TL<int,AC::TL<std::basic_string< char >,AC::TL<std::basic_string< char >,AC::TL<const Puma::OptsParser::Option *,AC::TLE > > > > > > > __AttrTypes;
 
8650
  const char *__attr_name (unsigned i) const {
 
8651
    static const char *names[] = { "m_argv", "m_curarg", "m_tonext", "m_number", "m_opt", "m_arg", "m_opts" }; return names[i];
 
8652
  }
 
8653
  const void *__attr (unsigned __i) const {
 
8654
    switch (__i) { case 1: return &m_argv; case 2: return &m_curarg; case 3: return &m_tonext; case 4: return &m_number; case 5: return &m_opt; case 6: return &m_arg; case 15: return &m_opts; default: return 0; }
 
8655
  }
 
8656
#line 212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
8657
};
 
8658
 
 
8659
 
 
8660
} // namespace Puma
 
8661
 
 
8662
#endif /* __OptsParser_h__ */
 
8663
 
 
8664
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
8665
using namespace std;
 
8666
 
 
8667
namespace Puma {
 
8668
 
 
8669
 
 
8670
/** \class Config Config.h Puma/Config.h
 
8671
 *  %Puma configuration information. Can read the 
 
8672
 *  configuration from file or command line. */
 
8673
 
 
8674
#line 8675 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8675
} // closed Puma
 
8676
class CCExprResolve;
 
8677
class CExprResolve;
 
8678
class WinIfExists;
 
8679
class WinImportHandler;
 
8680
class WinMacros;
 
8681
class WinAsm;
 
8682
class WinDeclSpecs;
 
8683
class WinMemberExplSpec;
 
8684
class WinTypeKeywords;
 
8685
class WinFriend;
 
8686
class ExtAC;
 
8687
class ExtACBuilderCoupling;
 
8688
class ExtACSyntaxCoupling;
 
8689
class ExtACTree;
 
8690
class ExtACKeywords;
 
8691
class ExtGnu;
 
8692
class PragmaOnceUnitState;
 
8693
class PragmaOnce;
 
8694
class CMatchSyntax;
 
8695
namespace Puma {
 
8696
 
 
8697
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
8698
class Config {
 
8699
#line 8700 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8700
  friend class ::CCExprResolve;
 
8701
  friend class ::CExprResolve;
 
8702
  friend class ::WinIfExists;
 
8703
  friend class ::WinImportHandler;
 
8704
  friend class ::WinMacros;
 
8705
  friend class ::WinAsm;
 
8706
  friend class ::WinDeclSpecs;
 
8707
  friend class ::WinMemberExplSpec;
 
8708
  friend class ::WinTypeKeywords;
 
8709
  friend class ::WinFriend;
 
8710
  friend class ::ExtAC;
 
8711
  friend class ::ExtACBuilderCoupling;
 
8712
  friend class ::ExtACSyntaxCoupling;
 
8713
  friend class ::ExtACTree;
 
8714
  friend class ::ExtACKeywords;
 
8715
  friend class ::ExtGnu;
 
8716
  friend class ::PragmaOnceUnitState;
 
8717
  friend class ::PragmaOnce;
 
8718
  friend class ::CMatchSyntax;
 
8719
 
 
8720
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
8721
 
 
8722
  Flags _flags;
 
8723
  ErrorStream &_err;
 
8724
  Array<const ConfOption *> _options;
 
8725
  
 
8726
public:
 
8727
  enum OPTIONS {
 
8728
    PRE_ASSERT = 1,
 
8729
    PRE_DEFINE, 
 
8730
    PRE_UNDEFINE, 
 
8731
    PRE_LOCK_MACRO,
 
8732
    PRE_INCLUDE,
 
8733
    CFG_FILE, 
 
8734
    PROJ_PATH, 
 
8735
    PROJ_DESTINATION,
 
8736
    SET_SUFFIX, 
 
8737
    SET_EXTENSION, 
 
8738
    SET_WRITE_PROTECTED,
 
8739
    SET_OPTION, 
 
8740
    SET_OPTION_ARG
 
8741
  };
 
8742
   
 
8743
public:
 
8744
  Config (ErrorStream &);
 
8745
  Config (const Config &);
 
8746
  ~Config ();
 
8747
  
 
8748
  // read config file
 
8749
  Config (ErrorStream &, const char *);
 
8750
  // read command line
 
8751
  Config (ErrorStream &, int &, char **&);
 
8752
  // read config file and command line
 
8753
  Config (ErrorStream &, const char *, int &, char **&);
 
8754
        
 
8755
  // join with another configuration
 
8756
  void Join (const Config &);
 
8757
 
 
8758
  // evaluate file, if file not given read from $PUMA_CONFIG
 
8759
  // or /etc/puma.config
 
8760
  void Read (const char * = (const char *)0);
 
8761
  // evaluate command line
 
8762
  void Read (int &, char **&);
 
8763
 
 
8764
  // add options to configuration
 
8765
  void Add (const ConfOption *);
 
8766
  void Add (const char *);
 
8767
  void Add (const char *, const char *);
 
8768
  void Add (const char *, const char *, const char *);
 
8769
 
 
8770
  // get options
 
8771
  unsigned Options () const;
 
8772
  const ConfOption *Option (unsigned) const;
 
8773
  const ConfOption *Option (const char *) const;
 
8774
 
 
8775
  Flags FlagTable () const;
 
8776
  
 
8777
private:
 
8778
  bool Valid (const char *, const char * = (const char *)0) const;
 
8779
 
 
8780
  bool Process (OptsParser&, bool unescape = false);
 
8781
  bool ProcessAssert (const string&);
 
8782
  bool ProcessDefine (const string&);
 
8783
  bool ProcessLockMacro (const string&);
 
8784
  bool ProcessUndefine (const string&);
 
8785
  bool ProcessConfigFile (const string&,const string&);
 
8786
  bool ProcessArgument (const string&,const string&);
 
8787
  bool ProcessPathArgument (const string&,const string&);
 
8788
 
 
8789
  string Unescape(const string&);
 
8790
public:
 
8791
  typedef AC::TL<Puma::Flags,AC::TL<Puma::ErrorStream &,AC::TL<Puma::Array< const Puma::ConfOption * >,AC::TLE > > > __AttrTypes;
 
8792
  const char *__attr_name (unsigned i) const {
 
8793
    static const char *names[] = { "_flags", "_err", "_options" }; return names[i];
 
8794
  }
 
8795
  const void *__attr (unsigned __i) const {
 
8796
    switch (__i) { case 0: return &_flags; case 1: return &_err; case 3: return &_options; default: return 0; }
 
8797
  }
 
8798
#line 107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
8799
};
 
8800
 
 
8801
inline Config::Config (ErrorStream &e) : _err (e)
 
8802
 {}
 
8803
inline Config::Config (const Config &c) : _err (c._err)
 
8804
 { Join (c); }
 
8805
  
 
8806
inline Config::Config (ErrorStream &e, const char *file) : _err (e)
 
8807
 { Read (file); }
 
8808
inline Config::Config (ErrorStream &e, int &argc, char **&argv) : _err (e)
 
8809
 { Read (argc, argv); }
 
8810
inline Config::Config (ErrorStream &e, const char *file, int &argc, char **&argv) : _err (e)
 
8811
 { Read (file); Read (argc, argv); }
 
8812
 
 
8813
inline Config::~Config  ()
 
8814
 { for (unsigned i = 0; i < Options (); i++)
 
8815
     delete (ConfOption *) Option (i);
 
8816
 }
 
8817
 
 
8818
inline void Config::Add (const ConfOption *o) 
 
8819
 { _options.append (o); }
 
8820
inline void Config::Add (const char *n)
 
8821
 { Add (new ConfOption (n)); }
 
8822
inline void Config::Add (const char *n, const char *a1)
 
8823
 { Add (new ConfOption (n, a1)); }
 
8824
inline void Config::Add (const char *n, const char *a1, const char *a2)
 
8825
 { Add (new ConfOption (n, a1, a2)); }
 
8826
 
 
8827
inline unsigned Config::Options () const
 
8828
 { return _options.length (); }
 
8829
inline const ConfOption *Config::Option (unsigned i) const
 
8830
 { return _options.lookup (i); }
 
8831
 
 
8832
inline Flags Config::FlagTable () const
 
8833
 { return _flags; }
 
8834
 
 
8835
 
 
8836
} // namespace Puma
 
8837
 
 
8838
#endif /* __Config_h__ */
 
8839
 
 
8840
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
8841
// This file is part of PUMA.
 
8842
// Copyright (C) 1999-2003  The PUMA developer team.
 
8843
//                                                                
 
8844
// This program is free software;  you can redistribute it and/or 
 
8845
// modify it under the terms of the GNU General Public License as 
 
8846
// published by the Free Software Foundation; either version 2 of 
 
8847
// the License, or (at your option) any later version.            
 
8848
//                                                                
 
8849
// This program is distributed in the hope that it will be useful,
 
8850
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
8851
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
8852
// GNU General Public License for more details.                   
 
8853
//                                                                
 
8854
// You should have received a copy of the GNU General Public      
 
8855
// License along with this program; if not, write to the Free     
 
8856
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
8857
// MA  02111-1307  USA                                            
 
8858
 
 
8859
#ifndef __project__
 
8860
#define __project__
 
8861
 
 
8862
// The basic project is a set of source directories. It provides 
 
8863
// methods for searching and writing files. 
 
8864
 
 
8865
 
 
8866
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
8867
// This file is part of PUMA.
 
8868
// Copyright (C) 1999-2003  The PUMA developer team.
 
8869
//                                                                
 
8870
// This program is free software;  you can redistribute it and/or 
 
8871
// modify it under the terms of the GNU General Public License as 
 
8872
// published by the Free Software Foundation; either version 2 of 
 
8873
// the License, or (at your option) any later version.            
 
8874
//                                                                
 
8875
// This program is distributed in the hope that it will be useful,
 
8876
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
8877
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
8878
// GNU General Public License for more details.                   
 
8879
//                                                                
 
8880
// You should have received a copy of the GNU General Public      
 
8881
// License along with this program; if not, write to the Free     
 
8882
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
8883
// MA  02111-1307  USA                                            
 
8884
 
 
8885
#ifndef __path_manager__
 
8886
#define __path_manager__
 
8887
 
 
8888
// Manages directories and methods to access the files in it.
 
8889
 
 
8890
 
 
8891
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathInfo.h"
 
8892
// This file is part of PUMA.
 
8893
// Copyright (C) 1999-2003  The PUMA developer team.
 
8894
//                                                                
 
8895
// This program is free software;  you can redistribute it and/or 
 
8896
// modify it under the terms of the GNU General Public License as 
 
8897
// published by the Free Software Foundation; either version 2 of 
 
8898
// the License, or (at your option) any later version.            
 
8899
//                                                                
 
8900
// This program is distributed in the hope that it will be useful,
 
8901
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
8902
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
8903
// GNU General Public License for more details.                   
 
8904
//                                                                
 
8905
// You should have received a copy of the GNU General Public      
 
8906
// License along with this program; if not, write to the Free     
 
8907
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
8908
// MA  02111-1307  USA                                            
 
8909
 
 
8910
#ifndef __path_info__
 
8911
#define __path_info__
 
8912
 
 
8913
// A path information object consists of a source and optionally
 
8914
// a destination path.
 
8915
 
 
8916
namespace Puma {
 
8917
 
 
8918
 
 
8919
 
 
8920
#line 8921 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8921
} // closed Puma
 
8922
class CCExprResolve;
 
8923
class CExprResolve;
 
8924
class WinIfExists;
 
8925
class WinImportHandler;
 
8926
class WinMacros;
 
8927
class WinAsm;
 
8928
class WinDeclSpecs;
 
8929
class WinMemberExplSpec;
 
8930
class WinTypeKeywords;
 
8931
class WinFriend;
 
8932
class ExtAC;
 
8933
class ExtACBuilderCoupling;
 
8934
class ExtACSyntaxCoupling;
 
8935
class ExtACTree;
 
8936
class ExtACKeywords;
 
8937
class ExtGnu;
 
8938
class PragmaOnceUnitState;
 
8939
class PragmaOnce;
 
8940
class CMatchSyntax;
 
8941
namespace Puma {
 
8942
 
 
8943
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathInfo.h"
 
8944
class PathInfo {
 
8945
#line 8946 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
8946
  friend class ::CCExprResolve;
 
8947
  friend class ::CExprResolve;
 
8948
  friend class ::WinIfExists;
 
8949
  friend class ::WinImportHandler;
 
8950
  friend class ::WinMacros;
 
8951
  friend class ::WinAsm;
 
8952
  friend class ::WinDeclSpecs;
 
8953
  friend class ::WinMemberExplSpec;
 
8954
  friend class ::WinTypeKeywords;
 
8955
  friend class ::WinFriend;
 
8956
  friend class ::ExtAC;
 
8957
  friend class ::ExtACBuilderCoupling;
 
8958
  friend class ::ExtACSyntaxCoupling;
 
8959
  friend class ::ExtACTree;
 
8960
  friend class ::ExtACKeywords;
 
8961
  friend class ::ExtGnu;
 
8962
  friend class ::PragmaOnceUnitState;
 
8963
  friend class ::PragmaOnce;
 
8964
  friend class ::CMatchSyntax;
 
8965
 
 
8966
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathInfo.h"
 
8967
 
 
8968
  const char *_src;        // Source path.
 
8969
  const char *_dest;        // Destination path.
 
8970
        
 
8971
public:
 
8972
  PathInfo () : _src ((const char*) 0), _dest ((const char*) 0) {}
 
8973
  PathInfo (const PathInfo &);
 
8974
  ~PathInfo ();
 
8975
        
 
8976
  // Needed for class Array.
 
8977
  PathInfo &operator =(const PathInfo &);
 
8978
 
 
8979
  // Set or get the source path.
 
8980
  void src (const char *);
 
8981
  const char *src () const { return _src; }
 
8982
        
 
8983
  // Set or get the destination path.
 
8984
  void dest (const char *);
 
8985
  const char *dest () const { return _dest; }
 
8986
public:
 
8987
  typedef AC::TL<const char *,AC::TL<const char *,AC::TLE > > __AttrTypes;
 
8988
  const char *__attr_name (unsigned i) const {
 
8989
    static const char *names[] = { "_src", "_dest" }; return names[i];
 
8990
  }
 
8991
  const void *__attr (unsigned __i) const {
 
8992
    switch (__i) { case 0: return &_src; case 1: return &_dest; default: return 0; }
 
8993
  }
 
8994
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathInfo.h"
 
8995
};
 
8996
 
 
8997
 
 
8998
} // namespace Puma
 
8999
 
 
9000
#endif /* __path_info__ */
 
9001
 
 
9002
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
9003
// This file is part of PUMA.
 
9004
// Copyright (C) 1999-2003  The PUMA developer team.
 
9005
//                                                                
 
9006
// This program is free software;  you can redistribute it and/or 
 
9007
// modify it under the terms of the GNU General Public License as 
 
9008
// published by the Free Software Foundation; either version 2 of 
 
9009
// the License, or (at your option) any later version.            
 
9010
//                                                                
 
9011
// This program is distributed in the hope that it will be useful,
 
9012
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
9013
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
9014
// GNU General Public License for more details.                   
 
9015
//                                                                
 
9016
// You should have received a copy of the GNU General Public      
 
9017
// License along with this program; if not, write to the Free     
 
9018
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
9019
// MA  02111-1307  USA                                            
 
9020
 
 
9021
#ifndef __path_iterator__
 
9022
#define __path_iterator__
 
9023
 
 
9024
// A path iterator is used to iterate the contents of the paths
 
9025
// a project is managing. But only files matching a given pattern 
 
9026
// are iterated. 
 
9027
 
 
9028
 
 
9029
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
9030
// This file is part of PUMA.
 
9031
// Copyright (C) 1999-2003  The PUMA developer team.
 
9032
//                                                                
 
9033
// This program is free software;  you can redistribute it and/or 
 
9034
// modify it under the terms of the GNU General Public License as 
 
9035
// published by the Free Software Foundation; either version 2 of 
 
9036
// the License, or (at your option) any later version.            
 
9037
//                                                                
 
9038
// This program is distributed in the hope that it will be useful,
 
9039
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
9040
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
9041
// GNU General Public License for more details.                   
 
9042
//                                                                
 
9043
// You should have received a copy of the GNU General Public      
 
9044
// License along with this program; if not, write to the Free     
 
9045
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
9046
// MA  02111-1307  USA                                            
 
9047
 
 
9048
#ifndef __project_file__
 
9049
#define __project_file__
 
9050
 
 
9051
#include <map>
 
9052
using std::map;
 
9053
 
 
9054
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
9055
using std::string;
 
9056
 
 
9057
 
 
9058
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
9059
namespace Puma {
 
9060
 
 
9061
// the project file abstraction is used to store all filenames relevant
 
9062
// for a specific file that is managed by Puma.
 
9063
 
 
9064
 
 
9065
#line 9066 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9066
} // closed Puma
 
9067
class CCExprResolve;
 
9068
class CExprResolve;
 
9069
class WinIfExists;
 
9070
class WinImportHandler;
 
9071
class WinMacros;
 
9072
class WinAsm;
 
9073
class WinDeclSpecs;
 
9074
class WinMemberExplSpec;
 
9075
class WinTypeKeywords;
 
9076
class WinFriend;
 
9077
class ExtAC;
 
9078
class ExtACBuilderCoupling;
 
9079
class ExtACSyntaxCoupling;
 
9080
class ExtACTree;
 
9081
class ExtACKeywords;
 
9082
class ExtGnu;
 
9083
class PragmaOnceUnitState;
 
9084
class PragmaOnce;
 
9085
class CMatchSyntax;
 
9086
namespace Puma {
 
9087
 
 
9088
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
9089
class ProjectFile {
 
9090
#line 9091 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9091
  friend class ::CCExprResolve;
 
9092
  friend class ::CExprResolve;
 
9093
  friend class ::WinIfExists;
 
9094
  friend class ::WinImportHandler;
 
9095
  friend class ::WinMacros;
 
9096
  friend class ::WinAsm;
 
9097
  friend class ::WinDeclSpecs;
 
9098
  friend class ::WinMemberExplSpec;
 
9099
  friend class ::WinTypeKeywords;
 
9100
  friend class ::WinFriend;
 
9101
  friend class ::ExtAC;
 
9102
  friend class ::ExtACBuilderCoupling;
 
9103
  friend class ::ExtACSyntaxCoupling;
 
9104
  friend class ::ExtACTree;
 
9105
  friend class ::ExtACKeywords;
 
9106
  friend class ::ExtGnu;
 
9107
  friend class ::PragmaOnceUnitState;
 
9108
  friend class ::PragmaOnce;
 
9109
  friend class ::CMatchSyntax;
 
9110
 
 
9111
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
9112
 
 
9113
  Filename _nick_name;
 
9114
  Filename _dest_path;
 
9115
public:  
 
9116
  ProjectFile (const Filename &nn) : _nick_name (nn) {}
 
9117
  ProjectFile (const Filename &nn, const Filename &dp) :
 
9118
    _nick_name (nn), _dest_path (dp) {}
 
9119
  void dest (const Filename &dp) { _dest_path = dp; }
 
9120
  Filename name () const { return _nick_name; }
 
9121
  Filename dest () const {
 
9122
    assert (_dest_path.is_defined ());
 
9123
    return _dest_path;
 
9124
  }
 
9125
public:
 
9126
  typedef AC::TL<Puma::Filename,AC::TL<Puma::Filename,AC::TLE > > __AttrTypes;
 
9127
  const char *__attr_name (unsigned i) const {
 
9128
    static const char *names[] = { "_nick_name", "_dest_path" }; return names[i];
 
9129
  }
 
9130
  const void *__attr (unsigned __i) const {
 
9131
    switch (__i) { case 0: return &_nick_name; case 1: return &_dest_path; default: return 0; }
 
9132
  }
 
9133
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
9134
};
 
9135
 
 
9136
typedef map<string, ProjectFile> PFMap;
 
9137
typedef PFMap::value_type PFMPair;
 
9138
typedef PFMap::const_iterator PFMConstIter;
 
9139
 
 
9140
} // namespace Puma
 
9141
 
 
9142
#endif // __project_file__
 
9143
 
 
9144
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
9145
namespace Puma {
 
9146
 
 
9147
class PathManager;
 
9148
class RegComp;
 
9149
 
 
9150
 
 
9151
#line 9152 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9152
} // closed Puma
 
9153
class CCExprResolve;
 
9154
class CExprResolve;
 
9155
class WinIfExists;
 
9156
class WinImportHandler;
 
9157
class WinMacros;
 
9158
class WinAsm;
 
9159
class WinDeclSpecs;
 
9160
class WinMemberExplSpec;
 
9161
class WinTypeKeywords;
 
9162
class WinFriend;
 
9163
class ExtAC;
 
9164
class ExtACBuilderCoupling;
 
9165
class ExtACSyntaxCoupling;
 
9166
class ExtACTree;
 
9167
class ExtACKeywords;
 
9168
class ExtGnu;
 
9169
class PragmaOnceUnitState;
 
9170
class PragmaOnce;
 
9171
class CMatchSyntax;
 
9172
namespace Puma {
 
9173
 
 
9174
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
9175
class PathIterator : public PFMConstIter {
 
9176
#line 9177 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9177
  friend class ::CCExprResolve;
 
9178
  friend class ::CExprResolve;
 
9179
  friend class ::WinIfExists;
 
9180
  friend class ::WinImportHandler;
 
9181
  friend class ::WinMacros;
 
9182
  friend class ::WinAsm;
 
9183
  friend class ::WinDeclSpecs;
 
9184
  friend class ::WinMemberExplSpec;
 
9185
  friend class ::WinTypeKeywords;
 
9186
  friend class ::WinFriend;
 
9187
  friend class ::ExtAC;
 
9188
  friend class ::ExtACBuilderCoupling;
 
9189
  friend class ::ExtACSyntaxCoupling;
 
9190
  friend class ::ExtACTree;
 
9191
  friend class ::ExtACKeywords;
 
9192
  friend class ::ExtGnu;
 
9193
  friend class ::PragmaOnceUnitState;
 
9194
  friend class ::PragmaOnce;
 
9195
  friend class ::CMatchSyntax;
 
9196
 
 
9197
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
9198
 
 
9199
  friend class PathManager;
 
9200
 
 
9201
  RegComp *_regexp;  // Search pattern.
 
9202
  bool _in_use;
 
9203
 
 
9204
public:
 
9205
  PathIterator (const char *);     // Expects a regular expression.
 
9206
  ~PathIterator ();                // for the files to match.
 
9207
 
 
9208
  void pattern (const char *);     // Set the search pattern.
 
9209
  void init (const PFMConstIter &begin);
 
9210
  bool in_use () const { return _in_use; }
 
9211
  void done () { _in_use = false; }
 
9212
 
 
9213
  // retrieve information about the currently referenced ProjectFile
 
9214
  const char *file () const;
 
9215
  const char *dest () const;
 
9216
public:
 
9217
  typedef AC::TL<Puma::RegComp *,AC::TL<bool,AC::TLE > > __AttrTypes;
 
9218
  const char *__attr_name (unsigned i) const {
 
9219
    static const char *names[] = { "_regexp", "_in_use" }; return names[i];
 
9220
  }
 
9221
  const void *__attr (unsigned __i) const {
 
9222
    switch (__i) { case 0: return &_regexp; case 1: return &_in_use; default: return 0; }
 
9223
  }
 
9224
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
9225
};
 
9226
 
 
9227
} // namespace Puma
 
9228
 
 
9229
#endif /* __path_iterator__ */
 
9230
 
 
9231
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
9232
namespace Puma {
 
9233
 
 
9234
class RegComp;
 
9235
class Config;
 
9236
class Unit;
 
9237
 
 
9238
 
 
9239
#line 9240 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9240
} // closed Puma
 
9241
class CCExprResolve;
 
9242
class CExprResolve;
 
9243
class WinIfExists;
 
9244
class WinImportHandler;
 
9245
class WinMacros;
 
9246
class WinAsm;
 
9247
class WinDeclSpecs;
 
9248
class WinMemberExplSpec;
 
9249
class WinTypeKeywords;
 
9250
class WinFriend;
 
9251
class ExtAC;
 
9252
class ExtACBuilderCoupling;
 
9253
class ExtACSyntaxCoupling;
 
9254
class ExtACTree;
 
9255
class ExtACKeywords;
 
9256
class ExtGnu;
 
9257
class PragmaOnceUnitState;
 
9258
class PragmaOnce;
 
9259
class CMatchSyntax;
 
9260
namespace Puma {
 
9261
 
 
9262
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
9263
class PathManager {
 
9264
#line 9265 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9265
  friend class ::CCExprResolve;
 
9266
  friend class ::CExprResolve;
 
9267
  friend class ::WinIfExists;
 
9268
  friend class ::WinImportHandler;
 
9269
  friend class ::WinMacros;
 
9270
  friend class ::WinAsm;
 
9271
  friend class ::WinDeclSpecs;
 
9272
  friend class ::WinMemberExplSpec;
 
9273
  friend class ::WinTypeKeywords;
 
9274
  friend class ::WinFriend;
 
9275
  friend class ::ExtAC;
 
9276
  friend class ::ExtACBuilderCoupling;
 
9277
  friend class ::ExtACSyntaxCoupling;
 
9278
  friend class ::ExtACTree;
 
9279
  friend class ::ExtACKeywords;
 
9280
  friend class ::ExtGnu;
 
9281
  friend class ::PragmaOnceUnitState;
 
9282
  friend class ::PragmaOnce;
 
9283
  friend class ::CMatchSyntax;
 
9284
 
 
9285
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
9286
 
 
9287
  ErrorStream     *_err;
 
9288
  Array<PathInfo>  _paths;     // List of directories path.
 
9289
  Array<RegComp*>  _protected; // List of regular patterns specifying 
 
9290
                               // protected paths.
 
9291
  PFMap _files;                // Maps the canonical filename of a project
 
9292
                               // to its related information
 
9293
 
 
9294
  // find all files of a directory tree and add them to _files
 
9295
  void traverse (const char *path);
 
9296
 
 
9297
  // find the canonical filename representation for a file
 
9298
  bool canonFilename (Filename name, Filename &abs_name) const;
 
9299
  
 
9300
  // Add a new file to the project file list
 
9301
  PFMConstIter addFile (const ProjectFile &file);
 
9302
 
 
9303
protected:
 
9304
  // Get the destination directory for a given source directory.
 
9305
  const char *getDestination (Filename file, ostream * = 0) const;
 
9306
        
 
9307
  // Called for every matched file.
 
9308
  virtual void action (PathIterator &) {}
 
9309
        
 
9310
  // Add the separator '/' to the copy of the given string.
 
9311
  char *addSeparator (const char *) const;
 
9312
 
 
9313
public:
 
9314
  PathManager (ErrorStream &e) : _err (&e) {} 
 
9315
  // Copy-constructor.
 
9316
  PathManager (PathManager &pm) { _err = pm._err; join (pm); }
 
9317
  virtual ~PathManager ();
 
9318
 
 
9319
  // Start the globbing. Let call action for every match.
 
9320
  void glob (char *pattern = (char*) 0);
 
9321
 
 
9322
  // Iterate the contents of the paths.
 
9323
  const char *iterate (PathIterator &) const;
 
9324
        
 
9325
  // Add a source and destination directories pair.
 
9326
  virtual void addPath (const char *, const char * = (const char*) 0);
 
9327
 
 
9328
  // Add a new file to the project file list
 
9329
  PFMConstIter addFile (Filename name);
 
9330
 
 
9331
  // Add a new file to the project file list with destination path
 
9332
  PFMConstIter addFile (Filename name, Filename dest);
 
9333
 
 
9334
  // search an absolute file name in the project tree
 
9335
  bool lookupFile (Filename abs_name, PFMConstIter &iter) const;
 
9336
 
 
9337
  // Set the destination directory of the given source directory.
 
9338
  void setDest (const char *, const char *);
 
9339
 
 
9340
  // Add a protected-path pattern.
 
9341
  void protect (const char *);
 
9342
 
 
9343
  // Get path information.
 
9344
  long numPaths () const { return _paths.length (); }
 
9345
  long numProts () const { return _protected.length (); }
 
9346
  const char *src (long pos) const { return _paths.lookup (pos).src (); }
 
9347
  const char *dest (long pos) const { return _paths.lookup (pos).dest (); }
 
9348
  RegComp *prot (long pos) const { return _protected.lookup (pos); }
 
9349
 
 
9350
  // Return true if the given file or path is protected.
 
9351
  bool isProtected (const char *file) const;
 
9352
 
 
9353
  // checks if a give file (by name) is a registered file of this path manager
 
9354
  // In case of success (found!) the an iterator is returned, which can be
 
9355
  // used to access more information about the file.
 
9356
  bool isBelow (const char *file, PFMConstIter &iter) const;
 
9357
 
 
9358
  // Returns true if the given file is registered with this path manager
 
9359
  virtual bool isBelow (const char *file) const;
 
9360
 
 
9361
  // Configure the project from the command line or a file.
 
9362
  virtual void configure (const Config &);
 
9363
 
 
9364
  // Join the paths of the given manager with the paths 
 
9365
  // of this path manager.
 
9366
  virtual void join (PathManager &);
 
9367
        
 
9368
  // Get the error stream object.
 
9369
  ErrorStream &err () const { return *_err; }
 
9370
 
 
9371
  // Get the path of a file in the destination directory.
 
9372
  bool getDestinationPath (const char *filename, ostream &out) const;
 
9373
        
 
9374
public:
 
9375
  typedef AC::TL<Puma::ErrorStream *,AC::TL<Puma::Array< Puma::PathInfo >,AC::TL<Puma::Array< Puma::RegComp * >,AC::TL<std::map< std::basic_string< char >,Puma::ProjectFile >,AC::TLE > > > > __AttrTypes;
 
9376
  const char *__attr_name (unsigned i) const {
 
9377
    static const char *names[] = { "_err", "_paths", "_protected", "_files" }; return names[i];
 
9378
  }
 
9379
  const void *__attr (unsigned __i) const {
 
9380
    switch (__i) { case 0: return &_err; case 2: return &_paths; case 4: return &_protected; case 5: return &_files; default: return 0; }
 
9381
  }
 
9382
#line 125 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
9383
};
 
9384
 
 
9385
inline bool PathManager::isBelow (const char *file) const { 
 
9386
  PFMConstIter iter;
 
9387
  return isBelow (file, iter);
 
9388
}
 
9389
 
 
9390
 
 
9391
} // namespace Puma
 
9392
 
 
9393
#endif /* __path_manager__ */
 
9394
 
 
9395
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9396
 
 
9397
#line 9398 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9398
 
 
9399
#ifndef __ac_fwd_PragmaOnceUnitState__
 
9400
#define __ac_fwd_PragmaOnceUnitState__
 
9401
class PragmaOnceUnitState;
 
9402
namespace AC {
 
9403
  template <class JoinPoint>
 
9404
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp);
 
9405
  template <class JoinPoint>
 
9406
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after (JoinPoint *tjp);
 
9407
}
 
9408
#endif
 
9409
 
 
9410
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
9411
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
9412
#endif
 
9413
 
 
9414
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9415
// This file is part of PUMA.
 
9416
// Copyright (C) 1999-2003  The PUMA developer team.
 
9417
//                                                                
 
9418
// This program is free software;  you can redistribute it and/or 
 
9419
// modify it under the terms of the GNU General Public License as 
 
9420
// published by the Free Software Foundation; either version 2 of 
 
9421
// the License, or (at your option) any later version.            
 
9422
//                                                                
 
9423
// This program is distributed in the hope that it will be useful,
 
9424
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
9425
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
9426
// GNU General Public License for more details.                   
 
9427
//                                                                
 
9428
// You should have received a copy of the GNU General Public      
 
9429
// License along with this program; if not, write to the Free     
 
9430
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
9431
// MA  02111-1307  USA                                            
 
9432
 
 
9433
#ifndef __UnitManager__
 
9434
#define __UnitManager__
 
9435
 
 
9436
// Class UnitManager helps you to have control of all units built.
 
9437
 
 
9438
 
 
9439
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9440
#include <list>
 
9441
 
 
9442
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9443
using namespace std;
 
9444
 
 
9445
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9446
namespace Puma {
 
9447
 
 
9448
 
 
9449
class Unit;
 
9450
class Source;
 
9451
class Tokenizer;
 
9452
 
 
9453
 
 
9454
#line 9455 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9455
} // closed Puma
 
9456
class CCExprResolve;
 
9457
class CExprResolve;
 
9458
class WinIfExists;
 
9459
class WinImportHandler;
 
9460
class WinMacros;
 
9461
class WinAsm;
 
9462
class WinDeclSpecs;
 
9463
class WinMemberExplSpec;
 
9464
class WinTypeKeywords;
 
9465
class WinFriend;
 
9466
class ExtAC;
 
9467
class ExtACBuilderCoupling;
 
9468
class ExtACSyntaxCoupling;
 
9469
class ExtACTree;
 
9470
class ExtACKeywords;
 
9471
class ExtGnu;
 
9472
class PragmaOnceUnitState;
 
9473
class PragmaOnce;
 
9474
class CMatchSyntax;
 
9475
namespace Puma {
 
9476
 
 
9477
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9478
class UnitManager {
 
9479
#line 9480 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9480
  friend class ::CCExprResolve;
 
9481
  friend class ::CExprResolve;
 
9482
  friend class ::WinIfExists;
 
9483
  friend class ::WinImportHandler;
 
9484
  friend class ::WinMacros;
 
9485
  friend class ::WinAsm;
 
9486
  friend class ::WinDeclSpecs;
 
9487
  friend class ::WinMemberExplSpec;
 
9488
  friend class ::WinTypeKeywords;
 
9489
  friend class ::WinFriend;
 
9490
  friend class ::ExtAC;
 
9491
  friend class ::ExtACBuilderCoupling;
 
9492
  friend class ::ExtACSyntaxCoupling;
 
9493
  friend class ::ExtACTree;
 
9494
  friend class ::ExtACKeywords;
 
9495
  friend class ::ExtGnu;
 
9496
  friend class ::PragmaOnceUnitState;
 
9497
  friend class ::PragmaOnce;
 
9498
  friend class ::CMatchSyntax;
 
9499
 
 
9500
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9501
 
 
9502
public:
 
9503
  typedef map<string, Unit*> UMap;
 
9504
private:
 
9505
  ErrorStream *_err;        // For error messages.
 
9506
  list<Unit*> _nonames;     // Noname units list.
 
9507
  mutable UMap _umap;       // Named units, map supports fast lookup by name
 
9508
  typedef UMap::value_type UMapPair;
 
9509
  Tokenizer *_tokenizer;    // File scanner.
 
9510
 
 
9511
public:
 
9512
  UnitManager (ErrorStream &err) : _err (&err), _tokenizer (0) {}
 
9513
        
 
9514
  // Destructor: Delete all units.
 
9515
  virtual ~UnitManager ();
 
9516
        
 
9517
  // Get the unit hash table.
 
9518
  UMap &getTable () const { return _umap; }
 
9519
  typedef UMap::iterator UMapIter;
 
9520
        
 
9521
  // Get/Set the file scanner that is used by newUnit
 
9522
  Tokenizer *tokenizer () const { return _tokenizer; }
 
9523
  void tokenizer (Tokenizer *t) { _tokenizer = t; }
 
9524
 
 
9525
  // Add a unit to manager.
 
9526
  void addUnit (Unit *unit);
 
9527
        
 
9528
  // Remove (and destroy) a unit from hash table. If the name
 
9529
  // is NULL remove all (but not the nonames).
 
9530
  void removeUnit (const char *name = (const char*) 0, bool = false, 
 
9531
                   bool destroy = true) const;
 
9532
 
 
9533
  // Empty a unit. Don't remove from hash table.
 
9534
  // Preserve the last save location information.
 
9535
  void closeUnit (const char *name = (const char*) 0, bool = false) const;
 
9536
 
 
9537
  // Build and add a new unit. 
 
9538
  Unit *newUnit (const char *, Source *in = (Source*) 0, bool = false);
 
9539
        
 
9540
  // Get a unit by name. 
 
9541
  Unit *getUnit (const char *name, bool = false) const;
 
9542
                        
 
9543
  // Print given unit to the given outstream. If no
 
9544
  // name is given, print all units.
 
9545
  void print (const char *name = (const char*) 0, bool = false, 
 
9546
              ostream &out = cout) const;
 
9547
 
 
9548
  // Destroy all noname units.
 
9549
  void removeNonames ();
 
9550
      
 
9551
  // Initialize the unit manager and the managed 
 
9552
  // units for the next parse process.
 
9553
  
 
9554
#line 9555 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9555
public: __attribute__((always_inline)) inline void __exec_old_init();
 
9556
 
 
9557
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9558
void init ();
 
9559
public:
 
9560
  typedef AC::TL<Puma::ErrorStream *,AC::TL<std::list< Puma::Unit * >,AC::TL<std::map< std::basic_string< char >,Puma::Unit * >,AC::TL<Puma::Tokenizer *,AC::TLE > > > > __AttrTypes;
 
9561
  const char *__attr_name (unsigned i) const {
 
9562
    static const char *names[] = { "_err", "_nonames", "_umap", "_tokenizer" }; return names[i];
 
9563
  }
 
9564
  const void *__attr (unsigned __i) const {
 
9565
    switch (__i) { case 2: return &_err; case 4: return &_nonames; case 5: return &_umap; case 6: return &_tokenizer; default: return 0; }
 
9566
  }
 
9567
#line 91 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9568
};
 
9569
 
 
9570
 
 
9571
} // namespace Puma
 
9572
 
 
9573
#endif /* __UnitManager__ */
 
9574
 
 
9575
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SaveMode.h"
 
9576
// This file is part of PUMA.
 
9577
// Copyright (C) 1999-2003  The PUMA developer team.
 
9578
//                                                                
 
9579
// This program is free software;  you can redistribute it and/or 
 
9580
// modify it under the terms of the GNU General Public License as 
 
9581
// published by the Free Software Foundation; either version 2 of 
 
9582
// the License, or (at your option) any later version.            
 
9583
//                                                                
 
9584
// This program is distributed in the hope that it will be useful,
 
9585
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
9586
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
9587
// GNU General Public License for more details.                   
 
9588
//                                                                
 
9589
// You should have received a copy of the GNU General Public      
 
9590
// License along with this program; if not, write to the Free     
 
9591
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
9592
// MA  02111-1307  USA                                            
 
9593
 
 
9594
#ifndef __SaveMode__
 
9595
#define __SaveMode__
 
9596
 
 
9597
namespace Puma {
 
9598
 
 
9599
 
 
9600
// Project file save mode.
 
9601
 
 
9602
#line 9603 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9603
} // closed Puma
 
9604
class CCExprResolve;
 
9605
class CExprResolve;
 
9606
class WinIfExists;
 
9607
class WinImportHandler;
 
9608
class WinMacros;
 
9609
class WinAsm;
 
9610
class WinDeclSpecs;
 
9611
class WinMemberExplSpec;
 
9612
class WinTypeKeywords;
 
9613
class WinFriend;
 
9614
class ExtAC;
 
9615
class ExtACBuilderCoupling;
 
9616
class ExtACSyntaxCoupling;
 
9617
class ExtACTree;
 
9618
class ExtACKeywords;
 
9619
class ExtGnu;
 
9620
class PragmaOnceUnitState;
 
9621
class PragmaOnce;
 
9622
class CMatchSyntax;
 
9623
namespace Puma {
 
9624
 
 
9625
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SaveMode.h"
 
9626
struct SaveMode {
 
9627
#line 9628 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9628
  friend class ::CCExprResolve;
 
9629
  friend class ::CExprResolve;
 
9630
  friend class ::WinIfExists;
 
9631
  friend class ::WinImportHandler;
 
9632
  friend class ::WinMacros;
 
9633
  friend class ::WinAsm;
 
9634
  friend class ::WinDeclSpecs;
 
9635
  friend class ::WinMemberExplSpec;
 
9636
  friend class ::WinTypeKeywords;
 
9637
  friend class ::WinFriend;
 
9638
  friend class ::ExtAC;
 
9639
  friend class ::ExtACBuilderCoupling;
 
9640
  friend class ::ExtACSyntaxCoupling;
 
9641
  friend class ::ExtACTree;
 
9642
  friend class ::ExtACKeywords;
 
9643
  friend class ::ExtGnu;
 
9644
  friend class ::PragmaOnceUnitState;
 
9645
  friend class ::PragmaOnce;
 
9646
  friend class ::CMatchSyntax;
 
9647
 
 
9648
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SaveMode.h"
 
9649
 
 
9650
  enum Mode { 
 
9651
    OVERWRITE = 1, 
 
9652
    RENAME_OLD, 
 
9653
    NEW_SUFFIX 
 
9654
  };
 
9655
public:
 
9656
  typedef AC::TLE __AttrTypes;
 
9657
  const char *__attr_name (unsigned i) const {
 
9658
    static const char *names[] = {  }; return names[i];
 
9659
  }
 
9660
  const void *__attr (unsigned __i) const {
 
9661
    switch (__i) { default: return 0; }
 
9662
  }
 
9663
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SaveMode.h"
 
9664
};
 
9665
    
 
9666
 
 
9667
} // namespace Puma
 
9668
 
 
9669
#endif /* __SaveMode__ */
 
9670
 
 
9671
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9672
#include <fstream>
 
9673
 
 
9674
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9675
using namespace std;
 
9676
 
 
9677
namespace Puma {
 
9678
 
 
9679
 
 
9680
 
 
9681
#line 9682 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9682
} // closed Puma
 
9683
class CCExprResolve;
 
9684
class CExprResolve;
 
9685
class WinIfExists;
 
9686
class WinImportHandler;
 
9687
class WinMacros;
 
9688
class WinAsm;
 
9689
class WinDeclSpecs;
 
9690
class WinMemberExplSpec;
 
9691
class WinTypeKeywords;
 
9692
class WinFriend;
 
9693
class ExtAC;
 
9694
class ExtACBuilderCoupling;
 
9695
class ExtACSyntaxCoupling;
 
9696
class ExtACTree;
 
9697
class ExtACKeywords;
 
9698
class ExtGnu;
 
9699
class PragmaOnceUnitState;
 
9700
class PragmaOnce;
 
9701
class CMatchSyntax;
 
9702
namespace Puma {
 
9703
 
 
9704
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9705
class Project : public PathManager, public SaveMode {
 
9706
#line 9707 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9707
  friend class ::CCExprResolve;
 
9708
  friend class ::CExprResolve;
 
9709
  friend class ::WinIfExists;
 
9710
  friend class ::WinImportHandler;
 
9711
  friend class ::WinMacros;
 
9712
  friend class ::WinAsm;
 
9713
  friend class ::WinDeclSpecs;
 
9714
  friend class ::WinMemberExplSpec;
 
9715
  friend class ::WinTypeKeywords;
 
9716
  friend class ::WinFriend;
 
9717
  friend class ::ExtAC;
 
9718
  friend class ::ExtACBuilderCoupling;
 
9719
  friend class ::ExtACSyntaxCoupling;
 
9720
  friend class ::ExtACTree;
 
9721
  friend class ::ExtACKeywords;
 
9722
  friend class ::ExtGnu;
 
9723
  friend class ::PragmaOnceUnitState;
 
9724
  friend class ::PragmaOnce;
 
9725
  friend class ::CMatchSyntax;
 
9726
 
 
9727
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9728
 
 
9729
  UnitManager  _unitManager; 
 
9730
  const char  *_suffix;           // Current file name suffix.
 
9731
  Mode         _mode;      // Current save mode.
 
9732
 
 
9733
  // Change to the directory, or create it if necessary.
 
9734
  bool makeDir (const char *) const;
 
9735
        
 
9736
  // Create the directory hierarchy need for file 'path'.
 
9737
  bool makeDirHierarchy (Filename path) const;
 
9738
 
 
9739
protected:
 
9740
  // Write a unit on a file. Called by save().
 
9741
  virtual void write (Unit *unit, ofstream &) const; 
 
9742
 
 
9743
  // Check/update the state of the given unit.
 
9744
  bool checkState (const char *, Unit *) const;
 
9745
  void updateState (const char *, Unit *) const;
 
9746
        
 
9747
public:
 
9748
  Project (ErrorStream &);
 
9749
  virtual ~Project ();
 
9750
 
 
9751
  // Set the mode for saving an unit.
 
9752
  // OVERWRITE  -> Save the unit under its name and overwrite existing
 
9753
  //                   files.
 
9754
  // RENAME_OLD -> An existing file will be renamed. A suffix will be
 
9755
  //                   added to the name of the file, like `main.cc.old'
 
9756
  //                   for the file `main.cc' and the suffix `.old'.
 
9757
  // NEW_SUFFIX -> The unit will be saved with a new suffix, like 
 
9758
  //                   `main.cpp' for the unit `main.cc' and the suffix 
 
9759
  //               `cpp'.
 
9760
  void saveMode (Mode = OVERWRITE, const char *suffix = (const char*)0);
 
9761
 
 
9762
  // Save a unit using the name of the unit to get the full 
 
9763
  // name of the file and path to save to. The save location
 
9764
  // must not be protected by a protect pattern and the original
 
9765
  // file must be located in one of the source directories.
 
9766
  virtual void save (Unit *, bool = false) const;
 
9767
        
 
9768
  // Save a FileUnit (or all) to a file (or files).
 
9769
  virtual void save (const char *file = (const char*)0,
 
9770
                     bool only_modified = false, bool is_reg_ex = false) const;
 
9771
 
 
9772
  // Print an unit, regular expression for more units.
 
9773
  // If no name is given print all units.
 
9774
  void print (const char *name = (const char*)0, ostream &out = cout,
 
9775
              bool is_reg_ex = false) const;
 
9776
        
 
9777
  // Close an unit, regular expression for more units.
 
9778
  // If no name is given close all units. If destroy is true,
 
9779
  // the unit(s) will be deleted. 
 
9780
  void close (const char *name = (const char*)0, bool destroy = false,
 
9781
              bool is_reg_ex = false) const;
 
9782
 
 
9783
  // Add a new file to the project.
 
9784
  Unit *addFile (Filename);
 
9785
  Unit *addFile (Filename, Filename);
 
9786
 
 
9787
  // Configure the project from the command line or a file.
 
9788
  virtual void configure (const Config &);
 
9789
        
 
9790
  // Member access.
 
9791
  UnitManager &unitManager ();
 
9792
        
 
9793
  // Return true if the given file in the source directory
 
9794
  // (or at the unit manager) is newer than the corresponding
 
9795
  // file in the destination directory.
 
9796
  bool isNewer (const char *) const;
 
9797
 
 
9798
  // Returns true if the given file is in or below the project dirs
 
9799
  virtual bool isBelow (const char *) const;
 
9800
  virtual bool isBelow (Unit *) const;
 
9801
public:
 
9802
  typedef AC::TL<Puma::UnitManager,AC::TL<const char *,AC::TL<Puma::SaveMode::Mode,AC::TLE > > > __AttrTypes;
 
9803
  const char *__attr_name (unsigned i) const {
 
9804
    static const char *names[] = { "_unitManager", "_suffix", "_mode" }; return names[i];
 
9805
  }
 
9806
  const void *__attr (unsigned __i) const {
 
9807
    switch (__i) { case 0: return &_unitManager; case 1: return &_suffix; case 2: return &_mode; default: return 0; }
 
9808
  }
 
9809
#line 108 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9810
};
 
9811
 
 
9812
inline UnitManager &Project::unitManager () 
 
9813
 {  return _unitManager; }
 
9814
 
 
9815
inline bool Project::isBelow (const char *file) const
 
9816
 { return PathManager::isBelow (file); }
 
9817
 
 
9818
 
 
9819
} // namespace Puma
 
9820
 
 
9821
#endif /* __project__ */
 
9822
 
 
9823
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9824
 
 
9825
#line 9826 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9826
 
 
9827
#ifndef __ac_fwd_ExtACKeywords__
 
9828
#define __ac_fwd_ExtACKeywords__
 
9829
class ExtACKeywords;
 
9830
namespace AC {
 
9831
  template <class JoinPoint>
 
9832
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a0_before (JoinPoint *tjp);
 
9833
  template <class JoinPoint>
 
9834
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a1_before (JoinPoint *tjp);
 
9835
  template <class JoinPoint>
 
9836
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a2_before (JoinPoint *tjp);
 
9837
}
 
9838
#endif
 
9839
 
 
9840
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
9841
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
9842
#endif
 
9843
 
 
9844
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9845
// This file is part of PUMA.
 
9846
// Copyright (C) 1999-2003  The PUMA developer team.
 
9847
//                                                                
 
9848
// This program is free software;  you can redistribute it and/or 
 
9849
// modify it under the terms of the GNU General Public License as 
 
9850
// published by the Free Software Foundation; either version 2 of 
 
9851
// the License, or (at your option) any later version.            
 
9852
//                                                                
 
9853
// This program is distributed in the hope that it will be useful,
 
9854
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
9855
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
9856
// GNU General Public License for more details.                   
 
9857
//                                                                
 
9858
// You should have received a copy of the GNU General Public      
 
9859
// License along with this program; if not, write to the Free     
 
9860
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
9861
// MA  02111-1307  USA                                            
 
9862
 
 
9863
#ifndef __c_scanner_h__
 
9864
#define __c_scanner_h__
 
9865
 
 
9866
 
 
9867
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
9868
// This file is part of PUMA.
 
9869
// Copyright (C) 1999-2003  The PUMA developer team.
 
9870
//                                                                
 
9871
// This program is free software;  you can redistribute it and/or 
 
9872
// modify it under the terms of the GNU General Public License as 
 
9873
// published by the Free Software Foundation; either version 2 of 
 
9874
// the License, or (at your option) any later version.            
 
9875
//                                                                
 
9876
// This program is distributed in the hope that it will be useful,
 
9877
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
9878
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
9879
// GNU General Public License for more details.                   
 
9880
//                                                                
 
9881
// You should have received a copy of the GNU General Public      
 
9882
// License along with this program; if not, write to the Free     
 
9883
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
9884
// MA  02111-1307  USA                                            
 
9885
 
 
9886
#ifndef __c_recognizer_h__
 
9887
#define __c_recognizer_h__
 
9888
 
 
9889
 
 
9890
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
9891
// This file is part of PUMA.
 
9892
// Copyright (C) 1999-2003  The PUMA developer team.
 
9893
//                                                                
 
9894
// This program is free software;  you can redistribute it and/or 
 
9895
// modify it under the terms of the GNU General Public License as 
 
9896
// published by the Free Software Foundation; either version 2 of 
 
9897
// the License, or (at your option) any later version.            
 
9898
//                                                                
 
9899
// This program is distributed in the hope that it will be useful,
 
9900
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
9901
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
9902
// GNU General Public License for more details.                   
 
9903
//                                                                
 
9904
// You should have received a copy of the GNU General Public      
 
9905
// License along with this program; if not, write to the Free     
 
9906
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
9907
// MA  02111-1307  USA                                            
 
9908
 
 
9909
#ifndef __CScanBuffer_h__
 
9910
#define __CScanBuffer_h__
 
9911
 
 
9912
 
 
9913
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
9914
// This file is part of PUMA.
 
9915
// Copyright (C) 1999-2003  The PUMA developer team.
 
9916
//                                                                
 
9917
// This program is free software;  you can redistribute it and/or 
 
9918
// modify it under the terms of the GNU General Public License as 
 
9919
// published by the Free Software Foundation; either version 2 of 
 
9920
// the License, or (at your option) any later version.            
 
9921
//                                                                
 
9922
// This program is distributed in the hope that it will be useful,
 
9923
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
9924
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
9925
// GNU General Public License for more details.                   
 
9926
//                                                                
 
9927
// You should have received a copy of the GNU General Public      
 
9928
// License along with this program; if not, write to the Free     
 
9929
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
9930
// MA  02111-1307  USA                                            
 
9931
 
 
9932
#ifndef __scan_buffer_h__
 
9933
#define __scan_buffer_h__
 
9934
 
 
9935
 
 
9936
#line 23 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
9937
using namespace std;
 
9938
 
 
9939
namespace Puma {
 
9940
 
 
9941
 
 
9942
#line 9943 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9943
} // closed Puma
 
9944
class CCExprResolve;
 
9945
class CExprResolve;
 
9946
class WinIfExists;
 
9947
class WinImportHandler;
 
9948
class WinMacros;
 
9949
class WinAsm;
 
9950
class WinDeclSpecs;
 
9951
class WinMemberExplSpec;
 
9952
class WinTypeKeywords;
 
9953
class WinFriend;
 
9954
class ExtAC;
 
9955
class ExtACBuilderCoupling;
 
9956
class ExtACSyntaxCoupling;
 
9957
class ExtACTree;
 
9958
class ExtACKeywords;
 
9959
class ExtGnu;
 
9960
class PragmaOnceUnitState;
 
9961
class PragmaOnce;
 
9962
class CMatchSyntax;
 
9963
namespace Puma {
 
9964
 
 
9965
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
9966
class ScanBuffer {
 
9967
#line 9968 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
9968
  friend class ::CCExprResolve;
 
9969
  friend class ::CExprResolve;
 
9970
  friend class ::WinIfExists;
 
9971
  friend class ::WinImportHandler;
 
9972
  friend class ::WinMacros;
 
9973
  friend class ::WinAsm;
 
9974
  friend class ::WinDeclSpecs;
 
9975
  friend class ::WinMemberExplSpec;
 
9976
  friend class ::WinTypeKeywords;
 
9977
  friend class ::WinFriend;
 
9978
  friend class ::ExtAC;
 
9979
  friend class ::ExtACBuilderCoupling;
 
9980
  friend class ::ExtACSyntaxCoupling;
 
9981
  friend class ::ExtACTree;
 
9982
  friend class ::ExtACKeywords;
 
9983
  friend class ::ExtGnu;
 
9984
  friend class ::PragmaOnceUnitState;
 
9985
  friend class ::PragmaOnce;
 
9986
  friend class ::CMatchSyntax;
 
9987
 
 
9988
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
9989
 
 
9990
public:
 
9991
  typedef enum { STATE_NEW, STATE_END, STATE_ERROR, STATE_OK } State;
 
9992
 
 
9993
private:
 
9994
  int _token;      // start position of current token
 
9995
  int _pos;        // current position (in token; _pos >= _token && pos < filled)
 
9996
  char *_buffer;   // token to the buffer that contains all input characters
 
9997
  int  _buff_size; // size of the input buffer
 
9998
  State _state;
 
9999
 
 
10000
public:  
 
10001
  ScanBuffer () : _state (STATE_NEW) {}
 
10002
 
 
10003
  // init buffer to directly scan from a string
 
10004
  void init (const char *str, int l = 0);
 
10005
  
 
10006
  char next () { return _buffer[_pos++]; }
 
10007
  char lookahead () { return _buffer[_pos]; }
 
10008
  char *token () const { return _buffer + _token; }
 
10009
  int len () const { return _pos - _token; }
 
10010
  void reset () { _token = _pos = 0; }
 
10011
  void retry () { _pos = _token; } 
 
10012
  void accept (int len) {
 
10013
    _token += len;
 
10014
    _pos = _token;
 
10015
  }
 
10016
  void more (int len) { _pos = _token + len; }
 
10017
  State state () {
 
10018
    if (_state == STATE_OK && _pos >= _buff_size)
 
10019
      return STATE_END;
 
10020
    return _state;
 
10021
  }
 
10022
public:
 
10023
  typedef AC::TL<int,AC::TL<int,AC::TL<char *,AC::TL<int,AC::TLE > > > > __AttrTypes;
 
10024
  const char *__attr_name (unsigned i) const {
 
10025
    static const char *names[] = { "_token", "_pos", "_buffer", "_buff_size" }; return names[i];
 
10026
  }
 
10027
  const void *__attr (unsigned __i) const {
 
10028
    switch (__i) { case 4: return &_token; case 5: return &_pos; case 6: return &_buffer; case 7: return &_buff_size; default: return 0; }
 
10029
  }
 
10030
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
10031
};
 
10032
 
 
10033
 
 
10034
} // namespace Puma
 
10035
 
 
10036
#endif /* __scan_buffer_h__ */
 
10037
 
 
10038
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
10039
namespace Puma {
 
10040
 
 
10041
 
 
10042
 
 
10043
#line 10044 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10044
} // closed Puma
 
10045
class CCExprResolve;
 
10046
class CExprResolve;
 
10047
class WinIfExists;
 
10048
class WinImportHandler;
 
10049
class WinMacros;
 
10050
class WinAsm;
 
10051
class WinDeclSpecs;
 
10052
class WinMemberExplSpec;
 
10053
class WinTypeKeywords;
 
10054
class WinFriend;
 
10055
class ExtAC;
 
10056
class ExtACBuilderCoupling;
 
10057
class ExtACSyntaxCoupling;
 
10058
class ExtACTree;
 
10059
class ExtACKeywords;
 
10060
class ExtGnu;
 
10061
class PragmaOnceUnitState;
 
10062
class PragmaOnce;
 
10063
class CMatchSyntax;
 
10064
namespace Puma {
 
10065
 
 
10066
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
10067
class CScanBuffer : public ScanBuffer {
 
10068
#line 10069 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10069
  friend class ::CCExprResolve;
 
10070
  friend class ::CExprResolve;
 
10071
  friend class ::WinIfExists;
 
10072
  friend class ::WinImportHandler;
 
10073
  friend class ::WinMacros;
 
10074
  friend class ::WinAsm;
 
10075
  friend class ::WinDeclSpecs;
 
10076
  friend class ::WinMemberExplSpec;
 
10077
  friend class ::WinTypeKeywords;
 
10078
  friend class ::WinFriend;
 
10079
  friend class ::ExtAC;
 
10080
  friend class ::ExtACBuilderCoupling;
 
10081
  friend class ::ExtACSyntaxCoupling;
 
10082
  friend class ::ExtACTree;
 
10083
  friend class ::ExtACKeywords;
 
10084
  friend class ::ExtGnu;
 
10085
  friend class ::PragmaOnceUnitState;
 
10086
  friend class ::PragmaOnce;
 
10087
  friend class ::CMatchSyntax;
 
10088
 
 
10089
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
10090
 
 
10091
 
 
10092
  int _new_line_pos;
 
10093
  void check ();
 
10094
 
 
10095
public:
 
10096
  CScanBuffer () : _new_line_pos (-1) {}
 
10097
  inline char next ();
 
10098
  inline void reset ();
 
10099
  inline void retry (); 
 
10100
  inline void accept (int len);
 
10101
  inline bool new_line (int len) const;
 
10102
public:
 
10103
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
10104
  const char *__attr_name (unsigned i) const {
 
10105
    static const char *names[] = { "_new_line_pos" }; return names[i];
 
10106
  }
 
10107
  const void *__attr (unsigned __i) const {
 
10108
    switch (__i) { case 0: return &_new_line_pos; default: return 0; }
 
10109
  }
 
10110
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
10111
};
 
10112
 
 
10113
 
 
10114
inline char CScanBuffer::next () {
 
10115
  char character = ScanBuffer::next ();
 
10116
  if (character == '\n' && _new_line_pos == -1)
 
10117
    _new_line_pos = len ();
 
10118
  if (ScanBuffer::state () == ScanBuffer::STATE_OK &&
 
10119
      ScanBuffer::lookahead () == '\\')
 
10120
    check ();
 
10121
  return character;
 
10122
}
 
10123
 
 
10124
inline void CScanBuffer::reset () { 
 
10125
  ScanBuffer::reset ();
 
10126
  _new_line_pos = -1;
 
10127
  check ();
 
10128
}
 
10129
 
 
10130
inline void CScanBuffer::retry () {
 
10131
  ScanBuffer::retry ();
 
10132
  _new_line_pos = -1;
 
10133
}
 
10134
 
 
10135
inline void CScanBuffer::accept (int len) {
 
10136
  ScanBuffer::accept (len);
 
10137
  _new_line_pos = -1;
 
10138
}
 
10139
 
 
10140
inline bool CScanBuffer::new_line (int len) const {
 
10141
  return _new_line_pos != -1 && _new_line_pos <= len;
 
10142
}
 
10143
 
 
10144
} // namespace Puma
 
10145
 
 
10146
#endif // __CScanBuffer_h__
 
10147
 
 
10148
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
10149
// This file is part of PUMA.
 
10150
// Copyright (C) 1999-2003  The PUMA developer team.
 
10151
//                                                                
 
10152
// This program is free software;  you can redistribute it and/or 
 
10153
// modify it under the terms of the GNU General Public License as 
 
10154
// published by the Free Software Foundation; either version 2 of 
 
10155
// the License, or (at your option) any later version.            
 
10156
//                                                                
 
10157
// This program is distributed in the hope that it will be useful,
 
10158
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10159
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10160
// GNU General Public License for more details.                   
 
10161
//                                                                
 
10162
// You should have received a copy of the GNU General Public      
 
10163
// License along with this program; if not, write to the Free     
 
10164
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10165
// MA  02111-1307  USA                                            
 
10166
 
 
10167
#ifndef __c_comment_recognizer_h__
 
10168
#define __c_comment_recognizer_h__
 
10169
 
 
10170
 
 
10171
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
 
10172
// This file is part of PUMA.
 
10173
// Copyright (C) 1999-2003  The PUMA developer team.
 
10174
//                                                                
 
10175
// This program is free software;  you can redistribute it and/or 
 
10176
// modify it under the terms of the GNU General Public License as 
 
10177
// published by the Free Software Foundation; either version 2 of 
 
10178
// the License, or (at your option) any later version.            
 
10179
//                                                                
 
10180
// This program is distributed in the hope that it will be useful,
 
10181
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10182
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10183
// GNU General Public License for more details.                   
 
10184
//                                                                
 
10185
// You should have received a copy of the GNU General Public      
 
10186
// License along with this program; if not, write to the Free     
 
10187
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10188
// MA  02111-1307  USA                                            
 
10189
 
 
10190
#ifndef __mapped_orange_recognizer_h__
 
10191
#define __mapped_orange_recognizer_h__
 
10192
 
 
10193
// The token recognizer class, which uses scanner tables generated by the
 
10194
// orange tool. Returned expressions mapped according to an orange
 
10195
// generated mapping table
 
10196
 
 
10197
 
 
10198
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OrangeRecognizer.h"
 
10199
// This file is part of PUMA.
 
10200
// Copyright (C) 1999-2003  The PUMA developer team.
 
10201
//                                                                
 
10202
// This program is free software;  you can redistribute it and/or 
 
10203
// modify it under the terms of the GNU General Public License as 
 
10204
// published by the Free Software Foundation; either version 2 of 
 
10205
// the License, or (at your option) any later version.            
 
10206
//                                                                
 
10207
// This program is distributed in the hope that it will be useful,
 
10208
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10209
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10210
// GNU General Public License for more details.                   
 
10211
//                                                                
 
10212
// You should have received a copy of the GNU General Public      
 
10213
// License along with this program; if not, write to the Free     
 
10214
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10215
// MA  02111-1307  USA                                            
 
10216
 
 
10217
#ifndef __recognizer_h__
 
10218
#define __recognizer_h__
 
10219
 
 
10220
// The token recognizer class, which uses scanner tables generated by the
 
10221
// orange tool.
 
10222
 
 
10223
namespace Puma {
 
10224
 
 
10225
 
 
10226
#ifndef __TTGEN__
 
10227
#  define __TTGEN__
 
10228
typedef struct
 
10229
 { unsigned char Type;
 
10230
   unsigned char LookAhead;
 
10231
   int           Expression;
 
10232
   int           Start;
 
10233
 } States;                                                                   
 
10234
#endif
 
10235
 
 
10236
 
 
10237
// class declaration
 
10238
 
 
10239
template <typename TScanBuffer>
 
10240
class OrangeRecognizer {
 
10241
  // local structures generated by Orange
 
10242
 
 
10243
  char *_map;
 
10244
  int _start;
 
10245
  States *_state;
 
10246
  int *_next;
 
10247
  int *_control;
 
10248
  int _tab_size;
 
10249
 
 
10250
public:
 
10251
  OrangeRecognizer (char *map, int start, States *state, int *next,
 
10252
                    int *control, int tab_size) : 
 
10253
    _map (map), _start (start), _state (state), _next (next),
 
10254
    _control (control), _tab_size (tab_size)
 
10255
   {}
 
10256
 
 
10257
  // try to recognize the current token in the character buffer
 
10258
  // returns 1 on success, 0 on eof, -1 on unknown token
 
10259
  int recognize (TScanBuffer *scan_buffer, int &token, int &len); 
 
10260
};
 
10261
 
 
10262
template <typename TScanBuffer>
 
10263
int OrangeRecognizer<TScanBuffer>::recognize (TScanBuffer *scan_buffer,
 
10264
                                              int &token, int &len) {
 
10265
  int  NextState;
 
10266
  char Character;
 
10267
  char CharClass;
 
10268
  int  NextStatePos;
 
10269
  int  State;
 
10270
  int  LookAheadLen;
 
10271
  int  AcceptLen;
 
10272
  int  AcceptState;
 
10273
  typename TScanBuffer::State buffer_state = TScanBuffer::STATE_OK;
 
10274
 
 
10275
  State = _start;
 
10276
  AcceptState = -1;
 
10277
  LookAheadLen = 0;
 
10278
  AcceptLen = 0;
 
10279
 
 
10280
  do { 
 
10281
    Character = scan_buffer->next ();
 
10282
 
 
10283
    CharClass = _map[(unsigned char)Character];
 
10284
    if (CharClass == -1)
 
10285
      break;
 
10286
 
 
10287
    NextStatePos = _state[State].Start + CharClass;
 
10288
    if (NextStatePos < 0 || NextStatePos >= _tab_size ||
 
10289
        _control[NextStatePos] != State)
 
10290
      break;
 
10291
 
 
10292
    if ((NextState = _next[NextStatePos]) == -1)
 
10293
      break;
 
10294
 
 
10295
    State = NextState;
 
10296
 
 
10297
    if (_state[State].Type > 0) {
 
10298
      AcceptState = State; // remember this (terminal) state
 
10299
      AcceptLen = scan_buffer->len ();
 
10300
    }
 
10301
 
 
10302
    if (_state[State].LookAhead)
 
10303
      LookAheadLen = scan_buffer->len ();
 
10304
 
 
10305
    buffer_state = scan_buffer->state ();
 
10306
  } while (NextState != -1 && buffer_state == TScanBuffer::STATE_OK);
 
10307
 
 
10308
  if (buffer_state == TScanBuffer::STATE_ERROR)
 
10309
    return -1;
 
10310
 
 
10311
  if (AcceptState == -1)
 
10312
    return 0;
 
10313
 
 
10314
  len   = (_state[AcceptState].Type == 2) ? LookAheadLen : AcceptLen;
 
10315
  token = _state[AcceptState].Expression;
 
10316
 
 
10317
  return 1;
 
10318
}
 
10319
 
 
10320
} // namespace Puma
 
10321
 
 
10322
#endif /* __orange_recognizer_h__ */
 
10323
 
 
10324
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
 
10325
namespace Puma {
 
10326
 
 
10327
 
 
10328
// class declaration
 
10329
 
 
10330
template <class ScanBuffer>
 
10331
class MappedOrangeRecognizer : public OrangeRecognizer<ScanBuffer> {
 
10332
  int *_expr_map;
 
10333
 
 
10334
public:
 
10335
  MappedOrangeRecognizer (char *map, int *expr_map, int start, 
 
10336
                          States *state, int *next,
 
10337
                          int *control, int tab_size) : 
 
10338
    OrangeRecognizer<ScanBuffer> (map, start, state, next, control, tab_size),
 
10339
    _expr_map (expr_map) 
 
10340
   {}
 
10341
 
 
10342
  // try to recognize the current token in the character buffer
 
10343
  // returns 1 on success, 0 on eof, -1 on unknown token
 
10344
  int recognize (ScanBuffer *scan_buffer, int &token, int &len) {
 
10345
    int result;
 
10346
 
 
10347
    if ((result = OrangeRecognizer<ScanBuffer>::recognize (scan_buffer, token, len)) == 1) {
 
10348
      token = _expr_map[token];
 
10349
    }
 
10350
    return result;
 
10351
  }
 
10352
};
 
10353
 
 
10354
 
 
10355
} // namespace Puma
 
10356
 
 
10357
#endif // __mapped_orange_recognizer_h__
 
10358
 
 
10359
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
10360
namespace Puma {
 
10361
 
 
10362
 
 
10363
 
 
10364
#line 10365 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10365
} // closed Puma
 
10366
class CCExprResolve;
 
10367
class CExprResolve;
 
10368
class WinIfExists;
 
10369
class WinImportHandler;
 
10370
class WinMacros;
 
10371
class WinAsm;
 
10372
class WinDeclSpecs;
 
10373
class WinMemberExplSpec;
 
10374
class WinTypeKeywords;
 
10375
class WinFriend;
 
10376
class ExtAC;
 
10377
class ExtACBuilderCoupling;
 
10378
class ExtACSyntaxCoupling;
 
10379
class ExtACTree;
 
10380
class ExtACKeywords;
 
10381
class ExtGnu;
 
10382
class PragmaOnceUnitState;
 
10383
class PragmaOnce;
 
10384
class CMatchSyntax;
 
10385
namespace Puma {
 
10386
 
 
10387
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
10388
class CCommentRecognizer {
 
10389
#line 10390 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10390
  friend class ::CCExprResolve;
 
10391
  friend class ::CExprResolve;
 
10392
  friend class ::WinIfExists;
 
10393
  friend class ::WinImportHandler;
 
10394
  friend class ::WinMacros;
 
10395
  friend class ::WinAsm;
 
10396
  friend class ::WinDeclSpecs;
 
10397
  friend class ::WinMemberExplSpec;
 
10398
  friend class ::WinTypeKeywords;
 
10399
  friend class ::WinFriend;
 
10400
  friend class ::ExtAC;
 
10401
  friend class ::ExtACBuilderCoupling;
 
10402
  friend class ::ExtACSyntaxCoupling;
 
10403
  friend class ::ExtACTree;
 
10404
  friend class ::ExtACKeywords;
 
10405
  friend class ::ExtGnu;
 
10406
  friend class ::PragmaOnceUnitState;
 
10407
  friend class ::PragmaOnce;
 
10408
  friend class ::CMatchSyntax;
 
10409
 
 
10410
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
10411
 
 
10412
public:
 
10413
  typedef enum { NO_COMMENT, SL_COMMENT, ML_COMMENT } Mode;
 
10414
 
 
10415
private:
 
10416
  static MappedOrangeRecognizer<CScanBuffer> comment_recognizer;   
 
10417
  static MappedOrangeRecognizer<CScanBuffer> sl_comment_recognizer;   
 
10418
  static MappedOrangeRecognizer<CScanBuffer> ml_comment_recognizer;   
 
10419
  Mode comment_mode;
 
10420
 
 
10421
public:
 
10422
  CCommentRecognizer () : comment_mode (NO_COMMENT) {}
 
10423
  int recognize (CScanBuffer *scan_buffer, int &expr, int &len);
 
10424
  void mode (Mode mode) { comment_mode = mode; }
 
10425
  Mode mode () { return comment_mode; }
 
10426
public:
 
10427
  typedef AC::TLE __AttrTypes;
 
10428
  const char *__attr_name (unsigned i) const {
 
10429
    static const char *names[] = {  }; return names[i];
 
10430
  }
 
10431
  const void *__attr (unsigned __i) const {
 
10432
    switch (__i) { default: return 0; }
 
10433
  }
 
10434
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
10435
};
 
10436
 
 
10437
 
 
10438
} // namespace Puma
 
10439
 
 
10440
#endif /* __c_comment_recognizer_h__ */
 
10441
 
 
10442
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
10443
// This file is part of PUMA.
 
10444
// Copyright (C) 1999-2003  The PUMA developer team.
 
10445
//                                                                
 
10446
// This program is free software;  you can redistribute it and/or 
 
10447
// modify it under the terms of the GNU General Public License as 
 
10448
// published by the Free Software Foundation; either version 2 of 
 
10449
// the License, or (at your option) any later version.            
 
10450
//                                                                
 
10451
// This program is distributed in the hope that it will be useful,
 
10452
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10453
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10454
// GNU General Public License for more details.                   
 
10455
//                                                                
 
10456
// You should have received a copy of the GNU General Public      
 
10457
// License along with this program; if not, write to the Free     
 
10458
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10459
// MA  02111-1307  USA                                            
 
10460
 
 
10461
#ifndef __keyword_recognizer_h__
 
10462
#define __keyword_recognizer_h__
 
10463
 
 
10464
 
 
10465
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
10466
namespace Puma {
 
10467
 
 
10468
 
 
10469
 
 
10470
#line 10471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10471
} // closed Puma
 
10472
class CCExprResolve;
 
10473
class CExprResolve;
 
10474
class WinIfExists;
 
10475
class WinImportHandler;
 
10476
class WinMacros;
 
10477
class WinAsm;
 
10478
class WinDeclSpecs;
 
10479
class WinMemberExplSpec;
 
10480
class WinTypeKeywords;
 
10481
class WinFriend;
 
10482
class ExtAC;
 
10483
class ExtACBuilderCoupling;
 
10484
class ExtACSyntaxCoupling;
 
10485
class ExtACTree;
 
10486
class ExtACKeywords;
 
10487
class ExtGnu;
 
10488
class PragmaOnceUnitState;
 
10489
class PragmaOnce;
 
10490
class CMatchSyntax;
 
10491
namespace Puma {
 
10492
 
 
10493
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
10494
class KeywordRecognizer {
 
10495
#line 10496 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10496
  friend class ::CCExprResolve;
 
10497
  friend class ::CExprResolve;
 
10498
  friend class ::WinIfExists;
 
10499
  friend class ::WinImportHandler;
 
10500
  friend class ::WinMacros;
 
10501
  friend class ::WinAsm;
 
10502
  friend class ::WinDeclSpecs;
 
10503
  friend class ::WinMemberExplSpec;
 
10504
  friend class ::WinTypeKeywords;
 
10505
  friend class ::WinFriend;
 
10506
  friend class ::ExtAC;
 
10507
  friend class ::ExtACBuilderCoupling;
 
10508
  friend class ::ExtACSyntaxCoupling;
 
10509
  friend class ::ExtACTree;
 
10510
  friend class ::ExtACKeywords;
 
10511
  friend class ::ExtGnu;
 
10512
  friend class ::PragmaOnceUnitState;
 
10513
  friend class ::PragmaOnce;
 
10514
  friend class ::CMatchSyntax;
 
10515
 
 
10516
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
10517
 
 
10518
protected:
 
10519
  virtual MappedOrangeRecognizer<CScanBuffer> &recognizer() = 0;
 
10520
 
 
10521
public:
 
10522
  virtual ~KeywordRecognizer () {}
 
10523
  virtual int recognize (CScanBuffer *scan_buffer, int &expr, int &len);
 
10524
public:
 
10525
  typedef AC::TLE __AttrTypes;
 
10526
  const char *__attr_name (unsigned i) const {
 
10527
    static const char *names[] = {  }; return names[i];
 
10528
  }
 
10529
  const void *__attr (unsigned __i) const {
 
10530
    switch (__i) { default: return 0; }
 
10531
  }
 
10532
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
10533
};
 
10534
 
 
10535
 
 
10536
} // namespace Puma
 
10537
 
 
10538
#endif /* __keyword_recognizer_h__ */
 
10539
 
 
10540
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
10541
namespace Puma {
 
10542
 
 
10543
 
 
10544
 
 
10545
#line 10546 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10546
} // closed Puma
 
10547
class CCExprResolve;
 
10548
class CExprResolve;
 
10549
class WinIfExists;
 
10550
class WinImportHandler;
 
10551
class WinMacros;
 
10552
class WinAsm;
 
10553
class WinDeclSpecs;
 
10554
class WinMemberExplSpec;
 
10555
class WinTypeKeywords;
 
10556
class WinFriend;
 
10557
class ExtAC;
 
10558
class ExtACBuilderCoupling;
 
10559
class ExtACSyntaxCoupling;
 
10560
class ExtACTree;
 
10561
class ExtACKeywords;
 
10562
class ExtGnu;
 
10563
class PragmaOnceUnitState;
 
10564
class PragmaOnce;
 
10565
class CMatchSyntax;
 
10566
namespace Puma {
 
10567
 
 
10568
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
10569
class CRecognizer {
 
10570
#line 10571 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10571
  friend class ::CCExprResolve;
 
10572
  friend class ::CExprResolve;
 
10573
  friend class ::WinIfExists;
 
10574
  friend class ::WinImportHandler;
 
10575
  friend class ::WinMacros;
 
10576
  friend class ::WinAsm;
 
10577
  friend class ::WinDeclSpecs;
 
10578
  friend class ::WinMemberExplSpec;
 
10579
  friend class ::WinTypeKeywords;
 
10580
  friend class ::WinFriend;
 
10581
  friend class ::ExtAC;
 
10582
  friend class ::ExtACBuilderCoupling;
 
10583
  friend class ::ExtACSyntaxCoupling;
 
10584
  friend class ::ExtACTree;
 
10585
  friend class ::ExtACKeywords;
 
10586
  friend class ::ExtGnu;
 
10587
  friend class ::PragmaOnceUnitState;
 
10588
  friend class ::PragmaOnce;
 
10589
  friend class ::CMatchSyntax;
 
10590
 
 
10591
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
10592
 
 
10593
  CCommentRecognizer comment_recognizer;
 
10594
  Array<KeywordRecognizer*> additional_keyword_recognizers;
 
10595
 
 
10596
public:
 
10597
  CScanBuffer scan_buffer; // TODO: temporarily made public!
 
10598
 
 
10599
  typedef enum { NORMAL, IN_COMP_DIR, IN_PRE_DIR } Mode;
 
10600
  typedef enum { COMMENT, PRE_DIR, COMP_DIR, WHITE, PRE, CORE, 
 
10601
                 KEYWORD, ID, WILDCARD, UNKNOWN } Lang;
 
10602
 
 
10603
  CRecognizer () : directives(true), wildcards (false),
 
10604
    aspectc (false), macro_ops (false),
 
10605
    std_c (true), std_cplusplus (true) {}
 
10606
  void allow_directives (bool flag = true)    { directives = flag; }
 
10607
  void allow_wildcards (bool flag = true)     { wildcards = flag; }
 
10608
  void allow_aspectc (bool flag = true)       { aspectc   = flag; } 
 
10609
  void allow_macro_ops (bool flag = true)     { macro_ops = flag; }
 
10610
  void allow_std_c (bool flag = true)         { std_c = flag; }
 
10611
  void allow_std_cplusplus (bool flag = true) { std_cplusplus = flag; }
 
10612
  void setup ();
 
10613
  int recognize (Lang &lang, int &expr, int &len);
 
10614
  Mode mode () const { return scan_mode; }
 
10615
  void mode (Mode mode) { scan_mode = mode; }
 
10616
  CScanBuffer& buffer () { return scan_buffer; }
 
10617
  void addRecognizer(KeywordRecognizer &recognizer) 
 
10618
   { additional_keyword_recognizers.append(&recognizer); }
 
10619
 
 
10620
private:
 
10621
  static MappedOrangeRecognizer<CScanBuffer> pre_dir_recognizer;
 
10622
  static MappedOrangeRecognizer<CScanBuffer> pre_token_recognizer;
 
10623
  static OrangeRecognizer<CScanBuffer> dir_recognizer;
 
10624
  static MappedOrangeRecognizer<CScanBuffer> wildcard_recognizer;
 
10625
  static MappedOrangeRecognizer<CScanBuffer> core_recognizer;
 
10626
  static MappedOrangeRecognizer<CScanBuffer> identifier_recognizer;
 
10627
 
 
10628
  Mode scan_mode;
 
10629
  bool directives;
 
10630
  bool wildcards;
 
10631
  bool aspectc;
 
10632
  bool macro_ops;
 
10633
  bool std_c;
 
10634
  bool std_cplusplus;
 
10635
public:
 
10636
  typedef AC::TL<Puma::CCommentRecognizer,AC::TL<Puma::Array< Puma::KeywordRecognizer * >,AC::TL<Puma::CScanBuffer,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TLE > > > > > > > > > __AttrTypes;
 
10637
  const char *__attr_name (unsigned i) const {
 
10638
    static const char *names[] = { "comment_recognizer", "additional_keyword_recognizers", "scan_buffer", "directives", "wildcards", "aspectc", "macro_ops", "std_c", "std_cplusplus" }; return names[i];
 
10639
  }
 
10640
  const void *__attr (unsigned __i) const {
 
10641
    switch (__i) { case 0: return &comment_recognizer; case 2: return &additional_keyword_recognizers; case 3: return &scan_buffer; case 30: return &directives; case 31: return &wildcards; case 32: return &aspectc; case 33: return &macro_ops; case 34: return &std_c; case 35: return &std_cplusplus; default: return 0; }
 
10642
  }
 
10643
#line 73 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
10644
};
 
10645
 
 
10646
 
 
10647
} // namespace Puma
 
10648
 
 
10649
#endif /* __c_recognizer_h__ */
 
10650
 
 
10651
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/LanguageID.h"
 
10652
// This file is part of PUMA.
 
10653
// Copyright (C) 1999-2003  The PUMA developer team.
 
10654
//                                                                
 
10655
// This program is free software;  you can redistribute it and/or 
 
10656
// modify it under the terms of the GNU General Public License as 
 
10657
// published by the Free Software Foundation; either version 2 of 
 
10658
// the License, or (at your option) any later version.            
 
10659
//                                                                
 
10660
// This program is distributed in the hope that it will be useful,
 
10661
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10662
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10663
// GNU General Public License for more details.                   
 
10664
//                                                                
 
10665
// You should have received a copy of the GNU General Public      
 
10666
// License along with this program; if not, write to the Free     
 
10667
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10668
// MA  02111-1307  USA                                            
 
10669
 
 
10670
#ifndef __language_id_h__
 
10671
#define __language_id_h__
 
10672
 
 
10673
// A language ID is a unique identifier for a language
 
10674
 
 
10675
namespace Puma {
 
10676
 
 
10677
 
 
10678
 
 
10679
#line 10680 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10680
} // closed Puma
 
10681
class CCExprResolve;
 
10682
class CExprResolve;
 
10683
class WinIfExists;
 
10684
class WinImportHandler;
 
10685
class WinMacros;
 
10686
class WinAsm;
 
10687
class WinDeclSpecs;
 
10688
class WinMemberExplSpec;
 
10689
class WinTypeKeywords;
 
10690
class WinFriend;
 
10691
class ExtAC;
 
10692
class ExtACBuilderCoupling;
 
10693
class ExtACSyntaxCoupling;
 
10694
class ExtACTree;
 
10695
class ExtACKeywords;
 
10696
class ExtGnu;
 
10697
class PragmaOnceUnitState;
 
10698
class PragmaOnce;
 
10699
class CMatchSyntax;
 
10700
namespace Puma {
 
10701
 
 
10702
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/LanguageID.h"
 
10703
class LanguageID {
 
10704
#line 10705 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10705
  friend class ::CCExprResolve;
 
10706
  friend class ::CExprResolve;
 
10707
  friend class ::WinIfExists;
 
10708
  friend class ::WinImportHandler;
 
10709
  friend class ::WinMacros;
 
10710
  friend class ::WinAsm;
 
10711
  friend class ::WinDeclSpecs;
 
10712
  friend class ::WinMemberExplSpec;
 
10713
  friend class ::WinTypeKeywords;
 
10714
  friend class ::WinFriend;
 
10715
  friend class ::ExtAC;
 
10716
  friend class ::ExtACBuilderCoupling;
 
10717
  friend class ::ExtACSyntaxCoupling;
 
10718
  friend class ::ExtACTree;
 
10719
  friend class ::ExtACKeywords;
 
10720
  friend class ::ExtGnu;
 
10721
  friend class ::PragmaOnceUnitState;
 
10722
  friend class ::PragmaOnce;
 
10723
  friend class ::CMatchSyntax;
 
10724
 
 
10725
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/LanguageID.h"
 
10726
 
 
10727
  const char *_id;
 
10728
 
 
10729
public:
 
10730
  LanguageID () : _id ((const char*)0) {}
 
10731
  LanguageID (const char *id) : _id (id) {}
 
10732
  operator const char *() const { return _id; }
 
10733
  bool operator == (const LanguageID &id) const
 
10734
   { return _id == (const char*)id; }
 
10735
public:
 
10736
  typedef AC::TL<const char *,AC::TLE > __AttrTypes;
 
10737
  const char *__attr_name (unsigned i) const {
 
10738
    static const char *names[] = { "_id" }; return names[i];
 
10739
  }
 
10740
  const void *__attr (unsigned __i) const {
 
10741
    switch (__i) { case 0: return &_id; default: return 0; }
 
10742
  }
 
10743
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/LanguageID.h"
 
10744
};
 
10745
 
 
10746
 
 
10747
} // namespace Puma
 
10748
 
 
10749
#endif /* __language_id_h__ */
 
10750
 
 
10751
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
10752
// This file is part of PUMA.
 
10753
// Copyright (C) 1999-2003  The PUMA developer team.
 
10754
//                                                                
 
10755
// This program is free software;  you can redistribute it and/or 
 
10756
// modify it under the terms of the GNU General Public License as 
 
10757
// published by the Free Software Foundation; either version 2 of 
 
10758
// the License, or (at your option) any later version.            
 
10759
//                                                                
 
10760
// This program is distributed in the hope that it will be useful,
 
10761
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10762
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10763
// GNU General Public License for more details.                   
 
10764
//                                                                
 
10765
// You should have received a copy of the GNU General Public      
 
10766
// License along with this program; if not, write to the Free     
 
10767
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10768
// MA  02111-1307  USA                                            
 
10769
 
 
10770
#ifndef __Tokenizer_h__
 
10771
#define __Tokenizer_h__
 
10772
 
 
10773
// Tokenizer interface. Tokenizer read input from a "Source" and
 
10774
// form tokens, which used to fill a "Unit".
 
10775
 
 
10776
 
 
10777
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Source.h"
 
10778
// This file is part of PUMA.
 
10779
// Copyright (C) 1999-2003  The PUMA developer team.
 
10780
//                                                                
 
10781
// This program is free software;  you can redistribute it and/or 
 
10782
// modify it under the terms of the GNU General Public License as 
 
10783
// published by the Free Software Foundation; either version 2 of 
 
10784
// the License, or (at your option) any later version.            
 
10785
//                                                                
 
10786
// This program is distributed in the hope that it will be useful,
 
10787
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10788
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10789
// GNU General Public License for more details.                   
 
10790
//                                                                
 
10791
// You should have received a copy of the GNU General Public      
 
10792
// License along with this program; if not, write to the Free     
 
10793
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10794
// MA  02111-1307  USA                                            
 
10795
 
 
10796
#ifndef __source_h__
 
10797
#define __source_h__
 
10798
 
 
10799
namespace Puma {
 
10800
 
 
10801
 
 
10802
 
 
10803
#line 10804 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10804
} // closed Puma
 
10805
class CCExprResolve;
 
10806
class CExprResolve;
 
10807
class WinIfExists;
 
10808
class WinImportHandler;
 
10809
class WinMacros;
 
10810
class WinAsm;
 
10811
class WinDeclSpecs;
 
10812
class WinMemberExplSpec;
 
10813
class WinTypeKeywords;
 
10814
class WinFriend;
 
10815
class ExtAC;
 
10816
class ExtACBuilderCoupling;
 
10817
class ExtACSyntaxCoupling;
 
10818
class ExtACTree;
 
10819
class ExtACKeywords;
 
10820
class ExtGnu;
 
10821
class PragmaOnceUnitState;
 
10822
class PragmaOnce;
 
10823
class CMatchSyntax;
 
10824
namespace Puma {
 
10825
 
 
10826
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Source.h"
 
10827
class Source {
 
10828
#line 10829 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10829
  friend class ::CCExprResolve;
 
10830
  friend class ::CExprResolve;
 
10831
  friend class ::WinIfExists;
 
10832
  friend class ::WinImportHandler;
 
10833
  friend class ::WinMacros;
 
10834
  friend class ::WinAsm;
 
10835
  friend class ::WinDeclSpecs;
 
10836
  friend class ::WinMemberExplSpec;
 
10837
  friend class ::WinTypeKeywords;
 
10838
  friend class ::WinFriend;
 
10839
  friend class ::ExtAC;
 
10840
  friend class ::ExtACBuilderCoupling;
 
10841
  friend class ::ExtACSyntaxCoupling;
 
10842
  friend class ::ExtACTree;
 
10843
  friend class ::ExtACKeywords;
 
10844
  friend class ::ExtGnu;
 
10845
  friend class ::PragmaOnceUnitState;
 
10846
  friend class ::PragmaOnce;
 
10847
  friend class ::CMatchSyntax;
 
10848
 
 
10849
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Source.h"
 
10850
 
 
10851
public:
 
10852
  Source () {}
 
10853
  virtual ~Source () {}
 
10854
  virtual int read (char *dest, int n) = 0;
 
10855
  virtual int size () { return -1; }
 
10856
public:
 
10857
  typedef AC::TLE __AttrTypes;
 
10858
  const char *__attr_name (unsigned i) const { return 0; }
 
10859
  const void *__attr (unsigned __i) const { return 0; }
 
10860
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Source.h"
 
10861
};
 
10862
 
 
10863
 
 
10864
} // namespace Puma
 
10865
 
 
10866
#endif /* __source_h__ */
 
10867
 
 
10868
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
10869
// This file is part of PUMA.
 
10870
// Copyright (C) 1999-2003  The PUMA developer team.
 
10871
//                                                                
 
10872
// This program is free software;  you can redistribute it and/or 
 
10873
// modify it under the terms of the GNU General Public License as 
 
10874
// published by the Free Software Foundation; either version 2 of 
 
10875
// the License, or (at your option) any later version.            
 
10876
//                                                                
 
10877
// This program is distributed in the hope that it will be useful,
 
10878
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10879
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10880
// GNU General Public License for more details.                   
 
10881
//                                                                
 
10882
// You should have received a copy of the GNU General Public      
 
10883
// License along with this program; if not, write to the Free     
 
10884
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10885
// MA  02111-1307  USA                                            
 
10886
 
 
10887
#ifndef __unit_h__
 
10888
#define __unit_h__
 
10889
 
 
10890
/** \file
 
10891
 *  Token chain abstraction. */
 
10892
 
 
10893
 
 
10894
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
10895
// This file is part of PUMA.
 
10896
// Copyright (C) 1999-2003  The PUMA developer team.
 
10897
//                                                                
 
10898
// This program is free software;  you can redistribute it and/or 
 
10899
// modify it under the terms of the GNU General Public License as 
 
10900
// published by the Free Software Foundation; either version 2 of 
 
10901
// the License, or (at your option) any later version.            
 
10902
//                                                                
 
10903
// This program is distributed in the hope that it will be useful,
 
10904
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10905
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10906
// GNU General Public License for more details.                   
 
10907
//                                                                
 
10908
// You should have received a copy of the GNU General Public      
 
10909
// License along with this program; if not, write to the Free     
 
10910
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10911
// MA  02111-1307  USA                                            
 
10912
 
 
10913
#ifndef __list_h__
 
10914
#define __list_h__
 
10915
 
 
10916
/** \file
 
10917
 *  Double-linked list implementation. */
 
10918
 
 
10919
 
 
10920
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
10921
// This file is part of PUMA.
 
10922
// Copyright (C) 1999-2003  The PUMA developer team.
 
10923
//                                                                
 
10924
// This program is free software;  you can redistribute it and/or 
 
10925
// modify it under the terms of the GNU General Public License as 
 
10926
// published by the Free Software Foundation; either version 2 of 
 
10927
// the License, or (at your option) any later version.            
 
10928
//                                                                
 
10929
// This program is distributed in the hope that it will be useful,
 
10930
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
10931
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
10932
// GNU General Public License for more details.                   
 
10933
//                                                                
 
10934
// You should have received a copy of the GNU General Public      
 
10935
// License along with this program; if not, write to the Free     
 
10936
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
10937
// MA  02111-1307  USA                                            
 
10938
 
 
10939
#ifndef __list_element_h__
 
10940
#define __list_element_h__
 
10941
 
 
10942
/** \file
 
10943
 *  Double-linked list element. */
 
10944
 
 
10945
#include <assert.h>
 
10946
 
 
10947
namespace Puma {
 
10948
 
 
10949
 
 
10950
class List;
 
10951
 
 
10952
 
 
10953
/** \class ListElement ListElement.h Puma/ListElement.h
 
10954
 *  Double-linked list element type to be used as elements
 
10955
 *  for Puma::List. To be derived for concrete list elements. */
 
10956
 
 
10957
#line 10958 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10958
} // closed Puma
 
10959
class CCExprResolve;
 
10960
class CExprResolve;
 
10961
class WinIfExists;
 
10962
class WinImportHandler;
 
10963
class WinMacros;
 
10964
class WinAsm;
 
10965
class WinDeclSpecs;
 
10966
class WinMemberExplSpec;
 
10967
class WinTypeKeywords;
 
10968
class WinFriend;
 
10969
class ExtAC;
 
10970
class ExtACBuilderCoupling;
 
10971
class ExtACSyntaxCoupling;
 
10972
class ExtACTree;
 
10973
class ExtACKeywords;
 
10974
class ExtGnu;
 
10975
class PragmaOnceUnitState;
 
10976
class PragmaOnce;
 
10977
class CMatchSyntax;
 
10978
namespace Puma {
 
10979
 
 
10980
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
10981
class ListElement {
 
10982
#line 10983 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
10983
  friend class ::CCExprResolve;
 
10984
  friend class ::CExprResolve;
 
10985
  friend class ::WinIfExists;
 
10986
  friend class ::WinImportHandler;
 
10987
  friend class ::WinMacros;
 
10988
  friend class ::WinAsm;
 
10989
  friend class ::WinDeclSpecs;
 
10990
  friend class ::WinMemberExplSpec;
 
10991
  friend class ::WinTypeKeywords;
 
10992
  friend class ::WinFriend;
 
10993
  friend class ::ExtAC;
 
10994
  friend class ::ExtACBuilderCoupling;
 
10995
  friend class ::ExtACSyntaxCoupling;
 
10996
  friend class ::ExtACTree;
 
10997
  friend class ::ExtACKeywords;
 
10998
  friend class ::ExtGnu;
 
10999
  friend class ::PragmaOnceUnitState;
 
11000
  friend class ::PragmaOnce;
 
11001
  friend class ::CMatchSyntax;
 
11002
 
 
11003
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
11004
 
 
11005
  friend class List;
 
11006
 
 
11007
  List        *_belonging_to;
 
11008
  ListElement *_next;
 
11009
  ListElement *_prev;
 
11010
 
 
11011
public:
 
11012
  /** Constructor. */
 
11013
  ListElement () : _belonging_to ((List*)0) {}
 
11014
  /** Destructor. */
 
11015
  virtual ~ListElement () { assert (! _belonging_to); };
 
11016
 
 
11017
  /** Duplicate this element. */
 
11018
  virtual ListElement *duplicate () = 0;
 
11019
  /** Get the list this element belongs to. 
 
11020
   *  \return The list of NULL if not in a list. */
 
11021
  List *belonging_to () const { return _belonging_to; }
 
11022
public:
 
11023
  typedef AC::TL<Puma::List *,AC::TL<Puma::ListElement *,AC::TL<Puma::ListElement *,AC::TLE > > > __AttrTypes;
 
11024
  const char *__attr_name (unsigned i) const {
 
11025
    static const char *names[] = { "_belonging_to", "_next", "_prev" }; return names[i];
 
11026
  }
 
11027
  const void *__attr (unsigned __i) const {
 
11028
    switch (__i) { case 0: return &_belonging_to; case 1: return &_next; case 2: return &_prev; default: return 0; }
 
11029
  }
 
11030
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
11031
};
 
11032
 
 
11033
 
 
11034
} // namespace Puma
 
11035
 
 
11036
#endif /* __list_element_h__ */
 
11037
 
 
11038
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
11039
namespace Puma {
 
11040
 
 
11041
 
 
11042
/** \class List List.h Puma/List.h
 
11043
 *  Double-linked list implementation. */
 
11044
 
 
11045
#line 11046 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11046
} // closed Puma
 
11047
class CCExprResolve;
 
11048
class CExprResolve;
 
11049
class WinIfExists;
 
11050
class WinImportHandler;
 
11051
class WinMacros;
 
11052
class WinAsm;
 
11053
class WinDeclSpecs;
 
11054
class WinMemberExplSpec;
 
11055
class WinTypeKeywords;
 
11056
class WinFriend;
 
11057
class ExtAC;
 
11058
class ExtACBuilderCoupling;
 
11059
class ExtACSyntaxCoupling;
 
11060
class ExtACTree;
 
11061
class ExtACKeywords;
 
11062
class ExtGnu;
 
11063
class PragmaOnceUnitState;
 
11064
class PragmaOnce;
 
11065
class CMatchSyntax;
 
11066
namespace Puma {
 
11067
 
 
11068
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
11069
class List {
 
11070
#line 11071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11071
  friend class ::CCExprResolve;
 
11072
  friend class ::CExprResolve;
 
11073
  friend class ::WinIfExists;
 
11074
  friend class ::WinImportHandler;
 
11075
  friend class ::WinMacros;
 
11076
  friend class ::WinAsm;
 
11077
  friend class ::WinDeclSpecs;
 
11078
  friend class ::WinMemberExplSpec;
 
11079
  friend class ::WinTypeKeywords;
 
11080
  friend class ::WinFriend;
 
11081
  friend class ::ExtAC;
 
11082
  friend class ::ExtACBuilderCoupling;
 
11083
  friend class ::ExtACSyntaxCoupling;
 
11084
  friend class ::ExtACTree;
 
11085
  friend class ::ExtACKeywords;
 
11086
  friend class ::ExtGnu;
 
11087
  friend class ::PragmaOnceUnitState;
 
11088
  friend class ::PragmaOnce;
 
11089
  friend class ::CMatchSyntax;
 
11090
 
 
11091
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
11092
 
 
11093
  ListElement *_first;
 
11094
  ListElement *_last;
 
11095
 
 
11096
public:
 
11097
  /** Constructor. */
 
11098
  List () : _first ((ListElement*)0), _last ((ListElement*)0) {}
 
11099
  /** Copy-constructor.
 
11100
   *  \param copy The list to copy. */
 
11101
  List (const List &copy);
 
11102
  /** Destructor. Destroys the list elements. */
 
11103
  ~List();
 
11104
 
 
11105
  /** Assignment operator.
 
11106
   *  \param copy The list to copy. */
 
11107
  List &operator = (const List &copy);
 
11108
  /** Append the given list.
 
11109
   *  \param list The list to append. */
 
11110
  List &operator += (const List &list);
 
11111
  /** Create a new list containing the elements of this
 
11112
   *  list followed by the elements of the given list. 
 
11113
   *  \param list The other list. */
 
11114
  List operator + (const List &list);
 
11115
 
 
11116
  /** Destroy the list elements. */
 
11117
  void clear ();
 
11118
 
 
11119
  /** Append an element to the list. 
 
11120
   *  \param element The element. */
 
11121
  void append (ListElement &element);
 
11122
  /** Prepend an element to the list. 
 
11123
   *  \param element The element. */
 
11124
  void prepend (ListElement &element);
 
11125
  /** Insert an element at the given list position. 
 
11126
   *  \param at A list element where to insert the element. 
 
11127
   *  \param element The element. */
 
11128
  void insert (ListElement *at, ListElement &element);
 
11129
  /** Remove the given element from the list.
 
11130
   *  \param element The list element. */
 
11131
  void remove (ListElement *element);
 
11132
  /** Remove and destroy all elements between the
 
11133
   *  given list elements.
 
11134
   *  \param from The first list element to kill.
 
11135
   *  \param to The last list element to kill. */
 
11136
  void kill (ListElement *from, ListElement *to = (ListElement*)0)
 
11137
   { List discard; cut (discard, from, to); }
 
11138
 
 
11139
  /** Cut all elements between the given list elements.
 
11140
   *  \param out The container for the cutted elements (are appended).
 
11141
   *  \param from The first list element to cut.
 
11142
   *  \param to The last list element to cut. */
 
11143
  void cut (List &out, ListElement *from, ListElement *to = (ListElement*)0);
 
11144
  /** Copy all elements between the given list elements.
 
11145
   *  \param from The first list element to cut.
 
11146
   *  \param to The last list element to cut. 
 
11147
   *  \return A new list containing the copied elements. */
 
11148
  List *copy (ListElement *from = (ListElement*)0, ListElement *to = (ListElement*)0);
 
11149
  /** Insert copies of the elements of the given list at
 
11150
   *  the given list position.
 
11151
   *  \param at The list element at which to paste the list elements.
 
11152
   *  \param l The list containing the elements to paste. */
 
11153
  void paste (ListElement *at, const List &l);
 
11154
  /** Insert copies of the elements of the given list before
 
11155
   *  the given list position.
 
11156
   *  \param at The list element before which to paste the list elements.
 
11157
   *  \param l The list containing the elements to paste. */
 
11158
  void paste_before (ListElement *at, const List &l);
 
11159
  /** Insert the elements of the given list at the given 
 
11160
   *  list position. The elements are removed from the source
 
11161
   *  list.
 
11162
   *  \param at The list element at which to insert the list elements.
 
11163
   *  \param l The list containing the elements to insert. */
 
11164
  void move (ListElement *at, List &l);
 
11165
  /** Insert the elements of the given list before the given 
 
11166
   *  list position. The elements are removed from the source
 
11167
   *  list.
 
11168
   *  \param at The list element before which to insert the list elements.
 
11169
   *  \param l The list containing the elements to insert. */
 
11170
  void move_before (ListElement *at, List &l);
 
11171
 
 
11172
  /** Check if the list is empty. */
 
11173
  bool empty () const { return _first == (ListElement*)0; }
 
11174
  
 
11175
  /** Get the first element in the list. 
 
11176
   *  \return The element or NULL if list is empty. */
 
11177
  const ListElement *first () const { return _first; }
 
11178
  /** Get the last element in the list. 
 
11179
   *  \return The element or NULL if list is empty. */
 
11180
  const ListElement *last () const { return _last; }
 
11181
  /** Get the next element of the given element. 
 
11182
   *  \return The element or NULL if the given element is NULL. */
 
11183
  const ListElement *next (const ListElement *element) const
 
11184
   { return element ? element->_next : 0; }
 
11185
  /** Get the previous element of the given element. 
 
11186
   *  \return The element or NULL if the given element is NULL. */
 
11187
  const ListElement *prev (const ListElement *element) const 
 
11188
   { return element ? element->_prev : 0; }
 
11189
public:
 
11190
  typedef AC::TL<Puma::ListElement *,AC::TL<Puma::ListElement *,AC::TLE > > __AttrTypes;
 
11191
  const char *__attr_name (unsigned i) const {
 
11192
    static const char *names[] = { "_first", "_last" }; return names[i];
 
11193
  }
 
11194
  const void *__attr (unsigned __i) const {
 
11195
    switch (__i) { case 0: return &_first; case 1: return &_last; default: return 0; }
 
11196
  }
 
11197
#line 129 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
11198
};
 
11199
 
 
11200
 
 
11201
} // namespace Puma
 
11202
 
 
11203
#endif /* __list_h__ */
 
11204
 
 
11205
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11206
 
 
11207
#line 11208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11208
 
 
11209
#ifndef __ac_fwd_PragmaOnceUnitState__
 
11210
#define __ac_fwd_PragmaOnceUnitState__
 
11211
class PragmaOnceUnitState;
 
11212
namespace AC {
 
11213
  template <class JoinPoint>
 
11214
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp);
 
11215
  template <class JoinPoint>
 
11216
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after (JoinPoint *tjp);
 
11217
}
 
11218
#endif
 
11219
 
 
11220
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
11221
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
11222
#endif
 
11223
 
 
11224
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11225
// This file is part of PUMA.
 
11226
// Copyright (C) 1999-2003  The PUMA developer team.
 
11227
//                                                                
 
11228
// This program is free software;  you can redistribute it and/or 
 
11229
// modify it under the terms of the GNU General Public License as 
 
11230
// published by the Free Software Foundation; either version 2 of 
 
11231
// the License, or (at your option) any later version.            
 
11232
//                                                                
 
11233
// This program is distributed in the hope that it will be useful,
 
11234
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
11235
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
11236
// GNU General Public License for more details.                   
 
11237
//                                                                
 
11238
// You should have received a copy of the GNU General Public      
 
11239
// License along with this program; if not, write to the Free     
 
11240
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
11241
// MA  02111-1307  USA                                            
 
11242
 
 
11243
#ifndef __UnitState__
 
11244
#define __UnitState__
 
11245
 
 
11246
// The state of a unit: 
 
11247
// 1. modified by manipulations and not updated at the class registry
 
11248
// 2. modified by manipulations and updated at the class registry
 
11249
// 3. unmodified by manipulations and not updated at the class registry
 
11250
// 4. unmodified by manipulations and updated at the class registry
 
11251
 
 
11252
namespace Puma {
 
11253
 
 
11254
 
 
11255
 
 
11256
#line 11257 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11257
} // closed Puma
 
11258
class CCExprResolve;
 
11259
class CExprResolve;
 
11260
class WinIfExists;
 
11261
class WinImportHandler;
 
11262
class WinMacros;
 
11263
class WinAsm;
 
11264
class WinDeclSpecs;
 
11265
class WinMemberExplSpec;
 
11266
class WinTypeKeywords;
 
11267
class WinFriend;
 
11268
class ExtAC;
 
11269
class ExtACBuilderCoupling;
 
11270
class ExtACSyntaxCoupling;
 
11271
class ExtACTree;
 
11272
class ExtACKeywords;
 
11273
class ExtGnu;
 
11274
class PragmaOnceUnitState;
 
11275
class PragmaOnce;
 
11276
class CMatchSyntax;
 
11277
namespace Puma {
 
11278
 
 
11279
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11280
 
 
11281
#line 11282 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11282
} // closed Puma
 
11283
 
 
11284
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
11285
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
11286
 
 
11287
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11288
// This file is part of PUMA.
 
11289
// Copyright (C) 1999-2003  The PUMA developer team.
 
11290
//                                                                
 
11291
// This program is free software;  you can redistribute it and/or 
 
11292
// modify it under the terms of the GNU General Public License as 
 
11293
// published by the Free Software Foundation; either version 2 of 
 
11294
// the License, or (at your option) any later version.            
 
11295
//                                                                
 
11296
// This program is distributed in the hope that it will be useful,
 
11297
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
11298
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
11299
// GNU General Public License for more details.                   
 
11300
//                                                                
 
11301
// You should have received a copy of the GNU General Public      
 
11302
// License along with this program; if not, write to the Free     
 
11303
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
11304
// MA  02111-1307  USA                                            
 
11305
 
 
11306
#ifndef __PragmaOnceUnitState__
 
11307
#define __PragmaOnceUnitState__
 
11308
 
 
11309
 
 
11310
#line 11311 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11311
class CCExprResolve;
 
11312
class CExprResolve;
 
11313
class WinIfExists;
 
11314
class WinImportHandler;
 
11315
class WinMacros;
 
11316
class WinAsm;
 
11317
class WinDeclSpecs;
 
11318
class WinMemberExplSpec;
 
11319
class WinTypeKeywords;
 
11320
class WinFriend;
 
11321
class ExtAC;
 
11322
class ExtACBuilderCoupling;
 
11323
class ExtACSyntaxCoupling;
 
11324
class ExtACTree;
 
11325
class ExtACKeywords;
 
11326
class ExtGnu;
 
11327
class PragmaOnce;
 
11328
class CMatchSyntax;
 
11329
 
 
11330
#line 22 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11331
class PragmaOnceUnitState {
 
11332
#line 11333 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11333
 
 
11334
public:
 
11335
  static PragmaOnceUnitState *aspectof () {
 
11336
    static PragmaOnceUnitState __instance;
 
11337
    return &__instance;
 
11338
  }
 
11339
  static PragmaOnceUnitState *aspectOf () {
 
11340
    return aspectof ();
 
11341
  }
 
11342
private:
 
11343
 
 
11344
#line 22 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11345
 
 
11346
#line 11347 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11347
  friend class ::CCExprResolve;
 
11348
  friend class ::CExprResolve;
 
11349
  friend class ::WinIfExists;
 
11350
  friend class ::WinImportHandler;
 
11351
  friend class ::WinMacros;
 
11352
  friend class ::WinAsm;
 
11353
  friend class ::WinDeclSpecs;
 
11354
  friend class ::WinMemberExplSpec;
 
11355
  friend class ::WinTypeKeywords;
 
11356
  friend class ::WinFriend;
 
11357
  friend class ::ExtAC;
 
11358
  friend class ::ExtACBuilderCoupling;
 
11359
  friend class ::ExtACSyntaxCoupling;
 
11360
  friend class ::ExtACTree;
 
11361
  friend class ::ExtACKeywords;
 
11362
  friend class ::ExtGnu;
 
11363
  friend class ::PragmaOnce;
 
11364
  friend class ::CMatchSyntax;
 
11365
 
 
11366
#line 22 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11367
 
 
11368
  /******************************************************/
 
11369
  /* specific #pragma once unit state                   */
 
11370
  /******************************************************/
 
11371
 
 
11372
  // pointcut definitions
 
11373
  
 
11374
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11375
 
 
11376
 
 
11377
  
 
11378
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11379
 
 
11380
  
 
11381
  // initialize new state flag
 
11382
  
 
11383
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11384
 
 
11385
public: template<class JoinPoint> void __a0_after 
 
11386
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11387
 
 
11388
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11389
(JoinPoint *tjp)
 
11390
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11391
 {
 
11392
#line 11393 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11393
 
 
11394
  JoinPoint *&thisJoinPoint = tjp;
 
11395
 
 
11396
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11397
 
 
11398
#line 11399 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11399
 
 
11400
  typedef typename JoinPoint::That __JP_That;
 
11401
  typedef typename JoinPoint::Target __JP_Target;
 
11402
  typedef typename JoinPoint::Result __JP_Result;
 
11403
 
 
11404
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11405
 
 
11406
    thisJoinPoint->that ()->_once = false;
 
11407
  }
 
11408
#line 11409 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11409
 
 
11410
private:
 
11411
 
 
11412
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11413
 
 
11414
  
 
11415
  // initialize new flag for all managed units 
 
11416
  
 
11417
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11418
 
 
11419
public: template<class JoinPoint> void __a1_after 
 
11420
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11421
 
 
11422
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11423
(JoinPoint *tjp)
 
11424
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11425
 {
 
11426
#line 11427 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11427
 
 
11428
  typedef typename JoinPoint::That __JP_That;
 
11429
  typedef typename JoinPoint::Target __JP_Target;
 
11430
  typedef typename JoinPoint::Result __JP_Result;
 
11431
 
 
11432
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11433
 
 
11434
    // go through the whole unit hash table and reset the 
 
11435
    // `#pragma once' state of the units
 
11436
    typename __JP_That
 
11437
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11438
::UMapIter iter;
 
11439
    for (iter = tjp->that()->_umap.begin (); iter != tjp->that()->_umap.end (); ++iter)
 
11440
      (*iter).second->state ().onlyOnce (false);
 
11441
  }
 
11442
#line 11443 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11443
 
 
11444
private:
 
11445
 
 
11446
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11447
 
 
11448
 
 
11449
protected:
 
11450
  // this aspect should never be instantiated directly
 
11451
  PragmaOnceUnitState () {}
 
11452
public:
 
11453
  typedef AC::TLE __AttrTypes;
 
11454
  const char *__attr_name (unsigned i) const { return 0; }
 
11455
  const void *__attr (unsigned __i) const { return 0; }
 
11456
#line 56 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11457
};
 
11458
#line 11459 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11459
 
 
11460
namespace AC {
 
11461
  template <class JoinPoint>
 
11462
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp) {
 
11463
    ::PragmaOnceUnitState::aspectof()->__a0_after (tjp);
 
11464
  }
 
11465
  template <class JoinPoint>
 
11466
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after (JoinPoint *tjp) {
 
11467
    ::PragmaOnceUnitState::aspectof()->__a1_after (tjp);
 
11468
  }
 
11469
 
11470
 
 
11471
#line 56 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11472
 
 
11473
 
 
11474
 
 
11475
#endif /* __PragmaOnceUnitState__ */
 
11476
 
 
11477
#line 8 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11478
#endif
 
11479
namespace Puma {
 
11480
 
 
11481
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11482
class UnitState {
 
11483
#line 11484 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11484
  friend class ::CCExprResolve;
 
11485
  friend class ::CExprResolve;
 
11486
  friend class ::WinIfExists;
 
11487
  friend class ::WinImportHandler;
 
11488
  friend class ::WinMacros;
 
11489
  friend class ::WinAsm;
 
11490
  friend class ::WinDeclSpecs;
 
11491
  friend class ::WinMemberExplSpec;
 
11492
  friend class ::WinTypeKeywords;
 
11493
  friend class ::WinFriend;
 
11494
  friend class ::ExtAC;
 
11495
  friend class ::ExtACBuilderCoupling;
 
11496
  friend class ::ExtACSyntaxCoupling;
 
11497
  friend class ::ExtACTree;
 
11498
  friend class ::ExtACKeywords;
 
11499
  friend class ::ExtGnu;
 
11500
  friend class ::PragmaOnceUnitState;
 
11501
  friend class ::PragmaOnce;
 
11502
  friend class ::CMatchSyntax;
 
11503
 
 
11504
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11505
 
 
11506
  bool _modified;
 
11507
  bool _updated;
 
11508
  long _lastModified;
 
11509
      
 
11510
public:
 
11511
  
 
11512
#line 11513 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11513
public: __attribute__((always_inline)) inline void __exec_old_C1();
 
11514
 
 
11515
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11516
UnitState ();
 
11517
      
 
11518
  bool isModified () const;
 
11519
  bool isUpdated () const;
 
11520
  long lastModified () const;
 
11521
 
 
11522
  // Is modified and has to be updated.
 
11523
  void modified ();
 
11524
  void lastModified (long);
 
11525
  void unmodified ();
 
11526
  void updated ();
 
11527
   private:
 
11528
 
 
11529
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
11530
 bool _once ;
 
11531
public :
 
11532
 
 
11533
bool onlyOnce ( ) const { return _once ; }
 
11534
void onlyOnce ( bool v ) { _once = v ; }public:
 
11535
  typedef AC::TL<bool,AC::TL<bool,AC::TL<long int,AC::TL<bool,AC::TLE > > > > __AttrTypes;
 
11536
  const char *__attr_name (unsigned i) const {
 
11537
    static const char *names[] = { "_modified", "_updated", "_lastModified", "_once" }; return names[i];
 
11538
  }
 
11539
  const void *__attr (unsigned __i) const {
 
11540
    switch (__i) { case 0: return &_modified; case 1: return &_updated; case 2: return &_lastModified; case 3: return &_once; default: return 0; }
 
11541
  }
 
11542
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11543
 
 
11544
#line 11545 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11545
 
 
11546
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 {
 
11547
  typedef TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 __TJP;
 
11548
  typedef TResult Result;
 
11549
  typedef TThat   That;
 
11550
  typedef TTarget Target;
 
11551
  enum { ARGS = TArgs::ARGS };
 
11552
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
11553
  static const int JPID = 4978;
 
11554
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
11555
  struct Res {
 
11556
    typedef void Type;
 
11557
    typedef void ReferredType;
 
11558
  };
 
11559
 
 
11560
  That *_that;
 
11561
 
 
11562
  inline That *that() {return (That*)_that;}
 
11563
 
 
11564
};
 
11565
 
 
11566
 
 
11567
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11568
 
 
11569
#line 11570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11570
 
 
11571
public:
 
11572
inline UnitState (const Puma::UnitState & arg0) : _modified (arg0._modified), _updated (arg0._updated), _lastModified (arg0._lastModified), _once (arg0._once) {
 
11573
  typedef TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0< void, ::Puma::UnitState , ::Puma::UnitState ,  AC::TL< const ::Puma::UnitState & , AC::TLE > > __TJP;
 
11574
  __TJP tjp;
 
11575
  tjp._that =  (__TJP::That*)this;
 
11576
  AC::invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after<__TJP> (&tjp);
 
11577
 
 
11578
}
 
11579
 
 
11580
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11581
};
 
11582
 
 
11583
 
 
11584
#line 11585 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11585
 
 
11586
 
 
11587
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma9UnitStateC1Ev_0 {
 
11588
  typedef TJP__ZN4Puma9UnitStateC1Ev_0 __TJP;
 
11589
  typedef TResult Result;
 
11590
  typedef TThat   That;
 
11591
  typedef TTarget Target;
 
11592
  enum { ARGS = TArgs::ARGS };
 
11593
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
11594
  static const int JPID = 4954;
 
11595
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
11596
  struct Res {
 
11597
    typedef void Type;
 
11598
    typedef void ReferredType;
 
11599
  };
 
11600
 
 
11601
  That *_that;
 
11602
 
 
11603
  inline That *that() {return (That*)_that;}
 
11604
 
 
11605
};
 
11606
 
 
11607
 
 
11608
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11609
inline UnitState::UnitState ()
 
11610
 
 
11611
#line 11612 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11612
{
 
11613
  typedef TJP__ZN4Puma9UnitStateC1Ev_0< void, ::Puma::UnitState , ::Puma::UnitState ,  AC::TLE > __TJP;
 
11614
    __TJP tjp;
 
11615
  tjp._that =  (__TJP::That*)this;
 
11616
    this->__exec_old_C1();
 
11617
  AC::invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after<__TJP> (&tjp);
 
11618
  
 
11619
}
 
11620
__attribute__((always_inline)) inline void Puma::UnitState::__exec_old_C1()
 
11621
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
11622
{ _modified = false; _updated = false; _lastModified = 0; }
 
11623
 
 
11624
inline bool UnitState::isModified () const 
 
11625
 { return _modified; }
 
11626
inline bool UnitState::isUpdated () const 
 
11627
 { return _updated; }
 
11628
inline long UnitState::lastModified () const
 
11629
 { return _lastModified; }
 
11630
 
 
11631
inline void UnitState::modified () 
 
11632
 { _modified = true; _updated = false; _lastModified = 0; }
 
11633
inline void UnitState::unmodified () 
 
11634
 { _modified = false; }
 
11635
inline void UnitState::updated () 
 
11636
 { _updated = true; }
 
11637
inline void UnitState::lastModified (long when) 
 
11638
 { _lastModified = when; }
 
11639
 
 
11640
 
 
11641
} // namespace Puma
 
11642
 
 
11643
#endif /* __UnitState__ */
 
11644
 
 
11645
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
11646
namespace Puma {
 
11647
 
 
11648
 
 
11649
class Token;
 
11650
 
 
11651
 
 
11652
/** \class Unit Unit.h Puma/Unit.h
 
11653
 *  Token chain abstraction of a source file or string. 
 
11654
 *  
 
11655
 *  A token unit is the result of scanning a file or string
 
11656
 *  containing recognizable source code. The unit consists
 
11657
 *  of a list of tokens that directly map to the characters
 
11658
 *  and words of the source code.
 
11659
 *
 
11660
 *  A unit can have different states, such as being modified
 
11661
 *  or not. After changing something on a unit, its state
 
11662
 *  should be set to being modified.
 
11663
 *
 
11664
 *  All source code manipulations resp. transformations provided
 
11665
 *  by Puma are based on manipulating the token chain. Tokens
 
11666
 *  can be added, moved, removed, and so on. 
 
11667
 *
 
11668
 *  Translating the token chain back to the source code text is 
 
11669
 *  done by printing the unit using method Puma::Unit::print()
 
11670
 *  or as shown in the following example.
 
11671
 *  \code 
 
11672
 * ...
 
11673
 * std::ofstream file("code.cc");
 
11674
 * file << unit;
 
11675
 * file.close();
 
11676
 *  \endcode */
 
11677
 
 
11678
#line 11679 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11679
} // closed Puma
 
11680
class CCExprResolve;
 
11681
class CExprResolve;
 
11682
class WinIfExists;
 
11683
class WinImportHandler;
 
11684
class WinMacros;
 
11685
class WinAsm;
 
11686
class WinDeclSpecs;
 
11687
class WinMemberExplSpec;
 
11688
class WinTypeKeywords;
 
11689
class WinFriend;
 
11690
class ExtAC;
 
11691
class ExtACBuilderCoupling;
 
11692
class ExtACSyntaxCoupling;
 
11693
class ExtACTree;
 
11694
class ExtACKeywords;
 
11695
class ExtGnu;
 
11696
class PragmaOnceUnitState;
 
11697
class PragmaOnce;
 
11698
class CMatchSyntax;
 
11699
namespace Puma {
 
11700
 
 
11701
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
11702
class Unit : public List, public Printable {
 
11703
#line 11704 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11704
  friend class ::CCExprResolve;
 
11705
  friend class ::CExprResolve;
 
11706
  friend class ::WinIfExists;
 
11707
  friend class ::WinImportHandler;
 
11708
  friend class ::WinMacros;
 
11709
  friend class ::WinAsm;
 
11710
  friend class ::WinDeclSpecs;
 
11711
  friend class ::WinMemberExplSpec;
 
11712
  friend class ::WinTypeKeywords;
 
11713
  friend class ::WinFriend;
 
11714
  friend class ::ExtAC;
 
11715
  friend class ::ExtACBuilderCoupling;
 
11716
  friend class ::ExtACSyntaxCoupling;
 
11717
  friend class ::ExtACTree;
 
11718
  friend class ::ExtACKeywords;
 
11719
  friend class ::ExtGnu;
 
11720
  friend class ::PragmaOnceUnitState;
 
11721
  friend class ::PragmaOnce;
 
11722
  friend class ::CMatchSyntax;
 
11723
 
 
11724
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
11725
 
 
11726
  char *_name;
 
11727
  UnitState _state;
 
11728
 
 
11729
public:
 
11730
  /** Constructor. */
 
11731
  Unit () : List (), _name ((char*)0) {}
 
11732
  /** Copy-constructor.
 
11733
   *  \param list The token chain to copy. */
 
11734
  Unit (const List &list) : List (list), _name ((char*)0) {}
 
11735
  /** Destructor. Destroys the tokens. */
 
11736
  virtual ~Unit ();
 
11737
  /** Set the name of the unit (usually the file name).
 
11738
   *  \param name The name. */
 
11739
  virtual void name (const char *name);
 
11740
  /** Get the name of the unit (usually the file name). */
 
11741
  char *name () const { return _name; }
 
11742
  /** Print the tokens of the unit on the given stream.
 
11743
   *  \param os The output stream. */
 
11744
  virtual void print (ostream &os) const;
 
11745
  /** Check if this is a unit for a file. */
 
11746
  virtual bool isFile () const { return false; }
 
11747
  /** Check if this is a unit for a macro expansion. */
 
11748
  virtual bool isMacroExp () const { return false; }
 
11749
  /** Get the state of the unit. */
 
11750
  UnitState &state () { return _state; }
 
11751
 
 
11752
public:
 
11753
  /** Get the first token in the unit. 
 
11754
   *  \return The token or NULL if unit is empty. */
 
11755
  Token *first () const { return (Token*)List::first(); }
 
11756
  /** Get the last token in the unit. 
 
11757
   *  \return The token or NULL if unit is empty. */
 
11758
  Token *last () const { return (Token*)List::last(); }
 
11759
  /** Get the next token of the given token. 
 
11760
   *  \return The token or NULL if the given token is NULL. */
 
11761
  Token *next (const Token *token) const { return (Token*)List::next((const ListElement*)token); }
 
11762
  /** Get the previous token of the given token. 
 
11763
   *  \return The token or NULL if the given token is NULL. */
 
11764
  Token *prev (const Token *token) const { return (Token*)List::prev((const ListElement*)token); }
 
11765
public:
 
11766
  typedef AC::TL<char *,AC::TL<Puma::UnitState,AC::TLE > > __AttrTypes;
 
11767
  const char *__attr_name (unsigned i) const {
 
11768
    static const char *names[] = { "_name", "_state" }; return names[i];
 
11769
  }
 
11770
  const void *__attr (unsigned __i) const {
 
11771
    switch (__i) { case 0: return &_name; case 1: return &_state; default: return 0; }
 
11772
  }
 
11773
#line 100 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
11774
};
 
11775
 
 
11776
 
 
11777
} // namespace Puma
 
11778
 
 
11779
#endif /* __unit_h__ */
 
11780
 
 
11781
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
11782
namespace Puma {
 
11783
 
 
11784
 
 
11785
 
 
11786
#line 11787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11787
} // closed Puma
 
11788
class CCExprResolve;
 
11789
class CExprResolve;
 
11790
class WinIfExists;
 
11791
class WinImportHandler;
 
11792
class WinMacros;
 
11793
class WinAsm;
 
11794
class WinDeclSpecs;
 
11795
class WinMemberExplSpec;
 
11796
class WinTypeKeywords;
 
11797
class WinFriend;
 
11798
class ExtAC;
 
11799
class ExtACBuilderCoupling;
 
11800
class ExtACSyntaxCoupling;
 
11801
class ExtACTree;
 
11802
class ExtACKeywords;
 
11803
class ExtGnu;
 
11804
class PragmaOnceUnitState;
 
11805
class PragmaOnce;
 
11806
class CMatchSyntax;
 
11807
namespace Puma {
 
11808
 
 
11809
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
11810
class Tokenizer {
 
11811
#line 11812 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11812
  friend class ::CCExprResolve;
 
11813
  friend class ::CExprResolve;
 
11814
  friend class ::WinIfExists;
 
11815
  friend class ::WinImportHandler;
 
11816
  friend class ::WinMacros;
 
11817
  friend class ::WinAsm;
 
11818
  friend class ::WinDeclSpecs;
 
11819
  friend class ::WinMemberExplSpec;
 
11820
  friend class ::WinTypeKeywords;
 
11821
  friend class ::WinFriend;
 
11822
  friend class ::ExtAC;
 
11823
  friend class ::ExtACBuilderCoupling;
 
11824
  friend class ::ExtACSyntaxCoupling;
 
11825
  friend class ::ExtACTree;
 
11826
  friend class ::ExtACKeywords;
 
11827
  friend class ::ExtGnu;
 
11828
  friend class ::PragmaOnceUnitState;
 
11829
  friend class ::PragmaOnce;
 
11830
  friend class ::CMatchSyntax;
 
11831
 
 
11832
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
11833
 
 
11834
public:
 
11835
  virtual ~Tokenizer () {}
 
11836
  virtual void fill_unit (Source &in, Unit &unit) = 0;
 
11837
public:
 
11838
  typedef AC::TLE __AttrTypes;
 
11839
  const char *__attr_name (unsigned i) const { return 0; }
 
11840
  const void *__attr (unsigned __i) const { return 0; }
 
11841
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
11842
};
 
11843
 
 
11844
 
 
11845
} // namespace Puma
 
11846
 
 
11847
#endif /* __Tokenizer_h__ */
 
11848
 
 
11849
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
11850
namespace Puma {
 
11851
 
 
11852
 
 
11853
class Token;
 
11854
 
 
11855
 
 
11856
#line 11857 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11857
} // closed Puma
 
11858
class CCExprResolve;
 
11859
class CExprResolve;
 
11860
class WinIfExists;
 
11861
class WinImportHandler;
 
11862
class WinMacros;
 
11863
class WinAsm;
 
11864
class WinDeclSpecs;
 
11865
class WinMemberExplSpec;
 
11866
class WinTypeKeywords;
 
11867
class WinFriend;
 
11868
class ExtAC;
 
11869
class ExtACBuilderCoupling;
 
11870
class ExtACSyntaxCoupling;
 
11871
class ExtACTree;
 
11872
class ExtACKeywords;
 
11873
class ExtGnu;
 
11874
class PragmaOnceUnitState;
 
11875
class PragmaOnce;
 
11876
class CMatchSyntax;
 
11877
namespace Puma {
 
11878
 
 
11879
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
11880
class CScanner : public CRecognizer, public Tokenizer {
 
11881
#line 11882 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11882
  friend class ::CCExprResolve;
 
11883
  friend class ::CExprResolve;
 
11884
  friend class ::WinIfExists;
 
11885
  friend class ::WinImportHandler;
 
11886
  friend class ::WinMacros;
 
11887
  friend class ::WinAsm;
 
11888
  friend class ::WinDeclSpecs;
 
11889
  friend class ::WinMemberExplSpec;
 
11890
  friend class ::WinTypeKeywords;
 
11891
  friend class ::WinFriend;
 
11892
  friend class ::ExtAC;
 
11893
  friend class ::ExtACBuilderCoupling;
 
11894
  friend class ::ExtACSyntaxCoupling;
 
11895
  friend class ::ExtACTree;
 
11896
  friend class ::ExtACKeywords;
 
11897
  friend class ::ExtGnu;
 
11898
  friend class ::PragmaOnceUnitState;
 
11899
  friend class ::PragmaOnce;
 
11900
  friend class ::CMatchSyntax;
 
11901
 
 
11902
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
11903
 
 
11904
  Location loc;
 
11905
  ErrorSink &err;
 
11906
 
 
11907
  Token *make_token (CRecognizer::Lang lang, int expr, int len);
 
11908
  LanguageID map_lang (CRecognizer::Lang lang);
 
11909
  Token *scan ();
 
11910
  void scan_all (Unit &unit);
 
11911
 
 
11912
public:
 
11913
  CScanner (ErrorSink &error_stream) : err (error_stream) {}
 
11914
  virtual ~CScanner () {}
 
11915
  void configure (const Config &);
 
11916
  
 
11917
#line 11918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11918
public: __attribute__((always_inline)) inline void __exec_old_fill_unit(::Puma::Source & in,::Puma::Unit & unit);
 
11919
 
 
11920
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
11921
void fill_unit (Source &in, Unit &unit);
 
11922
  
 
11923
#line 11924 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11924
public: __attribute__((always_inline)) inline void __exec_old_fill_unit(const char * in,::Puma::Unit & unit);
 
11925
 
 
11926
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
11927
void fill_unit (const char *in, Unit &unit);
 
11928
public:
 
11929
  typedef AC::TL<Puma::Location,AC::TL<Puma::ErrorSink &,AC::TLE > > __AttrTypes;
 
11930
  const char *__attr_name (unsigned i) const {
 
11931
    static const char *names[] = { "loc", "err" }; return names[i];
 
11932
  }
 
11933
  const void *__attr (unsigned __i) const {
 
11934
    switch (__i) { case 0: return &loc; case 1: return &err; default: return 0; }
 
11935
  }
 
11936
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
11937
};
 
11938
 
 
11939
 
 
11940
} // namespace Puma
 
11941
 
 
11942
#endif /* __c_scanner_h__ */
 
11943
 
 
11944
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
11945
namespace Puma {
 
11946
 
 
11947
 
 
11948
class Source;
 
11949
class CTypeInfo;
 
11950
 
 
11951
 
 
11952
#line 11953 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11953
} // closed Puma
 
11954
class CCExprResolve;
 
11955
class CExprResolve;
 
11956
class WinIfExists;
 
11957
class WinImportHandler;
 
11958
class WinMacros;
 
11959
class WinAsm;
 
11960
class WinDeclSpecs;
 
11961
class WinMemberExplSpec;
 
11962
class WinTypeKeywords;
 
11963
class WinFriend;
 
11964
class ExtAC;
 
11965
class ExtACBuilderCoupling;
 
11966
class ExtACSyntaxCoupling;
 
11967
class ExtACTree;
 
11968
class ExtACKeywords;
 
11969
class ExtGnu;
 
11970
class PragmaOnceUnitState;
 
11971
class PragmaOnce;
 
11972
class CMatchSyntax;
 
11973
namespace Puma {
 
11974
 
 
11975
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
11976
class CProject : public Project {
 
11977
#line 11978 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
11978
  friend class ::CCExprResolve;
 
11979
  friend class ::CExprResolve;
 
11980
  friend class ::WinIfExists;
 
11981
  friend class ::WinImportHandler;
 
11982
  friend class ::WinMacros;
 
11983
  friend class ::WinAsm;
 
11984
  friend class ::WinDeclSpecs;
 
11985
  friend class ::WinMemberExplSpec;
 
11986
  friend class ::WinTypeKeywords;
 
11987
  friend class ::WinFriend;
 
11988
  friend class ::ExtAC;
 
11989
  friend class ::ExtACBuilderCoupling;
 
11990
  friend class ::ExtACSyntaxCoupling;
 
11991
  friend class ::ExtACTree;
 
11992
  friend class ::ExtACKeywords;
 
11993
  friend class ::ExtGnu;
 
11994
  friend class ::PragmaOnceUnitState;
 
11995
  friend class ::PragmaOnce;
 
11996
  friend class ::CMatchSyntax;
 
11997
 
 
11998
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
11999
 
 
12000
  Config _config;
 
12001
  CScanner _scanner;
 
12002
 
 
12003
public:
 
12004
  CProject (ErrorStream &e);
 
12005
 
 
12006
  // Constructor: Add some source directories.
 
12007
  CProject (ErrorStream &, const char *defs, 
 
12008
               const char *decls = (const char*)0); 
 
12009
 
 
12010
  // Constructor: Setup preprocessor configuration according to
 
12011
  // command line parameter and the global config file and
 
12012
  // add some source directories.
 
12013
  CProject (ErrorStream &, int &argc, char **&argv, 
 
12014
            const char *defs = (const char*)0, 
 
12015
            const char *decls = (const char*)0);
 
12016
 
 
12017
public: // Project configuration 
 
12018
  // Get the preprocessor configuration.
 
12019
  Config &config ();
 
12020
 
 
12021
  // Configure the project from the command line or a file.
 
12022
  virtual void configure (Config &);
 
12023
 
 
12024
  // Add a new file to the project.
 
12025
  Unit *addFile (Filename file);
 
12026
 
 
12027
public: // Scanner interface
 
12028
  // Get the scanner.
 
12029
  CScanner &scanner ();
 
12030
 
 
12031
  // Scan the file `file' or the source if given. When
 
12032
  // scanning a source the resulting unit gets the name `file'.
 
12033
  
 
12034
#line 12035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12035
public: __attribute__((always_inline)) inline ::Puma::Unit * __exec_old_scanFile(const char * file,::Puma::Source * ,bool isFile);
 
12036
 
 
12037
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
12038
virtual Unit *scanFile (const char *file, Source * = (Source*)0, 
 
12039
                          bool isFile = true);
 
12040
        
 
12041
  // Scan a string. The resulting unit gets the name `name'.
 
12042
  // (and will not be registered at the unit manager!)
 
12043
  virtual Unit *scanString (const char *str, 
 
12044
                            const char *name = (const char*)0);
 
12045
 
 
12046
public: // Miscellaneous Functions
 
12047
 
 
12048
  // Give the filename needed to include a particular header file
 
12049
  Filename getInclString (Filename filename);
 
12050
 
 
12051
private:
 
12052
  // Map the type string from --size-type and --ptrdiff-type
 
12053
  // to real Puma type.
 
12054
  CTypeInfo *mapType (const char *) const;
 
12055
public:
 
12056
  typedef AC::TL<Puma::Config,AC::TL<Puma::CScanner,AC::TLE > > __AttrTypes;
 
12057
  const char *__attr_name (unsigned i) const {
 
12058
    static const char *names[] = { "_config", "_scanner" }; return names[i];
 
12059
  }
 
12060
  const void *__attr (unsigned __i) const {
 
12061
    switch (__i) { case 0: return &_config; case 1: return &_scanner; default: return 0; }
 
12062
  }
 
12063
#line 86 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
12064
};
 
12065
 
 
12066
inline Config &CProject::config () 
 
12067
 { return _config; }
 
12068
inline CScanner &CProject::scanner () 
 
12069
 { return _scanner; }
 
12070
 
 
12071
 
 
12072
} // namespace Puma
 
12073
 
 
12074
#endif /* __CProject_h__ */
 
12075
 
 
12076
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDatabase.h"
 
12077
using namespace std;
 
12078
 
 
12079
namespace Puma {
 
12080
 
 
12081
 
 
12082
class CObjectInfo;
 
12083
class CClassInfo;
 
12084
class CUnionInfo;
 
12085
class CEnumInfo;
 
12086
class CTypedefInfo;
 
12087
class CTemplateParamInfo;
 
12088
class CTypeInfo;
 
12089
class CFileInfo;
 
12090
class Token;
 
12091
 
 
12092
/** \class CSemDatabase CSemDatabase.h Puma/CSemDatabase.h
 
12093
 *  Semantic information database. Contains all semantic objects
 
12094
 *  created during the semantic analysis for one translation
 
12095
 *  unit. */
 
12096
 
 
12097
#line 12098 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12098
} // closed Puma
 
12099
class CCExprResolve;
 
12100
class CExprResolve;
 
12101
class WinIfExists;
 
12102
class WinImportHandler;
 
12103
class WinMacros;
 
12104
class WinAsm;
 
12105
class WinDeclSpecs;
 
12106
class WinMemberExplSpec;
 
12107
class WinTypeKeywords;
 
12108
class WinFriend;
 
12109
class ExtAC;
 
12110
class ExtACBuilderCoupling;
 
12111
class ExtACSyntaxCoupling;
 
12112
class ExtACTree;
 
12113
class ExtACKeywords;
 
12114
class ExtGnu;
 
12115
class PragmaOnceUnitState;
 
12116
class PragmaOnce;
 
12117
class CMatchSyntax;
 
12118
namespace Puma {
 
12119
 
 
12120
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDatabase.h"
 
12121
 
 
12122
#line 12123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12123
} // closed Puma
 
12124
 
 
12125
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
 
12126
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
 
12127
 
 
12128
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
12129
// This file is part of PUMA.
 
12130
// Copyright (C) 1999-2003  The PUMA developer team.
 
12131
//                                                                
 
12132
// This program is free software;  you can redistribute it and/or 
 
12133
// modify it under the terms of the GNU General Public License as 
 
12134
// published by the Free Software Foundation; either version 2 of 
 
12135
// the License, or (at your option) any later version.            
 
12136
//                                                                
 
12137
// This program is distributed in the hope that it will be useful,
 
12138
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
12139
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
12140
// GNU General Public License for more details.                   
 
12141
//                                                                
 
12142
// You should have received a copy of the GNU General Public      
 
12143
// License along with this program; if not, write to the Free     
 
12144
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
12145
// MA  02111-1307  USA                                            
 
12146
 
 
12147
#ifndef __ext_ac_ah__
 
12148
#define __ext_ac_ah__
 
12149
 
 
12150
#include <string.h>
 
12151
 
 
12152
 
 
12153
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
12154
// This file is part of PUMA.
 
12155
// Copyright (C) 1999-2003  The PUMA developer team.
 
12156
//                                                                
 
12157
// This program is free software;  you can redistribute it and/or 
 
12158
// modify it under the terms of the GNU General Public License as 
 
12159
// published by the Free Software Foundation; either version 2 of 
 
12160
// the License, or (at your option) any later version.            
 
12161
//                                                                
 
12162
// This program is distributed in the hope that it will be useful,
 
12163
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
12164
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
12165
// GNU General Public License for more details.                   
 
12166
//                                                                
 
12167
// You should have received a copy of the GNU General Public      
 
12168
// License along with this program; if not, write to the Free     
 
12169
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
12170
// MA  02111-1307  USA                                            
 
12171
 
 
12172
#ifndef __ACTree_h__
 
12173
#define __ACTree_h__
 
12174
 
 
12175
 
 
12176
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
12177
 
 
12178
#line 12179 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12179
 
 
12180
#ifndef __ac_fwd_ExtACTree__
 
12181
#define __ac_fwd_ExtACTree__
 
12182
class ExtACTree;
 
12183
namespace AC {
 
12184
  template <class JoinPoint>
 
12185
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp);
 
12186
  template <class JoinPoint>
 
12187
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp);
 
12188
}
 
12189
#endif
 
12190
 
 
12191
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
12192
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
12193
#endif
 
12194
 
 
12195
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
12196
// This file is part of PUMA.
 
12197
// Copyright (C) 1999-2003  The PUMA developer team.
 
12198
//                                                                
 
12199
// This program is free software;  you can redistribute it and/or 
 
12200
// modify it under the terms of the GNU General Public License as 
 
12201
// published by the Free Software Foundation; either version 2 of 
 
12202
// the License, or (at your option) any later version.            
 
12203
//                                                                
 
12204
// This program is distributed in the hope that it will be useful,
 
12205
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
12206
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
12207
// GNU General Public License for more details.                   
 
12208
//                                                                
 
12209
// You should have received a copy of the GNU General Public      
 
12210
// License along with this program; if not, write to the Free     
 
12211
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
12212
// MA  02111-1307  USA                                            
 
12213
 
 
12214
#ifndef __CTree_h__
 
12215
#define __CTree_h__
 
12216
 
 
12217
/** \file 
 
12218
 *  C/C++ syntax tree classes. */
 
12219
 
 
12220
namespace Puma {
 
12221
 
 
12222
 
 
12223
// Syntax tree node hierarchy:
 
12224
class CTree;
 
12225
class   CT_Statement;          
 
12226
class     CT_LabelStmt;
 
12227
class     CT_IfStmt;
 
12228
class     CT_IfElseStmt;
 
12229
class     CT_SwitchStmt;
 
12230
class     CT_BreakStmt;
 
12231
class     CT_ExprStmt;
 
12232
class     CT_WhileStmt;
 
12233
class     CT_DoStmt;
 
12234
class     CT_ForStmt;
 
12235
class     CT_ContinueStmt;
 
12236
class     CT_ReturnStmt;
 
12237
class     CT_GotoStmt;
 
12238
class     CT_DeclStmt;
 
12239
class     CT_CaseStmt;
 
12240
class     CT_DefaultStmt;
 
12241
class     CT_TryStmt;
 
12242
class   CT_Expression;
 
12243
class     CT_Call;
 
12244
class       CT_CallExpr;
 
12245
class       CT_ImplicitCall;
 
12246
class     CT_ThrowExpr;
 
12247
class     CT_NewExpr;
 
12248
class     CT_DeleteExpr;
 
12249
class     CT_ConstructExpr;
 
12250
class     CT_Integer;
 
12251
class     CT_Character;
 
12252
class       CT_WideCharacter;
 
12253
class     CT_Float;
 
12254
class     CT_Bool;
 
12255
class     CT_BracedExpr;
 
12256
class     CT_BinaryExpr;
 
12257
class       CT_MembPtrExpr;
 
12258
class         CT_MembRefExpr;
 
12259
class     CT_UnaryExpr;
 
12260
class       CT_PostfixExpr;
 
12261
class       CT_AddrExpr;
 
12262
class       CT_DerefExpr;
 
12263
class     CT_IfThenExpr;
 
12264
class     CT_CmpdLiteral;
 
12265
class     CT_IndexExpr;
 
12266
class     CT_CastExpr;
 
12267
class     CT_StaticCast;
 
12268
class       CT_ConstCast;
 
12269
class       CT_ReintCast;
 
12270
class       CT_DynamicCast;
 
12271
class     CT_TypeidExpr;
 
12272
class     CT_SizeofExpr;
 
12273
class     CT_MembDesignator;
 
12274
class     CT_IndexDesignator;
 
12275
class     CT_ImplicitCast;
 
12276
class     CT_MembInit;
 
12277
class   CT_DeclSpec;
 
12278
class     CT_PrimDeclSpec;
 
12279
class     CT_NamedType;
 
12280
class     CT_ClassSpec;
 
12281
class       CT_UnionSpec;
 
12282
class       CT_EnumSpec;
 
12283
class     CT_ExceptionSpec;
 
12284
class   CT_Declarator;
 
12285
class     CT_InitDeclarator;
 
12286
class     CT_BracedDeclarator;
 
12287
class     CT_ArrayDeclarator;
 
12288
class     CT_FctDeclarator;
 
12289
class     CT_RefDeclarator;
 
12290
class     CT_PtrDeclarator;
 
12291
class     CT_MembPtrDeclarator;
 
12292
class     CT_BitFieldDeclarator;
 
12293
class   CT_Decl;
 
12294
class     CT_ObjDecl;
 
12295
class     CT_ArgDecl;
 
12296
class     CT_AccessDecl;
 
12297
class       CT_UsingDecl;
 
12298
class     CT_FctDef;
 
12299
class     CT_AsmDef;
 
12300
class     CT_EnumDef;
 
12301
class     CT_ClassDef;
 
12302
class       CT_UnionDef;
 
12303
class     CT_Enumerator;
 
12304
class     CT_LinkageSpec;
 
12305
class     CT_Handler;
 
12306
class     CT_TemplateDecl;
 
12307
class     CT_TemplateParamDecl;
 
12308
class       CT_TypeParamDecl;
 
12309
class       CT_NonTypeParamDecl;
 
12310
class     CT_NamespaceDef;
 
12311
class     CT_NamespaceAliasDef;
 
12312
class     CT_UsingDirective;
 
12313
class     CT_Condition;
 
12314
class   CT_List;
 
12315
class     CT_CmpdStmt;
 
12316
class     CT_DeclSpecSeq;
 
12317
class     CT_HandlerSeq;
 
12318
class     CT_DesignatorSeq;
 
12319
class     CT_DeclList;
 
12320
class       CT_Program;
 
12321
class       CT_ArgDeclList;
 
12322
class         CT_ArgNameList;
 
12323
class       CT_ArgDeclSeq;
 
12324
class       CT_MembList;
 
12325
class     CT_ExprList;
 
12326
class     CT_DeclaratorList;
 
12327
class     CT_BaseSpecList;
 
12328
class     CT_MembInitList;
 
12329
class     CT_SimpleName;
 
12330
class       CT_SpecialName;
 
12331
class         CT_PrivateName;
 
12332
class         CT_OperatorName;
 
12333
class         CT_DestructorName;
 
12334
class         CT_ConversionName;
 
12335
class         CT_TemplateName;
 
12336
class       CT_QualName;
 
12337
class         CT_RootQualName;
 
12338
class     CT_String;
 
12339
class       CT_WideString;
 
12340
class     CT_TemplateParamList;
 
12341
class     CT_TemplateArgList;
 
12342
class   CT_Token;
 
12343
class   CT_Error;
 
12344
class   CT_BaseSpec;
 
12345
class   CT_AccessSpec;
 
12346
class   CT_ArrayDelimiter;
 
12347
class   CT_Any;
 
12348
class   CT_AnyList;
 
12349
class   CT_AnyExtension;
 
12350
class   CT_AnyCondition;
 
12351
 
 
12352
 
 
12353
} // namespace Puma
 
12354
 
 
12355
 
 
12356
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemObject.h"
 
12357
// This file is part of PUMA.
 
12358
// Copyright (C) 1999-2003  The PUMA developer team.
 
12359
//                                                                
 
12360
// This program is free software;  you can redistribute it and/or 
 
12361
// modify it under the terms of the GNU General Public License as 
 
12362
// published by the Free Software Foundation; either version 2 of 
 
12363
// the License, or (at your option) any later version.            
 
12364
//                                                                
 
12365
// This program is distributed in the hope that it will be useful,
 
12366
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
12367
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
12368
// GNU General Public License for more details.                   
 
12369
//                                                                
 
12370
// You should have received a copy of the GNU General Public      
 
12371
// License along with this program; if not, write to the Free     
 
12372
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
12373
// MA  02111-1307  USA                                            
 
12374
 
 
12375
#ifndef __CSemObject_h__
 
12376
#define __CSemObject_h__
 
12377
 
 
12378
/** \file
 
12379
 *  Semantic information about entity definitions. */
 
12380
 
 
12381
namespace Puma {
 
12382
 
 
12383
 
 
12384
class CObjectInfo;
 
12385
 
 
12386
 
 
12387
/** \class CSemObject CSemObject.h Puma/CSemObject.h
 
12388
 *  Semantic information for syntax tree nodes
 
12389
 *  referencing objects, classes, or any other entity. */
 
12390
 
 
12391
#line 12392 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12392
} // closed Puma
 
12393
class CCExprResolve;
 
12394
class CExprResolve;
 
12395
class WinIfExists;
 
12396
class WinImportHandler;
 
12397
class WinMacros;
 
12398
class WinAsm;
 
12399
class WinDeclSpecs;
 
12400
class WinMemberExplSpec;
 
12401
class WinTypeKeywords;
 
12402
class WinFriend;
 
12403
class ExtAC;
 
12404
class ExtACBuilderCoupling;
 
12405
class ExtACSyntaxCoupling;
 
12406
class ExtACTree;
 
12407
class ExtACKeywords;
 
12408
class ExtGnu;
 
12409
class PragmaOnceUnitState;
 
12410
class PragmaOnce;
 
12411
class CMatchSyntax;
 
12412
namespace Puma {
 
12413
 
 
12414
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemObject.h"
 
12415
class CSemObject {
 
12416
#line 12417 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12417
  friend class ::CCExprResolve;
 
12418
  friend class ::CExprResolve;
 
12419
  friend class ::WinIfExists;
 
12420
  friend class ::WinImportHandler;
 
12421
  friend class ::WinMacros;
 
12422
  friend class ::WinAsm;
 
12423
  friend class ::WinDeclSpecs;
 
12424
  friend class ::WinMemberExplSpec;
 
12425
  friend class ::WinTypeKeywords;
 
12426
  friend class ::WinFriend;
 
12427
  friend class ::ExtAC;
 
12428
  friend class ::ExtACBuilderCoupling;
 
12429
  friend class ::ExtACSyntaxCoupling;
 
12430
  friend class ::ExtACTree;
 
12431
  friend class ::ExtACKeywords;
 
12432
  friend class ::ExtGnu;
 
12433
  friend class ::PragmaOnceUnitState;
 
12434
  friend class ::PragmaOnce;
 
12435
  friend class ::CMatchSyntax;
 
12436
 
 
12437
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemObject.h"
 
12438
 
 
12439
  CObjectInfo *_obj;
 
12440
 
 
12441
public:
 
12442
  /** Constructor. */
 
12443
  CSemObject () : _obj ((CObjectInfo*)0) {}
 
12444
  /** Set the semantic information object for the entity.
 
12445
   *  \param o The semantic information object. */
 
12446
  void Object (CObjectInfo *o) { _obj = o; }
 
12447
  /** Get the semantic information object. */
 
12448
  CObjectInfo *Object () const { return _obj; }
 
12449
public:
 
12450
  typedef AC::TL<Puma::CObjectInfo *,AC::TLE > __AttrTypes;
 
12451
  const char *__attr_name (unsigned i) const {
 
12452
    static const char *names[] = { "_obj" }; return names[i];
 
12453
  }
 
12454
  const void *__attr (unsigned __i) const {
 
12455
    switch (__i) { case 0: return &_obj; default: return 0; }
 
12456
  }
 
12457
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemObject.h"
 
12458
};
 
12459
 
 
12460
 
 
12461
} // namespace Puma
 
12462
 
 
12463
#endif /* __CSemObject_h__ */
 
12464
 
 
12465
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemScope.h"
 
12466
// This file is part of PUMA.
 
12467
// Copyright (C) 1999-2003  The PUMA developer team.
 
12468
//                                                                
 
12469
// This program is free software;  you can redistribute it and/or 
 
12470
// modify it under the terms of the GNU General Public License as 
 
12471
// published by the Free Software Foundation; either version 2 of 
 
12472
// the License, or (at your option) any later version.            
 
12473
//                                                                
 
12474
// This program is distributed in the hope that it will be useful,
 
12475
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
12476
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
12477
// GNU General Public License for more details.                   
 
12478
//                                                                
 
12479
// You should have received a copy of the GNU General Public      
 
12480
// License along with this program; if not, write to the Free     
 
12481
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
12482
// MA  02111-1307  USA                                            
 
12483
 
 
12484
#ifndef __CSemScope_h__
 
12485
#define __CSemScope_h__
 
12486
 
 
12487
/** \file
 
12488
 *  Scope information for the syntax tree. */
 
12489
 
 
12490
namespace Puma {
 
12491
 
 
12492
 
 
12493
class CStructure;
 
12494
 
 
12495
/** \class CSemScope CSemScope.h Puma/CSemScope.h
 
12496
 *  Scope information object for syntax tree nodes. 
 
12497
 *  Some syntactic constructs open own scopes, e.g.
 
12498
 *  class definitions, function bodies, and compound 
 
12499
 *  statements. */
 
12500
 
 
12501
#line 12502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12502
} // closed Puma
 
12503
class CCExprResolve;
 
12504
class CExprResolve;
 
12505
class WinIfExists;
 
12506
class WinImportHandler;
 
12507
class WinMacros;
 
12508
class WinAsm;
 
12509
class WinDeclSpecs;
 
12510
class WinMemberExplSpec;
 
12511
class WinTypeKeywords;
 
12512
class WinFriend;
 
12513
class ExtAC;
 
12514
class ExtACBuilderCoupling;
 
12515
class ExtACSyntaxCoupling;
 
12516
class ExtACTree;
 
12517
class ExtACKeywords;
 
12518
class ExtGnu;
 
12519
class PragmaOnceUnitState;
 
12520
class PragmaOnce;
 
12521
class CMatchSyntax;
 
12522
namespace Puma {
 
12523
 
 
12524
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemScope.h"
 
12525
class CSemScope {
 
12526
#line 12527 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12527
  friend class ::CCExprResolve;
 
12528
  friend class ::CExprResolve;
 
12529
  friend class ::WinIfExists;
 
12530
  friend class ::WinImportHandler;
 
12531
  friend class ::WinMacros;
 
12532
  friend class ::WinAsm;
 
12533
  friend class ::WinDeclSpecs;
 
12534
  friend class ::WinMemberExplSpec;
 
12535
  friend class ::WinTypeKeywords;
 
12536
  friend class ::WinFriend;
 
12537
  friend class ::ExtAC;
 
12538
  friend class ::ExtACBuilderCoupling;
 
12539
  friend class ::ExtACSyntaxCoupling;
 
12540
  friend class ::ExtACTree;
 
12541
  friend class ::ExtACKeywords;
 
12542
  friend class ::ExtGnu;
 
12543
  friend class ::PragmaOnceUnitState;
 
12544
  friend class ::PragmaOnce;
 
12545
  friend class ::CMatchSyntax;
 
12546
 
 
12547
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemScope.h"
 
12548
 
 
12549
  CStructure *_scope;
 
12550
 
 
12551
public:
 
12552
  /** Constructor. */
 
12553
  CSemScope () : _scope ((CStructure*)0) {}
 
12554
  /** Set the scope. 
 
12555
   *  \param s The scope. */
 
12556
  void Scope (CStructure *s) { _scope = s; }
 
12557
  /** Get the scope. */
 
12558
  CStructure *Scope () const { return _scope; }
 
12559
public:
 
12560
  typedef AC::TL<Puma::CStructure *,AC::TLE > __AttrTypes;
 
12561
  const char *__attr_name (unsigned i) const {
 
12562
    static const char *names[] = { "_scope" }; return names[i];
 
12563
  }
 
12564
  const void *__attr (unsigned __i) const {
 
12565
    switch (__i) { case 0: return &_scope; default: return 0; }
 
12566
  }
 
12567
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemScope.h"
 
12568
};
 
12569
 
 
12570
 
 
12571
} // namespace Puma
 
12572
 
 
12573
#endif /* __CSemScope_h__ */
 
12574
 
 
12575
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
12576
// This file is part of PUMA.
 
12577
// Copyright (C) 1999-2003  The PUMA developer team.
 
12578
//                                                                
 
12579
// This program is free software;  you can redistribute it and/or 
 
12580
// modify it under the terms of the GNU General Public License as 
 
12581
// published by the Free Software Foundation; either version 2 of 
 
12582
// the License, or (at your option) any later version.            
 
12583
//                                                                
 
12584
// This program is distributed in the hope that it will be useful,
 
12585
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
12586
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
12587
// GNU General Public License for more details.                   
 
12588
//                                                                
 
12589
// You should have received a copy of the GNU General Public      
 
12590
// License along with this program; if not, write to the Free     
 
12591
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
12592
// MA  02111-1307  USA                                            
 
12593
 
 
12594
#ifndef __CSemValue_h__
 
12595
#define __CSemValue_h__
 
12596
 
 
12597
/** \file
 
12598
 *  Semantic value information for the syntax tree. */
 
12599
 
 
12600
 
 
12601
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
12602
// This file is part of PUMA.
 
12603
// Copyright (C) 1999-2003  The PUMA developer team.
 
12604
//                                                                
 
12605
// This program is free software;  you can redistribute it and/or 
 
12606
// modify it under the terms of the GNU General Public License as 
 
12607
// published by the Free Software Foundation; either version 2 of 
 
12608
// the License, or (at your option) any later version.            
 
12609
//                                                                
 
12610
// This program is distributed in the hope that it will be useful,
 
12611
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
12612
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
12613
// GNU General Public License for more details.                   
 
12614
//                                                                
 
12615
// You should have received a copy of the GNU General Public      
 
12616
// License along with this program; if not, write to the Free     
 
12617
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
12618
// MA  02111-1307  USA                                            
 
12619
 
 
12620
#ifndef __CExprValue_h__
 
12621
#define __CExprValue_h__
 
12622
 
 
12623
/** \file
 
12624
 *  Semantic information for constant expression values in the syntax tree. */
 
12625
 
 
12626
 
 
12627
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
12628
using std::ostream;
 
12629
 
 
12630
namespace Puma {
 
12631
 
 
12632
 
 
12633
class CTypeInfo;
 
12634
class CConstant;
 
12635
class CStrLiteral;
 
12636
class CWStrLiteral;
 
12637
 
 
12638
/** \class CExprValue CExprValue.h Puma/CExprValue.h
 
12639
 *  Base class for syntax tree nodes representing 
 
12640
 *  expressions that can be resolved to a constant value 
 
12641
 *  (arithmetic constants and string literals). */
 
12642
 
 
12643
#line 12644 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12644
} // closed Puma
 
12645
class CCExprResolve;
 
12646
class CExprResolve;
 
12647
class WinIfExists;
 
12648
class WinImportHandler;
 
12649
class WinMacros;
 
12650
class WinAsm;
 
12651
class WinDeclSpecs;
 
12652
class WinMemberExplSpec;
 
12653
class WinTypeKeywords;
 
12654
class WinFriend;
 
12655
class ExtAC;
 
12656
class ExtACBuilderCoupling;
 
12657
class ExtACSyntaxCoupling;
 
12658
class ExtACTree;
 
12659
class ExtACKeywords;
 
12660
class ExtGnu;
 
12661
class PragmaOnceUnitState;
 
12662
class PragmaOnce;
 
12663
class CMatchSyntax;
 
12664
namespace Puma {
 
12665
 
 
12666
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
12667
class CExprValue {
 
12668
#line 12669 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12669
  friend class ::CCExprResolve;
 
12670
  friend class ::CExprResolve;
 
12671
  friend class ::WinIfExists;
 
12672
  friend class ::WinImportHandler;
 
12673
  friend class ::WinMacros;
 
12674
  friend class ::WinAsm;
 
12675
  friend class ::WinDeclSpecs;
 
12676
  friend class ::WinMemberExplSpec;
 
12677
  friend class ::WinTypeKeywords;
 
12678
  friend class ::WinFriend;
 
12679
  friend class ::ExtAC;
 
12680
  friend class ::ExtACBuilderCoupling;
 
12681
  friend class ::ExtACSyntaxCoupling;
 
12682
  friend class ::ExtACTree;
 
12683
  friend class ::ExtACKeywords;
 
12684
  friend class ::ExtGnu;
 
12685
  friend class ::PragmaOnceUnitState;
 
12686
  friend class ::PragmaOnce;
 
12687
  friend class ::CMatchSyntax;
 
12688
 
 
12689
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
12690
 
 
12691
  CTypeInfo *_type;
 
12692
  
 
12693
protected:
 
12694
  /** Constructor.
 
12695
   *  \param t The type of the value. */
 
12696
  CExprValue (CTypeInfo *t) : _type (t) {}
 
12697
  
 
12698
public:
 
12699
  /** Destructor. */
 
12700
  virtual ~CExprValue () {}
 
12701
 
 
12702
  /** Get the type of the value. */
 
12703
  CTypeInfo *Type () const { return _type; }
 
12704
  /** Print the value on the given output stream.
 
12705
   *  \param out The stream on which to print. */
 
12706
  virtual void print (ostream &out) const = 0;
 
12707
  
 
12708
  /** Get a pointer to CConstant if this is an arithmetic constant. */
 
12709
  virtual CConstant *Constant () const { return (CConstant*)0; }
 
12710
  /** Get a pointer to CStrLiteral if this is a string literal. */
 
12711
  virtual CStrLiteral *StrLiteral () const { return (CStrLiteral*)0; }
 
12712
  /** Get a pointer to CWStrLiteral if this is a wide string literal. */
 
12713
  virtual CWStrLiteral *WStrLiteral () const { return (CWStrLiteral*)0; }
 
12714
public:
 
12715
  typedef AC::TL<Puma::CTypeInfo *,AC::TLE > __AttrTypes;
 
12716
  const char *__attr_name (unsigned i) const {
 
12717
    static const char *names[] = { "_type" }; return names[i];
 
12718
  }
 
12719
  const void *__attr (unsigned __i) const {
 
12720
    switch (__i) { case 0: return &_type; default: return 0; }
 
12721
  }
 
12722
#line 64 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
12723
};
 
12724
 
 
12725
inline ostream& operator << (ostream &out, const CExprValue &ev) {
 
12726
  ev.print (out);
 
12727
  return out;
 
12728
}
 
12729
 
 
12730
} // namespace Puma
 
12731
 
 
12732
#endif /* __CExprValue_h__ */
 
12733
 
 
12734
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
12735
namespace Puma {
 
12736
 
 
12737
 
 
12738
/** \class CSemValue CSemValue.h Puma/CSemValue.h
 
12739
 *  Semantic information object about values in the syntax 
 
12740
 *  tree. Provides the value and type of an expression or
 
12741
 *  entity (name). */
 
12742
 
 
12743
#line 12744 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12744
} // closed Puma
 
12745
class CCExprResolve;
 
12746
class CExprResolve;
 
12747
class WinIfExists;
 
12748
class WinImportHandler;
 
12749
class WinMacros;
 
12750
class WinAsm;
 
12751
class WinDeclSpecs;
 
12752
class WinMemberExplSpec;
 
12753
class WinTypeKeywords;
 
12754
class WinFriend;
 
12755
class ExtAC;
 
12756
class ExtACBuilderCoupling;
 
12757
class ExtACSyntaxCoupling;
 
12758
class ExtACTree;
 
12759
class ExtACKeywords;
 
12760
class ExtGnu;
 
12761
class PragmaOnceUnitState;
 
12762
class PragmaOnce;
 
12763
class CMatchSyntax;
 
12764
namespace Puma {
 
12765
 
 
12766
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
12767
class CSemValue {
 
12768
#line 12769 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12769
  friend class ::CCExprResolve;
 
12770
  friend class ::CExprResolve;
 
12771
  friend class ::WinIfExists;
 
12772
  friend class ::WinImportHandler;
 
12773
  friend class ::WinMacros;
 
12774
  friend class ::WinAsm;
 
12775
  friend class ::WinDeclSpecs;
 
12776
  friend class ::WinMemberExplSpec;
 
12777
  friend class ::WinTypeKeywords;
 
12778
  friend class ::WinFriend;
 
12779
  friend class ::ExtAC;
 
12780
  friend class ::ExtACBuilderCoupling;
 
12781
  friend class ::ExtACSyntaxCoupling;
 
12782
  friend class ::ExtACTree;
 
12783
  friend class ::ExtACKeywords;
 
12784
  friend class ::ExtGnu;
 
12785
  friend class ::PragmaOnceUnitState;
 
12786
  friend class ::PragmaOnce;
 
12787
  friend class ::CMatchSyntax;
 
12788
 
 
12789
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
12790
 
 
12791
  bool value_ref;
 
12792
  bool type_ref;
 
12793
 
 
12794
protected:
 
12795
  /** The semantic value information object. */
 
12796
  CExprValue *value;
 
12797
  /** The type information object. */
 
12798
  CTypeInfo *type;
 
12799
 
 
12800
public:
 
12801
  /** Constructor. */
 
12802
  CSemValue ();
 
12803
  /** Destructor. Frees the type and value. */
 
12804
  virtual ~CSemValue ();
 
12805
 
 
12806
  /** Set the semantic value information object.
 
12807
   *  Will be freed in the destructor.
 
12808
   *  \param v The value info object. */
 
12809
  void setValue (CExprValue *v);
 
12810
  /** Set the semantic value information object as reference.
 
12811
   *  Will not be destroyed in the destructor.
 
12812
   *  \param v The value info object. */
 
12813
  void setValueRef (CExprValue *v);
 
12814
  /** Set the type information object.
 
12815
   *  Will be freed in the destructor.
 
12816
   *  \param t The type info object. */
 
12817
  void setType (CTypeInfo *t);
 
12818
  /** Set the type information object as reference.
 
12819
   *  Will not be destroyed in the destructor.
 
12820
   *  \param t The type info object. */
 
12821
  void setTypeRef (CTypeInfo *t);
 
12822
  /** Get the semantic information about the value. */
 
12823
  CExprValue* getValue() { return value; }
 
12824
  /** Get the type of the value. */
 
12825
  CTypeInfo* getType() { return type; }
 
12826
public:
 
12827
  typedef AC::TL<bool,AC::TL<bool,AC::TL<Puma::CExprValue *,AC::TL<Puma::CTypeInfo *,AC::TLE > > > > __AttrTypes;
 
12828
  const char *__attr_name (unsigned i) const {
 
12829
    static const char *names[] = { "value_ref", "type_ref", "value", "type" }; return names[i];
 
12830
  }
 
12831
  const void *__attr (unsigned __i) const {
 
12832
    switch (__i) { case 0: return &value_ref; case 1: return &type_ref; case 2: return &value; case 3: return &type; default: return 0; }
 
12833
  }
 
12834
#line 71 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
12835
};
 
12836
 
 
12837
inline CSemValue::CSemValue () : 
 
12838
  value_ref (false),
 
12839
  type_ref (true),
 
12840
  value ((CExprValue*)0), 
 
12841
  type (&CTYPE_UNDEFINED)
 
12842
 {}
 
12843
inline CSemValue::~CSemValue () 
 
12844
 { if (value && ! value_ref) delete value; 
 
12845
   if (type && ! type_ref) CTypeInfo::Destroy (type); }
 
12846
 
 
12847
inline void CSemValue::setValue (CExprValue *v) 
 
12848
 { if (value && ! value_ref) delete value; 
 
12849
   value = v; value_ref = false; }
 
12850
inline void CSemValue::setValueRef (CExprValue *v) 
 
12851
 { if (value && ! value_ref) delete value; 
 
12852
   value = v; value_ref = true; }
 
12853
 
 
12854
inline void CSemValue::setType (CTypeInfo *t) 
 
12855
 { if (type && ! type_ref) CTypeInfo::Destroy (type); 
 
12856
   type = t; type_ref = false; }
 
12857
inline void CSemValue::setTypeRef (CTypeInfo *t) 
 
12858
 { if (type && ! type_ref) CTypeInfo::Destroy (type); 
 
12859
   type = t; type_ref = true; }
 
12860
 
 
12861
 
 
12862
} // namespace Puma
 
12863
 
 
12864
#endif /* __CSemValue_h__ */
 
12865
 
 
12866
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
12867
// This file is part of PUMA.
 
12868
// Copyright (C) 1999-2003  The PUMA developer team.
 
12869
//                                                                
 
12870
// This program is free software;  you can redistribute it and/or 
 
12871
// modify it under the terms of the GNU General Public License as 
 
12872
// published by the Free Software Foundation; either version 2 of 
 
12873
// the License, or (at your option) any later version.            
 
12874
//                                                                
 
12875
// This program is distributed in the hope that it will be useful,
 
12876
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
12877
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
12878
// GNU General Public License for more details.                   
 
12879
//                                                                
 
12880
// You should have received a copy of the GNU General Public      
 
12881
// License along with this program; if not, write to the Free     
 
12882
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
12883
// MA  02111-1307  USA                                            
 
12884
 
 
12885
#ifndef __CStrLiteral_h__
 
12886
#define __CStrLiteral_h__
 
12887
 
 
12888
/** \file
 
12889
 *  String literal abstraction. */
 
12890
 
 
12891
 
 
12892
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
12893
namespace Puma {
 
12894
 
 
12895
 
 
12896
/** \class CStrLiteral CStrLiteral.h Puma/CStrLiteral.h
 
12897
 *  String literal abstraction. Holds the string value, 
 
12898
 *  its length, and the string type. */
 
12899
 
 
12900
#line 12901 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12901
} // closed Puma
 
12902
class CCExprResolve;
 
12903
class CExprResolve;
 
12904
class WinIfExists;
 
12905
class WinImportHandler;
 
12906
class WinMacros;
 
12907
class WinAsm;
 
12908
class WinDeclSpecs;
 
12909
class WinMemberExplSpec;
 
12910
class WinTypeKeywords;
 
12911
class WinFriend;
 
12912
class ExtAC;
 
12913
class ExtACBuilderCoupling;
 
12914
class ExtACSyntaxCoupling;
 
12915
class ExtACTree;
 
12916
class ExtACKeywords;
 
12917
class ExtGnu;
 
12918
class PragmaOnceUnitState;
 
12919
class PragmaOnce;
 
12920
class CMatchSyntax;
 
12921
namespace Puma {
 
12922
 
 
12923
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
12924
class CStrLiteral : public CExprValue {
 
12925
#line 12926 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
12926
  friend class ::CCExprResolve;
 
12927
  friend class ::CExprResolve;
 
12928
  friend class ::WinIfExists;
 
12929
  friend class ::WinImportHandler;
 
12930
  friend class ::WinMacros;
 
12931
  friend class ::WinAsm;
 
12932
  friend class ::WinDeclSpecs;
 
12933
  friend class ::WinMemberExplSpec;
 
12934
  friend class ::WinTypeKeywords;
 
12935
  friend class ::WinFriend;
 
12936
  friend class ::ExtAC;
 
12937
  friend class ::ExtACBuilderCoupling;
 
12938
  friend class ::ExtACSyntaxCoupling;
 
12939
  friend class ::ExtACTree;
 
12940
  friend class ::ExtACKeywords;
 
12941
  friend class ::ExtGnu;
 
12942
  friend class ::PragmaOnceUnitState;
 
12943
  friend class ::PragmaOnce;
 
12944
  friend class ::CMatchSyntax;
 
12945
 
 
12946
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
12947
 
 
12948
  const char *_string;
 
12949
  unsigned long _len;
 
12950
  
 
12951
public:
 
12952
  /** Constructor.
 
12953
   *  \param s The string array. 
 
12954
   *  \param len The length of the string.
 
12955
   *  \param t The type of the string. */
 
12956
  CStrLiteral (const char *s, unsigned long len, CTypeInfo *t) : 
 
12957
    CExprValue (t), _string (s), _len (len) {}
 
12958
  /** Destructor. Frees the string. */
 
12959
  virtual ~CStrLiteral () { if (_string) delete[] _string; }
 
12960
 
 
12961
  /** Print the string on the given output stream.
 
12962
   *  \param out The output stream. */
 
12963
  virtual void print (ostream &out) const { out << "\"" << String () << "\""; }
 
12964
  /** Get the wide string. */
 
12965
  const char *String () const { return _string; }
 
12966
  /** Get the length of the string. */
 
12967
  unsigned long Length () const { return _len; }
 
12968
 
 
12969
  /** Get this. */
 
12970
  CStrLiteral *StrLiteral () const { return (CStrLiteral*)this; }
 
12971
public:
 
12972
  typedef AC::TL<const char *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
12973
  const char *__attr_name (unsigned i) const {
 
12974
    static const char *names[] = { "_string", "_len" }; return names[i];
 
12975
  }
 
12976
  const void *__attr (unsigned __i) const {
 
12977
    switch (__i) { case 0: return &_string; case 1: return &_len; default: return 0; }
 
12978
  }
 
12979
#line 57 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
12980
};
 
12981
 
 
12982
 
 
12983
} // namespace Puma
 
12984
 
 
12985
#endif /* __CStrLiteral_h__ */
 
12986
 
 
12987
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTokens.h"
 
12988
// This file is part of PUMA.
 
12989
// Copyright (C) 1999-2003  The PUMA developer team.
 
12990
//                                                                
 
12991
// This program is free software;  you can redistribute it and/or 
 
12992
// modify it under the terms of the GNU General Public License as 
 
12993
// published by the Free Software Foundation; either version 2 of 
 
12994
// the License, or (at your option) any later version.            
 
12995
//                                                                
 
12996
// This program is distributed in the hope that it will be useful,
 
12997
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
12998
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
12999
// GNU General Public License for more details.                   
 
13000
//                                                                
 
13001
// You should have received a copy of the GNU General Public      
 
13002
// License along with this program; if not, write to the Free     
 
13003
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
13004
// MA  02111-1307  USA                                            
 
13005
 
 
13006
#ifndef __C_TOKENS__
 
13007
#define __C_TOKENS__
 
13008
 
 
13009
/** \file
 
13010
 *  C/C++ token types. */
 
13011
 
 
13012
namespace Puma {
 
13013
 
 
13014
 
 
13015
/** Types of tokens for language C and C++. These types
 
13016
 *  can be compared to Puma::Token::type(). */
 
13017
enum CTokens {
 
13018
  // core tokens, i.e. numbers, operator symbols, brackets, etc.
 
13019
 
 
13020
  /** @ */
 
13021
  TOK_AT = 100,
 
13022
  /** 0 */
 
13023
  TOK_ZERO_VAL,
 
13024
  /** Integer constant. */
 
13025
  TOK_INT_VAL,
 
13026
  /** Floating point constant. */
 
13027
  TOK_FLT_VAL,
 
13028
  /** String constant. */
 
13029
  TOK_STRING_VAL,
 
13030
  /** Character constant. */
 
13031
  TOK_CHAR_VAL,
 
13032
  /** , */
 
13033
  TOK_COMMA,
 
13034
  /** = */
 
13035
  TOK_ASSIGN,
 
13036
  /** ? */
 
13037
  TOK_QUESTION,
 
13038
  /** | */
 
13039
  TOK_OR,
 
13040
  /** ^ */
 
13041
  TOK_ROOF,
 
13042
  /** & */
 
13043
  TOK_AND,
 
13044
  /** + */
 
13045
  TOK_PLUS,
 
13046
  /** %- */
 
13047
  TOK_MINUS,
 
13048
  /** * */
 
13049
  TOK_MUL,
 
13050
  /** / */
 
13051
  TOK_DIV,
 
13052
  /** % */
 
13053
  TOK_MODULO,
 
13054
  /** < */
 
13055
  TOK_LESS,
 
13056
  /** > */
 
13057
  TOK_GREATER,
 
13058
  /** ( */
 
13059
  TOK_OPEN_ROUND,
 
13060
  /** ) */
 
13061
  TOK_CLOSE_ROUND,
 
13062
  /** [ */
 
13063
  TOK_OPEN_SQUARE,
 
13064
  /** ] */
 
13065
  TOK_CLOSE_SQUARE,
 
13066
  /** { */
 
13067
  TOK_OPEN_CURLY,
 
13068
  /** } */
 
13069
  TOK_CLOSE_CURLY,
 
13070
  /** ; */
 
13071
  TOK_SEMI_COLON,
 
13072
  /** : */
 
13073
  TOK_COLON,
 
13074
  /** ! */
 
13075
  TOK_NOT,
 
13076
  /** ~ */
 
13077
  TOK_TILDE,
 
13078
  /** "." */
 
13079
  TOK_DOT,
 
13080
  /** *= */
 
13081
  TOK_MUL_EQ,
 
13082
  /** /= */
 
13083
  TOK_DIV_EQ,
 
13084
  /** %= */
 
13085
  TOK_MOD_EQ,
 
13086
  /** += */
 
13087
  TOK_ADD_EQ,
 
13088
  /** -= */
 
13089
  TOK_SUB_EQ,
 
13090
  /** <<= */
 
13091
  TOK_LSH_EQ,
 
13092
  /** >>= */
 
13093
  TOK_RSH_EQ,
 
13094
  /** &= */
 
13095
  TOK_AND_EQ,
 
13096
  /** ^= */
 
13097
  TOK_XOR_EQ,
 
13098
  /** |= */
 
13099
  TOK_IOR_EQ,
 
13100
  /** || */
 
13101
  TOK_OR_OR,
 
13102
  /** && */
 
13103
  TOK_AND_AND,
 
13104
  /** == */
 
13105
  TOK_EQL,
 
13106
  /** != */
 
13107
  TOK_NEQ,
 
13108
  /** <= */
 
13109
  TOK_LEQ,
 
13110
  /** >= */
 
13111
  TOK_GEQ,
 
13112
  /** << */
 
13113
  TOK_LSH,
 
13114
  /** >> */
 
13115
  TOK_RSH,
 
13116
  /** ".*" */
 
13117
  TOK_DOT_STAR,
 
13118
  /** ->* */
 
13119
  TOK_PTS_STAR,
 
13120
  /** ++ */
 
13121
  TOK_INCR,
 
13122
  /** -- */
 
13123
  TOK_DECR,
 
13124
  /** -> */
 
13125
  TOK_PTS,
 
13126
  /** :: */
 
13127
  TOK_COLON_COLON,
 
13128
  /** "..." */
 
13129
  TOK_ELLIPSIS,
 
13130
 
 
13131
  /** Core token group separator for the scanner! */
 
13132
  TOK_LAST_CORE = TOK_ELLIPSIS,
 
13133
  
 
13134
  // C keywords:
 
13135
 
 
13136
  /** asm */
 
13137
  TOK_ASM,
 
13138
  /** auto */
 
13139
  TOK_AUTO,
 
13140
  /** break */
 
13141
  TOK_BREAK,
 
13142
  /** case */
 
13143
  TOK_CASE,
 
13144
  /** char */
 
13145
  TOK_CHAR,
 
13146
  /** const */
 
13147
  TOK_CONST,
 
13148
  /** continue */
 
13149
  TOK_CONTINUE,
 
13150
  /** default */
 
13151
  TOK_DEFAULT,
 
13152
  /** do */
 
13153
  TOK_DO,
 
13154
  /** double */
 
13155
  TOK_DOUBLE,
 
13156
  /** else */
 
13157
  TOK_ELSE,
 
13158
  /** enum */
 
13159
  TOK_ENUM,
 
13160
  /** extern */
 
13161
  TOK_EXTERN,
 
13162
  /** float */
 
13163
  TOK_FLOAT,
 
13164
  /** for */
 
13165
  TOK_FOR,
 
13166
  /** goto */
 
13167
  TOK_GOTO,
 
13168
  /** if */
 
13169
  TOK_IF,
 
13170
  /** inline */
 
13171
  TOK_INLINE,
 
13172
  /** int */
 
13173
  TOK_INT,
 
13174
  /** long */
 
13175
  TOK_LONG,
 
13176
  /** register */
 
13177
  TOK_REGISTER,
 
13178
  /** restrict */
 
13179
  TOK_RESTRICT,
 
13180
  /** return */
 
13181
  TOK_RETURN,
 
13182
  /** short */
 
13183
  TOK_SHORT,
 
13184
  /** signed */
 
13185
  TOK_SIGNED,
 
13186
  /** sizeof */
 
13187
  TOK_SIZEOF,
 
13188
  /** static */
 
13189
  TOK_STATIC,
 
13190
  /** struct */
 
13191
  TOK_STRUCT,
 
13192
  /** switch */
 
13193
  TOK_SWITCH,
 
13194
  /** typedef */
 
13195
  TOK_TYPEDEF,
 
13196
  /** union */
 
13197
  TOK_UNION,
 
13198
  /** unsigned */
 
13199
  TOK_UNSIGNED,
 
13200
  /** void */
 
13201
  TOK_VOID,
 
13202
  /** volatile */
 
13203
  TOK_VOLATILE,
 
13204
  /** wchar_t */
 
13205
  TOK_WCHAR_T,
 
13206
  /** while */
 
13207
  TOK_WHILE,
 
13208
 
 
13209
  // C compatibility keywords
 
13210
 
 
13211
  /** __asm */
 
13212
  TOK_ASM_2,
 
13213
  /** __asm__ */
 
13214
  TOK_ASM_3,
 
13215
  /** _Bool */
 
13216
  TOK_C_BOOL,
 
13217
  /** __const */
 
13218
  TOK_CONST_2,
 
13219
  /** __const__ */
 
13220
  TOK_CONST_3,
 
13221
  /** __inline */
 
13222
  TOK_INLINE_2,
 
13223
  /** __inline__ */
 
13224
  TOK_INLINE_3,
 
13225
  /** __restrict */
 
13226
  TOK_RESTRICT_2,
 
13227
  /** __restrict__ */
 
13228
  TOK_RESTRICT_3,
 
13229
  /** __signed */
 
13230
  TOK_SIGNED_2,
 
13231
  /** __signed__ */
 
13232
  TOK_SIGNED_3,
 
13233
  /** __volatile */
 
13234
  TOK_VOLATILE_2,
 
13235
  /** __volatile__ */
 
13236
  TOK_VOLATILE_3,
 
13237
  /** __wchar_t */
 
13238
  TOK_WCHAR_T_2,
 
13239
  /** typeof */
 
13240
  TOK_TYPEOF,
 
13241
  /** __typeof */
 
13242
  TOK_TYPEOF_2,
 
13243
  /** __typeof__ */
 
13244
  TOK_TYPEOF_3,
 
13245
 
 
13246
  // C win specific keywords
 
13247
 
 
13248
  /** __int64 */
 
13249
  TOK_INT64,
 
13250
  /** _cdecl */
 
13251
  TOK_CDECL,
 
13252
  /** __cdecl */
 
13253
  TOK_CDECL_2,
 
13254
  /** _stdcall */
 
13255
  TOK_STDCALL,
 
13256
  /** __stdcall */
 
13257
  TOK_STDCALL_2,
 
13258
  /** _fastcall */
 
13259
  TOK_FASTCALL,
 
13260
  /** __fastcall */
 
13261
  TOK_FASTCALL_2,
 
13262
  /** __if_exists */
 
13263
  TOK_IF_EXISTS,
 
13264
  /** __if_not_exists */
 
13265
  TOK_IF_NOT_EXISTS,
 
13266
 
 
13267
  /** C token group separator for the scanner! */
 
13268
  TOK_LAST_C = TOK_IF_NOT_EXISTS,
 
13269
  
 
13270
  /** Boolean constant. */
 
13271
  TOK_BOOL_VAL,
 
13272
 
 
13273
  // C++ keywords:
 
13274
 
 
13275
  /** bool */
 
13276
  TOK_BOOL,
 
13277
  /** catch */
 
13278
  TOK_CATCH,
 
13279
  /** class */
 
13280
  TOK_CLASS,
 
13281
  /** const_cast */
 
13282
  TOK_CONST_CAST,
 
13283
  /** delete */
 
13284
  TOK_DELETE,
 
13285
  /** dynamic_cast */
 
13286
  TOK_DYN_CAST,
 
13287
  /** explicit */
 
13288
  TOK_EXPLICIT,
 
13289
  /** export */
 
13290
  TOK_EXPORT,
 
13291
  /** friend */
 
13292
  TOK_FRIEND,
 
13293
  /** mutable */
 
13294
  TOK_MUTABLE,
 
13295
  /** namespace */
 
13296
  TOK_NAMESPACE,
 
13297
  /** new */
 
13298
  TOK_NEW,
 
13299
  /** operator */
 
13300
  TOK_OPERATOR,
 
13301
  /** private */
 
13302
  TOK_PRIVATE,
 
13303
  /** protected */
 
13304
  TOK_PROTECTED,
 
13305
  /** public */
 
13306
  TOK_PUBLIC,
 
13307
  /** reinterpret_cast */
 
13308
  TOK_REINT_CAST,
 
13309
  /** static_cast */
 
13310
  TOK_STAT_CAST,
 
13311
  /** template */
 
13312
  TOK_TEMPLATE,
 
13313
  /** this */
 
13314
  TOK_THIS,
 
13315
  /** throw */
 
13316
  TOK_THROW,
 
13317
  /** try */
 
13318
  TOK_TRY,
 
13319
  /** typeid */
 
13320
  TOK_TYPEID,
 
13321
  /** typename */
 
13322
  TOK_TYPENAME,
 
13323
  /** using */
 
13324
  TOK_USING,
 
13325
  /** virtual */
 
13326
  TOK_VIRTUAL,
 
13327
 
 
13328
  // C++ alternative representation of operators (ISO 646):
 
13329
 
 
13330
  /** and */
 
13331
  TOK_AND_AND_ISO_646,
 
13332
  /** and_eq */
 
13333
  TOK_AND_EQ_ISO_646,
 
13334
  /** bitand */
 
13335
  TOK_AND_ISO_646,
 
13336
  /** bitor */
 
13337
  TOK_OR_ISO_646,
 
13338
  /** compl */
 
13339
  TOK_TILDE_ISO_646,
 
13340
  /** not */
 
13341
  TOK_NOT_ISO_646,
 
13342
  /** not_eq */
 
13343
  TOK_NEQ_ISO_646,
 
13344
  /** or */
 
13345
  TOK_OR_OR_ISO_646,
 
13346
  /** or_eq */
 
13347
  TOK_IOR_EQ_ISO_646,
 
13348
  /** xor */
 
13349
  TOK_ROOF_ISO_646,
 
13350
  /** xor_eq */
 
13351
  TOK_XOR_EQ_ISO_646,
 
13352
 
 
13353
  /** C++ token group separator for the scanner! */
 
13354
  TOK_LAST_CC = TOK_XOR_EQ_ISO_646,
 
13355
  
 
13356
  // AspectC++ keywords:
 
13357
 
 
13358
  /** pointcut */
 
13359
  TOK_POINTCUT,
 
13360
  /** aspect */
 
13361
  TOK_ASPECT,
 
13362
  /** advice */
 
13363
  TOK_ADVICE,
 
13364
  /** slice */
 
13365
  TOK_SLICE,
 
13366
  /** unknown_t */
 
13367
  TOK_UNKNOWN_T,
 
13368
 
 
13369
  /** AspectC++ token group separator for the scanner! */
 
13370
  TOK_LAST_AC = TOK_UNKNOWN_T,
 
13371
  
 
13372
  /** Any identifier that is not a keyword. */
 
13373
  TOK_ID,
 
13374
 
 
13375
  // These two always have to be the ** last ** token listed here!!!
 
13376
  
 
13377
  /** Epsilon. */
 
13378
  TOK_EPSILON,
 
13379
  /** Number of known token types. */
 
13380
  TOK_NO
 
13381
};
 
13382
 
 
13383
} // namespace Puma
 
13384
 
 
13385
#endif /* __C_TOKENS__ */
 
13386
 
 
13387
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
13388
// This file is part of PUMA.
 
13389
// Copyright (C) 1999-2003  The PUMA developer team.
 
13390
//                                                                
 
13391
// This program is free software;  you can redistribute it and/or 
 
13392
// modify it under the terms of the GNU General Public License as 
 
13393
// published by the Free Software Foundation; either version 2 of 
 
13394
// the License, or (at your option) any later version.            
 
13395
//                                                                
 
13396
// This program is distributed in the hope that it will be useful,
 
13397
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
13398
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
13399
// GNU General Public License for more details.                   
 
13400
//                                                                
 
13401
// You should have received a copy of the GNU General Public      
 
13402
// License along with this program; if not, write to the Free     
 
13403
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
13404
// MA  02111-1307  USA                                            
 
13405
 
 
13406
#ifndef __Token_h__
 
13407
#define __Token_h__
 
13408
 
 
13409
/** \file
 
13410
 *  Token abstraction. */
 
13411
 
 
13412
#include <stdlib.h>
 
13413
 
 
13414
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
13415
#include <assert.h>
 
13416
 
 
13417
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
13418
namespace Puma {
 
13419
 
 
13420
 
 
13421
class Unit;
 
13422
 
 
13423
 
 
13424
/** \class Token Token.h Puma/Token.h
 
13425
 *  Abstraction of a language token. A token is created by a
 
13426
 *  scanner (see Puma::CScanner) as part a token chain (Puma::Unit). 
 
13427
 *  It encapsulates a lexical unit of the scanned text. 
 
13428
 *  
 
13429
 *  The information provided about a lexical unit is 
 
13430
 *  \li the token type
 
13431
 *  \li the location in the scanned text
 
13432
 *  \li the portion of the scanned text represented by this token
 
13433
 *  \li the language of the token */
 
13434
 
 
13435
#line 13436 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13436
} // closed Puma
 
13437
class CCExprResolve;
 
13438
class CExprResolve;
 
13439
class WinIfExists;
 
13440
class WinImportHandler;
 
13441
class WinMacros;
 
13442
class WinAsm;
 
13443
class WinDeclSpecs;
 
13444
class WinMemberExplSpec;
 
13445
class WinTypeKeywords;
 
13446
class WinFriend;
 
13447
class ExtAC;
 
13448
class ExtACBuilderCoupling;
 
13449
class ExtACSyntaxCoupling;
 
13450
class ExtACTree;
 
13451
class ExtACKeywords;
 
13452
class ExtGnu;
 
13453
class PragmaOnceUnitState;
 
13454
class PragmaOnce;
 
13455
class CMatchSyntax;
 
13456
namespace Puma {
 
13457
 
 
13458
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
13459
class Token : public ListElement {
 
13460
#line 13461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13461
  friend class ::CCExprResolve;
 
13462
  friend class ::CExprResolve;
 
13463
  friend class ::WinIfExists;
 
13464
  friend class ::WinImportHandler;
 
13465
  friend class ::WinMacros;
 
13466
  friend class ::WinAsm;
 
13467
  friend class ::WinDeclSpecs;
 
13468
  friend class ::WinMemberExplSpec;
 
13469
  friend class ::WinTypeKeywords;
 
13470
  friend class ::WinFriend;
 
13471
  friend class ::ExtAC;
 
13472
  friend class ::ExtACBuilderCoupling;
 
13473
  friend class ::ExtACSyntaxCoupling;
 
13474
  friend class ::ExtACTree;
 
13475
  friend class ::ExtACKeywords;
 
13476
  friend class ::ExtGnu;
 
13477
  friend class ::PragmaOnceUnitState;
 
13478
  friend class ::PragmaOnce;
 
13479
  friend class ::CMatchSyntax;
 
13480
 
 
13481
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
13482
 
 
13483
  int _type, _real_type;
 
13484
 
 
13485
  Location _location;
 
13486
  LanguageID _language;
 
13487
  const char *_text;
 
13488
  mutable DString _dtext;
 
13489
 
 
13490
  Array<int> *_cont_lines;
 
13491
   
 
13492
  enum TK_Flags {
 
13493
          TK_COMMENT = (0x01 << 0),
 
13494
          TK_CORE = (0x01 << 1),
 
13495
          TK_MACRO_CALL = (0x01 << 2),
 
13496
          TK_MACRO_GENERATED = (0x01 << 3)
 
13497
  };
 
13498
  unsigned short _flags;
 
13499
 
 
13500
public:
 
13501
  /** Special token types. */
 
13502
  enum {
 
13503
    /** End-of-file token. */
 
13504
    ID_END_OF_FILE = -1,
 
13505
    /** Unknown token type. */
 
13506
    ID_UNKNOWN = -2,
 
13507
    /** Error token type. */
 
13508
    ID_ERROR = -3,
 
13509
    /** Warning token type. */
 
13510
    ID_WARNING = -4
 
13511
  };
 
13512
 
 
13513
  /** Comment tokens. */ 
 
13514
  static LanguageID comment_id;
 
13515
  /** Preprocessor tokens. */
 
13516
  static LanguageID pre_id;
 
13517
  /** Compiler directives. */
 
13518
  static LanguageID dir_id;
 
13519
  /** C/C++ core language tokens. */
 
13520
  static LanguageID cpp_id;
 
13521
  /** White-spaces. */
 
13522
  static LanguageID white_id;
 
13523
  /** Wildcards. */
 
13524
  static LanguageID wildcard_id;
 
13525
  /** Keywords. */
 
13526
  static LanguageID keyword_id;
 
13527
  /** Left parenthesis. */
 
13528
  static LanguageID open_id;
 
13529
  /** Function-like macro operands. */
 
13530
  static LanguageID macro_op_id;
 
13531
  /** Identifiers. */
 
13532
  static LanguageID identifier_id;
 
13533
  /** Comma. */
 
13534
  static LanguageID comma_id;
 
13535
  /** Right parenthesis. */
 
13536
  static LanguageID close_id;
 
13537
 
 
13538
public:
 
13539
  /** Constructor.
 
13540
   *  \param type The token type.
 
13541
   *  \param lang The language of the token.
 
13542
   *  \param text The optional token text (defaults to the empty string). */
 
13543
  Token (int type = 0, LanguageID lang = LanguageID(0), const char *text = "");
 
13544
  /** Copy-constructor. 
 
13545
   *  \param copy The token to copy. */
 
13546
  Token (const Token &copy);
 
13547
  /** Destructor. Destroys the token text. */
 
13548
  virtual ~Token ();
 
13549
 
 
13550
  /** Print the token text on the given stream. 
 
13551
   *  \param os The output stream. */
 
13552
  void print (ostream &os) const;
 
13553
  /** Duplicate this token.
 
13554
   *  \return The copy of this token. Has to be destroyed by the caller. */
 
13555
  virtual ListElement *duplicate () { return new Token (*this); }
 
13556
 
 
13557
  /** Get the unit this token belongs to. */
 
13558
  Unit* unit () const { return (Unit*)belonging_to(); }
 
13559
 
 
13560
  /** Reset the token object.
 
13561
   *  \param type The new token type.
 
13562
   *  \param text The new token text.
 
13563
   *  \param lang The new token language. */
 
13564
  void reset (int type = 0, const char *text = 0, LanguageID lang = LanguageID(0));
 
13565
  
 
13566
  /** Set the location of the token (usually the line and column in a file). 
 
13567
   *  \param loc The location. */
 
13568
  void location (const Location &loc)      { _location = loc; }
 
13569
  /** Set the continues lines appeared in this token. 
 
13570
   *  \param cl The continues line array. */
 
13571
  void cont_lines (Array<int> *cl)  { _cont_lines = cl; }
 
13572
  /** Count the number of line breaks in the text of this token. */
 
13573
  int line_breaks () const;
 
13574
  /** Set the token as being macro generated. */
 
13575
  void macro_generated ()           { _flags |= TK_MACRO_GENERATED; }
 
13576
  /** Set the token as being a macro call. */
 
13577
  void macro_call ()                { _flags |= TK_MACRO_CALL; }
 
13578
  
 
13579
  /** Get the token text. */
 
13580
  const char *text () const;
 
13581
  /** Get the token text. */
 
13582
  DString &dtext () const;
 
13583
  /** Get the static token text. Only for keywords, operators, and so on
 
13584
   *  with a constant token text. 
 
13585
   *  \return The static text or NULL for tokens with dynamic text (like identifiers). */
 
13586
  char *get_static_text () const;
 
13587
  /** Get the type of the token (see Puma::CTokens). */
 
13588
  int type () const                 { return _type; }
 
13589
  /** Get the location of the token (usually the line and column in a file). */
 
13590
  const Location &location () const { return _location; }
 
13591
   
 
13592
  /** Check if the token is macro generated. */
 
13593
  bool is_macro_generated () const  { return (_flags & TK_MACRO_GENERATED) != 0; }
 
13594
  /** Check if the token is a macro call. */
 
13595
  bool is_macro_call () const       { return (_flags & TK_MACRO_CALL) != 0; }
 
13596
  /** Check if this is a core language token. */
 
13597
  bool is_core () const;
 
13598
  /** Check if the token is an identifier. */
 
13599
  bool is_identifier () const;    // subset of core
 
13600
  /** Check if the token is a keyword. */
 
13601
  bool is_keyword () const;       // subset of identifier
 
13602
  /** Check if this is a wildcard token. */
 
13603
  bool is_wildcard () const;      // subset of core
 
13604
  /** Check if this is a preprocessor token. */
 
13605
  bool is_preprocessor () const;  // a preprocessor directive (include, etc.)
 
13606
  /** Check if this is a compiler directive. */
 
13607
  bool is_directive () const;     // a compiler directive (pragma, line, etc.)
 
13608
  /** Check if this is a white-space token. */
 
13609
  bool is_whitespace () const;
 
13610
  /** Check if this is a comment. */
 
13611
  bool is_comment () const;
 
13612
  /** Check if this is function-like macro operand. */
 
13613
  bool is_macro_op () const;
 
13614
  /** Check if this is a left parenthesis. */
 
13615
  bool is_open () const;          // subset of core
 
13616
  /** Check if this is a comma. */
 
13617
  bool is_comma () const;         // subset of core
 
13618
  /** Check if this is a right parenthesis. */
 
13619
  bool is_close () const;         // subset of core
 
13620
 
 
13621
  /** Own operator new reusing memory. */
 
13622
  void *operator new (size_t);
 
13623
  /** Own delete operator. */
 
13624
  void  operator delete (void *);
 
13625
 
 
13626
private:
 
13627
  int get_general_type () const;
 
13628
  LanguageID language () const { return _language; }
 
13629
  void is_comment_internal ();
 
13630
  void is_core_internal ();
 
13631
public:
 
13632
  typedef AC::TL<int,AC::TL<int,AC::TL<Puma::Location,AC::TL<Puma::LanguageID,AC::TL<const char *,AC::TL<Puma::DString,AC::TL<Puma::Array< int > *,AC::TL<unsigned short int,AC::TLE > > > > > > > > __AttrTypes;
 
13633
  const char *__attr_name (unsigned i) const {
 
13634
    static const char *names[] = { "_type", "_real_type", "_location", "_language", "_text", "_dtext", "_cont_lines", "_flags" }; return names[i];
 
13635
  }
 
13636
  const void *__attr (unsigned __i) const {
 
13637
    switch (__i) { case 0: return &_type; case 1: return &_real_type; case 2: return &_location; case 3: return &_language; case 4: return &_text; case 5: return &_dtext; case 7: return &_cont_lines; case 12: return &_flags; default: return 0; }
 
13638
  }
 
13639
#line 200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
13640
};
 
13641
 
 
13642
 
 
13643
inline void Token::is_core_internal () {
 
13644
  if (_language == cpp_id || _language == wildcard_id || 
 
13645
      _language == open_id || _language == comma_id || 
 
13646
      _language == close_id || is_identifier ())
 
13647
    _flags |= TK_CORE;
 
13648
}
 
13649
inline void Token::is_comment_internal () { 
 
13650
  if (_language == comment_id) 
 
13651
    _flags |= TK_COMMENT;
 
13652
}
 
13653
 
 
13654
inline bool Token::is_core () const 
 
13655
 { return (_flags & TK_CORE) != 0; }
 
13656
inline bool Token::is_identifier () const 
 
13657
 { return _language == identifier_id || is_keyword ();}
 
13658
inline bool Token::is_keyword () const 
 
13659
 { return _language == keyword_id; }
 
13660
inline bool Token::is_wildcard () const 
 
13661
 { return _language == wildcard_id; }
 
13662
inline bool Token::is_preprocessor () const 
 
13663
 { return _language == pre_id; }
 
13664
inline bool Token::is_directive () const 
 
13665
 { return _language == dir_id; }
 
13666
inline bool Token::is_whitespace () const 
 
13667
 { return _language == white_id; }
 
13668
inline bool Token::is_comment () const 
 
13669
 { return (_flags & TK_COMMENT) != 0; }
 
13670
inline bool Token::is_macro_op () const 
 
13671
 { return _language == macro_op_id; }
 
13672
inline bool Token::is_open () const 
 
13673
 { return _language == open_id; }
 
13674
inline bool Token::is_comma () const 
 
13675
 { return _language == comma_id; }
 
13676
inline bool Token::is_close () const 
 
13677
 { return _language == close_id; }
 
13678
 
 
13679
inline ostream &operator << (ostream &os, const Token &object) {
 
13680
  object.print (os);
 
13681
  return os;
 
13682
}
 
13683
 
 
13684
} // namespace Puma
 
13685
 
 
13686
#endif /* __Token_h__ */
 
13687
 
 
13688
#line 173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
13689
using namespace std;
 
13690
 
 
13691
namespace Puma {
 
13692
 
 
13693
 
 
13694
class ErrorStream;
 
13695
class CObjectInfo;
 
13696
class CStructure;
 
13697
 
 
13698
/*****************************************************************************/
 
13699
/*                                                                           */
 
13700
/*                    S y n t a x  t r e e  n o d e s                        */
 
13701
/*                                                                           */
 
13702
/*****************************************************************************/
 
13703
 
 
13704
/** \class CTree CTree.h Puma/CTree.h
 
13705
 *  Base class for all C/C++ syntax tree classes. 
 
13706
 *
 
13707
 *  The syntax tree is the result of the syntactic analysis of the input source 
 
13708
 *  code representing its syntactic structure according to the accepted grammar
 
13709
 *  (see class Syntax). 
 
13710
 *
 
13711
 *  Objects of this class and classes derived from this class are created by 
 
13712
 *  the tree builder component of %Puma during the parse process. A syntax tree 
 
13713
 *  shall be destroyed using the tree builder that has created it by calling its 
 
13714
 *  method Builder::destroy(CTree*) with the root node of the syntax tree as its 
 
13715
 *  argument.
 
13716
 *  
 
13717
 *  The navigation in the syntax tree is done using the methods CTree::Parent(), 
 
13718
 *  CTree::Sons(), and CTree::Son(int) const. In a syntax tree "sons" are 
 
13719
 *  understood as the syntactic child nodes of a syntax tree node, whereas 
 
13720
 *  "daughters" are understood are their semantic child nodes. 
 
13721
 *
 
13722
 *  Another way to traverse a syntax tree is to implement an own tree visitor 
 
13723
 *  based on class Puma::CVisitor. This is recommended especially for larger 
 
13724
 *  syntax trees.
 
13725
 *
 
13726
 *  A syntax tree node can be identified by comparing its node name with the node 
 
13727
 *  identifier of the expected syntax tree node:
 
13728
 *  \code if (node->NodeName() == Puma::CT_BinaryExpr::NodeId()) ... \endcode
 
13729
 *  
 
13730
 *  Based on the syntax tree further semantic analyses can be performed. Semantic 
 
13731
 *  information, like scope, value, type, and object information, is linked into 
 
13732
 *  the syntax tree. It can be accessed using the methods CTree::SemScope(), 
 
13733
 *  CTree::SemValue(), and CTree::SemObject(). Some nodes provide short-cuts to
 
13734
 *  the semantic type and value information by implementing the methods 
 
13735
 *  CTree::Type() and CTree::Value().
 
13736
 *
 
13737
 *  The information of the syntax tree can be used to perform high-level 
 
13738
 *  transformations of the source code (see class ManipCommander). */
 
13739
 
 
13740
#line 13741 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13741
} // closed Puma
 
13742
class CCExprResolve;
 
13743
class CExprResolve;
 
13744
class WinIfExists;
 
13745
class WinImportHandler;
 
13746
class WinMacros;
 
13747
class WinAsm;
 
13748
class WinDeclSpecs;
 
13749
class WinMemberExplSpec;
 
13750
class WinTypeKeywords;
 
13751
class WinFriend;
 
13752
class ExtAC;
 
13753
class ExtACBuilderCoupling;
 
13754
class ExtACSyntaxCoupling;
 
13755
class ExtACTree;
 
13756
class ExtACKeywords;
 
13757
class ExtGnu;
 
13758
class PragmaOnceUnitState;
 
13759
class PragmaOnce;
 
13760
class CMatchSyntax;
 
13761
namespace Puma {
 
13762
 
 
13763
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
13764
 
 
13765
#line 13766 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13766
} // closed Puma
 
13767
 
 
13768
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
13769
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
13770
 
 
13771
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13772
// This file is part of PUMA.
 
13773
// Copyright (C) 1999-2003  The PUMA developer team.
 
13774
//                                                                
 
13775
// This program is free software;  you can redistribute it and/or 
 
13776
// modify it under the terms of the GNU General Public License as 
 
13777
// published by the Free Software Foundation; either version 2 of 
 
13778
// the License, or (at your option) any later version.            
 
13779
//                                                                
 
13780
// This program is distributed in the hope that it will be useful,
 
13781
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
13782
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
13783
// GNU General Public License for more details.                   
 
13784
//                                                                
 
13785
// You should have received a copy of the GNU General Public      
 
13786
// License along with this program; if not, write to the Free     
 
13787
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
13788
// MA  02111-1307  USA                                            
 
13789
 
 
13790
#ifndef __CCExprResolveH_ah__
 
13791
#define __CCExprResolveH_ah__
 
13792
 
 
13793
// This aspect inserts resolve member functions into all syntax tree classes
 
13794
// that represent expressions. As the function is virtual, an efficient
 
13795
// run-time switch over the node type is implemented.
 
13796
 
 
13797
namespace Puma {
 
13798
  class CCSemExpr;
 
13799
}
 
13800
 
 
13801
namespace Puma {
 
13802
  
 
13803
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13804
 
 
13805
  
 
13806
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13807
 
 
13808
}
 
13809
 
 
13810
 
 
13811
#line 13812 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13812
class CExprResolve;
 
13813
class WinIfExists;
 
13814
class WinImportHandler;
 
13815
class WinMacros;
 
13816
class WinAsm;
 
13817
class WinDeclSpecs;
 
13818
class WinMemberExplSpec;
 
13819
class WinTypeKeywords;
 
13820
class WinFriend;
 
13821
class ExtAC;
 
13822
class ExtACBuilderCoupling;
 
13823
class ExtACSyntaxCoupling;
 
13824
class ExtACTree;
 
13825
class ExtACKeywords;
 
13826
class ExtGnu;
 
13827
class PragmaOnceUnitState;
 
13828
class PragmaOnce;
 
13829
class CMatchSyntax;
 
13830
 
 
13831
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13832
class CCExprResolve {
 
13833
#line 13834 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13834
 
 
13835
public:
 
13836
  static CCExprResolve *aspectof () {
 
13837
    static CCExprResolve __instance;
 
13838
    return &__instance;
 
13839
  }
 
13840
  static CCExprResolve *aspectOf () {
 
13841
    return aspectof ();
 
13842
  }
 
13843
private:
 
13844
 
 
13845
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13846
 
 
13847
#line 13848 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13848
  friend class ::CExprResolve;
 
13849
  friend class ::WinIfExists;
 
13850
  friend class ::WinImportHandler;
 
13851
  friend class ::WinMacros;
 
13852
  friend class ::WinAsm;
 
13853
  friend class ::WinDeclSpecs;
 
13854
  friend class ::WinMemberExplSpec;
 
13855
  friend class ::WinTypeKeywords;
 
13856
  friend class ::WinFriend;
 
13857
  friend class ::ExtAC;
 
13858
  friend class ::ExtACBuilderCoupling;
 
13859
  friend class ::ExtACSyntaxCoupling;
 
13860
  friend class ::ExtACTree;
 
13861
  friend class ::ExtACKeywords;
 
13862
  friend class ::ExtGnu;
 
13863
  friend class ::PragmaOnceUnitState;
 
13864
  friend class ::PragmaOnce;
 
13865
  friend class ::CMatchSyntax;
 
13866
 
 
13867
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13868
 
 
13869
  
 
13870
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13871
 
 
13872
  
 
13873
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13874
 
 
13875
public:
 
13876
  typedef AC::TLE __AttrTypes;
 
13877
  const char *__attr_name (unsigned i) const { return 0; }
 
13878
  const void *__attr (unsigned __i) const { return 0; }
 
13879
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13880
};
 
13881
#line 13882 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13882
 
 
13883
namespace AC {
 
13884
 
13885
 
 
13886
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
13887
 
 
13888
 
 
13889
#endif /* __CCExprResolveH_ah__ */
 
13890
 
 
13891
#line 8 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
13892
#endif
 
13893
namespace Puma {
 
13894
 
 
13895
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
13896
 
 
13897
#line 13898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13898
} // closed Puma
 
13899
 
 
13900
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
13901
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
13902
 
 
13903
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
13904
// This file is part of PUMA.
 
13905
// Copyright (C) 1999-2003  The PUMA developer team.
 
13906
//                                                                
 
13907
// This program is free software;  you can redistribute it and/or 
 
13908
// modify it under the terms of the GNU General Public License as 
 
13909
// published by the Free Software Foundation; either version 2 of 
 
13910
// the License, or (at your option) any later version.            
 
13911
//                                                                
 
13912
// This program is distributed in the hope that it will be useful,
 
13913
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
13914
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
13915
// GNU General Public License for more details.                   
 
13916
//                                                                
 
13917
// You should have received a copy of the GNU General Public      
 
13918
// License along with this program; if not, write to the Free     
 
13919
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
13920
// MA  02111-1307  USA                                            
 
13921
 
 
13922
#ifndef __CExprResolveH_ah__
 
13923
#define __CExprResolveH_ah__
 
13924
 
 
13925
// This aspect inserts resolve member functions into all syntax tree classes
 
13926
// that represent expressions. As the function is virtual, an efficient
 
13927
// run-time switch over the node type is implemented.
 
13928
 
 
13929
namespace Puma {
 
13930
  class CSemExpr;
 
13931
}
 
13932
 
 
13933
namespace Puma {
 
13934
  
 
13935
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
13936
 
 
13937
  
 
13938
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
13939
 
 
13940
}
 
13941
 
 
13942
 
 
13943
#line 13944 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13944
class CCExprResolve;
 
13945
class WinIfExists;
 
13946
class WinImportHandler;
 
13947
class WinMacros;
 
13948
class WinAsm;
 
13949
class WinDeclSpecs;
 
13950
class WinMemberExplSpec;
 
13951
class WinTypeKeywords;
 
13952
class WinFriend;
 
13953
class ExtAC;
 
13954
class ExtACBuilderCoupling;
 
13955
class ExtACSyntaxCoupling;
 
13956
class ExtACTree;
 
13957
class ExtACKeywords;
 
13958
class ExtGnu;
 
13959
class PragmaOnceUnitState;
 
13960
class PragmaOnce;
 
13961
class CMatchSyntax;
 
13962
 
 
13963
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
13964
class CExprResolve {
 
13965
#line 13966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13966
 
 
13967
public:
 
13968
  static CExprResolve *aspectof () {
 
13969
    static CExprResolve __instance;
 
13970
    return &__instance;
 
13971
  }
 
13972
  static CExprResolve *aspectOf () {
 
13973
    return aspectof ();
 
13974
  }
 
13975
private:
 
13976
 
 
13977
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
13978
 
 
13979
#line 13980 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
13980
  friend class ::CCExprResolve;
 
13981
  friend class ::WinIfExists;
 
13982
  friend class ::WinImportHandler;
 
13983
  friend class ::WinMacros;
 
13984
  friend class ::WinAsm;
 
13985
  friend class ::WinDeclSpecs;
 
13986
  friend class ::WinMemberExplSpec;
 
13987
  friend class ::WinTypeKeywords;
 
13988
  friend class ::WinFriend;
 
13989
  friend class ::ExtAC;
 
13990
  friend class ::ExtACBuilderCoupling;
 
13991
  friend class ::ExtACSyntaxCoupling;
 
13992
  friend class ::ExtACTree;
 
13993
  friend class ::ExtACKeywords;
 
13994
  friend class ::ExtGnu;
 
13995
  friend class ::PragmaOnceUnitState;
 
13996
  friend class ::PragmaOnce;
 
13997
  friend class ::CMatchSyntax;
 
13998
 
 
13999
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
14000
 
 
14001
  
 
14002
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
14003
 
 
14004
  
 
14005
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
14006
 
 
14007
public:
 
14008
  typedef AC::TLE __AttrTypes;
 
14009
  const char *__attr_name (unsigned i) const { return 0; }
 
14010
  const void *__attr (unsigned __i) const { return 0; }
 
14011
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
14012
};
 
14013
#line 14014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14014
 
 
14015
namespace AC {
 
14016
 
14017
 
 
14018
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
14019
 
 
14020
 
 
14021
#endif /* __CExprResolveH_ah__ */
 
14022
 
 
14023
#line 8 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14024
#endif
 
14025
namespace Puma {
 
14026
 
 
14027
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14028
class CTree {
 
14029
#line 14030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14030
  friend class ::CCExprResolve;
 
14031
  friend class ::CExprResolve;
 
14032
  friend class ::WinIfExists;
 
14033
  friend class ::WinImportHandler;
 
14034
  friend class ::WinMacros;
 
14035
  friend class ::WinAsm;
 
14036
  friend class ::WinDeclSpecs;
 
14037
  friend class ::WinMemberExplSpec;
 
14038
  friend class ::WinTypeKeywords;
 
14039
  friend class ::WinFriend;
 
14040
  friend class ::ExtAC;
 
14041
  friend class ::ExtACBuilderCoupling;
 
14042
  friend class ::ExtACSyntaxCoupling;
 
14043
  friend class ::ExtACTree;
 
14044
  friend class ::ExtACKeywords;
 
14045
  friend class ::ExtGnu;
 
14046
  friend class ::PragmaOnceUnitState;
 
14047
  friend class ::PragmaOnce;
 
14048
  friend class ::CMatchSyntax;
 
14049
 
 
14050
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14051
 
 
14052
  CTree * _parent;
 
14053
 
 
14054
public:
 
14055
  /*DEBUG*/static int alloc;
 
14056
  /*DEBUG*/static int release;
 
14057
 
 
14058
protected:
 
14059
  /** Get the n-th son from given sons array. Skips empty (NULL) array items.
 
14060
   *  \param sons The sons array.
 
14061
   *  \param len Length of the sons array.
 
14062
   *  \param n Index of the son.
 
14063
   *  \return The n-th son or NULL. */
 
14064
  CTree *Son (CTree * const *sons, int len, int n) const;
 
14065
  /** Get the number of sons in the given sons array. Skips empty (NULL) array items.
 
14066
   *  \param sons The sons array.
 
14067
   *  \param len Length of the sons array. */
 
14068
  int Sons (CTree * const *sons, int len) const;
 
14069
  /** Replace a son.
 
14070
   *  \param sons The sons array.
 
14071
   *  \param len Length of the sons array.
 
14072
   *  \param old_son The son to replace.
 
14073
   *  \param new_son The new son. */
 
14074
  void ReplaceSon (CTree **sons, int len, CTree *old_son, CTree *new_son);
 
14075
  /** Replace a son if it equals the given son.
 
14076
   *  \param son The actual son.
 
14077
   *  \param old_son The son to replace, must match the actual son.
 
14078
   *  \param new_son The new son, overwrites the actual son. */
 
14079
  void ReplaceSon (CTree *&son, CTree *old_son, CTree *new_son);
 
14080
  /** Add a new son.
 
14081
   *  \param son The actual son.
 
14082
   *  \param new_son The new son, overwrites the actual son. */
 
14083
  void AddSon (CTree *&son, CTree *new_son);
 
14084
  /** Set the parent tree node.
 
14085
   *  \param parent The new parent tree node. */
 
14086
  void SetParent (const CTree *parent) { _parent = (CTree*)parent; }
 
14087
  /** Set the parent tree node of the given tree node.
 
14088
   *  \param node The tree node.
 
14089
   *  \param parent The new parent. */
 
14090
  void SetParent (CTree *node, const CTree *parent) { node->_parent = (CTree*)parent; }
 
14091
  
 
14092
protected:
 
14093
  /** Default constructor. */
 
14094
  CTree () : _parent(0) { /*DEBUG*/alloc++; }
 
14095
 
 
14096
public:
 
14097
  /** Destructor. */
 
14098
  virtual ~CTree () { /*DEBUG*/release++; }
 
14099
  /** Get the number of sons. */
 
14100
  virtual int Sons () const = 0;
 
14101
  /** Get the n-th son.
 
14102
   *  \param n The index of the son.
 
14103
   *  \return The n-th son or NULL. */
 
14104
  virtual CTree *Son (int n) const { return (CTree*)0; }
 
14105
  /** Get the node name (node identifier). */
 
14106
  virtual const char *NodeName () const = 0;
 
14107
  /** Get the first token of the syntactic construct represented by this sub-tree.
 
14108
   *  \return The token or NULL. */
 
14109
  virtual Token *token () const;
 
14110
  /** Get the last token of the syntactic construct represented by this sub-tree.
 
14111
   *  \return The token or NULL. */
 
14112
  virtual Token *end_token () const;
 
14113
  /** Get the CT_Token node of the first token of the syntactic construct represented by this sub-tree.
 
14114
   *  \return The token node or NULL. */
 
14115
  virtual CT_Token *token_node () const;
 
14116
  /** Get the CT_Token node of the last token of the syntactic construct represented by this sub-tree.
 
14117
   *  \return The token node or NULL. */
 
14118
  virtual CT_Token *end_token_node () const;
 
14119
  /** Replace a son.
 
14120
   *  \param old_son The son to replace.
 
14121
   *  \param new_son The son with which to replace. */
 
14122
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {}
 
14123
  /** Get the parent node.
 
14124
   *  \return The parent node or NULL. */
 
14125
  virtual CTree *Parent () const { return (CTree*)_parent; }
 
14126
 
 
14127
public: // semantic information
 
14128
  /** Get the semantic type of the node.
 
14129
   *  \return The type object or NULL. */
 
14130
  virtual CTypeInfo *Type () const { return (CTypeInfo*)0; }
 
14131
  /** Get the calculated value of the expression.
 
14132
   *  \return The value object or NULL. */
 
14133
  virtual CExprValue *Value () const { return (CExprValue*)0; }
 
14134
  
 
14135
  /** Get the scope opened by the node.
 
14136
   *  \return The scope object or NULL. */
 
14137
  virtual CSemScope *SemScope () const { return (CSemScope*)0; }
 
14138
  /** Get the semantic value of the node.
 
14139
   *  \return The value object or NULL. */
 
14140
  virtual CSemValue *SemValue () const { return (CSemValue*)0; }
 
14141
  /** Get the semantic information of the node.
 
14142
   *  \return The semantic object or NULL. */
 
14143
  virtual CSemObject *SemObject () const { return (CSemObject*)0; }
 
14144
  
 
14145
public: // node classification function
 
14146
  /** Get a pointer to CT_SimpleName if the current node represents a name.
 
14147
   *  \return The CT_SimpleName node or NULL. */
 
14148
  virtual CT_SimpleName *IsSimpleName () { return 0; }
 
14149
  /** Get a pointer to CT_String if the current node represents a string.
 
14150
   *  \return The CT_String node or NULL. */
 
14151
  virtual CT_String *IsString () { return 0; }
 
14152
  /** Get a pointer to CT_Declarator if the current node represents a declarator.
 
14153
   *  \return The CT_Declarator pointer or NULL. */
 
14154
  virtual CT_Declarator *IsDeclarator () { return 0; }
 
14155
  /** Get a pointer to CT_Statement if the current node represents a statement.
 
14156
   *  \return The CT_Statement pointer or NULL. */
 
14157
  virtual CT_Statement *IsStatement () { return 0; }
 
14158
  /** Get a pointer to CT_Expression if the current node represents a expression.
 
14159
   *  \return The CT_Expression pointer or NULL. */
 
14160
  virtual CT_Expression *IsExpression () { return 0; }
 
14161
  /** Get a pointer to CT_Decl if the current node represents a declaration.
 
14162
   *  \return The CT_Decl pointer or NULL. */
 
14163
  virtual CT_Decl *IsDeclaration () { return 0; }
 
14164
  /** Get a pointer to CT_Call if the current node represents a call expression.
 
14165
   *  \return The CT_Call pointer or NULL. */
 
14166
  virtual CT_Call *IsCall () { return 0; }
 
14167
   private:
 
14168
  typedef CTree CCExprResolveCTree;
 
14169
 
 
14170
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
14171
 public :
 
14172
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
14173
  typedef CTree CExprResolveCTree;
 
14174
 
 
14175
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
14176
 public :
 
14177
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
14178
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
14179
  const char *__attr_name (unsigned i) const {
 
14180
    static const char *names[] = { "_parent" }; return names[i];
 
14181
  }
 
14182
  const void *__attr (unsigned __i) const {
 
14183
    switch (__i) { case 0: return &_parent; default: return 0; }
 
14184
  }
 
14185
#line 339 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14186
};
 
14187
 
 
14188
/** \class CT_Error CTree.h Puma/CTree.h
 
14189
 *  Error tree node that is inserted into the tree for syntactic constructs
 
14190
 *  that could not be parsed. */
 
14191
 
 
14192
#line 14193 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14193
} // closed Puma
 
14194
class CCExprResolve;
 
14195
class CExprResolve;
 
14196
class WinIfExists;
 
14197
class WinImportHandler;
 
14198
class WinMacros;
 
14199
class WinAsm;
 
14200
class WinDeclSpecs;
 
14201
class WinMemberExplSpec;
 
14202
class WinTypeKeywords;
 
14203
class WinFriend;
 
14204
class ExtAC;
 
14205
class ExtACBuilderCoupling;
 
14206
class ExtACSyntaxCoupling;
 
14207
class ExtACTree;
 
14208
class ExtACKeywords;
 
14209
class ExtGnu;
 
14210
class PragmaOnceUnitState;
 
14211
class PragmaOnce;
 
14212
class CMatchSyntax;
 
14213
namespace Puma {
 
14214
 
 
14215
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14216
class CT_Error : public CTree {
 
14217
#line 14218 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14218
  friend class ::CCExprResolve;
 
14219
  friend class ::CExprResolve;
 
14220
  friend class ::WinIfExists;
 
14221
  friend class ::WinImportHandler;
 
14222
  friend class ::WinMacros;
 
14223
  friend class ::WinAsm;
 
14224
  friend class ::WinDeclSpecs;
 
14225
  friend class ::WinMemberExplSpec;
 
14226
  friend class ::WinTypeKeywords;
 
14227
  friend class ::WinFriend;
 
14228
  friend class ::ExtAC;
 
14229
  friend class ::ExtACBuilderCoupling;
 
14230
  friend class ::ExtACSyntaxCoupling;
 
14231
  friend class ::ExtACTree;
 
14232
  friend class ::ExtACKeywords;
 
14233
  friend class ::ExtGnu;
 
14234
  friend class ::PragmaOnceUnitState;
 
14235
  friend class ::PragmaOnce;
 
14236
  friend class ::CMatchSyntax;
 
14237
 
 
14238
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14239
 
 
14240
public:
 
14241
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
14242
  static const char *NodeId ();
 
14243
  /** Get the name of the node. Can be compared with NodeId(). */
 
14244
  const char *NodeName () const { return NodeId (); }
 
14245
  /** Get the number of sons. */
 
14246
  int Sons () const { return 0; }
 
14247
public:
 
14248
  typedef AC::TLE __AttrTypes;
 
14249
  const char *__attr_name (unsigned i) const { return 0; }
 
14250
  const void *__attr (unsigned __i) const { return 0; }
 
14251
#line 352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14252
};
 
14253
 
 
14254
/** \class CT_Token CTree.h Puma/CTree.h
 
14255
 *  Tree node representing a single token in the source code. */
 
14256
 
 
14257
#line 14258 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14258
} // closed Puma
 
14259
class CCExprResolve;
 
14260
class CExprResolve;
 
14261
class WinIfExists;
 
14262
class WinImportHandler;
 
14263
class WinMacros;
 
14264
class WinAsm;
 
14265
class WinDeclSpecs;
 
14266
class WinMemberExplSpec;
 
14267
class WinTypeKeywords;
 
14268
class WinFriend;
 
14269
class ExtAC;
 
14270
class ExtACBuilderCoupling;
 
14271
class ExtACSyntaxCoupling;
 
14272
class ExtACTree;
 
14273
class ExtACKeywords;
 
14274
class ExtGnu;
 
14275
class PragmaOnceUnitState;
 
14276
class PragmaOnce;
 
14277
class CMatchSyntax;
 
14278
namespace Puma {
 
14279
 
 
14280
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14281
class CT_Token : public CTree {
 
14282
#line 14283 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14283
  friend class ::CCExprResolve;
 
14284
  friend class ::CExprResolve;
 
14285
  friend class ::WinIfExists;
 
14286
  friend class ::WinImportHandler;
 
14287
  friend class ::WinMacros;
 
14288
  friend class ::WinAsm;
 
14289
  friend class ::WinDeclSpecs;
 
14290
  friend class ::WinMemberExplSpec;
 
14291
  friend class ::WinTypeKeywords;
 
14292
  friend class ::WinFriend;
 
14293
  friend class ::ExtAC;
 
14294
  friend class ::ExtACBuilderCoupling;
 
14295
  friend class ::ExtACSyntaxCoupling;
 
14296
  friend class ::ExtACTree;
 
14297
  friend class ::ExtACKeywords;
 
14298
  friend class ::ExtGnu;
 
14299
  friend class ::PragmaOnceUnitState;
 
14300
  friend class ::PragmaOnce;
 
14301
  friend class ::CMatchSyntax;
 
14302
 
 
14303
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14304
 
 
14305
  Token *_token;
 
14306
  unsigned long int _number;
 
14307
  
 
14308
public:
 
14309
  /** Constructor. 
 
14310
   *  \param token The represented token.
 
14311
   *  \param number The token number (a consecutive number). */
 
14312
  CT_Token (Token *token, unsigned long int number = 0) : 
 
14313
    _token (token), _number (number) {}
 
14314
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
14315
  static const char *NodeId ();
 
14316
  /** Get the name of the node. Can be compared with NodeId(). */
 
14317
  const char *NodeName () const { return NodeId (); }
 
14318
  /** Get the number of sons. */
 
14319
  int Sons () const { return 0; }
 
14320
  /** Get the represented token. */
 
14321
  Token *token () const { return _token; }
 
14322
  /** Get the represented token. */
 
14323
  Token *end_token () const { return _token; }
 
14324
  /** Get this. */
 
14325
  CT_Token *token_node () const { return (CT_Token*)this; }
 
14326
  /** Get this. */
 
14327
  CT_Token *end_token_node () const { return (CT_Token*)this; }
 
14328
  /** Set the token number. 
 
14329
   *  \param number The token number. */ 
 
14330
  void Number (unsigned long int number) { _number = number; }
 
14331
  /** Get the token number. Can be used to indentify this token. */
 
14332
  unsigned long int Number () const { return _number; }
 
14333
  
 
14334
public:
 
14335
  /** Own new operator reusing memory. */
 
14336
  void *operator new (size_t);
 
14337
  /** Own delete operator. */
 
14338
  void operator delete (void *);
 
14339
public:
 
14340
  typedef AC::TL<Puma::Token *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
14341
  const char *__attr_name (unsigned i) const {
 
14342
    static const char *names[] = { "_token", "_number" }; return names[i];
 
14343
  }
 
14344
  const void *__attr (unsigned __i) const {
 
14345
    switch (__i) { case 0: return &_token; case 1: return &_number; default: return 0; }
 
14346
  }
 
14347
#line 391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14348
};
 
14349
 
 
14350
/*****************************************************************************/
 
14351
/*                                                                           */
 
14352
/*                              List nodes                                   */
 
14353
/*                                                                           */
 
14354
/*****************************************************************************/
 
14355
 
 
14356
/** \class CT_List CTree.h Puma/CTree.h
 
14357
 *  Base class for tree nodes representing lists. */
 
14358
 
 
14359
#line 14360 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14360
} // closed Puma
 
14361
class CCExprResolve;
 
14362
class CExprResolve;
 
14363
class WinIfExists;
 
14364
class WinImportHandler;
 
14365
class WinMacros;
 
14366
class WinAsm;
 
14367
class WinDeclSpecs;
 
14368
class WinMemberExplSpec;
 
14369
class WinTypeKeywords;
 
14370
class WinFriend;
 
14371
class ExtAC;
 
14372
class ExtACBuilderCoupling;
 
14373
class ExtACSyntaxCoupling;
 
14374
class ExtACTree;
 
14375
class ExtACKeywords;
 
14376
class ExtGnu;
 
14377
class PragmaOnceUnitState;
 
14378
class PragmaOnce;
 
14379
class CMatchSyntax;
 
14380
namespace Puma {
 
14381
 
 
14382
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14383
class CT_List : public CTree {
 
14384
#line 14385 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14385
  friend class ::CCExprResolve;
 
14386
  friend class ::CExprResolve;
 
14387
  friend class ::WinIfExists;
 
14388
  friend class ::WinImportHandler;
 
14389
  friend class ::WinMacros;
 
14390
  friend class ::WinAsm;
 
14391
  friend class ::WinDeclSpecs;
 
14392
  friend class ::WinMemberExplSpec;
 
14393
  friend class ::WinTypeKeywords;
 
14394
  friend class ::WinFriend;
 
14395
  friend class ::ExtAC;
 
14396
  friend class ::ExtACBuilderCoupling;
 
14397
  friend class ::ExtACSyntaxCoupling;
 
14398
  friend class ::ExtACTree;
 
14399
  friend class ::ExtACKeywords;
 
14400
  friend class ::ExtGnu;
 
14401
  friend class ::PragmaOnceUnitState;
 
14402
  friend class ::PragmaOnce;
 
14403
  friend class ::CMatchSyntax;
 
14404
 
 
14405
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14406
 
 
14407
  Array<CTree*> _sons;
 
14408
  int _properties;
 
14409
 
 
14410
protected:
 
14411
  /** Constructor.
 
14412
   *  \param size The initial list size.
 
14413
   *  \param incr The initial increment count. 
 
14414
   *  \param props The list properties (bit array). */
 
14415
  CT_List(int size = 5, int incr = 5, int props = 0) : 
 
14416
    _sons (size, incr), _properties (props) {}
 
14417
 
 
14418
public:
 
14419
  /** %List properties. */
 
14420
  enum {
 
14421
    /** %List has a start token, like ':' in ":a(1),b(2)" */
 
14422
    OPEN = 1,         
 
14423
    /** %List has an end token */
 
14424
    CLOSE = 2,        
 
14425
    /** %List has opening and closing delimiters, like '(' and ')' */
 
14426
    OPEN_CLOSE = 3,   
 
14427
    /** %List has separators, like ',' */
 
14428
    SEPARATORS = 4,   
 
14429
    /** %List pretend to be empty, like for "(void)" */
 
14430
    FORCE_EMPTY = 8,  
 
14431
    /** %List has trailing separator, like "a,b,c," */
 
14432
    END_SEP = 16,     
 
14433
    /** %List has no separator before last element, like "(a,b...)" */
 
14434
    NO_LAST_SEP = 32, 
 
14435
    /** %List has an introduction chararacter, like "=" in "={a,b}" */
 
14436
    INTRO = 64        
 
14437
  };
 
14438
 
 
14439
  /** Get the number of list entries. */
 
14440
  int Entries () const;
 
14441
  /** Get the n-th list entry.
 
14442
   *  \param n The index of the entry. 
 
14443
   *  \return The list entry or NULL. */
 
14444
  CTree *Entry (int n) const;
 
14445
  /** Get the number of sons. */
 
14446
  int Sons () const { return _sons.length (); }
 
14447
  /** Get the n-th son.
 
14448
   *  \param n The index of the son. 
 
14449
   *  \return The n-th son or NULL. */
 
14450
  CTree *Son (int n) const { return _sons.lookup (n); }
 
14451
  /** Get the list properties. */
 
14452
  int GetProperties () const { return _properties; }
 
14453
  /** Add a list property.
 
14454
   *  \param p The property to add. */
 
14455
  void AddProperties (int p) { _properties |= p; }
 
14456
  /** Add a son.
 
14457
   *  \param s The son to add. */
 
14458
  void AddSon (CTree *s) { if (s) { _sons.append (s); SetParent (s, this); } }
 
14459
  /** Prepend a son.
 
14460
   *  \param s The son to prepend. */
 
14461
  void PrefixSon (CTree *s) { if (s) { _sons.prepend (s); SetParent (s, this); } }
 
14462
  /** Insert a son before another son.
 
14463
   *  \param before The son to insert the new son before.
 
14464
   *  \param son The son to insert. */
 
14465
  void InsertSon (CTree *before, CTree *son); 
 
14466
  /** Replace a son.
 
14467
   *  \param old_son The son to replace.
 
14468
   *  \param new_son The new son. */
 
14469
  void ReplaceSon (CTree *old_son, CTree *new_son);
 
14470
  /** Remove a son.
 
14471
   *  \param son The son to remove. */
 
14472
  void RemoveSon (CTree *son);
 
14473
  /** Insert a son at the given index. 
 
14474
   *  \param idx The index at which to insert.
 
14475
   *  \param s The son to insert. */
 
14476
  void InsertSon (int idx, CTree *s)
 
14477
   { if (s && idx <= Sons ()) { _sons.insert (idx, s); SetParent (s, this); } }
 
14478
  /** Replace the son at the given index.
 
14479
   *  \param idx The index of the son to replace.
 
14480
   *  \param s The new son. */
 
14481
  void ReplaceSon (int idx, CTree *s) 
 
14482
   { if (s && idx < Sons ()) { SetParent (_sons[idx], 0); _sons[idx] = s; SetParent (s, this); } }
 
14483
  /** Remove the son at the given index. 
 
14484
   *  \param idx The index of the son to remove. */
 
14485
  void RemoveSon (int idx) 
 
14486
   { if (idx < Sons ()) { SetParent (_sons[idx], 0); _sons.remove (idx); } }
 
14487
public:
 
14488
  typedef AC::TL<Puma::Array< Puma::CTree * >,AC::TL<int,AC::TLE > > __AttrTypes;
 
14489
  const char *__attr_name (unsigned i) const {
 
14490
    static const char *names[] = { "_sons", "_properties" }; return names[i];
 
14491
  }
 
14492
  const void *__attr (unsigned __i) const {
 
14493
    switch (__i) { case 1: return &_sons; case 2: return &_properties; default: return 0; }
 
14494
  }
 
14495
#line 482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14496
};
 
14497
 
 
14498
/** \class CT_ExprList CTree.h Puma/CTree.h
 
14499
 *  Tree node representing an expression list. */
 
14500
 
 
14501
#line 14502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14502
} // closed Puma
 
14503
class CCExprResolve;
 
14504
class CExprResolve;
 
14505
class WinIfExists;
 
14506
class WinImportHandler;
 
14507
class WinMacros;
 
14508
class WinAsm;
 
14509
class WinDeclSpecs;
 
14510
class WinMemberExplSpec;
 
14511
class WinTypeKeywords;
 
14512
class WinFriend;
 
14513
class ExtAC;
 
14514
class ExtACBuilderCoupling;
 
14515
class ExtACSyntaxCoupling;
 
14516
class ExtACTree;
 
14517
class ExtACKeywords;
 
14518
class ExtGnu;
 
14519
class PragmaOnceUnitState;
 
14520
class PragmaOnce;
 
14521
class CMatchSyntax;
 
14522
namespace Puma {
 
14523
 
 
14524
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14525
class CT_ExprList : public CT_List, public CSemValue, public CSemObject {
 
14526
#line 14527 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14527
  friend class ::CCExprResolve;
 
14528
  friend class ::CExprResolve;
 
14529
  friend class ::WinIfExists;
 
14530
  friend class ::WinImportHandler;
 
14531
  friend class ::WinMacros;
 
14532
  friend class ::WinAsm;
 
14533
  friend class ::WinDeclSpecs;
 
14534
  friend class ::WinMemberExplSpec;
 
14535
  friend class ::WinTypeKeywords;
 
14536
  friend class ::WinFriend;
 
14537
  friend class ::ExtAC;
 
14538
  friend class ::ExtACBuilderCoupling;
 
14539
  friend class ::ExtACSyntaxCoupling;
 
14540
  friend class ::ExtACTree;
 
14541
  friend class ::ExtACKeywords;
 
14542
  friend class ::ExtGnu;
 
14543
  friend class ::PragmaOnceUnitState;
 
14544
  friend class ::PragmaOnce;
 
14545
  friend class ::CMatchSyntax;
 
14546
 
 
14547
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14548
 
 
14549
public:
 
14550
  /** Constructor. */
 
14551
  CT_ExprList () { AddProperties (SEPARATORS); }
 
14552
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
14553
  static const char *NodeId ();
 
14554
  /** Get the name of the node. Can be compared with NodeId(). */
 
14555
  const char *NodeName () const { return NodeId (); }
 
14556
 
 
14557
  /** Get the type of the last expression in the expression list.
 
14558
   *  \return The type or NULL. */
 
14559
  CTypeInfo *Type () const { return type; }
 
14560
  /** Get the value of the last expression in the expression list.
 
14561
   *  \return The value of NULL. */
 
14562
  CExprValue *Value () const { return value; }
 
14563
  /** Get the semantic value of the node. */
 
14564
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
14565
  /** Get the semantic information about the node. */
 
14566
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
14567
public:
 
14568
  typedef AC::TLE __AttrTypes;
 
14569
  const char *__attr_name (unsigned i) const { return 0; }
 
14570
  const void *__attr (unsigned __i) const { return 0; }
 
14571
#line 505 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14572
};
 
14573
 
 
14574
/** \class CT_DeclaratorList CTree.h Puma/CTree.h
 
14575
 *  Tree node representing a list of declarators. */
 
14576
 
 
14577
#line 14578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14578
} // closed Puma
 
14579
class CCExprResolve;
 
14580
class CExprResolve;
 
14581
class WinIfExists;
 
14582
class WinImportHandler;
 
14583
class WinMacros;
 
14584
class WinAsm;
 
14585
class WinDeclSpecs;
 
14586
class WinMemberExplSpec;
 
14587
class WinTypeKeywords;
 
14588
class WinFriend;
 
14589
class ExtAC;
 
14590
class ExtACBuilderCoupling;
 
14591
class ExtACSyntaxCoupling;
 
14592
class ExtACTree;
 
14593
class ExtACKeywords;
 
14594
class ExtGnu;
 
14595
class PragmaOnceUnitState;
 
14596
class PragmaOnce;
 
14597
class CMatchSyntax;
 
14598
namespace Puma {
 
14599
 
 
14600
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14601
class CT_DeclaratorList : public CT_List {
 
14602
#line 14603 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14603
  friend class ::CCExprResolve;
 
14604
  friend class ::CExprResolve;
 
14605
  friend class ::WinIfExists;
 
14606
  friend class ::WinImportHandler;
 
14607
  friend class ::WinMacros;
 
14608
  friend class ::WinAsm;
 
14609
  friend class ::WinDeclSpecs;
 
14610
  friend class ::WinMemberExplSpec;
 
14611
  friend class ::WinTypeKeywords;
 
14612
  friend class ::WinFriend;
 
14613
  friend class ::ExtAC;
 
14614
  friend class ::ExtACBuilderCoupling;
 
14615
  friend class ::ExtACSyntaxCoupling;
 
14616
  friend class ::ExtACTree;
 
14617
  friend class ::ExtACKeywords;
 
14618
  friend class ::ExtGnu;
 
14619
  friend class ::PragmaOnceUnitState;
 
14620
  friend class ::PragmaOnce;
 
14621
  friend class ::CMatchSyntax;
 
14622
 
 
14623
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14624
 
 
14625
public:
 
14626
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
14627
  static const char *NodeId ();
 
14628
  /** Get the name of the node. Can be compared with NodeId(). */
 
14629
  const char *NodeName () const { return NodeId (); }
 
14630
public:
 
14631
  typedef AC::TLE __AttrTypes;
 
14632
  const char *__attr_name (unsigned i) const { return 0; }
 
14633
  const void *__attr (unsigned __i) const { return 0; }
 
14634
#line 515 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14635
};
 
14636
 
 
14637
/** \class CT_EnumeratorList CTree.h Puma/CTree.h
 
14638
 *  Tree node representing a list of enumerator constants. */
 
14639
 
 
14640
#line 14641 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14641
} // closed Puma
 
14642
class CCExprResolve;
 
14643
class CExprResolve;
 
14644
class WinIfExists;
 
14645
class WinImportHandler;
 
14646
class WinMacros;
 
14647
class WinAsm;
 
14648
class WinDeclSpecs;
 
14649
class WinMemberExplSpec;
 
14650
class WinTypeKeywords;
 
14651
class WinFriend;
 
14652
class ExtAC;
 
14653
class ExtACBuilderCoupling;
 
14654
class ExtACSyntaxCoupling;
 
14655
class ExtACTree;
 
14656
class ExtACKeywords;
 
14657
class ExtGnu;
 
14658
class PragmaOnceUnitState;
 
14659
class PragmaOnce;
 
14660
class CMatchSyntax;
 
14661
namespace Puma {
 
14662
 
 
14663
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14664
class CT_EnumeratorList : public CT_List {
 
14665
#line 14666 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14666
  friend class ::CCExprResolve;
 
14667
  friend class ::CExprResolve;
 
14668
  friend class ::WinIfExists;
 
14669
  friend class ::WinImportHandler;
 
14670
  friend class ::WinMacros;
 
14671
  friend class ::WinAsm;
 
14672
  friend class ::WinDeclSpecs;
 
14673
  friend class ::WinMemberExplSpec;
 
14674
  friend class ::WinTypeKeywords;
 
14675
  friend class ::WinFriend;
 
14676
  friend class ::ExtAC;
 
14677
  friend class ::ExtACBuilderCoupling;
 
14678
  friend class ::ExtACSyntaxCoupling;
 
14679
  friend class ::ExtACTree;
 
14680
  friend class ::ExtACKeywords;
 
14681
  friend class ::ExtGnu;
 
14682
  friend class ::PragmaOnceUnitState;
 
14683
  friend class ::PragmaOnce;
 
14684
  friend class ::CMatchSyntax;
 
14685
 
 
14686
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14687
 
 
14688
public:
 
14689
  /** Constructor. */
 
14690
  CT_EnumeratorList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
14691
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
14692
  static const char *NodeId ();
 
14693
  /** Get the name of the node. Can be compared with NodeId(). */
 
14694
  const char *NodeName () const { return NodeId (); }
 
14695
public:
 
14696
  typedef AC::TLE __AttrTypes;
 
14697
  const char *__attr_name (unsigned i) const { return 0; }
 
14698
  const void *__attr (unsigned __i) const { return 0; }
 
14699
#line 527 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14700
};
 
14701
   
 
14702
/** \class CT_DeclList CTree.h Puma/CTree.h
 
14703
 *  Tree node representing a list of declarations. */
 
14704
 
 
14705
#line 14706 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14706
} // closed Puma
 
14707
class CCExprResolve;
 
14708
class CExprResolve;
 
14709
class WinIfExists;
 
14710
class WinImportHandler;
 
14711
class WinMacros;
 
14712
class WinAsm;
 
14713
class WinDeclSpecs;
 
14714
class WinMemberExplSpec;
 
14715
class WinTypeKeywords;
 
14716
class WinFriend;
 
14717
class ExtAC;
 
14718
class ExtACBuilderCoupling;
 
14719
class ExtACSyntaxCoupling;
 
14720
class ExtACTree;
 
14721
class ExtACKeywords;
 
14722
class ExtGnu;
 
14723
class PragmaOnceUnitState;
 
14724
class PragmaOnce;
 
14725
class CMatchSyntax;
 
14726
namespace Puma {
 
14727
 
 
14728
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14729
class CT_DeclList : public CT_List {
 
14730
#line 14731 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14731
  friend class ::CCExprResolve;
 
14732
  friend class ::CExprResolve;
 
14733
  friend class ::WinIfExists;
 
14734
  friend class ::WinImportHandler;
 
14735
  friend class ::WinMacros;
 
14736
  friend class ::WinAsm;
 
14737
  friend class ::WinDeclSpecs;
 
14738
  friend class ::WinMemberExplSpec;
 
14739
  friend class ::WinTypeKeywords;
 
14740
  friend class ::WinFriend;
 
14741
  friend class ::ExtAC;
 
14742
  friend class ::ExtACBuilderCoupling;
 
14743
  friend class ::ExtACSyntaxCoupling;
 
14744
  friend class ::ExtACTree;
 
14745
  friend class ::ExtACKeywords;
 
14746
  friend class ::ExtGnu;
 
14747
  friend class ::PragmaOnceUnitState;
 
14748
  friend class ::PragmaOnce;
 
14749
  friend class ::CMatchSyntax;
 
14750
 
 
14751
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14752
 
 
14753
public:
 
14754
  /** Constructor. 
 
14755
   *  \param size The initial size of the list.
 
14756
   *  \param incr The initial increment count of the list. */
 
14757
  CT_DeclList (int size = 20, int incr = 20) : CT_List (size, incr) {}
 
14758
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
14759
  static const char *NodeId ();
 
14760
  /** Get the name of the node. Can be compared with NodeId(). */
 
14761
  const char *NodeName () const { return NodeId (); }
 
14762
  /** Set the linkage specifiers to each declaration in the list.
 
14763
   *  \param l The linkage specifiers node. */
 
14764
  void Linkage (CT_LinkageSpec *l);
 
14765
public:
 
14766
  typedef AC::TLE __AttrTypes;
 
14767
  const char *__attr_name (unsigned i) const { return 0; }
 
14768
  const void *__attr (unsigned __i) const { return 0; }
 
14769
#line 544 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14770
};
 
14771
 
 
14772
/** \class CT_DeclSpecSeq CTree.h Puma/CTree.h
 
14773
 *  Tree node representing a sequence of declaration specifiers. */
 
14774
 
 
14775
#line 14776 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14776
} // closed Puma
 
14777
class CCExprResolve;
 
14778
class CExprResolve;
 
14779
class WinIfExists;
 
14780
class WinImportHandler;
 
14781
class WinMacros;
 
14782
class WinAsm;
 
14783
class WinDeclSpecs;
 
14784
class WinMemberExplSpec;
 
14785
class WinTypeKeywords;
 
14786
class WinFriend;
 
14787
class ExtAC;
 
14788
class ExtACBuilderCoupling;
 
14789
class ExtACSyntaxCoupling;
 
14790
class ExtACTree;
 
14791
class ExtACKeywords;
 
14792
class ExtGnu;
 
14793
class PragmaOnceUnitState;
 
14794
class PragmaOnce;
 
14795
class CMatchSyntax;
 
14796
namespace Puma {
 
14797
 
 
14798
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14799
class CT_DeclSpecSeq : public CT_List {
 
14800
#line 14801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14801
  friend class ::CCExprResolve;
 
14802
  friend class ::CExprResolve;
 
14803
  friend class ::WinIfExists;
 
14804
  friend class ::WinImportHandler;
 
14805
  friend class ::WinMacros;
 
14806
  friend class ::WinAsm;
 
14807
  friend class ::WinDeclSpecs;
 
14808
  friend class ::WinMemberExplSpec;
 
14809
  friend class ::WinTypeKeywords;
 
14810
  friend class ::WinFriend;
 
14811
  friend class ::ExtAC;
 
14812
  friend class ::ExtACBuilderCoupling;
 
14813
  friend class ::ExtACSyntaxCoupling;
 
14814
  friend class ::ExtACTree;
 
14815
  friend class ::ExtACKeywords;
 
14816
  friend class ::ExtGnu;
 
14817
  friend class ::PragmaOnceUnitState;
 
14818
  friend class ::PragmaOnce;
 
14819
  friend class ::CMatchSyntax;
 
14820
 
 
14821
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14822
 
 
14823
public:
 
14824
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
14825
  static const char *NodeId ();
 
14826
  /** Get the name of the node. Can be compared with NodeId(). */
 
14827
  const char *NodeName () const { return NodeId (); }
 
14828
public:
 
14829
  typedef AC::TLE __AttrTypes;
 
14830
  const char *__attr_name (unsigned i) const { return 0; }
 
14831
  const void *__attr (unsigned __i) const { return 0; }
 
14832
#line 554 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14833
};
 
14834
 
 
14835
/** \class CT_CmpdStmt CTree.h Puma/CTree.h
 
14836
 *  Tree node representing a compound statement. */
 
14837
 
 
14838
#line 14839 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14839
} // closed Puma
 
14840
class CCExprResolve;
 
14841
class CExprResolve;
 
14842
class WinIfExists;
 
14843
class WinImportHandler;
 
14844
class WinMacros;
 
14845
class WinAsm;
 
14846
class WinDeclSpecs;
 
14847
class WinMemberExplSpec;
 
14848
class WinTypeKeywords;
 
14849
class WinFriend;
 
14850
class ExtAC;
 
14851
class ExtACBuilderCoupling;
 
14852
class ExtACSyntaxCoupling;
 
14853
class ExtACTree;
 
14854
class ExtACKeywords;
 
14855
class ExtGnu;
 
14856
class PragmaOnceUnitState;
 
14857
class PragmaOnce;
 
14858
class CMatchSyntax;
 
14859
namespace Puma {
 
14860
 
 
14861
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14862
class CT_CmpdStmt : public CT_List, public CSemScope {
 
14863
#line 14864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14864
  friend class ::CCExprResolve;
 
14865
  friend class ::CExprResolve;
 
14866
  friend class ::WinIfExists;
 
14867
  friend class ::WinImportHandler;
 
14868
  friend class ::WinMacros;
 
14869
  friend class ::WinAsm;
 
14870
  friend class ::WinDeclSpecs;
 
14871
  friend class ::WinMemberExplSpec;
 
14872
  friend class ::WinTypeKeywords;
 
14873
  friend class ::WinFriend;
 
14874
  friend class ::ExtAC;
 
14875
  friend class ::ExtACBuilderCoupling;
 
14876
  friend class ::ExtACSyntaxCoupling;
 
14877
  friend class ::ExtACTree;
 
14878
  friend class ::ExtACKeywords;
 
14879
  friend class ::ExtGnu;
 
14880
  friend class ::PragmaOnceUnitState;
 
14881
  friend class ::PragmaOnce;
 
14882
  friend class ::CMatchSyntax;
 
14883
 
 
14884
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14885
 
 
14886
public:
 
14887
  /* Constructor. */
 
14888
  CT_CmpdStmt () { AddProperties (OPEN_CLOSE); }
 
14889
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
14890
  static const char *NodeId ();
 
14891
  /** Get the name of the node. Can be compared with NodeId(). */
 
14892
  const char *NodeName () const { return NodeId (); }
 
14893
  /** Get the scope opened by the compound statement. */
 
14894
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
14895
public:
 
14896
  typedef AC::TLE __AttrTypes;
 
14897
  const char *__attr_name (unsigned i) const { return 0; }
 
14898
  const void *__attr (unsigned __i) const { return 0; }
 
14899
#line 568 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14900
};
 
14901
 
 
14902
/** \class CT_HandlerSeq CTree.h Puma/CTree.h
 
14903
 *  Tree node representing an exception handler sequence. */
 
14904
 
 
14905
#line 14906 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14906
} // closed Puma
 
14907
class CCExprResolve;
 
14908
class CExprResolve;
 
14909
class WinIfExists;
 
14910
class WinImportHandler;
 
14911
class WinMacros;
 
14912
class WinAsm;
 
14913
class WinDeclSpecs;
 
14914
class WinMemberExplSpec;
 
14915
class WinTypeKeywords;
 
14916
class WinFriend;
 
14917
class ExtAC;
 
14918
class ExtACBuilderCoupling;
 
14919
class ExtACSyntaxCoupling;
 
14920
class ExtACTree;
 
14921
class ExtACKeywords;
 
14922
class ExtGnu;
 
14923
class PragmaOnceUnitState;
 
14924
class PragmaOnce;
 
14925
class CMatchSyntax;
 
14926
namespace Puma {
 
14927
 
 
14928
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14929
class CT_HandlerSeq : public CT_List {
 
14930
#line 14931 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14931
  friend class ::CCExprResolve;
 
14932
  friend class ::CExprResolve;
 
14933
  friend class ::WinIfExists;
 
14934
  friend class ::WinImportHandler;
 
14935
  friend class ::WinMacros;
 
14936
  friend class ::WinAsm;
 
14937
  friend class ::WinDeclSpecs;
 
14938
  friend class ::WinMemberExplSpec;
 
14939
  friend class ::WinTypeKeywords;
 
14940
  friend class ::WinFriend;
 
14941
  friend class ::ExtAC;
 
14942
  friend class ::ExtACBuilderCoupling;
 
14943
  friend class ::ExtACSyntaxCoupling;
 
14944
  friend class ::ExtACTree;
 
14945
  friend class ::ExtACKeywords;
 
14946
  friend class ::ExtGnu;
 
14947
  friend class ::PragmaOnceUnitState;
 
14948
  friend class ::PragmaOnce;
 
14949
  friend class ::CMatchSyntax;
 
14950
 
 
14951
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14952
 
 
14953
public:
 
14954
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
14955
  static const char *NodeId ();
 
14956
  /** Get the name of the node. Can be compared with NodeId(). */
 
14957
  const char *NodeName () const { return NodeId (); }
 
14958
public:
 
14959
  typedef AC::TLE __AttrTypes;
 
14960
  const char *__attr_name (unsigned i) const { return 0; }
 
14961
  const void *__attr (unsigned __i) const { return 0; }
 
14962
#line 578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14963
};
 
14964
 
 
14965
/** \class CT_TemplateParamList CTree.h Puma/CTree.h
 
14966
 *  Tree node representing a template parameter list. */
 
14967
 
 
14968
#line 14969 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14969
} // closed Puma
 
14970
class CCExprResolve;
 
14971
class CExprResolve;
 
14972
class WinIfExists;
 
14973
class WinImportHandler;
 
14974
class WinMacros;
 
14975
class WinAsm;
 
14976
class WinDeclSpecs;
 
14977
class WinMemberExplSpec;
 
14978
class WinTypeKeywords;
 
14979
class WinFriend;
 
14980
class ExtAC;
 
14981
class ExtACBuilderCoupling;
 
14982
class ExtACSyntaxCoupling;
 
14983
class ExtACTree;
 
14984
class ExtACKeywords;
 
14985
class ExtGnu;
 
14986
class PragmaOnceUnitState;
 
14987
class PragmaOnce;
 
14988
class CMatchSyntax;
 
14989
namespace Puma {
 
14990
 
 
14991
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14992
class CT_TemplateParamList : public CT_List, public CSemScope {
 
14993
#line 14994 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
14994
  friend class ::CCExprResolve;
 
14995
  friend class ::CExprResolve;
 
14996
  friend class ::WinIfExists;
 
14997
  friend class ::WinImportHandler;
 
14998
  friend class ::WinMacros;
 
14999
  friend class ::WinAsm;
 
15000
  friend class ::WinDeclSpecs;
 
15001
  friend class ::WinMemberExplSpec;
 
15002
  friend class ::WinTypeKeywords;
 
15003
  friend class ::WinFriend;
 
15004
  friend class ::ExtAC;
 
15005
  friend class ::ExtACBuilderCoupling;
 
15006
  friend class ::ExtACSyntaxCoupling;
 
15007
  friend class ::ExtACTree;
 
15008
  friend class ::ExtACKeywords;
 
15009
  friend class ::ExtGnu;
 
15010
  friend class ::PragmaOnceUnitState;
 
15011
  friend class ::PragmaOnce;
 
15012
  friend class ::CMatchSyntax;
 
15013
 
 
15014
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15015
 
 
15016
public:
 
15017
  CT_TemplateParamList () { AddProperties (INTRO | SEPARATORS | OPEN_CLOSE); }
 
15018
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15019
  static const char *NodeId ();
 
15020
  /** Get the name of the node. Can be compared with NodeId(). */
 
15021
  const char *NodeName () const { return NodeId (); }
 
15022
  /** Get the scope opened by the template parameter list. */
 
15023
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
15024
public:
 
15025
  typedef AC::TLE __AttrTypes;
 
15026
  const char *__attr_name (unsigned i) const { return 0; }
 
15027
  const void *__attr (unsigned __i) const { return 0; }
 
15028
#line 591 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15029
};
 
15030
 
 
15031
/** \class CT_TemplateArgList CTree.h Puma/CTree.h
 
15032
 *  Tree node representing a template argument list. */
 
15033
 
 
15034
#line 15035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15035
} // closed Puma
 
15036
class CCExprResolve;
 
15037
class CExprResolve;
 
15038
class WinIfExists;
 
15039
class WinImportHandler;
 
15040
class WinMacros;
 
15041
class WinAsm;
 
15042
class WinDeclSpecs;
 
15043
class WinMemberExplSpec;
 
15044
class WinTypeKeywords;
 
15045
class WinFriend;
 
15046
class ExtAC;
 
15047
class ExtACBuilderCoupling;
 
15048
class ExtACSyntaxCoupling;
 
15049
class ExtACTree;
 
15050
class ExtACKeywords;
 
15051
class ExtGnu;
 
15052
class PragmaOnceUnitState;
 
15053
class PragmaOnce;
 
15054
class CMatchSyntax;
 
15055
namespace Puma {
 
15056
 
 
15057
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15058
class CT_TemplateArgList : public CT_List {
 
15059
#line 15060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15060
  friend class ::CCExprResolve;
 
15061
  friend class ::CExprResolve;
 
15062
  friend class ::WinIfExists;
 
15063
  friend class ::WinImportHandler;
 
15064
  friend class ::WinMacros;
 
15065
  friend class ::WinAsm;
 
15066
  friend class ::WinDeclSpecs;
 
15067
  friend class ::WinMemberExplSpec;
 
15068
  friend class ::WinTypeKeywords;
 
15069
  friend class ::WinFriend;
 
15070
  friend class ::ExtAC;
 
15071
  friend class ::ExtACBuilderCoupling;
 
15072
  friend class ::ExtACSyntaxCoupling;
 
15073
  friend class ::ExtACTree;
 
15074
  friend class ::ExtACKeywords;
 
15075
  friend class ::ExtGnu;
 
15076
  friend class ::PragmaOnceUnitState;
 
15077
  friend class ::PragmaOnce;
 
15078
  friend class ::CMatchSyntax;
 
15079
 
 
15080
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15081
 
 
15082
public:
 
15083
  /** Constructor. */
 
15084
  CT_TemplateArgList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
15085
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15086
  static const char *NodeId ();
 
15087
  /** Get the name of the node. Can be compared with NodeId(). */
 
15088
  const char *NodeName () const { return NodeId (); }
 
15089
public:
 
15090
  typedef AC::TLE __AttrTypes;
 
15091
  const char *__attr_name (unsigned i) const { return 0; }
 
15092
  const void *__attr (unsigned __i) const { return 0; }
 
15093
#line 603 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15094
};
 
15095
 
 
15096
/*****************************************************************************/
 
15097
/*                                                                           */
 
15098
/*                              Expressions                                  */
 
15099
/*                                                                           */
 
15100
/*****************************************************************************/
 
15101
 
 
15102
/** \class CT_Expression CTree.h Puma/CTree.h
 
15103
 *  Base class for all expression tree nodes. */
 
15104
 
 
15105
#line 15106 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15106
} // closed Puma
 
15107
class CCExprResolve;
 
15108
class CExprResolve;
 
15109
class WinIfExists;
 
15110
class WinImportHandler;
 
15111
class WinMacros;
 
15112
class WinAsm;
 
15113
class WinDeclSpecs;
 
15114
class WinMemberExplSpec;
 
15115
class WinTypeKeywords;
 
15116
class WinFriend;
 
15117
class ExtAC;
 
15118
class ExtACBuilderCoupling;
 
15119
class ExtACSyntaxCoupling;
 
15120
class ExtACTree;
 
15121
class ExtACKeywords;
 
15122
class ExtGnu;
 
15123
class PragmaOnceUnitState;
 
15124
class PragmaOnce;
 
15125
class CMatchSyntax;
 
15126
namespace Puma {
 
15127
 
 
15128
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15129
 
 
15130
#line 15131 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15131
} // closed Puma
 
15132
 
 
15133
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15134
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15135
#include "CCExprResolveH.ah"
 
15136
#endif
 
15137
namespace Puma {
 
15138
 
 
15139
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15140
 
 
15141
#line 15142 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15142
} // closed Puma
 
15143
 
 
15144
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15145
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15146
#include "CExprResolveH.ah"
 
15147
#endif
 
15148
namespace Puma {
 
15149
 
 
15150
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15151
class CT_Expression : public CTree, public CSemValue {
 
15152
#line 15153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15153
  friend class ::CCExprResolve;
 
15154
  friend class ::CExprResolve;
 
15155
  friend class ::WinIfExists;
 
15156
  friend class ::WinImportHandler;
 
15157
  friend class ::WinMacros;
 
15158
  friend class ::WinAsm;
 
15159
  friend class ::WinDeclSpecs;
 
15160
  friend class ::WinMemberExplSpec;
 
15161
  friend class ::WinTypeKeywords;
 
15162
  friend class ::WinFriend;
 
15163
  friend class ::ExtAC;
 
15164
  friend class ::ExtACBuilderCoupling;
 
15165
  friend class ::ExtACSyntaxCoupling;
 
15166
  friend class ::ExtACTree;
 
15167
  friend class ::ExtACKeywords;
 
15168
  friend class ::ExtGnu;
 
15169
  friend class ::PragmaOnceUnitState;
 
15170
  friend class ::PragmaOnce;
 
15171
  friend class ::CMatchSyntax;
 
15172
 
 
15173
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15174
 
 
15175
protected:
 
15176
  /** Constructor. */
 
15177
  CT_Expression () {}
 
15178
 
 
15179
public:
 
15180
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15181
  static const char *NodeId ();
 
15182
  /** Get the name of the node. Can be compared with NodeId(). */
 
15183
  const char *NodeName () const { return NodeId (); }
 
15184
  /** Get the type of the expression.
 
15185
   *  \return The type information object or NULL. */
 
15186
  CTypeInfo *Type () const { return type; }
 
15187
  /** Get the value of the expression.
 
15188
   *  \return The value object or NULL. */
 
15189
  CExprValue *Value () const { return value; }
 
15190
  /** Get the semantic value information of the expression.
 
15191
   *  \return The value object or NULL. */
 
15192
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
15193
  /** Get this. */
 
15194
  virtual CT_Expression *IsExpression () { return this; }
 
15195
   private:
 
15196
  typedef CT_Expression CCExprResolveExpr;
 
15197
 
 
15198
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15199
 public :
 
15200
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
15201
  typedef CT_Expression CExprResolveExpr;
 
15202
 
 
15203
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15204
 public :
 
15205
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
15206
  typedef AC::TLE __AttrTypes;
 
15207
  const char *__attr_name (unsigned i) const { return 0; }
 
15208
  const void *__attr (unsigned __i) const { return 0; }
 
15209
#line 634 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15210
};
 
15211
 
 
15212
/** \class CT_Call CTree.h Puma/CTree.h
 
15213
 *  Tree node representing explicit or implicit function calls 
 
15214
 *  including built-in or user-defined functions and overloaded
 
15215
 *  operators. */
 
15216
 
 
15217
#line 15218 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15218
} // closed Puma
 
15219
class CCExprResolve;
 
15220
class CExprResolve;
 
15221
class WinIfExists;
 
15222
class WinImportHandler;
 
15223
class WinMacros;
 
15224
class WinAsm;
 
15225
class WinDeclSpecs;
 
15226
class WinMemberExplSpec;
 
15227
class WinTypeKeywords;
 
15228
class WinFriend;
 
15229
class ExtAC;
 
15230
class ExtACBuilderCoupling;
 
15231
class ExtACSyntaxCoupling;
 
15232
class ExtACTree;
 
15233
class ExtACKeywords;
 
15234
class ExtGnu;
 
15235
class PragmaOnceUnitState;
 
15236
class PragmaOnce;
 
15237
class CMatchSyntax;
 
15238
namespace Puma {
 
15239
 
 
15240
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15241
 
 
15242
#line 15243 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15243
} // closed Puma
 
15244
 
 
15245
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15246
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15247
#include "CCExprResolveH.ah"
 
15248
#endif
 
15249
namespace Puma {
 
15250
 
 
15251
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15252
 
 
15253
#line 15254 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15254
} // closed Puma
 
15255
 
 
15256
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15257
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15258
#include "CExprResolveH.ah"
 
15259
#endif
 
15260
namespace Puma {
 
15261
 
 
15262
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15263
class CT_Call : public CT_Expression, public CSemObject {
 
15264
#line 15265 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15265
  friend class ::CCExprResolve;
 
15266
  friend class ::CExprResolve;
 
15267
  friend class ::WinIfExists;
 
15268
  friend class ::WinImportHandler;
 
15269
  friend class ::WinMacros;
 
15270
  friend class ::WinAsm;
 
15271
  friend class ::WinDeclSpecs;
 
15272
  friend class ::WinMemberExplSpec;
 
15273
  friend class ::WinTypeKeywords;
 
15274
  friend class ::WinFriend;
 
15275
  friend class ::ExtAC;
 
15276
  friend class ::ExtACBuilderCoupling;
 
15277
  friend class ::ExtACSyntaxCoupling;
 
15278
  friend class ::ExtACTree;
 
15279
  friend class ::ExtACKeywords;
 
15280
  friend class ::ExtGnu;
 
15281
  friend class ::PragmaOnceUnitState;
 
15282
  friend class ::PragmaOnce;
 
15283
  friend class ::CMatchSyntax;
 
15284
 
 
15285
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15286
 
 
15287
protected:
 
15288
  /** Constructor. */
 
15289
  CT_Call () {}
 
15290
  
 
15291
public:
 
15292
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15293
  static const char *NodeId ();
 
15294
  /** Get the name of the node. Can be compared with NodeId(). */
 
15295
  const char *NodeName () const { return NodeId (); }
 
15296
  /** Get the semantic information of the call. */
 
15297
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
15298
  /** Get this. */
 
15299
  CT_Call *IsCall () { return this; }
 
15300
   private:
 
15301
  typedef CT_Call CCExprResolveExpr;
 
15302
 
 
15303
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15304
 public :
 
15305
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
15306
  typedef CT_Call CExprResolveExpr;
 
15307
 
 
15308
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15309
 public :
 
15310
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
15311
  typedef AC::TLE __AttrTypes;
 
15312
  const char *__attr_name (unsigned i) const { return 0; }
 
15313
  const void *__attr (unsigned __i) const { return 0; }
 
15314
#line 654 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15315
};
 
15316
 
 
15317
/** \class CT_ImplicitCall CTree.h Puma/CTree.h
 
15318
 *  Tree node representing implicit function calls detected by
 
15319
 *  the semantic analysis. 
 
15320
 *  Example:
 
15321
 *  \code
 
15322
 * class Number {
 
15323
 *   int _n;
 
15324
 * public:
 
15325
 *   Number(int n) : _n(n) {}
 
15326
 *   int operator+(const Number& n) { return n._n + _n; }
 
15327
 * };
 
15328
 *     
 
15329
 * Number one(1), two(2);
 
15330
 * one + two;  // implicitely calls one.operator+(two)
 
15331
 *  \endcode */
 
15332
 
 
15333
#line 15334 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15334
} // closed Puma
 
15335
class CCExprResolve;
 
15336
class CExprResolve;
 
15337
class WinIfExists;
 
15338
class WinImportHandler;
 
15339
class WinMacros;
 
15340
class WinAsm;
 
15341
class WinDeclSpecs;
 
15342
class WinMemberExplSpec;
 
15343
class WinTypeKeywords;
 
15344
class WinFriend;
 
15345
class ExtAC;
 
15346
class ExtACBuilderCoupling;
 
15347
class ExtACSyntaxCoupling;
 
15348
class ExtACTree;
 
15349
class ExtACKeywords;
 
15350
class ExtGnu;
 
15351
class PragmaOnceUnitState;
 
15352
class PragmaOnce;
 
15353
class CMatchSyntax;
 
15354
namespace Puma {
 
15355
 
 
15356
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15357
 
 
15358
#line 15359 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15359
} // closed Puma
 
15360
 
 
15361
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15362
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15363
#include "CCExprResolveH.ah"
 
15364
#endif
 
15365
namespace Puma {
 
15366
 
 
15367
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15368
 
 
15369
#line 15370 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15370
} // closed Puma
 
15371
 
 
15372
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15373
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15374
#include "CExprResolveH.ah"
 
15375
#endif
 
15376
namespace Puma {
 
15377
 
 
15378
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15379
class CT_ImplicitCall : public CT_Call {
 
15380
#line 15381 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15381
  friend class ::CCExprResolve;
 
15382
  friend class ::CExprResolve;
 
15383
  friend class ::WinIfExists;
 
15384
  friend class ::WinImportHandler;
 
15385
  friend class ::WinMacros;
 
15386
  friend class ::WinAsm;
 
15387
  friend class ::WinDeclSpecs;
 
15388
  friend class ::WinMemberExplSpec;
 
15389
  friend class ::WinTypeKeywords;
 
15390
  friend class ::WinFriend;
 
15391
  friend class ::ExtAC;
 
15392
  friend class ::ExtACBuilderCoupling;
 
15393
  friend class ::ExtACSyntaxCoupling;
 
15394
  friend class ::ExtACTree;
 
15395
  friend class ::ExtACKeywords;
 
15396
  friend class ::ExtGnu;
 
15397
  friend class ::PragmaOnceUnitState;
 
15398
  friend class ::PragmaOnce;
 
15399
  friend class ::CMatchSyntax;
 
15400
 
 
15401
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15402
 
 
15403
  CTree *_arg;
 
15404
 
 
15405
public:
 
15406
  /** Constructor.
 
15407
   *  \param arg The call argument. */
 
15408
  CT_ImplicitCall (CTree *arg) { AddSon (_arg, arg); }
 
15409
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15410
  static const char *NodeId ();
 
15411
  /** Get the name of the node. Can be compared with NodeId(). */
 
15412
  const char *NodeName () const { return NodeId (); }
 
15413
  /** Get the number of sons. */
 
15414
  int Sons () const { return 1; }
 
15415
  /** Get the n-th son.
 
15416
   *  \param n The index of the son.
 
15417
   *  \return The n-th son or NULL. */
 
15418
  CTree *Son (int n) const { return (n == 0) ? _arg : (CTree*)0; }
 
15419
  /** Replace a son.
 
15420
   *  \param old_son The son to replace.
 
15421
   *  \param new_son The new son. */
 
15422
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
15423
   { CTree::ReplaceSon (_arg, old_son, new_son); }
 
15424
   private:
 
15425
  typedef CT_ImplicitCall CCExprResolveExpr;
 
15426
 
 
15427
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15428
 public :
 
15429
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
15430
  typedef CT_ImplicitCall CExprResolveExpr;
 
15431
 
 
15432
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15433
 public :
 
15434
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
15435
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
15436
  const char *__attr_name (unsigned i) const {
 
15437
    static const char *names[] = { "_arg" }; return names[i];
 
15438
  }
 
15439
  const void *__attr (unsigned __i) const {
 
15440
    switch (__i) { case 0: return &_arg; default: return 0; }
 
15441
  }
 
15442
#line 693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15443
};
 
15444
 
 
15445
/** \class CT_String CTree.h Puma/CTree.h
 
15446
 *  Tree node representing a string literal. 
 
15447
 *  Example: \code "abc" \endcode */
 
15448
 
 
15449
#line 15450 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15450
} // closed Puma
 
15451
class CCExprResolve;
 
15452
class CExprResolve;
 
15453
class WinIfExists;
 
15454
class WinImportHandler;
 
15455
class WinMacros;
 
15456
class WinAsm;
 
15457
class WinDeclSpecs;
 
15458
class WinMemberExplSpec;
 
15459
class WinTypeKeywords;
 
15460
class WinFriend;
 
15461
class ExtAC;
 
15462
class ExtACBuilderCoupling;
 
15463
class ExtACSyntaxCoupling;
 
15464
class ExtACTree;
 
15465
class ExtACKeywords;
 
15466
class ExtGnu;
 
15467
class PragmaOnceUnitState;
 
15468
class PragmaOnce;
 
15469
class CMatchSyntax;
 
15470
namespace Puma {
 
15471
 
 
15472
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15473
 
 
15474
#line 15475 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15475
} // closed Puma
 
15476
 
 
15477
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15478
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15479
#include "CCExprResolveH.ah"
 
15480
#endif
 
15481
namespace Puma {
 
15482
 
 
15483
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15484
 
 
15485
#line 15486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15486
} // closed Puma
 
15487
 
 
15488
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15489
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15490
#include "CExprResolveH.ah"
 
15491
#endif
 
15492
namespace Puma {
 
15493
 
 
15494
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15495
class CT_String : public CT_List, public CSemValue {
 
15496
#line 15497 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15497
  friend class ::CCExprResolve;
 
15498
  friend class ::CExprResolve;
 
15499
  friend class ::WinIfExists;
 
15500
  friend class ::WinImportHandler;
 
15501
  friend class ::WinMacros;
 
15502
  friend class ::WinAsm;
 
15503
  friend class ::WinDeclSpecs;
 
15504
  friend class ::WinMemberExplSpec;
 
15505
  friend class ::WinTypeKeywords;
 
15506
  friend class ::WinFriend;
 
15507
  friend class ::ExtAC;
 
15508
  friend class ::ExtACBuilderCoupling;
 
15509
  friend class ::ExtACSyntaxCoupling;
 
15510
  friend class ::ExtACTree;
 
15511
  friend class ::ExtACKeywords;
 
15512
  friend class ::ExtGnu;
 
15513
  friend class ::PragmaOnceUnitState;
 
15514
  friend class ::PragmaOnce;
 
15515
  friend class ::CMatchSyntax;
 
15516
 
 
15517
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15518
 
 
15519
public:
 
15520
  /** Constructor. 
 
15521
   *  \param size The number of sub-strings. */
 
15522
  CT_String (int size) : CT_List (size, 1) {}
 
15523
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15524
  static const char *NodeId ();
 
15525
  /** Get the name of the node. Can be compared with NodeId(). */
 
15526
  const char *NodeName () const { return NodeId (); }
 
15527
 
 
15528
  /** Get the type of the string. 
 
15529
   *  \return The type or NULL. */
 
15530
  CTypeInfo *Type () const { return type; }
 
15531
  /** Get the string value.
 
15532
   *  \return The value or NULL. */
 
15533
  CExprValue *Value () const { return value; }
 
15534
  /** Get the semantic value info object.
 
15535
   *  \return The semantic value object or NULL. */
 
15536
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
15537
  /** Get this. */
 
15538
  virtual CT_String *IsString () { return this; }
 
15539
   private:
 
15540
  typedef CT_String CCExprResolveExpr;
 
15541
 
 
15542
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15543
 public :
 
15544
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
15545
  typedef CT_String CExprResolveExpr;
 
15546
 
 
15547
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15548
 public :
 
15549
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
15550
  typedef AC::TLE __AttrTypes;
 
15551
  const char *__attr_name (unsigned i) const { return 0; }
 
15552
  const void *__attr (unsigned __i) const { return 0; }
 
15553
#line 719 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15554
};
 
15555
 
 
15556
/** \class CT_WideString CTree.h Puma/CTree.h
 
15557
 *  Tree node representing a wide string literal. 
 
15558
 *  Example: \code L"abc" \endcode */
 
15559
 
 
15560
#line 15561 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15561
} // closed Puma
 
15562
class CCExprResolve;
 
15563
class CExprResolve;
 
15564
class WinIfExists;
 
15565
class WinImportHandler;
 
15566
class WinMacros;
 
15567
class WinAsm;
 
15568
class WinDeclSpecs;
 
15569
class WinMemberExplSpec;
 
15570
class WinTypeKeywords;
 
15571
class WinFriend;
 
15572
class ExtAC;
 
15573
class ExtACBuilderCoupling;
 
15574
class ExtACSyntaxCoupling;
 
15575
class ExtACTree;
 
15576
class ExtACKeywords;
 
15577
class ExtGnu;
 
15578
class PragmaOnceUnitState;
 
15579
class PragmaOnce;
 
15580
class CMatchSyntax;
 
15581
namespace Puma {
 
15582
 
 
15583
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15584
 
 
15585
#line 15586 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15586
} // closed Puma
 
15587
 
 
15588
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15589
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15590
#include "CCExprResolveH.ah"
 
15591
#endif
 
15592
namespace Puma {
 
15593
 
 
15594
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15595
 
 
15596
#line 15597 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15597
} // closed Puma
 
15598
 
 
15599
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15600
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15601
#include "CExprResolveH.ah"
 
15602
#endif
 
15603
namespace Puma {
 
15604
 
 
15605
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15606
class CT_WideString : public CT_String {
 
15607
#line 15608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15608
  friend class ::CCExprResolve;
 
15609
  friend class ::CExprResolve;
 
15610
  friend class ::WinIfExists;
 
15611
  friend class ::WinImportHandler;
 
15612
  friend class ::WinMacros;
 
15613
  friend class ::WinAsm;
 
15614
  friend class ::WinDeclSpecs;
 
15615
  friend class ::WinMemberExplSpec;
 
15616
  friend class ::WinTypeKeywords;
 
15617
  friend class ::WinFriend;
 
15618
  friend class ::ExtAC;
 
15619
  friend class ::ExtACBuilderCoupling;
 
15620
  friend class ::ExtACSyntaxCoupling;
 
15621
  friend class ::ExtACTree;
 
15622
  friend class ::ExtACKeywords;
 
15623
  friend class ::ExtGnu;
 
15624
  friend class ::PragmaOnceUnitState;
 
15625
  friend class ::PragmaOnce;
 
15626
  friend class ::CMatchSyntax;
 
15627
 
 
15628
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15629
 
 
15630
public:
 
15631
  /** Constructor.
 
15632
   *  \param size The number of sub-strings. */
 
15633
  CT_WideString (int size) : CT_String (size) {}
 
15634
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15635
  static const char *NodeId ();
 
15636
  /** Get the name of the node. Can be compared with NodeId(). */
 
15637
  const char *NodeName () const { return NodeId (); }
 
15638
   private:
 
15639
  typedef CT_WideString CCExprResolveExpr;
 
15640
 
 
15641
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15642
 public :
 
15643
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
15644
  typedef CT_WideString CExprResolveExpr;
 
15645
 
 
15646
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15647
 public :
 
15648
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
15649
  typedef AC::TLE __AttrTypes;
 
15650
  const char *__attr_name (unsigned i) const { return 0; }
 
15651
  const void *__attr (unsigned __i) const { return 0; }
 
15652
#line 733 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15653
};
 
15654
 
 
15655
/** \class CT_Integer CTree.h Puma/CTree.h
 
15656
 *  Tree node representing an integer constant. 
 
15657
 *  Example: \code 1234 \endcode */
 
15658
 
 
15659
#line 15660 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15660
} // closed Puma
 
15661
class CCExprResolve;
 
15662
class CExprResolve;
 
15663
class WinIfExists;
 
15664
class WinImportHandler;
 
15665
class WinMacros;
 
15666
class WinAsm;
 
15667
class WinDeclSpecs;
 
15668
class WinMemberExplSpec;
 
15669
class WinTypeKeywords;
 
15670
class WinFriend;
 
15671
class ExtAC;
 
15672
class ExtACBuilderCoupling;
 
15673
class ExtACSyntaxCoupling;
 
15674
class ExtACTree;
 
15675
class ExtACKeywords;
 
15676
class ExtGnu;
 
15677
class PragmaOnceUnitState;
 
15678
class PragmaOnce;
 
15679
class CMatchSyntax;
 
15680
namespace Puma {
 
15681
 
 
15682
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15683
 
 
15684
#line 15685 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15685
} // closed Puma
 
15686
 
 
15687
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15688
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15689
#include "CCExprResolveH.ah"
 
15690
#endif
 
15691
namespace Puma {
 
15692
 
 
15693
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15694
 
 
15695
#line 15696 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15696
} // closed Puma
 
15697
 
 
15698
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15699
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15700
#include "CExprResolveH.ah"
 
15701
#endif
 
15702
namespace Puma {
 
15703
 
 
15704
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15705
class CT_Integer : public CT_Expression {
 
15706
#line 15707 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15707
  friend class ::CCExprResolve;
 
15708
  friend class ::CExprResolve;
 
15709
  friend class ::WinIfExists;
 
15710
  friend class ::WinImportHandler;
 
15711
  friend class ::WinMacros;
 
15712
  friend class ::WinAsm;
 
15713
  friend class ::WinDeclSpecs;
 
15714
  friend class ::WinMemberExplSpec;
 
15715
  friend class ::WinTypeKeywords;
 
15716
  friend class ::WinFriend;
 
15717
  friend class ::ExtAC;
 
15718
  friend class ::ExtACBuilderCoupling;
 
15719
  friend class ::ExtACSyntaxCoupling;
 
15720
  friend class ::ExtACTree;
 
15721
  friend class ::ExtACKeywords;
 
15722
  friend class ::ExtGnu;
 
15723
  friend class ::PragmaOnceUnitState;
 
15724
  friend class ::PragmaOnce;
 
15725
  friend class ::CMatchSyntax;
 
15726
 
 
15727
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15728
 
 
15729
  CTree *_value;  // CT_Token
 
15730
 
 
15731
public:
 
15732
  /** Constructor.
 
15733
   *  \param token The token containing the integer value. */
 
15734
  CT_Integer (CTree *token) { AddSon (_value, token); }
 
15735
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15736
  static const char *NodeId ();
 
15737
  /** Get the name of the node. Can be compared with NodeId(). */
 
15738
  const char *NodeName () const { return NodeId (); }
 
15739
  /** Get the number of sons. */
 
15740
  int Sons () const { return _value ? 1 : 0; }
 
15741
  /** Get the n-th son.
 
15742
   *  \param n The index of the son.
 
15743
   *  \return The n-th son or NULL. */
 
15744
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
15745
  /** Replace a son.
 
15746
   *  \param old_son The son to replace.
 
15747
   *  \param new_son The new son. */
 
15748
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
15749
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
15750
   private:
 
15751
  typedef CT_Integer CCExprResolveExpr;
 
15752
 
 
15753
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15754
 public :
 
15755
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
15756
  typedef CT_Integer CExprResolveExpr;
 
15757
 
 
15758
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15759
 public :
 
15760
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
15761
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
15762
  const char *__attr_name (unsigned i) const {
 
15763
    static const char *names[] = { "_value" }; return names[i];
 
15764
  }
 
15765
  const void *__attr (unsigned __i) const {
 
15766
    switch (__i) { case 0: return &_value; default: return 0; }
 
15767
  }
 
15768
#line 760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15769
};
 
15770
 
 
15771
/** \class CT_Character CTree.h Puma/CTree.h
 
15772
 *  Tree node representing a single character constant. 
 
15773
 *  Example: \code 'a' \endcode */
 
15774
 
 
15775
#line 15776 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15776
} // closed Puma
 
15777
class CCExprResolve;
 
15778
class CExprResolve;
 
15779
class WinIfExists;
 
15780
class WinImportHandler;
 
15781
class WinMacros;
 
15782
class WinAsm;
 
15783
class WinDeclSpecs;
 
15784
class WinMemberExplSpec;
 
15785
class WinTypeKeywords;
 
15786
class WinFriend;
 
15787
class ExtAC;
 
15788
class ExtACBuilderCoupling;
 
15789
class ExtACSyntaxCoupling;
 
15790
class ExtACTree;
 
15791
class ExtACKeywords;
 
15792
class ExtGnu;
 
15793
class PragmaOnceUnitState;
 
15794
class PragmaOnce;
 
15795
class CMatchSyntax;
 
15796
namespace Puma {
 
15797
 
 
15798
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15799
 
 
15800
#line 15801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15801
} // closed Puma
 
15802
 
 
15803
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15804
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15805
#include "CCExprResolveH.ah"
 
15806
#endif
 
15807
namespace Puma {
 
15808
 
 
15809
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15810
 
 
15811
#line 15812 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15812
} // closed Puma
 
15813
 
 
15814
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15815
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15816
#include "CExprResolveH.ah"
 
15817
#endif
 
15818
namespace Puma {
 
15819
 
 
15820
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15821
class CT_Character : public CT_Expression {
 
15822
#line 15823 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15823
  friend class ::CCExprResolve;
 
15824
  friend class ::CExprResolve;
 
15825
  friend class ::WinIfExists;
 
15826
  friend class ::WinImportHandler;
 
15827
  friend class ::WinMacros;
 
15828
  friend class ::WinAsm;
 
15829
  friend class ::WinDeclSpecs;
 
15830
  friend class ::WinMemberExplSpec;
 
15831
  friend class ::WinTypeKeywords;
 
15832
  friend class ::WinFriend;
 
15833
  friend class ::ExtAC;
 
15834
  friend class ::ExtACBuilderCoupling;
 
15835
  friend class ::ExtACSyntaxCoupling;
 
15836
  friend class ::ExtACTree;
 
15837
  friend class ::ExtACKeywords;
 
15838
  friend class ::ExtGnu;
 
15839
  friend class ::PragmaOnceUnitState;
 
15840
  friend class ::PragmaOnce;
 
15841
  friend class ::CMatchSyntax;
 
15842
 
 
15843
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15844
 
 
15845
  CTree *_value;  // CT_Token
 
15846
 
 
15847
public:
 
15848
  /** Constructor.
 
15849
   *  \param token The token containing the character value. */
 
15850
  CT_Character (CTree *token) { AddSon (_value, token); }
 
15851
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15852
  static const char *NodeId ();
 
15853
  /** Get the name of the node. Can be compared with NodeId(). */
 
15854
  const char *NodeName () const { return NodeId (); }
 
15855
  /** Get the number of sons. */
 
15856
  int Sons () const { return 1; }
 
15857
  /** Get the n-th son.
 
15858
   *  \param n The index of the son.
 
15859
   *  \return The n-th son or NULL. */
 
15860
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
15861
  /** Replace a son.
 
15862
   *  \param old_son The son to replace.
 
15863
   *  \param new_son The new son. */
 
15864
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
15865
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
15866
   private:
 
15867
  typedef CT_Character CCExprResolveExpr;
 
15868
 
 
15869
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15870
 public :
 
15871
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
15872
  typedef CT_Character CExprResolveExpr;
 
15873
 
 
15874
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15875
 public :
 
15876
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
15877
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
15878
  const char *__attr_name (unsigned i) const {
 
15879
    static const char *names[] = { "_value" }; return names[i];
 
15880
  }
 
15881
  const void *__attr (unsigned __i) const {
 
15882
    switch (__i) { case 0: return &_value; default: return 0; }
 
15883
  }
 
15884
#line 787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15885
};
 
15886
 
 
15887
/** \class CT_WideCharacter CTree.h Puma/CTree.h
 
15888
 *  Tree node representing a wide character constant. 
 
15889
 *  Example: \code L'a' \endcode */
 
15890
 
 
15891
#line 15892 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15892
} // closed Puma
 
15893
class CCExprResolve;
 
15894
class CExprResolve;
 
15895
class WinIfExists;
 
15896
class WinImportHandler;
 
15897
class WinMacros;
 
15898
class WinAsm;
 
15899
class WinDeclSpecs;
 
15900
class WinMemberExplSpec;
 
15901
class WinTypeKeywords;
 
15902
class WinFriend;
 
15903
class ExtAC;
 
15904
class ExtACBuilderCoupling;
 
15905
class ExtACSyntaxCoupling;
 
15906
class ExtACTree;
 
15907
class ExtACKeywords;
 
15908
class ExtGnu;
 
15909
class PragmaOnceUnitState;
 
15910
class PragmaOnce;
 
15911
class CMatchSyntax;
 
15912
namespace Puma {
 
15913
 
 
15914
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15915
 
 
15916
#line 15917 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15917
} // closed Puma
 
15918
 
 
15919
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15920
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15921
#include "CCExprResolveH.ah"
 
15922
#endif
 
15923
namespace Puma {
 
15924
 
 
15925
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15926
 
 
15927
#line 15928 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15928
} // closed Puma
 
15929
 
 
15930
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15931
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15932
#include "CExprResolveH.ah"
 
15933
#endif
 
15934
namespace Puma {
 
15935
 
 
15936
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15937
class CT_WideCharacter : public CT_Character {
 
15938
#line 15939 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15939
  friend class ::CCExprResolve;
 
15940
  friend class ::CExprResolve;
 
15941
  friend class ::WinIfExists;
 
15942
  friend class ::WinImportHandler;
 
15943
  friend class ::WinMacros;
 
15944
  friend class ::WinAsm;
 
15945
  friend class ::WinDeclSpecs;
 
15946
  friend class ::WinMemberExplSpec;
 
15947
  friend class ::WinTypeKeywords;
 
15948
  friend class ::WinFriend;
 
15949
  friend class ::ExtAC;
 
15950
  friend class ::ExtACBuilderCoupling;
 
15951
  friend class ::ExtACSyntaxCoupling;
 
15952
  friend class ::ExtACTree;
 
15953
  friend class ::ExtACKeywords;
 
15954
  friend class ::ExtGnu;
 
15955
  friend class ::PragmaOnceUnitState;
 
15956
  friend class ::PragmaOnce;
 
15957
  friend class ::CMatchSyntax;
 
15958
 
 
15959
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15960
 
 
15961
public:
 
15962
  /** Constructor.
 
15963
   *  \param token The token containing the wide character value. */
 
15964
  CT_WideCharacter (CTree *token) : CT_Character (token) {}
 
15965
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15966
  static const char *NodeId ();
 
15967
  /** Get the name of the node. Can be compared with NodeId(). */
 
15968
  const char *NodeName () const { return NodeId (); }
 
15969
   private:
 
15970
  typedef CT_WideCharacter CCExprResolveExpr;
 
15971
 
 
15972
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15973
 public :
 
15974
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
15975
  typedef CT_WideCharacter CExprResolveExpr;
 
15976
 
 
15977
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15978
 public :
 
15979
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
15980
  typedef AC::TLE __AttrTypes;
 
15981
  const char *__attr_name (unsigned i) const { return 0; }
 
15982
  const void *__attr (unsigned __i) const { return 0; }
 
15983
#line 801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15984
};
 
15985
 
 
15986
/** \class CT_Float CTree.h Puma/CTree.h
 
15987
 *  Tree node representing a floating point constant. 
 
15988
 *  Example: \code 12.34 \endcode */
 
15989
 
 
15990
#line 15991 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
15991
} // closed Puma
 
15992
class CCExprResolve;
 
15993
class CExprResolve;
 
15994
class WinIfExists;
 
15995
class WinImportHandler;
 
15996
class WinMacros;
 
15997
class WinAsm;
 
15998
class WinDeclSpecs;
 
15999
class WinMemberExplSpec;
 
16000
class WinTypeKeywords;
 
16001
class WinFriend;
 
16002
class ExtAC;
 
16003
class ExtACBuilderCoupling;
 
16004
class ExtACSyntaxCoupling;
 
16005
class ExtACTree;
 
16006
class ExtACKeywords;
 
16007
class ExtGnu;
 
16008
class PragmaOnceUnitState;
 
16009
class PragmaOnce;
 
16010
class CMatchSyntax;
 
16011
namespace Puma {
 
16012
 
 
16013
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16014
 
 
16015
#line 16016 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16016
} // closed Puma
 
16017
 
 
16018
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16019
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16020
#include "CCExprResolveH.ah"
 
16021
#endif
 
16022
namespace Puma {
 
16023
 
 
16024
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16025
 
 
16026
#line 16027 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16027
} // closed Puma
 
16028
 
 
16029
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16030
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16031
#include "CExprResolveH.ah"
 
16032
#endif
 
16033
namespace Puma {
 
16034
 
 
16035
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16036
class CT_Float : public CT_Expression {
 
16037
#line 16038 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16038
  friend class ::CCExprResolve;
 
16039
  friend class ::CExprResolve;
 
16040
  friend class ::WinIfExists;
 
16041
  friend class ::WinImportHandler;
 
16042
  friend class ::WinMacros;
 
16043
  friend class ::WinAsm;
 
16044
  friend class ::WinDeclSpecs;
 
16045
  friend class ::WinMemberExplSpec;
 
16046
  friend class ::WinTypeKeywords;
 
16047
  friend class ::WinFriend;
 
16048
  friend class ::ExtAC;
 
16049
  friend class ::ExtACBuilderCoupling;
 
16050
  friend class ::ExtACSyntaxCoupling;
 
16051
  friend class ::ExtACTree;
 
16052
  friend class ::ExtACKeywords;
 
16053
  friend class ::ExtGnu;
 
16054
  friend class ::PragmaOnceUnitState;
 
16055
  friend class ::PragmaOnce;
 
16056
  friend class ::CMatchSyntax;
 
16057
 
 
16058
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16059
 
 
16060
  CTree *_value;  // CT_Token
 
16061
 
 
16062
public:
 
16063
  /** Constructor.
 
16064
   *  \param token The token containing the floating point value. */
 
16065
  CT_Float (CTree *token) { AddSon (_value, token); }
 
16066
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16067
  static const char *NodeId ();
 
16068
  /** Get the name of the node. Can be compared with NodeId(). */
 
16069
  const char *NodeName () const { return NodeId (); }
 
16070
  /** Get the number of sons. */
 
16071
  int Sons () const { return 1; }
 
16072
  /** Get the n-th son.
 
16073
   *  \param n The index of the son.
 
16074
   *  \return The n-th son or NULL. */
 
16075
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
16076
  /** Replace a son.
 
16077
   *  \param old_son The son to replace.
 
16078
   *  \param new_son The new son. */
 
16079
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
16080
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
16081
   private:
 
16082
  typedef CT_Float CCExprResolveExpr;
 
16083
 
 
16084
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16085
 public :
 
16086
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16087
  typedef CT_Float CExprResolveExpr;
 
16088
 
 
16089
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16090
 public :
 
16091
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16092
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
16093
  const char *__attr_name (unsigned i) const {
 
16094
    static const char *names[] = { "_value" }; return names[i];
 
16095
  }
 
16096
  const void *__attr (unsigned __i) const {
 
16097
    switch (__i) { case 0: return &_value; default: return 0; }
 
16098
  }
 
16099
#line 828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16100
};
 
16101
 
 
16102
/** \class CT_Bool CTree.h Puma/CTree.h
 
16103
 *  Tree node representing a boolean literal. 
 
16104
 *  Examples: 
 
16105
 *  \code 
 
16106
 * true
 
16107
 * false
 
16108
 *  \endcode */
 
16109
 
 
16110
#line 16111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16111
} // closed Puma
 
16112
class CCExprResolve;
 
16113
class CExprResolve;
 
16114
class WinIfExists;
 
16115
class WinImportHandler;
 
16116
class WinMacros;
 
16117
class WinAsm;
 
16118
class WinDeclSpecs;
 
16119
class WinMemberExplSpec;
 
16120
class WinTypeKeywords;
 
16121
class WinFriend;
 
16122
class ExtAC;
 
16123
class ExtACBuilderCoupling;
 
16124
class ExtACSyntaxCoupling;
 
16125
class ExtACTree;
 
16126
class ExtACKeywords;
 
16127
class ExtGnu;
 
16128
class PragmaOnceUnitState;
 
16129
class PragmaOnce;
 
16130
class CMatchSyntax;
 
16131
namespace Puma {
 
16132
 
 
16133
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16134
 
 
16135
#line 16136 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16136
} // closed Puma
 
16137
 
 
16138
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16139
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16140
#include "CCExprResolveH.ah"
 
16141
#endif
 
16142
namespace Puma {
 
16143
 
 
16144
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16145
 
 
16146
#line 16147 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16147
} // closed Puma
 
16148
 
 
16149
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16150
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16151
#include "CExprResolveH.ah"
 
16152
#endif
 
16153
namespace Puma {
 
16154
 
 
16155
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16156
class CT_Bool : public CT_Expression {
 
16157
#line 16158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16158
  friend class ::CCExprResolve;
 
16159
  friend class ::CExprResolve;
 
16160
  friend class ::WinIfExists;
 
16161
  friend class ::WinImportHandler;
 
16162
  friend class ::WinMacros;
 
16163
  friend class ::WinAsm;
 
16164
  friend class ::WinDeclSpecs;
 
16165
  friend class ::WinMemberExplSpec;
 
16166
  friend class ::WinTypeKeywords;
 
16167
  friend class ::WinFriend;
 
16168
  friend class ::ExtAC;
 
16169
  friend class ::ExtACBuilderCoupling;
 
16170
  friend class ::ExtACSyntaxCoupling;
 
16171
  friend class ::ExtACTree;
 
16172
  friend class ::ExtACKeywords;
 
16173
  friend class ::ExtGnu;
 
16174
  friend class ::PragmaOnceUnitState;
 
16175
  friend class ::PragmaOnce;
 
16176
  friend class ::CMatchSyntax;
 
16177
 
 
16178
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16179
 
 
16180
  CTree *_value;  // CT_Token
 
16181
 
 
16182
public:
 
16183
  /** Constructor.
 
16184
   *  \param token The token containing the boolean value. */
 
16185
  CT_Bool (CTree *token) { AddSon (_value, token); }
 
16186
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16187
  static const char *NodeId ();
 
16188
  /** Get the name of the node. Can be compared with NodeId(). */
 
16189
  const char *NodeName () const { return NodeId (); }
 
16190
  /** Get the number of sons. */
 
16191
  int Sons () const { return 1; }
 
16192
  /** Get the n-th son.
 
16193
   *  \param n The index of the son.
 
16194
   *  \return The n-th son or NULL. */
 
16195
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
16196
  /** Replace a son.
 
16197
   *  \param old_son The son to replace.
 
16198
   *  \param new_son The new son. */
 
16199
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
16200
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
16201
   private:
 
16202
  typedef CT_Bool CCExprResolveExpr;
 
16203
 
 
16204
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16205
 public :
 
16206
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16207
  typedef CT_Bool CExprResolveExpr;
 
16208
 
 
16209
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16210
 public :
 
16211
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16212
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
16213
  const char *__attr_name (unsigned i) const {
 
16214
    static const char *names[] = { "_value" }; return names[i];
 
16215
  }
 
16216
  const void *__attr (unsigned __i) const {
 
16217
    switch (__i) { case 0: return &_value; default: return 0; }
 
16218
  }
 
16219
#line 859 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16220
};
 
16221
 
 
16222
/** \class CT_BracedExpr CTree.h Puma/CTree.h
 
16223
 *  Tree node representing a braced expression.
 
16224
 *  Example: \code (a+b) \endcode */
 
16225
 
 
16226
#line 16227 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16227
} // closed Puma
 
16228
class CCExprResolve;
 
16229
class CExprResolve;
 
16230
class WinIfExists;
 
16231
class WinImportHandler;
 
16232
class WinMacros;
 
16233
class WinAsm;
 
16234
class WinDeclSpecs;
 
16235
class WinMemberExplSpec;
 
16236
class WinTypeKeywords;
 
16237
class WinFriend;
 
16238
class ExtAC;
 
16239
class ExtACBuilderCoupling;
 
16240
class ExtACSyntaxCoupling;
 
16241
class ExtACTree;
 
16242
class ExtACKeywords;
 
16243
class ExtGnu;
 
16244
class PragmaOnceUnitState;
 
16245
class PragmaOnce;
 
16246
class CMatchSyntax;
 
16247
namespace Puma {
 
16248
 
 
16249
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16250
 
 
16251
#line 16252 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16252
} // closed Puma
 
16253
 
 
16254
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16255
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16256
#include "CCExprResolveH.ah"
 
16257
#endif
 
16258
namespace Puma {
 
16259
 
 
16260
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16261
 
 
16262
#line 16263 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16263
} // closed Puma
 
16264
 
 
16265
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16266
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16267
#include "CExprResolveH.ah"
 
16268
#endif
 
16269
namespace Puma {
 
16270
 
 
16271
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16272
class CT_BracedExpr : public CT_Expression {
 
16273
#line 16274 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16274
  friend class ::CCExprResolve;
 
16275
  friend class ::CExprResolve;
 
16276
  friend class ::WinIfExists;
 
16277
  friend class ::WinImportHandler;
 
16278
  friend class ::WinMacros;
 
16279
  friend class ::WinAsm;
 
16280
  friend class ::WinDeclSpecs;
 
16281
  friend class ::WinMemberExplSpec;
 
16282
  friend class ::WinTypeKeywords;
 
16283
  friend class ::WinFriend;
 
16284
  friend class ::ExtAC;
 
16285
  friend class ::ExtACBuilderCoupling;
 
16286
  friend class ::ExtACSyntaxCoupling;
 
16287
  friend class ::ExtACTree;
 
16288
  friend class ::ExtACKeywords;
 
16289
  friend class ::ExtGnu;
 
16290
  friend class ::PragmaOnceUnitState;
 
16291
  friend class ::PragmaOnce;
 
16292
  friend class ::CMatchSyntax;
 
16293
 
 
16294
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16295
 
 
16296
  CTree *sons[3]; // open, expr, close
 
16297
 
 
16298
public:
 
16299
  /** Constructor.
 
16300
   *  \param o The opening brace.
 
16301
   *  \param e The enclosed expression.
 
16302
   *  \param c The closing brace. */
 
16303
  CT_BracedExpr (CTree *o, CTree *e, CTree *c) { 
 
16304
    AddSon (sons[0], o); AddSon (sons[1], e); AddSon (sons[2], c); 
 
16305
  }
 
16306
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16307
  static const char *NodeId ();
 
16308
  /** Get the name of the node. Can be compared with NodeId(). */
 
16309
  const char *NodeName () const { return NodeId (); }
 
16310
  /** Get the number of sons. */
 
16311
  int Sons () const { return 3; }
 
16312
  /** Get the n-th son.
 
16313
   *  \param n The index of the son.
 
16314
   *  \return The n-th son or NULL. */
 
16315
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
16316
  /** Get the enclosed expression. */
 
16317
  CTree *Expr () const { return sons[1]; }
 
16318
  /** Get the type of the enclosed expression. */
 
16319
  CTypeInfo *Type () const { return Expr ()->Type (); }
 
16320
  /** Get the value of the enclosed expression. */
 
16321
  CExprValue *Value () const { return Expr ()->Value (); }
 
16322
  /** Get the semantic value of the expression. */
 
16323
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
16324
  /** Replace a son.
 
16325
   *  \param old_son The son to replace.
 
16326
   *  \param new_son The new son. */
 
16327
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
16328
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
16329
  }
 
16330
   private:
 
16331
  typedef CT_BracedExpr CCExprResolveExpr;
 
16332
 
 
16333
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16334
 public :
 
16335
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16336
  typedef CT_BracedExpr CExprResolveExpr;
 
16337
 
 
16338
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16339
 public :
 
16340
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16341
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
16342
  const char *__attr_name (unsigned i) const {
 
16343
    static const char *names[] = { "sons" }; return names[i];
 
16344
  }
 
16345
  const void *__attr (unsigned __i) const {
 
16346
    switch (__i) { case 0: return &sons; default: return 0; }
 
16347
  }
 
16348
#line 899 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16349
};
 
16350
 
 
16351
/** \class CT_SimpleName CTree.h Puma/CTree.h
 
16352
 *  Base class for all tree nodes representing a name. 
 
16353
 *  Example: \code a \endcode */
 
16354
 
 
16355
#line 16356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16356
} // closed Puma
 
16357
class CCExprResolve;
 
16358
class CExprResolve;
 
16359
class WinIfExists;
 
16360
class WinImportHandler;
 
16361
class WinMacros;
 
16362
class WinAsm;
 
16363
class WinDeclSpecs;
 
16364
class WinMemberExplSpec;
 
16365
class WinTypeKeywords;
 
16366
class WinFriend;
 
16367
class ExtAC;
 
16368
class ExtACBuilderCoupling;
 
16369
class ExtACSyntaxCoupling;
 
16370
class ExtACTree;
 
16371
class ExtACKeywords;
 
16372
class ExtGnu;
 
16373
class PragmaOnceUnitState;
 
16374
class PragmaOnce;
 
16375
class CMatchSyntax;
 
16376
namespace Puma {
 
16377
 
 
16378
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16379
 
 
16380
#line 16381 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16381
} // closed Puma
 
16382
 
 
16383
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16384
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16385
#include "CCExprResolveH.ah"
 
16386
#endif
 
16387
namespace Puma {
 
16388
 
 
16389
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16390
 
 
16391
#line 16392 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16392
} // closed Puma
 
16393
 
 
16394
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16395
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16396
#include "CExprResolveH.ah"
 
16397
#endif
 
16398
namespace Puma {
 
16399
 
 
16400
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16401
class CT_SimpleName : public CT_List, public Printable, 
 
16402
                      public CSemValue, public CSemObject {
 
16403
#line 16404 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16404
  friend class ::CCExprResolve;
 
16405
  friend class ::CExprResolve;
 
16406
  friend class ::WinIfExists;
 
16407
  friend class ::WinImportHandler;
 
16408
  friend class ::WinMacros;
 
16409
  friend class ::WinAsm;
 
16410
  friend class ::WinDeclSpecs;
 
16411
  friend class ::WinMemberExplSpec;
 
16412
  friend class ::WinTypeKeywords;
 
16413
  friend class ::WinFriend;
 
16414
  friend class ::ExtAC;
 
16415
  friend class ::ExtACBuilderCoupling;
 
16416
  friend class ::ExtACSyntaxCoupling;
 
16417
  friend class ::ExtACTree;
 
16418
  friend class ::ExtACKeywords;
 
16419
  friend class ::ExtGnu;
 
16420
  friend class ::PragmaOnceUnitState;
 
16421
  friend class ::PragmaOnce;
 
16422
  friend class ::CMatchSyntax;
 
16423
 
 
16424
#line 905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16425
 
 
16426
protected:
 
16427
  /** Constructor.
 
16428
   *  \param size The number of sub-names (for qualified names). */
 
16429
  CT_SimpleName (int size) : CT_List (size, 1) {}
 
16430
  /** Constructor.
 
16431
   *  \param size The number of sub-names (for qualified names). 
 
16432
   *  \param properties Additional name list properties (for root qualified names). */
 
16433
  CT_SimpleName (int size, int properties) : 
 
16434
    CT_List (size, 2, properties) {}
 
16435
  
 
16436
public:
 
16437
  /** Constructor.
 
16438
   *  \param n The sub-tree containing the name. */
 
16439
  CT_SimpleName (CTree *n) : CT_List (1, 1) { AddSon (n); }
 
16440
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16441
  static const char *NodeId ();
 
16442
  /** Get the name of the node. Can be compared with NodeId(). */
 
16443
  const char *NodeName () const { return NodeId (); }
 
16444
  /** Get the string containing the name. */
 
16445
  virtual const char *Text () const 
 
16446
   { return Son (Sons ()-1)->token ()->text (); }
 
16447
  /** Print the name on the given stream. 
 
16448
   *  \param os The output stream. */
 
16449
  virtual void print (ostream &os) const { os << Text (); }
 
16450
  /** Get this. */
 
16451
  virtual CT_SimpleName *Name () const { return (CT_SimpleName*)this; }
 
16452
  /** Get the type of the entity represented by the name. */
 
16453
  CTypeInfo *Type () const { return type; }
 
16454
  /** Get the value of the entity represented by the name. */ 
 
16455
  CExprValue *Value () const { return value; }
 
16456
  /** Get the sematic value information of the name. */
 
16457
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
16458
  /** Get the sematic information about the name. */
 
16459
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
16460
  /** Get this. */
 
16461
  virtual CT_SimpleName *IsSimpleName () { return this; }  
 
16462
 
 
16463
public:
 
16464
  /** Own new operator reusing memory. */
 
16465
  void *operator new (size_t);
 
16466
  /** Own delete operator. */
 
16467
  void operator delete (void *);
 
16468
   private:
 
16469
  typedef CT_SimpleName CCExprResolveExpr;
 
16470
 
 
16471
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16472
 public :
 
16473
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16474
  typedef CT_SimpleName CExprResolveExpr;
 
16475
 
 
16476
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16477
 public :
 
16478
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16479
  typedef AC::TLE __AttrTypes;
 
16480
  const char *__attr_name (unsigned i) const { return 0; }
 
16481
  const void *__attr (unsigned __i) const { return 0; }
 
16482
#line 948 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16483
};
 
16484
 
 
16485
/** \class CT_SpecialName CTree.h Puma/CTree.h
 
16486
 *  Base class for tree nodes representing a special name, like destructor names. */
 
16487
 
 
16488
#line 16489 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16489
} // closed Puma
 
16490
class CCExprResolve;
 
16491
class CExprResolve;
 
16492
class WinIfExists;
 
16493
class WinImportHandler;
 
16494
class WinMacros;
 
16495
class WinAsm;
 
16496
class WinDeclSpecs;
 
16497
class WinMemberExplSpec;
 
16498
class WinTypeKeywords;
 
16499
class WinFriend;
 
16500
class ExtAC;
 
16501
class ExtACBuilderCoupling;
 
16502
class ExtACSyntaxCoupling;
 
16503
class ExtACTree;
 
16504
class ExtACKeywords;
 
16505
class ExtGnu;
 
16506
class PragmaOnceUnitState;
 
16507
class PragmaOnce;
 
16508
class CMatchSyntax;
 
16509
namespace Puma {
 
16510
 
 
16511
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16512
 
 
16513
#line 16514 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16514
} // closed Puma
 
16515
 
 
16516
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16517
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16518
#include "CCExprResolveH.ah"
 
16519
#endif
 
16520
namespace Puma {
 
16521
 
 
16522
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16523
 
 
16524
#line 16525 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16525
} // closed Puma
 
16526
 
 
16527
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16528
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16529
#include "CExprResolveH.ah"
 
16530
#endif
 
16531
namespace Puma {
 
16532
 
 
16533
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16534
class CT_SpecialName : public CT_SimpleName {
 
16535
#line 16536 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16536
  friend class ::CCExprResolve;
 
16537
  friend class ::CExprResolve;
 
16538
  friend class ::WinIfExists;
 
16539
  friend class ::WinImportHandler;
 
16540
  friend class ::WinMacros;
 
16541
  friend class ::WinAsm;
 
16542
  friend class ::WinDeclSpecs;
 
16543
  friend class ::WinMemberExplSpec;
 
16544
  friend class ::WinTypeKeywords;
 
16545
  friend class ::WinFriend;
 
16546
  friend class ::ExtAC;
 
16547
  friend class ::ExtACBuilderCoupling;
 
16548
  friend class ::ExtACSyntaxCoupling;
 
16549
  friend class ::ExtACTree;
 
16550
  friend class ::ExtACKeywords;
 
16551
  friend class ::ExtGnu;
 
16552
  friend class ::PragmaOnceUnitState;
 
16553
  friend class ::PragmaOnce;
 
16554
  friend class ::CMatchSyntax;
 
16555
 
 
16556
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16557
 
 
16558
  char *_name;
 
16559
  
 
16560
protected:
 
16561
  /** Constructor.
 
16562
   *  \param size The number of sub-names (for qualified names). */
 
16563
  CT_SpecialName (int size = 1) : CT_SimpleName (size), _name (0) {}
 
16564
  
 
16565
public:
 
16566
  /** Destructor. Deletes the name string. */
 
16567
  ~CT_SpecialName () { if (_name) delete[] _name; }
 
16568
  /** Get the string containing the name. */
 
16569
  const char *Text () const { return _name; }
 
16570
  /** Set the name. The name is copied.
 
16571
   *  \param n The name. */
 
16572
  void Name (const char *n) { 
 
16573
    if (n) { 
 
16574
      _name = new char[strlen(n) + 1];
 
16575
      strcpy (_name,n);
 
16576
    }
 
16577
  }
 
16578
 
 
16579
public:
 
16580
  /** Own new operator reusing memory. */
 
16581
  void *operator new (size_t);
 
16582
  /** Own delete operator. */
 
16583
  void operator delete (void *);
 
16584
   private:
 
16585
  typedef CT_SpecialName CCExprResolveExpr;
 
16586
 
 
16587
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16588
 public :
 
16589
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16590
  typedef CT_SpecialName CExprResolveExpr;
 
16591
 
 
16592
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16593
 public :
 
16594
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16595
  typedef AC::TL<char *,AC::TLE > __AttrTypes;
 
16596
  const char *__attr_name (unsigned i) const {
 
16597
    static const char *names[] = { "_name" }; return names[i];
 
16598
  }
 
16599
  const void *__attr (unsigned __i) const {
 
16600
    switch (__i) { case 0: return &_name; default: return 0; }
 
16601
  }
 
16602
#line 979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16603
};
 
16604
 
 
16605
/** \class CT_PrivateName CTree.h Puma/CTree.h
 
16606
 *  Tree node representing a private name. Private names 
 
16607
 *  are generated names for instance for abstract declarators.
 
16608
 *  Example: 
 
16609
 *  \code 
 
16610
 * void foo(int*);  // first parameter of foo has private name
 
16611
 *  \endcode */
 
16612
 
 
16613
#line 16614 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16614
} // closed Puma
 
16615
class CCExprResolve;
 
16616
class CExprResolve;
 
16617
class WinIfExists;
 
16618
class WinImportHandler;
 
16619
class WinMacros;
 
16620
class WinAsm;
 
16621
class WinDeclSpecs;
 
16622
class WinMemberExplSpec;
 
16623
class WinTypeKeywords;
 
16624
class WinFriend;
 
16625
class ExtAC;
 
16626
class ExtACBuilderCoupling;
 
16627
class ExtACSyntaxCoupling;
 
16628
class ExtACTree;
 
16629
class ExtACKeywords;
 
16630
class ExtGnu;
 
16631
class PragmaOnceUnitState;
 
16632
class PragmaOnce;
 
16633
class CMatchSyntax;
 
16634
namespace Puma {
 
16635
 
 
16636
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16637
 
 
16638
#line 16639 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16639
} // closed Puma
 
16640
 
 
16641
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16642
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16643
#include "CCExprResolveH.ah"
 
16644
#endif
 
16645
namespace Puma {
 
16646
 
 
16647
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16648
 
 
16649
#line 16650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16650
} // closed Puma
 
16651
 
 
16652
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16653
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16654
#include "CExprResolveH.ah"
 
16655
#endif
 
16656
namespace Puma {
 
16657
 
 
16658
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16659
class CT_PrivateName : public CT_SpecialName {
 
16660
#line 16661 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16661
  friend class ::CCExprResolve;
 
16662
  friend class ::CExprResolve;
 
16663
  friend class ::WinIfExists;
 
16664
  friend class ::WinImportHandler;
 
16665
  friend class ::WinMacros;
 
16666
  friend class ::WinAsm;
 
16667
  friend class ::WinDeclSpecs;
 
16668
  friend class ::WinMemberExplSpec;
 
16669
  friend class ::WinTypeKeywords;
 
16670
  friend class ::WinFriend;
 
16671
  friend class ::ExtAC;
 
16672
  friend class ::ExtACBuilderCoupling;
 
16673
  friend class ::ExtACSyntaxCoupling;
 
16674
  friend class ::ExtACTree;
 
16675
  friend class ::ExtACKeywords;
 
16676
  friend class ::ExtGnu;
 
16677
  friend class ::PragmaOnceUnitState;
 
16678
  friend class ::PragmaOnce;
 
16679
  friend class ::CMatchSyntax;
 
16680
 
 
16681
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16682
 
 
16683
public:
 
16684
  /** Constructor.
 
16685
   *  \param n The private (generated) name. */
 
16686
  CT_PrivateName (const char *n) { Name (n); }
 
16687
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16688
  static const char *NodeId ();
 
16689
  /** Get the name of the node. Can be compared with NodeId(). */
 
16690
  const char *NodeName () const { return NodeId (); }
 
16691
  /** Get the number of sons. */
 
16692
  int Sons () const { return 0; }
 
16693
  /** Get the n-th son.
 
16694
   *  \param n The index of the son.
 
16695
   *  \return The n-th son or NULL. */
 
16696
  CTree *Son (int n) const { return (CTree*)0; }
 
16697
 
 
16698
public:
 
16699
  /** Own new operator reusing memory. */
 
16700
  void *operator new (size_t);
 
16701
  /** Own delete operator. */
 
16702
  void operator delete (void *);
 
16703
   private:
 
16704
  typedef CT_PrivateName CCExprResolveExpr;
 
16705
 
 
16706
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16707
 public :
 
16708
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16709
  typedef CT_PrivateName CExprResolveExpr;
 
16710
 
 
16711
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16712
 public :
 
16713
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16714
  typedef AC::TLE __AttrTypes;
 
16715
  const char *__attr_name (unsigned i) const { return 0; }
 
16716
  const void *__attr (unsigned __i) const { return 0; }
 
16717
#line 1009 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16718
};
 
16719
 
 
16720
/** \class CT_DestructorName CTree.h Puma/CTree.h
 
16721
 *  Tree node representing a destructor name.
 
16722
 *  Example: \code ~X \endcode */
 
16723
 
 
16724
#line 16725 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16725
} // closed Puma
 
16726
class CCExprResolve;
 
16727
class CExprResolve;
 
16728
class WinIfExists;
 
16729
class WinImportHandler;
 
16730
class WinMacros;
 
16731
class WinAsm;
 
16732
class WinDeclSpecs;
 
16733
class WinMemberExplSpec;
 
16734
class WinTypeKeywords;
 
16735
class WinFriend;
 
16736
class ExtAC;
 
16737
class ExtACBuilderCoupling;
 
16738
class ExtACSyntaxCoupling;
 
16739
class ExtACTree;
 
16740
class ExtACKeywords;
 
16741
class ExtGnu;
 
16742
class PragmaOnceUnitState;
 
16743
class PragmaOnce;
 
16744
class CMatchSyntax;
 
16745
namespace Puma {
 
16746
 
 
16747
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16748
 
 
16749
#line 16750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16750
} // closed Puma
 
16751
 
 
16752
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16753
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16754
#include "CCExprResolveH.ah"
 
16755
#endif
 
16756
namespace Puma {
 
16757
 
 
16758
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16759
 
 
16760
#line 16761 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16761
} // closed Puma
 
16762
 
 
16763
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16764
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16765
#include "CExprResolveH.ah"
 
16766
#endif
 
16767
namespace Puma {
 
16768
 
 
16769
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16770
class CT_DestructorName : public CT_SpecialName {
 
16771
#line 16772 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16772
  friend class ::CCExprResolve;
 
16773
  friend class ::CExprResolve;
 
16774
  friend class ::WinIfExists;
 
16775
  friend class ::WinImportHandler;
 
16776
  friend class ::WinMacros;
 
16777
  friend class ::WinAsm;
 
16778
  friend class ::WinDeclSpecs;
 
16779
  friend class ::WinMemberExplSpec;
 
16780
  friend class ::WinTypeKeywords;
 
16781
  friend class ::WinFriend;
 
16782
  friend class ::ExtAC;
 
16783
  friend class ::ExtACBuilderCoupling;
 
16784
  friend class ::ExtACSyntaxCoupling;
 
16785
  friend class ::ExtACTree;
 
16786
  friend class ::ExtACKeywords;
 
16787
  friend class ::ExtGnu;
 
16788
  friend class ::PragmaOnceUnitState;
 
16789
  friend class ::PragmaOnce;
 
16790
  friend class ::CMatchSyntax;
 
16791
 
 
16792
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16793
 
 
16794
public:
 
16795
  /** Constructor.
 
16796
   *  \param t The tilde operator.
 
16797
   *  \param n The class name. */
 
16798
  CT_DestructorName (CTree *t, CTree *n);
 
16799
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16800
  static const char *NodeId ();
 
16801
  /** Get the name of the node. Can be compared with NodeId(). */
 
16802
  const char *NodeName () const { return NodeId (); }
 
16803
 
 
16804
public:
 
16805
  /** Own new operator reusing memory. */
 
16806
  void *operator new (size_t);
 
16807
  /** Own delete operator. */
 
16808
  void operator delete (void *);
 
16809
   private:
 
16810
  typedef CT_DestructorName CCExprResolveExpr;
 
16811
 
 
16812
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16813
 public :
 
16814
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16815
  typedef CT_DestructorName CExprResolveExpr;
 
16816
 
 
16817
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16818
 public :
 
16819
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16820
  typedef AC::TLE __AttrTypes;
 
16821
  const char *__attr_name (unsigned i) const { return 0; }
 
16822
  const void *__attr (unsigned __i) const { return 0; }
 
16823
#line 1030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16824
};
 
16825
 
 
16826
/** \class CT_TemplateName CTree.h Puma/CTree.h
 
16827
 *  Tree node representing a template name.
 
16828
 *  Example: \code X<T> \endcode */
 
16829
 
 
16830
#line 16831 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16831
} // closed Puma
 
16832
class CCExprResolve;
 
16833
class CExprResolve;
 
16834
class WinIfExists;
 
16835
class WinImportHandler;
 
16836
class WinMacros;
 
16837
class WinAsm;
 
16838
class WinDeclSpecs;
 
16839
class WinMemberExplSpec;
 
16840
class WinTypeKeywords;
 
16841
class WinFriend;
 
16842
class ExtAC;
 
16843
class ExtACBuilderCoupling;
 
16844
class ExtACSyntaxCoupling;
 
16845
class ExtACTree;
 
16846
class ExtACKeywords;
 
16847
class ExtGnu;
 
16848
class PragmaOnceUnitState;
 
16849
class PragmaOnce;
 
16850
class CMatchSyntax;
 
16851
namespace Puma {
 
16852
 
 
16853
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16854
 
 
16855
#line 16856 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16856
} // closed Puma
 
16857
 
 
16858
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16859
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16860
#include "CCExprResolveH.ah"
 
16861
#endif
 
16862
namespace Puma {
 
16863
 
 
16864
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16865
 
 
16866
#line 16867 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16867
} // closed Puma
 
16868
 
 
16869
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16870
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16871
#include "CExprResolveH.ah"
 
16872
#endif
 
16873
namespace Puma {
 
16874
 
 
16875
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16876
class CT_TemplateName : public CT_SpecialName {
 
16877
#line 16878 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16878
  friend class ::CCExprResolve;
 
16879
  friend class ::CExprResolve;
 
16880
  friend class ::WinIfExists;
 
16881
  friend class ::WinImportHandler;
 
16882
  friend class ::WinMacros;
 
16883
  friend class ::WinAsm;
 
16884
  friend class ::WinDeclSpecs;
 
16885
  friend class ::WinMemberExplSpec;
 
16886
  friend class ::WinTypeKeywords;
 
16887
  friend class ::WinFriend;
 
16888
  friend class ::ExtAC;
 
16889
  friend class ::ExtACBuilderCoupling;
 
16890
  friend class ::ExtACSyntaxCoupling;
 
16891
  friend class ::ExtACTree;
 
16892
  friend class ::ExtACKeywords;
 
16893
  friend class ::ExtGnu;
 
16894
  friend class ::PragmaOnceUnitState;
 
16895
  friend class ::PragmaOnce;
 
16896
  friend class ::CMatchSyntax;
 
16897
 
 
16898
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16899
 
 
16900
public:
 
16901
  /** Constructor.
 
16902
   *  \param n The template class or function name.
 
16903
   *  \param a The template argument list. */
 
16904
  CT_TemplateName (CTree *n, CTree *a) 
 
16905
   { AddSon (n); AddSon (a); }
 
16906
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16907
  static const char *NodeId ();
 
16908
  /** Get the name of the node. Can be compared with NodeId(). */
 
16909
  const char *NodeName () const { return NodeId (); }
 
16910
  /** Get the template argument list. */
 
16911
  CT_TemplateArgList *Arguments () const 
 
16912
   { return (CT_TemplateArgList*)Son (Sons ()-1); }
 
16913
  /** Get the template class or function name. */
 
16914
  CT_SimpleName *TemplateName () const 
 
16915
   { return (CT_SimpleName*)Son (Sons ()-2); }
 
16916
  // may change in the future
 
16917
  const char *Text () const { return TemplateName ()->Text (); }
 
16918
 
 
16919
public:
 
16920
  /** Own new operator reusing memory. */
 
16921
  void *operator new (size_t);
 
16922
  /** Own delete operator. */
 
16923
  void operator delete (void *);
 
16924
   private:
 
16925
  typedef CT_TemplateName CCExprResolveExpr;
 
16926
 
 
16927
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16928
 public :
 
16929
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16930
  typedef CT_TemplateName CExprResolveExpr;
 
16931
 
 
16932
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16933
 public :
 
16934
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16935
  typedef AC::TLE __AttrTypes;
 
16936
  const char *__attr_name (unsigned i) const { return 0; }
 
16937
  const void *__attr (unsigned __i) const { return 0; }
 
16938
#line 1060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16939
};
 
16940
 
 
16941
/** \class CT_OperatorName CTree.h Puma/CTree.h
 
16942
 *  Tree node representing the name of an overloaded operator. 
 
16943
 *  Example: \code operator== \endcode */
 
16944
 
 
16945
#line 16946 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16946
} // closed Puma
 
16947
class CCExprResolve;
 
16948
class CExprResolve;
 
16949
class WinIfExists;
 
16950
class WinImportHandler;
 
16951
class WinMacros;
 
16952
class WinAsm;
 
16953
class WinDeclSpecs;
 
16954
class WinMemberExplSpec;
 
16955
class WinTypeKeywords;
 
16956
class WinFriend;
 
16957
class ExtAC;
 
16958
class ExtACBuilderCoupling;
 
16959
class ExtACSyntaxCoupling;
 
16960
class ExtACTree;
 
16961
class ExtACKeywords;
 
16962
class ExtGnu;
 
16963
class PragmaOnceUnitState;
 
16964
class PragmaOnce;
 
16965
class CMatchSyntax;
 
16966
namespace Puma {
 
16967
 
 
16968
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16969
 
 
16970
#line 16971 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16971
} // closed Puma
 
16972
 
 
16973
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16974
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16975
#include "CCExprResolveH.ah"
 
16976
#endif
 
16977
namespace Puma {
 
16978
 
 
16979
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16980
 
 
16981
#line 16982 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16982
} // closed Puma
 
16983
 
 
16984
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16985
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16986
#include "CExprResolveH.ah"
 
16987
#endif
 
16988
namespace Puma {
 
16989
 
 
16990
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16991
class CT_OperatorName : public CT_SpecialName {
 
16992
#line 16993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
16993
  friend class ::CCExprResolve;
 
16994
  friend class ::CExprResolve;
 
16995
  friend class ::WinIfExists;
 
16996
  friend class ::WinImportHandler;
 
16997
  friend class ::WinMacros;
 
16998
  friend class ::WinAsm;
 
16999
  friend class ::WinDeclSpecs;
 
17000
  friend class ::WinMemberExplSpec;
 
17001
  friend class ::WinTypeKeywords;
 
17002
  friend class ::WinFriend;
 
17003
  friend class ::ExtAC;
 
17004
  friend class ::ExtACBuilderCoupling;
 
17005
  friend class ::ExtACSyntaxCoupling;
 
17006
  friend class ::ExtACTree;
 
17007
  friend class ::ExtACKeywords;
 
17008
  friend class ::ExtGnu;
 
17009
  friend class ::PragmaOnceUnitState;
 
17010
  friend class ::PragmaOnce;
 
17011
  friend class ::CMatchSyntax;
 
17012
 
 
17013
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17014
 
 
17015
  int _oper;
 
17016
 
 
17017
public:
 
17018
  /** Complex operator types. */
 
17019
  enum { 
 
17020
    FCT_CALL = -100,  /** Function call operator, i.e. (). */
 
17021
    SUBSCRIPT,        /** Array subscript operator, i.e. []. */
 
17022
    NEW_ARRAY,        /** New array operator, i.e. new[]. */
 
17023
    DEL_ARRAY         /** Delete array operator, i.e. delete[]. */
 
17024
  };
 
17025
 
 
17026
public:
 
17027
  /** Constructor.
 
17028
   *  \param op The token containing the operator. */
 
17029
  CT_OperatorName (CTree *op);
 
17030
  /** Constructor.
 
17031
   *  \param f The operator function keyword 'operator'.
 
17032
   *  \param op The token containing the operator. 
 
17033
   *  \param o The token of '[' or '('.
 
17034
   *  \param c The token of ']' or ')'. */
 
17035
  CT_OperatorName (CTree *f, CTree *op, CTree *o, CTree *c);
 
17036
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17037
  static const char *NodeId ();
 
17038
  /** Get the name of the node. Can be compared with NodeId(). */
 
17039
  const char *NodeName () const { return NodeId (); }
 
17040
  /** Get the operator type (either the token type or one of 
 
17041
   *  the complex operator types). */
 
17042
  int Operator () const { return _oper; }
 
17043
 
 
17044
public:
 
17045
  /** Own new operator reusing memory. */
 
17046
  void *operator new (size_t);
 
17047
  /** Own delete operator. */
 
17048
  void operator delete (void *);
 
17049
   private:
 
17050
  typedef CT_OperatorName CCExprResolveExpr;
 
17051
 
 
17052
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17053
 public :
 
17054
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17055
  typedef CT_OperatorName CExprResolveExpr;
 
17056
 
 
17057
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17058
 public :
 
17059
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17060
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
17061
  const char *__attr_name (unsigned i) const {
 
17062
    static const char *names[] = { "_oper" }; return names[i];
 
17063
  }
 
17064
  const void *__attr (unsigned __i) const {
 
17065
    switch (__i) { case 0: return &_oper; default: return 0; }
 
17066
  }
 
17067
#line 1100 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17068
};
 
17069
 
 
17070
/** \class CT_ConversionName CTree.h Puma/CTree.h
 
17071
 *  Tree node representing the name of a conversion function.
 
17072
 *  Example: \code operator int* \endcode */
 
17073
 
 
17074
#line 17075 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17075
} // closed Puma
 
17076
class CCExprResolve;
 
17077
class CExprResolve;
 
17078
class WinIfExists;
 
17079
class WinImportHandler;
 
17080
class WinMacros;
 
17081
class WinAsm;
 
17082
class WinDeclSpecs;
 
17083
class WinMemberExplSpec;
 
17084
class WinTypeKeywords;
 
17085
class WinFriend;
 
17086
class ExtAC;
 
17087
class ExtACBuilderCoupling;
 
17088
class ExtACSyntaxCoupling;
 
17089
class ExtACTree;
 
17090
class ExtACKeywords;
 
17091
class ExtGnu;
 
17092
class PragmaOnceUnitState;
 
17093
class PragmaOnce;
 
17094
class CMatchSyntax;
 
17095
namespace Puma {
 
17096
 
 
17097
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17098
 
 
17099
#line 17100 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17100
} // closed Puma
 
17101
 
 
17102
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17103
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17104
#include "CCExprResolveH.ah"
 
17105
#endif
 
17106
namespace Puma {
 
17107
 
 
17108
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17109
 
 
17110
#line 17111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17111
} // closed Puma
 
17112
 
 
17113
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17114
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17115
#include "CExprResolveH.ah"
 
17116
#endif
 
17117
namespace Puma {
 
17118
 
 
17119
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17120
class CT_ConversionName : public CT_SpecialName {
 
17121
#line 17122 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17122
  friend class ::CCExprResolve;
 
17123
  friend class ::CExprResolve;
 
17124
  friend class ::WinIfExists;
 
17125
  friend class ::WinImportHandler;
 
17126
  friend class ::WinMacros;
 
17127
  friend class ::WinAsm;
 
17128
  friend class ::WinDeclSpecs;
 
17129
  friend class ::WinMemberExplSpec;
 
17130
  friend class ::WinTypeKeywords;
 
17131
  friend class ::WinFriend;
 
17132
  friend class ::ExtAC;
 
17133
  friend class ::ExtACBuilderCoupling;
 
17134
  friend class ::ExtACSyntaxCoupling;
 
17135
  friend class ::ExtACTree;
 
17136
  friend class ::ExtACKeywords;
 
17137
  friend class ::ExtGnu;
 
17138
  friend class ::PragmaOnceUnitState;
 
17139
  friend class ::PragmaOnce;
 
17140
  friend class ::CMatchSyntax;
 
17141
 
 
17142
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17143
 
 
17144
public:
 
17145
  /** Constructor.
 
17146
   *  \param f The operator function keyword 'operator'.
 
17147
   *  \param t The sub-tree containing the conversion type. */
 
17148
  CT_ConversionName (CTree *f, CTree *t);
 
17149
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17150
  static const char *NodeId ();
 
17151
  /** Get the name of the node. Can be compared with NodeId(). */
 
17152
  const char *NodeName () const { return NodeId (); }
 
17153
  /** Get the conversion type. */
 
17154
  CT_NamedType *TypeName () const { return (CT_NamedType*)Son (Sons ()-1); }
 
17155
 
 
17156
public:
 
17157
  /** Own new operator reusing memory. */
 
17158
  void *operator new (size_t);
 
17159
  /** Own delete operator. */
 
17160
  void operator delete (void *);
 
17161
   private:
 
17162
  typedef CT_ConversionName CCExprResolveExpr;
 
17163
 
 
17164
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17165
 public :
 
17166
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17167
  typedef CT_ConversionName CExprResolveExpr;
 
17168
 
 
17169
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17170
 public :
 
17171
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17172
  typedef AC::TLE __AttrTypes;
 
17173
  const char *__attr_name (unsigned i) const { return 0; }
 
17174
  const void *__attr (unsigned __i) const { return 0; }
 
17175
#line 1123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17176
};
 
17177
 
 
17178
/** \class CT_QualName CTree.h Puma/CTree.h
 
17179
 *  Tree node representing a qualified name.
 
17180
 *  Example: \code X::Y::Z \endcode */
 
17181
 
 
17182
#line 17183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17183
} // closed Puma
 
17184
class CCExprResolve;
 
17185
class CExprResolve;
 
17186
class WinIfExists;
 
17187
class WinImportHandler;
 
17188
class WinMacros;
 
17189
class WinAsm;
 
17190
class WinDeclSpecs;
 
17191
class WinMemberExplSpec;
 
17192
class WinTypeKeywords;
 
17193
class WinFriend;
 
17194
class ExtAC;
 
17195
class ExtACBuilderCoupling;
 
17196
class ExtACSyntaxCoupling;
 
17197
class ExtACTree;
 
17198
class ExtACKeywords;
 
17199
class ExtGnu;
 
17200
class PragmaOnceUnitState;
 
17201
class PragmaOnce;
 
17202
class CMatchSyntax;
 
17203
namespace Puma {
 
17204
 
 
17205
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17206
 
 
17207
#line 17208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17208
} // closed Puma
 
17209
 
 
17210
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17211
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17212
#include "CCExprResolveH.ah"
 
17213
#endif
 
17214
namespace Puma {
 
17215
 
 
17216
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17217
 
 
17218
#line 17219 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17219
} // closed Puma
 
17220
 
 
17221
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17222
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17223
#include "CExprResolveH.ah"
 
17224
#endif
 
17225
namespace Puma {
 
17226
 
 
17227
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17228
class CT_QualName : public CT_SimpleName {
 
17229
#line 17230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17230
  friend class ::CCExprResolve;
 
17231
  friend class ::CExprResolve;
 
17232
  friend class ::WinIfExists;
 
17233
  friend class ::WinImportHandler;
 
17234
  friend class ::WinMacros;
 
17235
  friend class ::WinAsm;
 
17236
  friend class ::WinDeclSpecs;
 
17237
  friend class ::WinMemberExplSpec;
 
17238
  friend class ::WinTypeKeywords;
 
17239
  friend class ::WinFriend;
 
17240
  friend class ::ExtAC;
 
17241
  friend class ::ExtACBuilderCoupling;
 
17242
  friend class ::ExtACSyntaxCoupling;
 
17243
  friend class ::ExtACTree;
 
17244
  friend class ::ExtACKeywords;
 
17245
  friend class ::ExtGnu;
 
17246
  friend class ::PragmaOnceUnitState;
 
17247
  friend class ::PragmaOnce;
 
17248
  friend class ::CMatchSyntax;
 
17249
 
 
17250
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17251
 
 
17252
public:
 
17253
  /** Constructor.
 
17254
   *  \param size The initial number sub-names plus separators. */
 
17255
  CT_QualName (int size = 3) : 
 
17256
    CT_SimpleName (size, CT_List::SEPARATORS) {}
 
17257
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17258
  static const char *NodeId ();
 
17259
  /** Get the name of the node. Can be compared with NodeId(). */
 
17260
  const char *NodeName () const { return NodeId (); }
 
17261
  /** Print the qualified name on the given stream. 
 
17262
   *  \param os The output stream. */
 
17263
  void print (ostream &os) const;
 
17264
  /** Get the last name of the qualified name, e.g. Z of qualified name X::Y::Z. */
 
17265
  CT_SimpleName *Name () const { return (CT_SimpleName*)Son (Sons ()-1); }
 
17266
  /** Get the string containing the last name of the qualified name. */
 
17267
  const char *Text () const { return Name ()->Text (); }
 
17268
  /** Get the type of the last name. */
 
17269
  CTypeInfo *Type () const { return Name ()->Type (); }
 
17270
  /** Get the value of the last name. */
 
17271
  CExprValue *Value () const { return Name ()->Value (); }
 
17272
  /** Get the semantic value object of the last name. */
 
17273
  CSemValue *SemValue () const { return Name ()->SemValue (); }
 
17274
  /** Get the semantic information of the last name. */
 
17275
  CSemObject *SemObject () const { return Name ()->SemObject (); }
 
17276
 
 
17277
public:
 
17278
  /** Own new operator reusing memory. */
 
17279
  void *operator new (size_t);
 
17280
  /** Own delete operator. */
 
17281
  void operator delete (void *);
 
17282
   private:
 
17283
  typedef CT_QualName CCExprResolveExpr;
 
17284
 
 
17285
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17286
 public :
 
17287
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17288
  typedef CT_QualName CExprResolveExpr;
 
17289
 
 
17290
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17291
 public :
 
17292
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17293
  typedef AC::TLE __AttrTypes;
 
17294
  const char *__attr_name (unsigned i) const { return 0; }
 
17295
  const void *__attr (unsigned __i) const { return 0; }
 
17296
#line 1159 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17297
};
 
17298
 
 
17299
/** \class CT_RootQualName CTree.h Puma/CTree.h
 
17300
 *  Tree node representing a qualified name with introducing name separator.
 
17301
 *  Example: \code ::X::Y::Z \endcode */
 
17302
 
 
17303
#line 17304 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17304
} // closed Puma
 
17305
class CCExprResolve;
 
17306
class CExprResolve;
 
17307
class WinIfExists;
 
17308
class WinImportHandler;
 
17309
class WinMacros;
 
17310
class WinAsm;
 
17311
class WinDeclSpecs;
 
17312
class WinMemberExplSpec;
 
17313
class WinTypeKeywords;
 
17314
class WinFriend;
 
17315
class ExtAC;
 
17316
class ExtACBuilderCoupling;
 
17317
class ExtACSyntaxCoupling;
 
17318
class ExtACTree;
 
17319
class ExtACKeywords;
 
17320
class ExtGnu;
 
17321
class PragmaOnceUnitState;
 
17322
class PragmaOnce;
 
17323
class CMatchSyntax;
 
17324
namespace Puma {
 
17325
 
 
17326
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17327
 
 
17328
#line 17329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17329
} // closed Puma
 
17330
 
 
17331
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17332
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17333
#include "CCExprResolveH.ah"
 
17334
#endif
 
17335
namespace Puma {
 
17336
 
 
17337
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17338
 
 
17339
#line 17340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17340
} // closed Puma
 
17341
 
 
17342
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17343
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17344
#include "CExprResolveH.ah"
 
17345
#endif
 
17346
namespace Puma {
 
17347
 
 
17348
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17349
class CT_RootQualName : public CT_QualName {
 
17350
#line 17351 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17351
  friend class ::CCExprResolve;
 
17352
  friend class ::CExprResolve;
 
17353
  friend class ::WinIfExists;
 
17354
  friend class ::WinImportHandler;
 
17355
  friend class ::WinMacros;
 
17356
  friend class ::WinAsm;
 
17357
  friend class ::WinDeclSpecs;
 
17358
  friend class ::WinMemberExplSpec;
 
17359
  friend class ::WinTypeKeywords;
 
17360
  friend class ::WinFriend;
 
17361
  friend class ::ExtAC;
 
17362
  friend class ::ExtACBuilderCoupling;
 
17363
  friend class ::ExtACSyntaxCoupling;
 
17364
  friend class ::ExtACTree;
 
17365
  friend class ::ExtACKeywords;
 
17366
  friend class ::ExtGnu;
 
17367
  friend class ::PragmaOnceUnitState;
 
17368
  friend class ::PragmaOnce;
 
17369
  friend class ::CMatchSyntax;
 
17370
 
 
17371
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17372
 
 
17373
public:
 
17374
  /** Constructor.
 
17375
   *  \param size Initial number of sub-name plus separator. */
 
17376
  CT_RootQualName (int size = 2) : 
 
17377
    CT_QualName (size) { AddProperties (INTRO); }
 
17378
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17379
  static const char *NodeId ();
 
17380
  /** Get the name of the node. Can be compared with NodeId(). */
 
17381
  const char *NodeName () const { return NodeId (); }
 
17382
 
 
17383
public:
 
17384
  /** Own new operator reusing memory. */
 
17385
  void *operator new (size_t);
 
17386
  /** Own delete operator. */
 
17387
  void operator delete (void *);
 
17388
   private:
 
17389
  typedef CT_RootQualName CCExprResolveExpr;
 
17390
 
 
17391
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17392
 public :
 
17393
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17394
  typedef CT_RootQualName CExprResolveExpr;
 
17395
 
 
17396
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17397
 public :
 
17398
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17399
  typedef AC::TLE __AttrTypes;
 
17400
  const char *__attr_name (unsigned i) const { return 0; }
 
17401
  const void *__attr (unsigned __i) const { return 0; }
 
17402
#line 1180 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17403
};
 
17404
 
 
17405
/** \class CT_BinaryExpr CTree.h Puma/CTree.h
 
17406
 *  Tree node representing a binary expression.
 
17407
 *  Example: \code a+b \endcode */
 
17408
 
 
17409
#line 17410 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17410
} // closed Puma
 
17411
class CCExprResolve;
 
17412
class CExprResolve;
 
17413
class WinIfExists;
 
17414
class WinImportHandler;
 
17415
class WinMacros;
 
17416
class WinAsm;
 
17417
class WinDeclSpecs;
 
17418
class WinMemberExplSpec;
 
17419
class WinTypeKeywords;
 
17420
class WinFriend;
 
17421
class ExtAC;
 
17422
class ExtACBuilderCoupling;
 
17423
class ExtACSyntaxCoupling;
 
17424
class ExtACTree;
 
17425
class ExtACKeywords;
 
17426
class ExtGnu;
 
17427
class PragmaOnceUnitState;
 
17428
class PragmaOnce;
 
17429
class CMatchSyntax;
 
17430
namespace Puma {
 
17431
 
 
17432
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17433
 
 
17434
#line 17435 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17435
} // closed Puma
 
17436
 
 
17437
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17438
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17439
#include "CCExprResolveH.ah"
 
17440
#endif
 
17441
namespace Puma {
 
17442
 
 
17443
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17444
 
 
17445
#line 17446 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17446
} // closed Puma
 
17447
 
 
17448
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17449
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17450
#include "CExprResolveH.ah"
 
17451
#endif
 
17452
namespace Puma {
 
17453
 
 
17454
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17455
class CT_BinaryExpr : public CT_Call {
 
17456
#line 17457 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17457
  friend class ::CCExprResolve;
 
17458
  friend class ::CExprResolve;
 
17459
  friend class ::WinIfExists;
 
17460
  friend class ::WinImportHandler;
 
17461
  friend class ::WinMacros;
 
17462
  friend class ::WinAsm;
 
17463
  friend class ::WinDeclSpecs;
 
17464
  friend class ::WinMemberExplSpec;
 
17465
  friend class ::WinTypeKeywords;
 
17466
  friend class ::WinFriend;
 
17467
  friend class ::ExtAC;
 
17468
  friend class ::ExtACBuilderCoupling;
 
17469
  friend class ::ExtACSyntaxCoupling;
 
17470
  friend class ::ExtACTree;
 
17471
  friend class ::ExtACKeywords;
 
17472
  friend class ::ExtGnu;
 
17473
  friend class ::PragmaOnceUnitState;
 
17474
  friend class ::PragmaOnce;
 
17475
  friend class ::CMatchSyntax;
 
17476
 
 
17477
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17478
 
 
17479
  CTree *sons[3]; // expr, oper, expr
 
17480
 
 
17481
public:
 
17482
  /** Constructor. 
 
17483
   *  \param l Left hand side of the expression. 
 
17484
   *  \param o The operator token. 
 
17485
   *  \param r Right hand side of the expression. */
 
17486
  CT_BinaryExpr (CTree *l, CTree *o, CTree *r) {
 
17487
    AddSon (sons[0], l); AddSon (sons[1], o); AddSon (sons[2], r);
 
17488
  }
 
17489
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17490
  static const char *NodeId ();
 
17491
  /** Get the name of the node. Can be compared with NodeId(). */
 
17492
  const char *NodeName () const { return NodeId (); }
 
17493
  /** Get the number of sons. */
 
17494
  int Sons () const { return 3; }
 
17495
  /** Get the n-th son.
 
17496
   *  \param n The index of the son.
 
17497
   *  \return The n-th son or NULL. */
 
17498
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
17499
  /** Replace a son.
 
17500
   *  \param old_son The son to replace.
 
17501
   *  \param new_son The new son. */
 
17502
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
17503
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
17504
  }
 
17505
   private:
 
17506
  typedef CT_BinaryExpr CCExprResolveExpr;
 
17507
 
 
17508
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17509
 public :
 
17510
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17511
  typedef CT_BinaryExpr CExprResolveExpr;
 
17512
 
 
17513
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17514
 public :
 
17515
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17516
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
17517
  const char *__attr_name (unsigned i) const {
 
17518
    static const char *names[] = { "sons" }; return names[i];
 
17519
  }
 
17520
  const void *__attr (unsigned __i) const {
 
17521
    switch (__i) { case 0: return &sons; default: return 0; }
 
17522
  }
 
17523
#line 1212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17524
};
 
17525
 
 
17526
/** \class CT_MembPtrExpr CTree.h Puma/CTree.h
 
17527
 *  Tree node representing a member pointer expression.
 
17528
 *  Example: \code a->b \endcode */
 
17529
 
 
17530
#line 17531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17531
} // closed Puma
 
17532
class CCExprResolve;
 
17533
class CExprResolve;
 
17534
class WinIfExists;
 
17535
class WinImportHandler;
 
17536
class WinMacros;
 
17537
class WinAsm;
 
17538
class WinDeclSpecs;
 
17539
class WinMemberExplSpec;
 
17540
class WinTypeKeywords;
 
17541
class WinFriend;
 
17542
class ExtAC;
 
17543
class ExtACBuilderCoupling;
 
17544
class ExtACSyntaxCoupling;
 
17545
class ExtACTree;
 
17546
class ExtACKeywords;
 
17547
class ExtGnu;
 
17548
class PragmaOnceUnitState;
 
17549
class PragmaOnce;
 
17550
class CMatchSyntax;
 
17551
namespace Puma {
 
17552
 
 
17553
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17554
 
 
17555
#line 17556 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17556
} // closed Puma
 
17557
 
 
17558
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17559
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17560
#include "CCExprResolveH.ah"
 
17561
#endif
 
17562
namespace Puma {
 
17563
 
 
17564
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17565
 
 
17566
#line 17567 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17567
} // closed Puma
 
17568
 
 
17569
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17570
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17571
#include "CExprResolveH.ah"
 
17572
#endif
 
17573
namespace Puma {
 
17574
 
 
17575
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17576
class CT_MembPtrExpr : public CT_Expression, public CSemObject {
 
17577
#line 17578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17578
  friend class ::CCExprResolve;
 
17579
  friend class ::CExprResolve;
 
17580
  friend class ::WinIfExists;
 
17581
  friend class ::WinImportHandler;
 
17582
  friend class ::WinMacros;
 
17583
  friend class ::WinAsm;
 
17584
  friend class ::WinDeclSpecs;
 
17585
  friend class ::WinMemberExplSpec;
 
17586
  friend class ::WinTypeKeywords;
 
17587
  friend class ::WinFriend;
 
17588
  friend class ::ExtAC;
 
17589
  friend class ::ExtACBuilderCoupling;
 
17590
  friend class ::ExtACSyntaxCoupling;
 
17591
  friend class ::ExtACTree;
 
17592
  friend class ::ExtACKeywords;
 
17593
  friend class ::ExtGnu;
 
17594
  friend class ::PragmaOnceUnitState;
 
17595
  friend class ::PragmaOnce;
 
17596
  friend class ::CMatchSyntax;
 
17597
 
 
17598
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17599
 
 
17600
  CTree *sons[3]; // expr, oper, expr
 
17601
  
 
17602
public:
 
17603
  /** Constructor.
 
17604
   *  \param e Expression on which to call the member.
 
17605
   *  \param o The arrow operator token.
 
17606
   *  \param i The member name. */
 
17607
  CT_MembPtrExpr (CTree *e, CTree *o, CTree *i) {
 
17608
    AddSon (sons[0], e); AddSon (sons[1], o); AddSon (sons[2], i);
 
17609
  }
 
17610
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17611
  static const char *NodeId ();
 
17612
  /** Get the name of the node. Can be compared with NodeId(). */
 
17613
  const char *NodeName () const { return NodeId (); }
 
17614
  /** Get the number of sons. */
 
17615
  int Sons () const { return 3; }
 
17616
  /** Get the n-th son.
 
17617
   *  \param n The index of the son.
 
17618
   *  \return The n-th son or NULL. */
 
17619
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
17620
  /** Replace a son.
 
17621
   *  \param old_son The son to replace.
 
17622
   *  \param new_son The new son. */
 
17623
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
17624
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
17625
  }
 
17626
   private:
 
17627
  typedef CT_MembPtrExpr CCExprResolveExpr;
 
17628
 
 
17629
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17630
 public :
 
17631
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17632
  typedef CT_MembPtrExpr CExprResolveExpr;
 
17633
 
 
17634
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17635
 public :
 
17636
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17637
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
17638
  const char *__attr_name (unsigned i) const {
 
17639
    static const char *names[] = { "sons" }; return names[i];
 
17640
  }
 
17641
  const void *__attr (unsigned __i) const {
 
17642
    switch (__i) { case 0: return &sons; default: return 0; }
 
17643
  }
 
17644
#line 1244 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17645
};
 
17646
 
 
17647
/** \class CT_MembRefExpr CTree.h Puma/CTree.h
 
17648
 *  Tree node representing a member reference expression.
 
17649
 *  Example: \code a.b \endcode */
 
17650
 
 
17651
#line 17652 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17652
} // closed Puma
 
17653
class CCExprResolve;
 
17654
class CExprResolve;
 
17655
class WinIfExists;
 
17656
class WinImportHandler;
 
17657
class WinMacros;
 
17658
class WinAsm;
 
17659
class WinDeclSpecs;
 
17660
class WinMemberExplSpec;
 
17661
class WinTypeKeywords;
 
17662
class WinFriend;
 
17663
class ExtAC;
 
17664
class ExtACBuilderCoupling;
 
17665
class ExtACSyntaxCoupling;
 
17666
class ExtACTree;
 
17667
class ExtACKeywords;
 
17668
class ExtGnu;
 
17669
class PragmaOnceUnitState;
 
17670
class PragmaOnce;
 
17671
class CMatchSyntax;
 
17672
namespace Puma {
 
17673
 
 
17674
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17675
 
 
17676
#line 17677 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17677
} // closed Puma
 
17678
 
 
17679
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17680
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17681
#include "CCExprResolveH.ah"
 
17682
#endif
 
17683
namespace Puma {
 
17684
 
 
17685
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17686
 
 
17687
#line 17688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17688
} // closed Puma
 
17689
 
 
17690
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17691
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17692
#include "CExprResolveH.ah"
 
17693
#endif
 
17694
namespace Puma {
 
17695
 
 
17696
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17697
class CT_MembRefExpr : public CT_MembPtrExpr {
 
17698
#line 17699 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17699
  friend class ::CCExprResolve;
 
17700
  friend class ::CExprResolve;
 
17701
  friend class ::WinIfExists;
 
17702
  friend class ::WinImportHandler;
 
17703
  friend class ::WinMacros;
 
17704
  friend class ::WinAsm;
 
17705
  friend class ::WinDeclSpecs;
 
17706
  friend class ::WinMemberExplSpec;
 
17707
  friend class ::WinTypeKeywords;
 
17708
  friend class ::WinFriend;
 
17709
  friend class ::ExtAC;
 
17710
  friend class ::ExtACBuilderCoupling;
 
17711
  friend class ::ExtACSyntaxCoupling;
 
17712
  friend class ::ExtACTree;
 
17713
  friend class ::ExtACKeywords;
 
17714
  friend class ::ExtGnu;
 
17715
  friend class ::PragmaOnceUnitState;
 
17716
  friend class ::PragmaOnce;
 
17717
  friend class ::CMatchSyntax;
 
17718
 
 
17719
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17720
 
 
17721
public:
 
17722
  /** Constructor.
 
17723
   *  \param e Expression on which to call the member.
 
17724
   *  \param o The dot operator.
 
17725
   *  \param i The member name. */
 
17726
  CT_MembRefExpr (CTree *e, CTree *o, CTree *i) :
 
17727
    CT_MembPtrExpr (e, o, i) {}
 
17728
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17729
  static const char *NodeId ();
 
17730
  /** Get the name of the node. Can be compared with NodeId(). */
 
17731
  const char *NodeName () const { return NodeId (); }
 
17732
   private:
 
17733
  typedef CT_MembRefExpr CCExprResolveExpr;
 
17734
 
 
17735
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17736
 public :
 
17737
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17738
  typedef CT_MembRefExpr CExprResolveExpr;
 
17739
 
 
17740
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17741
 public :
 
17742
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17743
  typedef AC::TLE __AttrTypes;
 
17744
  const char *__attr_name (unsigned i) const { return 0; }
 
17745
  const void *__attr (unsigned __i) const { return 0; }
 
17746
#line 1261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17747
};
 
17748
 
 
17749
/** \class CT_UnaryExpr CTree.h Puma/CTree.h
 
17750
 *  Base class for tree nodes representing unary expressions. 
 
17751
 *  Example: \code !a \endcode */
 
17752
 
 
17753
#line 17754 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17754
} // closed Puma
 
17755
class CCExprResolve;
 
17756
class CExprResolve;
 
17757
class WinIfExists;
 
17758
class WinImportHandler;
 
17759
class WinMacros;
 
17760
class WinAsm;
 
17761
class WinDeclSpecs;
 
17762
class WinMemberExplSpec;
 
17763
class WinTypeKeywords;
 
17764
class WinFriend;
 
17765
class ExtAC;
 
17766
class ExtACBuilderCoupling;
 
17767
class ExtACSyntaxCoupling;
 
17768
class ExtACTree;
 
17769
class ExtACKeywords;
 
17770
class ExtGnu;
 
17771
class PragmaOnceUnitState;
 
17772
class PragmaOnce;
 
17773
class CMatchSyntax;
 
17774
namespace Puma {
 
17775
 
 
17776
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17777
 
 
17778
#line 17779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17779
} // closed Puma
 
17780
 
 
17781
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17782
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17783
#include "CCExprResolveH.ah"
 
17784
#endif
 
17785
namespace Puma {
 
17786
 
 
17787
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17788
 
 
17789
#line 17790 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17790
} // closed Puma
 
17791
 
 
17792
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17793
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17794
#include "CExprResolveH.ah"
 
17795
#endif
 
17796
namespace Puma {
 
17797
 
 
17798
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17799
class CT_UnaryExpr : public CT_Call {
 
17800
#line 17801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17801
  friend class ::CCExprResolve;
 
17802
  friend class ::CExprResolve;
 
17803
  friend class ::WinIfExists;
 
17804
  friend class ::WinImportHandler;
 
17805
  friend class ::WinMacros;
 
17806
  friend class ::WinAsm;
 
17807
  friend class ::WinDeclSpecs;
 
17808
  friend class ::WinMemberExplSpec;
 
17809
  friend class ::WinTypeKeywords;
 
17810
  friend class ::WinFriend;
 
17811
  friend class ::ExtAC;
 
17812
  friend class ::ExtACBuilderCoupling;
 
17813
  friend class ::ExtACSyntaxCoupling;
 
17814
  friend class ::ExtACTree;
 
17815
  friend class ::ExtACKeywords;
 
17816
  friend class ::ExtGnu;
 
17817
  friend class ::PragmaOnceUnitState;
 
17818
  friend class ::PragmaOnce;
 
17819
  friend class ::CMatchSyntax;
 
17820
 
 
17821
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17822
 
 
17823
  CTree *sons[2]; // oper, expr
 
17824
 
 
17825
public:
 
17826
  /** Constructor.
 
17827
   *  \param o The unary operator.
 
17828
   *  \param e The expression on which the operator is invoked. */
 
17829
  CT_UnaryExpr (CTree *o, CTree *e) { AddSon (sons[0], o); AddSon (sons[1], e); }
 
17830
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17831
  static const char *NodeId ();
 
17832
  /** Get the name of the node. Can be compared with NodeId(). */
 
17833
  const char *NodeName () const { return NodeId (); }
 
17834
  /** Get the number of sons. */
 
17835
  int Sons () const { return 2; }
 
17836
  /** Get the n-th son.
 
17837
   *  \param n The index of the son.
 
17838
   *  \return The n-th son or NULL. */
 
17839
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
17840
  /** Replace a son.
 
17841
   *  \param old_son The son to replace.
 
17842
   *  \param new_son The new son. */
 
17843
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
17844
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
17845
  }
 
17846
  /** Get the expression node. */
 
17847
  CTree *Expr () const { return sons[1]; }
 
17848
   private:
 
17849
  typedef CT_UnaryExpr CCExprResolveExpr;
 
17850
 
 
17851
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17852
 public :
 
17853
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17854
  typedef CT_UnaryExpr CExprResolveExpr;
 
17855
 
 
17856
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17857
 public :
 
17858
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17859
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
17860
  const char *__attr_name (unsigned i) const {
 
17861
    static const char *names[] = { "sons" }; return names[i];
 
17862
  }
 
17863
  const void *__attr (unsigned __i) const {
 
17864
    switch (__i) { case 0: return &sons; default: return 0; }
 
17865
  }
 
17866
#line 1292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17867
};
 
17868
 
 
17869
/** \class CT_PostfixExpr CTree.h Puma/CTree.h
 
17870
 *  Tree node representing a postfix expression.
 
17871
 *  Example: \code a++ \endcode */
 
17872
 
 
17873
#line 17874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17874
} // closed Puma
 
17875
class CCExprResolve;
 
17876
class CExprResolve;
 
17877
class WinIfExists;
 
17878
class WinImportHandler;
 
17879
class WinMacros;
 
17880
class WinAsm;
 
17881
class WinDeclSpecs;
 
17882
class WinMemberExplSpec;
 
17883
class WinTypeKeywords;
 
17884
class WinFriend;
 
17885
class ExtAC;
 
17886
class ExtACBuilderCoupling;
 
17887
class ExtACSyntaxCoupling;
 
17888
class ExtACTree;
 
17889
class ExtACKeywords;
 
17890
class ExtGnu;
 
17891
class PragmaOnceUnitState;
 
17892
class PragmaOnce;
 
17893
class CMatchSyntax;
 
17894
namespace Puma {
 
17895
 
 
17896
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17897
 
 
17898
#line 17899 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17899
} // closed Puma
 
17900
 
 
17901
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17902
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17903
#include "CCExprResolveH.ah"
 
17904
#endif
 
17905
namespace Puma {
 
17906
 
 
17907
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17908
 
 
17909
#line 17910 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17910
} // closed Puma
 
17911
 
 
17912
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17913
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17914
#include "CExprResolveH.ah"
 
17915
#endif
 
17916
namespace Puma {
 
17917
 
 
17918
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17919
class CT_PostfixExpr : public CT_UnaryExpr {
 
17920
#line 17921 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17921
  friend class ::CCExprResolve;
 
17922
  friend class ::CExprResolve;
 
17923
  friend class ::WinIfExists;
 
17924
  friend class ::WinImportHandler;
 
17925
  friend class ::WinMacros;
 
17926
  friend class ::WinAsm;
 
17927
  friend class ::WinDeclSpecs;
 
17928
  friend class ::WinMemberExplSpec;
 
17929
  friend class ::WinTypeKeywords;
 
17930
  friend class ::WinFriend;
 
17931
  friend class ::ExtAC;
 
17932
  friend class ::ExtACBuilderCoupling;
 
17933
  friend class ::ExtACSyntaxCoupling;
 
17934
  friend class ::ExtACTree;
 
17935
  friend class ::ExtACKeywords;
 
17936
  friend class ::ExtGnu;
 
17937
  friend class ::PragmaOnceUnitState;
 
17938
  friend class ::PragmaOnce;
 
17939
  friend class ::CMatchSyntax;
 
17940
 
 
17941
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17942
 
 
17943
public:
 
17944
  /** Constructor.
 
17945
   *  \param e The expression on which to invoke the operator. 
 
17946
   *  \param o The postfix operator. */
 
17947
  CT_PostfixExpr (CTree *e, CTree *o) :
 
17948
    CT_UnaryExpr (e, o) {}
 
17949
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17950
  static const char *NodeId ();
 
17951
  /** Get the name of the node. Can be compared with NodeId(). */
 
17952
  const char *NodeName () const { return NodeId (); }
 
17953
   private:
 
17954
  typedef CT_PostfixExpr CCExprResolveExpr;
 
17955
 
 
17956
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17957
 public :
 
17958
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17959
  typedef CT_PostfixExpr CExprResolveExpr;
 
17960
 
 
17961
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17962
 public :
 
17963
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17964
  typedef AC::TLE __AttrTypes;
 
17965
  const char *__attr_name (unsigned i) const { return 0; }
 
17966
  const void *__attr (unsigned __i) const { return 0; }
 
17967
#line 1308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17968
};
 
17969
 
 
17970
/** \class CT_AddrExpr CTree.h Puma/CTree.h
 
17971
 *  Tree node representing an address expression.
 
17972
 *  Example: \code &a \endcode */
 
17973
 
 
17974
#line 17975 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
17975
} // closed Puma
 
17976
class CCExprResolve;
 
17977
class CExprResolve;
 
17978
class WinIfExists;
 
17979
class WinImportHandler;
 
17980
class WinMacros;
 
17981
class WinAsm;
 
17982
class WinDeclSpecs;
 
17983
class WinMemberExplSpec;
 
17984
class WinTypeKeywords;
 
17985
class WinFriend;
 
17986
class ExtAC;
 
17987
class ExtACBuilderCoupling;
 
17988
class ExtACSyntaxCoupling;
 
17989
class ExtACTree;
 
17990
class ExtACKeywords;
 
17991
class ExtGnu;
 
17992
class PragmaOnceUnitState;
 
17993
class PragmaOnce;
 
17994
class CMatchSyntax;
 
17995
namespace Puma {
 
17996
 
 
17997
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17998
 
 
17999
#line 18000 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18000
} // closed Puma
 
18001
 
 
18002
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18003
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18004
#include "CCExprResolveH.ah"
 
18005
#endif
 
18006
namespace Puma {
 
18007
 
 
18008
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18009
 
 
18010
#line 18011 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18011
} // closed Puma
 
18012
 
 
18013
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18014
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18015
#include "CExprResolveH.ah"
 
18016
#endif
 
18017
namespace Puma {
 
18018
 
 
18019
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18020
class CT_AddrExpr : public CT_UnaryExpr {
 
18021
#line 18022 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18022
  friend class ::CCExprResolve;
 
18023
  friend class ::CExprResolve;
 
18024
  friend class ::WinIfExists;
 
18025
  friend class ::WinImportHandler;
 
18026
  friend class ::WinMacros;
 
18027
  friend class ::WinAsm;
 
18028
  friend class ::WinDeclSpecs;
 
18029
  friend class ::WinMemberExplSpec;
 
18030
  friend class ::WinTypeKeywords;
 
18031
  friend class ::WinFriend;
 
18032
  friend class ::ExtAC;
 
18033
  friend class ::ExtACBuilderCoupling;
 
18034
  friend class ::ExtACSyntaxCoupling;
 
18035
  friend class ::ExtACTree;
 
18036
  friend class ::ExtACKeywords;
 
18037
  friend class ::ExtGnu;
 
18038
  friend class ::PragmaOnceUnitState;
 
18039
  friend class ::PragmaOnce;
 
18040
  friend class ::CMatchSyntax;
 
18041
 
 
18042
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18043
 
 
18044
public:
 
18045
  /** Constructor.
 
18046
   *  \param o The address operator, i.e. '&'.
 
18047
   *  \param e The expression from which to take the address. */
 
18048
  CT_AddrExpr (CTree *o, CTree *e) :
 
18049
    CT_UnaryExpr (o, e) {}
 
18050
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18051
  static const char *NodeId ();
 
18052
  /** Get the name of the node. Can be compared with NodeId(). */
 
18053
  const char *NodeName () const { return NodeId (); }
 
18054
   private:
 
18055
  typedef CT_AddrExpr CCExprResolveExpr;
 
18056
 
 
18057
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18058
 public :
 
18059
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18060
  typedef CT_AddrExpr CExprResolveExpr;
 
18061
 
 
18062
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18063
 public :
 
18064
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18065
  typedef AC::TLE __AttrTypes;
 
18066
  const char *__attr_name (unsigned i) const { return 0; }
 
18067
  const void *__attr (unsigned __i) const { return 0; }
 
18068
#line 1324 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18069
};
 
18070
 
 
18071
/** \class CT_DerefExpr CTree.h Puma/CTree.h
 
18072
 *  Tree node representing a pointer dereferencing expression.
 
18073
 *  Example: \code *a \endcode */
 
18074
 
 
18075
#line 18076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18076
} // closed Puma
 
18077
class CCExprResolve;
 
18078
class CExprResolve;
 
18079
class WinIfExists;
 
18080
class WinImportHandler;
 
18081
class WinMacros;
 
18082
class WinAsm;
 
18083
class WinDeclSpecs;
 
18084
class WinMemberExplSpec;
 
18085
class WinTypeKeywords;
 
18086
class WinFriend;
 
18087
class ExtAC;
 
18088
class ExtACBuilderCoupling;
 
18089
class ExtACSyntaxCoupling;
 
18090
class ExtACTree;
 
18091
class ExtACKeywords;
 
18092
class ExtGnu;
 
18093
class PragmaOnceUnitState;
 
18094
class PragmaOnce;
 
18095
class CMatchSyntax;
 
18096
namespace Puma {
 
18097
 
 
18098
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18099
 
 
18100
#line 18101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18101
} // closed Puma
 
18102
 
 
18103
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18104
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18105
#include "CCExprResolveH.ah"
 
18106
#endif
 
18107
namespace Puma {
 
18108
 
 
18109
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18110
 
 
18111
#line 18112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18112
} // closed Puma
 
18113
 
 
18114
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18115
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18116
#include "CExprResolveH.ah"
 
18117
#endif
 
18118
namespace Puma {
 
18119
 
 
18120
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18121
class CT_DerefExpr : public CT_UnaryExpr {
 
18122
#line 18123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18123
  friend class ::CCExprResolve;
 
18124
  friend class ::CExprResolve;
 
18125
  friend class ::WinIfExists;
 
18126
  friend class ::WinImportHandler;
 
18127
  friend class ::WinMacros;
 
18128
  friend class ::WinAsm;
 
18129
  friend class ::WinDeclSpecs;
 
18130
  friend class ::WinMemberExplSpec;
 
18131
  friend class ::WinTypeKeywords;
 
18132
  friend class ::WinFriend;
 
18133
  friend class ::ExtAC;
 
18134
  friend class ::ExtACBuilderCoupling;
 
18135
  friend class ::ExtACSyntaxCoupling;
 
18136
  friend class ::ExtACTree;
 
18137
  friend class ::ExtACKeywords;
 
18138
  friend class ::ExtGnu;
 
18139
  friend class ::PragmaOnceUnitState;
 
18140
  friend class ::PragmaOnce;
 
18141
  friend class ::CMatchSyntax;
 
18142
 
 
18143
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18144
 
 
18145
public:
 
18146
  /** Constructor.
 
18147
   *  \param o The dereferencing operator, i.e. '*'.
 
18148
   *  \param e The expression to dereference. */
 
18149
  CT_DerefExpr (CTree *o, CTree *e) :
 
18150
    CT_UnaryExpr (o, e) {}
 
18151
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18152
  static const char *NodeId ();
 
18153
  /** Get the name of the node. Can be compared with NodeId(). */
 
18154
  const char *NodeName () const { return NodeId (); }
 
18155
   private:
 
18156
  typedef CT_DerefExpr CCExprResolveExpr;
 
18157
 
 
18158
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18159
 public :
 
18160
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18161
  typedef CT_DerefExpr CExprResolveExpr;
 
18162
 
 
18163
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18164
 public :
 
18165
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18166
  typedef AC::TLE __AttrTypes;
 
18167
  const char *__attr_name (unsigned i) const { return 0; }
 
18168
  const void *__attr (unsigned __i) const { return 0; }
 
18169
#line 1340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18170
};
 
18171
 
 
18172
/** \class CT_DeleteExpr CTree.h Puma/CTree.h
 
18173
 *  Tree node representing a delete expression.
 
18174
 *  Example: \code delete a \endcode */
 
18175
 
 
18176
#line 18177 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18177
} // closed Puma
 
18178
class CCExprResolve;
 
18179
class CExprResolve;
 
18180
class WinIfExists;
 
18181
class WinImportHandler;
 
18182
class WinMacros;
 
18183
class WinAsm;
 
18184
class WinDeclSpecs;
 
18185
class WinMemberExplSpec;
 
18186
class WinTypeKeywords;
 
18187
class WinFriend;
 
18188
class ExtAC;
 
18189
class ExtACBuilderCoupling;
 
18190
class ExtACSyntaxCoupling;
 
18191
class ExtACTree;
 
18192
class ExtACKeywords;
 
18193
class ExtGnu;
 
18194
class PragmaOnceUnitState;
 
18195
class PragmaOnce;
 
18196
class CMatchSyntax;
 
18197
namespace Puma {
 
18198
 
 
18199
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18200
 
 
18201
#line 18202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18202
} // closed Puma
 
18203
 
 
18204
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18205
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18206
#include "CCExprResolveH.ah"
 
18207
#endif
 
18208
namespace Puma {
 
18209
 
 
18210
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18211
 
 
18212
#line 18213 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18213
} // closed Puma
 
18214
 
 
18215
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18216
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18217
#include "CExprResolveH.ah"
 
18218
#endif
 
18219
namespace Puma {
 
18220
 
 
18221
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18222
class CT_DeleteExpr : public CT_Expression, public CSemObject {
 
18223
#line 18224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18224
  friend class ::CCExprResolve;
 
18225
  friend class ::CExprResolve;
 
18226
  friend class ::WinIfExists;
 
18227
  friend class ::WinImportHandler;
 
18228
  friend class ::WinMacros;
 
18229
  friend class ::WinAsm;
 
18230
  friend class ::WinDeclSpecs;
 
18231
  friend class ::WinMemberExplSpec;
 
18232
  friend class ::WinTypeKeywords;
 
18233
  friend class ::WinFriend;
 
18234
  friend class ::ExtAC;
 
18235
  friend class ::ExtACBuilderCoupling;
 
18236
  friend class ::ExtACSyntaxCoupling;
 
18237
  friend class ::ExtACTree;
 
18238
  friend class ::ExtACKeywords;
 
18239
  friend class ::ExtGnu;
 
18240
  friend class ::PragmaOnceUnitState;
 
18241
  friend class ::PragmaOnce;
 
18242
  friend class ::CMatchSyntax;
 
18243
 
 
18244
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18245
 
 
18246
  CTree *sons[2]; // oper, expr
 
18247
 
 
18248
public:
 
18249
  /** Constructor.
 
18250
   *  \param op The delete operator.
 
18251
   *  \param e The expression representing the object to delete. */
 
18252
  CT_DeleteExpr (CTree *op, CTree *e) { AddSon (sons[0], op); AddSon (sons[1], e); }
 
18253
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18254
  static const char *NodeId ();
 
18255
  /** Get the name of the node. Can be compared with NodeId(). */
 
18256
  const char *NodeName () const { return NodeId (); }
 
18257
  /** Get the number of sons. */
 
18258
  int Sons () const { return 2; }
 
18259
  /** Get the n-th son.
 
18260
   *  \param n The index of the son.
 
18261
   *  \return The n-th son or NULL. */
 
18262
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
18263
  /** Replace a son.
 
18264
   *  \param old_son The son to replace.
 
18265
   *  \param new_son The new son. */
 
18266
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
18267
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
18268
  }
 
18269
  /** Get the expression. */
 
18270
  CTree *Expr () const { return sons[1]; }
 
18271
  /** Get the operator name, i.e. 'delete' or 'delete[]'. */
 
18272
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
18273
  /** Get the semantic information. */
 
18274
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
18275
   private:
 
18276
  typedef CT_DeleteExpr CCExprResolveExpr;
 
18277
 
 
18278
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18279
 public :
 
18280
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18281
  typedef CT_DeleteExpr CExprResolveExpr;
 
18282
 
 
18283
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18284
 public :
 
18285
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18286
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
18287
  const char *__attr_name (unsigned i) const {
 
18288
    static const char *names[] = { "sons" }; return names[i];
 
18289
  }
 
18290
  const void *__attr (unsigned __i) const {
 
18291
    switch (__i) { case 0: return &sons; default: return 0; }
 
18292
  }
 
18293
#line 1375 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18294
};
 
18295
 
 
18296
/** \class CT_NewExpr CTree.h Puma/CTree.h
 
18297
 *  Tree node representing a new expression.
 
18298
 *  Example: \code new A() \endcode */
 
18299
 
 
18300
#line 18301 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18301
} // closed Puma
 
18302
class CCExprResolve;
 
18303
class CExprResolve;
 
18304
class WinIfExists;
 
18305
class WinImportHandler;
 
18306
class WinMacros;
 
18307
class WinAsm;
 
18308
class WinDeclSpecs;
 
18309
class WinMemberExplSpec;
 
18310
class WinTypeKeywords;
 
18311
class WinFriend;
 
18312
class ExtAC;
 
18313
class ExtACBuilderCoupling;
 
18314
class ExtACSyntaxCoupling;
 
18315
class ExtACTree;
 
18316
class ExtACKeywords;
 
18317
class ExtGnu;
 
18318
class PragmaOnceUnitState;
 
18319
class PragmaOnce;
 
18320
class CMatchSyntax;
 
18321
namespace Puma {
 
18322
 
 
18323
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18324
 
 
18325
#line 18326 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18326
} // closed Puma
 
18327
 
 
18328
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18329
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18330
#include "CCExprResolveH.ah"
 
18331
#endif
 
18332
namespace Puma {
 
18333
 
 
18334
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18335
 
 
18336
#line 18337 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18337
} // closed Puma
 
18338
 
 
18339
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18340
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18341
#include "CExprResolveH.ah"
 
18342
#endif
 
18343
namespace Puma {
 
18344
 
 
18345
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18346
class CT_NewExpr : public CT_Expression, public CSemObject {
 
18347
#line 18348 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18348
  friend class ::CCExprResolve;
 
18349
  friend class ::CExprResolve;
 
18350
  friend class ::WinIfExists;
 
18351
  friend class ::WinImportHandler;
 
18352
  friend class ::WinMacros;
 
18353
  friend class ::WinAsm;
 
18354
  friend class ::WinDeclSpecs;
 
18355
  friend class ::WinMemberExplSpec;
 
18356
  friend class ::WinTypeKeywords;
 
18357
  friend class ::WinFriend;
 
18358
  friend class ::ExtAC;
 
18359
  friend class ::ExtACBuilderCoupling;
 
18360
  friend class ::ExtACSyntaxCoupling;
 
18361
  friend class ::ExtACTree;
 
18362
  friend class ::ExtACKeywords;
 
18363
  friend class ::ExtGnu;
 
18364
  friend class ::PragmaOnceUnitState;
 
18365
  friend class ::PragmaOnce;
 
18366
  friend class ::CMatchSyntax;
 
18367
 
 
18368
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18369
 
 
18370
  CTree *sons[6]; // oper, placement, open, type, close, init
 
18371
 
 
18372
public:
 
18373
  /** Constructor.
 
18374
   *  \param op The new operator.
 
18375
   *  \param p The optional placement expression.
 
18376
   *  \param o The optional left parenthesis around the type identifier.
 
18377
   *  \param t The type identifier specifying the type of the object to create.
 
18378
   *  \param c The optional right parenthesis around the type identifier.
 
18379
   *  \param i The optional initializer. */
 
18380
  CT_NewExpr (CTree *op, CTree *p, CTree *o, CTree *t, CTree *c, CTree *i) {
 
18381
    AddSon (sons[0], op); AddSon (sons[1], p); AddSon (sons[2], o); 
 
18382
    AddSon (sons[3], t); AddSon (sons[4], c); AddSon (sons[5], i); 
 
18383
  }
 
18384
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18385
  static const char *NodeId ();
 
18386
  /** Get the name of the node. Can be compared with NodeId(). */
 
18387
  const char *NodeName () const { return NodeId (); }
 
18388
  /** Get the number of sons. */
 
18389
  int Sons () const { return CTree::Sons (sons, 6); }
 
18390
  /** Get the n-th son.
 
18391
   *  \param n The index of the son.
 
18392
   *  \return The n-th son or NULL. */
 
18393
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
18394
  /** Replace a son.
 
18395
   *  \param old_son The son to replace.
 
18396
   *  \param new_son The new son. */
 
18397
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
18398
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
18399
  }
 
18400
  /** Get the operator name. */
 
18401
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
18402
  /** Get the placement expression. */
 
18403
  CT_ExprList *Placement () const { return (CT_ExprList*)sons[1];; }
 
18404
  /** Get the initializer. */
 
18405
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[5]; }
 
18406
  /** Get the type of the object to create. */
 
18407
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[3]; }
 
18408
  /** Get the semantic information. */
 
18409
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
18410
   private:
 
18411
  typedef CT_NewExpr CCExprResolveExpr;
 
18412
 
 
18413
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18414
 public :
 
18415
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18416
  typedef CT_NewExpr CExprResolveExpr;
 
18417
 
 
18418
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18419
 public :
 
18420
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18421
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
18422
  const char *__attr_name (unsigned i) const {
 
18423
    static const char *names[] = { "sons" }; return names[i];
 
18424
  }
 
18425
  const void *__attr (unsigned __i) const {
 
18426
    switch (__i) { case 0: return &sons; default: return 0; }
 
18427
  }
 
18428
#line 1421 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18429
};
 
18430
 
 
18431
/** \class CT_IfThenExpr CTree.h Puma/CTree.h
 
18432
 *  Tree node representing an if-then expression.
 
18433
 *  Example: \code a>0?a:b \endcode or \code a?:b \endcode */
 
18434
 
 
18435
#line 18436 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18436
} // closed Puma
 
18437
class CCExprResolve;
 
18438
class CExprResolve;
 
18439
class WinIfExists;
 
18440
class WinImportHandler;
 
18441
class WinMacros;
 
18442
class WinAsm;
 
18443
class WinDeclSpecs;
 
18444
class WinMemberExplSpec;
 
18445
class WinTypeKeywords;
 
18446
class WinFriend;
 
18447
class ExtAC;
 
18448
class ExtACBuilderCoupling;
 
18449
class ExtACSyntaxCoupling;
 
18450
class ExtACTree;
 
18451
class ExtACKeywords;
 
18452
class ExtGnu;
 
18453
class PragmaOnceUnitState;
 
18454
class PragmaOnce;
 
18455
class CMatchSyntax;
 
18456
namespace Puma {
 
18457
 
 
18458
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18459
 
 
18460
#line 18461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18461
} // closed Puma
 
18462
 
 
18463
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18464
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18465
#include "CCExprResolveH.ah"
 
18466
#endif
 
18467
namespace Puma {
 
18468
 
 
18469
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18470
 
 
18471
#line 18472 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18472
} // closed Puma
 
18473
 
 
18474
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18475
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18476
#include "CExprResolveH.ah"
 
18477
#endif
 
18478
namespace Puma {
 
18479
 
 
18480
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18481
class CT_IfThenExpr : public CT_Expression {
 
18482
#line 18483 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18483
  friend class ::CCExprResolve;
 
18484
  friend class ::CExprResolve;
 
18485
  friend class ::WinIfExists;
 
18486
  friend class ::WinImportHandler;
 
18487
  friend class ::WinMacros;
 
18488
  friend class ::WinAsm;
 
18489
  friend class ::WinDeclSpecs;
 
18490
  friend class ::WinMemberExplSpec;
 
18491
  friend class ::WinTypeKeywords;
 
18492
  friend class ::WinFriend;
 
18493
  friend class ::ExtAC;
 
18494
  friend class ::ExtACBuilderCoupling;
 
18495
  friend class ::ExtACSyntaxCoupling;
 
18496
  friend class ::ExtACTree;
 
18497
  friend class ::ExtACKeywords;
 
18498
  friend class ::ExtGnu;
 
18499
  friend class ::PragmaOnceUnitState;
 
18500
  friend class ::PragmaOnce;
 
18501
  friend class ::CMatchSyntax;
 
18502
 
 
18503
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18504
 
 
18505
  CTree *sons[5]; // cond, oper, left, colon, right
 
18506
 
 
18507
public:
 
18508
  /** Constructor.
 
18509
   *  \param c1 The condition expression.
 
18510
   *  \param o The question mark operator. 
 
18511
   *  \param l The expression to the left of the colon.
 
18512
   *  \param c2 The colon operator.
 
18513
   *  \param r The expression to the right of the colon. */ 
 
18514
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *l, CTree *c2, CTree *r) {
 
18515
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], l); 
 
18516
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
18517
  }
 
18518
  /** Constructor.
 
18519
   *  \param c1 The condition expression.
 
18520
   *  \param o The question mark operator. 
 
18521
   *  \param c2 The colon operator.
 
18522
   *  \param r The expression to the right of the colon. */ 
 
18523
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *c2, CTree *r) {
 
18524
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], 0); 
 
18525
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
18526
  }
 
18527
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18528
  static const char *NodeId ();
 
18529
  /** Get the name of the node. Can be compared with NodeId(). */
 
18530
  const char *NodeName () const { return NodeId (); }
 
18531
  /** Get the number of sons. */
 
18532
  int Sons () const { return CTree::Sons (sons, 5); }
 
18533
  /** Get the n-th son.
 
18534
   *  \param n The index of the son.
 
18535
   *  \return The n-th son or NULL. */
 
18536
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
18537
  /** Get the condition expression. */
 
18538
  CTree *Condition () const { return sons[0]; }
 
18539
  /** Get the left expression (condition=true). */
 
18540
  CTree *LeftOperand () const { return sons[2]; }
 
18541
  /** Get the right expression (condition=false). */
 
18542
  CTree *RightOperand () const { return sons[4]; }
 
18543
  /** Replace a son.
 
18544
   *  \param old_son The son to replace.
 
18545
   *  \param new_son The new son. */
 
18546
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
18547
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
18548
  }
 
18549
   private:
 
18550
  typedef CT_IfThenExpr CCExprResolveExpr;
 
18551
 
 
18552
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18553
 public :
 
18554
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18555
  typedef CT_IfThenExpr CExprResolveExpr;
 
18556
 
 
18557
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18558
 public :
 
18559
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18560
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
18561
  const char *__attr_name (unsigned i) const {
 
18562
    static const char *names[] = { "sons" }; return names[i];
 
18563
  }
 
18564
  const void *__attr (unsigned __i) const {
 
18565
    switch (__i) { case 0: return &sons; default: return 0; }
 
18566
  }
 
18567
#line 1471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18568
};
 
18569
 
 
18570
/** \class CT_CmpdLiteral CTree.h Puma/CTree.h
 
18571
 *  Tree node representing a compound literal.
 
18572
 *  Example: \code (int[]){1,2,3) \endcode */
 
18573
 
 
18574
#line 18575 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18575
} // closed Puma
 
18576
class CCExprResolve;
 
18577
class CExprResolve;
 
18578
class WinIfExists;
 
18579
class WinImportHandler;
 
18580
class WinMacros;
 
18581
class WinAsm;
 
18582
class WinDeclSpecs;
 
18583
class WinMemberExplSpec;
 
18584
class WinTypeKeywords;
 
18585
class WinFriend;
 
18586
class ExtAC;
 
18587
class ExtACBuilderCoupling;
 
18588
class ExtACSyntaxCoupling;
 
18589
class ExtACTree;
 
18590
class ExtACKeywords;
 
18591
class ExtGnu;
 
18592
class PragmaOnceUnitState;
 
18593
class PragmaOnce;
 
18594
class CMatchSyntax;
 
18595
namespace Puma {
 
18596
 
 
18597
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18598
 
 
18599
#line 18600 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18600
} // closed Puma
 
18601
 
 
18602
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18603
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18604
#include "CCExprResolveH.ah"
 
18605
#endif
 
18606
namespace Puma {
 
18607
 
 
18608
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18609
 
 
18610
#line 18611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18611
} // closed Puma
 
18612
 
 
18613
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18614
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18615
#include "CExprResolveH.ah"
 
18616
#endif
 
18617
namespace Puma {
 
18618
 
 
18619
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18620
class CT_CmpdLiteral : public CT_Expression, public CSemObject {
 
18621
#line 18622 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18622
  friend class ::CCExprResolve;
 
18623
  friend class ::CExprResolve;
 
18624
  friend class ::WinIfExists;
 
18625
  friend class ::WinImportHandler;
 
18626
  friend class ::WinMacros;
 
18627
  friend class ::WinAsm;
 
18628
  friend class ::WinDeclSpecs;
 
18629
  friend class ::WinMemberExplSpec;
 
18630
  friend class ::WinTypeKeywords;
 
18631
  friend class ::WinFriend;
 
18632
  friend class ::ExtAC;
 
18633
  friend class ::ExtACBuilderCoupling;
 
18634
  friend class ::ExtACSyntaxCoupling;
 
18635
  friend class ::ExtACTree;
 
18636
  friend class ::ExtACKeywords;
 
18637
  friend class ::ExtGnu;
 
18638
  friend class ::PragmaOnceUnitState;
 
18639
  friend class ::PragmaOnce;
 
18640
  friend class ::CMatchSyntax;
 
18641
 
 
18642
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18643
 
 
18644
  CTree *sons[4]; // open, type, close, init
 
18645
 
 
18646
public:
 
18647
  /** Constructor.
 
18648
   *  \param r Left parenthesis of the type name.
 
18649
   *  \param t The type name.
 
18650
   *  \param cr Right parenthesis of the type name.
 
18651
   *  \param i The initializer list. */
 
18652
  CT_CmpdLiteral (CTree *r, CTree *t, CTree *cr, CTree *i) {
 
18653
    AddSon (sons[0], r); AddSon (sons[1], t); 
 
18654
    AddSon (sons[2], cr); AddSon (sons[3], i);
 
18655
  }
 
18656
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18657
  static const char *NodeId ();
 
18658
  /** Get the name of the node. Can be compared with NodeId(). */
 
18659
  const char *NodeName () const { return NodeId (); }
 
18660
  /** Get the number of sons. */
 
18661
  int Sons () const { return 4; }
 
18662
  /** Get the n-th son.
 
18663
   *  \param n The index of the son.
 
18664
   *  \return The n-th son or NULL. */
 
18665
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
18666
  /** Replace a son.
 
18667
   *  \param old_son The son to replace.
 
18668
   *  \param new_son The new son. */
 
18669
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
18670
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
18671
  }
 
18672
  /** Get the type name. */
 
18673
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
18674
  /** Get the initializer list. */
 
18675
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[3]; }
 
18676
  /** Get the semantic information about the created object. */
 
18677
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
18678
   private:
 
18679
  typedef CT_CmpdLiteral CCExprResolveExpr;
 
18680
 
 
18681
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18682
 public :
 
18683
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18684
  typedef CT_CmpdLiteral CExprResolveExpr;
 
18685
 
 
18686
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18687
 public :
 
18688
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18689
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
18690
  const char *__attr_name (unsigned i) const {
 
18691
    static const char *names[] = { "sons" }; return names[i];
 
18692
  }
 
18693
  const void *__attr (unsigned __i) const {
 
18694
    switch (__i) { case 0: return &sons; default: return 0; }
 
18695
  }
 
18696
#line 1511 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18697
};
 
18698
 
 
18699
/** \class CT_ConstructExpr CTree.h Puma/CTree.h
 
18700
 *  Tree node representing a construct expression.
 
18701
 *  Example: \code std::string("abc") \endcode */
 
18702
 
 
18703
#line 18704 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18704
} // closed Puma
 
18705
class CCExprResolve;
 
18706
class CExprResolve;
 
18707
class WinIfExists;
 
18708
class WinImportHandler;
 
18709
class WinMacros;
 
18710
class WinAsm;
 
18711
class WinDeclSpecs;
 
18712
class WinMemberExplSpec;
 
18713
class WinTypeKeywords;
 
18714
class WinFriend;
 
18715
class ExtAC;
 
18716
class ExtACBuilderCoupling;
 
18717
class ExtACSyntaxCoupling;
 
18718
class ExtACTree;
 
18719
class ExtACKeywords;
 
18720
class ExtGnu;
 
18721
class PragmaOnceUnitState;
 
18722
class PragmaOnce;
 
18723
class CMatchSyntax;
 
18724
namespace Puma {
 
18725
 
 
18726
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18727
 
 
18728
#line 18729 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18729
} // closed Puma
 
18730
 
 
18731
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18732
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18733
#include "CCExprResolveH.ah"
 
18734
#endif
 
18735
namespace Puma {
 
18736
 
 
18737
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18738
 
 
18739
#line 18740 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18740
} // closed Puma
 
18741
 
 
18742
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18743
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18744
#include "CExprResolveH.ah"
 
18745
#endif
 
18746
namespace Puma {
 
18747
 
 
18748
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18749
class CT_ConstructExpr : public CT_Expression, public CSemObject {
 
18750
#line 18751 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18751
  friend class ::CCExprResolve;
 
18752
  friend class ::CExprResolve;
 
18753
  friend class ::WinIfExists;
 
18754
  friend class ::WinImportHandler;
 
18755
  friend class ::WinMacros;
 
18756
  friend class ::WinAsm;
 
18757
  friend class ::WinDeclSpecs;
 
18758
  friend class ::WinMemberExplSpec;
 
18759
  friend class ::WinTypeKeywords;
 
18760
  friend class ::WinFriend;
 
18761
  friend class ::ExtAC;
 
18762
  friend class ::ExtACBuilderCoupling;
 
18763
  friend class ::ExtACSyntaxCoupling;
 
18764
  friend class ::ExtACTree;
 
18765
  friend class ::ExtACKeywords;
 
18766
  friend class ::ExtGnu;
 
18767
  friend class ::PragmaOnceUnitState;
 
18768
  friend class ::PragmaOnce;
 
18769
  friend class ::CMatchSyntax;
 
18770
 
 
18771
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18772
 
 
18773
  CTree *sons[2]; // type, init
 
18774
 
 
18775
public:
 
18776
  /** Constructor.
 
18777
   *  \param t The type name.
 
18778
   *  \param i The initializer list. */
 
18779
  CT_ConstructExpr (CTree *t, CTree *i) { AddSon (sons[0], t); AddSon (sons[1], i); }
 
18780
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18781
  static const char *NodeId ();
 
18782
  /** Get the name of the node. Can be compared with NodeId(). */
 
18783
  const char *NodeName () const { return NodeId (); }
 
18784
  /** Get the number of sons. */
 
18785
  int Sons () const { return 2; }
 
18786
  /** Get the n-th son.
 
18787
   *  \param n The index of the son.
 
18788
   *  \return The n-th son or NULL. */
 
18789
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
18790
  /** Replace a son.
 
18791
   *  \param old_son The son to replace.
 
18792
   *  \param new_son The new son. */
 
18793
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
18794
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
18795
  }
 
18796
  /** Get the type name. */
 
18797
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[0]; }
 
18798
  /** Get the initializer. */
 
18799
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
18800
  /** Get the semantic information about the created object. */
 
18801
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
18802
   private:
 
18803
  typedef CT_ConstructExpr CCExprResolveExpr;
 
18804
 
 
18805
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18806
 public :
 
18807
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18808
  typedef CT_ConstructExpr CExprResolveExpr;
 
18809
 
 
18810
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18811
 public :
 
18812
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18813
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
18814
  const char *__attr_name (unsigned i) const {
 
18815
    static const char *names[] = { "sons" }; return names[i];
 
18816
  }
 
18817
  const void *__attr (unsigned __i) const {
 
18818
    switch (__i) { case 0: return &sons; default: return 0; }
 
18819
  }
 
18820
#line 1546 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18821
};
 
18822
 
 
18823
/** \class CT_ThrowExpr CTree.h Puma/CTree.h
 
18824
 *  Tree node representing a throw expression.
 
18825
 *  Example: \code throw std::exception() \endcode */
 
18826
 
 
18827
#line 18828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18828
} // closed Puma
 
18829
class CCExprResolve;
 
18830
class CExprResolve;
 
18831
class WinIfExists;
 
18832
class WinImportHandler;
 
18833
class WinMacros;
 
18834
class WinAsm;
 
18835
class WinDeclSpecs;
 
18836
class WinMemberExplSpec;
 
18837
class WinTypeKeywords;
 
18838
class WinFriend;
 
18839
class ExtAC;
 
18840
class ExtACBuilderCoupling;
 
18841
class ExtACSyntaxCoupling;
 
18842
class ExtACTree;
 
18843
class ExtACKeywords;
 
18844
class ExtGnu;
 
18845
class PragmaOnceUnitState;
 
18846
class PragmaOnce;
 
18847
class CMatchSyntax;
 
18848
namespace Puma {
 
18849
 
 
18850
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18851
 
 
18852
#line 18853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18853
} // closed Puma
 
18854
 
 
18855
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18856
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18857
#include "CCExprResolveH.ah"
 
18858
#endif
 
18859
namespace Puma {
 
18860
 
 
18861
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18862
 
 
18863
#line 18864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18864
} // closed Puma
 
18865
 
 
18866
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18867
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18868
#include "CExprResolveH.ah"
 
18869
#endif
 
18870
namespace Puma {
 
18871
 
 
18872
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18873
class CT_ThrowExpr : public CT_Expression {
 
18874
#line 18875 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18875
  friend class ::CCExprResolve;
 
18876
  friend class ::CExprResolve;
 
18877
  friend class ::WinIfExists;
 
18878
  friend class ::WinImportHandler;
 
18879
  friend class ::WinMacros;
 
18880
  friend class ::WinAsm;
 
18881
  friend class ::WinDeclSpecs;
 
18882
  friend class ::WinMemberExplSpec;
 
18883
  friend class ::WinTypeKeywords;
 
18884
  friend class ::WinFriend;
 
18885
  friend class ::ExtAC;
 
18886
  friend class ::ExtACBuilderCoupling;
 
18887
  friend class ::ExtACSyntaxCoupling;
 
18888
  friend class ::ExtACTree;
 
18889
  friend class ::ExtACKeywords;
 
18890
  friend class ::ExtGnu;
 
18891
  friend class ::PragmaOnceUnitState;
 
18892
  friend class ::PragmaOnce;
 
18893
  friend class ::CMatchSyntax;
 
18894
 
 
18895
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18896
 
 
18897
  CTree *sons[2]; // throw, expr
 
18898
 
 
18899
public:
 
18900
  /** Constructor.
 
18901
   *  \param t The 'throw' keyword.
 
18902
   *  \param e The expression. */
 
18903
  CT_ThrowExpr (CTree *t, CTree *e = (CTree*)0) { AddSon (sons[0], t); AddSon (sons[1], e); }
 
18904
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18905
  static const char *NodeId ();
 
18906
  /** Get the name of the node. Can be compared with NodeId(). */
 
18907
  const char *NodeName () const { return NodeId (); }
 
18908
  /** Get the number of sons. */
 
18909
  int Sons () const { return CTree::Sons (sons, 2); }
 
18910
  /** Get the n-th son.
 
18911
   *  \param n The index of the son.
 
18912
   *  \return The n-th son or NULL. */
 
18913
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
18914
  /** Replace a son.
 
18915
   *  \param old_son The son to replace.
 
18916
   *  \param new_son The new son. */
 
18917
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
18918
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
18919
  }
 
18920
  /** Get the expression. */
 
18921
  CTree *Expr () const { return sons[1]; }
 
18922
   private:
 
18923
  typedef CT_ThrowExpr CCExprResolveExpr;
 
18924
 
 
18925
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18926
 public :
 
18927
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18928
  typedef CT_ThrowExpr CExprResolveExpr;
 
18929
 
 
18930
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18931
 public :
 
18932
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18933
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
18934
  const char *__attr_name (unsigned i) const {
 
18935
    static const char *names[] = { "sons" }; return names[i];
 
18936
  }
 
18937
  const void *__attr (unsigned __i) const {
 
18938
    switch (__i) { case 0: return &sons; default: return 0; }
 
18939
  }
 
18940
#line 1577 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18941
};
 
18942
 
 
18943
/** \class CT_IndexExpr CTree.h Puma/CTree.h
 
18944
 *  Tree node representing an index expression. 
 
18945
 *  Example: \code a[1] \endcode */
 
18946
 
 
18947
#line 18948 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18948
} // closed Puma
 
18949
class CCExprResolve;
 
18950
class CExprResolve;
 
18951
class WinIfExists;
 
18952
class WinImportHandler;
 
18953
class WinMacros;
 
18954
class WinAsm;
 
18955
class WinDeclSpecs;
 
18956
class WinMemberExplSpec;
 
18957
class WinTypeKeywords;
 
18958
class WinFriend;
 
18959
class ExtAC;
 
18960
class ExtACBuilderCoupling;
 
18961
class ExtACSyntaxCoupling;
 
18962
class ExtACTree;
 
18963
class ExtACKeywords;
 
18964
class ExtGnu;
 
18965
class PragmaOnceUnitState;
 
18966
class PragmaOnce;
 
18967
class CMatchSyntax;
 
18968
namespace Puma {
 
18969
 
 
18970
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18971
 
 
18972
#line 18973 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18973
} // closed Puma
 
18974
 
 
18975
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18976
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18977
#include "CCExprResolveH.ah"
 
18978
#endif
 
18979
namespace Puma {
 
18980
 
 
18981
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18982
 
 
18983
#line 18984 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18984
} // closed Puma
 
18985
 
 
18986
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18987
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18988
#include "CExprResolveH.ah"
 
18989
#endif
 
18990
namespace Puma {
 
18991
 
 
18992
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18993
class CT_IndexExpr : public CT_Call {
 
18994
#line 18995 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
18995
  friend class ::CCExprResolve;
 
18996
  friend class ::CExprResolve;
 
18997
  friend class ::WinIfExists;
 
18998
  friend class ::WinImportHandler;
 
18999
  friend class ::WinMacros;
 
19000
  friend class ::WinAsm;
 
19001
  friend class ::WinDeclSpecs;
 
19002
  friend class ::WinMemberExplSpec;
 
19003
  friend class ::WinTypeKeywords;
 
19004
  friend class ::WinFriend;
 
19005
  friend class ::ExtAC;
 
19006
  friend class ::ExtACBuilderCoupling;
 
19007
  friend class ::ExtACSyntaxCoupling;
 
19008
  friend class ::ExtACTree;
 
19009
  friend class ::ExtACKeywords;
 
19010
  friend class ::ExtGnu;
 
19011
  friend class ::PragmaOnceUnitState;
 
19012
  friend class ::PragmaOnce;
 
19013
  friend class ::CMatchSyntax;
 
19014
 
 
19015
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19016
 
 
19017
  CTree *sons[4]; // expr, open, index, close
 
19018
 
 
19019
public:
 
19020
  /** Constructor.
 
19021
   *  \param e The expression on which to invoke the index operator.
 
19022
   *  \param o Left parenthesis of the index expression.
 
19023
   *  \param i The index expression. 
 
19024
   *  \param c Right parenthesis of the index expression. */
 
19025
  CT_IndexExpr (CTree *e, CTree *o, CTree *i, CTree *c) {
 
19026
    AddSon (sons[0], e); AddSon (sons[1], o); 
 
19027
    AddSon (sons[2], i); AddSon (sons[3], c);
 
19028
  }
 
19029
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19030
  static const char *NodeId ();
 
19031
  /** Get the name of the node. Can be compared with NodeId(). */
 
19032
  const char *NodeName () const { return NodeId (); }
 
19033
  /** Get the number of sons. */
 
19034
  int Sons () const { return 4; }
 
19035
  /** Get the n-th son.
 
19036
   *  \param n The index of the son.
 
19037
   *  \return The n-th son or NULL. */
 
19038
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
19039
  /** Replace a son.
 
19040
   *  \param old_son The son to replace.
 
19041
   *  \param new_son The new son. */
 
19042
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19043
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
19044
  }
 
19045
   private:
 
19046
  typedef CT_IndexExpr CCExprResolveExpr;
 
19047
 
 
19048
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19049
 public :
 
19050
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19051
  typedef CT_IndexExpr CExprResolveExpr;
 
19052
 
 
19053
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19054
 public :
 
19055
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19056
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
19057
  const char *__attr_name (unsigned i) const {
 
19058
    static const char *names[] = { "sons" }; return names[i];
 
19059
  }
 
19060
  const void *__attr (unsigned __i) const {
 
19061
    switch (__i) { case 0: return &sons; default: return 0; }
 
19062
  }
 
19063
#line 1611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19064
};
 
19065
 
 
19066
/** \class CT_CallExpr CTree.h Puma/CTree.h
 
19067
 *  Tree node representing a function call expression.
 
19068
 *  Example: \code f(i) \endcode */
 
19069
 
 
19070
#line 19071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19071
} // closed Puma
 
19072
class CCExprResolve;
 
19073
class CExprResolve;
 
19074
class WinIfExists;
 
19075
class WinImportHandler;
 
19076
class WinMacros;
 
19077
class WinAsm;
 
19078
class WinDeclSpecs;
 
19079
class WinMemberExplSpec;
 
19080
class WinTypeKeywords;
 
19081
class WinFriend;
 
19082
class ExtAC;
 
19083
class ExtACBuilderCoupling;
 
19084
class ExtACSyntaxCoupling;
 
19085
class ExtACTree;
 
19086
class ExtACKeywords;
 
19087
class ExtGnu;
 
19088
class PragmaOnceUnitState;
 
19089
class PragmaOnce;
 
19090
class CMatchSyntax;
 
19091
namespace Puma {
 
19092
 
 
19093
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19094
 
 
19095
#line 19096 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19096
} // closed Puma
 
19097
 
 
19098
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19099
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19100
#include "CCExprResolveH.ah"
 
19101
#endif
 
19102
namespace Puma {
 
19103
 
 
19104
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19105
 
 
19106
#line 19107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19107
} // closed Puma
 
19108
 
 
19109
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19110
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19111
#include "CExprResolveH.ah"
 
19112
#endif
 
19113
namespace Puma {
 
19114
 
 
19115
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19116
class CT_CallExpr : public CT_Call {
 
19117
#line 19118 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19118
  friend class ::CCExprResolve;
 
19119
  friend class ::CExprResolve;
 
19120
  friend class ::WinIfExists;
 
19121
  friend class ::WinImportHandler;
 
19122
  friend class ::WinMacros;
 
19123
  friend class ::WinAsm;
 
19124
  friend class ::WinDeclSpecs;
 
19125
  friend class ::WinMemberExplSpec;
 
19126
  friend class ::WinTypeKeywords;
 
19127
  friend class ::WinFriend;
 
19128
  friend class ::ExtAC;
 
19129
  friend class ::ExtACBuilderCoupling;
 
19130
  friend class ::ExtACSyntaxCoupling;
 
19131
  friend class ::ExtACTree;
 
19132
  friend class ::ExtACKeywords;
 
19133
  friend class ::ExtGnu;
 
19134
  friend class ::PragmaOnceUnitState;
 
19135
  friend class ::PragmaOnce;
 
19136
  friend class ::CMatchSyntax;
 
19137
 
 
19138
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19139
 
 
19140
  CTree *sons[2]; // expr, args
 
19141
 
 
19142
public:
 
19143
  /** Constructor.
 
19144
   *  \param e The expression on which the call is invoked. */
 
19145
  CT_CallExpr (CTree *e) { AddSon (sons[0], e); AddSon (sons[1], 0); }
 
19146
  /** Constructor.
 
19147
   *  \param e The expression on which the call is invoked.
 
19148
   *  \param l The argument list of the call. */
 
19149
  CT_CallExpr (CTree *e, CTree *l) { AddSon (sons[0], e); AddSon (sons[1], l); }
 
19150
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19151
  static const char *NodeId ();
 
19152
  /** Get the name of the node. Can be compared with NodeId(). */
 
19153
  const char *NodeName () const { return NodeId (); }
 
19154
  /** Get the number of sons. */
 
19155
  int Sons () const { return CTree::Sons (sons, 2); }
 
19156
  /** Get the n-th son.
 
19157
   *  \param n The index of the son.
 
19158
   *  \return The n-th son or NULL. */
 
19159
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
19160
  /** Replace a son.
 
19161
   *  \param old_son The son to replace.
 
19162
   *  \param new_son The new son. */
 
19163
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19164
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
19165
  }
 
19166
  CTree *Expr () const { return sons[0]; }
 
19167
  CT_ExprList *Arguments () const { return (CT_ExprList*)sons[1]; }
 
19168
   private:
 
19169
  typedef CT_CallExpr CCExprResolveExpr;
 
19170
 
 
19171
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19172
 public :
 
19173
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19174
  typedef CT_CallExpr CExprResolveExpr;
 
19175
 
 
19176
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19177
 public :
 
19178
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19179
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
19180
  const char *__attr_name (unsigned i) const {
 
19181
    static const char *names[] = { "sons" }; return names[i];
 
19182
  }
 
19183
  const void *__attr (unsigned __i) const {
 
19184
    switch (__i) { case 0: return &sons; default: return 0; }
 
19185
  }
 
19186
#line 1645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19187
};
 
19188
 
 
19189
/** \class CT_CastExpr CTree.h Puma/CTree.h
 
19190
 *  Tree node representing a cast expression.
 
19191
 *  Example: \code (int)a \endcode */
 
19192
 
 
19193
#line 19194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19194
} // closed Puma
 
19195
class CCExprResolve;
 
19196
class CExprResolve;
 
19197
class WinIfExists;
 
19198
class WinImportHandler;
 
19199
class WinMacros;
 
19200
class WinAsm;
 
19201
class WinDeclSpecs;
 
19202
class WinMemberExplSpec;
 
19203
class WinTypeKeywords;
 
19204
class WinFriend;
 
19205
class ExtAC;
 
19206
class ExtACBuilderCoupling;
 
19207
class ExtACSyntaxCoupling;
 
19208
class ExtACTree;
 
19209
class ExtACKeywords;
 
19210
class ExtGnu;
 
19211
class PragmaOnceUnitState;
 
19212
class PragmaOnce;
 
19213
class CMatchSyntax;
 
19214
namespace Puma {
 
19215
 
 
19216
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19217
 
 
19218
#line 19219 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19219
} // closed Puma
 
19220
 
 
19221
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19222
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19223
#include "CCExprResolveH.ah"
 
19224
#endif
 
19225
namespace Puma {
 
19226
 
 
19227
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19228
 
 
19229
#line 19230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19230
} // closed Puma
 
19231
 
 
19232
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19233
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19234
#include "CExprResolveH.ah"
 
19235
#endif
 
19236
namespace Puma {
 
19237
 
 
19238
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19239
class CT_CastExpr : public CT_Expression {
 
19240
#line 19241 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19241
  friend class ::CCExprResolve;
 
19242
  friend class ::CExprResolve;
 
19243
  friend class ::WinIfExists;
 
19244
  friend class ::WinImportHandler;
 
19245
  friend class ::WinMacros;
 
19246
  friend class ::WinAsm;
 
19247
  friend class ::WinDeclSpecs;
 
19248
  friend class ::WinMemberExplSpec;
 
19249
  friend class ::WinTypeKeywords;
 
19250
  friend class ::WinFriend;
 
19251
  friend class ::ExtAC;
 
19252
  friend class ::ExtACBuilderCoupling;
 
19253
  friend class ::ExtACSyntaxCoupling;
 
19254
  friend class ::ExtACTree;
 
19255
  friend class ::ExtACKeywords;
 
19256
  friend class ::ExtGnu;
 
19257
  friend class ::PragmaOnceUnitState;
 
19258
  friend class ::PragmaOnce;
 
19259
  friend class ::CMatchSyntax;
 
19260
 
 
19261
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19262
 
 
19263
  CTree *sons[4]; // open, type, close, expr
 
19264
 
 
19265
public:
 
19266
  /** Constructor.
 
19267
   *  \param o Left parenthesis of the type name.
 
19268
   *  \param t The type to cast to.
 
19269
   *  \param c Right parenthesis of the type name. 
 
19270
   *  \param e The expression to cast. */
 
19271
  CT_CastExpr (CTree *o, CTree *t, CTree *c, CTree *e) {
 
19272
    AddSon (sons[0], o); AddSon (sons[1], t); 
 
19273
    AddSon (sons[2], c); AddSon (sons[3], e);
 
19274
  }
 
19275
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19276
  static const char *NodeId ();
 
19277
  /** Get the name of the node. Can be compared with NodeId(). */
 
19278
  const char *NodeName () const { return NodeId (); }
 
19279
  /** Get the number of sons. */
 
19280
  int Sons () const { return 4; }
 
19281
  /** Get the n-th son.
 
19282
   *  \param n The index of the son.
 
19283
   *  \return The n-th son or NULL. */
 
19284
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
19285
  /** Replace a son.
 
19286
   *  \param old_son The son to replace.
 
19287
   *  \param new_son The new son. */
 
19288
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19289
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
19290
  }
 
19291
  /** Get the casted expression. */
 
19292
  CTree *Expr () const { return sons[3]; }
 
19293
  /** Get the type to cast to. */
 
19294
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
19295
   private:
 
19296
  typedef CT_CastExpr CCExprResolveExpr;
 
19297
 
 
19298
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19299
 public :
 
19300
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19301
  typedef CT_CastExpr CExprResolveExpr;
 
19302
 
 
19303
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19304
 public :
 
19305
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19306
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
19307
  const char *__attr_name (unsigned i) const {
 
19308
    static const char *names[] = { "sons" }; return names[i];
 
19309
  }
 
19310
  const void *__attr (unsigned __i) const {
 
19311
    switch (__i) { case 0: return &sons; default: return 0; }
 
19312
  }
 
19313
#line 1683 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19314
};
 
19315
 
 
19316
/** \class CT_StaticCast CTree.h Puma/CTree.h
 
19317
 *  Tree node representing a static cast.
 
19318
 *  Example: \code static_cast<int>(a) \endcode */
 
19319
 
 
19320
#line 19321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19321
} // closed Puma
 
19322
class CCExprResolve;
 
19323
class CExprResolve;
 
19324
class WinIfExists;
 
19325
class WinImportHandler;
 
19326
class WinMacros;
 
19327
class WinAsm;
 
19328
class WinDeclSpecs;
 
19329
class WinMemberExplSpec;
 
19330
class WinTypeKeywords;
 
19331
class WinFriend;
 
19332
class ExtAC;
 
19333
class ExtACBuilderCoupling;
 
19334
class ExtACSyntaxCoupling;
 
19335
class ExtACTree;
 
19336
class ExtACKeywords;
 
19337
class ExtGnu;
 
19338
class PragmaOnceUnitState;
 
19339
class PragmaOnce;
 
19340
class CMatchSyntax;
 
19341
namespace Puma {
 
19342
 
 
19343
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19344
 
 
19345
#line 19346 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19346
} // closed Puma
 
19347
 
 
19348
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19349
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19350
#include "CCExprResolveH.ah"
 
19351
#endif
 
19352
namespace Puma {
 
19353
 
 
19354
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19355
 
 
19356
#line 19357 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19357
} // closed Puma
 
19358
 
 
19359
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19360
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19361
#include "CExprResolveH.ah"
 
19362
#endif
 
19363
namespace Puma {
 
19364
 
 
19365
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19366
class CT_StaticCast : public CT_Expression {
 
19367
#line 19368 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19368
  friend class ::CCExprResolve;
 
19369
  friend class ::CExprResolve;
 
19370
  friend class ::WinIfExists;
 
19371
  friend class ::WinImportHandler;
 
19372
  friend class ::WinMacros;
 
19373
  friend class ::WinAsm;
 
19374
  friend class ::WinDeclSpecs;
 
19375
  friend class ::WinMemberExplSpec;
 
19376
  friend class ::WinTypeKeywords;
 
19377
  friend class ::WinFriend;
 
19378
  friend class ::ExtAC;
 
19379
  friend class ::ExtACBuilderCoupling;
 
19380
  friend class ::ExtACSyntaxCoupling;
 
19381
  friend class ::ExtACTree;
 
19382
  friend class ::ExtACKeywords;
 
19383
  friend class ::ExtGnu;
 
19384
  friend class ::PragmaOnceUnitState;
 
19385
  friend class ::PragmaOnce;
 
19386
  friend class ::CMatchSyntax;
 
19387
 
 
19388
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19389
 
 
19390
  CTree *sons[5]; // cast, open, type, close, expr
 
19391
 
 
19392
public:
 
19393
  /** Constructor.
 
19394
   *  \param cst The cast operator, i.e. 'static_cast'.
 
19395
   *  \param o Left arrow bracket of the type name.
 
19396
   *  \param t The type to cast to.
 
19397
   *  \param c Right array bracket of the type name.
 
19398
   *  \param e The expression to cast. */
 
19399
  CT_StaticCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) {
 
19400
    AddSon (sons[0], cst); AddSon (sons[1], o); AddSon (sons[2], t); 
 
19401
    AddSon (sons[3], c); AddSon (sons[4], e);
 
19402
  }
 
19403
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19404
  static const char *NodeId ();
 
19405
  /** Get the name of the node. Can be compared with NodeId(). */
 
19406
  const char *NodeName () const { return NodeId (); }
 
19407
  /** Get the number of sons. */
 
19408
  int Sons () const { return 5; }
 
19409
  /** Get the n-th son.
 
19410
   *  \param n The index of the son.
 
19411
   *  \return The n-th son or NULL. */
 
19412
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
19413
  /** Replace a son.
 
19414
   *  \param old_son The son to replace.
 
19415
   *  \param new_son The new son. */
 
19416
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19417
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
19418
  }
 
19419
  /** Get the casted expression. */
 
19420
  CTree *Expr () const { return sons[4]; }
 
19421
  /** Get the type to cast to. */
 
19422
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
19423
   private:
 
19424
  typedef CT_StaticCast CCExprResolveExpr;
 
19425
 
 
19426
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19427
 public :
 
19428
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19429
  typedef CT_StaticCast CExprResolveExpr;
 
19430
 
 
19431
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19432
 public :
 
19433
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19434
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
19435
  const char *__attr_name (unsigned i) const {
 
19436
    static const char *names[] = { "sons" }; return names[i];
 
19437
  }
 
19438
  const void *__attr (unsigned __i) const {
 
19439
    switch (__i) { case 0: return &sons; default: return 0; }
 
19440
  }
 
19441
#line 1722 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19442
};
 
19443
 
 
19444
/** \class CT_ConstCast CTree.h Puma/CTree.h
 
19445
 *  Tree node representing a const cast.
 
19446
 *  Example: \code const_cast<int>(a) \endcode */
 
19447
 
 
19448
#line 19449 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19449
} // closed Puma
 
19450
class CCExprResolve;
 
19451
class CExprResolve;
 
19452
class WinIfExists;
 
19453
class WinImportHandler;
 
19454
class WinMacros;
 
19455
class WinAsm;
 
19456
class WinDeclSpecs;
 
19457
class WinMemberExplSpec;
 
19458
class WinTypeKeywords;
 
19459
class WinFriend;
 
19460
class ExtAC;
 
19461
class ExtACBuilderCoupling;
 
19462
class ExtACSyntaxCoupling;
 
19463
class ExtACTree;
 
19464
class ExtACKeywords;
 
19465
class ExtGnu;
 
19466
class PragmaOnceUnitState;
 
19467
class PragmaOnce;
 
19468
class CMatchSyntax;
 
19469
namespace Puma {
 
19470
 
 
19471
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19472
 
 
19473
#line 19474 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19474
} // closed Puma
 
19475
 
 
19476
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19477
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19478
#include "CCExprResolveH.ah"
 
19479
#endif
 
19480
namespace Puma {
 
19481
 
 
19482
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19483
 
 
19484
#line 19485 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19485
} // closed Puma
 
19486
 
 
19487
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19488
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19489
#include "CExprResolveH.ah"
 
19490
#endif
 
19491
namespace Puma {
 
19492
 
 
19493
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19494
class CT_ConstCast : public CT_StaticCast {
 
19495
#line 19496 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19496
  friend class ::CCExprResolve;
 
19497
  friend class ::CExprResolve;
 
19498
  friend class ::WinIfExists;
 
19499
  friend class ::WinImportHandler;
 
19500
  friend class ::WinMacros;
 
19501
  friend class ::WinAsm;
 
19502
  friend class ::WinDeclSpecs;
 
19503
  friend class ::WinMemberExplSpec;
 
19504
  friend class ::WinTypeKeywords;
 
19505
  friend class ::WinFriend;
 
19506
  friend class ::ExtAC;
 
19507
  friend class ::ExtACBuilderCoupling;
 
19508
  friend class ::ExtACSyntaxCoupling;
 
19509
  friend class ::ExtACTree;
 
19510
  friend class ::ExtACKeywords;
 
19511
  friend class ::ExtGnu;
 
19512
  friend class ::PragmaOnceUnitState;
 
19513
  friend class ::PragmaOnce;
 
19514
  friend class ::CMatchSyntax;
 
19515
 
 
19516
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19517
 
 
19518
public:
 
19519
  /** Constructor.
 
19520
   *  \param cst The cast operator, i.e. 'const_cast'.
 
19521
   *  \param o Left arrow bracket of the type name.
 
19522
   *  \param t The type to cast to.
 
19523
   *  \param c Right array bracket of the type name.
 
19524
   *  \param e The expression to cast. */
 
19525
  CT_ConstCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
19526
    CT_StaticCast (cst, o, t, c, e) {}
 
19527
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19528
  static const char *NodeId ();
 
19529
  /** Get the name of the node. Can be compared with NodeId(). */
 
19530
  const char *NodeName () const { return NodeId (); }
 
19531
   private:
 
19532
  typedef CT_ConstCast CCExprResolveExpr;
 
19533
 
 
19534
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19535
 public :
 
19536
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19537
  typedef CT_ConstCast CExprResolveExpr;
 
19538
 
 
19539
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19540
 public :
 
19541
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19542
  typedef AC::TLE __AttrTypes;
 
19543
  const char *__attr_name (unsigned i) const { return 0; }
 
19544
  const void *__attr (unsigned __i) const { return 0; }
 
19545
#line 1741 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19546
};
 
19547
 
 
19548
/** \class CT_ReintCast CTree.h Puma/CTree.h
 
19549
 *  Tree node representing a reinterpret cast.
 
19550
 *  Example: \code reinterpret_cast<int>(a) \endcode */
 
19551
 
 
19552
#line 19553 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19553
} // closed Puma
 
19554
class CCExprResolve;
 
19555
class CExprResolve;
 
19556
class WinIfExists;
 
19557
class WinImportHandler;
 
19558
class WinMacros;
 
19559
class WinAsm;
 
19560
class WinDeclSpecs;
 
19561
class WinMemberExplSpec;
 
19562
class WinTypeKeywords;
 
19563
class WinFriend;
 
19564
class ExtAC;
 
19565
class ExtACBuilderCoupling;
 
19566
class ExtACSyntaxCoupling;
 
19567
class ExtACTree;
 
19568
class ExtACKeywords;
 
19569
class ExtGnu;
 
19570
class PragmaOnceUnitState;
 
19571
class PragmaOnce;
 
19572
class CMatchSyntax;
 
19573
namespace Puma {
 
19574
 
 
19575
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19576
 
 
19577
#line 19578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19578
} // closed Puma
 
19579
 
 
19580
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19581
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19582
#include "CCExprResolveH.ah"
 
19583
#endif
 
19584
namespace Puma {
 
19585
 
 
19586
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19587
 
 
19588
#line 19589 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19589
} // closed Puma
 
19590
 
 
19591
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19592
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19593
#include "CExprResolveH.ah"
 
19594
#endif
 
19595
namespace Puma {
 
19596
 
 
19597
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19598
class CT_ReintCast : public CT_StaticCast {
 
19599
#line 19600 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19600
  friend class ::CCExprResolve;
 
19601
  friend class ::CExprResolve;
 
19602
  friend class ::WinIfExists;
 
19603
  friend class ::WinImportHandler;
 
19604
  friend class ::WinMacros;
 
19605
  friend class ::WinAsm;
 
19606
  friend class ::WinDeclSpecs;
 
19607
  friend class ::WinMemberExplSpec;
 
19608
  friend class ::WinTypeKeywords;
 
19609
  friend class ::WinFriend;
 
19610
  friend class ::ExtAC;
 
19611
  friend class ::ExtACBuilderCoupling;
 
19612
  friend class ::ExtACSyntaxCoupling;
 
19613
  friend class ::ExtACTree;
 
19614
  friend class ::ExtACKeywords;
 
19615
  friend class ::ExtGnu;
 
19616
  friend class ::PragmaOnceUnitState;
 
19617
  friend class ::PragmaOnce;
 
19618
  friend class ::CMatchSyntax;
 
19619
 
 
19620
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19621
 
 
19622
public:
 
19623
  /** Constructor.
 
19624
   *  \param cst The cast operator, i.e. 'reinterpret_cast'.
 
19625
   *  \param o Left arrow bracket of the type name.
 
19626
   *  \param t The type to cast to.
 
19627
   *  \param c Right array bracket of the type name.
 
19628
   *  \param e The expression to cast. */
 
19629
  CT_ReintCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
19630
    CT_StaticCast (cst, o, t, c, e) {}
 
19631
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19632
  static const char *NodeId ();
 
19633
  /** Get the name of the node. Can be compared with NodeId(). */
 
19634
  const char *NodeName () const { return NodeId (); }
 
19635
   private:
 
19636
  typedef CT_ReintCast CCExprResolveExpr;
 
19637
 
 
19638
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19639
 public :
 
19640
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19641
  typedef CT_ReintCast CExprResolveExpr;
 
19642
 
 
19643
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19644
 public :
 
19645
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19646
  typedef AC::TLE __AttrTypes;
 
19647
  const char *__attr_name (unsigned i) const { return 0; }
 
19648
  const void *__attr (unsigned __i) const { return 0; }
 
19649
#line 1760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19650
};
 
19651
 
 
19652
/** \class CT_DynamicCast CTree.h Puma/CTree.h
 
19653
 *  Tree node representing a dynamic cast.
 
19654
 *  Example: \code dynamic_cast<int>(a) \endcode */
 
19655
 
 
19656
#line 19657 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19657
} // closed Puma
 
19658
class CCExprResolve;
 
19659
class CExprResolve;
 
19660
class WinIfExists;
 
19661
class WinImportHandler;
 
19662
class WinMacros;
 
19663
class WinAsm;
 
19664
class WinDeclSpecs;
 
19665
class WinMemberExplSpec;
 
19666
class WinTypeKeywords;
 
19667
class WinFriend;
 
19668
class ExtAC;
 
19669
class ExtACBuilderCoupling;
 
19670
class ExtACSyntaxCoupling;
 
19671
class ExtACTree;
 
19672
class ExtACKeywords;
 
19673
class ExtGnu;
 
19674
class PragmaOnceUnitState;
 
19675
class PragmaOnce;
 
19676
class CMatchSyntax;
 
19677
namespace Puma {
 
19678
 
 
19679
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19680
 
 
19681
#line 19682 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19682
} // closed Puma
 
19683
 
 
19684
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19685
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19686
#include "CCExprResolveH.ah"
 
19687
#endif
 
19688
namespace Puma {
 
19689
 
 
19690
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19691
 
 
19692
#line 19693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19693
} // closed Puma
 
19694
 
 
19695
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19696
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19697
#include "CExprResolveH.ah"
 
19698
#endif
 
19699
namespace Puma {
 
19700
 
 
19701
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19702
class CT_DynamicCast : public CT_StaticCast {
 
19703
#line 19704 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19704
  friend class ::CCExprResolve;
 
19705
  friend class ::CExprResolve;
 
19706
  friend class ::WinIfExists;
 
19707
  friend class ::WinImportHandler;
 
19708
  friend class ::WinMacros;
 
19709
  friend class ::WinAsm;
 
19710
  friend class ::WinDeclSpecs;
 
19711
  friend class ::WinMemberExplSpec;
 
19712
  friend class ::WinTypeKeywords;
 
19713
  friend class ::WinFriend;
 
19714
  friend class ::ExtAC;
 
19715
  friend class ::ExtACBuilderCoupling;
 
19716
  friend class ::ExtACSyntaxCoupling;
 
19717
  friend class ::ExtACTree;
 
19718
  friend class ::ExtACKeywords;
 
19719
  friend class ::ExtGnu;
 
19720
  friend class ::PragmaOnceUnitState;
 
19721
  friend class ::PragmaOnce;
 
19722
  friend class ::CMatchSyntax;
 
19723
 
 
19724
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19725
 
 
19726
public:
 
19727
  /** Constructor.
 
19728
   *  \param cst The cast operator, i.e. 'dynamic_cast'.
 
19729
   *  \param o Left arrow bracket of the type name.
 
19730
   *  \param t The type to cast to.
 
19731
   *  \param c Right array bracket of the type name.
 
19732
   *  \param e The expression to cast. */
 
19733
  CT_DynamicCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
19734
    CT_StaticCast (cst, o, t, c, e) {}
 
19735
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19736
  static const char *NodeId ();
 
19737
  /** Get the name of the node. Can be compared with NodeId(). */
 
19738
  const char *NodeName () const { return NodeId (); }
 
19739
   private:
 
19740
  typedef CT_DynamicCast CCExprResolveExpr;
 
19741
 
 
19742
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19743
 public :
 
19744
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19745
  typedef CT_DynamicCast CExprResolveExpr;
 
19746
 
 
19747
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19748
 public :
 
19749
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19750
  typedef AC::TLE __AttrTypes;
 
19751
  const char *__attr_name (unsigned i) const { return 0; }
 
19752
  const void *__attr (unsigned __i) const { return 0; }
 
19753
#line 1779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19754
};
 
19755
 
 
19756
/** \class CT_ImplicitCast CTree.h Puma/CTree.h
 
19757
 *  Tree node representing an implicit cast.
 
19758
 *  Example: 
 
19759
 *  \code 
 
19760
 * int i = 1.2;  // implicit cast from float to int 
 
19761
 *  \endcode */
 
19762
 
 
19763
#line 19764 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19764
} // closed Puma
 
19765
class CCExprResolve;
 
19766
class CExprResolve;
 
19767
class WinIfExists;
 
19768
class WinImportHandler;
 
19769
class WinMacros;
 
19770
class WinAsm;
 
19771
class WinDeclSpecs;
 
19772
class WinMemberExplSpec;
 
19773
class WinTypeKeywords;
 
19774
class WinFriend;
 
19775
class ExtAC;
 
19776
class ExtACBuilderCoupling;
 
19777
class ExtACSyntaxCoupling;
 
19778
class ExtACTree;
 
19779
class ExtACKeywords;
 
19780
class ExtGnu;
 
19781
class PragmaOnceUnitState;
 
19782
class PragmaOnce;
 
19783
class CMatchSyntax;
 
19784
namespace Puma {
 
19785
 
 
19786
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19787
 
 
19788
#line 19789 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19789
} // closed Puma
 
19790
 
 
19791
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19792
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19793
#include "CCExprResolveH.ah"
 
19794
#endif
 
19795
namespace Puma {
 
19796
 
 
19797
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19798
 
 
19799
#line 19800 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19800
} // closed Puma
 
19801
 
 
19802
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19803
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19804
#include "CExprResolveH.ah"
 
19805
#endif
 
19806
namespace Puma {
 
19807
 
 
19808
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19809
class CT_ImplicitCast : public CT_Expression {
 
19810
#line 19811 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19811
  friend class ::CCExprResolve;
 
19812
  friend class ::CExprResolve;
 
19813
  friend class ::WinIfExists;
 
19814
  friend class ::WinImportHandler;
 
19815
  friend class ::WinMacros;
 
19816
  friend class ::WinAsm;
 
19817
  friend class ::WinDeclSpecs;
 
19818
  friend class ::WinMemberExplSpec;
 
19819
  friend class ::WinTypeKeywords;
 
19820
  friend class ::WinFriend;
 
19821
  friend class ::ExtAC;
 
19822
  friend class ::ExtACBuilderCoupling;
 
19823
  friend class ::ExtACSyntaxCoupling;
 
19824
  friend class ::ExtACTree;
 
19825
  friend class ::ExtACKeywords;
 
19826
  friend class ::ExtGnu;
 
19827
  friend class ::PragmaOnceUnitState;
 
19828
  friend class ::PragmaOnce;
 
19829
  friend class ::CMatchSyntax;
 
19830
 
 
19831
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19832
 
 
19833
  CTree *_expr; // casted expression
 
19834
 
 
19835
public:
 
19836
  /** Constructor.
 
19837
   *  \param e The expression that is implicitely casted. */
 
19838
  CT_ImplicitCast (CTree *e) { AddSon (_expr, e); }
 
19839
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19840
  static const char *NodeId ();
 
19841
  /** Get the name of the node. Can be compared with NodeId(). */
 
19842
  const char *NodeName () const { return NodeId (); }
 
19843
  /** Get the number of sons. */
 
19844
  int Sons () const { return 1; }
 
19845
  /** Get the n-th son.
 
19846
   *  \param n The index of the son.
 
19847
   *  \return The n-th son or NULL. */
 
19848
  CTree *Son (int n) const { return n == 0 ? _expr : (CTree*)0; }
 
19849
  /** Get the casted expression. */
 
19850
  CTree *Expr () const { return _expr; }
 
19851
  /** Replace a son.
 
19852
   *  \param old_son The son to replace.
 
19853
   *  \param new_son The new son. */
 
19854
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
19855
   { CTree::ReplaceSon (_expr, old_son, new_son); }
 
19856
   private:
 
19857
  typedef CT_ImplicitCast CCExprResolveExpr;
 
19858
 
 
19859
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19860
 public :
 
19861
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19862
  typedef CT_ImplicitCast CExprResolveExpr;
 
19863
 
 
19864
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19865
 public :
 
19866
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19867
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
19868
  const char *__attr_name (unsigned i) const {
 
19869
    static const char *names[] = { "_expr" }; return names[i];
 
19870
  }
 
19871
  const void *__attr (unsigned __i) const {
 
19872
    switch (__i) { case 0: return &_expr; default: return 0; }
 
19873
  }
 
19874
#line 1811 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19875
};
 
19876
 
 
19877
/** \class CT_TypeidExpr CTree.h Puma/CTree.h
 
19878
 *  Tree node representing a typeid expression.
 
19879
 *  Example: \code typeid(X) \endcode */
 
19880
 
 
19881
#line 19882 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19882
} // closed Puma
 
19883
class CCExprResolve;
 
19884
class CExprResolve;
 
19885
class WinIfExists;
 
19886
class WinImportHandler;
 
19887
class WinMacros;
 
19888
class WinAsm;
 
19889
class WinDeclSpecs;
 
19890
class WinMemberExplSpec;
 
19891
class WinTypeKeywords;
 
19892
class WinFriend;
 
19893
class ExtAC;
 
19894
class ExtACBuilderCoupling;
 
19895
class ExtACSyntaxCoupling;
 
19896
class ExtACTree;
 
19897
class ExtACKeywords;
 
19898
class ExtGnu;
 
19899
class PragmaOnceUnitState;
 
19900
class PragmaOnce;
 
19901
class CMatchSyntax;
 
19902
namespace Puma {
 
19903
 
 
19904
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19905
 
 
19906
#line 19907 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19907
} // closed Puma
 
19908
 
 
19909
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19910
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19911
#include "CCExprResolveH.ah"
 
19912
#endif
 
19913
namespace Puma {
 
19914
 
 
19915
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19916
 
 
19917
#line 19918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19918
} // closed Puma
 
19919
 
 
19920
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19921
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19922
#include "CExprResolveH.ah"
 
19923
#endif
 
19924
namespace Puma {
 
19925
 
 
19926
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19927
class CT_TypeidExpr : public CT_Expression {
 
19928
#line 19929 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
19929
  friend class ::CCExprResolve;
 
19930
  friend class ::CExprResolve;
 
19931
  friend class ::WinIfExists;
 
19932
  friend class ::WinImportHandler;
 
19933
  friend class ::WinMacros;
 
19934
  friend class ::WinAsm;
 
19935
  friend class ::WinDeclSpecs;
 
19936
  friend class ::WinMemberExplSpec;
 
19937
  friend class ::WinTypeKeywords;
 
19938
  friend class ::WinFriend;
 
19939
  friend class ::ExtAC;
 
19940
  friend class ::ExtACBuilderCoupling;
 
19941
  friend class ::ExtACSyntaxCoupling;
 
19942
  friend class ::ExtACTree;
 
19943
  friend class ::ExtACKeywords;
 
19944
  friend class ::ExtGnu;
 
19945
  friend class ::PragmaOnceUnitState;
 
19946
  friend class ::PragmaOnce;
 
19947
  friend class ::CMatchSyntax;
 
19948
 
 
19949
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19950
 
 
19951
  CTree *sons[4]; // typeid, open, type_id/expr, close
 
19952
 
 
19953
public:
 
19954
  /** Constructor.
 
19955
   *  \param tid The 'typeid' operator.
 
19956
   *  \param o The left parenthesis of the type name or expression.
 
19957
   *  \param e The expression or type name for which to get the type identifier.
 
19958
   *  \param c The right parenthesis of the type name or expression. */
 
19959
  CT_TypeidExpr (CTree *tid, CTree *o, CTree *e, CTree *c) {
 
19960
    AddSon (sons[0], tid); AddSon (sons[1], o); 
 
19961
    AddSon (sons[2], e); AddSon (sons[3], c);
 
19962
  }
 
19963
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19964
  static const char *NodeId ();
 
19965
  /** Get the name of the node. Can be compared with NodeId(). */
 
19966
  const char *NodeName () const { return NodeId (); }
 
19967
  /** Get the number of sons. */
 
19968
  int Sons () const { return 4; }
 
19969
  /** Get the n-th son.
 
19970
   *  \param n The index of the son.
 
19971
   *  \return The n-th son or NULL. */
 
19972
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
19973
  /** Replace a son.
 
19974
   *  \param old_son The son to replace.
 
19975
   *  \param new_son The new son. */
 
19976
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19977
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
19978
  }
 
19979
  /** Get the typeid argument, i.e. the expression or type name for
 
19980
   *  which to get the type identifier. */
 
19981
  CTree *Arg () const { return sons[2]; }
 
19982
   private:
 
19983
  typedef CT_TypeidExpr CCExprResolveExpr;
 
19984
 
 
19985
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19986
 public :
 
19987
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19988
  typedef CT_TypeidExpr CExprResolveExpr;
 
19989
 
 
19990
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19991
 public :
 
19992
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19993
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
19994
  const char *__attr_name (unsigned i) const {
 
19995
    static const char *names[] = { "sons" }; return names[i];
 
19996
  }
 
19997
  const void *__attr (unsigned __i) const {
 
19998
    switch (__i) { case 0: return &sons; default: return 0; }
 
19999
  }
 
20000
#line 1848 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20001
};
 
20002
 
 
20003
/** \class CT_SizeofExpr CTree.h Puma/CTree.h
 
20004
 *  Tree node representing a sizeof expression.
 
20005
 *  Example: \code sizeof(int*) \endcode */
 
20006
 
 
20007
#line 20008 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20008
} // closed Puma
 
20009
class CCExprResolve;
 
20010
class CExprResolve;
 
20011
class WinIfExists;
 
20012
class WinImportHandler;
 
20013
class WinMacros;
 
20014
class WinAsm;
 
20015
class WinDeclSpecs;
 
20016
class WinMemberExplSpec;
 
20017
class WinTypeKeywords;
 
20018
class WinFriend;
 
20019
class ExtAC;
 
20020
class ExtACBuilderCoupling;
 
20021
class ExtACSyntaxCoupling;
 
20022
class ExtACTree;
 
20023
class ExtACKeywords;
 
20024
class ExtGnu;
 
20025
class PragmaOnceUnitState;
 
20026
class PragmaOnce;
 
20027
class CMatchSyntax;
 
20028
namespace Puma {
 
20029
 
 
20030
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20031
 
 
20032
#line 20033 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20033
} // closed Puma
 
20034
 
 
20035
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20036
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20037
#include "CCExprResolveH.ah"
 
20038
#endif
 
20039
namespace Puma {
 
20040
 
 
20041
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20042
 
 
20043
#line 20044 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20044
} // closed Puma
 
20045
 
 
20046
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20047
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20048
#include "CExprResolveH.ah"
 
20049
#endif
 
20050
namespace Puma {
 
20051
 
 
20052
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20053
class CT_SizeofExpr : public CT_Expression {
 
20054
#line 20055 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20055
  friend class ::CCExprResolve;
 
20056
  friend class ::CExprResolve;
 
20057
  friend class ::WinIfExists;
 
20058
  friend class ::WinImportHandler;
 
20059
  friend class ::WinMacros;
 
20060
  friend class ::WinAsm;
 
20061
  friend class ::WinDeclSpecs;
 
20062
  friend class ::WinMemberExplSpec;
 
20063
  friend class ::WinTypeKeywords;
 
20064
  friend class ::WinFriend;
 
20065
  friend class ::ExtAC;
 
20066
  friend class ::ExtACBuilderCoupling;
 
20067
  friend class ::ExtACSyntaxCoupling;
 
20068
  friend class ::ExtACTree;
 
20069
  friend class ::ExtACKeywords;
 
20070
  friend class ::ExtGnu;
 
20071
  friend class ::PragmaOnceUnitState;
 
20072
  friend class ::PragmaOnce;
 
20073
  friend class ::CMatchSyntax;
 
20074
 
 
20075
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20076
 
 
20077
  CTree *sons[5]; // key, open, type, close, expr
 
20078
 
 
20079
public:
 
20080
  /** Constructor.
 
20081
   *  \param k The 'sizeof' keyword.
 
20082
   *  \param o Left parenthesis around the type name.
 
20083
   *  \param t The type from which to get the size.
 
20084
   *  \param c Right parenthesis around the type name. */
 
20085
  CT_SizeofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
20086
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
20087
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
20088
  }
 
20089
  /** Constructor.
 
20090
   *  \param k The 'sizeof' keyword.
 
20091
   *  \param e The expression from which to get the size. */
 
20092
  CT_SizeofExpr (CTree *k, CTree *e) {
 
20093
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
20094
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
20095
  }
 
20096
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20097
  static const char *NodeId ();
 
20098
  /** Get the name of the node. Can be compared with NodeId(). */
 
20099
  const char *NodeName () const { return NodeId (); }
 
20100
  /** Get the number of sons. */
 
20101
  int Sons () const { return CTree::Sons (sons, 5); }
 
20102
  /** Get the n-th son.
 
20103
   *  \param n The index of the son.
 
20104
   *  \return The n-th son or NULL. */
 
20105
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
20106
  /** Replace a son.
 
20107
   *  \param old_son The son to replace.
 
20108
   *  \param new_son The new son. */
 
20109
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20110
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
20111
  }
 
20112
  /** Get the expression. */
 
20113
  CTree *Expr () const { return sons[4]; }
 
20114
  /** Get the type name. */
 
20115
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
20116
   private:
 
20117
  typedef CT_SizeofExpr CCExprResolveExpr;
 
20118
 
 
20119
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20120
 public :
 
20121
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20122
  typedef CT_SizeofExpr CExprResolveExpr;
 
20123
 
 
20124
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20125
 public :
 
20126
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20127
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
20128
  const char *__attr_name (unsigned i) const {
 
20129
    static const char *names[] = { "sons" }; return names[i];
 
20130
  }
 
20131
  const void *__attr (unsigned __i) const {
 
20132
    switch (__i) { case 0: return &sons; default: return 0; }
 
20133
  }
 
20134
#line 1893 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20135
};
 
20136
 
 
20137
/** \class CT_IndexDesignator CTree.h Puma/CTree.h
 
20138
 *  Tree node representing an index designator.
 
20139
 *  Example: \code [1] \endcode */
 
20140
 
 
20141
#line 20142 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20142
} // closed Puma
 
20143
class CCExprResolve;
 
20144
class CExprResolve;
 
20145
class WinIfExists;
 
20146
class WinImportHandler;
 
20147
class WinMacros;
 
20148
class WinAsm;
 
20149
class WinDeclSpecs;
 
20150
class WinMemberExplSpec;
 
20151
class WinTypeKeywords;
 
20152
class WinFriend;
 
20153
class ExtAC;
 
20154
class ExtACBuilderCoupling;
 
20155
class ExtACSyntaxCoupling;
 
20156
class ExtACTree;
 
20157
class ExtACKeywords;
 
20158
class ExtGnu;
 
20159
class PragmaOnceUnitState;
 
20160
class PragmaOnce;
 
20161
class CMatchSyntax;
 
20162
namespace Puma {
 
20163
 
 
20164
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20165
 
 
20166
#line 20167 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20167
} // closed Puma
 
20168
 
 
20169
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20170
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20171
#include "CCExprResolveH.ah"
 
20172
#endif
 
20173
namespace Puma {
 
20174
 
 
20175
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20176
 
 
20177
#line 20178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20178
} // closed Puma
 
20179
 
 
20180
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20181
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20182
#include "CExprResolveH.ah"
 
20183
#endif
 
20184
namespace Puma {
 
20185
 
 
20186
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20187
class CT_IndexDesignator : public CT_Expression {
 
20188
#line 20189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20189
  friend class ::CCExprResolve;
 
20190
  friend class ::CExprResolve;
 
20191
  friend class ::WinIfExists;
 
20192
  friend class ::WinImportHandler;
 
20193
  friend class ::WinMacros;
 
20194
  friend class ::WinAsm;
 
20195
  friend class ::WinDeclSpecs;
 
20196
  friend class ::WinMemberExplSpec;
 
20197
  friend class ::WinTypeKeywords;
 
20198
  friend class ::WinFriend;
 
20199
  friend class ::ExtAC;
 
20200
  friend class ::ExtACBuilderCoupling;
 
20201
  friend class ::ExtACSyntaxCoupling;
 
20202
  friend class ::ExtACTree;
 
20203
  friend class ::ExtACKeywords;
 
20204
  friend class ::ExtGnu;
 
20205
  friend class ::PragmaOnceUnitState;
 
20206
  friend class ::PragmaOnce;
 
20207
  friend class ::CMatchSyntax;
 
20208
 
 
20209
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20210
 
 
20211
  CTree *sons[3]; // open, index, close
 
20212
 
 
20213
public:
 
20214
  /** Constructor.
 
20215
   *  \param o Left bracket of the index designator.
 
20216
   *  \param i The index expression.
 
20217
   *  \param c Right bracket of the index designator. */
 
20218
  CT_IndexDesignator (CTree *o, CTree *i, CTree *c) {
 
20219
    AddSon (sons[0], o); AddSon (sons[1], i); AddSon (sons[2], c);
 
20220
  }
 
20221
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20222
  static const char *NodeId ();
 
20223
  /** Get the name of the node. Can be compared with NodeId(). */
 
20224
  const char *NodeName () const { return NodeId (); }
 
20225
  /** Get the number of sons. */
 
20226
  int Sons () const { return 3; }
 
20227
  /** Get the n-th son.
 
20228
   *  \param n The index of the son.
 
20229
   *  \return The n-th son or NULL. */
 
20230
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
20231
  /** Replace a son.
 
20232
   *  \param old_son The son to replace.
 
20233
   *  \param new_son The new son. */
 
20234
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20235
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
20236
  }
 
20237
   private:
 
20238
  typedef CT_IndexDesignator CCExprResolveExpr;
 
20239
 
 
20240
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20241
 public :
 
20242
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20243
  typedef CT_IndexDesignator CExprResolveExpr;
 
20244
 
 
20245
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20246
 public :
 
20247
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20248
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
20249
  const char *__attr_name (unsigned i) const {
 
20250
    static const char *names[] = { "sons" }; return names[i];
 
20251
  }
 
20252
  const void *__attr (unsigned __i) const {
 
20253
    switch (__i) { case 0: return &sons; default: return 0; }
 
20254
  }
 
20255
#line 1925 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20256
};
 
20257
 
 
20258
/** \class CT_MembDesignator CTree.h Puma/CTree.h
 
20259
 *  Tree node representing a member designator.
 
20260
 *  Example: \code .a \endcode */
 
20261
 
 
20262
#line 20263 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20263
} // closed Puma
 
20264
class CCExprResolve;
 
20265
class CExprResolve;
 
20266
class WinIfExists;
 
20267
class WinImportHandler;
 
20268
class WinMacros;
 
20269
class WinAsm;
 
20270
class WinDeclSpecs;
 
20271
class WinMemberExplSpec;
 
20272
class WinTypeKeywords;
 
20273
class WinFriend;
 
20274
class ExtAC;
 
20275
class ExtACBuilderCoupling;
 
20276
class ExtACSyntaxCoupling;
 
20277
class ExtACTree;
 
20278
class ExtACKeywords;
 
20279
class ExtGnu;
 
20280
class PragmaOnceUnitState;
 
20281
class PragmaOnce;
 
20282
class CMatchSyntax;
 
20283
namespace Puma {
 
20284
 
 
20285
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20286
 
 
20287
#line 20288 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20288
} // closed Puma
 
20289
 
 
20290
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20291
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20292
#include "CCExprResolveH.ah"
 
20293
#endif
 
20294
namespace Puma {
 
20295
 
 
20296
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20297
 
 
20298
#line 20299 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20299
} // closed Puma
 
20300
 
 
20301
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20302
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20303
#include "CExprResolveH.ah"
 
20304
#endif
 
20305
namespace Puma {
 
20306
 
 
20307
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20308
class CT_MembDesignator : public CT_Expression {
 
20309
#line 20310 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20310
  friend class ::CCExprResolve;
 
20311
  friend class ::CExprResolve;
 
20312
  friend class ::WinIfExists;
 
20313
  friend class ::WinImportHandler;
 
20314
  friend class ::WinMacros;
 
20315
  friend class ::WinAsm;
 
20316
  friend class ::WinDeclSpecs;
 
20317
  friend class ::WinMemberExplSpec;
 
20318
  friend class ::WinTypeKeywords;
 
20319
  friend class ::WinFriend;
 
20320
  friend class ::ExtAC;
 
20321
  friend class ::ExtACBuilderCoupling;
 
20322
  friend class ::ExtACSyntaxCoupling;
 
20323
  friend class ::ExtACTree;
 
20324
  friend class ::ExtACKeywords;
 
20325
  friend class ::ExtGnu;
 
20326
  friend class ::PragmaOnceUnitState;
 
20327
  friend class ::PragmaOnce;
 
20328
  friend class ::CMatchSyntax;
 
20329
 
 
20330
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20331
 
 
20332
  CTree *sons[2]; // dot, member
 
20333
 
 
20334
public:
 
20335
  /** Constructor.
 
20336
   *  \param d The dot before the member name.
 
20337
   *  \param m The member name. */
 
20338
  CT_MembDesignator (CTree *d, CTree *m) { AddSon (sons[0], d); AddSon (sons[1], m); }
 
20339
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20340
  static const char *NodeId ();
 
20341
  /** Get the name of the node. Can be compared with NodeId(). */
 
20342
  const char *NodeName () const { return NodeId (); }
 
20343
  /** Get the number of sons. */
 
20344
  int Sons () const { return 2; }
 
20345
  /** Get the n-th son.
 
20346
   *  \param n The index of the son.
 
20347
   *  \return The n-th son or NULL. */
 
20348
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
20349
  /** Replace a son.
 
20350
   *  \param old_son The son to replace.
 
20351
   *  \param new_son The new son. */
 
20352
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20353
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
20354
  }
 
20355
   private:
 
20356
  typedef CT_MembDesignator CCExprResolveExpr;
 
20357
 
 
20358
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20359
 public :
 
20360
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20361
  typedef CT_MembDesignator CExprResolveExpr;
 
20362
 
 
20363
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20364
 public :
 
20365
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20366
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
20367
  const char *__attr_name (unsigned i) const {
 
20368
    static const char *names[] = { "sons" }; return names[i];
 
20369
  }
 
20370
  const void *__attr (unsigned __i) const {
 
20371
    switch (__i) { case 0: return &sons; default: return 0; }
 
20372
  }
 
20373
#line 1954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20374
};
 
20375
 
 
20376
/** \class CT_DesignatorSeq CTree.h Puma/CTree.h
 
20377
 *  Tree node representing a designator sequence.
 
20378
 *  Example: \code .a.b.c \endcode */
 
20379
 
 
20380
#line 20381 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20381
} // closed Puma
 
20382
class CCExprResolve;
 
20383
class CExprResolve;
 
20384
class WinIfExists;
 
20385
class WinImportHandler;
 
20386
class WinMacros;
 
20387
class WinAsm;
 
20388
class WinDeclSpecs;
 
20389
class WinMemberExplSpec;
 
20390
class WinTypeKeywords;
 
20391
class WinFriend;
 
20392
class ExtAC;
 
20393
class ExtACBuilderCoupling;
 
20394
class ExtACSyntaxCoupling;
 
20395
class ExtACTree;
 
20396
class ExtACKeywords;
 
20397
class ExtGnu;
 
20398
class PragmaOnceUnitState;
 
20399
class PragmaOnce;
 
20400
class CMatchSyntax;
 
20401
namespace Puma {
 
20402
 
 
20403
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20404
class CT_DesignatorSeq : public CT_List, public CSemValue {
 
20405
#line 20406 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20406
  friend class ::CCExprResolve;
 
20407
  friend class ::CExprResolve;
 
20408
  friend class ::WinIfExists;
 
20409
  friend class ::WinImportHandler;
 
20410
  friend class ::WinMacros;
 
20411
  friend class ::WinAsm;
 
20412
  friend class ::WinDeclSpecs;
 
20413
  friend class ::WinMemberExplSpec;
 
20414
  friend class ::WinTypeKeywords;
 
20415
  friend class ::WinFriend;
 
20416
  friend class ::ExtAC;
 
20417
  friend class ::ExtACBuilderCoupling;
 
20418
  friend class ::ExtACSyntaxCoupling;
 
20419
  friend class ::ExtACTree;
 
20420
  friend class ::ExtACKeywords;
 
20421
  friend class ::ExtGnu;
 
20422
  friend class ::PragmaOnceUnitState;
 
20423
  friend class ::PragmaOnce;
 
20424
  friend class ::CMatchSyntax;
 
20425
 
 
20426
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20427
 
 
20428
public:
 
20429
  /** Constructor.
 
20430
   *  \param size Initial number of designators. */
 
20431
  CT_DesignatorSeq (int size = 1) : CT_List (size, 2) {}
 
20432
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20433
  static const char *NodeId ();
 
20434
  /** Get the name of the node. Can be compared with NodeId(). */
 
20435
  const char *NodeName () const { return NodeId (); }
 
20436
 
 
20437
  /** Get the type of the entity to initialize. */
 
20438
  CTypeInfo *Type () const { return type; }
 
20439
  /** Get the value of the entity to initialize. */
 
20440
  CExprValue *Value () const { return value; }
 
20441
  /** Get the semantic value object. */
 
20442
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
20443
public:
 
20444
  typedef AC::TLE __AttrTypes;
 
20445
  const char *__attr_name (unsigned i) const { return 0; }
 
20446
  const void *__attr (unsigned __i) const { return 0; }
 
20447
#line 1975 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20448
};
 
20449
 
 
20450
/*****************************************************************************/
 
20451
/*                                                                           */
 
20452
/*                         Declaration specifiers                            */
 
20453
/*                                                                           */
 
20454
/*****************************************************************************/
 
20455
 
 
20456
/** \class CT_DeclSpec CTree.h Puma/CTree.h
 
20457
 *  Base class for all tree nodes representing declaration specifiers. */
 
20458
 
 
20459
#line 20460 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20460
} // closed Puma
 
20461
class CCExprResolve;
 
20462
class CExprResolve;
 
20463
class WinIfExists;
 
20464
class WinImportHandler;
 
20465
class WinMacros;
 
20466
class WinAsm;
 
20467
class WinDeclSpecs;
 
20468
class WinMemberExplSpec;
 
20469
class WinTypeKeywords;
 
20470
class WinFriend;
 
20471
class ExtAC;
 
20472
class ExtACBuilderCoupling;
 
20473
class ExtACSyntaxCoupling;
 
20474
class ExtACTree;
 
20475
class ExtACKeywords;
 
20476
class ExtGnu;
 
20477
class PragmaOnceUnitState;
 
20478
class PragmaOnce;
 
20479
class CMatchSyntax;
 
20480
namespace Puma {
 
20481
 
 
20482
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20483
class CT_DeclSpec : public CTree {
 
20484
#line 20485 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20485
  friend class ::CCExprResolve;
 
20486
  friend class ::CExprResolve;
 
20487
  friend class ::WinIfExists;
 
20488
  friend class ::WinImportHandler;
 
20489
  friend class ::WinMacros;
 
20490
  friend class ::WinAsm;
 
20491
  friend class ::WinDeclSpecs;
 
20492
  friend class ::WinMemberExplSpec;
 
20493
  friend class ::WinTypeKeywords;
 
20494
  friend class ::WinFriend;
 
20495
  friend class ::ExtAC;
 
20496
  friend class ::ExtACBuilderCoupling;
 
20497
  friend class ::ExtACSyntaxCoupling;
 
20498
  friend class ::ExtACTree;
 
20499
  friend class ::ExtACKeywords;
 
20500
  friend class ::ExtGnu;
 
20501
  friend class ::PragmaOnceUnitState;
 
20502
  friend class ::PragmaOnce;
 
20503
  friend class ::CMatchSyntax;
 
20504
 
 
20505
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20506
 
 
20507
protected:
 
20508
  /** Constructor. */
 
20509
  CT_DeclSpec () {}
 
20510
public:
 
20511
  typedef AC::TLE __AttrTypes;
 
20512
  const char *__attr_name (unsigned i) const { return 0; }
 
20513
  const void *__attr (unsigned __i) const { return 0; }
 
20514
#line 1989 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20515
};
 
20516
 
 
20517
/** \class CT_PrimDeclSpec CTree.h Puma/CTree.h
 
20518
 *  Tree node representing a primitive declaration specifier. */
 
20519
 
 
20520
#line 20521 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20521
} // closed Puma
 
20522
class CCExprResolve;
 
20523
class CExprResolve;
 
20524
class WinIfExists;
 
20525
class WinImportHandler;
 
20526
class WinMacros;
 
20527
class WinAsm;
 
20528
class WinDeclSpecs;
 
20529
class WinMemberExplSpec;
 
20530
class WinTypeKeywords;
 
20531
class WinFriend;
 
20532
class ExtAC;
 
20533
class ExtACBuilderCoupling;
 
20534
class ExtACSyntaxCoupling;
 
20535
class ExtACTree;
 
20536
class ExtACKeywords;
 
20537
class ExtGnu;
 
20538
class PragmaOnceUnitState;
 
20539
class PragmaOnce;
 
20540
class CMatchSyntax;
 
20541
namespace Puma {
 
20542
 
 
20543
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20544
class CT_PrimDeclSpec : public CT_DeclSpec {
 
20545
#line 20546 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20546
  friend class ::CCExprResolve;
 
20547
  friend class ::CExprResolve;
 
20548
  friend class ::WinIfExists;
 
20549
  friend class ::WinImportHandler;
 
20550
  friend class ::WinMacros;
 
20551
  friend class ::WinAsm;
 
20552
  friend class ::WinDeclSpecs;
 
20553
  friend class ::WinMemberExplSpec;
 
20554
  friend class ::WinTypeKeywords;
 
20555
  friend class ::WinFriend;
 
20556
  friend class ::ExtAC;
 
20557
  friend class ::ExtACBuilderCoupling;
 
20558
  friend class ::ExtACSyntaxCoupling;
 
20559
  friend class ::ExtACTree;
 
20560
  friend class ::ExtACKeywords;
 
20561
  friend class ::ExtGnu;
 
20562
  friend class ::PragmaOnceUnitState;
 
20563
  friend class ::PragmaOnce;
 
20564
  friend class ::CMatchSyntax;
 
20565
 
 
20566
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20567
 
 
20568
public:
 
20569
  /** Declaration specifier types. */
 
20570
  enum Type { 
 
20571
    PDS_FRIEND,    /** friend */
 
20572
    PDS_TYPEDEF,   /** typedef */
 
20573
    PDS_AUTO,      /** auto */
 
20574
    PDS_REGISTER,  /** register */
 
20575
    PDS_STATIC,    /** static */
 
20576
    PDS_EXTERN,    /** extern */
 
20577
    PDS_MUTABLE,   /** mutable */
 
20578
    PDS_INLINE,    /** inline */
 
20579
    PDS_VIRTUAL,   /** virtual */
 
20580
    PDS_EXPLICIT,  /** explicit */
 
20581
    PDS_CONST,     /** const */
 
20582
    PDS_VOLATILE,  /** volatile */
 
20583
    PDS_RESTRICT,  /** restrict */
 
20584
    PDS_CHAR,      /** char */
 
20585
    PDS_WCHAR_T,   /** wchar_t */
 
20586
    PDS_BOOL,      /** bool */
 
20587
    PDS_SHORT,     /** short */
 
20588
    PDS_INT,       /** int */
 
20589
    PDS_LONG,      /** long */
 
20590
    PDS_SIGNED,    /** signed */
 
20591
    PDS_UNSIGNED,  /** unsigned */
 
20592
    PDS_FLOAT,     /** float */
 
20593
    PDS_DOUBLE,    /** double */
 
20594
    PDS_VOID,      /** void */
 
20595
    // AspectC++ specific type specifier
 
20596
    PDS_UNKNOWN_T, /** unknown_t */
 
20597
    // Win specific declaration specifiers
 
20598
    PDS_CDECL,     /** __cdecl */
 
20599
    PDS_STDCALL,   /** __stdcall */
 
20600
    PDS_FASTCALL,  /** __fastcall */
 
20601
    PDS_INT64,     /** __int64 */
 
20602
    PDS_UNKNOWN,   /** Unknown declaration specifier. */
 
20603
    PDS_NUM        /** Number of declaration specifier types. */
 
20604
  };
 
20605
 
 
20606
private:
 
20607
  Type _type;
 
20608
  CTree *_token; // has to be a CT_Token
 
20609
 
 
20610
  void determine_type ();
 
20611
 
 
20612
public:
 
20613
  /** Constructor.
 
20614
   *  \param t The token containing the declaration specifier. */
 
20615
  CT_PrimDeclSpec (CT_Token *t) { AddSon (_token, (CTree*)t); determine_type (); }
 
20616
  /** Constructor.
 
20617
   *  \param t The declaration specifier type. */
 
20618
  CT_PrimDeclSpec (Type t) : _token (0) { _type = t; }
 
20619
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20620
  static const char *NodeId ();
 
20621
  /** Get the name of the node. Can be compared with NodeId(). */
 
20622
  const char *NodeName () const { return NodeId (); }
 
20623
  /** Get the number of sons. */
 
20624
  int Sons () const { return _token ? 1 : 0; }
 
20625
  /** Get the n-th son.
 
20626
   *  \param n The index of the son.
 
20627
   *  \return The n-th son or NULL. */
 
20628
  CTree *Son (int n) const 
 
20629
   { return (n == 0) ? _token : (CTree*)0; }
 
20630
  /** Get the textual representation of the declaration specifier.
 
20631
   *  \return The string representation or " ". */
 
20632
  const char *SpecText () const 
 
20633
   { return _token ? _token->token ()->text () : " "; }
 
20634
  /** Get the declaration specifier type. */
 
20635
  Type SpecType () const { return _type; }
 
20636
  /** Number of declaration specifier types. */
 
20637
  static const int NumTypes = PDS_NUM;
 
20638
  /** Replace a son.
 
20639
   *  \param old_son The son to replace.
 
20640
   *  \param new_son The new son. */
 
20641
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20642
    CTree::ReplaceSon (_token, (CTree*)old_son, (CTree*)new_son);
 
20643
    determine_type ();
 
20644
  }
 
20645
public:
 
20646
  typedef AC::TL<Puma::CT_PrimDeclSpec::Type,AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
20647
  const char *__attr_name (unsigned i) const {
 
20648
    static const char *names[] = { "_type", "_token" }; return names[i];
 
20649
  }
 
20650
  const void *__attr (unsigned __i) const {
 
20651
    switch (__i) { case 31: return &_type; case 32: return &_token; default: return 0; }
 
20652
  }
 
20653
#line 2071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20654
};
 
20655
 
 
20656
/** \class CT_NamedType CTree.h Puma/CTree.h
 
20657
 *  Tree node representing a named type.
 
20658
 *  Example: \code (int*)a \endcode where int* is a 
 
20659
 *  type with a generated name. */
 
20660
 
 
20661
#line 20662 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20662
} // closed Puma
 
20663
class CCExprResolve;
 
20664
class CExprResolve;
 
20665
class WinIfExists;
 
20666
class WinImportHandler;
 
20667
class WinMacros;
 
20668
class WinAsm;
 
20669
class WinDeclSpecs;
 
20670
class WinMemberExplSpec;
 
20671
class WinTypeKeywords;
 
20672
class WinFriend;
 
20673
class ExtAC;
 
20674
class ExtACBuilderCoupling;
 
20675
class ExtACSyntaxCoupling;
 
20676
class ExtACTree;
 
20677
class ExtACKeywords;
 
20678
class ExtGnu;
 
20679
class PragmaOnceUnitState;
 
20680
class PragmaOnce;
 
20681
class CMatchSyntax;
 
20682
namespace Puma {
 
20683
 
 
20684
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20685
class CT_NamedType : public CT_DeclSpec, public CSemObject {
 
20686
#line 20687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20687
  friend class ::CCExprResolve;
 
20688
  friend class ::CExprResolve;
 
20689
  friend class ::WinIfExists;
 
20690
  friend class ::WinImportHandler;
 
20691
  friend class ::WinMacros;
 
20692
  friend class ::WinAsm;
 
20693
  friend class ::WinDeclSpecs;
 
20694
  friend class ::WinMemberExplSpec;
 
20695
  friend class ::WinTypeKeywords;
 
20696
  friend class ::WinFriend;
 
20697
  friend class ::ExtAC;
 
20698
  friend class ::ExtACBuilderCoupling;
 
20699
  friend class ::ExtACSyntaxCoupling;
 
20700
  friend class ::ExtACTree;
 
20701
  friend class ::ExtACKeywords;
 
20702
  friend class ::ExtGnu;
 
20703
  friend class ::PragmaOnceUnitState;
 
20704
  friend class ::PragmaOnce;
 
20705
  friend class ::CMatchSyntax;
 
20706
 
 
20707
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20708
 
 
20709
  CTree *sons[2]; // declspecs, declarator
 
20710
 
 
20711
public:
 
20712
  /** Constructor.
 
20713
   *  \param dss The declaration specifier sequence of the type.
 
20714
   *  \param d The type declarator. */
 
20715
  CT_NamedType (CTree *dss, CTree *d) { AddSon (sons[0], dss); AddSon (sons[1], d); }
 
20716
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20717
  static const char *NodeId ();
 
20718
  /** Get the name of the node. Can be compared with NodeId(). */
 
20719
  const char *NodeName () const { return NodeId (); }
 
20720
  /** Get the number of sons. */
 
20721
  int Sons () const { return CTree::Sons (sons, 2); }
 
20722
  /** Get the n-th son.
 
20723
   *  \param n The index of the son.
 
20724
   *  \return The n-th son or NULL. */
 
20725
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
20726
  /** Get the declarator. */
 
20727
  CTree *Declarator () const { return sons[1]; }
 
20728
  /** Replace a son.
 
20729
   *  \param old_son The son to replace.
 
20730
   *  \param new_son The new son. */
 
20731
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20732
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
20733
  }
 
20734
  /** Get the semantic information about the created temporary object. */
 
20735
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
20736
public:
 
20737
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
20738
  const char *__attr_name (unsigned i) const {
 
20739
    static const char *names[] = { "sons" }; return names[i];
 
20740
  }
 
20741
  const void *__attr (unsigned __i) const {
 
20742
    switch (__i) { case 0: return &sons; default: return 0; }
 
20743
  }
 
20744
#line 2105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20745
};
 
20746
      
 
20747
/** \class CT_ClassSpec CTree.h Puma/CTree.h
 
20748
 *  Tree node representing a class specifier.
 
20749
 *  Example: \code class X \endcode */
 
20750
 
 
20751
#line 20752 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20752
} // closed Puma
 
20753
class CCExprResolve;
 
20754
class CExprResolve;
 
20755
class WinIfExists;
 
20756
class WinImportHandler;
 
20757
class WinMacros;
 
20758
class WinAsm;
 
20759
class WinDeclSpecs;
 
20760
class WinMemberExplSpec;
 
20761
class WinTypeKeywords;
 
20762
class WinFriend;
 
20763
class ExtAC;
 
20764
class ExtACBuilderCoupling;
 
20765
class ExtACSyntaxCoupling;
 
20766
class ExtACTree;
 
20767
class ExtACKeywords;
 
20768
class ExtGnu;
 
20769
class PragmaOnceUnitState;
 
20770
class PragmaOnce;
 
20771
class CMatchSyntax;
 
20772
namespace Puma {
 
20773
 
 
20774
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20775
class CT_ClassSpec : public CT_DeclSpec, public CSemObject {
 
20776
#line 20777 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20777
  friend class ::CCExprResolve;
 
20778
  friend class ::CExprResolve;
 
20779
  friend class ::WinIfExists;
 
20780
  friend class ::WinImportHandler;
 
20781
  friend class ::WinMacros;
 
20782
  friend class ::WinAsm;
 
20783
  friend class ::WinDeclSpecs;
 
20784
  friend class ::WinMemberExplSpec;
 
20785
  friend class ::WinTypeKeywords;
 
20786
  friend class ::WinFriend;
 
20787
  friend class ::ExtAC;
 
20788
  friend class ::ExtACBuilderCoupling;
 
20789
  friend class ::ExtACSyntaxCoupling;
 
20790
  friend class ::ExtACTree;
 
20791
  friend class ::ExtACKeywords;
 
20792
  friend class ::ExtGnu;
 
20793
  friend class ::PragmaOnceUnitState;
 
20794
  friend class ::PragmaOnce;
 
20795
  friend class ::CMatchSyntax;
 
20796
 
 
20797
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20798
 
 
20799
  CTree *sons[2]; // key, name
 
20800
  
 
20801
public:
 
20802
  /** Constructor.
 
20803
   *  \param k The 'class' or 'struct' keyword.
 
20804
   *  \param n The class name. */
 
20805
  CT_ClassSpec (CTree *k, CTree *n) { AddSon (sons[0], k); AddSon (sons[1], n); }
 
20806
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20807
  static const char *NodeId ();
 
20808
  /** Get the name of the node. Can be compared with NodeId(). */
 
20809
  const char *NodeName () const { return NodeId (); }
 
20810
  /** Get the number of sons. */
 
20811
  int Sons () const { return 2; }
 
20812
  /** Get the n-th son.
 
20813
   *  \param n The index of the son.
 
20814
   *  \return The n-th son or NULL. */
 
20815
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
20816
  /** Get the class name. */
 
20817
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
20818
  /** Get the semantic information about the class. */
 
20819
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
20820
  /** Replace a son.
 
20821
   *  \param old_son The son to replace.
 
20822
   *  \param new_son The new son. */
 
20823
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20824
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
20825
  }
 
20826
public:
 
20827
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
20828
  const char *__attr_name (unsigned i) const {
 
20829
    static const char *names[] = { "sons" }; return names[i];
 
20830
  }
 
20831
  const void *__attr (unsigned __i) const {
 
20832
    switch (__i) { case 0: return &sons; default: return 0; }
 
20833
  }
 
20834
#line 2138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20835
};
 
20836
 
 
20837
/** \class CT_UnionSpec CTree.h Puma/CTree.h
 
20838
 *  Tree node representing a union specifier.
 
20839
 *  Example: \code union X \endcode */
 
20840
 
 
20841
#line 20842 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20842
} // closed Puma
 
20843
class CCExprResolve;
 
20844
class CExprResolve;
 
20845
class WinIfExists;
 
20846
class WinImportHandler;
 
20847
class WinMacros;
 
20848
class WinAsm;
 
20849
class WinDeclSpecs;
 
20850
class WinMemberExplSpec;
 
20851
class WinTypeKeywords;
 
20852
class WinFriend;
 
20853
class ExtAC;
 
20854
class ExtACBuilderCoupling;
 
20855
class ExtACSyntaxCoupling;
 
20856
class ExtACTree;
 
20857
class ExtACKeywords;
 
20858
class ExtGnu;
 
20859
class PragmaOnceUnitState;
 
20860
class PragmaOnce;
 
20861
class CMatchSyntax;
 
20862
namespace Puma {
 
20863
 
 
20864
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20865
class CT_UnionSpec : public CT_ClassSpec {
 
20866
#line 20867 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20867
  friend class ::CCExprResolve;
 
20868
  friend class ::CExprResolve;
 
20869
  friend class ::WinIfExists;
 
20870
  friend class ::WinImportHandler;
 
20871
  friend class ::WinMacros;
 
20872
  friend class ::WinAsm;
 
20873
  friend class ::WinDeclSpecs;
 
20874
  friend class ::WinMemberExplSpec;
 
20875
  friend class ::WinTypeKeywords;
 
20876
  friend class ::WinFriend;
 
20877
  friend class ::ExtAC;
 
20878
  friend class ::ExtACBuilderCoupling;
 
20879
  friend class ::ExtACSyntaxCoupling;
 
20880
  friend class ::ExtACTree;
 
20881
  friend class ::ExtACKeywords;
 
20882
  friend class ::ExtGnu;
 
20883
  friend class ::PragmaOnceUnitState;
 
20884
  friend class ::PragmaOnce;
 
20885
  friend class ::CMatchSyntax;
 
20886
 
 
20887
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20888
 
 
20889
public:
 
20890
  /** Constructor.
 
20891
   *  \param k The 'union' keyword.
 
20892
   *  \param n The name of the union. */
 
20893
  CT_UnionSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
20894
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20895
  static const char *NodeId ();
 
20896
  /** Get the name of the node. Can be compared with NodeId(). */
 
20897
  const char *NodeName () const { return NodeId (); }
 
20898
public:
 
20899
  typedef AC::TLE __AttrTypes;
 
20900
  const char *__attr_name (unsigned i) const { return 0; }
 
20901
  const void *__attr (unsigned __i) const { return 0; }
 
20902
#line 2153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20903
};
 
20904
 
 
20905
/** \class CT_EnumSpec CTree.h Puma/CTree.h
 
20906
 *  Tree node representing an enumeration specifier.
 
20907
 *  Example: \code enum X \endcode */
 
20908
 
 
20909
#line 20910 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20910
} // closed Puma
 
20911
class CCExprResolve;
 
20912
class CExprResolve;
 
20913
class WinIfExists;
 
20914
class WinImportHandler;
 
20915
class WinMacros;
 
20916
class WinAsm;
 
20917
class WinDeclSpecs;
 
20918
class WinMemberExplSpec;
 
20919
class WinTypeKeywords;
 
20920
class WinFriend;
 
20921
class ExtAC;
 
20922
class ExtACBuilderCoupling;
 
20923
class ExtACSyntaxCoupling;
 
20924
class ExtACTree;
 
20925
class ExtACKeywords;
 
20926
class ExtGnu;
 
20927
class PragmaOnceUnitState;
 
20928
class PragmaOnce;
 
20929
class CMatchSyntax;
 
20930
namespace Puma {
 
20931
 
 
20932
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20933
class CT_EnumSpec : public CT_ClassSpec {
 
20934
#line 20935 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20935
  friend class ::CCExprResolve;
 
20936
  friend class ::CExprResolve;
 
20937
  friend class ::WinIfExists;
 
20938
  friend class ::WinImportHandler;
 
20939
  friend class ::WinMacros;
 
20940
  friend class ::WinAsm;
 
20941
  friend class ::WinDeclSpecs;
 
20942
  friend class ::WinMemberExplSpec;
 
20943
  friend class ::WinTypeKeywords;
 
20944
  friend class ::WinFriend;
 
20945
  friend class ::ExtAC;
 
20946
  friend class ::ExtACBuilderCoupling;
 
20947
  friend class ::ExtACSyntaxCoupling;
 
20948
  friend class ::ExtACTree;
 
20949
  friend class ::ExtACKeywords;
 
20950
  friend class ::ExtGnu;
 
20951
  friend class ::PragmaOnceUnitState;
 
20952
  friend class ::PragmaOnce;
 
20953
  friend class ::CMatchSyntax;
 
20954
 
 
20955
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20956
 
 
20957
public:
 
20958
  /** Constructor.
 
20959
   *  \param k The 'enum' keyword. 
 
20960
   *  \param n The name of the enumeration. */
 
20961
  CT_EnumSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
20962
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20963
  static const char *NodeId ();
 
20964
  /** Get the name of the node. Can be compared with NodeId(). */
 
20965
  const char *NodeName () const { return NodeId (); }
 
20966
public:
 
20967
  typedef AC::TLE __AttrTypes;
 
20968
  const char *__attr_name (unsigned i) const { return 0; }
 
20969
  const void *__attr (unsigned __i) const { return 0; }
 
20970
#line 2168 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20971
};
 
20972
 
 
20973
/** \class CT_ExceptionSpec CTree.h Puma/CTree.h
 
20974
 *  Tree node representing an exception specifier.
 
20975
 *  Example: \code throw(std::exception) \endcode */
 
20976
 
 
20977
#line 20978 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
20978
} // closed Puma
 
20979
class CCExprResolve;
 
20980
class CExprResolve;
 
20981
class WinIfExists;
 
20982
class WinImportHandler;
 
20983
class WinMacros;
 
20984
class WinAsm;
 
20985
class WinDeclSpecs;
 
20986
class WinMemberExplSpec;
 
20987
class WinTypeKeywords;
 
20988
class WinFriend;
 
20989
class ExtAC;
 
20990
class ExtACBuilderCoupling;
 
20991
class ExtACSyntaxCoupling;
 
20992
class ExtACTree;
 
20993
class ExtACKeywords;
 
20994
class ExtGnu;
 
20995
class PragmaOnceUnitState;
 
20996
class PragmaOnce;
 
20997
class CMatchSyntax;
 
20998
namespace Puma {
 
20999
 
 
21000
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21001
class CT_ExceptionSpec : public CT_DeclSpec {
 
21002
#line 21003 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21003
  friend class ::CCExprResolve;
 
21004
  friend class ::CExprResolve;
 
21005
  friend class ::WinIfExists;
 
21006
  friend class ::WinImportHandler;
 
21007
  friend class ::WinMacros;
 
21008
  friend class ::WinAsm;
 
21009
  friend class ::WinDeclSpecs;
 
21010
  friend class ::WinMemberExplSpec;
 
21011
  friend class ::WinTypeKeywords;
 
21012
  friend class ::WinFriend;
 
21013
  friend class ::ExtAC;
 
21014
  friend class ::ExtACBuilderCoupling;
 
21015
  friend class ::ExtACSyntaxCoupling;
 
21016
  friend class ::ExtACTree;
 
21017
  friend class ::ExtACKeywords;
 
21018
  friend class ::ExtGnu;
 
21019
  friend class ::PragmaOnceUnitState;
 
21020
  friend class ::PragmaOnce;
 
21021
  friend class ::CMatchSyntax;
 
21022
 
 
21023
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21024
 
 
21025
  CTree *sons[2]; // throw, type_id_list
 
21026
  
 
21027
public:
 
21028
  /** Constructor.
 
21029
   *  \param k The 'throw' keyword.
 
21030
   *  \param l The type list for the exception type to throw. */
 
21031
  CT_ExceptionSpec (CTree *k, CTree *l) { AddSon (sons[0], k); AddSon (sons[1], l); }
 
21032
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21033
  static const char *NodeId ();
 
21034
  /** Get the name of the node. Can be compared with NodeId(). */
 
21035
  const char *NodeName () const { return NodeId (); }
 
21036
  /** Get the number of sons. */
 
21037
  int Sons () const { return 2; }
 
21038
  /** Get the n-th son.
 
21039
   *  \param n The index of the son.
 
21040
   *  \return The n-th son or NULL. */
 
21041
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
21042
  /** Get the exception type list. */
 
21043
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
21044
  /** Replace a son.
 
21045
   *  \param old_son The son to replace.
 
21046
   *  \param new_son The new son. */
 
21047
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21048
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
21049
  }
 
21050
public:
 
21051
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
21052
  const char *__attr_name (unsigned i) const {
 
21053
    static const char *names[] = { "sons" }; return names[i];
 
21054
  }
 
21055
  const void *__attr (unsigned __i) const {
 
21056
    switch (__i) { case 0: return &sons; default: return 0; }
 
21057
  }
 
21058
#line 2199 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21059
};
 
21060
 
 
21061
/*****************************************************************************/
 
21062
/*                                                                           */
 
21063
/*                              Declarations                                 */
 
21064
/*                                                                           */
 
21065
/*****************************************************************************/
 
21066
 
 
21067
/** \class CT_Decl CTree.h Puma/CTree.h
 
21068
 *  Base class for all tree nodes representing declarations. */
 
21069
 
 
21070
#line 21071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21071
} // closed Puma
 
21072
class CCExprResolve;
 
21073
class CExprResolve;
 
21074
class WinIfExists;
 
21075
class WinImportHandler;
 
21076
class WinMacros;
 
21077
class WinAsm;
 
21078
class WinDeclSpecs;
 
21079
class WinMemberExplSpec;
 
21080
class WinTypeKeywords;
 
21081
class WinFriend;
 
21082
class ExtAC;
 
21083
class ExtACBuilderCoupling;
 
21084
class ExtACSyntaxCoupling;
 
21085
class ExtACTree;
 
21086
class ExtACKeywords;
 
21087
class ExtGnu;
 
21088
class PragmaOnceUnitState;
 
21089
class PragmaOnce;
 
21090
class CMatchSyntax;
 
21091
namespace Puma {
 
21092
 
 
21093
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21094
class CT_Decl : public CTree {
 
21095
#line 21096 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21096
  friend class ::CCExprResolve;
 
21097
  friend class ::CExprResolve;
 
21098
  friend class ::WinIfExists;
 
21099
  friend class ::WinImportHandler;
 
21100
  friend class ::WinMacros;
 
21101
  friend class ::WinAsm;
 
21102
  friend class ::WinDeclSpecs;
 
21103
  friend class ::WinMemberExplSpec;
 
21104
  friend class ::WinTypeKeywords;
 
21105
  friend class ::WinFriend;
 
21106
  friend class ::ExtAC;
 
21107
  friend class ::ExtACBuilderCoupling;
 
21108
  friend class ::ExtACSyntaxCoupling;
 
21109
  friend class ::ExtACTree;
 
21110
  friend class ::ExtACKeywords;
 
21111
  friend class ::ExtGnu;
 
21112
  friend class ::PragmaOnceUnitState;
 
21113
  friend class ::PragmaOnce;
 
21114
  friend class ::CMatchSyntax;
 
21115
 
 
21116
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21117
 
 
21118
  CT_LinkageSpec *_linkage;
 
21119
  
 
21120
protected:
 
21121
  /** Constructor. */
 
21122
  CT_Decl () : _linkage (0) {}
 
21123
  
 
21124
public:
 
21125
  /** Set the linkage of the declared entity.
 
21126
   *  \param l The linkage specifiers. */
 
21127
  void Linkage (CT_LinkageSpec *l) { _linkage = l; }
 
21128
  /** Get the linkage specifiers. */
 
21129
  CT_LinkageSpec *Linkage () const { return _linkage; }
 
21130
  /** Get this. */
 
21131
  virtual CT_Decl *IsDeclaration () { return this; }
 
21132
public:
 
21133
  typedef AC::TL<Puma::CT_LinkageSpec *,AC::TLE > __AttrTypes;
 
21134
  const char *__attr_name (unsigned i) const {
 
21135
    static const char *names[] = { "_linkage" }; return names[i];
 
21136
  }
 
21137
  const void *__attr (unsigned __i) const {
 
21138
    switch (__i) { case 0: return &_linkage; default: return 0; }
 
21139
  }
 
21140
#line 2224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21141
};
 
21142
 
 
21143
/** \class CT_Program CTree.h Puma/CTree.h
 
21144
 *  Root node of C/C++ syntax trees. */
 
21145
 
 
21146
#line 21147 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21147
} // closed Puma
 
21148
class CCExprResolve;
 
21149
class CExprResolve;
 
21150
class WinIfExists;
 
21151
class WinImportHandler;
 
21152
class WinMacros;
 
21153
class WinAsm;
 
21154
class WinDeclSpecs;
 
21155
class WinMemberExplSpec;
 
21156
class WinTypeKeywords;
 
21157
class WinFriend;
 
21158
class ExtAC;
 
21159
class ExtACBuilderCoupling;
 
21160
class ExtACSyntaxCoupling;
 
21161
class ExtACTree;
 
21162
class ExtACKeywords;
 
21163
class ExtGnu;
 
21164
class PragmaOnceUnitState;
 
21165
class PragmaOnce;
 
21166
class CMatchSyntax;
 
21167
namespace Puma {
 
21168
 
 
21169
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21170
class CT_Program : public CT_DeclList, public CSemScope {
 
21171
#line 21172 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21172
  friend class ::CCExprResolve;
 
21173
  friend class ::CExprResolve;
 
21174
  friend class ::WinIfExists;
 
21175
  friend class ::WinImportHandler;
 
21176
  friend class ::WinMacros;
 
21177
  friend class ::WinAsm;
 
21178
  friend class ::WinDeclSpecs;
 
21179
  friend class ::WinMemberExplSpec;
 
21180
  friend class ::WinTypeKeywords;
 
21181
  friend class ::WinFriend;
 
21182
  friend class ::ExtAC;
 
21183
  friend class ::ExtACBuilderCoupling;
 
21184
  friend class ::ExtACSyntaxCoupling;
 
21185
  friend class ::ExtACTree;
 
21186
  friend class ::ExtACKeywords;
 
21187
  friend class ::ExtGnu;
 
21188
  friend class ::PragmaOnceUnitState;
 
21189
  friend class ::PragmaOnce;
 
21190
  friend class ::CMatchSyntax;
 
21191
 
 
21192
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21193
 
 
21194
public:
 
21195
  /** Constructor.
 
21196
   *  \param size The initial number of declarations in the program.
 
21197
   *  \param incr The initial increment count. */
 
21198
  CT_Program (int size = 20, int incr = 20) : CT_DeclList (size, incr) {}
 
21199
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21200
  static const char *NodeId ();
 
21201
  /** Get the name of the node. Can be compared with NodeId(). */
 
21202
  const char *NodeName () const { return NodeId (); }
 
21203
  /** Get the top scope. */
 
21204
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
21205
public:
 
21206
  typedef AC::TLE __AttrTypes;
 
21207
  const char *__attr_name (unsigned i) const { return 0; }
 
21208
  const void *__attr (unsigned __i) const { return 0; }
 
21209
#line 2240 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21210
};
 
21211
   
 
21212
/** \class CT_ObjDecl CTree.h Puma/CTree.h
 
21213
 *  Tree node representing an object declaration.
 
21214
 *  Example: \code int *i \endcode */
 
21215
 
 
21216
#line 21217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21217
} // closed Puma
 
21218
class CCExprResolve;
 
21219
class CExprResolve;
 
21220
class WinIfExists;
 
21221
class WinImportHandler;
 
21222
class WinMacros;
 
21223
class WinAsm;
 
21224
class WinDeclSpecs;
 
21225
class WinMemberExplSpec;
 
21226
class WinTypeKeywords;
 
21227
class WinFriend;
 
21228
class ExtAC;
 
21229
class ExtACBuilderCoupling;
 
21230
class ExtACSyntaxCoupling;
 
21231
class ExtACTree;
 
21232
class ExtACKeywords;
 
21233
class ExtGnu;
 
21234
class PragmaOnceUnitState;
 
21235
class PragmaOnce;
 
21236
class CMatchSyntax;
 
21237
namespace Puma {
 
21238
 
 
21239
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21240
class CT_ObjDecl : public CT_Decl {
 
21241
#line 21242 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21242
  friend class ::CCExprResolve;
 
21243
  friend class ::CExprResolve;
 
21244
  friend class ::WinIfExists;
 
21245
  friend class ::WinImportHandler;
 
21246
  friend class ::WinMacros;
 
21247
  friend class ::WinAsm;
 
21248
  friend class ::WinDeclSpecs;
 
21249
  friend class ::WinMemberExplSpec;
 
21250
  friend class ::WinTypeKeywords;
 
21251
  friend class ::WinFriend;
 
21252
  friend class ::ExtAC;
 
21253
  friend class ::ExtACBuilderCoupling;
 
21254
  friend class ::ExtACSyntaxCoupling;
 
21255
  friend class ::ExtACTree;
 
21256
  friend class ::ExtACKeywords;
 
21257
  friend class ::ExtGnu;
 
21258
  friend class ::PragmaOnceUnitState;
 
21259
  friend class ::PragmaOnce;
 
21260
  friend class ::CMatchSyntax;
 
21261
 
 
21262
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21263
 
 
21264
  CTree *sons[3]; // declspecs, declarators, colon
 
21265
 
 
21266
public:
 
21267
  /** Constructor.
 
21268
   *  \param dsl The declaration specifier sequence.
 
21269
   *  \param dl The declarator list.
 
21270
   *  \param c Optional colon. */
 
21271
  CT_ObjDecl (CTree *dsl, CTree *dl, CTree *c) {
 
21272
    AddSon (sons[0], dsl); AddSon (sons[1], dl); AddSon (sons[2], c);
 
21273
  }
 
21274
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21275
  static const char *NodeId ();
 
21276
  /** Get the name of the node. Can be compared with NodeId(). */
 
21277
  const char *NodeName () const { return NodeId (); }
 
21278
  /** Get the number of sons. */
 
21279
  int Sons () const { return 3; }
 
21280
  /** Get the n-th son.
 
21281
   *  \param n The index of the son.
 
21282
   *  \return The n-th son or NULL. */
 
21283
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
21284
  /** Get the declaration specifier sequence. */
 
21285
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
21286
  /** Get the declarator list. */
 
21287
  CT_DeclaratorList *Declarators () const { return (CT_DeclaratorList*)sons[1]; }
 
21288
  /** Replace a son.
 
21289
   *  \param old_son The son to replace.
 
21290
   *  \param new_son The new son. */
 
21291
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21292
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
21293
  }
 
21294
public:
 
21295
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
21296
  const char *__attr_name (unsigned i) const {
 
21297
    static const char *names[] = { "sons" }; return names[i];
 
21298
  }
 
21299
  const void *__attr (unsigned __i) const {
 
21300
    switch (__i) { case 0: return &sons; default: return 0; }
 
21301
  }
 
21302
#line 2276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21303
};
 
21304
 
 
21305
/** \class CT_TemplateDecl CTree.h Puma/CTree.h
 
21306
 *  Tree node representing a template declaration. */
 
21307
 
 
21308
#line 21309 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21309
} // closed Puma
 
21310
class CCExprResolve;
 
21311
class CExprResolve;
 
21312
class WinIfExists;
 
21313
class WinImportHandler;
 
21314
class WinMacros;
 
21315
class WinAsm;
 
21316
class WinDeclSpecs;
 
21317
class WinMemberExplSpec;
 
21318
class WinTypeKeywords;
 
21319
class WinFriend;
 
21320
class ExtAC;
 
21321
class ExtACBuilderCoupling;
 
21322
class ExtACSyntaxCoupling;
 
21323
class ExtACTree;
 
21324
class ExtACKeywords;
 
21325
class ExtGnu;
 
21326
class PragmaOnceUnitState;
 
21327
class PragmaOnce;
 
21328
class CMatchSyntax;
 
21329
namespace Puma {
 
21330
 
 
21331
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21332
class CT_TemplateDecl : public CT_Decl, public CSemScope {
 
21333
#line 21334 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21334
  friend class ::CCExprResolve;
 
21335
  friend class ::CExprResolve;
 
21336
  friend class ::WinIfExists;
 
21337
  friend class ::WinImportHandler;
 
21338
  friend class ::WinMacros;
 
21339
  friend class ::WinAsm;
 
21340
  friend class ::WinDeclSpecs;
 
21341
  friend class ::WinMemberExplSpec;
 
21342
  friend class ::WinTypeKeywords;
 
21343
  friend class ::WinFriend;
 
21344
  friend class ::ExtAC;
 
21345
  friend class ::ExtACBuilderCoupling;
 
21346
  friend class ::ExtACSyntaxCoupling;
 
21347
  friend class ::ExtACTree;
 
21348
  friend class ::ExtACKeywords;
 
21349
  friend class ::ExtGnu;
 
21350
  friend class ::PragmaOnceUnitState;
 
21351
  friend class ::PragmaOnce;
 
21352
  friend class ::CMatchSyntax;
 
21353
 
 
21354
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21355
 
 
21356
  CTree *sons[3]; // export, param_list, decl
 
21357
 
 
21358
public:
 
21359
  /** Constructor.
 
21360
   *  \param e Optional 'export' keyword. 
 
21361
   *  \param p The template parameter list.
 
21362
   *  \param d The class or function declaration. */
 
21363
  CT_TemplateDecl (CTree *e, CTree *p, CTree *d) {
 
21364
    AddSon (sons[0], e); AddSon (sons[1], p); AddSon (sons[2], d);
 
21365
  }
 
21366
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21367
  static const char *NodeId ();
 
21368
  /** Get the name of the node. Can be compared with NodeId(). */
 
21369
  const char *NodeName () const { return NodeId (); }
 
21370
  /** Get the number of sons. */
 
21371
  int Sons () const { return CTree::Sons (sons, 3); }
 
21372
  /** Get the n-th son.
 
21373
   *  \param n The index of the son.
 
21374
   *  \return The n-th son or NULL. */
 
21375
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
21376
  /** Replace a son.
 
21377
   *  \param old_son The son to replace.
 
21378
   *  \param new_son The new son. */
 
21379
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21380
    CTree::ReplaceSon (sons, 3, old_son, new_son); 
 
21381
  }
 
21382
  /** Get the 'export' keyword. */
 
21383
  CTree *Export () const { return sons[0]; }
 
21384
  /** Get the template parameter list. */
 
21385
  CT_TemplateParamList *Parameters () const { 
 
21386
    return (CT_TemplateParamList*)sons[1]; 
 
21387
  }
 
21388
  /** Get the class or function declaration. */
 
21389
  CTree *Declaration () const { return sons[2]; }
 
21390
  /** Get the scope opened by the template declaration. */
 
21391
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
21392
public:
 
21393
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
21394
  const char *__attr_name (unsigned i) const {
 
21395
    static const char *names[] = { "sons" }; return names[i];
 
21396
  }
 
21397
  const void *__attr (unsigned __i) const {
 
21398
    switch (__i) { case 0: return &sons; default: return 0; }
 
21399
  }
 
21400
#line 2317 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21401
};
 
21402
 
 
21403
/** \class CT_TemplateParamDecl CTree.h Puma/CTree.h
 
21404
 *  Base class for all tree nodesrepresenting a template parameter declaration. */
 
21405
 
 
21406
#line 21407 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21407
} // closed Puma
 
21408
class CCExprResolve;
 
21409
class CExprResolve;
 
21410
class WinIfExists;
 
21411
class WinImportHandler;
 
21412
class WinMacros;
 
21413
class WinAsm;
 
21414
class WinDeclSpecs;
 
21415
class WinMemberExplSpec;
 
21416
class WinTypeKeywords;
 
21417
class WinFriend;
 
21418
class ExtAC;
 
21419
class ExtACBuilderCoupling;
 
21420
class ExtACSyntaxCoupling;
 
21421
class ExtACTree;
 
21422
class ExtACKeywords;
 
21423
class ExtGnu;
 
21424
class PragmaOnceUnitState;
 
21425
class PragmaOnce;
 
21426
class CMatchSyntax;
 
21427
namespace Puma {
 
21428
 
 
21429
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21430
class CT_TemplateParamDecl : public CT_Decl, public CSemObject {
 
21431
#line 21432 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21432
  friend class ::CCExprResolve;
 
21433
  friend class ::CExprResolve;
 
21434
  friend class ::WinIfExists;
 
21435
  friend class ::WinImportHandler;
 
21436
  friend class ::WinMacros;
 
21437
  friend class ::WinAsm;
 
21438
  friend class ::WinDeclSpecs;
 
21439
  friend class ::WinMemberExplSpec;
 
21440
  friend class ::WinTypeKeywords;
 
21441
  friend class ::WinFriend;
 
21442
  friend class ::ExtAC;
 
21443
  friend class ::ExtACBuilderCoupling;
 
21444
  friend class ::ExtACSyntaxCoupling;
 
21445
  friend class ::ExtACTree;
 
21446
  friend class ::ExtACKeywords;
 
21447
  friend class ::ExtGnu;
 
21448
  friend class ::PragmaOnceUnitState;
 
21449
  friend class ::PragmaOnce;
 
21450
  friend class ::CMatchSyntax;
 
21451
 
 
21452
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21453
 
 
21454
protected:
 
21455
  /** Constructor. */
 
21456
  CT_TemplateParamDecl () {}
 
21457
  
 
21458
public:
 
21459
  /** Get the template default argument. */
 
21460
  virtual CT_ExprList *DefaultArgument () const = 0;
 
21461
  /** Get the semantic information about the template parameter. */
 
21462
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
21463
public:
 
21464
  typedef AC::TLE __AttrTypes;
 
21465
  const char *__attr_name (unsigned i) const { return 0; }
 
21466
  const void *__attr (unsigned __i) const { return 0; }
 
21467
#line 2331 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21468
};
 
21469
 
 
21470
/** \class CT_NonTypeParamDecl CTree.h Puma/CTree.h
 
21471
 *  Tree node representing a template non-type parameter declaration. */
 
21472
 
 
21473
#line 21474 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21474
} // closed Puma
 
21475
class CCExprResolve;
 
21476
class CExprResolve;
 
21477
class WinIfExists;
 
21478
class WinImportHandler;
 
21479
class WinMacros;
 
21480
class WinAsm;
 
21481
class WinDeclSpecs;
 
21482
class WinMemberExplSpec;
 
21483
class WinTypeKeywords;
 
21484
class WinFriend;
 
21485
class ExtAC;
 
21486
class ExtACBuilderCoupling;
 
21487
class ExtACSyntaxCoupling;
 
21488
class ExtACTree;
 
21489
class ExtACKeywords;
 
21490
class ExtGnu;
 
21491
class PragmaOnceUnitState;
 
21492
class PragmaOnce;
 
21493
class CMatchSyntax;
 
21494
namespace Puma {
 
21495
 
 
21496
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21497
class CT_NonTypeParamDecl : public CT_TemplateParamDecl {
 
21498
#line 21499 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21499
  friend class ::CCExprResolve;
 
21500
  friend class ::CExprResolve;
 
21501
  friend class ::WinIfExists;
 
21502
  friend class ::WinImportHandler;
 
21503
  friend class ::WinMacros;
 
21504
  friend class ::WinAsm;
 
21505
  friend class ::WinDeclSpecs;
 
21506
  friend class ::WinMemberExplSpec;
 
21507
  friend class ::WinTypeKeywords;
 
21508
  friend class ::WinFriend;
 
21509
  friend class ::ExtAC;
 
21510
  friend class ::ExtACBuilderCoupling;
 
21511
  friend class ::ExtACSyntaxCoupling;
 
21512
  friend class ::ExtACTree;
 
21513
  friend class ::ExtACKeywords;
 
21514
  friend class ::ExtGnu;
 
21515
  friend class ::PragmaOnceUnitState;
 
21516
  friend class ::PragmaOnce;
 
21517
  friend class ::CMatchSyntax;
 
21518
 
 
21519
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21520
 
 
21521
  CTree *sons[3]; // declspecs, declarator, init
 
21522
 
 
21523
public:
 
21524
  /** Constructor.
 
21525
   *  \param dsl The declaration specifier sequence.
 
21526
   *  \param d The parameter declarator.
 
21527
   *  \param i The default template argument. */
 
21528
  CT_NonTypeParamDecl (CTree *dsl, CTree *d, CTree *i = (CTree*)0) {
 
21529
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], i);
 
21530
  }
 
21531
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21532
  static const char *NodeId ();
 
21533
  /** Get the name of the node. Can be compared with NodeId(). */
 
21534
  const char *NodeName () const { return NodeId (); }
 
21535
  /** Get the number of sons. */
 
21536
  int Sons () const { return CTree::Sons (sons, 3); }
 
21537
  /** Get the n-th son.
 
21538
   *  \param n The index of the son.
 
21539
   *  \return The n-th son or NULL. */
 
21540
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
21541
  /** Get the declaration specifier sequence. */
 
21542
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
21543
  /** Get the parameter declarator. */
 
21544
  CTree *Declarator () const { return sons[1]; }
 
21545
  /** Get the default template argument. */
 
21546
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[2]; }
 
21547
  /** Get the semantic information about the template parameter. */
 
21548
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
21549
  /** Set the default template argument. 
 
21550
   *  \param i The default argument. */
 
21551
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
21552
  /** Replace a son.
 
21553
   *  \param old_son The son to replace.
 
21554
   *  \param new_son The new son. */
 
21555
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21556
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
21557
  }
 
21558
public:
 
21559
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
21560
  const char *__attr_name (unsigned i) const {
 
21561
    static const char *names[] = { "sons" }; return names[i];
 
21562
  }
 
21563
  const void *__attr (unsigned __i) const {
 
21564
    switch (__i) { case 0: return &sons; default: return 0; }
 
21565
  }
 
21566
#line 2373 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21567
};
 
21568
 
 
21569
/** \class CT_TypeParamDecl CTree.h Puma/CTree.h
 
21570
 *  Tree node representing a template type parameter declaration. */
 
21571
 
 
21572
#line 21573 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21573
} // closed Puma
 
21574
class CCExprResolve;
 
21575
class CExprResolve;
 
21576
class WinIfExists;
 
21577
class WinImportHandler;
 
21578
class WinMacros;
 
21579
class WinAsm;
 
21580
class WinDeclSpecs;
 
21581
class WinMemberExplSpec;
 
21582
class WinTypeKeywords;
 
21583
class WinFriend;
 
21584
class ExtAC;
 
21585
class ExtACBuilderCoupling;
 
21586
class ExtACSyntaxCoupling;
 
21587
class ExtACTree;
 
21588
class ExtACKeywords;
 
21589
class ExtGnu;
 
21590
class PragmaOnceUnitState;
 
21591
class PragmaOnce;
 
21592
class CMatchSyntax;
 
21593
namespace Puma {
 
21594
 
 
21595
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21596
class CT_TypeParamDecl : public CT_TemplateParamDecl {
 
21597
#line 21598 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21598
  friend class ::CCExprResolve;
 
21599
  friend class ::CExprResolve;
 
21600
  friend class ::WinIfExists;
 
21601
  friend class ::WinImportHandler;
 
21602
  friend class ::WinMacros;
 
21603
  friend class ::WinAsm;
 
21604
  friend class ::WinDeclSpecs;
 
21605
  friend class ::WinMemberExplSpec;
 
21606
  friend class ::WinTypeKeywords;
 
21607
  friend class ::WinFriend;
 
21608
  friend class ::ExtAC;
 
21609
  friend class ::ExtACBuilderCoupling;
 
21610
  friend class ::ExtACSyntaxCoupling;
 
21611
  friend class ::ExtACTree;
 
21612
  friend class ::ExtACKeywords;
 
21613
  friend class ::ExtGnu;
 
21614
  friend class ::PragmaOnceUnitState;
 
21615
  friend class ::PragmaOnce;
 
21616
  friend class ::CMatchSyntax;
 
21617
 
 
21618
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21619
 
 
21620
  CTree *sons[4]; // params, key, id, init
 
21621
 
 
21622
public:
 
21623
  /** Constructor.
 
21624
   *  \param pl The template parameter list of an template template parameter.
 
21625
   *  \param k The type keyword, i.e. 'class' or 'typename'.
 
21626
   *  \param id The parameter identifier.
 
21627
   *  \param i The default template argument. */
 
21628
  CT_TypeParamDecl (CTree *pl, CTree *k, CTree *id, CTree *i = (CTree*)0) { 
 
21629
    AddSon (sons[0], pl); AddSon (sons[1], k); 
 
21630
    AddSon (sons[2], id); AddSon (sons[3], i);
 
21631
  }
 
21632
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21633
  static const char *NodeId ();
 
21634
  /** Get the name of the node. Can be compared with NodeId(). */
 
21635
  const char *NodeName () const { return NodeId (); }
 
21636
  /** Get the number of sons. */
 
21637
  int Sons () const { return CTree::Sons (sons, 4); }
 
21638
  /** Get the n-th son.
 
21639
   *  \param n The index of the son.
 
21640
   *  \return The n-th son or NULL. */
 
21641
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
21642
  /** Get the template parameter list of a template template parameter. */
 
21643
  CT_TemplateParamList *Parameters () const { 
 
21644
    return (CT_TemplateParamList*)sons[0]; 
 
21645
  }
 
21646
  /** Get the templare parameter name. */
 
21647
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
21648
  /** Get the template default argument. */
 
21649
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[3]; }
 
21650
  /** Set the template default argument.
 
21651
   *  \param i The default argument. */
 
21652
  void Initializer (CTree *i) { AddSon (sons[3], i); }
 
21653
  /** Replace a son.
 
21654
   *  \param old_son The son to replace.
 
21655
   *  \param new_son The new son. */
 
21656
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21657
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
21658
  }
 
21659
public:
 
21660
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
21661
  const char *__attr_name (unsigned i) const {
 
21662
    static const char *names[] = { "sons" }; return names[i];
 
21663
  }
 
21664
  const void *__attr (unsigned __i) const {
 
21665
    switch (__i) { case 0: return &sons; default: return 0; }
 
21666
  }
 
21667
#line 2417 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21668
};
 
21669
 
 
21670
/** \class CT_EnumDef CTree.h Puma/CTree.h
 
21671
 *  Tree node representing the definition of an enumeration. 
 
21672
 *  Example: \code enum E { A, B, C } \endcode */
 
21673
 
 
21674
#line 21675 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21675
} // closed Puma
 
21676
class CCExprResolve;
 
21677
class CExprResolve;
 
21678
class WinIfExists;
 
21679
class WinImportHandler;
 
21680
class WinMacros;
 
21681
class WinAsm;
 
21682
class WinDeclSpecs;
 
21683
class WinMemberExplSpec;
 
21684
class WinTypeKeywords;
 
21685
class WinFriend;
 
21686
class ExtAC;
 
21687
class ExtACBuilderCoupling;
 
21688
class ExtACSyntaxCoupling;
 
21689
class ExtACTree;
 
21690
class ExtACKeywords;
 
21691
class ExtGnu;
 
21692
class PragmaOnceUnitState;
 
21693
class PragmaOnce;
 
21694
class CMatchSyntax;
 
21695
namespace Puma {
 
21696
 
 
21697
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21698
class CT_EnumDef : public CT_Decl, public CSemObject {
 
21699
#line 21700 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21700
  friend class ::CCExprResolve;
 
21701
  friend class ::CExprResolve;
 
21702
  friend class ::WinIfExists;
 
21703
  friend class ::WinImportHandler;
 
21704
  friend class ::WinMacros;
 
21705
  friend class ::WinAsm;
 
21706
  friend class ::WinDeclSpecs;
 
21707
  friend class ::WinMemberExplSpec;
 
21708
  friend class ::WinTypeKeywords;
 
21709
  friend class ::WinFriend;
 
21710
  friend class ::ExtAC;
 
21711
  friend class ::ExtACBuilderCoupling;
 
21712
  friend class ::ExtACSyntaxCoupling;
 
21713
  friend class ::ExtACTree;
 
21714
  friend class ::ExtACKeywords;
 
21715
  friend class ::ExtGnu;
 
21716
  friend class ::PragmaOnceUnitState;
 
21717
  friend class ::PragmaOnce;
 
21718
  friend class ::CMatchSyntax;
 
21719
 
 
21720
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21721
 
 
21722
  CTree *sons[3]; // key, name, enumerators
 
21723
 
 
21724
public:
 
21725
  /** Constructor.
 
21726
   *  \param k The keyword 'enum'.
 
21727
   *  \param n The name of the enumeration. */
 
21728
  CT_EnumDef (CTree *k, CTree *n) {
 
21729
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], 0); 
 
21730
  }
 
21731
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21732
  static const char *NodeId ();
 
21733
  /** Get the name of the node. Can be compared with NodeId(). */
 
21734
  const char *NodeName () const { return NodeId (); }
 
21735
  /** Get the number of sons. */
 
21736
  int Sons () const { return CTree::Sons (sons, 3); }
 
21737
  /** Get the n-th son.
 
21738
   *  \param n The index of the son.
 
21739
   *  \return The n-th son or NULL. */
 
21740
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
21741
  /** Get the name of the enumeration. */
 
21742
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
21743
  /** Set the list of enumeration constants.
 
21744
   *  \param el The enumerator list. */
 
21745
  void Enumerators (CTree *el) { AddSon (sons[2], el); }
 
21746
  /** Get the list of enumeration constants. */
 
21747
  CT_EnumeratorList *Enumerators () const { return (CT_EnumeratorList*)sons[2]; }
 
21748
  /** Replace a son.
 
21749
   *  \param old_son The son to replace.
 
21750
   *  \param new_son The new son. */
 
21751
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21752
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
21753
  }
 
21754
  /** Get the semantic information about the enumeration. */
 
21755
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
21756
public:
 
21757
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
21758
  const char *__attr_name (unsigned i) const {
 
21759
    static const char *names[] = { "sons" }; return names[i];
 
21760
  }
 
21761
  const void *__attr (unsigned __i) const {
 
21762
    switch (__i) { case 0: return &sons; default: return 0; }
 
21763
  }
 
21764
#line 2457 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21765
};
 
21766
 
 
21767
/** \class CT_Enumerator CTree.h Puma/CTree.h
 
21768
 *  Tree node representing a single enumeration constant. */
 
21769
 
 
21770
#line 21771 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21771
} // closed Puma
 
21772
class CCExprResolve;
 
21773
class CExprResolve;
 
21774
class WinIfExists;
 
21775
class WinImportHandler;
 
21776
class WinMacros;
 
21777
class WinAsm;
 
21778
class WinDeclSpecs;
 
21779
class WinMemberExplSpec;
 
21780
class WinTypeKeywords;
 
21781
class WinFriend;
 
21782
class ExtAC;
 
21783
class ExtACBuilderCoupling;
 
21784
class ExtACSyntaxCoupling;
 
21785
class ExtACTree;
 
21786
class ExtACKeywords;
 
21787
class ExtGnu;
 
21788
class PragmaOnceUnitState;
 
21789
class PragmaOnce;
 
21790
class CMatchSyntax;
 
21791
namespace Puma {
 
21792
 
 
21793
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21794
class CT_Enumerator : public CT_Decl, public CSemObject {
 
21795
#line 21796 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21796
  friend class ::CCExprResolve;
 
21797
  friend class ::CExprResolve;
 
21798
  friend class ::WinIfExists;
 
21799
  friend class ::WinImportHandler;
 
21800
  friend class ::WinMacros;
 
21801
  friend class ::WinAsm;
 
21802
  friend class ::WinDeclSpecs;
 
21803
  friend class ::WinMemberExplSpec;
 
21804
  friend class ::WinTypeKeywords;
 
21805
  friend class ::WinFriend;
 
21806
  friend class ::ExtAC;
 
21807
  friend class ::ExtACBuilderCoupling;
 
21808
  friend class ::ExtACSyntaxCoupling;
 
21809
  friend class ::ExtACTree;
 
21810
  friend class ::ExtACKeywords;
 
21811
  friend class ::ExtGnu;
 
21812
  friend class ::PragmaOnceUnitState;
 
21813
  friend class ::PragmaOnce;
 
21814
  friend class ::CMatchSyntax;
 
21815
 
 
21816
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21817
 
 
21818
  CTree *sons[2]; // name, init
 
21819
 
 
21820
public:
 
21821
  /** Constructor.
 
21822
   *  \param n The name of the enumerator. */
 
21823
  CT_Enumerator (CTree *n) { AddSon (sons[0], n); AddSon (sons[1], 0); }
 
21824
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21825
  static const char *NodeId ();
 
21826
  /** Get the name of the node. Can be compared with NodeId(). */
 
21827
  const char *NodeName () const { return NodeId (); }
 
21828
  /** Get the number of sons. */
 
21829
  int Sons () const { return CTree::Sons (sons, 2); }
 
21830
  /** Get the n-th son.
 
21831
   *  \param n The index of the son.
 
21832
   *  \return The n-th son or NULL. */
 
21833
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
21834
  /** Get the name of the enumerator. */
 
21835
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
21836
  /** Set the initializer expression of the enumerator. */
 
21837
  void Initializer (CTree *i) { AddSon (sons[1], i); }
 
21838
  /** Get the initializer expression of the enumerator. */
 
21839
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
21840
  /** Replace a son.
 
21841
   *  \param old_son The son to replace.
 
21842
   *  \param new_son The new son. */
 
21843
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21844
    CTree::ReplaceSon (sons, 2, old_son, new_son); 
 
21845
  }
 
21846
  /** Get the semantic information about the enumerator. */
 
21847
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
21848
public:
 
21849
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
21850
  const char *__attr_name (unsigned i) const {
 
21851
    static const char *names[] = { "sons" }; return names[i];
 
21852
  }
 
21853
  const void *__attr (unsigned __i) const {
 
21854
    switch (__i) { case 0: return &sons; default: return 0; }
 
21855
  }
 
21856
#line 2492 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21857
};
 
21858
 
 
21859
/** \class CT_FctDef CTree.h Puma/CTree.h
 
21860
 *  Tree node representing a function definition. 
 
21861
 *  Example:
 
21862
 *  \code
 
21863
 * int mul(int x, int y) {
 
21864
 *   return x*y;
 
21865
 * }
 
21866
 *  \endcode */
 
21867
 
 
21868
#line 21869 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21869
} // closed Puma
 
21870
class CCExprResolve;
 
21871
class CExprResolve;
 
21872
class WinIfExists;
 
21873
class WinImportHandler;
 
21874
class WinMacros;
 
21875
class WinAsm;
 
21876
class WinDeclSpecs;
 
21877
class WinMemberExplSpec;
 
21878
class WinTypeKeywords;
 
21879
class WinFriend;
 
21880
class ExtAC;
 
21881
class ExtACBuilderCoupling;
 
21882
class ExtACSyntaxCoupling;
 
21883
class ExtACTree;
 
21884
class ExtACKeywords;
 
21885
class ExtGnu;
 
21886
class PragmaOnceUnitState;
 
21887
class PragmaOnce;
 
21888
class CMatchSyntax;
 
21889
namespace Puma {
 
21890
 
 
21891
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21892
class CT_FctDef : public CT_Decl, public CSemObject {
 
21893
#line 21894 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21894
  friend class ::CCExprResolve;
 
21895
  friend class ::CExprResolve;
 
21896
  friend class ::WinIfExists;
 
21897
  friend class ::WinImportHandler;
 
21898
  friend class ::WinMacros;
 
21899
  friend class ::WinAsm;
 
21900
  friend class ::WinDeclSpecs;
 
21901
  friend class ::WinMemberExplSpec;
 
21902
  friend class ::WinTypeKeywords;
 
21903
  friend class ::WinFriend;
 
21904
  friend class ::ExtAC;
 
21905
  friend class ::ExtACBuilderCoupling;
 
21906
  friend class ::ExtACSyntaxCoupling;
 
21907
  friend class ::ExtACTree;
 
21908
  friend class ::ExtACKeywords;
 
21909
  friend class ::ExtGnu;
 
21910
  friend class ::PragmaOnceUnitState;
 
21911
  friend class ::PragmaOnce;
 
21912
  friend class ::CMatchSyntax;
 
21913
 
 
21914
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21915
 
 
21916
  CTree *sons[7]; // declspecs, declarator, try, ctor_init, args, body, handlers
 
21917
 
 
21918
public:
 
21919
  /** Constructor.
 
21920
   *  \param dss The declaration specifier sequence. 
 
21921
   *  \param d The function declarator.
 
21922
   *  \param t Optional keyword 'try' for a function try-block.
 
21923
   *  \param ci Optional constructor initializer list.
 
21924
   *  \param as Optional K&R argument declaration list.
 
21925
   *  \param b The function body.
 
21926
   *  \param hs Exception handler sequence for a function try-block. */
 
21927
  CT_FctDef (CTree *dss, CTree *d, CTree *t, CTree *ci, CTree *as, 
 
21928
             CTree *b, CTree *hs) {
 
21929
    AddSon (sons[0], dss); AddSon (sons[1], d); AddSon (sons[2], t); 
 
21930
    AddSon (sons[3], ci); AddSon (sons[4], as); AddSon (sons[5], b); 
 
21931
    AddSon (sons[6], hs); 
 
21932
  }
 
21933
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21934
  static const char *NodeId ();
 
21935
  /** Get the name of the node. Can be compared with NodeId(). */
 
21936
  const char *NodeName () const { return NodeId (); }
 
21937
  /** Get the number of sons. */
 
21938
  int Sons () const { return CTree::Sons (sons, 7); }
 
21939
  /** Get the n-th son.
 
21940
   *  \param n The index of the son.
 
21941
   *  \return The n-th son or NULL. */
 
21942
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
21943
  /** Get the declaration specifier sequence. */
 
21944
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
21945
  /** Get the function declarator. */
 
21946
  CTree *Declarator () const { return sons[1]; }
 
21947
  /** Get the 'try' keyword of the function try-block. */
 
21948
  CT_Token *TryKey () const { return (CT_Token*)sons[2]; }
 
21949
  /** Get the constructor initializer list. */
 
21950
  CTree *CtorInit () const { return sons[3]; }
 
21951
  /** Get the K&R argument declaration sequence. */
 
21952
  CT_ArgDeclSeq *ArgDeclSeq () const { return (CT_ArgDeclSeq*)sons[4]; }
 
21953
  /** Get the function body. */
 
21954
  CT_CmpdStmt *Body () const { return (CT_CmpdStmt*)sons[5]; }
 
21955
  /** Get the exception handler sequence of a function try-block. */
 
21956
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[6]; }
 
21957
  /** Get the semantic information about the function. */
 
21958
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
21959
  /** Set the constructor initializer list. 
 
21960
   *  \param i The initializer list. */
 
21961
  void CtorInit (CTree *i) { AddSon (sons[3], i); }
 
21962
  /** Set the function body.
 
21963
   *  \param b The function body. */
 
21964
  void Body (CTree *b) { AddSon (sons[5], b); }
 
21965
  /** Set the function try-block.
 
21966
   *  \param t The keyword 'try'.
 
21967
   *  \param c Optional constructor initializer list.
 
21968
   *  \param b The function body.
 
21969
   *  \param h The exception handler sequence. */
 
21970
  void FctTryBlock (CTree *t, CTree *c, CTree *b, CTree *h) { 
 
21971
    AddSon (sons[2], t); AddSon (sons[3], c); 
 
21972
    AddSon (sons[5], b); AddSon (sons[6], h);
 
21973
  }
 
21974
  /** Replace a son.
 
21975
   *  \param old_son The son to replace.
 
21976
   *  \param new_son The new son. */
 
21977
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21978
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
21979
  }
 
21980
public:
 
21981
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
21982
  const char *__attr_name (unsigned i) const {
 
21983
    static const char *names[] = { "sons" }; return names[i];
 
21984
  }
 
21985
  const void *__attr (unsigned __i) const {
 
21986
    switch (__i) { case 0: return &sons; default: return 0; }
 
21987
  }
 
21988
#line 2567 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21989
};
 
21990
 
 
21991
/** \class CT_AsmDef CTree.h Puma/CTree.h
 
21992
 *  Tree node representing an inline assembly definition. 
 
21993
 *  Example: \code asm("movl %ecx %eax"); \endcode */
 
21994
 
 
21995
#line 21996 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
21996
} // closed Puma
 
21997
class CCExprResolve;
 
21998
class CExprResolve;
 
21999
class WinIfExists;
 
22000
class WinImportHandler;
 
22001
class WinMacros;
 
22002
class WinAsm;
 
22003
class WinDeclSpecs;
 
22004
class WinMemberExplSpec;
 
22005
class WinTypeKeywords;
 
22006
class WinFriend;
 
22007
class ExtAC;
 
22008
class ExtACBuilderCoupling;
 
22009
class ExtACSyntaxCoupling;
 
22010
class ExtACTree;
 
22011
class ExtACKeywords;
 
22012
class ExtGnu;
 
22013
class PragmaOnceUnitState;
 
22014
class PragmaOnce;
 
22015
class CMatchSyntax;
 
22016
namespace Puma {
 
22017
 
 
22018
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22019
class CT_AsmDef : public CT_Decl {
 
22020
#line 22021 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22021
  friend class ::CCExprResolve;
 
22022
  friend class ::CExprResolve;
 
22023
  friend class ::WinIfExists;
 
22024
  friend class ::WinImportHandler;
 
22025
  friend class ::WinMacros;
 
22026
  friend class ::WinAsm;
 
22027
  friend class ::WinDeclSpecs;
 
22028
  friend class ::WinMemberExplSpec;
 
22029
  friend class ::WinTypeKeywords;
 
22030
  friend class ::WinFriend;
 
22031
  friend class ::ExtAC;
 
22032
  friend class ::ExtACBuilderCoupling;
 
22033
  friend class ::ExtACSyntaxCoupling;
 
22034
  friend class ::ExtACTree;
 
22035
  friend class ::ExtACKeywords;
 
22036
  friend class ::ExtGnu;
 
22037
  friend class ::PragmaOnceUnitState;
 
22038
  friend class ::PragmaOnce;
 
22039
  friend class ::CMatchSyntax;
 
22040
 
 
22041
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22042
 
 
22043
  CTree *sons[5]; // asm, open, str, close, semi_colon
 
22044
 
 
22045
public:
 
22046
  /** Constructor.
 
22047
   *  \param a The keyword 'asm'.
 
22048
   *  \param o Left parenthesis around the assembler code string. 
 
22049
   *  \param s The assembler code.
 
22050
   *  \param c Right parenthesis around the assembler code string.
 
22051
   *  \param sc Trailing semi-colon. */
 
22052
  CT_AsmDef (CTree *a, CTree *o, CTree *s, CTree *c, CTree *sc) {
 
22053
    AddSon (sons[0], a); AddSon (sons[1], o); AddSon (sons[2], s); 
 
22054
    AddSon (sons[3], c); AddSon (sons[4], sc); 
 
22055
  }
 
22056
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22057
  static const char *NodeId ();
 
22058
  /** Get the name of the node. Can be compared with NodeId(). */
 
22059
  const char *NodeName () const { return NodeId (); }
 
22060
  /** Get the number of sons. */
 
22061
  int Sons () const { return 5; }
 
22062
  /** Get the n-th son.
 
22063
   *  \param n The index of the son.
 
22064
   *  \return The n-th son or NULL. */
 
22065
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
22066
  /** Get the assembler code. */
 
22067
  CT_String *Instructions () const { return (CT_String*)sons[2]; }
 
22068
  /** Replace a son.
 
22069
   *  \param old_son The son to replace.
 
22070
   *  \param new_son The new son. */
 
22071
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22072
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
22073
  }
 
22074
public:
 
22075
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
22076
  const char *__attr_name (unsigned i) const {
 
22077
    static const char *names[] = { "sons" }; return names[i];
 
22078
  }
 
22079
  const void *__attr (unsigned __i) const {
 
22080
    switch (__i) { case 0: return &sons; default: return 0; }
 
22081
  }
 
22082
#line 2604 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22083
};
 
22084
 
 
22085
/** \class CT_Handler CTree.h Puma/CTree.h
 
22086
 *  Tree node representing an exception handler. */
 
22087
 
 
22088
#line 22089 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22089
} // closed Puma
 
22090
class CCExprResolve;
 
22091
class CExprResolve;
 
22092
class WinIfExists;
 
22093
class WinImportHandler;
 
22094
class WinMacros;
 
22095
class WinAsm;
 
22096
class WinDeclSpecs;
 
22097
class WinMemberExplSpec;
 
22098
class WinTypeKeywords;
 
22099
class WinFriend;
 
22100
class ExtAC;
 
22101
class ExtACBuilderCoupling;
 
22102
class ExtACSyntaxCoupling;
 
22103
class ExtACTree;
 
22104
class ExtACKeywords;
 
22105
class ExtGnu;
 
22106
class PragmaOnceUnitState;
 
22107
class PragmaOnce;
 
22108
class CMatchSyntax;
 
22109
namespace Puma {
 
22110
 
 
22111
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22112
class CT_Handler : public CT_Decl, public CSemScope {
 
22113
#line 22114 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22114
  friend class ::CCExprResolve;
 
22115
  friend class ::CExprResolve;
 
22116
  friend class ::WinIfExists;
 
22117
  friend class ::WinImportHandler;
 
22118
  friend class ::WinMacros;
 
22119
  friend class ::WinAsm;
 
22120
  friend class ::WinDeclSpecs;
 
22121
  friend class ::WinMemberExplSpec;
 
22122
  friend class ::WinTypeKeywords;
 
22123
  friend class ::WinFriend;
 
22124
  friend class ::ExtAC;
 
22125
  friend class ::ExtACBuilderCoupling;
 
22126
  friend class ::ExtACSyntaxCoupling;
 
22127
  friend class ::ExtACTree;
 
22128
  friend class ::ExtACKeywords;
 
22129
  friend class ::ExtGnu;
 
22130
  friend class ::PragmaOnceUnitState;
 
22131
  friend class ::PragmaOnce;
 
22132
  friend class ::CMatchSyntax;
 
22133
 
 
22134
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22135
 
 
22136
  CTree *sons[3]; // catch, exception_decl, stmt
 
22137
 
 
22138
public:
 
22139
  /** Constructor.
 
22140
   *  \param c The keyword 'catch'.
 
22141
   *  \param e The exception object declaration.
 
22142
   *  \param s The exception handling statement. */
 
22143
  CT_Handler (CTree *c, CTree *e, CTree *s) {
 
22144
    AddSon (sons[0], c); AddSon (sons[1], e); AddSon (sons[2], s);
 
22145
  }
 
22146
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22147
  static const char *NodeId ();
 
22148
  /** Get the name of the node. Can be compared with NodeId(). */
 
22149
  const char *NodeName () const { return NodeId (); }
 
22150
  /** Get the number of sons. */
 
22151
  int Sons () const { return 3; }
 
22152
  /** Get the n-th son.
 
22153
   *  \param n The index of the son.
 
22154
   *  \return The n-th son or NULL. */
 
22155
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
22156
  /** Get the exception object declaration. */
 
22157
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
22158
  /** Get the exception handling statement. */
 
22159
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
22160
  /** Replace a son.
 
22161
   *  \param old_son The son to replace.
 
22162
   *  \param new_son The new son. */
 
22163
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22164
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
22165
  }
 
22166
  /** Get the scope opened by the handler. */
 
22167
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
22168
public:
 
22169
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
22170
  const char *__attr_name (unsigned i) const {
 
22171
    static const char *names[] = { "sons" }; return names[i];
 
22172
  }
 
22173
  const void *__attr (unsigned __i) const {
 
22174
    switch (__i) { case 0: return &sons; default: return 0; }
 
22175
  }
 
22176
#line 2641 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22177
};
 
22178
 
 
22179
/** \class CT_LinkageSpec CTree.h Puma/CTree.h
 
22180
 *  Tree node representing a list of declaration with a specific linkage. */
 
22181
 
 
22182
#line 22183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22183
} // closed Puma
 
22184
class CCExprResolve;
 
22185
class CExprResolve;
 
22186
class WinIfExists;
 
22187
class WinImportHandler;
 
22188
class WinMacros;
 
22189
class WinAsm;
 
22190
class WinDeclSpecs;
 
22191
class WinMemberExplSpec;
 
22192
class WinTypeKeywords;
 
22193
class WinFriend;
 
22194
class ExtAC;
 
22195
class ExtACBuilderCoupling;
 
22196
class ExtACSyntaxCoupling;
 
22197
class ExtACTree;
 
22198
class ExtACKeywords;
 
22199
class ExtGnu;
 
22200
class PragmaOnceUnitState;
 
22201
class PragmaOnce;
 
22202
class CMatchSyntax;
 
22203
namespace Puma {
 
22204
 
 
22205
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22206
class CT_LinkageSpec : public CT_Decl {
 
22207
#line 22208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22208
  friend class ::CCExprResolve;
 
22209
  friend class ::CExprResolve;
 
22210
  friend class ::WinIfExists;
 
22211
  friend class ::WinImportHandler;
 
22212
  friend class ::WinMacros;
 
22213
  friend class ::WinAsm;
 
22214
  friend class ::WinDeclSpecs;
 
22215
  friend class ::WinMemberExplSpec;
 
22216
  friend class ::WinTypeKeywords;
 
22217
  friend class ::WinFriend;
 
22218
  friend class ::ExtAC;
 
22219
  friend class ::ExtACBuilderCoupling;
 
22220
  friend class ::ExtACSyntaxCoupling;
 
22221
  friend class ::ExtACTree;
 
22222
  friend class ::ExtACKeywords;
 
22223
  friend class ::ExtGnu;
 
22224
  friend class ::PragmaOnceUnitState;
 
22225
  friend class ::PragmaOnce;
 
22226
  friend class ::CMatchSyntax;
 
22227
 
 
22228
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22229
 
 
22230
  CTree *sons[5]; // extern, str, open, decls, close
 
22231
 
 
22232
public:
 
22233
  /** Constructor.
 
22234
   *  \param e The keyword 'extern'.
 
22235
   *  \param s The linkage identifier, e.g. "C".
 
22236
   *  \param o Left parenthesis around the declaration list.
 
22237
   *  \param d The list of declarations.
 
22238
   *  \param c Right parenthesis around the declaration list. */
 
22239
  CT_LinkageSpec (CTree *e, CTree *s, CTree *o, CTree *d, CTree *c) {
 
22240
    AddSon (sons[0], e); AddSon (sons[1], s); AddSon (sons[2], o); 
 
22241
    AddSon (sons[3], d); AddSon (sons[4], c);
 
22242
    if (isList ())
 
22243
      ((CT_DeclList*)Decls ())->Linkage (this);
 
22244
    else
 
22245
      ((CT_Decl*)Decls ())->Linkage (this);
 
22246
  }
 
22247
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22248
  static const char *NodeId ();
 
22249
  /** Get the name of the node. Can be compared with NodeId(). */
 
22250
  const char *NodeName () const { return NodeId (); }
 
22251
  /** Get the number of sons. */
 
22252
  int Sons () const { return CTree::Sons (sons, 5); }
 
22253
  /** Get the n-th son.
 
22254
   *  \param n The index of the son.
 
22255
   *  \return The n-th son or NULL. */
 
22256
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
22257
  /** Get the linkage identifier. */
 
22258
  CT_String *Linkage () const { return (CT_String*)sons[1]; }
 
22259
  /** Get the list declarations. */
 
22260
  CTree *Decls () const { return sons[3]; }
 
22261
  /** Check if there is more than one enclosed declaration. 
 
22262
   *  In this case the node returned by Decls() is a CT_DeclList
 
22263
   *  node. */
 
22264
  bool isList () const {
 
22265
    return Decls ()->NodeName () == CT_DeclList::NodeId ();
 
22266
  }
 
22267
  /** Replace a son.
 
22268
   *  \param old_son The son to replace.
 
22269
   *  \param new_son The new son. */
 
22270
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22271
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
22272
  }
 
22273
public:
 
22274
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
22275
  const char *__attr_name (unsigned i) const {
 
22276
    static const char *names[] = { "sons" }; return names[i];
 
22277
  }
 
22278
  const void *__attr (unsigned __i) const {
 
22279
    switch (__i) { case 0: return &sons; default: return 0; }
 
22280
  }
 
22281
#line 2689 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22282
};
 
22283
 
 
22284
/** \class CT_ArgDecl CTree.h Puma/CTree.h
 
22285
 *  Tree node representing the declaration of a function parameter. */
 
22286
 
 
22287
#line 22288 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22288
} // closed Puma
 
22289
class CCExprResolve;
 
22290
class CExprResolve;
 
22291
class WinIfExists;
 
22292
class WinImportHandler;
 
22293
class WinMacros;
 
22294
class WinAsm;
 
22295
class WinDeclSpecs;
 
22296
class WinMemberExplSpec;
 
22297
class WinTypeKeywords;
 
22298
class WinFriend;
 
22299
class ExtAC;
 
22300
class ExtACBuilderCoupling;
 
22301
class ExtACSyntaxCoupling;
 
22302
class ExtACTree;
 
22303
class ExtACKeywords;
 
22304
class ExtGnu;
 
22305
class PragmaOnceUnitState;
 
22306
class PragmaOnce;
 
22307
class CMatchSyntax;
 
22308
namespace Puma {
 
22309
 
 
22310
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22311
class CT_ArgDecl : public CT_Decl, public CSemObject {
 
22312
#line 22313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22313
  friend class ::CCExprResolve;
 
22314
  friend class ::CExprResolve;
 
22315
  friend class ::WinIfExists;
 
22316
  friend class ::WinImportHandler;
 
22317
  friend class ::WinMacros;
 
22318
  friend class ::WinAsm;
 
22319
  friend class ::WinDeclSpecs;
 
22320
  friend class ::WinMemberExplSpec;
 
22321
  friend class ::WinTypeKeywords;
 
22322
  friend class ::WinFriend;
 
22323
  friend class ::ExtAC;
 
22324
  friend class ::ExtACBuilderCoupling;
 
22325
  friend class ::ExtACSyntaxCoupling;
 
22326
  friend class ::ExtACTree;
 
22327
  friend class ::ExtACKeywords;
 
22328
  friend class ::ExtGnu;
 
22329
  friend class ::PragmaOnceUnitState;
 
22330
  friend class ::PragmaOnce;
 
22331
  friend class ::CMatchSyntax;
 
22332
 
 
22333
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22334
 
 
22335
  CTree *sons[4]; // declspecs, declarator, init, ellipsis
 
22336
 
 
22337
public:
 
22338
  /** Constructor.
 
22339
   *  \param dsl The declaration specifier sequence.
 
22340
   *  \param d The parameter declarator. */
 
22341
  CT_ArgDecl (CTree *dsl, CTree *d) {
 
22342
    AddSon (sons[0], dsl); AddSon (sons[1], d); 
 
22343
    AddSon (sons[2], 0); AddSon (sons[3], 0); 
 
22344
  }
 
22345
  /** Constructor.
 
22346
   *  \param ellipsis The variable argument list operator "...". */
 
22347
  CT_ArgDecl (CTree *ellipsis) {
 
22348
    AddSon (sons[0], 0); AddSon (sons[1], 0); 
 
22349
    AddSon (sons[2], 0); AddSon (sons[3], ellipsis); 
 
22350
  }
 
22351
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22352
  static const char *NodeId ();
 
22353
  /** Get the name of the node. Can be compared with NodeId(). */
 
22354
  const char *NodeName () const { return NodeId (); }
 
22355
  /** Get the number of sons. */
 
22356
  int Sons () const { return CTree::Sons (sons, 4); }
 
22357
  /** Get the n-th son.
 
22358
   *  \param n The index of the son.
 
22359
   *  \return The n-th son or NULL. */
 
22360
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
22361
  /** Get the declaration specifier sequence. */
 
22362
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
22363
  /** Get the function parameter declarator. */
 
22364
  CTree *Declarator () const { return sons[1]; }
 
22365
  /** Get the default argument. */
 
22366
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
22367
  /** Get the variable argument list operator. */
 
22368
  CT_Token *Ellipsis () const { return (CT_Token*)sons[3]; }
 
22369
  /** Get the semantic information about the function parameter. */
 
22370
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
22371
  /** Set the default argument. */
 
22372
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
22373
  /** Replace a son.
 
22374
   *  \param old_son The son to replace.
 
22375
   *  \param new_son The new son. */
 
22376
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22377
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
22378
  }
 
22379
public:
 
22380
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
22381
  const char *__attr_name (unsigned i) const {
 
22382
    static const char *names[] = { "sons" }; return names[i];
 
22383
  }
 
22384
  const void *__attr (unsigned __i) const {
 
22385
    switch (__i) { case 0: return &sons; default: return 0; }
 
22386
  }
 
22387
#line 2738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22388
};
 
22389
 
 
22390
/** \class CT_ArgDeclList CTree.h Puma/CTree.h
 
22391
 *  Tree node representing a function parameter list. */
 
22392
 
 
22393
#line 22394 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22394
} // closed Puma
 
22395
class CCExprResolve;
 
22396
class CExprResolve;
 
22397
class WinIfExists;
 
22398
class WinImportHandler;
 
22399
class WinMacros;
 
22400
class WinAsm;
 
22401
class WinDeclSpecs;
 
22402
class WinMemberExplSpec;
 
22403
class WinTypeKeywords;
 
22404
class WinFriend;
 
22405
class ExtAC;
 
22406
class ExtACBuilderCoupling;
 
22407
class ExtACSyntaxCoupling;
 
22408
class ExtACTree;
 
22409
class ExtACKeywords;
 
22410
class ExtGnu;
 
22411
class PragmaOnceUnitState;
 
22412
class PragmaOnce;
 
22413
class CMatchSyntax;
 
22414
namespace Puma {
 
22415
 
 
22416
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22417
class CT_ArgDeclList : public CT_DeclList, public CSemScope {
 
22418
#line 22419 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22419
  friend class ::CCExprResolve;
 
22420
  friend class ::CExprResolve;
 
22421
  friend class ::WinIfExists;
 
22422
  friend class ::WinImportHandler;
 
22423
  friend class ::WinMacros;
 
22424
  friend class ::WinAsm;
 
22425
  friend class ::WinDeclSpecs;
 
22426
  friend class ::WinMemberExplSpec;
 
22427
  friend class ::WinTypeKeywords;
 
22428
  friend class ::WinFriend;
 
22429
  friend class ::ExtAC;
 
22430
  friend class ::ExtACBuilderCoupling;
 
22431
  friend class ::ExtACSyntaxCoupling;
 
22432
  friend class ::ExtACTree;
 
22433
  friend class ::ExtACKeywords;
 
22434
  friend class ::ExtGnu;
 
22435
  friend class ::PragmaOnceUnitState;
 
22436
  friend class ::PragmaOnce;
 
22437
  friend class ::CMatchSyntax;
 
22438
 
 
22439
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22440
 
 
22441
public:
 
22442
  /** Constructor.
 
22443
   *  \param size The initial size of the list.
 
22444
   *  \param props The list properties. */
 
22445
  CT_ArgDeclList (int size = 2, int props = SEPARATORS | OPEN_CLOSE) : 
 
22446
   CT_DeclList (size, 2) { AddProperties (props); }
 
22447
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22448
  static const char *NodeId ();
 
22449
  /** Get the name of the node. Can be compared with NodeId(). */
 
22450
  const char *NodeName () const { return NodeId (); }
 
22451
  /** Get the scope opened by the parameter list. */
 
22452
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
22453
public:
 
22454
  typedef AC::TLE __AttrTypes;
 
22455
  const char *__attr_name (unsigned i) const { return 0; }
 
22456
  const void *__attr (unsigned __i) const { return 0; }
 
22457
#line 2755 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22458
};
 
22459
 
 
22460
/** \class CT_ArgDeclSeq CTree.h Puma/CTree.h
 
22461
 *  Tree node representing a K&R function parameter declarations list. */
 
22462
 
 
22463
#line 22464 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22464
} // closed Puma
 
22465
class CCExprResolve;
 
22466
class CExprResolve;
 
22467
class WinIfExists;
 
22468
class WinImportHandler;
 
22469
class WinMacros;
 
22470
class WinAsm;
 
22471
class WinDeclSpecs;
 
22472
class WinMemberExplSpec;
 
22473
class WinTypeKeywords;
 
22474
class WinFriend;
 
22475
class ExtAC;
 
22476
class ExtACBuilderCoupling;
 
22477
class ExtACSyntaxCoupling;
 
22478
class ExtACTree;
 
22479
class ExtACKeywords;
 
22480
class ExtGnu;
 
22481
class PragmaOnceUnitState;
 
22482
class PragmaOnce;
 
22483
class CMatchSyntax;
 
22484
namespace Puma {
 
22485
 
 
22486
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22487
class CT_ArgDeclSeq : public CT_DeclList, public CSemScope {
 
22488
#line 22489 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22489
  friend class ::CCExprResolve;
 
22490
  friend class ::CExprResolve;
 
22491
  friend class ::WinIfExists;
 
22492
  friend class ::WinImportHandler;
 
22493
  friend class ::WinMacros;
 
22494
  friend class ::WinAsm;
 
22495
  friend class ::WinDeclSpecs;
 
22496
  friend class ::WinMemberExplSpec;
 
22497
  friend class ::WinTypeKeywords;
 
22498
  friend class ::WinFriend;
 
22499
  friend class ::ExtAC;
 
22500
  friend class ::ExtACBuilderCoupling;
 
22501
  friend class ::ExtACSyntaxCoupling;
 
22502
  friend class ::ExtACTree;
 
22503
  friend class ::ExtACKeywords;
 
22504
  friend class ::ExtGnu;
 
22505
  friend class ::PragmaOnceUnitState;
 
22506
  friend class ::PragmaOnce;
 
22507
  friend class ::CMatchSyntax;
 
22508
 
 
22509
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22510
 
 
22511
public:
 
22512
  /** Constructor.
 
22513
   *  \param size The initial size of the list. */
 
22514
  CT_ArgDeclSeq (int size = 2) : CT_DeclList (size, 2) {}
 
22515
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22516
  static const char *NodeId ();
 
22517
  /** Get the name of the node. Can be compared with NodeId(). */
 
22518
  const char *NodeName () const { return NodeId (); }
 
22519
  /** Get the scope opened by the parameter declarations list. */
 
22520
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
22521
public:
 
22522
  typedef AC::TLE __AttrTypes;
 
22523
  const char *__attr_name (unsigned i) const { return 0; }
 
22524
  const void *__attr (unsigned __i) const { return 0; }
 
22525
#line 2770 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22526
};
 
22527
 
 
22528
/** \class CT_ArgNameList CTree.h Puma/CTree.h
 
22529
 *  Tree node representing a K&R function parameter name list. */
 
22530
 
 
22531
#line 22532 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22532
} // closed Puma
 
22533
class CCExprResolve;
 
22534
class CExprResolve;
 
22535
class WinIfExists;
 
22536
class WinImportHandler;
 
22537
class WinMacros;
 
22538
class WinAsm;
 
22539
class WinDeclSpecs;
 
22540
class WinMemberExplSpec;
 
22541
class WinTypeKeywords;
 
22542
class WinFriend;
 
22543
class ExtAC;
 
22544
class ExtACBuilderCoupling;
 
22545
class ExtACSyntaxCoupling;
 
22546
class ExtACTree;
 
22547
class ExtACKeywords;
 
22548
class ExtGnu;
 
22549
class PragmaOnceUnitState;
 
22550
class PragmaOnce;
 
22551
class CMatchSyntax;
 
22552
namespace Puma {
 
22553
 
 
22554
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22555
class CT_ArgNameList : public CT_ArgDeclList {
 
22556
#line 22557 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22557
  friend class ::CCExprResolve;
 
22558
  friend class ::CExprResolve;
 
22559
  friend class ::WinIfExists;
 
22560
  friend class ::WinImportHandler;
 
22561
  friend class ::WinMacros;
 
22562
  friend class ::WinAsm;
 
22563
  friend class ::WinDeclSpecs;
 
22564
  friend class ::WinMemberExplSpec;
 
22565
  friend class ::WinTypeKeywords;
 
22566
  friend class ::WinFriend;
 
22567
  friend class ::ExtAC;
 
22568
  friend class ::ExtACBuilderCoupling;
 
22569
  friend class ::ExtACSyntaxCoupling;
 
22570
  friend class ::ExtACTree;
 
22571
  friend class ::ExtACKeywords;
 
22572
  friend class ::ExtGnu;
 
22573
  friend class ::PragmaOnceUnitState;
 
22574
  friend class ::PragmaOnce;
 
22575
  friend class ::CMatchSyntax;
 
22576
 
 
22577
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22578
 
 
22579
public:
 
22580
  /** Constructor. */
 
22581
  CT_ArgNameList () : CT_ArgDeclList () {}
 
22582
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22583
  static const char *NodeId ();
 
22584
  /** Get the name of the node. Can be compared with NodeId(). */
 
22585
  const char *NodeName () const { return NodeId (); }
 
22586
public:
 
22587
  typedef AC::TLE __AttrTypes;
 
22588
  const char *__attr_name (unsigned i) const { return 0; }
 
22589
  const void *__attr (unsigned __i) const { return 0; }
 
22590
#line 2782 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22591
};
 
22592
 
 
22593
/** \class CT_NamespaceDef CTree.h Puma/CTree.h
 
22594
 *  Tree node representing a namespace definition.
 
22595
 *  Example: \code namespace a {} \endcode */
 
22596
 
 
22597
#line 22598 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22598
} // closed Puma
 
22599
class CCExprResolve;
 
22600
class CExprResolve;
 
22601
class WinIfExists;
 
22602
class WinImportHandler;
 
22603
class WinMacros;
 
22604
class WinAsm;
 
22605
class WinDeclSpecs;
 
22606
class WinMemberExplSpec;
 
22607
class WinTypeKeywords;
 
22608
class WinFriend;
 
22609
class ExtAC;
 
22610
class ExtACBuilderCoupling;
 
22611
class ExtACSyntaxCoupling;
 
22612
class ExtACTree;
 
22613
class ExtACKeywords;
 
22614
class ExtGnu;
 
22615
class PragmaOnceUnitState;
 
22616
class PragmaOnce;
 
22617
class CMatchSyntax;
 
22618
namespace Puma {
 
22619
 
 
22620
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22621
class CT_NamespaceDef : public CT_Decl, public CSemObject {
 
22622
#line 22623 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22623
  friend class ::CCExprResolve;
 
22624
  friend class ::CExprResolve;
 
22625
  friend class ::WinIfExists;
 
22626
  friend class ::WinImportHandler;
 
22627
  friend class ::WinMacros;
 
22628
  friend class ::WinAsm;
 
22629
  friend class ::WinDeclSpecs;
 
22630
  friend class ::WinMemberExplSpec;
 
22631
  friend class ::WinTypeKeywords;
 
22632
  friend class ::WinFriend;
 
22633
  friend class ::ExtAC;
 
22634
  friend class ::ExtACBuilderCoupling;
 
22635
  friend class ::ExtACSyntaxCoupling;
 
22636
  friend class ::ExtACTree;
 
22637
  friend class ::ExtACKeywords;
 
22638
  friend class ::ExtGnu;
 
22639
  friend class ::PragmaOnceUnitState;
 
22640
  friend class ::PragmaOnce;
 
22641
  friend class ::CMatchSyntax;
 
22642
 
 
22643
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22644
 
 
22645
  CTree *sons[3]; // ns, name, members
 
22646
 
 
22647
public:
 
22648
  /** Constructor.
 
22649
   *  \param n The keyword 'namespace'.
 
22650
   *  \param nm The name of the namespace. */
 
22651
  CT_NamespaceDef (CTree *n, CTree *nm) {
 
22652
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], 0); 
 
22653
  }
 
22654
  /** Constructor.
 
22655
   *  \param n The keyword 'namespace'.
 
22656
   *  \param nm The name of the namespace. 
 
22657
   *  \param m The namespace member declarations list. */
 
22658
  CT_NamespaceDef (CTree *n, CTree *nm, CTree *m) {
 
22659
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], m); 
 
22660
  }
 
22661
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22662
  static const char *NodeId ();
 
22663
  /** Get the name of the node. Can be compared with NodeId(). */
 
22664
  const char *NodeName () const { return NodeId (); }
 
22665
  /** Get the number of sons. */
 
22666
  int Sons () const { return CTree::Sons (sons, 3); }
 
22667
  /** Get the n-th son.
 
22668
   *  \param n The index of the son.
 
22669
   *  \return The n-th son or NULL. */
 
22670
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
22671
  /** Set the namespace member declarations list. */
 
22672
  void Members (CTree *m) { AddSon (sons[2], m); }
 
22673
  /** Get the namespace member declarations list. */
 
22674
  CT_MembList *Members () const { return (CT_MembList*)sons[2]; }
 
22675
  /** Get the name of the namespace. */
 
22676
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
22677
  /** Get the semantic information about the namespace. */
 
22678
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
22679
  /** Replace a son.
 
22680
   *  \param old_son The son to replace.
 
22681
   *  \param new_son The new son. */
 
22682
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22683
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
22684
  }
 
22685
public:
 
22686
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
22687
  const char *__attr_name (unsigned i) const {
 
22688
    static const char *names[] = { "sons" }; return names[i];
 
22689
  }
 
22690
  const void *__attr (unsigned __i) const {
 
22691
    switch (__i) { case 0: return &sons; default: return 0; }
 
22692
  }
 
22693
#line 2828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22694
};
 
22695
 
 
22696
/** \class CT_NamespaceAliasDef CTree.h Puma/CTree.h
 
22697
 *  Tree node representing a namespace alias definition.
 
22698
 *  Example: \code namespace b = a; \endcode */
 
22699
 
 
22700
#line 22701 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22701
} // closed Puma
 
22702
class CCExprResolve;
 
22703
class CExprResolve;
 
22704
class WinIfExists;
 
22705
class WinImportHandler;
 
22706
class WinMacros;
 
22707
class WinAsm;
 
22708
class WinDeclSpecs;
 
22709
class WinMemberExplSpec;
 
22710
class WinTypeKeywords;
 
22711
class WinFriend;
 
22712
class ExtAC;
 
22713
class ExtACBuilderCoupling;
 
22714
class ExtACSyntaxCoupling;
 
22715
class ExtACTree;
 
22716
class ExtACKeywords;
 
22717
class ExtGnu;
 
22718
class PragmaOnceUnitState;
 
22719
class PragmaOnce;
 
22720
class CMatchSyntax;
 
22721
namespace Puma {
 
22722
 
 
22723
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22724
class CT_NamespaceAliasDef : public CT_Decl, public CSemObject {
 
22725
#line 22726 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22726
  friend class ::CCExprResolve;
 
22727
  friend class ::CExprResolve;
 
22728
  friend class ::WinIfExists;
 
22729
  friend class ::WinImportHandler;
 
22730
  friend class ::WinMacros;
 
22731
  friend class ::WinAsm;
 
22732
  friend class ::WinDeclSpecs;
 
22733
  friend class ::WinMemberExplSpec;
 
22734
  friend class ::WinTypeKeywords;
 
22735
  friend class ::WinFriend;
 
22736
  friend class ::ExtAC;
 
22737
  friend class ::ExtACBuilderCoupling;
 
22738
  friend class ::ExtACSyntaxCoupling;
 
22739
  friend class ::ExtACTree;
 
22740
  friend class ::ExtACKeywords;
 
22741
  friend class ::ExtGnu;
 
22742
  friend class ::PragmaOnceUnitState;
 
22743
  friend class ::PragmaOnce;
 
22744
  friend class ::CMatchSyntax;
 
22745
 
 
22746
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22747
 
 
22748
  CTree *sons[5]; // ns, alias, assign, name, semi_colon
 
22749
 
 
22750
public:
 
22751
  /** Constructor.
 
22752
   *  \param n The keyword 'namespace'.
 
22753
   *  \param a The name of the namespace alias.
 
22754
   *  \param as The assignment operator '='.
 
22755
   *  \param nm The name of the original namespace.
 
22756
   *  \param s The trailing semi-colon. */
 
22757
  CT_NamespaceAliasDef (CTree *n, CTree *a, CTree *as, CTree *nm, CTree *s) {
 
22758
    AddSon (sons[0], n); AddSon (sons[1], a); AddSon (sons[2], as); 
 
22759
    AddSon (sons[3], nm); AddSon (sons[4], s); 
 
22760
  }
 
22761
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22762
  static const char *NodeId ();
 
22763
  /** Get the name of the node. Can be compared with NodeId(). */
 
22764
  const char *NodeName () const { return NodeId (); }
 
22765
  /** Get the number of sons. */
 
22766
  int Sons () const { return 5; }
 
22767
  /** Get the n-th son.
 
22768
   *  \param n The index of the son.
 
22769
   *  \return The n-th son or NULL. */
 
22770
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
22771
  /** Get the name of the original namespace. */
 
22772
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[3]; }
 
22773
  /** Get the name of the namespace alias. */
 
22774
  CT_SimpleName *Alias () const { return (CT_SimpleName*)sons[1]; }
 
22775
  /** Get the semantic information about the namespace alias. */
 
22776
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
22777
  /** Replace a son.
 
22778
   *  \param old_son The son to replace.
 
22779
   *  \param new_son The new son. */
 
22780
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22781
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
22782
  }
 
22783
public:
 
22784
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
22785
  const char *__attr_name (unsigned i) const {
 
22786
    static const char *names[] = { "sons" }; return names[i];
 
22787
  }
 
22788
  const void *__attr (unsigned __i) const {
 
22789
    switch (__i) { case 0: return &sons; default: return 0; }
 
22790
  }
 
22791
#line 2869 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22792
};
 
22793
 
 
22794
/** \class CT_UsingDirective CTree.h Puma/CTree.h
 
22795
 *  Tree node representing a namespace using directive.
 
22796
 *  Example: \code using namespace std; \endcode */
 
22797
 
 
22798
#line 22799 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22799
} // closed Puma
 
22800
class CCExprResolve;
 
22801
class CExprResolve;
 
22802
class WinIfExists;
 
22803
class WinImportHandler;
 
22804
class WinMacros;
 
22805
class WinAsm;
 
22806
class WinDeclSpecs;
 
22807
class WinMemberExplSpec;
 
22808
class WinTypeKeywords;
 
22809
class WinFriend;
 
22810
class ExtAC;
 
22811
class ExtACBuilderCoupling;
 
22812
class ExtACSyntaxCoupling;
 
22813
class ExtACTree;
 
22814
class ExtACKeywords;
 
22815
class ExtGnu;
 
22816
class PragmaOnceUnitState;
 
22817
class PragmaOnce;
 
22818
class CMatchSyntax;
 
22819
namespace Puma {
 
22820
 
 
22821
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22822
class CT_UsingDirective : public CT_Decl {
 
22823
#line 22824 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22824
  friend class ::CCExprResolve;
 
22825
  friend class ::CExprResolve;
 
22826
  friend class ::WinIfExists;
 
22827
  friend class ::WinImportHandler;
 
22828
  friend class ::WinMacros;
 
22829
  friend class ::WinAsm;
 
22830
  friend class ::WinDeclSpecs;
 
22831
  friend class ::WinMemberExplSpec;
 
22832
  friend class ::WinTypeKeywords;
 
22833
  friend class ::WinFriend;
 
22834
  friend class ::ExtAC;
 
22835
  friend class ::ExtACBuilderCoupling;
 
22836
  friend class ::ExtACSyntaxCoupling;
 
22837
  friend class ::ExtACTree;
 
22838
  friend class ::ExtACKeywords;
 
22839
  friend class ::ExtGnu;
 
22840
  friend class ::PragmaOnceUnitState;
 
22841
  friend class ::PragmaOnce;
 
22842
  friend class ::CMatchSyntax;
 
22843
 
 
22844
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22845
 
 
22846
  CTree *sons[4]; // using, ns, name, semi_colon
 
22847
 
 
22848
public:
 
22849
  /** Constructor. 
 
22850
   *  \param u The keyword 'using'.
 
22851
   *  \param ns The keyword 'namespace'. 
 
22852
   *  \param n The name of the namespace.
 
22853
   *  \param s The trailing semi-colon. */
 
22854
  CT_UsingDirective (CTree *u, CTree *ns, CTree *n, CTree *s) {
 
22855
    AddSon (sons[0], u); AddSon (sons[1], ns); AddSon (sons[2], n); 
 
22856
    AddSon (sons[3], s); 
 
22857
  }
 
22858
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22859
  static const char *NodeId ();
 
22860
  /** Get the name of the node. Can be compared with NodeId(). */
 
22861
  const char *NodeName () const { return NodeId (); }
 
22862
  /** Get the number of sons. */
 
22863
  int Sons () const { return 4; }
 
22864
  /** Get the n-th son.
 
22865
   *  \param n The index of the son.
 
22866
   *  \return The n-th son or NULL. */
 
22867
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
22868
  /** Get the name of the namespace. */
 
22869
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
22870
  /** Replace a son.
 
22871
   *  \param old_son The son to replace.
 
22872
   *  \param new_son The new son. */
 
22873
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22874
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
22875
  }
 
22876
public:
 
22877
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
22878
  const char *__attr_name (unsigned i) const {
 
22879
    static const char *names[] = { "sons" }; return names[i];
 
22880
  }
 
22881
  const void *__attr (unsigned __i) const {
 
22882
    switch (__i) { case 0: return &sons; default: return 0; }
 
22883
  }
 
22884
#line 2905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22885
};
 
22886
 
 
22887
/*****************************************************************************/
 
22888
/*                                                                           */
 
22889
/*                              Declarators                                  */
 
22890
/*                                                                           */
 
22891
/*****************************************************************************/
 
22892
 
 
22893
/** \class CT_Declarator CTree.h Puma/CTree.h
 
22894
 *  Base class for all tree nodes representing declarators. */
 
22895
 
 
22896
#line 22897 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22897
} // closed Puma
 
22898
class CCExprResolve;
 
22899
class CExprResolve;
 
22900
class WinIfExists;
 
22901
class WinImportHandler;
 
22902
class WinMacros;
 
22903
class WinAsm;
 
22904
class WinDeclSpecs;
 
22905
class WinMemberExplSpec;
 
22906
class WinTypeKeywords;
 
22907
class WinFriend;
 
22908
class ExtAC;
 
22909
class ExtACBuilderCoupling;
 
22910
class ExtACSyntaxCoupling;
 
22911
class ExtACTree;
 
22912
class ExtACKeywords;
 
22913
class ExtGnu;
 
22914
class PragmaOnceUnitState;
 
22915
class PragmaOnce;
 
22916
class CMatchSyntax;
 
22917
namespace Puma {
 
22918
 
 
22919
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22920
class CT_Declarator : public CTree {
 
22921
#line 22922 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22922
  friend class ::CCExprResolve;
 
22923
  friend class ::CExprResolve;
 
22924
  friend class ::WinIfExists;
 
22925
  friend class ::WinImportHandler;
 
22926
  friend class ::WinMacros;
 
22927
  friend class ::WinAsm;
 
22928
  friend class ::WinDeclSpecs;
 
22929
  friend class ::WinMemberExplSpec;
 
22930
  friend class ::WinTypeKeywords;
 
22931
  friend class ::WinFriend;
 
22932
  friend class ::ExtAC;
 
22933
  friend class ::ExtACBuilderCoupling;
 
22934
  friend class ::ExtACSyntaxCoupling;
 
22935
  friend class ::ExtACTree;
 
22936
  friend class ::ExtACKeywords;
 
22937
  friend class ::ExtGnu;
 
22938
  friend class ::PragmaOnceUnitState;
 
22939
  friend class ::PragmaOnce;
 
22940
  friend class ::CMatchSyntax;
 
22941
 
 
22942
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22943
 
 
22944
protected:
 
22945
  /** Constructor. */
 
22946
  CT_Declarator () {}
 
22947
 
 
22948
public:
 
22949
  /** Get the declarator. */
 
22950
  virtual CTree *Declarator () const = 0;
 
22951
  /** Get this. */
 
22952
  virtual CT_Declarator *IsDeclarator () { return this; }
 
22953
  /** Get the declared name. */
 
22954
  CT_SimpleName *Name ();
 
22955
  /** Get the declared name and set last_declarator to 
 
22956
   *  the declarator containing the name. 
 
22957
   *  \param last_declarator To be set to the declarator containing the name. */
 
22958
  CT_SimpleName *Name (CT_Declarator *&last_declarator);
 
22959
public:
 
22960
  typedef AC::TLE __AttrTypes;
 
22961
  const char *__attr_name (unsigned i) const { return 0; }
 
22962
  const void *__attr (unsigned __i) const { return 0; }
 
22963
#line 2931 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22964
};
 
22965
 
 
22966
/** \class CT_InitDeclarator CTree.h Puma/CTree.h
 
22967
 *  Tree node representing a declarator with initializer.
 
22968
 *  Example: \code int *i = 0; \endcode */
 
22969
 
 
22970
#line 22971 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22971
} // closed Puma
 
22972
class CCExprResolve;
 
22973
class CExprResolve;
 
22974
class WinIfExists;
 
22975
class WinImportHandler;
 
22976
class WinMacros;
 
22977
class WinAsm;
 
22978
class WinDeclSpecs;
 
22979
class WinMemberExplSpec;
 
22980
class WinTypeKeywords;
 
22981
class WinFriend;
 
22982
class ExtAC;
 
22983
class ExtACBuilderCoupling;
 
22984
class ExtACSyntaxCoupling;
 
22985
class ExtACTree;
 
22986
class ExtACKeywords;
 
22987
class ExtGnu;
 
22988
class PragmaOnceUnitState;
 
22989
class PragmaOnce;
 
22990
class CMatchSyntax;
 
22991
namespace Puma {
 
22992
 
 
22993
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22994
class CT_InitDeclarator : public CT_Declarator, public CSemObject {
 
22995
#line 22996 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
22996
  friend class ::CCExprResolve;
 
22997
  friend class ::CExprResolve;
 
22998
  friend class ::WinIfExists;
 
22999
  friend class ::WinImportHandler;
 
23000
  friend class ::WinMacros;
 
23001
  friend class ::WinAsm;
 
23002
  friend class ::WinDeclSpecs;
 
23003
  friend class ::WinMemberExplSpec;
 
23004
  friend class ::WinTypeKeywords;
 
23005
  friend class ::WinFriend;
 
23006
  friend class ::ExtAC;
 
23007
  friend class ::ExtACBuilderCoupling;
 
23008
  friend class ::ExtACSyntaxCoupling;
 
23009
  friend class ::ExtACTree;
 
23010
  friend class ::ExtACKeywords;
 
23011
  friend class ::ExtGnu;
 
23012
  friend class ::PragmaOnceUnitState;
 
23013
  friend class ::PragmaOnce;
 
23014
  friend class ::CMatchSyntax;
 
23015
 
 
23016
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23017
 
 
23018
  CTree *sons[3]; // declarator, ext, init
 
23019
  CTree *obj_decl;
 
23020
 
 
23021
public:
 
23022
  /** Constructor.
 
23023
   *  \param d The declarator.
 
23024
   *  \param e Optional extension list.
 
23025
   *  \param i The initializer. */
 
23026
  CT_InitDeclarator (CTree *d, CTree *e = 0, CTree *i = 0) {
 
23027
    AddSon (sons[0], d); AddSon (sons[1], e); AddSon (sons[2], i);
 
23028
    AddSon (obj_decl, 0); 
 
23029
  }
 
23030
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23031
  static const char *NodeId ();
 
23032
  /** Get the name of the node. Can be compared with NodeId(). */
 
23033
  const char *NodeName () const { return NodeId (); }
 
23034
  /** Get the number of sons. */
 
23035
  int Sons () const { return CTree::Sons (sons, 3); }
 
23036
  /** Get the n-th son.
 
23037
   *  \param n The index of the son.
 
23038
   *  \return The n-th son or NULL. */
 
23039
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
23040
  /** Get the declarator. */
 
23041
  CTree *Declarator () const { return sons[0]; }
 
23042
  /** Get the extensions list. */
 
23043
  CTree *Extension () const { return sons[1]; }
 
23044
  /** Get the initializer. */
 
23045
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
23046
  /** Get the semantic information about the declared object. */
 
23047
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
23048
  /** Get the object declaration node containing the declarator. */
 
23049
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
23050
  /** Set the initializer. */
 
23051
  void Initializer (CTree* i) { AddSon (sons[2], i); }
 
23052
  /** Set the extensions list. */
 
23053
  void Extension (CTree* e) { AddSon (sons[1], e); }
 
23054
  /** Set the object declaration node containing the declarator. 
 
23055
   *  \param od The object declaration node. */
 
23056
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
23057
  /** Replace a son.
 
23058
   *  \param old_son The son to replace.
 
23059
   *  \param new_son The new son. */
 
23060
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23061
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
23062
  }
 
23063
public:
 
23064
  typedef AC::TL<Puma::CTree * [3],AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
23065
  const char *__attr_name (unsigned i) const {
 
23066
    static const char *names[] = { "sons", "obj_decl" }; return names[i];
 
23067
  }
 
23068
  const void *__attr (unsigned __i) const {
 
23069
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; default: return 0; }
 
23070
  }
 
23071
#line 2982 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23072
};
 
23073
 
 
23074
/** \class CT_BracedDeclarator CTree.h Puma/CTree.h
 
23075
 *  Tree node representing a braced declarator.
 
23076
 *  Example: \code int (i); \endcode */
 
23077
 
 
23078
#line 23079 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23079
} // closed Puma
 
23080
class CCExprResolve;
 
23081
class CExprResolve;
 
23082
class WinIfExists;
 
23083
class WinImportHandler;
 
23084
class WinMacros;
 
23085
class WinAsm;
 
23086
class WinDeclSpecs;
 
23087
class WinMemberExplSpec;
 
23088
class WinTypeKeywords;
 
23089
class WinFriend;
 
23090
class ExtAC;
 
23091
class ExtACBuilderCoupling;
 
23092
class ExtACSyntaxCoupling;
 
23093
class ExtACTree;
 
23094
class ExtACKeywords;
 
23095
class ExtGnu;
 
23096
class PragmaOnceUnitState;
 
23097
class PragmaOnce;
 
23098
class CMatchSyntax;
 
23099
namespace Puma {
 
23100
 
 
23101
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23102
class CT_BracedDeclarator : public CT_Declarator {
 
23103
#line 23104 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23104
  friend class ::CCExprResolve;
 
23105
  friend class ::CExprResolve;
 
23106
  friend class ::WinIfExists;
 
23107
  friend class ::WinImportHandler;
 
23108
  friend class ::WinMacros;
 
23109
  friend class ::WinAsm;
 
23110
  friend class ::WinDeclSpecs;
 
23111
  friend class ::WinMemberExplSpec;
 
23112
  friend class ::WinTypeKeywords;
 
23113
  friend class ::WinFriend;
 
23114
  friend class ::ExtAC;
 
23115
  friend class ::ExtACBuilderCoupling;
 
23116
  friend class ::ExtACSyntaxCoupling;
 
23117
  friend class ::ExtACTree;
 
23118
  friend class ::ExtACKeywords;
 
23119
  friend class ::ExtGnu;
 
23120
  friend class ::PragmaOnceUnitState;
 
23121
  friend class ::PragmaOnce;
 
23122
  friend class ::CMatchSyntax;
 
23123
 
 
23124
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23125
 
 
23126
  CTree *sons[4]; // open, win_specs, declarator, close
 
23127
 
 
23128
public:
 
23129
  /** Constructor.
 
23130
   *  \param o Left parenthesis around the declarator.
 
23131
   *  \param d The declarator.
 
23132
   *  \param c Right parenthesis around the declarator. */
 
23133
  CT_BracedDeclarator (CTree *o, CTree *d, CTree *c) {
 
23134
    AddSon (sons[0], o); AddSon (sons[1], 0); 
 
23135
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
23136
  }
 
23137
  /** Constructor.
 
23138
   *  \param o Left parenthesis around the declarator.
 
23139
   *  \param ws Declaration specifiers.
 
23140
   *  \param d The declarator.
 
23141
   *  \param c Right parenthesis around the declarator. */
 
23142
  CT_BracedDeclarator (CTree *o, CTree *ws, CTree *d, CTree *c) {
 
23143
    AddSon (sons[0], o); AddSon (sons[1], ws); 
 
23144
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
23145
  }
 
23146
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23147
  static const char *NodeId ();
 
23148
  /** Get the name of the node. Can be compared with NodeId(). */
 
23149
  const char *NodeName () const { return NodeId (); }
 
23150
  /** Get the number of sons. */
 
23151
  int Sons () const { return CTree::Sons (sons, 4); }
 
23152
  /** Get the n-th son.
 
23153
   *  \param n The index of the son.
 
23154
   *  \return The n-th son or NULL. */
 
23155
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
23156
  /** Get the declarator. */
 
23157
  CTree *Declarator () const { return sons[2]; }
 
23158
  /** Replace a son.
 
23159
   *  \param old_son The son to replace.
 
23160
   *  \param new_son The new son. */
 
23161
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23162
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
23163
  }
 
23164
public:
 
23165
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
23166
  const char *__attr_name (unsigned i) const {
 
23167
    static const char *names[] = { "sons" }; return names[i];
 
23168
  }
 
23169
  const void *__attr (unsigned __i) const {
 
23170
    switch (__i) { case 0: return &sons; default: return 0; }
 
23171
  }
 
23172
#line 3026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23173
};
 
23174
 
 
23175
/** \class CT_ArrayDelimiter CTree.h Puma/CTree.h
 
23176
 *  Tree node representing an array delimiter.
 
23177
 *  Example: \code [10] \endcode or \code [*] \endcode */
 
23178
 
 
23179
#line 23180 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23180
} // closed Puma
 
23181
class CCExprResolve;
 
23182
class CExprResolve;
 
23183
class WinIfExists;
 
23184
class WinImportHandler;
 
23185
class WinMacros;
 
23186
class WinAsm;
 
23187
class WinDeclSpecs;
 
23188
class WinMemberExplSpec;
 
23189
class WinTypeKeywords;
 
23190
class WinFriend;
 
23191
class ExtAC;
 
23192
class ExtACBuilderCoupling;
 
23193
class ExtACSyntaxCoupling;
 
23194
class ExtACTree;
 
23195
class ExtACKeywords;
 
23196
class ExtGnu;
 
23197
class PragmaOnceUnitState;
 
23198
class PragmaOnce;
 
23199
class CMatchSyntax;
 
23200
namespace Puma {
 
23201
 
 
23202
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23203
class CT_ArrayDelimiter : public CTree {
 
23204
#line 23205 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23205
  friend class ::CCExprResolve;
 
23206
  friend class ::CExprResolve;
 
23207
  friend class ::WinIfExists;
 
23208
  friend class ::WinImportHandler;
 
23209
  friend class ::WinMacros;
 
23210
  friend class ::WinAsm;
 
23211
  friend class ::WinDeclSpecs;
 
23212
  friend class ::WinMemberExplSpec;
 
23213
  friend class ::WinTypeKeywords;
 
23214
  friend class ::WinFriend;
 
23215
  friend class ::ExtAC;
 
23216
  friend class ::ExtACBuilderCoupling;
 
23217
  friend class ::ExtACSyntaxCoupling;
 
23218
  friend class ::ExtACTree;
 
23219
  friend class ::ExtACKeywords;
 
23220
  friend class ::ExtGnu;
 
23221
  friend class ::PragmaOnceUnitState;
 
23222
  friend class ::PragmaOnce;
 
23223
  friend class ::CMatchSyntax;
 
23224
 
 
23225
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23226
 
 
23227
  CTree *sons[4]; // star, static, quals, expr
 
23228
  bool pos0;
 
23229
 
 
23230
public:
 
23231
  /** Constructor.
 
23232
   *  \param m The operator '*'.
 
23233
   *  \param s The keyword 'static'.
 
23234
   *  \param q The const/volatile qualifier sequence. 
 
23235
   *  \param e The array size expression. 
 
23236
   *  \param p Position of keyword 'static', true means before the
 
23237
   *           qualifier sequence and false means behind it. */
 
23238
  CT_ArrayDelimiter (CTree *m, CTree *s, CTree *q, CTree *e, bool p = false) {
 
23239
    AddSon (sons[0], m); AddSon (sons[1], s); 
 
23240
    AddSon (sons[2], q); AddSon (sons[3], e); pos0 = p;
 
23241
  }
 
23242
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23243
  static const char *NodeId ();
 
23244
  /** Get the name of the node. Can be compared with NodeId(). */
 
23245
  const char *NodeName () const { return NodeId (); }
 
23246
  /** Get the number of sons. */
 
23247
  int Sons () const { return CTree::Sons (sons, 4); }
 
23248
  /** Get the n-th son.
 
23249
   *  \param n The index of the son.
 
23250
   *  \return The n-th son or NULL. */
 
23251
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
23252
  /** Get the operator '*'. */
 
23253
  CT_Token *Star () const { return (CT_Token*)sons[0]; }
 
23254
  /** Get the keyword 'static'. */
 
23255
  CT_Token *Static () const { return (CT_Token*)sons[pos0?2:1]; }
 
23256
  /** Get the const/volatile qualifier sequence. */
 
23257
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[pos0?1:2]; }
 
23258
  /** Get the array size expression. */
 
23259
  CTree *Expr () const { return sons[3]; }
 
23260
  /** Replace a son.
 
23261
   *  \param old_son The son to replace.
 
23262
   *  \param new_son The new son. */
 
23263
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23264
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
23265
  }
 
23266
public:
 
23267
  typedef AC::TL<Puma::CTree * [4],AC::TL<bool,AC::TLE > > __AttrTypes;
 
23268
  const char *__attr_name (unsigned i) const {
 
23269
    static const char *names[] = { "sons", "pos0" }; return names[i];
 
23270
  }
 
23271
  const void *__attr (unsigned __i) const {
 
23272
    switch (__i) { case 0: return &sons; case 1: return &pos0; default: return 0; }
 
23273
  }
 
23274
#line 3071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23275
};
 
23276
 
 
23277
/** \class CT_ArrayDeclarator CTree.h Puma/CTree.h
 
23278
 *  Tree node representing an array declarator.
 
23279
 *  Example: \code a[10] \endcode */
 
23280
 
 
23281
#line 23282 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23282
} // closed Puma
 
23283
class CCExprResolve;
 
23284
class CExprResolve;
 
23285
class WinIfExists;
 
23286
class WinImportHandler;
 
23287
class WinMacros;
 
23288
class WinAsm;
 
23289
class WinDeclSpecs;
 
23290
class WinMemberExplSpec;
 
23291
class WinTypeKeywords;
 
23292
class WinFriend;
 
23293
class ExtAC;
 
23294
class ExtACBuilderCoupling;
 
23295
class ExtACSyntaxCoupling;
 
23296
class ExtACTree;
 
23297
class ExtACKeywords;
 
23298
class ExtGnu;
 
23299
class PragmaOnceUnitState;
 
23300
class PragmaOnce;
 
23301
class CMatchSyntax;
 
23302
namespace Puma {
 
23303
 
 
23304
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23305
class CT_ArrayDeclarator : public CT_Declarator, public CSemValue {
 
23306
#line 23307 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23307
  friend class ::CCExprResolve;
 
23308
  friend class ::CExprResolve;
 
23309
  friend class ::WinIfExists;
 
23310
  friend class ::WinImportHandler;
 
23311
  friend class ::WinMacros;
 
23312
  friend class ::WinAsm;
 
23313
  friend class ::WinDeclSpecs;
 
23314
  friend class ::WinMemberExplSpec;
 
23315
  friend class ::WinTypeKeywords;
 
23316
  friend class ::WinFriend;
 
23317
  friend class ::ExtAC;
 
23318
  friend class ::ExtACBuilderCoupling;
 
23319
  friend class ::ExtACSyntaxCoupling;
 
23320
  friend class ::ExtACTree;
 
23321
  friend class ::ExtACKeywords;
 
23322
  friend class ::ExtGnu;
 
23323
  friend class ::PragmaOnceUnitState;
 
23324
  friend class ::PragmaOnce;
 
23325
  friend class ::CMatchSyntax;
 
23326
 
 
23327
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23328
 
 
23329
  CTree *sons[4]; // declarator, open, delim, close
 
23330
 
 
23331
public:
 
23332
  /** Constructor.
 
23333
   *  \param d The array declarator.
 
23334
   *  \param o Left bracket around the delimiter.
 
23335
   *  \param ad The array delimiter.
 
23336
   *  \param c Right bracket around the delimiter. */
 
23337
  CT_ArrayDeclarator (CTree *d, CTree *o, CTree *ad, CTree *c) {
 
23338
    AddSon (sons[0], d); AddSon (sons[1], o); 
 
23339
    AddSon (sons[2], ad); AddSon (sons[3], c); 
 
23340
  }
 
23341
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23342
  static const char *NodeId ();
 
23343
  /** Get the name of the node. Can be compared with NodeId(). */
 
23344
  const char *NodeName () const { return NodeId (); }
 
23345
  /** Get the number of sons. */
 
23346
  int Sons () const { return 4; }
 
23347
  /** Get the n-th son.
 
23348
   *  \param n The index of the son.
 
23349
   *  \return The n-th son or NULL. */
 
23350
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
23351
  /** Get the array declarator. */
 
23352
  CTree *Declarator () const { return sons[0]; }
 
23353
  /** Get the array delimiter. */
 
23354
  CT_ArrayDelimiter *Delimiter () const 
 
23355
   { return (CT_ArrayDelimiter*)sons[2]; }
 
23356
  /** Replace a son.
 
23357
   *  \param old_son The son to replace.
 
23358
   *  \param new_son The new son. */
 
23359
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23360
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
23361
  }
 
23362
  /** Get the semantic information for the type of the declared array. */
 
23363
  CTypeInfo *Type () const { return type; }
 
23364
  /** Get the semantic information for the value of the declared array. */
 
23365
  CExprValue *Value () const { return value; }
 
23366
  /** Get the semantic information object. */
 
23367
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
23368
public:
 
23369
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
23370
  const char *__attr_name (unsigned i) const {
 
23371
    static const char *names[] = { "sons" }; return names[i];
 
23372
  }
 
23373
  const void *__attr (unsigned __i) const {
 
23374
    switch (__i) { case 0: return &sons; default: return 0; }
 
23375
  }
 
23376
#line 3116 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23377
};
 
23378
 
 
23379
/** \class CT_FctDeclarator CTree.h Puma/CTree.h
 
23380
 *  Tree node representing a function declarator.
 
23381
 *  Example: \code f(int a) const \endcode */
 
23382
 
 
23383
#line 23384 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23384
} // closed Puma
 
23385
class CCExprResolve;
 
23386
class CExprResolve;
 
23387
class WinIfExists;
 
23388
class WinImportHandler;
 
23389
class WinMacros;
 
23390
class WinAsm;
 
23391
class WinDeclSpecs;
 
23392
class WinMemberExplSpec;
 
23393
class WinTypeKeywords;
 
23394
class WinFriend;
 
23395
class ExtAC;
 
23396
class ExtACBuilderCoupling;
 
23397
class ExtACSyntaxCoupling;
 
23398
class ExtACTree;
 
23399
class ExtACKeywords;
 
23400
class ExtGnu;
 
23401
class PragmaOnceUnitState;
 
23402
class PragmaOnce;
 
23403
class CMatchSyntax;
 
23404
namespace Puma {
 
23405
 
 
23406
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23407
class CT_FctDeclarator : public CT_Declarator {
 
23408
#line 23409 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23409
  friend class ::CCExprResolve;
 
23410
  friend class ::CExprResolve;
 
23411
  friend class ::WinIfExists;
 
23412
  friend class ::WinImportHandler;
 
23413
  friend class ::WinMacros;
 
23414
  friend class ::WinAsm;
 
23415
  friend class ::WinDeclSpecs;
 
23416
  friend class ::WinMemberExplSpec;
 
23417
  friend class ::WinTypeKeywords;
 
23418
  friend class ::WinFriend;
 
23419
  friend class ::ExtAC;
 
23420
  friend class ::ExtACBuilderCoupling;
 
23421
  friend class ::ExtACSyntaxCoupling;
 
23422
  friend class ::ExtACTree;
 
23423
  friend class ::ExtACKeywords;
 
23424
  friend class ::ExtGnu;
 
23425
  friend class ::PragmaOnceUnitState;
 
23426
  friend class ::PragmaOnce;
 
23427
  friend class ::CMatchSyntax;
 
23428
 
 
23429
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23430
 
 
23431
  CTree *sons[4]; // declarator, args, cv_quals, exception_specs
 
23432
 
 
23433
public:
 
23434
  /** Constructor.
 
23435
   *  \param d The function declarator.
 
23436
   *  \param args The function parameter list.
 
23437
   *  \param cv The function qualifiers.
 
23438
   *  \param es The exception specifier. */
 
23439
  CT_FctDeclarator (CTree *d, CTree *args, CTree *cv, CTree *es) {
 
23440
    AddSon (sons[0], d); AddSon (sons[1], args); 
 
23441
    AddSon (sons[2], cv); AddSon (sons[3], es); 
 
23442
  }
 
23443
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23444
  static const char *NodeId ();
 
23445
  /** Get the name of the node. Can be compared with NodeId(). */
 
23446
  const char *NodeName () const { return NodeId (); }
 
23447
  /** Get the number of sons. */
 
23448
  int Sons () const { return CTree::Sons (sons, 4); }
 
23449
  /** Get the n-th son.
 
23450
   *  \param n The index of the son.
 
23451
   *  \return The n-th son or NULL. */
 
23452
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
23453
  /** Get the function declarator. */
 
23454
  CTree *Declarator () const { return sons[0]; }
 
23455
  /** Get the function parameter list. */
 
23456
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
23457
  /** Get the function qualifier list. */
 
23458
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[2]; }
 
23459
  /** Get the exception specifier. */
 
23460
  CT_ExceptionSpec *ExceptionSpecs () const { return (CT_ExceptionSpec*)sons[3]; }
 
23461
  /** Replace a son.
 
23462
   *  \param old_son The son to replace.
 
23463
   *  \param new_son The new son. */
 
23464
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23465
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
23466
  }
 
23467
public:
 
23468
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
23469
  const char *__attr_name (unsigned i) const {
 
23470
    static const char *names[] = { "sons" }; return names[i];
 
23471
  }
 
23472
  const void *__attr (unsigned __i) const {
 
23473
    switch (__i) { case 0: return &sons; default: return 0; }
 
23474
  }
 
23475
#line 3158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23476
};
 
23477
 
 
23478
/** \class CT_RefDeclarator CTree.h Puma/CTree.h
 
23479
 *  Tree node representing a reference declarator.
 
23480
 *  Example: \code &a \endcode */
 
23481
 
 
23482
#line 23483 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23483
} // closed Puma
 
23484
class CCExprResolve;
 
23485
class CExprResolve;
 
23486
class WinIfExists;
 
23487
class WinImportHandler;
 
23488
class WinMacros;
 
23489
class WinAsm;
 
23490
class WinDeclSpecs;
 
23491
class WinMemberExplSpec;
 
23492
class WinTypeKeywords;
 
23493
class WinFriend;
 
23494
class ExtAC;
 
23495
class ExtACBuilderCoupling;
 
23496
class ExtACSyntaxCoupling;
 
23497
class ExtACTree;
 
23498
class ExtACKeywords;
 
23499
class ExtGnu;
 
23500
class PragmaOnceUnitState;
 
23501
class PragmaOnce;
 
23502
class CMatchSyntax;
 
23503
namespace Puma {
 
23504
 
 
23505
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23506
class CT_RefDeclarator : public CT_Declarator {
 
23507
#line 23508 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23508
  friend class ::CCExprResolve;
 
23509
  friend class ::CExprResolve;
 
23510
  friend class ::WinIfExists;
 
23511
  friend class ::WinImportHandler;
 
23512
  friend class ::WinMacros;
 
23513
  friend class ::WinAsm;
 
23514
  friend class ::WinDeclSpecs;
 
23515
  friend class ::WinMemberExplSpec;
 
23516
  friend class ::WinTypeKeywords;
 
23517
  friend class ::WinFriend;
 
23518
  friend class ::ExtAC;
 
23519
  friend class ::ExtACBuilderCoupling;
 
23520
  friend class ::ExtACSyntaxCoupling;
 
23521
  friend class ::ExtACTree;
 
23522
  friend class ::ExtACKeywords;
 
23523
  friend class ::ExtGnu;
 
23524
  friend class ::PragmaOnceUnitState;
 
23525
  friend class ::PragmaOnce;
 
23526
  friend class ::CMatchSyntax;
 
23527
 
 
23528
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23529
 
 
23530
  CTree *sons[2]; // ref, declarator
 
23531
 
 
23532
public:
 
23533
  /** Constructor.
 
23534
   *  \param r The reference operator '&'.
 
23535
   *  \param d The declarator. */
 
23536
  CT_RefDeclarator (CTree *r, CTree *d) { AddSon (sons[0], r); AddSon (sons[1], d); }
 
23537
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23538
  static const char *NodeId ();
 
23539
  /** Get the name of the node. Can be compared with NodeId(). */
 
23540
  const char *NodeName () const { return NodeId (); }
 
23541
  /** Get the number of sons. */
 
23542
  int Sons () const { return 2; }
 
23543
  /** Get the n-th son.
 
23544
   *  \param n The index of the son.
 
23545
   *  \return The n-th son or NULL. */
 
23546
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
23547
  /** Get the declarator. */
 
23548
  CTree *Declarator () const { return sons[1]; }
 
23549
  /** Replace a son.
 
23550
   *  \param old_son The son to replace.
 
23551
   *  \param new_son The new son. */
 
23552
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
23553
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
23554
  }
 
23555
public:
 
23556
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
23557
  const char *__attr_name (unsigned i) const {
 
23558
    static const char *names[] = { "sons" }; return names[i];
 
23559
  }
 
23560
  const void *__attr (unsigned __i) const {
 
23561
    switch (__i) { case 0: return &sons; default: return 0; }
 
23562
  }
 
23563
#line 3189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23564
};
 
23565
 
 
23566
/** \class CT_PtrDeclarator CTree.h Puma/CTree.h
 
23567
 *  Tree node representing a pointer declarator.
 
23568
 *  Example: \code *a \endcode */
 
23569
 
 
23570
#line 23571 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23571
} // closed Puma
 
23572
class CCExprResolve;
 
23573
class CExprResolve;
 
23574
class WinIfExists;
 
23575
class WinImportHandler;
 
23576
class WinMacros;
 
23577
class WinAsm;
 
23578
class WinDeclSpecs;
 
23579
class WinMemberExplSpec;
 
23580
class WinTypeKeywords;
 
23581
class WinFriend;
 
23582
class ExtAC;
 
23583
class ExtACBuilderCoupling;
 
23584
class ExtACSyntaxCoupling;
 
23585
class ExtACTree;
 
23586
class ExtACKeywords;
 
23587
class ExtGnu;
 
23588
class PragmaOnceUnitState;
 
23589
class PragmaOnce;
 
23590
class CMatchSyntax;
 
23591
namespace Puma {
 
23592
 
 
23593
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23594
class CT_PtrDeclarator : public CT_Declarator {
 
23595
#line 23596 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23596
  friend class ::CCExprResolve;
 
23597
  friend class ::CExprResolve;
 
23598
  friend class ::WinIfExists;
 
23599
  friend class ::WinImportHandler;
 
23600
  friend class ::WinMacros;
 
23601
  friend class ::WinAsm;
 
23602
  friend class ::WinDeclSpecs;
 
23603
  friend class ::WinMemberExplSpec;
 
23604
  friend class ::WinTypeKeywords;
 
23605
  friend class ::WinFriend;
 
23606
  friend class ::ExtAC;
 
23607
  friend class ::ExtACBuilderCoupling;
 
23608
  friend class ::ExtACSyntaxCoupling;
 
23609
  friend class ::ExtACTree;
 
23610
  friend class ::ExtACKeywords;
 
23611
  friend class ::ExtGnu;
 
23612
  friend class ::PragmaOnceUnitState;
 
23613
  friend class ::PragmaOnce;
 
23614
  friend class ::CMatchSyntax;
 
23615
 
 
23616
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23617
 
 
23618
  CTree *sons[3]; // ptr, cv_quals, declarator
 
23619
 
 
23620
public:
 
23621
  /** Constructor.
 
23622
   *  \param p The pointer operator '*'.
 
23623
   *  \param c The const/volatile pointer qualifier sequence.
 
23624
   *  \param d The declarator. */
 
23625
  CT_PtrDeclarator (CTree *p, CTree *c, CTree *d) {
 
23626
    AddSon (sons[0], p); AddSon (sons[1], c); AddSon (sons[2], d); 
 
23627
  }
 
23628
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23629
  static const char *NodeId ();
 
23630
  /** Get the name of the node. Can be compared with NodeId(). */
 
23631
  const char *NodeName () const { return NodeId (); }
 
23632
  /** Get the number of sons. */
 
23633
  int Sons () const { return CTree::Sons (sons, 3); }
 
23634
  /** Get the n-th son.
 
23635
   *  \param n The index of the son.
 
23636
   *  \return The n-th son or NULL. */
 
23637
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
23638
  /** Get the declarator. */
 
23639
  CTree *Declarator () const { return sons[2]; }
 
23640
  /** Get the const/volatile qualifier sequence. */
 
23641
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[1]; }
 
23642
  /** Replace a son.
 
23643
   *  \param old_son The son to replace.
 
23644
   *  \param new_son The new son. */
 
23645
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23646
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
23647
  }
 
23648
public:
 
23649
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
23650
  const char *__attr_name (unsigned i) const {
 
23651
    static const char *names[] = { "sons" }; return names[i];
 
23652
  }
 
23653
  const void *__attr (unsigned __i) const {
 
23654
    switch (__i) { case 0: return &sons; default: return 0; }
 
23655
  }
 
23656
#line 3225 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23657
};
 
23658
 
 
23659
/** \class CT_MembPtrDeclarator CTree.h Puma/CTree.h
 
23660
 *  Tree node representing a member pointer declarator.
 
23661
 *  Example: \code *X::a \endcode */
 
23662
 
 
23663
#line 23664 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23664
} // closed Puma
 
23665
class CCExprResolve;
 
23666
class CExprResolve;
 
23667
class WinIfExists;
 
23668
class WinImportHandler;
 
23669
class WinMacros;
 
23670
class WinAsm;
 
23671
class WinDeclSpecs;
 
23672
class WinMemberExplSpec;
 
23673
class WinTypeKeywords;
 
23674
class WinFriend;
 
23675
class ExtAC;
 
23676
class ExtACBuilderCoupling;
 
23677
class ExtACSyntaxCoupling;
 
23678
class ExtACTree;
 
23679
class ExtACKeywords;
 
23680
class ExtGnu;
 
23681
class PragmaOnceUnitState;
 
23682
class PragmaOnce;
 
23683
class CMatchSyntax;
 
23684
namespace Puma {
 
23685
 
 
23686
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23687
class CT_MembPtrDeclarator : public CT_Declarator {
 
23688
#line 23689 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23689
  friend class ::CCExprResolve;
 
23690
  friend class ::CExprResolve;
 
23691
  friend class ::WinIfExists;
 
23692
  friend class ::WinImportHandler;
 
23693
  friend class ::WinMacros;
 
23694
  friend class ::WinAsm;
 
23695
  friend class ::WinDeclSpecs;
 
23696
  friend class ::WinMemberExplSpec;
 
23697
  friend class ::WinTypeKeywords;
 
23698
  friend class ::WinFriend;
 
23699
  friend class ::ExtAC;
 
23700
  friend class ::ExtACBuilderCoupling;
 
23701
  friend class ::ExtACSyntaxCoupling;
 
23702
  friend class ::ExtACTree;
 
23703
  friend class ::ExtACKeywords;
 
23704
  friend class ::ExtGnu;
 
23705
  friend class ::PragmaOnceUnitState;
 
23706
  friend class ::PragmaOnce;
 
23707
  friend class ::CMatchSyntax;
 
23708
 
 
23709
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23710
 
 
23711
  CTree *sons[5]; // class, colon, ptr, cv_quals, declarator
 
23712
 
 
23713
public:
 
23714
  /** Constructor.
 
23715
   *  \param c The class name.
 
23716
   *  \param cc The scope operator '::'.
 
23717
   *  \param p The name of the pointer.
 
23718
   *  \param q The const/volatile pointer qualifier sequence.
 
23719
   *  \param d The declarator. */
 
23720
  CT_MembPtrDeclarator (CTree *c, CTree *cc, CTree *p, CTree *q, CTree *d) {
 
23721
    AddSon (sons[0], c); AddSon (sons[1], cc); AddSon (sons[2], p); 
 
23722
    AddSon (sons[3], q); AddSon (sons[4], d); 
 
23723
  }
 
23724
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23725
  static const char *NodeId ();
 
23726
  /** Get the name of the node. Can be compared with NodeId(). */
 
23727
  const char *NodeName () const { return NodeId (); }
 
23728
  /** Get the number of sons. */
 
23729
  int Sons () const { return CTree::Sons (sons, 5); }
 
23730
  /** Get the n-th son.
 
23731
   *  \param n The index of the son.
 
23732
   *  \return The n-th son or NULL. */
 
23733
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
23734
  /** Get the name of the declared pointer. */
 
23735
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
23736
  /** Get the declarator. */
 
23737
  CTree *Declarator () const { return sons[4]; }
 
23738
  /** Get the const/volatile qualifier sequence. */
 
23739
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[3]; }
 
23740
  /** Replace a son.
 
23741
   *  \param old_son The son to replace.
 
23742
   *  \param new_son The new son. */
 
23743
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23744
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
23745
  }
 
23746
public:
 
23747
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
23748
  const char *__attr_name (unsigned i) const {
 
23749
    static const char *names[] = { "sons" }; return names[i];
 
23750
  }
 
23751
  const void *__attr (unsigned __i) const {
 
23752
    switch (__i) { case 0: return &sons; default: return 0; }
 
23753
  }
 
23754
#line 3266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23755
};
 
23756
 
 
23757
/** \class CT_BitFieldDeclarator CTree.h Puma/CTree.h
 
23758
 *  Tree node representing a bit-field declarator.
 
23759
 *  Example: \code a : 2 \endcode */
 
23760
 
 
23761
#line 23762 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23762
} // closed Puma
 
23763
class CCExprResolve;
 
23764
class CExprResolve;
 
23765
class WinIfExists;
 
23766
class WinImportHandler;
 
23767
class WinMacros;
 
23768
class WinAsm;
 
23769
class WinDeclSpecs;
 
23770
class WinMemberExplSpec;
 
23771
class WinTypeKeywords;
 
23772
class WinFriend;
 
23773
class ExtAC;
 
23774
class ExtACBuilderCoupling;
 
23775
class ExtACSyntaxCoupling;
 
23776
class ExtACTree;
 
23777
class ExtACKeywords;
 
23778
class ExtGnu;
 
23779
class PragmaOnceUnitState;
 
23780
class PragmaOnce;
 
23781
class CMatchSyntax;
 
23782
namespace Puma {
 
23783
 
 
23784
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23785
class CT_BitFieldDeclarator : public CT_Declarator, public CSemObject {
 
23786
#line 23787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23787
  friend class ::CCExprResolve;
 
23788
  friend class ::CExprResolve;
 
23789
  friend class ::WinIfExists;
 
23790
  friend class ::WinImportHandler;
 
23791
  friend class ::WinMacros;
 
23792
  friend class ::WinAsm;
 
23793
  friend class ::WinDeclSpecs;
 
23794
  friend class ::WinMemberExplSpec;
 
23795
  friend class ::WinTypeKeywords;
 
23796
  friend class ::WinFriend;
 
23797
  friend class ::ExtAC;
 
23798
  friend class ::ExtACBuilderCoupling;
 
23799
  friend class ::ExtACSyntaxCoupling;
 
23800
  friend class ::ExtACTree;
 
23801
  friend class ::ExtACKeywords;
 
23802
  friend class ::ExtGnu;
 
23803
  friend class ::PragmaOnceUnitState;
 
23804
  friend class ::PragmaOnce;
 
23805
  friend class ::CMatchSyntax;
 
23806
 
 
23807
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23808
 
 
23809
  CTree *sons[3]; // declarator, colon, expr
 
23810
 
 
23811
public:
 
23812
  /** Constructor.
 
23813
   *  \param d The declarator.
 
23814
   *  \param c The colon between the declarator and the bit count.
 
23815
   *  \param e The expression specifying the number of bits. */
 
23816
  CT_BitFieldDeclarator (CTree *d, CTree *c, CTree *e = 0) {
 
23817
    AddSon (sons[0], d); AddSon (sons[1], c); AddSon (sons[2], e); 
 
23818
  }
 
23819
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23820
  static const char *NodeId ();
 
23821
  /** Get the name of the node. Can be compared with NodeId(). */
 
23822
  const char *NodeName () const { return NodeId (); }
 
23823
  /** Get the number of sons. */
 
23824
  int Sons () const { return CTree::Sons (sons, 3); }
 
23825
  /** Get the n-th son.
 
23826
   *  \param n The index of the son.
 
23827
   *  \return The n-th son or NULL. */
 
23828
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
23829
  /** Get the declarator. */
 
23830
  CTree *Declarator () const { return sons[0]; }
 
23831
  /** Get the expression specifying the number of bits. */
 
23832
  CTree *Expr () const { return sons[2]; }
 
23833
  /** Set the expression specifying the number of bits. */
 
23834
  void FieldSize (CTree *s) { AddSon (sons[2], s); }
 
23835
  /** Get the semantic information about the declared bit-field. */
 
23836
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
23837
  /** Replace a son.
 
23838
   *  \param old_son The son to replace.
 
23839
   *  \param new_son The new son. */
 
23840
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23841
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
23842
  }
 
23843
public:
 
23844
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
23845
  const char *__attr_name (unsigned i) const {
 
23846
    static const char *names[] = { "sons" }; return names[i];
 
23847
  }
 
23848
  const void *__attr (unsigned __i) const {
 
23849
    switch (__i) { case 0: return &sons; default: return 0; }
 
23850
  }
 
23851
#line 3306 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23852
};
 
23853
 
 
23854
/*****************************************************************************/
 
23855
/*                                                                           */
 
23856
/*                              Statements                                   */
 
23857
/*                                                                           */
 
23858
/*****************************************************************************/
 
23859
 
 
23860
/** \class CT_Statement CTree.h Puma/CTree.h
 
23861
 *  Base class for all tree nodes representing statements. */
 
23862
 
 
23863
#line 23864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23864
} // closed Puma
 
23865
class CCExprResolve;
 
23866
class CExprResolve;
 
23867
class WinIfExists;
 
23868
class WinImportHandler;
 
23869
class WinMacros;
 
23870
class WinAsm;
 
23871
class WinDeclSpecs;
 
23872
class WinMemberExplSpec;
 
23873
class WinTypeKeywords;
 
23874
class WinFriend;
 
23875
class ExtAC;
 
23876
class ExtACBuilderCoupling;
 
23877
class ExtACSyntaxCoupling;
 
23878
class ExtACTree;
 
23879
class ExtACKeywords;
 
23880
class ExtGnu;
 
23881
class PragmaOnceUnitState;
 
23882
class PragmaOnce;
 
23883
class CMatchSyntax;
 
23884
namespace Puma {
 
23885
 
 
23886
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23887
class CT_Statement : public CTree {
 
23888
#line 23889 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23889
  friend class ::CCExprResolve;
 
23890
  friend class ::CExprResolve;
 
23891
  friend class ::WinIfExists;
 
23892
  friend class ::WinImportHandler;
 
23893
  friend class ::WinMacros;
 
23894
  friend class ::WinAsm;
 
23895
  friend class ::WinDeclSpecs;
 
23896
  friend class ::WinMemberExplSpec;
 
23897
  friend class ::WinTypeKeywords;
 
23898
  friend class ::WinFriend;
 
23899
  friend class ::ExtAC;
 
23900
  friend class ::ExtACBuilderCoupling;
 
23901
  friend class ::ExtACSyntaxCoupling;
 
23902
  friend class ::ExtACTree;
 
23903
  friend class ::ExtACKeywords;
 
23904
  friend class ::ExtGnu;
 
23905
  friend class ::PragmaOnceUnitState;
 
23906
  friend class ::PragmaOnce;
 
23907
  friend class ::CMatchSyntax;
 
23908
 
 
23909
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23910
 
 
23911
protected:
 
23912
  /** Constructor. */
 
23913
  CT_Statement () {}
 
23914
  /** Get this. */
 
23915
  virtual CT_Statement *IsStatement () { return this; }
 
23916
public:
 
23917
  typedef AC::TLE __AttrTypes;
 
23918
  const char *__attr_name (unsigned i) const { return 0; }
 
23919
  const void *__attr (unsigned __i) const { return 0; }
 
23920
#line 3322 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23921
};
 
23922
 
 
23923
/** \class CT_LabelStmt CTree.h Puma/CTree.h
 
23924
 *  Tree node representing a label statement.
 
23925
 *  Example: \code incr_a: a++; \endcode */
 
23926
 
 
23927
#line 23928 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23928
} // closed Puma
 
23929
class CCExprResolve;
 
23930
class CExprResolve;
 
23931
class WinIfExists;
 
23932
class WinImportHandler;
 
23933
class WinMacros;
 
23934
class WinAsm;
 
23935
class WinDeclSpecs;
 
23936
class WinMemberExplSpec;
 
23937
class WinTypeKeywords;
 
23938
class WinFriend;
 
23939
class ExtAC;
 
23940
class ExtACBuilderCoupling;
 
23941
class ExtACSyntaxCoupling;
 
23942
class ExtACTree;
 
23943
class ExtACKeywords;
 
23944
class ExtGnu;
 
23945
class PragmaOnceUnitState;
 
23946
class PragmaOnce;
 
23947
class CMatchSyntax;
 
23948
namespace Puma {
 
23949
 
 
23950
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23951
class CT_LabelStmt : public CT_Statement {
 
23952
#line 23953 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
23953
  friend class ::CCExprResolve;
 
23954
  friend class ::CExprResolve;
 
23955
  friend class ::WinIfExists;
 
23956
  friend class ::WinImportHandler;
 
23957
  friend class ::WinMacros;
 
23958
  friend class ::WinAsm;
 
23959
  friend class ::WinDeclSpecs;
 
23960
  friend class ::WinMemberExplSpec;
 
23961
  friend class ::WinTypeKeywords;
 
23962
  friend class ::WinFriend;
 
23963
  friend class ::ExtAC;
 
23964
  friend class ::ExtACBuilderCoupling;
 
23965
  friend class ::ExtACSyntaxCoupling;
 
23966
  friend class ::ExtACTree;
 
23967
  friend class ::ExtACKeywords;
 
23968
  friend class ::ExtGnu;
 
23969
  friend class ::PragmaOnceUnitState;
 
23970
  friend class ::PragmaOnce;
 
23971
  friend class ::CMatchSyntax;
 
23972
 
 
23973
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23974
 
 
23975
  CTree *sons[3]; // id, colon, stmt
 
23976
 
 
23977
public:
 
23978
  /** Constructor.
 
23979
   *  \param id The name of the label.
 
23980
   *  \param c The colon behind the label.
 
23981
   *  \param stmt The statement following the label. */
 
23982
  CT_LabelStmt (CTree *id, CTree *c, CTree *stmt) {
 
23983
    AddSon (sons[0], id); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
23984
  }
 
23985
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23986
  static const char *NodeId ();
 
23987
  /** Get the name of the node. Can be compared with NodeId(). */
 
23988
  const char *NodeName () const { return NodeId (); }
 
23989
  /** Get the number of sons. */
 
23990
  int Sons () const { return 3; }
 
23991
  /** Get the n-th son.
 
23992
   *  \param n The index of the son.
 
23993
   *  \return The n-th son or NULL. */
 
23994
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
23995
  /** Get the statement. */
 
23996
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
23997
  /** Get the name of the label. */
 
23998
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[0]; }
 
23999
  /** Replace a son.
 
24000
   *  \param old_son The son to replace.
 
24001
   *  \param new_son The new son. */
 
24002
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24003
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
24004
  }
 
24005
public:
 
24006
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
24007
  const char *__attr_name (unsigned i) const {
 
24008
    static const char *names[] = { "sons" }; return names[i];
 
24009
  }
 
24010
  const void *__attr (unsigned __i) const {
 
24011
    switch (__i) { case 0: return &sons; default: return 0; }
 
24012
  }
 
24013
#line 3358 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24014
};
 
24015
 
 
24016
/** \class CT_DefaultStmt CTree.h Puma/CTree.h
 
24017
 *  Tree node representing a default statement of a switch statement.
 
24018
 *  Example: \code default: break; \endcode */
 
24019
 
 
24020
#line 24021 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24021
} // closed Puma
 
24022
class CCExprResolve;
 
24023
class CExprResolve;
 
24024
class WinIfExists;
 
24025
class WinImportHandler;
 
24026
class WinMacros;
 
24027
class WinAsm;
 
24028
class WinDeclSpecs;
 
24029
class WinMemberExplSpec;
 
24030
class WinTypeKeywords;
 
24031
class WinFriend;
 
24032
class ExtAC;
 
24033
class ExtACBuilderCoupling;
 
24034
class ExtACSyntaxCoupling;
 
24035
class ExtACTree;
 
24036
class ExtACKeywords;
 
24037
class ExtGnu;
 
24038
class PragmaOnceUnitState;
 
24039
class PragmaOnce;
 
24040
class CMatchSyntax;
 
24041
namespace Puma {
 
24042
 
 
24043
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24044
class CT_DefaultStmt : public CT_Statement {
 
24045
#line 24046 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24046
  friend class ::CCExprResolve;
 
24047
  friend class ::CExprResolve;
 
24048
  friend class ::WinIfExists;
 
24049
  friend class ::WinImportHandler;
 
24050
  friend class ::WinMacros;
 
24051
  friend class ::WinAsm;
 
24052
  friend class ::WinDeclSpecs;
 
24053
  friend class ::WinMemberExplSpec;
 
24054
  friend class ::WinTypeKeywords;
 
24055
  friend class ::WinFriend;
 
24056
  friend class ::ExtAC;
 
24057
  friend class ::ExtACBuilderCoupling;
 
24058
  friend class ::ExtACSyntaxCoupling;
 
24059
  friend class ::ExtACTree;
 
24060
  friend class ::ExtACKeywords;
 
24061
  friend class ::ExtGnu;
 
24062
  friend class ::PragmaOnceUnitState;
 
24063
  friend class ::PragmaOnce;
 
24064
  friend class ::CMatchSyntax;
 
24065
 
 
24066
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24067
 
 
24068
  CTree *sons[3]; // keyword, colon, stmt
 
24069
 
 
24070
public:
 
24071
  /** Constructor.
 
24072
   *  \param kw The keyword 'default'.
 
24073
   *  \param c The colon behind the keyword.
 
24074
   *  \param stmt The statement of the default case. */
 
24075
  CT_DefaultStmt (CTree *kw, CTree *c, CTree *stmt) {
 
24076
    AddSon (sons[0], kw); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
24077
  }
 
24078
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24079
  static const char *NodeId ();
 
24080
  /** Get the name of the node. Can be compared with NodeId(). */
 
24081
  const char *NodeName () const { return NodeId (); }
 
24082
  /** Get the number of sons. */
 
24083
  int Sons () const { return 3; }
 
24084
  /** Get the n-th son.
 
24085
   *  \param n The index of the son.
 
24086
   *  \return The n-th son or NULL. */
 
24087
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
24088
  /** Get the statement. */
 
24089
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
24090
  /** Replace a son.
 
24091
   *  \param old_son The son to replace.
 
24092
   *  \param new_son The new son. */
 
24093
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24094
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
24095
  }
 
24096
public:
 
24097
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
24098
  const char *__attr_name (unsigned i) const {
 
24099
    static const char *names[] = { "sons" }; return names[i];
 
24100
  }
 
24101
  const void *__attr (unsigned __i) const {
 
24102
    switch (__i) { case 0: return &sons; default: return 0; }
 
24103
  }
 
24104
#line 3392 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24105
};
 
24106
 
 
24107
/** \class CT_TryStmt CTree.h Puma/CTree.h
 
24108
 *  Tree node representing a try-catch statement.
 
24109
 *  Example: \code try { f(); } catch (...) {} \endcode */
 
24110
 
 
24111
#line 24112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24112
} // closed Puma
 
24113
class CCExprResolve;
 
24114
class CExprResolve;
 
24115
class WinIfExists;
 
24116
class WinImportHandler;
 
24117
class WinMacros;
 
24118
class WinAsm;
 
24119
class WinDeclSpecs;
 
24120
class WinMemberExplSpec;
 
24121
class WinTypeKeywords;
 
24122
class WinFriend;
 
24123
class ExtAC;
 
24124
class ExtACBuilderCoupling;
 
24125
class ExtACSyntaxCoupling;
 
24126
class ExtACTree;
 
24127
class ExtACKeywords;
 
24128
class ExtGnu;
 
24129
class PragmaOnceUnitState;
 
24130
class PragmaOnce;
 
24131
class CMatchSyntax;
 
24132
namespace Puma {
 
24133
 
 
24134
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24135
class CT_TryStmt : public CT_Statement {
 
24136
#line 24137 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24137
  friend class ::CCExprResolve;
 
24138
  friend class ::CExprResolve;
 
24139
  friend class ::WinIfExists;
 
24140
  friend class ::WinImportHandler;
 
24141
  friend class ::WinMacros;
 
24142
  friend class ::WinAsm;
 
24143
  friend class ::WinDeclSpecs;
 
24144
  friend class ::WinMemberExplSpec;
 
24145
  friend class ::WinTypeKeywords;
 
24146
  friend class ::WinFriend;
 
24147
  friend class ::ExtAC;
 
24148
  friend class ::ExtACBuilderCoupling;
 
24149
  friend class ::ExtACSyntaxCoupling;
 
24150
  friend class ::ExtACTree;
 
24151
  friend class ::ExtACKeywords;
 
24152
  friend class ::ExtGnu;
 
24153
  friend class ::PragmaOnceUnitState;
 
24154
  friend class ::PragmaOnce;
 
24155
  friend class ::CMatchSyntax;
 
24156
 
 
24157
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24158
 
 
24159
  CTree *sons[3]; // try, stmt, handlers
 
24160
 
 
24161
public:
 
24162
  /** Constructor.
 
24163
   *  \param t The keyword 'try'.
 
24164
   *  \param s The statement enclosed in the try-catch block.
 
24165
   *  \param h The exception handler sequence. */
 
24166
  CT_TryStmt (CTree *t, CTree *s, CTree *h) {
 
24167
    AddSon (sons[0], t); AddSon (sons[1], s); AddSon (sons[2], h); 
 
24168
  }
 
24169
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24170
  static const char *NodeId ();
 
24171
  /** Get the name of the node. Can be compared with NodeId(). */
 
24172
  const char *NodeName () const { return NodeId (); }
 
24173
  /** Get the number of sons. */
 
24174
  int Sons () const { return 3; }
 
24175
  /** Get the n-th son.
 
24176
   *  \param n The index of the son.
 
24177
   *  \return The n-th son or NULL. */
 
24178
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
24179
  /** Get the enclosed statement. */
 
24180
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
24181
  /** Get the exception handler sequence. */
 
24182
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[2]; }
 
24183
  /** Replace a son.
 
24184
   *  \param old_son The son to replace.
 
24185
   *  \param new_son The new son. */
 
24186
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24187
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
24188
  }
 
24189
public:
 
24190
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
24191
  const char *__attr_name (unsigned i) const {
 
24192
    static const char *names[] = { "sons" }; return names[i];
 
24193
  }
 
24194
  const void *__attr (unsigned __i) const {
 
24195
    switch (__i) { case 0: return &sons; default: return 0; }
 
24196
  }
 
24197
#line 3428 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24198
};
 
24199
 
 
24200
/** \class CT_CaseStmt CTree.h Puma/CTree.h
 
24201
 *  Tree node representing a case statement.
 
24202
 *  Example: \code case 42: a=42; \endcode */
 
24203
 
 
24204
#line 24205 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24205
} // closed Puma
 
24206
class CCExprResolve;
 
24207
class CExprResolve;
 
24208
class WinIfExists;
 
24209
class WinImportHandler;
 
24210
class WinMacros;
 
24211
class WinAsm;
 
24212
class WinDeclSpecs;
 
24213
class WinMemberExplSpec;
 
24214
class WinTypeKeywords;
 
24215
class WinFriend;
 
24216
class ExtAC;
 
24217
class ExtACBuilderCoupling;
 
24218
class ExtACSyntaxCoupling;
 
24219
class ExtACTree;
 
24220
class ExtACKeywords;
 
24221
class ExtGnu;
 
24222
class PragmaOnceUnitState;
 
24223
class PragmaOnce;
 
24224
class CMatchSyntax;
 
24225
namespace Puma {
 
24226
 
 
24227
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24228
class CT_CaseStmt : public CT_Statement {
 
24229
#line 24230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24230
  friend class ::CCExprResolve;
 
24231
  friend class ::CExprResolve;
 
24232
  friend class ::WinIfExists;
 
24233
  friend class ::WinImportHandler;
 
24234
  friend class ::WinMacros;
 
24235
  friend class ::WinAsm;
 
24236
  friend class ::WinDeclSpecs;
 
24237
  friend class ::WinMemberExplSpec;
 
24238
  friend class ::WinTypeKeywords;
 
24239
  friend class ::WinFriend;
 
24240
  friend class ::ExtAC;
 
24241
  friend class ::ExtACBuilderCoupling;
 
24242
  friend class ::ExtACSyntaxCoupling;
 
24243
  friend class ::ExtACTree;
 
24244
  friend class ::ExtACKeywords;
 
24245
  friend class ::ExtGnu;
 
24246
  friend class ::PragmaOnceUnitState;
 
24247
  friend class ::PragmaOnce;
 
24248
  friend class ::CMatchSyntax;
 
24249
 
 
24250
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24251
 
 
24252
  CTree *sons[4]; // keyword, expr, colon, stmt
 
24253
 
 
24254
public:
 
24255
  /** Constructor.
 
24256
   *  \param kw The keyword 'case'.
 
24257
   *  \param expr The constant expression specifying the case value.
 
24258
   *  \param c The colon.
 
24259
   *  \param stmt The statement of the case. */
 
24260
  CT_CaseStmt (CTree *kw, CTree *expr, CTree *c, CTree *stmt) {
 
24261
    AddSon (sons[0], kw); AddSon (sons[1], expr); 
 
24262
    AddSon (sons[2], c); AddSon (sons[3], stmt); 
 
24263
  }
 
24264
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24265
  static const char *NodeId ();
 
24266
  /** Get the name of the node. Can be compared with NodeId(). */
 
24267
  const char *NodeName () const { return NodeId (); }
 
24268
  /** Get the number of sons. */
 
24269
  int Sons () const { return 4; }
 
24270
  /** Get the n-th son.
 
24271
   *  \param n The index of the son.
 
24272
   *  \return The n-th son or NULL. */
 
24273
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
24274
  /** Get the statement. */
 
24275
  CT_Statement *Statement () const { return (CT_Statement*)sons[3]; }
 
24276
  /** Get the expression specifying the case value. */
 
24277
  CTree *Expr () const { return sons[1]; }
 
24278
  /** Replace a son.
 
24279
   *  \param old_son The son to replace.
 
24280
   *  \param new_son The new son. */
 
24281
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24282
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
24283
  }
 
24284
public:
 
24285
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
24286
  const char *__attr_name (unsigned i) const {
 
24287
    static const char *names[] = { "sons" }; return names[i];
 
24288
  }
 
24289
  const void *__attr (unsigned __i) const {
 
24290
    switch (__i) { case 0: return &sons; default: return 0; }
 
24291
  }
 
24292
#line 3466 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24293
};
 
24294
 
 
24295
/** \class CT_ExprStmt CTree.h Puma/CTree.h
 
24296
 *  Tree node representing an expression statement.
 
24297
 *  Example: \code a+b; \endcode */
 
24298
 
 
24299
#line 24300 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24300
} // closed Puma
 
24301
class CCExprResolve;
 
24302
class CExprResolve;
 
24303
class WinIfExists;
 
24304
class WinImportHandler;
 
24305
class WinMacros;
 
24306
class WinAsm;
 
24307
class WinDeclSpecs;
 
24308
class WinMemberExplSpec;
 
24309
class WinTypeKeywords;
 
24310
class WinFriend;
 
24311
class ExtAC;
 
24312
class ExtACBuilderCoupling;
 
24313
class ExtACSyntaxCoupling;
 
24314
class ExtACTree;
 
24315
class ExtACKeywords;
 
24316
class ExtGnu;
 
24317
class PragmaOnceUnitState;
 
24318
class PragmaOnce;
 
24319
class CMatchSyntax;
 
24320
namespace Puma {
 
24321
 
 
24322
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24323
class CT_ExprStmt : public CT_Statement {
 
24324
#line 24325 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24325
  friend class ::CCExprResolve;
 
24326
  friend class ::CExprResolve;
 
24327
  friend class ::WinIfExists;
 
24328
  friend class ::WinImportHandler;
 
24329
  friend class ::WinMacros;
 
24330
  friend class ::WinAsm;
 
24331
  friend class ::WinDeclSpecs;
 
24332
  friend class ::WinMemberExplSpec;
 
24333
  friend class ::WinTypeKeywords;
 
24334
  friend class ::WinFriend;
 
24335
  friend class ::ExtAC;
 
24336
  friend class ::ExtACBuilderCoupling;
 
24337
  friend class ::ExtACSyntaxCoupling;
 
24338
  friend class ::ExtACTree;
 
24339
  friend class ::ExtACKeywords;
 
24340
  friend class ::ExtGnu;
 
24341
  friend class ::PragmaOnceUnitState;
 
24342
  friend class ::PragmaOnce;
 
24343
  friend class ::CMatchSyntax;
 
24344
 
 
24345
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24346
 
 
24347
  CTree *sons[2]; // expr, semi_colon
 
24348
 
 
24349
public:
 
24350
  /** Constructor.
 
24351
   *  \param expr The expression.
 
24352
   *  \param sc The trailing semi-colon. */
 
24353
  CT_ExprStmt (CTree *expr, CTree *sc) { AddSon (sons[0], expr); AddSon (sons[1], sc); }
 
24354
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24355
  static const char *NodeId ();
 
24356
  /** Get the name of the node. Can be compared with NodeId(). */
 
24357
  const char *NodeName () const { return NodeId (); }
 
24358
  /** Get the number of sons. */
 
24359
  int Sons () const { return CTree::Sons (sons, 2); }
 
24360
  /** Get the n-th son.
 
24361
   *  \param n The index of the son.
 
24362
   *  \return The n-th son or NULL. */
 
24363
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
24364
  /** Get the expression. */
 
24365
  CTree *Expr () const { return sons[0]; }
 
24366
  /** Replace a son.
 
24367
   *  \param old_son The son to replace.
 
24368
   *  \param new_son The new son. */
 
24369
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24370
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
24371
  }
 
24372
public:
 
24373
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
24374
  const char *__attr_name (unsigned i) const {
 
24375
    static const char *names[] = { "sons" }; return names[i];
 
24376
  }
 
24377
  const void *__attr (unsigned __i) const {
 
24378
    switch (__i) { case 0: return &sons; default: return 0; }
 
24379
  }
 
24380
#line 3497 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24381
};
 
24382
 
 
24383
/** \class CT_DeclStmt CTree.h Puma/CTree.h
 
24384
 *  Tree node representing a declaration statement.
 
24385
 *  Example: \code int i = 0; \endcode */
 
24386
 
 
24387
#line 24388 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24388
} // closed Puma
 
24389
class CCExprResolve;
 
24390
class CExprResolve;
 
24391
class WinIfExists;
 
24392
class WinImportHandler;
 
24393
class WinMacros;
 
24394
class WinAsm;
 
24395
class WinDeclSpecs;
 
24396
class WinMemberExplSpec;
 
24397
class WinTypeKeywords;
 
24398
class WinFriend;
 
24399
class ExtAC;
 
24400
class ExtACBuilderCoupling;
 
24401
class ExtACSyntaxCoupling;
 
24402
class ExtACTree;
 
24403
class ExtACKeywords;
 
24404
class ExtGnu;
 
24405
class PragmaOnceUnitState;
 
24406
class PragmaOnce;
 
24407
class CMatchSyntax;
 
24408
namespace Puma {
 
24409
 
 
24410
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24411
class CT_DeclStmt : public CT_Statement {
 
24412
#line 24413 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24413
  friend class ::CCExprResolve;
 
24414
  friend class ::CExprResolve;
 
24415
  friend class ::WinIfExists;
 
24416
  friend class ::WinImportHandler;
 
24417
  friend class ::WinMacros;
 
24418
  friend class ::WinAsm;
 
24419
  friend class ::WinDeclSpecs;
 
24420
  friend class ::WinMemberExplSpec;
 
24421
  friend class ::WinTypeKeywords;
 
24422
  friend class ::WinFriend;
 
24423
  friend class ::ExtAC;
 
24424
  friend class ::ExtACBuilderCoupling;
 
24425
  friend class ::ExtACSyntaxCoupling;
 
24426
  friend class ::ExtACTree;
 
24427
  friend class ::ExtACKeywords;
 
24428
  friend class ::ExtGnu;
 
24429
  friend class ::PragmaOnceUnitState;
 
24430
  friend class ::PragmaOnce;
 
24431
  friend class ::CMatchSyntax;
 
24432
 
 
24433
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24434
 
 
24435
  CTree *_decl;
 
24436
 
 
24437
public:
 
24438
  /** Constructor.
 
24439
   *  \param decl The declaration. */
 
24440
  CT_DeclStmt (CTree *decl) { AddSon (_decl, decl); }
 
24441
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24442
  static const char *NodeId ();
 
24443
  /** Get the name of the node. Can be compared with NodeId(). */
 
24444
  const char *NodeName () const { return NodeId (); }
 
24445
  /** Get the number of sons. */
 
24446
  int Sons () const { return 1; }
 
24447
  /** Get the n-th son.
 
24448
   *  \param n The index of the son.
 
24449
   *  \return The n-th son or NULL. */
 
24450
  CTree *Son (int n) const { return n == 0 ? _decl : (CTree*)0; }
 
24451
  /** Replace a son.
 
24452
   *  \param old_son The son to replace.
 
24453
   *  \param new_son The new son. */
 
24454
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
24455
   { CTree::ReplaceSon (_decl, old_son, new_son); }
 
24456
public:
 
24457
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
24458
  const char *__attr_name (unsigned i) const {
 
24459
    static const char *names[] = { "_decl" }; return names[i];
 
24460
  }
 
24461
  const void *__attr (unsigned __i) const {
 
24462
    switch (__i) { case 0: return &_decl; default: return 0; }
 
24463
  }
 
24464
#line 3524 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24465
};
 
24466
 
 
24467
/** \class CT_SwitchStmt CTree.h Puma/CTree.h
 
24468
 *  Tree node representing a switch statement.
 
24469
 *  Example: \code switch(a) { case 0: a++; } \endcode */
 
24470
 
 
24471
#line 24472 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24472
} // closed Puma
 
24473
class CCExprResolve;
 
24474
class CExprResolve;
 
24475
class WinIfExists;
 
24476
class WinImportHandler;
 
24477
class WinMacros;
 
24478
class WinAsm;
 
24479
class WinDeclSpecs;
 
24480
class WinMemberExplSpec;
 
24481
class WinTypeKeywords;
 
24482
class WinFriend;
 
24483
class ExtAC;
 
24484
class ExtACBuilderCoupling;
 
24485
class ExtACSyntaxCoupling;
 
24486
class ExtACTree;
 
24487
class ExtACKeywords;
 
24488
class ExtGnu;
 
24489
class PragmaOnceUnitState;
 
24490
class PragmaOnce;
 
24491
class CMatchSyntax;
 
24492
namespace Puma {
 
24493
 
 
24494
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24495
class CT_SwitchStmt : public CT_Statement, public CSemScope {
 
24496
#line 24497 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24497
  friend class ::CCExprResolve;
 
24498
  friend class ::CExprResolve;
 
24499
  friend class ::WinIfExists;
 
24500
  friend class ::WinImportHandler;
 
24501
  friend class ::WinMacros;
 
24502
  friend class ::WinAsm;
 
24503
  friend class ::WinDeclSpecs;
 
24504
  friend class ::WinMemberExplSpec;
 
24505
  friend class ::WinTypeKeywords;
 
24506
  friend class ::WinFriend;
 
24507
  friend class ::ExtAC;
 
24508
  friend class ::ExtACBuilderCoupling;
 
24509
  friend class ::ExtACSyntaxCoupling;
 
24510
  friend class ::ExtACTree;
 
24511
  friend class ::ExtACKeywords;
 
24512
  friend class ::ExtGnu;
 
24513
  friend class ::PragmaOnceUnitState;
 
24514
  friend class ::PragmaOnce;
 
24515
  friend class ::CMatchSyntax;
 
24516
 
 
24517
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24518
 
 
24519
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
24520
 
 
24521
public:
 
24522
  /** Constructor.
 
24523
   *  \param kw The keyword 'switch'.
 
24524
   *  \param o Left parenthesis before the condition.
 
24525
   *  \param cond The switch-expression. 
 
24526
   *  \param c Right parenthesis behind the condition. 
 
24527
   *  \param stmt The cases of the switch-statement. */
 
24528
  CT_SwitchStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
24529
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
24530
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
24531
  }
 
24532
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24533
  static const char *NodeId ();
 
24534
  /** Get the name of the node. Can be compared with NodeId(). */
 
24535
  const char *NodeName () const { return NodeId (); }
 
24536
  /** Get the number of sons. */
 
24537
  int Sons () const { return 5; }
 
24538
  /** Get the n-th son.
 
24539
   *  \param n The index of the son.
 
24540
   *  \return The n-th son or NULL. */
 
24541
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
24542
  /** Get the cases. */
 
24543
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
24544
  /** Get the switch-expression. */
 
24545
  CTree *Condition () const { return sons[2]; }
 
24546
  /** Replace a son.
 
24547
   *  \param old_son The son to replace.
 
24548
   *  \param new_son The new son. */
 
24549
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24550
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
24551
  }
 
24552
  /** Get the scope opened by the switch-statement. */
 
24553
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
24554
public:
 
24555
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
24556
  const char *__attr_name (unsigned i) const {
 
24557
    static const char *names[] = { "sons" }; return names[i];
 
24558
  }
 
24559
  const void *__attr (unsigned __i) const {
 
24560
    switch (__i) { case 0: return &sons; default: return 0; }
 
24561
  }
 
24562
#line 3565 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24563
};
 
24564
 
 
24565
/** \class CT_IfStmt CTree.h Puma/CTree.h
 
24566
 *  Tree node representing a if-statement.
 
24567
 *  Example: \code if(a==0) a++; \endcode */
 
24568
 
 
24569
#line 24570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24570
} // closed Puma
 
24571
class CCExprResolve;
 
24572
class CExprResolve;
 
24573
class WinIfExists;
 
24574
class WinImportHandler;
 
24575
class WinMacros;
 
24576
class WinAsm;
 
24577
class WinDeclSpecs;
 
24578
class WinMemberExplSpec;
 
24579
class WinTypeKeywords;
 
24580
class WinFriend;
 
24581
class ExtAC;
 
24582
class ExtACBuilderCoupling;
 
24583
class ExtACSyntaxCoupling;
 
24584
class ExtACTree;
 
24585
class ExtACKeywords;
 
24586
class ExtGnu;
 
24587
class PragmaOnceUnitState;
 
24588
class PragmaOnce;
 
24589
class CMatchSyntax;
 
24590
namespace Puma {
 
24591
 
 
24592
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24593
class CT_IfStmt : public CT_Statement, public CSemScope {
 
24594
#line 24595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24595
  friend class ::CCExprResolve;
 
24596
  friend class ::CExprResolve;
 
24597
  friend class ::WinIfExists;
 
24598
  friend class ::WinImportHandler;
 
24599
  friend class ::WinMacros;
 
24600
  friend class ::WinAsm;
 
24601
  friend class ::WinDeclSpecs;
 
24602
  friend class ::WinMemberExplSpec;
 
24603
  friend class ::WinTypeKeywords;
 
24604
  friend class ::WinFriend;
 
24605
  friend class ::ExtAC;
 
24606
  friend class ::ExtACBuilderCoupling;
 
24607
  friend class ::ExtACSyntaxCoupling;
 
24608
  friend class ::ExtACTree;
 
24609
  friend class ::ExtACKeywords;
 
24610
  friend class ::ExtGnu;
 
24611
  friend class ::PragmaOnceUnitState;
 
24612
  friend class ::PragmaOnce;
 
24613
  friend class ::CMatchSyntax;
 
24614
 
 
24615
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24616
 
 
24617
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
24618
 
 
24619
public:
 
24620
  /** Constructor.
 
24621
   *  \param kw The keyword 'if'.
 
24622
   *  \param o Left parenthesis before the condition.
 
24623
   *  \param cond The condition.
 
24624
   *  \param c Right parenthesis behind the condition.
 
24625
   *  \param stmt The controlled statement. */
 
24626
  CT_IfStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
24627
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
24628
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
24629
  }
 
24630
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24631
  static const char *NodeId ();
 
24632
  /** Get the name of the node. Can be compared with NodeId(). */
 
24633
  const char *NodeName () const { return NodeId (); }
 
24634
  /** Get the number of sons. */
 
24635
  int Sons () const { return 5; }
 
24636
  /** Get the n-th son.
 
24637
   *  \param n The index of the son.
 
24638
   *  \return The n-th son or NULL. */
 
24639
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
24640
  /** Get the controlled statement. */
 
24641
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
24642
  /** Get the condition. */
 
24643
  CTree *Condition () const { return sons[2]; }
 
24644
  /** Replace a son.
 
24645
   *  \param old_son The son to replace.
 
24646
   *  \param new_son The new son. */
 
24647
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24648
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
24649
  }
 
24650
  /** Get the scope opened by the if-statement. */
 
24651
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
24652
public:
 
24653
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
24654
  const char *__attr_name (unsigned i) const {
 
24655
    static const char *names[] = { "sons" }; return names[i];
 
24656
  }
 
24657
  const void *__attr (unsigned __i) const {
 
24658
    switch (__i) { case 0: return &sons; default: return 0; }
 
24659
  }
 
24660
#line 3606 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24661
};
 
24662
 
 
24663
/** \class CT_IfElseStmt CTree.h Puma/CTree.h
 
24664
 *  Tree node representing a if-else-statement.
 
24665
 *  Example: \code if(a==0) a++; else a=0; \endcode */
 
24666
 
 
24667
#line 24668 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24668
} // closed Puma
 
24669
class CCExprResolve;
 
24670
class CExprResolve;
 
24671
class WinIfExists;
 
24672
class WinImportHandler;
 
24673
class WinMacros;
 
24674
class WinAsm;
 
24675
class WinDeclSpecs;
 
24676
class WinMemberExplSpec;
 
24677
class WinTypeKeywords;
 
24678
class WinFriend;
 
24679
class ExtAC;
 
24680
class ExtACBuilderCoupling;
 
24681
class ExtACSyntaxCoupling;
 
24682
class ExtACTree;
 
24683
class ExtACKeywords;
 
24684
class ExtGnu;
 
24685
class PragmaOnceUnitState;
 
24686
class PragmaOnce;
 
24687
class CMatchSyntax;
 
24688
namespace Puma {
 
24689
 
 
24690
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24691
class CT_IfElseStmt : public CT_Statement, public CSemScope {
 
24692
#line 24693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24693
  friend class ::CCExprResolve;
 
24694
  friend class ::CExprResolve;
 
24695
  friend class ::WinIfExists;
 
24696
  friend class ::WinImportHandler;
 
24697
  friend class ::WinMacros;
 
24698
  friend class ::WinAsm;
 
24699
  friend class ::WinDeclSpecs;
 
24700
  friend class ::WinMemberExplSpec;
 
24701
  friend class ::WinTypeKeywords;
 
24702
  friend class ::WinFriend;
 
24703
  friend class ::ExtAC;
 
24704
  friend class ::ExtACBuilderCoupling;
 
24705
  friend class ::ExtACSyntaxCoupling;
 
24706
  friend class ::ExtACTree;
 
24707
  friend class ::ExtACKeywords;
 
24708
  friend class ::ExtGnu;
 
24709
  friend class ::PragmaOnceUnitState;
 
24710
  friend class ::PragmaOnce;
 
24711
  friend class ::CMatchSyntax;
 
24712
 
 
24713
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24714
 
 
24715
  CTree *sons[7]; // if, open, cond, close, if_stmt, else, else_stmt
 
24716
 
 
24717
public:
 
24718
  /** Constructor.
 
24719
   *  \param i The keyword 'if'.
 
24720
   *  \param o Left parenthesis before the condition.
 
24721
   *  \param cond The condition.
 
24722
   *  \param c Right parenthesis behind the condition.
 
24723
   *  \param is The statement controlled by the if-branch.
 
24724
   *  \param e The keyword 'else'.
 
24725
   *  \param es The statement controlled by the else-branch. */
 
24726
  CT_IfElseStmt (CTree *i, CTree *o, CTree *cond, CTree *c, 
 
24727
                 CTree *is, CTree *e, CTree *es) {
 
24728
    AddSon (sons[0], i); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
24729
    AddSon (sons[3], c); AddSon (sons[4], is); AddSon (sons[5], e); 
 
24730
    AddSon (sons[6], es); 
 
24731
  }
 
24732
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24733
  static const char *NodeId ();
 
24734
  /** Get the name of the node. Can be compared with NodeId(). */
 
24735
  const char *NodeName () const { return NodeId (); }
 
24736
  /** Get the number of sons. */
 
24737
  int Sons () const { return 7; }
 
24738
  /** Get the n-th son.
 
24739
   *  \param n The index of the son.
 
24740
   *  \return The n-th son or NULL. */
 
24741
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
24742
  /** Get the condition. */
 
24743
  CTree *Condition () const { return sons[2]; }
 
24744
  /** Get the statement controlled by the if-branch. */
 
24745
  CT_Statement *IfPart () const { return (CT_Statement*)sons[4]; }
 
24746
  /** Get the statement controlled by the else-branch. */
 
24747
  CT_Statement *ElsePart () const { return (CT_Statement*)sons[6]; }
 
24748
  /** Replace a son.
 
24749
   *  \param old_son The son to replace.
 
24750
   *  \param new_son The new son. */
 
24751
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24752
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
24753
  }
 
24754
  /** Get the scope opened by the if-statement. */
 
24755
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
24756
public:
 
24757
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
24758
  const char *__attr_name (unsigned i) const {
 
24759
    static const char *names[] = { "sons" }; return names[i];
 
24760
  }
 
24761
  const void *__attr (unsigned __i) const {
 
24762
    switch (__i) { case 0: return &sons; default: return 0; }
 
24763
  }
 
24764
#line 3653 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24765
};
 
24766
 
 
24767
/** \class CT_BreakStmt CTree.h Puma/CTree.h
 
24768
 *  Tree node representing a break-statement.
 
24769
 *  Example: \code break; \endcode */
 
24770
 
 
24771
#line 24772 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24772
} // closed Puma
 
24773
class CCExprResolve;
 
24774
class CExprResolve;
 
24775
class WinIfExists;
 
24776
class WinImportHandler;
 
24777
class WinMacros;
 
24778
class WinAsm;
 
24779
class WinDeclSpecs;
 
24780
class WinMemberExplSpec;
 
24781
class WinTypeKeywords;
 
24782
class WinFriend;
 
24783
class ExtAC;
 
24784
class ExtACBuilderCoupling;
 
24785
class ExtACSyntaxCoupling;
 
24786
class ExtACTree;
 
24787
class ExtACKeywords;
 
24788
class ExtGnu;
 
24789
class PragmaOnceUnitState;
 
24790
class PragmaOnce;
 
24791
class CMatchSyntax;
 
24792
namespace Puma {
 
24793
 
 
24794
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24795
class CT_BreakStmt : public CT_Statement {
 
24796
#line 24797 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24797
  friend class ::CCExprResolve;
 
24798
  friend class ::CExprResolve;
 
24799
  friend class ::WinIfExists;
 
24800
  friend class ::WinImportHandler;
 
24801
  friend class ::WinMacros;
 
24802
  friend class ::WinAsm;
 
24803
  friend class ::WinDeclSpecs;
 
24804
  friend class ::WinMemberExplSpec;
 
24805
  friend class ::WinTypeKeywords;
 
24806
  friend class ::WinFriend;
 
24807
  friend class ::ExtAC;
 
24808
  friend class ::ExtACBuilderCoupling;
 
24809
  friend class ::ExtACSyntaxCoupling;
 
24810
  friend class ::ExtACTree;
 
24811
  friend class ::ExtACKeywords;
 
24812
  friend class ::ExtGnu;
 
24813
  friend class ::PragmaOnceUnitState;
 
24814
  friend class ::PragmaOnce;
 
24815
  friend class ::CMatchSyntax;
 
24816
 
 
24817
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24818
 
 
24819
  CTree *sons[2]; // key, semi_colon
 
24820
 
 
24821
public:
 
24822
  /** Constructor.
 
24823
   *  \param key The keyword 'break'.
 
24824
   *  \param sc The trailing semi-colon. */
 
24825
  CT_BreakStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
24826
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24827
  static const char *NodeId ();
 
24828
  /** Get the name of the node. Can be compared with NodeId(). */
 
24829
  const char *NodeName () const { return NodeId (); }
 
24830
  /** Get the number of sons. */
 
24831
  int Sons () const { return 2; }
 
24832
  /** Get the n-th son.
 
24833
   *  \param n The index of the son.
 
24834
   *  \return The n-th son or NULL. */
 
24835
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
24836
  /** Replace a son.
 
24837
   *  \param old_son The son to replace.
 
24838
   *  \param new_son The new son. */
 
24839
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24840
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
24841
  }
 
24842
public:
 
24843
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
24844
  const char *__attr_name (unsigned i) const {
 
24845
    static const char *names[] = { "sons" }; return names[i];
 
24846
  }
 
24847
  const void *__attr (unsigned __i) const {
 
24848
    switch (__i) { case 0: return &sons; default: return 0; }
 
24849
  }
 
24850
#line 3682 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24851
};
 
24852
 
 
24853
/** \class CT_ContinueStmt CTree.h Puma/CTree.h
 
24854
 *  Tree node representing a continue-statement.
 
24855
 *  Example: \code continue; \endcode */
 
24856
 
 
24857
#line 24858 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24858
} // closed Puma
 
24859
class CCExprResolve;
 
24860
class CExprResolve;
 
24861
class WinIfExists;
 
24862
class WinImportHandler;
 
24863
class WinMacros;
 
24864
class WinAsm;
 
24865
class WinDeclSpecs;
 
24866
class WinMemberExplSpec;
 
24867
class WinTypeKeywords;
 
24868
class WinFriend;
 
24869
class ExtAC;
 
24870
class ExtACBuilderCoupling;
 
24871
class ExtACSyntaxCoupling;
 
24872
class ExtACTree;
 
24873
class ExtACKeywords;
 
24874
class ExtGnu;
 
24875
class PragmaOnceUnitState;
 
24876
class PragmaOnce;
 
24877
class CMatchSyntax;
 
24878
namespace Puma {
 
24879
 
 
24880
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24881
class CT_ContinueStmt : public CT_Statement {
 
24882
#line 24883 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24883
  friend class ::CCExprResolve;
 
24884
  friend class ::CExprResolve;
 
24885
  friend class ::WinIfExists;
 
24886
  friend class ::WinImportHandler;
 
24887
  friend class ::WinMacros;
 
24888
  friend class ::WinAsm;
 
24889
  friend class ::WinDeclSpecs;
 
24890
  friend class ::WinMemberExplSpec;
 
24891
  friend class ::WinTypeKeywords;
 
24892
  friend class ::WinFriend;
 
24893
  friend class ::ExtAC;
 
24894
  friend class ::ExtACBuilderCoupling;
 
24895
  friend class ::ExtACSyntaxCoupling;
 
24896
  friend class ::ExtACTree;
 
24897
  friend class ::ExtACKeywords;
 
24898
  friend class ::ExtGnu;
 
24899
  friend class ::PragmaOnceUnitState;
 
24900
  friend class ::PragmaOnce;
 
24901
  friend class ::CMatchSyntax;
 
24902
 
 
24903
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24904
 
 
24905
  CTree *sons[2]; // key, semi_colon
 
24906
 
 
24907
public:
 
24908
  /** Constructor.
 
24909
   *  \param key The keyword 'continue'.
 
24910
   *  \param sc The trailing semi-colon. */
 
24911
  CT_ContinueStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
24912
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24913
  static const char *NodeId ();
 
24914
  /** Get the name of the node. Can be compared with NodeId(). */
 
24915
  const char *NodeName () const { return NodeId (); }
 
24916
  /** Get the number of sons. */
 
24917
  int Sons () const { return 2; }
 
24918
  /** Get the n-th son.
 
24919
   *  \param n The index of the son.
 
24920
   *  \return The n-th son or NULL. */
 
24921
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
24922
  /** Replace a son.
 
24923
   *  \param old_son The son to replace.
 
24924
   *  \param new_son The new son. */
 
24925
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24926
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
24927
  }
 
24928
public:
 
24929
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
24930
  const char *__attr_name (unsigned i) const {
 
24931
    static const char *names[] = { "sons" }; return names[i];
 
24932
  }
 
24933
  const void *__attr (unsigned __i) const {
 
24934
    switch (__i) { case 0: return &sons; default: return 0; }
 
24935
  }
 
24936
#line 3711 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24937
};
 
24938
 
 
24939
/** \class CT_GotoStmt CTree.h Puma/CTree.h
 
24940
 *  Tree node representing a goto-stmt.
 
24941
 *  Example: \code goto incr_a; \endcode */
 
24942
 
 
24943
#line 24944 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24944
} // closed Puma
 
24945
class CCExprResolve;
 
24946
class CExprResolve;
 
24947
class WinIfExists;
 
24948
class WinImportHandler;
 
24949
class WinMacros;
 
24950
class WinAsm;
 
24951
class WinDeclSpecs;
 
24952
class WinMemberExplSpec;
 
24953
class WinTypeKeywords;
 
24954
class WinFriend;
 
24955
class ExtAC;
 
24956
class ExtACBuilderCoupling;
 
24957
class ExtACSyntaxCoupling;
 
24958
class ExtACTree;
 
24959
class ExtACKeywords;
 
24960
class ExtGnu;
 
24961
class PragmaOnceUnitState;
 
24962
class PragmaOnce;
 
24963
class CMatchSyntax;
 
24964
namespace Puma {
 
24965
 
 
24966
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24967
class CT_GotoStmt : public CT_Statement {
 
24968
#line 24969 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
24969
  friend class ::CCExprResolve;
 
24970
  friend class ::CExprResolve;
 
24971
  friend class ::WinIfExists;
 
24972
  friend class ::WinImportHandler;
 
24973
  friend class ::WinMacros;
 
24974
  friend class ::WinAsm;
 
24975
  friend class ::WinDeclSpecs;
 
24976
  friend class ::WinMemberExplSpec;
 
24977
  friend class ::WinTypeKeywords;
 
24978
  friend class ::WinFriend;
 
24979
  friend class ::ExtAC;
 
24980
  friend class ::ExtACBuilderCoupling;
 
24981
  friend class ::ExtACSyntaxCoupling;
 
24982
  friend class ::ExtACTree;
 
24983
  friend class ::ExtACKeywords;
 
24984
  friend class ::ExtGnu;
 
24985
  friend class ::PragmaOnceUnitState;
 
24986
  friend class ::PragmaOnce;
 
24987
  friend class ::CMatchSyntax;
 
24988
 
 
24989
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24990
 
 
24991
  CTree *sons[3]; // key, label, semi_colon
 
24992
 
 
24993
public:
 
24994
  /** Constructor.
 
24995
   *  \param key The keyword 'goto'.
 
24996
   *  \param l The name of the jump label.
 
24997
   *  \param sc The trailing semi-colon. */
 
24998
  CT_GotoStmt (CTree *key, CTree *l, CTree *sc) {
 
24999
    AddSon (sons[0], key); AddSon (sons[1], l); AddSon (sons[2], sc); 
 
25000
  }
 
25001
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25002
  static const char *NodeId ();
 
25003
  /** Get the name of the node. Can be compared with NodeId(). */
 
25004
  const char *NodeName () const { return NodeId (); }
 
25005
  /** Get the number of sons. */
 
25006
  int Sons () const { return 3; }
 
25007
  /** Get the n-th son.
 
25008
   *  \param n The index of the son.
 
25009
   *  \return The n-th son or NULL. */
 
25010
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
25011
  /** Get the name of the jump label. */
 
25012
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[1]; }
 
25013
  /** Replace a son.
 
25014
   *  \param old_son The son to replace.
 
25015
   *  \param new_son The new son. */
 
25016
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25017
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
25018
  }
 
25019
public:
 
25020
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
25021
  const char *__attr_name (unsigned i) const {
 
25022
    static const char *names[] = { "sons" }; return names[i];
 
25023
  }
 
25024
  const void *__attr (unsigned __i) const {
 
25025
    switch (__i) { case 0: return &sons; default: return 0; }
 
25026
  }
 
25027
#line 3745 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25028
};
 
25029
 
 
25030
/** \class CT_ReturnStmt CTree.h Puma/CTree.h
 
25031
 *  Tree node representing a return-statement.
 
25032
 *  Example: \code return 1; \endcode */
 
25033
 
 
25034
#line 25035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25035
} // closed Puma
 
25036
class CCExprResolve;
 
25037
class CExprResolve;
 
25038
class WinIfExists;
 
25039
class WinImportHandler;
 
25040
class WinMacros;
 
25041
class WinAsm;
 
25042
class WinDeclSpecs;
 
25043
class WinMemberExplSpec;
 
25044
class WinTypeKeywords;
 
25045
class WinFriend;
 
25046
class ExtAC;
 
25047
class ExtACBuilderCoupling;
 
25048
class ExtACSyntaxCoupling;
 
25049
class ExtACTree;
 
25050
class ExtACKeywords;
 
25051
class ExtGnu;
 
25052
class PragmaOnceUnitState;
 
25053
class PragmaOnce;
 
25054
class CMatchSyntax;
 
25055
namespace Puma {
 
25056
 
 
25057
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25058
class CT_ReturnStmt : public CT_Statement {
 
25059
#line 25060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25060
  friend class ::CCExprResolve;
 
25061
  friend class ::CExprResolve;
 
25062
  friend class ::WinIfExists;
 
25063
  friend class ::WinImportHandler;
 
25064
  friend class ::WinMacros;
 
25065
  friend class ::WinAsm;
 
25066
  friend class ::WinDeclSpecs;
 
25067
  friend class ::WinMemberExplSpec;
 
25068
  friend class ::WinTypeKeywords;
 
25069
  friend class ::WinFriend;
 
25070
  friend class ::ExtAC;
 
25071
  friend class ::ExtACBuilderCoupling;
 
25072
  friend class ::ExtACSyntaxCoupling;
 
25073
  friend class ::ExtACTree;
 
25074
  friend class ::ExtACKeywords;
 
25075
  friend class ::ExtGnu;
 
25076
  friend class ::PragmaOnceUnitState;
 
25077
  friend class ::PragmaOnce;
 
25078
  friend class ::CMatchSyntax;
 
25079
 
 
25080
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25081
 
 
25082
  CTree *sons[3]; // key, expr, semi_colon
 
25083
 
 
25084
public:
 
25085
  /** Constructor.
 
25086
   *  \param key The keyword 'return'.
 
25087
   *  \param e The expression specifying the return value. 
 
25088
   *  \param sc The trailing semi-colon. */
 
25089
  CT_ReturnStmt (CTree *key, CTree *e, CTree *sc) {
 
25090
    AddSon (sons[0], key); AddSon (sons[1], e); AddSon (sons[2], sc); 
 
25091
  }
 
25092
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25093
  static const char *NodeId ();
 
25094
  /** Get the name of the node. Can be compared with NodeId(). */
 
25095
  const char *NodeName () const { return NodeId (); }
 
25096
  /** Get the number of sons. */
 
25097
  int Sons () const { return CTree::Sons (sons, 3); }
 
25098
  /** Get the n-th son.
 
25099
   *  \param n The index of the son.
 
25100
   *  \return The n-th son or NULL. */
 
25101
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
25102
  /** Get the expression specifying the return value. */
 
25103
  CTree *Expr () const { return sons[1]; }
 
25104
  /** Replace a son.
 
25105
   *  \param old_son The son to replace.
 
25106
   *  \param new_son The new son. */
 
25107
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25108
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
25109
  }
 
25110
public:
 
25111
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
25112
  const char *__attr_name (unsigned i) const {
 
25113
    static const char *names[] = { "sons" }; return names[i];
 
25114
  }
 
25115
  const void *__attr (unsigned __i) const {
 
25116
    switch (__i) { case 0: return &sons; default: return 0; }
 
25117
  }
 
25118
#line 3779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25119
};
 
25120
 
 
25121
/** \class CT_WhileStmt CTree.h Puma/CTree.h
 
25122
 *  Tree node representing a while-statement.
 
25123
 *  Example: \code while(a>0) a--; \endcode */
 
25124
 
 
25125
#line 25126 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25126
} // closed Puma
 
25127
class CCExprResolve;
 
25128
class CExprResolve;
 
25129
class WinIfExists;
 
25130
class WinImportHandler;
 
25131
class WinMacros;
 
25132
class WinAsm;
 
25133
class WinDeclSpecs;
 
25134
class WinMemberExplSpec;
 
25135
class WinTypeKeywords;
 
25136
class WinFriend;
 
25137
class ExtAC;
 
25138
class ExtACBuilderCoupling;
 
25139
class ExtACSyntaxCoupling;
 
25140
class ExtACTree;
 
25141
class ExtACKeywords;
 
25142
class ExtGnu;
 
25143
class PragmaOnceUnitState;
 
25144
class PragmaOnce;
 
25145
class CMatchSyntax;
 
25146
namespace Puma {
 
25147
 
 
25148
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25149
class CT_WhileStmt : public CT_Statement, public CSemScope {
 
25150
#line 25151 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25151
  friend class ::CCExprResolve;
 
25152
  friend class ::CExprResolve;
 
25153
  friend class ::WinIfExists;
 
25154
  friend class ::WinImportHandler;
 
25155
  friend class ::WinMacros;
 
25156
  friend class ::WinAsm;
 
25157
  friend class ::WinDeclSpecs;
 
25158
  friend class ::WinMemberExplSpec;
 
25159
  friend class ::WinTypeKeywords;
 
25160
  friend class ::WinFriend;
 
25161
  friend class ::ExtAC;
 
25162
  friend class ::ExtACBuilderCoupling;
 
25163
  friend class ::ExtACSyntaxCoupling;
 
25164
  friend class ::ExtACTree;
 
25165
  friend class ::ExtACKeywords;
 
25166
  friend class ::ExtGnu;
 
25167
  friend class ::PragmaOnceUnitState;
 
25168
  friend class ::PragmaOnce;
 
25169
  friend class ::CMatchSyntax;
 
25170
 
 
25171
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25172
 
 
25173
  CTree *sons[5]; // key, open, cond, close, stmt
 
25174
 
 
25175
public:
 
25176
  /** Constructor.
 
25177
   *  \param kw The keyword 'while'.
 
25178
   *  \param o Left parenthesis before the condition.
 
25179
   *  \param cond The loop condition. 
 
25180
   *  \param c Right parenthesis behind the condition. 
 
25181
   *  \param stmt The controlled statement. */
 
25182
  CT_WhileStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
25183
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
25184
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
25185
  }
 
25186
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25187
  static const char *NodeId ();
 
25188
  /** Get the name of the node. Can be compared with NodeId(). */
 
25189
  const char *NodeName () const { return NodeId (); }
 
25190
  /** Get the number of sons. */
 
25191
  int Sons () const { return 5; }
 
25192
  /** Get the n-th son.
 
25193
   *  \param n The index of the son.
 
25194
   *  \return The n-th son or NULL. */
 
25195
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
25196
  /** Get the controlled statement. */
 
25197
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
25198
  /** Get the loop condition. */
 
25199
  CTree *Condition () const { return sons[2]; }
 
25200
  /** Replace a son.
 
25201
   *  \param old_son The son to replace.
 
25202
   *  \param new_son The new son. */
 
25203
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25204
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
25205
  }
 
25206
  /** Get the scope opened by the while-statement. */
 
25207
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
25208
public:
 
25209
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
25210
  const char *__attr_name (unsigned i) const {
 
25211
    static const char *names[] = { "sons" }; return names[i];
 
25212
  }
 
25213
  const void *__attr (unsigned __i) const {
 
25214
    switch (__i) { case 0: return &sons; default: return 0; }
 
25215
  }
 
25216
#line 3820 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25217
};
 
25218
 
 
25219
/** \class CT_DoStmt CTree.h Puma/CTree.h
 
25220
 *  Tree node representing a do-while-statement.
 
25221
 *  Example: \code do a--; while(a>0); \endcode */
 
25222
 
 
25223
#line 25224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25224
} // closed Puma
 
25225
class CCExprResolve;
 
25226
class CExprResolve;
 
25227
class WinIfExists;
 
25228
class WinImportHandler;
 
25229
class WinMacros;
 
25230
class WinAsm;
 
25231
class WinDeclSpecs;
 
25232
class WinMemberExplSpec;
 
25233
class WinTypeKeywords;
 
25234
class WinFriend;
 
25235
class ExtAC;
 
25236
class ExtACBuilderCoupling;
 
25237
class ExtACSyntaxCoupling;
 
25238
class ExtACTree;
 
25239
class ExtACKeywords;
 
25240
class ExtGnu;
 
25241
class PragmaOnceUnitState;
 
25242
class PragmaOnce;
 
25243
class CMatchSyntax;
 
25244
namespace Puma {
 
25245
 
 
25246
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25247
class CT_DoStmt : public CT_Statement {
 
25248
#line 25249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25249
  friend class ::CCExprResolve;
 
25250
  friend class ::CExprResolve;
 
25251
  friend class ::WinIfExists;
 
25252
  friend class ::WinImportHandler;
 
25253
  friend class ::WinMacros;
 
25254
  friend class ::WinAsm;
 
25255
  friend class ::WinDeclSpecs;
 
25256
  friend class ::WinMemberExplSpec;
 
25257
  friend class ::WinTypeKeywords;
 
25258
  friend class ::WinFriend;
 
25259
  friend class ::ExtAC;
 
25260
  friend class ::ExtACBuilderCoupling;
 
25261
  friend class ::ExtACSyntaxCoupling;
 
25262
  friend class ::ExtACTree;
 
25263
  friend class ::ExtACKeywords;
 
25264
  friend class ::ExtGnu;
 
25265
  friend class ::PragmaOnceUnitState;
 
25266
  friend class ::PragmaOnce;
 
25267
  friend class ::CMatchSyntax;
 
25268
 
 
25269
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25270
 
 
25271
  CTree *sons[7]; // do, stmt, while, open, expr, close, semi_colon
 
25272
 
 
25273
public:
 
25274
  /** Constructor.
 
25275
   *  \param d The keyword 'do'.
 
25276
   *  \param stmt The controlled statement.
 
25277
   *  \param w The keyword 'while'.
 
25278
   *  \param o Left parenthesis before the loop condition.
 
25279
   *  \param e The loop condition.
 
25280
   *  \param c Right parenthesis behind the loop condition.
 
25281
   *  \param sc The trailing semi-colon. */
 
25282
  CT_DoStmt (CTree *d, CTree *stmt, CTree *w, CTree *o, CTree *e, 
 
25283
             CTree *c, CTree *sc) {
 
25284
    AddSon (sons[0], d); AddSon (sons[1], stmt); AddSon (sons[2], w); 
 
25285
    AddSon (sons[3], o); AddSon (sons[4], e); AddSon (sons[5], c); 
 
25286
    AddSon (sons[6], sc); 
 
25287
  }
 
25288
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25289
  static const char *NodeId ();
 
25290
  /** Get the name of the node. Can be compared with NodeId(). */
 
25291
  const char *NodeName () const { return NodeId (); }
 
25292
  /** Get the number of sons. */
 
25293
  int Sons () const { return 7; }
 
25294
  /** Get the n-th son.
 
25295
   *  \param n The index of the son.
 
25296
   *  \return The n-th son or NULL. */
 
25297
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
25298
  /** Get the controlled statement. */
 
25299
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
25300
  /** Get the loop condition. */
 
25301
  CTree *Expr () const { return sons[4]; }
 
25302
  /** Replace a son.
 
25303
   *  \param old_son The son to replace.
 
25304
   *  \param new_son The new son. */
 
25305
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25306
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
25307
  }
 
25308
public:
 
25309
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
25310
  const char *__attr_name (unsigned i) const {
 
25311
    static const char *names[] = { "sons" }; return names[i];
 
25312
  }
 
25313
  const void *__attr (unsigned __i) const {
 
25314
    switch (__i) { case 0: return &sons; default: return 0; }
 
25315
  }
 
25316
#line 3863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25317
};
 
25318
 
 
25319
/** \class CT_ForStmt CTree.h Puma/CTree.h
 
25320
 *  Tree node representing a for-statement.
 
25321
 *  Example: \code for(int i=0; i<10; i++) f(i); \endcode */
 
25322
 
 
25323
#line 25324 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25324
} // closed Puma
 
25325
class CCExprResolve;
 
25326
class CExprResolve;
 
25327
class WinIfExists;
 
25328
class WinImportHandler;
 
25329
class WinMacros;
 
25330
class WinAsm;
 
25331
class WinDeclSpecs;
 
25332
class WinMemberExplSpec;
 
25333
class WinTypeKeywords;
 
25334
class WinFriend;
 
25335
class ExtAC;
 
25336
class ExtACBuilderCoupling;
 
25337
class ExtACSyntaxCoupling;
 
25338
class ExtACTree;
 
25339
class ExtACKeywords;
 
25340
class ExtGnu;
 
25341
class PragmaOnceUnitState;
 
25342
class PragmaOnce;
 
25343
class CMatchSyntax;
 
25344
namespace Puma {
 
25345
 
 
25346
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25347
class CT_ForStmt : public CT_Statement, public CSemScope {
 
25348
#line 25349 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25349
  friend class ::CCExprResolve;
 
25350
  friend class ::CExprResolve;
 
25351
  friend class ::WinIfExists;
 
25352
  friend class ::WinImportHandler;
 
25353
  friend class ::WinMacros;
 
25354
  friend class ::WinAsm;
 
25355
  friend class ::WinDeclSpecs;
 
25356
  friend class ::WinMemberExplSpec;
 
25357
  friend class ::WinTypeKeywords;
 
25358
  friend class ::WinFriend;
 
25359
  friend class ::ExtAC;
 
25360
  friend class ::ExtACBuilderCoupling;
 
25361
  friend class ::ExtACSyntaxCoupling;
 
25362
  friend class ::ExtACTree;
 
25363
  friend class ::ExtACKeywords;
 
25364
  friend class ::ExtGnu;
 
25365
  friend class ::PragmaOnceUnitState;
 
25366
  friend class ::PragmaOnce;
 
25367
  friend class ::CMatchSyntax;
 
25368
 
 
25369
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25370
 
 
25371
  CTree *sons[8]; // key, open, init, cond, semi_colon, expr, close, stmt
 
25372
 
 
25373
public:
 
25374
  /** Constructor.
 
25375
   *  \param k The keyword 'for'.
 
25376
   *  \param o Left parenthesis.
 
25377
   *  \param i The loop initializer statement.
 
25378
   *  \param co The loop condition.
 
25379
   *  \param sc The semi-colon behind the loop condition.
 
25380
   *  \param e The loop counter expression.
 
25381
   *  \param c Right parenthesis.
 
25382
   *  \param stmt The controlled statement. */
 
25383
  CT_ForStmt (CTree *k, CTree *o, CTree *i, CTree *co, CTree *sc,
 
25384
              CTree *e, CTree *c, CTree *stmt) {
 
25385
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], i); 
 
25386
    AddSon (sons[3], co); AddSon (sons[4], sc); AddSon (sons[5], e); 
 
25387
    AddSon (sons[6], c); AddSon (sons[7], stmt); 
 
25388
  }
 
25389
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25390
  static const char *NodeId ();
 
25391
  /** Get the name of the node. Can be compared with NodeId(). */
 
25392
  const char *NodeName () const { return NodeId (); }
 
25393
  /** Get the number of sons. */
 
25394
  int Sons () const { return CTree::Sons (sons, 8); }
 
25395
  /** Get the n-th son.
 
25396
   *  \param n The index of the son.
 
25397
   *  \return The n-th son or NULL. */
 
25398
  CTree *Son (int n) const { return CTree::Son (sons, 8, n); }
 
25399
  /** Get the loop initializer. */
 
25400
  CTree *InitStmt () const { return sons[2]; }
 
25401
  /** Get the loop condition. */
 
25402
  CTree *Condition () const { return sons[3]; }
 
25403
  /** Get the loop counter expression. */
 
25404
  CTree *Expr () const { return sons[5]; }
 
25405
  /** Get the controlled statement. */
 
25406
  CT_Statement *Statement () const { return (CT_Statement*)sons[7]; }
 
25407
  /** Replace a son.
 
25408
   *  \param old_son The son to replace.
 
25409
   *  \param new_son The new son. */
 
25410
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25411
    CTree::ReplaceSon (sons, 8, old_son, new_son);
 
25412
  }
 
25413
  /** Get the scope opened by the for-statement. */
 
25414
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
25415
public:
 
25416
  typedef AC::TL<Puma::CTree * [8],AC::TLE > __AttrTypes;
 
25417
  const char *__attr_name (unsigned i) const {
 
25418
    static const char *names[] = { "sons" }; return names[i];
 
25419
  }
 
25420
  const void *__attr (unsigned __i) const {
 
25421
    switch (__i) { case 0: return &sons; default: return 0; }
 
25422
  }
 
25423
#line 3913 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25424
};
 
25425
 
 
25426
/** \class CT_Condition CTree.h Puma/CTree.h
 
25427
 *  Tree node representing a control-statement condition.
 
25428
 *  Example: \code int i = 0 \endcode */
 
25429
 
 
25430
#line 25431 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25431
} // closed Puma
 
25432
class CCExprResolve;
 
25433
class CExprResolve;
 
25434
class WinIfExists;
 
25435
class WinImportHandler;
 
25436
class WinMacros;
 
25437
class WinAsm;
 
25438
class WinDeclSpecs;
 
25439
class WinMemberExplSpec;
 
25440
class WinTypeKeywords;
 
25441
class WinFriend;
 
25442
class ExtAC;
 
25443
class ExtACBuilderCoupling;
 
25444
class ExtACSyntaxCoupling;
 
25445
class ExtACTree;
 
25446
class ExtACKeywords;
 
25447
class ExtGnu;
 
25448
class PragmaOnceUnitState;
 
25449
class PragmaOnce;
 
25450
class CMatchSyntax;
 
25451
namespace Puma {
 
25452
 
 
25453
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25454
class CT_Condition : public CT_Decl, public CSemObject {
 
25455
#line 25456 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25456
  friend class ::CCExprResolve;
 
25457
  friend class ::CExprResolve;
 
25458
  friend class ::WinIfExists;
 
25459
  friend class ::WinImportHandler;
 
25460
  friend class ::WinMacros;
 
25461
  friend class ::WinAsm;
 
25462
  friend class ::WinDeclSpecs;
 
25463
  friend class ::WinMemberExplSpec;
 
25464
  friend class ::WinTypeKeywords;
 
25465
  friend class ::WinFriend;
 
25466
  friend class ::ExtAC;
 
25467
  friend class ::ExtACBuilderCoupling;
 
25468
  friend class ::ExtACSyntaxCoupling;
 
25469
  friend class ::ExtACTree;
 
25470
  friend class ::ExtACKeywords;
 
25471
  friend class ::ExtGnu;
 
25472
  friend class ::PragmaOnceUnitState;
 
25473
  friend class ::PragmaOnce;
 
25474
  friend class ::CMatchSyntax;
 
25475
 
 
25476
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25477
 
 
25478
  CTree *sons[3]; // declspecs, declarator, init
 
25479
 
 
25480
public:
 
25481
  /** Constructor.
 
25482
   *  \param dsl The declaration specifier sequence. 
 
25483
   *  \param d The variable declarator. */
 
25484
  CT_Condition (CTree *dsl, CTree *d) {
 
25485
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], 0);
 
25486
  }
 
25487
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25488
  static const char *NodeId ();
 
25489
  /** Get the name of the node. Can be compared with NodeId(). */
 
25490
  const char *NodeName () const { return NodeId (); }
 
25491
  /** Get the number of sons. */
 
25492
  int Sons () const { return CTree::Sons (sons, 3); }
 
25493
  /** Get the n-th son.
 
25494
   *  \param n The index of the son.
 
25495
   *  \return The n-th son or NULL. */
 
25496
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
25497
  /** Get the declaration specifier sequence. */
 
25498
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
25499
  /** Get the declarator. */
 
25500
  CTree *Declarator () const { return sons[1]; }
 
25501
  /** Get the initializer of the declaration. */
 
25502
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
25503
  /** Get the semantic information of the declared object. */
 
25504
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
25505
  /** Set the initializer. */
 
25506
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
25507
  /** Replace a son.
 
25508
   *  \param old_son The son to replace.
 
25509
   *  \param new_son The new son. */
 
25510
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25511
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
25512
  }
 
25513
public:
 
25514
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
25515
  const char *__attr_name (unsigned i) const {
 
25516
    static const char *names[] = { "sons" }; return names[i];
 
25517
  }
 
25518
  const void *__attr (unsigned __i) const {
 
25519
    switch (__i) { case 0: return &sons; default: return 0; }
 
25520
  }
 
25521
#line 3954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25522
};
 
25523
 
 
25524
/*****************************************************************************/
 
25525
/*                                                                           */
 
25526
/*                              Classes                                      */
 
25527
/*                                                                           */
 
25528
/*****************************************************************************/
 
25529
 
 
25530
/** \class CT_ClassDef CTree.h Puma/CTree.h
 
25531
 *  Tree node representing a class definition.
 
25532
 *  Example: \code class X : Y { int x; } \endcode */
 
25533
 
 
25534
#line 25535 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25535
} // closed Puma
 
25536
class CCExprResolve;
 
25537
class CExprResolve;
 
25538
class WinIfExists;
 
25539
class WinImportHandler;
 
25540
class WinMacros;
 
25541
class WinAsm;
 
25542
class WinDeclSpecs;
 
25543
class WinMemberExplSpec;
 
25544
class WinTypeKeywords;
 
25545
class WinFriend;
 
25546
class ExtAC;
 
25547
class ExtACBuilderCoupling;
 
25548
class ExtACSyntaxCoupling;
 
25549
class ExtACTree;
 
25550
class ExtACKeywords;
 
25551
class ExtGnu;
 
25552
class PragmaOnceUnitState;
 
25553
class PragmaOnce;
 
25554
class CMatchSyntax;
 
25555
namespace Puma {
 
25556
 
 
25557
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25558
 
 
25559
#line 25560 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25560
} // closed Puma
 
25561
 
 
25562
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
25563
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
25564
 
 
25565
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25566
// This file is part of PUMA.
 
25567
// Copyright (C) 1999-2003  The PUMA developer team.
 
25568
//                                                                
 
25569
// This program is free software;  you can redistribute it and/or 
 
25570
// modify it under the terms of the GNU General Public License as 
 
25571
// published by the Free Software Foundation; either version 2 of 
 
25572
// the License, or (at your option) any later version.            
 
25573
//                                                                
 
25574
// This program is distributed in the hope that it will be useful,
 
25575
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
25576
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
25577
// GNU General Public License for more details.                   
 
25578
//                                                                
 
25579
// You should have received a copy of the GNU General Public      
 
25580
// License along with this program; if not, write to the Free     
 
25581
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
25582
// MA  02111-1307  USA                                            
 
25583
 
 
25584
#ifndef __ExtACTree_ah__
 
25585
#define __ExtACTree_ah__
 
25586
 
 
25587
// TODO:
 
25588
// this shall be introduced by the ExtAC aspect as soon as the include cycle
 
25589
// problem is solved!
 
25590
 
 
25591
namespace Puma {
 
25592
  class CTree;
 
25593
}
 
25594
 
 
25595
 
 
25596
#line 25597 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25597
class CCExprResolve;
 
25598
class CExprResolve;
 
25599
class WinIfExists;
 
25600
class WinImportHandler;
 
25601
class WinMacros;
 
25602
class WinAsm;
 
25603
class WinDeclSpecs;
 
25604
class WinMemberExplSpec;
 
25605
class WinTypeKeywords;
 
25606
class WinFriend;
 
25607
class ExtAC;
 
25608
class ExtACBuilderCoupling;
 
25609
class ExtACSyntaxCoupling;
 
25610
class ExtACKeywords;
 
25611
class ExtGnu;
 
25612
class PragmaOnceUnitState;
 
25613
class PragmaOnce;
 
25614
class CMatchSyntax;
 
25615
 
 
25616
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25617
class ExtACTree {
 
25618
#line 25619 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25619
 
 
25620
public:
 
25621
  static ExtACTree *aspectof () {
 
25622
    static ExtACTree __instance;
 
25623
    return &__instance;
 
25624
  }
 
25625
  static ExtACTree *aspectOf () {
 
25626
    return aspectof ();
 
25627
  }
 
25628
private:
 
25629
 
 
25630
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25631
 
 
25632
#line 25633 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25633
  friend class ::CCExprResolve;
 
25634
  friend class ::CExprResolve;
 
25635
  friend class ::WinIfExists;
 
25636
  friend class ::WinImportHandler;
 
25637
  friend class ::WinMacros;
 
25638
  friend class ::WinAsm;
 
25639
  friend class ::WinDeclSpecs;
 
25640
  friend class ::WinMemberExplSpec;
 
25641
  friend class ::WinTypeKeywords;
 
25642
  friend class ::WinFriend;
 
25643
  friend class ::ExtAC;
 
25644
  friend class ::ExtACBuilderCoupling;
 
25645
  friend class ::ExtACSyntaxCoupling;
 
25646
  friend class ::ExtACKeywords;
 
25647
  friend class ::ExtGnu;
 
25648
  friend class ::PragmaOnceUnitState;
 
25649
  friend class ::PragmaOnce;
 
25650
  friend class ::CMatchSyntax;
 
25651
 
 
25652
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25653
 
 
25654
  
 
25655
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25656
 
 
25657
  
 
25658
  // implemented in a separate .cc file, because Builder.h is needed!
 
25659
  void delete_tree (Puma::CTree *t);
 
25660
  
 
25661
  
 
25662
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25663
 
 
25664
  
 
25665
  
 
25666
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25667
 
 
25668
public: template<class JoinPoint> void __a0_after 
 
25669
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25670
 
 
25671
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25672
(JoinPoint *tjp)
 
25673
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25674
 {
 
25675
#line 25676 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25676
 
 
25677
  typedef typename JoinPoint::That __JP_That;
 
25678
  typedef typename JoinPoint::Target __JP_Target;
 
25679
  typedef typename JoinPoint::Result __JP_Result;
 
25680
 
 
25681
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25682
 
 
25683
    tjp->that ()->_intro_members = 0;
 
25684
    tjp->that ()->_base_intros = 0;
 
25685
  }
 
25686
#line 25687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25687
 
 
25688
private:
 
25689
 
 
25690
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25691
 
 
25692
  
 
25693
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25694
 
 
25695
public: template<class JoinPoint> void __a1_before 
 
25696
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25697
 
 
25698
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25699
(JoinPoint *tjp)
 
25700
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25701
 {
 
25702
#line 25703 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25703
 
 
25704
  typedef typename JoinPoint::That __JP_That;
 
25705
  typedef typename JoinPoint::Target __JP_Target;
 
25706
  typedef typename JoinPoint::Result __JP_Result;
 
25707
 
 
25708
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25709
 
 
25710
    delete_tree (tjp->that ()->_intro_members);
 
25711
    delete_tree (tjp->that ()->_base_intros);
 
25712
  }
 
25713
#line 25714 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25714
 
 
25715
private:
 
25716
 
 
25717
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25718
 
 
25719
public:
 
25720
  typedef AC::TLE __AttrTypes;
 
25721
  const char *__attr_name (unsigned i) const { return 0; }
 
25722
  const void *__attr (unsigned __i) const { return 0; }
 
25723
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25724
};
 
25725
#line 25726 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25726
 
 
25727
namespace AC {
 
25728
  template <class JoinPoint>
 
25729
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp) {
 
25730
    ::ExtACTree::aspectof()->__a0_after (tjp);
 
25731
  }
 
25732
  template <class JoinPoint>
 
25733
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp) {
 
25734
    ::ExtACTree::aspectof()->__a1_before (tjp);
 
25735
  }
 
25736
 
25737
 
 
25738
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25739
 
 
25740
 
 
25741
#endif // __ExtACTree_ah__
 
25742
 
 
25743
#line 8 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25744
#endif
 
25745
namespace Puma {
 
25746
 
 
25747
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25748
class CT_ClassDef : public CT_Decl, public CSemObject {
 
25749
#line 25750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25750
  friend class ::CCExprResolve;
 
25751
  friend class ::CExprResolve;
 
25752
  friend class ::WinIfExists;
 
25753
  friend class ::WinImportHandler;
 
25754
  friend class ::WinMacros;
 
25755
  friend class ::WinAsm;
 
25756
  friend class ::WinDeclSpecs;
 
25757
  friend class ::WinMemberExplSpec;
 
25758
  friend class ::WinTypeKeywords;
 
25759
  friend class ::WinFriend;
 
25760
  friend class ::ExtAC;
 
25761
  friend class ::ExtACBuilderCoupling;
 
25762
  friend class ::ExtACSyntaxCoupling;
 
25763
  friend class ::ExtACTree;
 
25764
  friend class ::ExtACKeywords;
 
25765
  friend class ::ExtGnu;
 
25766
  friend class ::PragmaOnceUnitState;
 
25767
  friend class ::PragmaOnce;
 
25768
  friend class ::CMatchSyntax;
 
25769
 
 
25770
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25771
 
 
25772
   
 
25773
#line 25774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25774
 
 
25775
  struct __ac_wrapper_sons {
 
25776
    typedef ::Puma::CTree * E; typedef E A[4]; A _data;
 
25777
    operator A& () { return _data; }
 
25778
    operator A& () const { return (A&)*(::Puma::CTree * *)_data; }
 
25779
    operator const A& () { return _data; }
 
25780
    operator const A& () const { return _data; }
 
25781
    operator void* () { return _data; }
 
25782
    operator void* () const { return (void*)_data; }
 
25783
    operator const void* () { return _data; }
 
25784
    operator const void* () const { return _data; }
 
25785
    template <typename I> E& operator [] (I i) { return _data[i]; } // for VC++ 2003
 
25786
    template <typename I> const E& operator [] (I i) const { return _data[i]; } // for VC++ 2003
 
25787
  } sons
 
25788
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25789
 
 
25790
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25791
; // key, name, bases, members
 
25792
  CTree *obj_decl;
 
25793
 
 
25794
public:
 
25795
  /** Constructor.
 
25796
   *  \param k The keyword 'class' or 'struct'.
 
25797
   *  \param n The name of the class.
 
25798
   *  \param b The base class list. */
 
25799
  
 
25800
#line 25801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25801
 
 
25802
 
 
25803
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 {
 
25804
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 __TJP;
 
25805
  typedef TResult Result;
 
25806
  typedef TThat   That;
 
25807
  typedef TTarget Target;
 
25808
  enum { ARGS = TArgs::ARGS };
 
25809
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
25810
  static const int JPID = 55;
 
25811
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
25812
  struct Res {
 
25813
    typedef void Type;
 
25814
    typedef void ReferredType;
 
25815
  };
 
25816
 
 
25817
  That *_that;
 
25818
 
 
25819
  inline That *that() {return (That*)_that;}
 
25820
 
 
25821
};
 
25822
 
 
25823
 
 
25824
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25825
CT_ClassDef (CTree * arg0, CTree * arg1, CTree * arg2 = (CTree*)0) 
 
25826
#line 25827 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25827
{
 
25828
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TLE > > > > __TJP;
 
25829
    __TJP tjp;
 
25830
  tjp._that =  (__TJP::That*)this;
 
25831
    this->__exec_old_C1(arg0, arg1, arg2);
 
25832
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
25833
  
 
25834
}
 
25835
__attribute__((always_inline)) inline void __exec_old_C1(::Puma::CTree * k,::Puma::CTree * n,::Puma::CTree * b)
 
25836
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25837
{
 
25838
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], b); 
 
25839
    AddSon (sons[3], 0); AddSon (obj_decl, 0); 
 
25840
  }
 
25841
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25842
  static const char *NodeId ();
 
25843
  /** Get the name of the node. Can be compared with NodeId(). */
 
25844
  const char *NodeName () const { return NodeId (); }
 
25845
  /** Get the number of sons. */
 
25846
  int Sons () const { return CTree::Sons (sons, 4); }
 
25847
  /** Get the n-th son.
 
25848
   *  \param n The index of the son.
 
25849
   *  \return The n-th son or NULL. */
 
25850
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
25851
  /** Get the name of the class. */
 
25852
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
25853
  /** Get the member declarations list. */
 
25854
  CT_MembList *Members () const { return (CT_MembList*)sons[3]; }
 
25855
  /** Get the base class specifiers list. */
 
25856
  CT_BaseSpecList *BaseClasses () const { return (CT_BaseSpecList*)sons[2]; }
 
25857
  /** Get the object declaration node containing the class definition. */
 
25858
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
25859
  /** Get the semantic information about the declared class. */
 
25860
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
25861
  /** Set the member declarations list. */
 
25862
  void Members (CTree *m) { AddSon (sons[3], m); }
 
25863
  /** Set the base class specifiers list. */
 
25864
  void BaseClasses (CTree *bc) { AddSon (sons[2], bc); }
 
25865
  /** Set the object declaration containing the class definition. */
 
25866
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
25867
  /** Replace a son.
 
25868
   *  \param old_son The son to replace.
 
25869
   *  \param new_son The new son. */
 
25870
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
25871
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
25872
  }
 
25873
   private:
 
25874
 
 
25875
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
25876
 Puma :: CTree * _intro_members ;
 
25877
Puma :: CTree * _base_intros ;
 
25878
public :
 
25879
Puma :: CTree * IntroMembers ( ) const { return _intro_members ; }
 
25880
void IntroMembers ( Puma :: CTree * members ) { _intro_members = members ; }
 
25881
Puma :: CTree * BaseIntros ( ) const { return _base_intros ; }
 
25882
void BaseIntros ( Puma :: CTree * bases ) { _base_intros = bases ; }public:
 
25883
  typedef AC::TL<Puma::CTree * [4],AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
25884
  const char *__attr_name (unsigned i) const {
 
25885
    static const char *names[] = { "sons", "obj_decl", "_intro_members", "_base_intros" }; return names[i];
 
25886
  }
 
25887
  const void *__attr (unsigned __i) const {
 
25888
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; case 2: return &_intro_members; case 3: return &_base_intros; default: return 0; }
 
25889
  }
 
25890
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25891
 
 
25892
#line 25893 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25893
 
 
25894
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 {
 
25895
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 __TJP;
 
25896
  typedef TResult Result;
 
25897
  typedef TThat   That;
 
25898
  typedef TTarget Target;
 
25899
  enum { ARGS = TArgs::ARGS };
 
25900
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
25901
  static const int JPID = 7557;
 
25902
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
25903
  struct Res {
 
25904
    typedef void Type;
 
25905
    typedef void ReferredType;
 
25906
  };
 
25907
 
 
25908
  That *_that;
 
25909
 
 
25910
  inline That *that() {return (That*)_that;}
 
25911
 
 
25912
};
 
25913
 
 
25914
 
 
25915
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25916
 
 
25917
#line 25918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25918
 
 
25919
public:
 
25920
inline CT_ClassDef (const Puma::CT_ClassDef & arg0) : Puma::CT_Decl (arg0), Puma::CSemObject (arg0), sons (arg0.sons), obj_decl (arg0.obj_decl), _intro_members (arg0._intro_members), _base_intros (arg0._base_intros) {
 
25921
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< const ::Puma::CT_ClassDef & , AC::TLE > > __TJP;
 
25922
  __TJP tjp;
 
25923
  tjp._that =  (__TJP::That*)this;
 
25924
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
25925
 
 
25926
}
 
25927
 
 
25928
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25929
 
 
25930
#line 25931 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25931
 
 
25932
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefD1Ev_0 {
 
25933
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0 __TJP;
 
25934
  typedef TResult Result;
 
25935
  typedef TThat   That;
 
25936
  typedef TTarget Target;
 
25937
  enum { ARGS = TArgs::ARGS };
 
25938
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
25939
  static const int JPID = 7555;
 
25940
  static const AC::JPType JPTYPE = (AC::JPType)32;
 
25941
  struct Res {
 
25942
    typedef void Type;
 
25943
    typedef void ReferredType;
 
25944
  };
 
25945
 
 
25946
  That *_that;
 
25947
 
 
25948
  inline That *that() {return (That*)_that;}
 
25949
 
 
25950
};
 
25951
 
 
25952
 
 
25953
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25954
 
 
25955
#line 25956 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25956
 
 
25957
public:
 
25958
inline ~CT_ClassDef () {
 
25959
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TLE > __TJP;
 
25960
  __TJP tjp;
 
25961
  tjp._that =  (__TJP::That*)this;
 
25962
  AC::invoke_ExtACTree_ExtACTree_a1_before<__TJP> (&tjp);
 
25963
 
 
25964
}
 
25965
 
 
25966
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25967
};
 
25968
      
 
25969
/** \class CT_UnionDef CTree.h Puma/CTree.h
 
25970
 *  Tree node representing the definition of a union.
 
25971
 *  Example: \code union U { int i; } \endcode */
 
25972
 
 
25973
#line 25974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25974
} // closed Puma
 
25975
class CCExprResolve;
 
25976
class CExprResolve;
 
25977
class WinIfExists;
 
25978
class WinImportHandler;
 
25979
class WinMacros;
 
25980
class WinAsm;
 
25981
class WinDeclSpecs;
 
25982
class WinMemberExplSpec;
 
25983
class WinTypeKeywords;
 
25984
class WinFriend;
 
25985
class ExtAC;
 
25986
class ExtACBuilderCoupling;
 
25987
class ExtACSyntaxCoupling;
 
25988
class ExtACTree;
 
25989
class ExtACKeywords;
 
25990
class ExtGnu;
 
25991
class PragmaOnceUnitState;
 
25992
class PragmaOnce;
 
25993
class CMatchSyntax;
 
25994
namespace Puma {
 
25995
 
 
25996
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25997
class CT_UnionDef : public CT_ClassDef {
 
25998
#line 25999 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
25999
  friend class ::CCExprResolve;
 
26000
  friend class ::CExprResolve;
 
26001
  friend class ::WinIfExists;
 
26002
  friend class ::WinImportHandler;
 
26003
  friend class ::WinMacros;
 
26004
  friend class ::WinAsm;
 
26005
  friend class ::WinDeclSpecs;
 
26006
  friend class ::WinMemberExplSpec;
 
26007
  friend class ::WinTypeKeywords;
 
26008
  friend class ::WinFriend;
 
26009
  friend class ::ExtAC;
 
26010
  friend class ::ExtACBuilderCoupling;
 
26011
  friend class ::ExtACSyntaxCoupling;
 
26012
  friend class ::ExtACTree;
 
26013
  friend class ::ExtACKeywords;
 
26014
  friend class ::ExtGnu;
 
26015
  friend class ::PragmaOnceUnitState;
 
26016
  friend class ::PragmaOnce;
 
26017
  friend class ::CMatchSyntax;
 
26018
 
 
26019
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26020
 
 
26021
public:
 
26022
  /** Constructor.
 
26023
   *  \param k The keyword 'union'.
 
26024
   *  \param n The name of the union.
 
26025
   *  \param b The base union list. */
 
26026
  CT_UnionDef (CTree *k, CTree *n, CTree *b = 0) : CT_ClassDef (k, n, b) {}
 
26027
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26028
  static const char *NodeId ();
 
26029
  /** Get the name of the node. Can be compared with NodeId(). */
 
26030
  const char *NodeName () const { return NodeId (); }
 
26031
public:
 
26032
  typedef AC::TLE __AttrTypes;
 
26033
  const char *__attr_name (unsigned i) const { return 0; }
 
26034
  const void *__attr (unsigned __i) const { return 0; }
 
26035
#line 4026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26036
};
 
26037
      
 
26038
/** \class CT_MembList CTree.h Puma/CTree.h
 
26039
 *  Tree node representing a member declarations list. */ 
 
26040
 
 
26041
#line 26042 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26042
} // closed Puma
 
26043
class CCExprResolve;
 
26044
class CExprResolve;
 
26045
class WinIfExists;
 
26046
class WinImportHandler;
 
26047
class WinMacros;
 
26048
class WinAsm;
 
26049
class WinDeclSpecs;
 
26050
class WinMemberExplSpec;
 
26051
class WinTypeKeywords;
 
26052
class WinFriend;
 
26053
class ExtAC;
 
26054
class ExtACBuilderCoupling;
 
26055
class ExtACSyntaxCoupling;
 
26056
class ExtACTree;
 
26057
class ExtACKeywords;
 
26058
class ExtGnu;
 
26059
class PragmaOnceUnitState;
 
26060
class PragmaOnce;
 
26061
class CMatchSyntax;
 
26062
namespace Puma {
 
26063
 
 
26064
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26065
class CT_MembList : public CT_DeclList, public CSemScope {
 
26066
#line 26067 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26067
  friend class ::CCExprResolve;
 
26068
  friend class ::CExprResolve;
 
26069
  friend class ::WinIfExists;
 
26070
  friend class ::WinImportHandler;
 
26071
  friend class ::WinMacros;
 
26072
  friend class ::WinAsm;
 
26073
  friend class ::WinDeclSpecs;
 
26074
  friend class ::WinMemberExplSpec;
 
26075
  friend class ::WinTypeKeywords;
 
26076
  friend class ::WinFriend;
 
26077
  friend class ::ExtAC;
 
26078
  friend class ::ExtACBuilderCoupling;
 
26079
  friend class ::ExtACSyntaxCoupling;
 
26080
  friend class ::ExtACTree;
 
26081
  friend class ::ExtACKeywords;
 
26082
  friend class ::ExtGnu;
 
26083
  friend class ::PragmaOnceUnitState;
 
26084
  friend class ::PragmaOnce;
 
26085
  friend class ::CMatchSyntax;
 
26086
 
 
26087
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26088
 
 
26089
public:
 
26090
  CT_MembList (int size = 10, int incr = 10) : 
 
26091
    CT_DeclList (size, incr) {}
 
26092
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26093
  static const char *NodeId ();
 
26094
  /** Get the name of the node. Can be compared with NodeId(). */
 
26095
  const char *NodeName () const { return NodeId (); }
 
26096
  /** Get the scope opened by the member declarations list. */
 
26097
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
26098
public:
 
26099
  typedef AC::TLE __AttrTypes;
 
26100
  const char *__attr_name (unsigned i) const { return 0; }
 
26101
  const void *__attr (unsigned __i) const { return 0; }
 
26102
#line 4040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26103
};
 
26104
 
 
26105
/** \class CT_MembInitList CTree.h Puma/CTree.h
 
26106
 *  Tree node representing a constructor initializer list.
 
26107
 *  Example: \code : Base(), m_Member(0) \endcode */
 
26108
 
 
26109
#line 26110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26110
} // closed Puma
 
26111
class CCExprResolve;
 
26112
class CExprResolve;
 
26113
class WinIfExists;
 
26114
class WinImportHandler;
 
26115
class WinMacros;
 
26116
class WinAsm;
 
26117
class WinDeclSpecs;
 
26118
class WinMemberExplSpec;
 
26119
class WinTypeKeywords;
 
26120
class WinFriend;
 
26121
class ExtAC;
 
26122
class ExtACBuilderCoupling;
 
26123
class ExtACSyntaxCoupling;
 
26124
class ExtACTree;
 
26125
class ExtACKeywords;
 
26126
class ExtGnu;
 
26127
class PragmaOnceUnitState;
 
26128
class PragmaOnce;
 
26129
class CMatchSyntax;
 
26130
namespace Puma {
 
26131
 
 
26132
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26133
class CT_MembInitList : public CT_List, public CSemScope {
 
26134
#line 26135 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26135
  friend class ::CCExprResolve;
 
26136
  friend class ::CExprResolve;
 
26137
  friend class ::WinIfExists;
 
26138
  friend class ::WinImportHandler;
 
26139
  friend class ::WinMacros;
 
26140
  friend class ::WinAsm;
 
26141
  friend class ::WinDeclSpecs;
 
26142
  friend class ::WinMemberExplSpec;
 
26143
  friend class ::WinTypeKeywords;
 
26144
  friend class ::WinFriend;
 
26145
  friend class ::ExtAC;
 
26146
  friend class ::ExtACBuilderCoupling;
 
26147
  friend class ::ExtACSyntaxCoupling;
 
26148
  friend class ::ExtACTree;
 
26149
  friend class ::ExtACKeywords;
 
26150
  friend class ::ExtGnu;
 
26151
  friend class ::PragmaOnceUnitState;
 
26152
  friend class ::PragmaOnce;
 
26153
  friend class ::CMatchSyntax;
 
26154
 
 
26155
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26156
 
 
26157
public:
 
26158
  /** Constructor.
 
26159
   *  \param size The initial size of the list. */
 
26160
  CT_MembInitList (int size = 2) : 
 
26161
    CT_List (size, 2, CT_List::OPEN) {}
 
26162
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26163
  static const char *NodeId ();
 
26164
  /** Get the name of the node. Can be compared with NodeId(). */
 
26165
  const char *NodeName () const { return NodeId (); }
 
26166
  /** Get the scope opened by the member initializer list. */
 
26167
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
26168
public:
 
26169
  typedef AC::TLE __AttrTypes;
 
26170
  const char *__attr_name (unsigned i) const { return 0; }
 
26171
  const void *__attr (unsigned __i) const { return 0; }
 
26172
#line 4057 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26173
};
 
26174
 
 
26175
/** \class CT_MembInit CTree.h Puma/CTree.h
 
26176
 *  Tree node representing a member initializer.
 
26177
 *  Example: \code m_Member(0) \endcode */
 
26178
 
 
26179
#line 26180 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26180
} // closed Puma
 
26181
class CCExprResolve;
 
26182
class CExprResolve;
 
26183
class WinIfExists;
 
26184
class WinImportHandler;
 
26185
class WinMacros;
 
26186
class WinAsm;
 
26187
class WinDeclSpecs;
 
26188
class WinMemberExplSpec;
 
26189
class WinTypeKeywords;
 
26190
class WinFriend;
 
26191
class ExtAC;
 
26192
class ExtACBuilderCoupling;
 
26193
class ExtACSyntaxCoupling;
 
26194
class ExtACTree;
 
26195
class ExtACKeywords;
 
26196
class ExtGnu;
 
26197
class PragmaOnceUnitState;
 
26198
class PragmaOnce;
 
26199
class CMatchSyntax;
 
26200
namespace Puma {
 
26201
 
 
26202
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26203
 
 
26204
#line 26205 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26205
} // closed Puma
 
26206
 
 
26207
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
26208
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
26209
#include "CCExprResolveH.ah"
 
26210
#endif
 
26211
namespace Puma {
 
26212
 
 
26213
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26214
 
 
26215
#line 26216 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26216
} // closed Puma
 
26217
 
 
26218
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
26219
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
26220
#include "CExprResolveH.ah"
 
26221
#endif
 
26222
namespace Puma {
 
26223
 
 
26224
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26225
class CT_MembInit : public CT_Expression, public CSemObject {
 
26226
#line 26227 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26227
  friend class ::CCExprResolve;
 
26228
  friend class ::CExprResolve;
 
26229
  friend class ::WinIfExists;
 
26230
  friend class ::WinImportHandler;
 
26231
  friend class ::WinMacros;
 
26232
  friend class ::WinAsm;
 
26233
  friend class ::WinDeclSpecs;
 
26234
  friend class ::WinMemberExplSpec;
 
26235
  friend class ::WinTypeKeywords;
 
26236
  friend class ::WinFriend;
 
26237
  friend class ::ExtAC;
 
26238
  friend class ::ExtACBuilderCoupling;
 
26239
  friend class ::ExtACSyntaxCoupling;
 
26240
  friend class ::ExtACTree;
 
26241
  friend class ::ExtACKeywords;
 
26242
  friend class ::ExtGnu;
 
26243
  friend class ::PragmaOnceUnitState;
 
26244
  friend class ::PragmaOnce;
 
26245
  friend class ::CMatchSyntax;
 
26246
 
 
26247
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26248
 
 
26249
  CTree *sons[2]; // name, init
 
26250
 
 
26251
public:
 
26252
  /** Constructor.
 
26253
   *  \param n The name of the member.
 
26254
   *  \param i The member initializer. */
 
26255
  CT_MembInit (CTree *n, CTree *i) { AddSon (sons[0], n); AddSon (sons[1], i); }
 
26256
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26257
  static const char *NodeId ();
 
26258
  /** Get the name of the node. Can be compared with NodeId(). */
 
26259
  const char *NodeName () const { return NodeId (); }
 
26260
  /** Get the number of sons. */
 
26261
  int Sons () const { return 2; }
 
26262
  /** Get the n-th son.
 
26263
   *  \param n The index of the son.
 
26264
   *  \return The n-th son or NULL. */
 
26265
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
26266
  /** Replace a son.
 
26267
   *  \param old_son The son to replace.
 
26268
   *  \param new_son The new son. */
 
26269
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26270
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
26271
  }
 
26272
  /** Get the name of the member. */
 
26273
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
26274
  /** Get the initializer. */
 
26275
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
26276
  /** Get the semantic information about the initialized member. */
 
26277
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
26278
   private:
 
26279
  typedef CT_MembInit CCExprResolveExpr;
 
26280
 
 
26281
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
26282
 public :
 
26283
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
26284
  typedef CT_MembInit CExprResolveExpr;
 
26285
 
 
26286
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
26287
 public :
 
26288
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
26289
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
26290
  const char *__attr_name (unsigned i) const {
 
26291
    static const char *names[] = { "sons" }; return names[i];
 
26292
  }
 
26293
  const void *__attr (unsigned __i) const {
 
26294
    switch (__i) { case 0: return &sons; default: return 0; }
 
26295
  }
 
26296
#line 4092 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26297
};
 
26298
 
 
26299
/** \class CT_BaseSpecList CTree.h Puma/CTree.h
 
26300
 *  Tree node representing a base specifier list.
 
26301
 *  Example: \code : X, Y, Z \endcode */
 
26302
 
 
26303
#line 26304 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26304
} // closed Puma
 
26305
class CCExprResolve;
 
26306
class CExprResolve;
 
26307
class WinIfExists;
 
26308
class WinImportHandler;
 
26309
class WinMacros;
 
26310
class WinAsm;
 
26311
class WinDeclSpecs;
 
26312
class WinMemberExplSpec;
 
26313
class WinTypeKeywords;
 
26314
class WinFriend;
 
26315
class ExtAC;
 
26316
class ExtACBuilderCoupling;
 
26317
class ExtACSyntaxCoupling;
 
26318
class ExtACTree;
 
26319
class ExtACKeywords;
 
26320
class ExtGnu;
 
26321
class PragmaOnceUnitState;
 
26322
class PragmaOnce;
 
26323
class CMatchSyntax;
 
26324
namespace Puma {
 
26325
 
 
26326
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26327
class CT_BaseSpecList : public CT_List {
 
26328
#line 26329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26329
  friend class ::CCExprResolve;
 
26330
  friend class ::CExprResolve;
 
26331
  friend class ::WinIfExists;
 
26332
  friend class ::WinImportHandler;
 
26333
  friend class ::WinMacros;
 
26334
  friend class ::WinAsm;
 
26335
  friend class ::WinDeclSpecs;
 
26336
  friend class ::WinMemberExplSpec;
 
26337
  friend class ::WinTypeKeywords;
 
26338
  friend class ::WinFriend;
 
26339
  friend class ::ExtAC;
 
26340
  friend class ::ExtACBuilderCoupling;
 
26341
  friend class ::ExtACSyntaxCoupling;
 
26342
  friend class ::ExtACTree;
 
26343
  friend class ::ExtACKeywords;
 
26344
  friend class ::ExtGnu;
 
26345
  friend class ::PragmaOnceUnitState;
 
26346
  friend class ::PragmaOnce;
 
26347
  friend class ::CMatchSyntax;
 
26348
 
 
26349
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26350
 
 
26351
public:
 
26352
  /** Constructor.
 
26353
   *  \param size The initial size of the list. */
 
26354
  CT_BaseSpecList (int size = 2) : 
 
26355
    CT_List (size, 2, CT_List::OPEN|CT_List::SEPARATORS) {}
 
26356
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26357
  static const char *NodeId ();
 
26358
  /** Get the name of the node. Can be compared with NodeId(). */
 
26359
  const char *NodeName () const { return NodeId (); }
 
26360
public:
 
26361
  typedef AC::TLE __AttrTypes;
 
26362
  const char *__attr_name (unsigned i) const { return 0; }
 
26363
  const void *__attr (unsigned __i) const { return 0; }
 
26364
#line 4107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26365
};
 
26366
 
 
26367
/** \class CT_AccessSpec CTree.h Puma/CTree.h
 
26368
 *  Tree node representing an access specifier.
 
26369
 *  Example: \code public: \endcode */
 
26370
 
 
26371
#line 26372 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26372
} // closed Puma
 
26373
class CCExprResolve;
 
26374
class CExprResolve;
 
26375
class WinIfExists;
 
26376
class WinImportHandler;
 
26377
class WinMacros;
 
26378
class WinAsm;
 
26379
class WinDeclSpecs;
 
26380
class WinMemberExplSpec;
 
26381
class WinTypeKeywords;
 
26382
class WinFriend;
 
26383
class ExtAC;
 
26384
class ExtACBuilderCoupling;
 
26385
class ExtACSyntaxCoupling;
 
26386
class ExtACTree;
 
26387
class ExtACKeywords;
 
26388
class ExtGnu;
 
26389
class PragmaOnceUnitState;
 
26390
class PragmaOnce;
 
26391
class CMatchSyntax;
 
26392
namespace Puma {
 
26393
 
 
26394
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26395
class CT_AccessSpec : public CTree {
 
26396
#line 26397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26397
  friend class ::CCExprResolve;
 
26398
  friend class ::CExprResolve;
 
26399
  friend class ::WinIfExists;
 
26400
  friend class ::WinImportHandler;
 
26401
  friend class ::WinMacros;
 
26402
  friend class ::WinAsm;
 
26403
  friend class ::WinDeclSpecs;
 
26404
  friend class ::WinMemberExplSpec;
 
26405
  friend class ::WinTypeKeywords;
 
26406
  friend class ::WinFriend;
 
26407
  friend class ::ExtAC;
 
26408
  friend class ::ExtACBuilderCoupling;
 
26409
  friend class ::ExtACSyntaxCoupling;
 
26410
  friend class ::ExtACTree;
 
26411
  friend class ::ExtACKeywords;
 
26412
  friend class ::ExtGnu;
 
26413
  friend class ::PragmaOnceUnitState;
 
26414
  friend class ::PragmaOnce;
 
26415
  friend class ::CMatchSyntax;
 
26416
 
 
26417
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26418
 
 
26419
  CTree *sons[2]; // access, colon
 
26420
 
 
26421
public:
 
26422
  /** Constructor.
 
26423
   *  \param a The access specifier, i.e. 'public', 'private', or 'protected'.
 
26424
   *  \param c The trailing colon. */
 
26425
  CT_AccessSpec (CTree *a, CTree *c) { AddSon (sons[0], a); AddSon (sons[1], c); }
 
26426
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26427
  static const char *NodeId ();
 
26428
  /** Get the name of the node. Can be compared with NodeId(). */
 
26429
  const char *NodeName () const { return NodeId (); }
 
26430
  /** Get the number of sons. */
 
26431
  int Sons () const { return 2; }
 
26432
  /** Get the n-th son.
 
26433
   *  \param n The index of the son.
 
26434
   *  \return The n-th son or NULL. */
 
26435
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
26436
  /** Get the access specifier type (token type). */
 
26437
  int Access () const { return sons[0]->token ()->type (); }
 
26438
  /** Replace a son.
 
26439
   *  \param old_son The son to replace.
 
26440
   *  \param new_son The new son. */
 
26441
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26442
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
26443
  }
 
26444
public:
 
26445
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
26446
  const char *__attr_name (unsigned i) const {
 
26447
    static const char *names[] = { "sons" }; return names[i];
 
26448
  }
 
26449
  const void *__attr (unsigned __i) const {
 
26450
    switch (__i) { case 0: return &sons; default: return 0; }
 
26451
  }
 
26452
#line 4138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26453
};
 
26454
 
 
26455
/** \class CT_BaseSpec CTree.h Puma/CTree.h
 
26456
 *  Tree node representing a base class specifier.
 
26457
 *  Example: \code public X \endcode */
 
26458
 
 
26459
#line 26460 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26460
} // closed Puma
 
26461
class CCExprResolve;
 
26462
class CExprResolve;
 
26463
class WinIfExists;
 
26464
class WinImportHandler;
 
26465
class WinMacros;
 
26466
class WinAsm;
 
26467
class WinDeclSpecs;
 
26468
class WinMemberExplSpec;
 
26469
class WinTypeKeywords;
 
26470
class WinFriend;
 
26471
class ExtAC;
 
26472
class ExtACBuilderCoupling;
 
26473
class ExtACSyntaxCoupling;
 
26474
class ExtACTree;
 
26475
class ExtACKeywords;
 
26476
class ExtGnu;
 
26477
class PragmaOnceUnitState;
 
26478
class PragmaOnce;
 
26479
class CMatchSyntax;
 
26480
namespace Puma {
 
26481
 
 
26482
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26483
class CT_BaseSpec : public CTree {
 
26484
#line 26485 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26485
  friend class ::CCExprResolve;
 
26486
  friend class ::CExprResolve;
 
26487
  friend class ::WinIfExists;
 
26488
  friend class ::WinImportHandler;
 
26489
  friend class ::WinMacros;
 
26490
  friend class ::WinAsm;
 
26491
  friend class ::WinDeclSpecs;
 
26492
  friend class ::WinMemberExplSpec;
 
26493
  friend class ::WinTypeKeywords;
 
26494
  friend class ::WinFriend;
 
26495
  friend class ::ExtAC;
 
26496
  friend class ::ExtACBuilderCoupling;
 
26497
  friend class ::ExtACSyntaxCoupling;
 
26498
  friend class ::ExtACTree;
 
26499
  friend class ::ExtACKeywords;
 
26500
  friend class ::ExtGnu;
 
26501
  friend class ::PragmaOnceUnitState;
 
26502
  friend class ::PragmaOnce;
 
26503
  friend class ::CMatchSyntax;
 
26504
 
 
26505
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26506
 
 
26507
  CTree *sons[3]; // virtual, access, name
 
26508
 
 
26509
public:
 
26510
  /** Constructor.
 
26511
   *  \param v Optional keyword 'virtual'.
 
26512
   *  \param a The optional access specifier.
 
26513
   *  \param n The name of the base class. */
 
26514
  CT_BaseSpec (CTree *v, CTree *a, CTree *n) {
 
26515
    AddSon (sons[0], v); AddSon (sons[1], a); AddSon (sons[2], n); 
 
26516
  }
 
26517
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26518
  static const char *NodeId ();
 
26519
  /** Get the name of the node. Can be compared with NodeId(). */
 
26520
  const char *NodeName () const { return NodeId (); }
 
26521
  /** Get the number of sons. */
 
26522
  int Sons () const { return CTree::Sons (sons, 3); }
 
26523
  /** Get the n-th son.
 
26524
   *  \param n The index of the son.
 
26525
   *  \return The n-th son or NULL. */
 
26526
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
26527
  /** Get the type of the access specifier (token type). */
 
26528
  int Access () const { return sons[1]->token ()->type (); }
 
26529
  /** The access specifier. */
 
26530
  CTree *AccessSpec () const { return sons[1]; }
 
26531
  /** Get the keyword 'virtual'. */
 
26532
  CTree *Virtual () const { return sons[0]; }
 
26533
  /** Get the name of the base class. */
 
26534
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
26535
  /** Replace a son.
 
26536
   *  \param old_son The son to replace.
 
26537
   *  \param new_son The new son. */
 
26538
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26539
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
26540
  }
 
26541
public:
 
26542
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
26543
  const char *__attr_name (unsigned i) const {
 
26544
    static const char *names[] = { "sons" }; return names[i];
 
26545
  }
 
26546
  const void *__attr (unsigned __i) const {
 
26547
    switch (__i) { case 0: return &sons; default: return 0; }
 
26548
  }
 
26549
#line 4178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26550
};
 
26551
 
 
26552
/** \class CT_AccessDecl CTree.h Puma/CTree.h
 
26553
 *  Tree node representing a member access declaration.
 
26554
 *  Example: \code m_BaseClassMember; \endcode */
 
26555
 
 
26556
#line 26557 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26557
} // closed Puma
 
26558
class CCExprResolve;
 
26559
class CExprResolve;
 
26560
class WinIfExists;
 
26561
class WinImportHandler;
 
26562
class WinMacros;
 
26563
class WinAsm;
 
26564
class WinDeclSpecs;
 
26565
class WinMemberExplSpec;
 
26566
class WinTypeKeywords;
 
26567
class WinFriend;
 
26568
class ExtAC;
 
26569
class ExtACBuilderCoupling;
 
26570
class ExtACSyntaxCoupling;
 
26571
class ExtACTree;
 
26572
class ExtACKeywords;
 
26573
class ExtGnu;
 
26574
class PragmaOnceUnitState;
 
26575
class PragmaOnce;
 
26576
class CMatchSyntax;
 
26577
namespace Puma {
 
26578
 
 
26579
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26580
class CT_AccessDecl : public CT_Decl {
 
26581
#line 26582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26582
  friend class ::CCExprResolve;
 
26583
  friend class ::CExprResolve;
 
26584
  friend class ::WinIfExists;
 
26585
  friend class ::WinImportHandler;
 
26586
  friend class ::WinMacros;
 
26587
  friend class ::WinAsm;
 
26588
  friend class ::WinDeclSpecs;
 
26589
  friend class ::WinMemberExplSpec;
 
26590
  friend class ::WinTypeKeywords;
 
26591
  friend class ::WinFriend;
 
26592
  friend class ::ExtAC;
 
26593
  friend class ::ExtACBuilderCoupling;
 
26594
  friend class ::ExtACSyntaxCoupling;
 
26595
  friend class ::ExtACTree;
 
26596
  friend class ::ExtACKeywords;
 
26597
  friend class ::ExtGnu;
 
26598
  friend class ::PragmaOnceUnitState;
 
26599
  friend class ::PragmaOnce;
 
26600
  friend class ::CMatchSyntax;
 
26601
 
 
26602
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26603
 
 
26604
  CTree *sons[2]; // name, semi_colon
 
26605
 
 
26606
public:
 
26607
  /** Constructor.
 
26608
   *  \param n The name of the base class member.
 
26609
   *  \param s The trailing semi-colon. */
 
26610
  CT_AccessDecl (CTree *n, CTree *s) { AddSon (sons[0], n); AddSon (sons[1], s); }
 
26611
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26612
  static const char *NodeId ();
 
26613
  /** Get the name of the node. Can be compared with NodeId(). */
 
26614
  const char *NodeName () const { return NodeId (); }
 
26615
  /** Get the number of sons. */
 
26616
  int Sons () const { return 2; }
 
26617
  /** Get the n-th son.
 
26618
   *  \param n The index of the son.
 
26619
   *  \return The n-th son or NULL. */
 
26620
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
26621
  /** Get the name of the base class member. */
 
26622
  CT_QualName *Member () const { return (CT_QualName*)sons[0]; }
 
26623
  /** Replace a son.
 
26624
   *  \param old_son The son to replace.
 
26625
   *  \param new_son The new son. */
 
26626
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26627
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
26628
  }
 
26629
public:
 
26630
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
26631
  const char *__attr_name (unsigned i) const {
 
26632
    static const char *names[] = { "sons" }; return names[i];
 
26633
  }
 
26634
  const void *__attr (unsigned __i) const {
 
26635
    switch (__i) { case 0: return &sons; default: return 0; }
 
26636
  }
 
26637
#line 4209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26638
};
 
26639
 
 
26640
/** \class CT_UsingDecl CTree.h Puma/CTree.h
 
26641
 *  Tree node representing a using declaration.
 
26642
 *  Example: \code using Base::m_Member; \endcode */
 
26643
 
 
26644
#line 26645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26645
} // closed Puma
 
26646
class CCExprResolve;
 
26647
class CExprResolve;
 
26648
class WinIfExists;
 
26649
class WinImportHandler;
 
26650
class WinMacros;
 
26651
class WinAsm;
 
26652
class WinDeclSpecs;
 
26653
class WinMemberExplSpec;
 
26654
class WinTypeKeywords;
 
26655
class WinFriend;
 
26656
class ExtAC;
 
26657
class ExtACBuilderCoupling;
 
26658
class ExtACSyntaxCoupling;
 
26659
class ExtACTree;
 
26660
class ExtACKeywords;
 
26661
class ExtGnu;
 
26662
class PragmaOnceUnitState;
 
26663
class PragmaOnce;
 
26664
class CMatchSyntax;
 
26665
namespace Puma {
 
26666
 
 
26667
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26668
class CT_UsingDecl : public CT_AccessDecl {
 
26669
#line 26670 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26670
  friend class ::CCExprResolve;
 
26671
  friend class ::CExprResolve;
 
26672
  friend class ::WinIfExists;
 
26673
  friend class ::WinImportHandler;
 
26674
  friend class ::WinMacros;
 
26675
  friend class ::WinAsm;
 
26676
  friend class ::WinDeclSpecs;
 
26677
  friend class ::WinMemberExplSpec;
 
26678
  friend class ::WinTypeKeywords;
 
26679
  friend class ::WinFriend;
 
26680
  friend class ::ExtAC;
 
26681
  friend class ::ExtACBuilderCoupling;
 
26682
  friend class ::ExtACSyntaxCoupling;
 
26683
  friend class ::ExtACTree;
 
26684
  friend class ::ExtACKeywords;
 
26685
  friend class ::ExtGnu;
 
26686
  friend class ::PragmaOnceUnitState;
 
26687
  friend class ::PragmaOnce;
 
26688
  friend class ::CMatchSyntax;
 
26689
 
 
26690
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26691
 
 
26692
  CTree *sons[2]; // using, typename
 
26693
 
 
26694
public:
 
26695
  /** Constructor.
 
26696
   *  \param u The keyword 'using'.
 
26697
   *  \param n The name of the entity.
 
26698
   *  \param s The trailing semi-colon. */
 
26699
  CT_UsingDecl (CTree *u, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
26700
    AddSon (sons[0], u); AddSon (sons[1], 0); 
 
26701
  }
 
26702
  /** Constructor.
 
26703
   *  \param u The keyword 'using'.
 
26704
   *  \param t The keyword 'typename'.
 
26705
   *  \param n The name of the entity.
 
26706
   *  \param s The trailing semi-colon. */
 
26707
  CT_UsingDecl (CTree *u, CTree *t, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
26708
    AddSon (sons[0], u); AddSon (sons[1], t); 
 
26709
  }
 
26710
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26711
  static const char *NodeId ();
 
26712
  /** Get the name of the node. Can be compared with NodeId(). */
 
26713
  const char *NodeName () const { return NodeId (); }
 
26714
  /** Get the number of sons. */
 
26715
  int Sons () const { return CTree::Sons (sons, 2) + CT_AccessDecl::Sons (); }
 
26716
  /** Get the n-th son.
 
26717
   *  \param n The index of the son.
 
26718
   *  \return The n-th son or NULL. */
 
26719
  CTree *Son (int n) const {
 
26720
    int num = CTree::Sons (sons, 2);
 
26721
    CTree *result = CTree::Son (sons, 2, n);
 
26722
    return result ? result : CT_AccessDecl::Son (n-num);
 
26723
  }
 
26724
  /** Get the keyword 'typename'. */
 
26725
  CTree *Typename () const { return sons[1]; }
 
26726
  /** Replace a son.
 
26727
   *  \param old_son The son to replace.
 
26728
   *  \param new_son The new son. */
 
26729
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26730
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
26731
    CT_AccessDecl::ReplaceSon (old_son, new_son);
 
26732
  }
 
26733
public:
 
26734
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
26735
  const char *__attr_name (unsigned i) const {
 
26736
    static const char *names[] = { "sons" }; return names[i];
 
26737
  }
 
26738
  const void *__attr (unsigned __i) const {
 
26739
    switch (__i) { case 0: return &sons; default: return 0; }
 
26740
  }
 
26741
#line 4256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26742
};
 
26743
 
 
26744
/*****************************************************************************/
 
26745
/*                                                                           */
 
26746
/*                              Wildcards                                    */
 
26747
/*                                                                           */
 
26748
/*****************************************************************************/
 
26749
 
 
26750
/** \class CT_Any CTree.h Puma/CTree.h
 
26751
 *  Tree node representing a wildcard. */
 
26752
 
 
26753
#line 26754 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26754
} // closed Puma
 
26755
class CCExprResolve;
 
26756
class CExprResolve;
 
26757
class WinIfExists;
 
26758
class WinImportHandler;
 
26759
class WinMacros;
 
26760
class WinAsm;
 
26761
class WinDeclSpecs;
 
26762
class WinMemberExplSpec;
 
26763
class WinTypeKeywords;
 
26764
class WinFriend;
 
26765
class ExtAC;
 
26766
class ExtACBuilderCoupling;
 
26767
class ExtACSyntaxCoupling;
 
26768
class ExtACTree;
 
26769
class ExtACKeywords;
 
26770
class ExtGnu;
 
26771
class PragmaOnceUnitState;
 
26772
class PragmaOnce;
 
26773
class CMatchSyntax;
 
26774
namespace Puma {
 
26775
 
 
26776
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26777
class CT_Any : public CTree {
 
26778
#line 26779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26779
  friend class ::CCExprResolve;
 
26780
  friend class ::CExprResolve;
 
26781
  friend class ::WinIfExists;
 
26782
  friend class ::WinImportHandler;
 
26783
  friend class ::WinMacros;
 
26784
  friend class ::WinAsm;
 
26785
  friend class ::WinDeclSpecs;
 
26786
  friend class ::WinMemberExplSpec;
 
26787
  friend class ::WinTypeKeywords;
 
26788
  friend class ::WinFriend;
 
26789
  friend class ::ExtAC;
 
26790
  friend class ::ExtACBuilderCoupling;
 
26791
  friend class ::ExtACSyntaxCoupling;
 
26792
  friend class ::ExtACTree;
 
26793
  friend class ::ExtACKeywords;
 
26794
  friend class ::ExtGnu;
 
26795
  friend class ::PragmaOnceUnitState;
 
26796
  friend class ::PragmaOnce;
 
26797
  friend class ::CMatchSyntax;
 
26798
 
 
26799
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26800
 
 
26801
  CTree *sons[2]; // keyword, extension
 
26802
 
 
26803
public:
 
26804
  /** Constructor.
 
26805
   *  \param k The wildcard keyword.
 
26806
   *  \param e The extension. */
 
26807
  CT_Any (CTree *k, CTree *e = (CTree*)0) { AddSon (sons[0], k); AddSon (sons[1], e); }
 
26808
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26809
  static const char *NodeId ();
 
26810
  /** Get the name of the node. Can be compared with NodeId(). */
 
26811
  const char *NodeName () const { return NodeId (); }
 
26812
  /** Get the number of sons. */
 
26813
  int Sons () const { return CTree::Sons (sons, 2); }
 
26814
  /** Get the n-th son.
 
26815
   *  \param n The index of the son.
 
26816
   *  \return The n-th son or NULL. */
 
26817
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
26818
  /** Replace a son.
 
26819
   *  \param old_son The son to replace.
 
26820
   *  \param new_son The new son. */
 
26821
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26822
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
26823
  }
 
26824
  /** Get the type of the wildcard (token type). */
 
26825
  int AnyType () const { return sons[0]->token ()->type (); }
 
26826
  /** Get the extension. */
 
26827
  CT_AnyExtension *Extension () const { return (CT_AnyExtension*)sons[1]; }
 
26828
public:
 
26829
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
26830
  const char *__attr_name (unsigned i) const {
 
26831
    static const char *names[] = { "sons" }; return names[i];
 
26832
  }
 
26833
  const void *__attr (unsigned __i) const {
 
26834
    switch (__i) { case 0: return &sons; default: return 0; }
 
26835
  }
 
26836
#line 4294 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26837
};
 
26838
 
 
26839
/** \class CT_AnyList CTree.h Puma/CTree.h
 
26840
 *  Tree node representing a list wildcard. */
 
26841
 
 
26842
#line 26843 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26843
} // closed Puma
 
26844
class CCExprResolve;
 
26845
class CExprResolve;
 
26846
class WinIfExists;
 
26847
class WinImportHandler;
 
26848
class WinMacros;
 
26849
class WinAsm;
 
26850
class WinDeclSpecs;
 
26851
class WinMemberExplSpec;
 
26852
class WinTypeKeywords;
 
26853
class WinFriend;
 
26854
class ExtAC;
 
26855
class ExtACBuilderCoupling;
 
26856
class ExtACSyntaxCoupling;
 
26857
class ExtACTree;
 
26858
class ExtACKeywords;
 
26859
class ExtGnu;
 
26860
class PragmaOnceUnitState;
 
26861
class PragmaOnce;
 
26862
class CMatchSyntax;
 
26863
namespace Puma {
 
26864
 
 
26865
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26866
class CT_AnyList : public CT_Any {
 
26867
#line 26868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26868
  friend class ::CCExprResolve;
 
26869
  friend class ::CExprResolve;
 
26870
  friend class ::WinIfExists;
 
26871
  friend class ::WinImportHandler;
 
26872
  friend class ::WinMacros;
 
26873
  friend class ::WinAsm;
 
26874
  friend class ::WinDeclSpecs;
 
26875
  friend class ::WinMemberExplSpec;
 
26876
  friend class ::WinTypeKeywords;
 
26877
  friend class ::WinFriend;
 
26878
  friend class ::ExtAC;
 
26879
  friend class ::ExtACBuilderCoupling;
 
26880
  friend class ::ExtACSyntaxCoupling;
 
26881
  friend class ::ExtACTree;
 
26882
  friend class ::ExtACKeywords;
 
26883
  friend class ::ExtGnu;
 
26884
  friend class ::PragmaOnceUnitState;
 
26885
  friend class ::PragmaOnce;
 
26886
  friend class ::CMatchSyntax;
 
26887
 
 
26888
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26889
 
 
26890
public:
 
26891
  /** Constructor.
 
26892
   *  \param k The wildcard keyword.
 
26893
   *  \param e The extension. */
 
26894
  CT_AnyList (CTree *k, CTree *e = (CTree*)0) : CT_Any (k, e) {}
 
26895
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26896
  static const char *NodeId ();
 
26897
  /** Get the name of the node. Can be compared with NodeId(). */
 
26898
  const char *NodeName () const { return NodeId (); }
 
26899
public:
 
26900
  typedef AC::TLE __AttrTypes;
 
26901
  const char *__attr_name (unsigned i) const { return 0; }
 
26902
  const void *__attr (unsigned __i) const { return 0; }
 
26903
#line 4308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26904
};
 
26905
 
 
26906
/** \class CT_AnyExtension CTree.h Puma/CTree.h
 
26907
 *  Tree node representing a wildcard extension. */
 
26908
 
 
26909
#line 26910 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26910
} // closed Puma
 
26911
class CCExprResolve;
 
26912
class CExprResolve;
 
26913
class WinIfExists;
 
26914
class WinImportHandler;
 
26915
class WinMacros;
 
26916
class WinAsm;
 
26917
class WinDeclSpecs;
 
26918
class WinMemberExplSpec;
 
26919
class WinTypeKeywords;
 
26920
class WinFriend;
 
26921
class ExtAC;
 
26922
class ExtACBuilderCoupling;
 
26923
class ExtACSyntaxCoupling;
 
26924
class ExtACTree;
 
26925
class ExtACKeywords;
 
26926
class ExtGnu;
 
26927
class PragmaOnceUnitState;
 
26928
class PragmaOnce;
 
26929
class CMatchSyntax;
 
26930
namespace Puma {
 
26931
 
 
26932
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26933
class CT_AnyExtension : public CTree, public CSemValue {
 
26934
#line 26935 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
26935
  friend class ::CCExprResolve;
 
26936
  friend class ::CExprResolve;
 
26937
  friend class ::WinIfExists;
 
26938
  friend class ::WinImportHandler;
 
26939
  friend class ::WinMacros;
 
26940
  friend class ::WinAsm;
 
26941
  friend class ::WinDeclSpecs;
 
26942
  friend class ::WinMemberExplSpec;
 
26943
  friend class ::WinTypeKeywords;
 
26944
  friend class ::WinFriend;
 
26945
  friend class ::ExtAC;
 
26946
  friend class ::ExtACBuilderCoupling;
 
26947
  friend class ::ExtACSyntaxCoupling;
 
26948
  friend class ::ExtACTree;
 
26949
  friend class ::ExtACKeywords;
 
26950
  friend class ::ExtGnu;
 
26951
  friend class ::PragmaOnceUnitState;
 
26952
  friend class ::PragmaOnce;
 
26953
  friend class ::CMatchSyntax;
 
26954
 
 
26955
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26956
 
 
26957
  CTree *sons[5]; // open, string, comma, cond, close
 
26958
 
 
26959
public:
 
26960
  /** Constructor.
 
26961
   *  \param o Left parenthesis before the extension. 
 
26962
   *  \param n The name of the extension.
 
26963
   *  \param co The comma between the name and the condition. 
 
26964
   *  \param c The condition.
 
26965
   *  \param cr Right parenthesis behind the extension. */
 
26966
  CT_AnyExtension (CTree *o, CTree *n, CTree *co, CTree *c, CTree *cr) {
 
26967
    AddSon (sons[0], o); AddSon (sons[1], n); AddSon (sons[2], co); 
 
26968
    AddSon (sons[3], c); AddSon (sons[4], cr); 
 
26969
  }
 
26970
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26971
  static const char *NodeId ();
 
26972
  /** Get the name of the node. Can be compared with NodeId(). */
 
26973
  const char *NodeName () const { return NodeId (); }
 
26974
  /** Get the number of sons. */
 
26975
  int Sons () const { return CTree::Sons (sons, 5); }
 
26976
  /** Get the n-th son.
 
26977
   *  \param n The index of the son.
 
26978
   *  \return The n-th son or NULL. */
 
26979
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
26980
  /** Replace a son.
 
26981
   *  \param old_son The son to replace.
 
26982
   *  \param new_son The new son. */
 
26983
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26984
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
26985
  }
 
26986
  /** Get the condition. */
 
26987
  CTree *Condition () const { return sons[3]; }
 
26988
  /** Get the name string. */
 
26989
  CT_Token *String () const { return (CT_Token*)sons[1]; }
 
26990
  /** Get the extension name. */
 
26991
  const char *Name () const { return value ? value->StrLiteral ()->String () : (const char*)0; }
 
26992
  /** Get the value of the extension (the name). */
 
26993
  CExprValue *Value () const { return value; }
 
26994
  /** Get the semantic value information object. */
 
26995
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
26996
public:
 
26997
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
26998
  const char *__attr_name (unsigned i) const {
 
26999
    static const char *names[] = { "sons" }; return names[i];
 
27000
  }
 
27001
  const void *__attr (unsigned __i) const {
 
27002
    switch (__i) { case 0: return &sons; default: return 0; }
 
27003
  }
 
27004
#line 4352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27005
};
 
27006
 
 
27007
/** \class CT_AnyCondition CTree.h Puma/CTree.h
 
27008
 *  Tree node representing the condition of a wildcard. */
 
27009
 
 
27010
#line 27011 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27011
} // closed Puma
 
27012
class CCExprResolve;
 
27013
class CExprResolve;
 
27014
class WinIfExists;
 
27015
class WinImportHandler;
 
27016
class WinMacros;
 
27017
class WinAsm;
 
27018
class WinDeclSpecs;
 
27019
class WinMemberExplSpec;
 
27020
class WinTypeKeywords;
 
27021
class WinFriend;
 
27022
class ExtAC;
 
27023
class ExtACBuilderCoupling;
 
27024
class ExtACSyntaxCoupling;
 
27025
class ExtACTree;
 
27026
class ExtACKeywords;
 
27027
class ExtGnu;
 
27028
class PragmaOnceUnitState;
 
27029
class PragmaOnce;
 
27030
class CMatchSyntax;
 
27031
namespace Puma {
 
27032
 
 
27033
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27034
class CT_AnyCondition : public CTree {
 
27035
#line 27036 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27036
  friend class ::CCExprResolve;
 
27037
  friend class ::CExprResolve;
 
27038
  friend class ::WinIfExists;
 
27039
  friend class ::WinImportHandler;
 
27040
  friend class ::WinMacros;
 
27041
  friend class ::WinAsm;
 
27042
  friend class ::WinDeclSpecs;
 
27043
  friend class ::WinMemberExplSpec;
 
27044
  friend class ::WinTypeKeywords;
 
27045
  friend class ::WinFriend;
 
27046
  friend class ::ExtAC;
 
27047
  friend class ::ExtACBuilderCoupling;
 
27048
  friend class ::ExtACSyntaxCoupling;
 
27049
  friend class ::ExtACTree;
 
27050
  friend class ::ExtACKeywords;
 
27051
  friend class ::ExtGnu;
 
27052
  friend class ::PragmaOnceUnitState;
 
27053
  friend class ::PragmaOnce;
 
27054
  friend class ::CMatchSyntax;
 
27055
 
 
27056
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27057
 
 
27058
  CTree *sons[3]; // arg1, arg2, arg3
 
27059
 
 
27060
public:
 
27061
  /** Constructor.
 
27062
   *  \param a1 The first argument.
 
27063
   *  \param a2 The optional second argument.
 
27064
   *  \param a3 The optional third argument. */
 
27065
  CT_AnyCondition (CTree *a1, CTree *a2 = (CTree*)0, CTree *a3 = (CTree*)0) {
 
27066
    AddSon (sons[0], a1); AddSon (sons[1], a2); AddSon (sons[2], a3); 
 
27067
  }
 
27068
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27069
  static const char *NodeId ();
 
27070
  /** Get the name of the node. Can be compared with NodeId(). */
 
27071
  const char *NodeName () const { return NodeId (); }
 
27072
  /** Get the number of sons. */
 
27073
  int Sons () const { return CTree::Sons (sons, 3); }
 
27074
  /** Get the n-th son.
 
27075
   *  \param n The index of the son.
 
27076
   *  \return The n-th son or NULL. */
 
27077
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
27078
  /** Replace a son.
 
27079
   *  \param old_son The son to replace.
 
27080
   *  \param new_son The new son. */
 
27081
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27082
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
27083
  }
 
27084
public:
 
27085
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
27086
  const char *__attr_name (unsigned i) const {
 
27087
    static const char *names[] = { "sons" }; return names[i];
 
27088
  }
 
27089
  const void *__attr (unsigned __i) const {
 
27090
    switch (__i) { case 0: return &sons; default: return 0; }
 
27091
  }
 
27092
#line 4383 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27093
};
 
27094
 
 
27095
 
 
27096
} // namespace Puma
 
27097
 
 
27098
#endif /* __CTree_h__ */
 
27099
 
 
27100
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27101
/** \file
 
27102
 *  AspectC++ specific syntax tree classes. */
 
27103
 
 
27104
namespace Puma {
 
27105
 
 
27106
 
 
27107
/** \class CT_AdviceDecl ACTree.h Puma/ACTree.h
 
27108
 *  Tree node representing an advice declaration. 
 
27109
 *  Example: 
 
27110
 *  \code 
 
27111
 * advice "% main(...)" : before() { 
 
27112
 *   printf('init'); 
 
27113
 * } 
 
27114
 *  \endcode */
 
27115
 
 
27116
#line 27117 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27117
} // closed Puma
 
27118
class CCExprResolve;
 
27119
class CExprResolve;
 
27120
class WinIfExists;
 
27121
class WinImportHandler;
 
27122
class WinMacros;
 
27123
class WinAsm;
 
27124
class WinDeclSpecs;
 
27125
class WinMemberExplSpec;
 
27126
class WinTypeKeywords;
 
27127
class WinFriend;
 
27128
class ExtAC;
 
27129
class ExtACBuilderCoupling;
 
27130
class ExtACSyntaxCoupling;
 
27131
class ExtACTree;
 
27132
class ExtACKeywords;
 
27133
class ExtGnu;
 
27134
class PragmaOnceUnitState;
 
27135
class PragmaOnce;
 
27136
class CMatchSyntax;
 
27137
namespace Puma {
 
27138
 
 
27139
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27140
class CT_AdviceDecl : public CT_Decl {
 
27141
#line 27142 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27142
  friend class ::CCExprResolve;
 
27143
  friend class ::CExprResolve;
 
27144
  friend class ::WinIfExists;
 
27145
  friend class ::WinImportHandler;
 
27146
  friend class ::WinMacros;
 
27147
  friend class ::WinAsm;
 
27148
  friend class ::WinDeclSpecs;
 
27149
  friend class ::WinMemberExplSpec;
 
27150
  friend class ::WinTypeKeywords;
 
27151
  friend class ::WinFriend;
 
27152
  friend class ::ExtAC;
 
27153
  friend class ::ExtACBuilderCoupling;
 
27154
  friend class ::ExtACSyntaxCoupling;
 
27155
  friend class ::ExtACTree;
 
27156
  friend class ::ExtACKeywords;
 
27157
  friend class ::ExtGnu;
 
27158
  friend class ::PragmaOnceUnitState;
 
27159
  friend class ::PragmaOnce;
 
27160
  friend class ::CMatchSyntax;
 
27161
 
 
27162
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27163
 
 
27164
  CTree *_advice;    // CT_Token
 
27165
  CTree *_pointcut;
 
27166
  CTree *_colon;     // CT_Token
 
27167
  CTree *_decl;
 
27168
 
 
27169
public:
 
27170
  /** Constructor.
 
27171
   *  \param a The keyword 'advice'.
 
27172
   *  \param p The pointcut expression.
 
27173
   *  \param c The colon before the advice declaration.
 
27174
   *  \param d The advice declaration. */
 
27175
  CT_AdviceDecl (CTree *a, CTree *p, CTree *c, CTree *d) : 
 
27176
    _advice (a), _pointcut (p), _colon (c), _decl (d) {}
 
27177
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27178
  static const char *NodeId ();
 
27179
  /** Get the name of the node. Can be compared with NodeId(). */
 
27180
  const char *NodeName () const { return NodeId (); }
 
27181
  /** Get the number of sons. */
 
27182
  int Sons () const { return 4; }
 
27183
  /** Get the n-th son.
 
27184
   *  \param n The index of the son.
 
27185
   *  \return The n-th son or NULL. */
 
27186
  CTree *Son (int n) const { 
 
27187
    switch (n) { 
 
27188
      case 0: return _advice;
 
27189
      case 1: return _pointcut;
 
27190
      case 2: return _colon;
 
27191
      case 3: return _decl;
 
27192
      default: return (CTree*)0;
 
27193
    }
 
27194
  }
 
27195
  /** Replace a son.
 
27196
   *  \param old_son The son to replace.
 
27197
   *  \param new_son The new son. */
 
27198
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27199
    if (old_son == _decl) _decl = new_son; 
 
27200
    else if (old_son == _pointcut) _pointcut = new_son; 
 
27201
    else if (old_son == _advice) _advice = new_son; 
 
27202
    else if (old_son == _colon) _colon = new_son; 
 
27203
  }
 
27204
  /** Get the pointcut expression. */
 
27205
  CTree *Pointcut () const { return _pointcut; }
 
27206
  /** Get the advice declaration. */
 
27207
  CTree *Decl () const { return _decl; }
 
27208
public:
 
27209
  typedef AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
27210
  const char *__attr_name (unsigned i) const {
 
27211
    static const char *names[] = { "_advice", "_pointcut", "_colon", "_decl" }; return names[i];
 
27212
  }
 
27213
  const void *__attr (unsigned __i) const {
 
27214
    switch (__i) { case 0: return &_advice; case 1: return &_pointcut; case 2: return &_colon; case 3: return &_decl; default: return 0; }
 
27215
  }
 
27216
#line 83 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27217
};
 
27218
 
 
27219
/** \class CT_OrderList ACTree.h Puma/ACTree.h
 
27220
 *  Tree node representing an order list. 
 
27221
 *  Example: \code ( "pointcut1", "pointcut2" ) \endcode */
 
27222
 
 
27223
#line 27224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27224
} // closed Puma
 
27225
class CCExprResolve;
 
27226
class CExprResolve;
 
27227
class WinIfExists;
 
27228
class WinImportHandler;
 
27229
class WinMacros;
 
27230
class WinAsm;
 
27231
class WinDeclSpecs;
 
27232
class WinMemberExplSpec;
 
27233
class WinTypeKeywords;
 
27234
class WinFriend;
 
27235
class ExtAC;
 
27236
class ExtACBuilderCoupling;
 
27237
class ExtACSyntaxCoupling;
 
27238
class ExtACTree;
 
27239
class ExtACKeywords;
 
27240
class ExtGnu;
 
27241
class PragmaOnceUnitState;
 
27242
class PragmaOnce;
 
27243
class CMatchSyntax;
 
27244
namespace Puma {
 
27245
 
 
27246
#line 88 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27247
class CT_OrderList : public CT_List {
 
27248
#line 27249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27249
  friend class ::CCExprResolve;
 
27250
  friend class ::CExprResolve;
 
27251
  friend class ::WinIfExists;
 
27252
  friend class ::WinImportHandler;
 
27253
  friend class ::WinMacros;
 
27254
  friend class ::WinAsm;
 
27255
  friend class ::WinDeclSpecs;
 
27256
  friend class ::WinMemberExplSpec;
 
27257
  friend class ::WinTypeKeywords;
 
27258
  friend class ::WinFriend;
 
27259
  friend class ::ExtAC;
 
27260
  friend class ::ExtACBuilderCoupling;
 
27261
  friend class ::ExtACSyntaxCoupling;
 
27262
  friend class ::ExtACTree;
 
27263
  friend class ::ExtACKeywords;
 
27264
  friend class ::ExtGnu;
 
27265
  friend class ::PragmaOnceUnitState;
 
27266
  friend class ::PragmaOnce;
 
27267
  friend class ::CMatchSyntax;
 
27268
 
 
27269
#line 88 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27270
 
 
27271
public:
 
27272
  /** Constructor. */
 
27273
  CT_OrderList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
27274
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27275
  static const char *NodeId ();
 
27276
  /** Get the name of the node. Can be compared with NodeId(). */
 
27277
  const char *NodeName () const { return NodeId (); }
 
27278
public:
 
27279
  typedef AC::TLE __AttrTypes;
 
27280
  const char *__attr_name (unsigned i) const { return 0; }
 
27281
  const void *__attr (unsigned __i) const { return 0; }
 
27282
#line 96 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27283
};
 
27284
 
 
27285
/** \class CT_OrderDecl ACTree.h Puma/ACTree.h
 
27286
 *  Tree node representing an order declaration. 
 
27287
 *  Example: \code order("pointcut1","pointcut2") \endcode */
 
27288
 
 
27289
#line 27290 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27290
} // closed Puma
 
27291
class CCExprResolve;
 
27292
class CExprResolve;
 
27293
class WinIfExists;
 
27294
class WinImportHandler;
 
27295
class WinMacros;
 
27296
class WinAsm;
 
27297
class WinDeclSpecs;
 
27298
class WinMemberExplSpec;
 
27299
class WinTypeKeywords;
 
27300
class WinFriend;
 
27301
class ExtAC;
 
27302
class ExtACBuilderCoupling;
 
27303
class ExtACSyntaxCoupling;
 
27304
class ExtACTree;
 
27305
class ExtACKeywords;
 
27306
class ExtGnu;
 
27307
class PragmaOnceUnitState;
 
27308
class PragmaOnce;
 
27309
class CMatchSyntax;
 
27310
namespace Puma {
 
27311
 
 
27312
#line 101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27313
class CT_OrderDecl : public CTree {
 
27314
#line 27315 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27315
  friend class ::CCExprResolve;
 
27316
  friend class ::CExprResolve;
 
27317
  friend class ::WinIfExists;
 
27318
  friend class ::WinImportHandler;
 
27319
  friend class ::WinMacros;
 
27320
  friend class ::WinAsm;
 
27321
  friend class ::WinDeclSpecs;
 
27322
  friend class ::WinMemberExplSpec;
 
27323
  friend class ::WinTypeKeywords;
 
27324
  friend class ::WinFriend;
 
27325
  friend class ::ExtAC;
 
27326
  friend class ::ExtACBuilderCoupling;
 
27327
  friend class ::ExtACSyntaxCoupling;
 
27328
  friend class ::ExtACTree;
 
27329
  friend class ::ExtACKeywords;
 
27330
  friend class ::ExtGnu;
 
27331
  friend class ::PragmaOnceUnitState;
 
27332
  friend class ::PragmaOnce;
 
27333
  friend class ::CMatchSyntax;
 
27334
 
 
27335
#line 101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27336
 
 
27337
  CTree *_order;
 
27338
  CTree *_order_list;
 
27339
  CTree *_semi_colon;
 
27340
 
 
27341
public:
 
27342
  /** Constructor.
 
27343
   *  \param o The keyword 'order'.
 
27344
   *  \param ol The list of pointcut expressions. 
 
27345
   *  \param s The trailing semi-colon. */
 
27346
  CT_OrderDecl (CTree *o, CTree *ol, CTree *s) :
 
27347
    _order (o), _order_list (ol), _semi_colon (s) {}
 
27348
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27349
  static const char *NodeId ();
 
27350
  /** Get the name of the node. Can be compared with NodeId(). */
 
27351
  const char *NodeName () const { return NodeId (); }
 
27352
  /** Get the number of sons. */
 
27353
  int Sons () const { return 3; }
 
27354
  /** Get the n-th son.
 
27355
   *  \param n The index of the son.
 
27356
   *  \return The n-th son or NULL. */
 
27357
  CTree *Son (int n) const { 
 
27358
    switch (n) { 
 
27359
      case 0: return _order;
 
27360
      case 1: return _order_list;
 
27361
      case 2: return _semi_colon;
 
27362
      default: return (CTree*)0;
 
27363
    }
 
27364
  }
 
27365
  /** Replace a son.
 
27366
   *  \param old_son The son to replace.
 
27367
   *  \param new_son The new son. */
 
27368
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27369
    if (old_son == _order) _order = new_son; 
 
27370
    else if (old_son == _order_list) _order_list = new_son; 
 
27371
    else if (old_son == _semi_colon) _semi_colon = new_son; 
 
27372
  }
 
27373
  /** Get the list of pointcut expressions. */
 
27374
  CT_OrderList *OrderList () const { return (CT_OrderList*)_order_list; }
 
27375
public:
 
27376
  typedef AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > __AttrTypes;
 
27377
  const char *__attr_name (unsigned i) const {
 
27378
    static const char *names[] = { "_order", "_order_list", "_semi_colon" }; return names[i];
 
27379
  }
 
27380
  const void *__attr (unsigned __i) const {
 
27381
    switch (__i) { case 0: return &_order; case 1: return &_order_list; case 2: return &_semi_colon; default: return 0; }
 
27382
  }
 
27383
#line 140 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27384
};
 
27385
 
 
27386
/** \class CT_PointcutDecl ACTree.h Puma/ACTree.h
 
27387
 *  Tree node representing a pointcut declaration. 
 
27388
 *  Example: \code pointcut main() = "% main(...)"; \endcode */
 
27389
 
 
27390
#line 27391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27391
} // closed Puma
 
27392
class CCExprResolve;
 
27393
class CExprResolve;
 
27394
class WinIfExists;
 
27395
class WinImportHandler;
 
27396
class WinMacros;
 
27397
class WinAsm;
 
27398
class WinDeclSpecs;
 
27399
class WinMemberExplSpec;
 
27400
class WinTypeKeywords;
 
27401
class WinFriend;
 
27402
class ExtAC;
 
27403
class ExtACBuilderCoupling;
 
27404
class ExtACSyntaxCoupling;
 
27405
class ExtACTree;
 
27406
class ExtACKeywords;
 
27407
class ExtGnu;
 
27408
class PragmaOnceUnitState;
 
27409
class PragmaOnce;
 
27410
class CMatchSyntax;
 
27411
namespace Puma {
 
27412
 
 
27413
#line 145 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27414
class CT_PointcutDecl : public CT_Decl {
 
27415
#line 27416 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27416
  friend class ::CCExprResolve;
 
27417
  friend class ::CExprResolve;
 
27418
  friend class ::WinIfExists;
 
27419
  friend class ::WinImportHandler;
 
27420
  friend class ::WinMacros;
 
27421
  friend class ::WinAsm;
 
27422
  friend class ::WinDeclSpecs;
 
27423
  friend class ::WinMemberExplSpec;
 
27424
  friend class ::WinTypeKeywords;
 
27425
  friend class ::WinFriend;
 
27426
  friend class ::ExtAC;
 
27427
  friend class ::ExtACBuilderCoupling;
 
27428
  friend class ::ExtACSyntaxCoupling;
 
27429
  friend class ::ExtACTree;
 
27430
  friend class ::ExtACKeywords;
 
27431
  friend class ::ExtGnu;
 
27432
  friend class ::PragmaOnceUnitState;
 
27433
  friend class ::PragmaOnce;
 
27434
  friend class ::CMatchSyntax;
 
27435
 
 
27436
#line 145 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27437
 
 
27438
  CTree *_pointcut;    // CT_Token
 
27439
  CTree *_decl;
 
27440
 
 
27441
public:
 
27442
  /** Constructor.
 
27443
   *  \param p The keyword 'pointcut'.
 
27444
   *  \param d The pointcut declaration. */
 
27445
  CT_PointcutDecl (CTree *p, CTree *d) : _pointcut (p), _decl (d) {}
 
27446
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27447
  static const char *NodeId ();
 
27448
  /** Get the name of the node. Can be compared with NodeId(). */
 
27449
  const char *NodeName () const { return NodeId (); }
 
27450
  /** Get the number of sons. */
 
27451
  int Sons () const { return 2; }
 
27452
  /** Get the n-th son.
 
27453
   *  \param n The index of the son.
 
27454
   *  \return The n-th son or NULL. */
 
27455
  CTree *Son (int n) const { 
 
27456
    switch (n) { 
 
27457
      case 0: return _pointcut;
 
27458
      case 1: return _decl;
 
27459
      default: return (CTree*)0;
 
27460
    }
 
27461
  }
 
27462
  /** Replace a son.
 
27463
   *  \param old_son The son to replace.
 
27464
   *  \param new_son The new son. */
 
27465
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27466
    if (old_son == _decl) _decl = new_son; 
 
27467
    else if (old_son == _pointcut) _pointcut = new_son; 
 
27468
  }
 
27469
  /** Get the pointcut declaration. */
 
27470
  CTree *Decl () const { return _decl; }
 
27471
public:
 
27472
  typedef AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
27473
  const char *__attr_name (unsigned i) const {
 
27474
    static const char *names[] = { "_pointcut", "_decl" }; return names[i];
 
27475
  }
 
27476
  const void *__attr (unsigned __i) const {
 
27477
    switch (__i) { case 0: return &_pointcut; case 1: return &_decl; default: return 0; }
 
27478
  }
 
27479
#line 179 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27480
};
 
27481
 
 
27482
/** \class CT_Intro ACTree.h Puma/ACTree.h
 
27483
 *  Tree node representing an introduction advice declaration.
 
27484
 *  Example: \code around() \endcode */
 
27485
 
 
27486
#line 27487 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27487
} // closed Puma
 
27488
class CCExprResolve;
 
27489
class CExprResolve;
 
27490
class WinIfExists;
 
27491
class WinImportHandler;
 
27492
class WinMacros;
 
27493
class WinAsm;
 
27494
class WinDeclSpecs;
 
27495
class WinMemberExplSpec;
 
27496
class WinTypeKeywords;
 
27497
class WinFriend;
 
27498
class ExtAC;
 
27499
class ExtACBuilderCoupling;
 
27500
class ExtACSyntaxCoupling;
 
27501
class ExtACTree;
 
27502
class ExtACKeywords;
 
27503
class ExtGnu;
 
27504
class PragmaOnceUnitState;
 
27505
class PragmaOnce;
 
27506
class CMatchSyntax;
 
27507
namespace Puma {
 
27508
 
 
27509
#line 184 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27510
class CT_Intro : public CT_List, public CSemScope {
 
27511
#line 27512 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27512
  friend class ::CCExprResolve;
 
27513
  friend class ::CExprResolve;
 
27514
  friend class ::WinIfExists;
 
27515
  friend class ::WinImportHandler;
 
27516
  friend class ::WinMacros;
 
27517
  friend class ::WinAsm;
 
27518
  friend class ::WinDeclSpecs;
 
27519
  friend class ::WinMemberExplSpec;
 
27520
  friend class ::WinTypeKeywords;
 
27521
  friend class ::WinFriend;
 
27522
  friend class ::ExtAC;
 
27523
  friend class ::ExtACBuilderCoupling;
 
27524
  friend class ::ExtACSyntaxCoupling;
 
27525
  friend class ::ExtACTree;
 
27526
  friend class ::ExtACKeywords;
 
27527
  friend class ::ExtGnu;
 
27528
  friend class ::PragmaOnceUnitState;
 
27529
  friend class ::PragmaOnce;
 
27530
  friend class ::CMatchSyntax;
 
27531
 
 
27532
#line 184 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27533
 
 
27534
  // indices of aspect or slice names in introduction
 
27535
  Array<int> _name_indices;    // start index
 
27536
  Array<int> _name_to_indices; // end index
 
27537
  Array<bool> _name_qual;      // true if the token should be replaced by a qualified name
 
27538
 
 
27539
public:
 
27540
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27541
  static const char *NodeId ();
 
27542
  /** Get the name of the node. Can be compared with NodeId(). */
 
27543
  const char *NodeName () const { return NodeId (); }
 
27544
  /** Add a name index. 
 
27545
   *  \param index The name index. */
 
27546
  void AddNameIndex (int index) {
 
27547
    _name_indices.append (index);
 
27548
    _name_to_indices.append (index);
 
27549
    _name_qual.append (false);
 
27550
  }
 
27551
  /** Add a name index.
 
27552
   *  \param index_from Start index.
 
27553
   *  \param index_to End index. */
 
27554
  void AddNameIndex (int index_from, int index_to) {
 
27555
    _name_indices.append (index_from);
 
27556
    _name_to_indices.append (index_to);
 
27557
    _name_qual.append (true);
 
27558
  }
 
27559
  /** Roll back the name index to the given position. 
 
27560
   *  \param pos The position up to which to roll back. */
 
27561
  void RollbackNameIndex (int pos) {
 
27562
    for (int i = NameIndices () - 1; i >= 0; i--) {
 
27563
      if (NameIndex (i) >= pos) {
 
27564
        _name_indices.remove (i);
 
27565
        _name_to_indices.remove (i);
 
27566
        _name_qual.remove (i);
 
27567
      }
 
27568
      else
 
27569
        break;
 
27570
    }
 
27571
  }
 
27572
  /** Get the name indices. */
 
27573
  int NameIndices () const { return _name_indices.length (); }
 
27574
  /** Get the start index of the name with the given index.
 
27575
   *  \param i The index. */
 
27576
  int NameIndex (int i) const { return _name_indices.lookup (i); }
 
27577
  /** Get the end index for the name with the given index.
 
27578
   *  \param i The index. */
 
27579
  int NameToIndex (int i) const { return _name_to_indices.lookup (i); }
 
27580
  /** Check if the name at the given index should 
 
27581
   *  be replaced by a qualified name.
 
27582
   *  \param i The index. */
 
27583
  bool NameQual (int i) const { return _name_qual.lookup (i); }
 
27584
public:
 
27585
  typedef AC::TL<Puma::Array< int >,AC::TL<Puma::Array< int >,AC::TL<Puma::Array< bool >,AC::TLE > > > __AttrTypes;
 
27586
  const char *__attr_name (unsigned i) const {
 
27587
    static const char *names[] = { "_name_indices", "_name_to_indices", "_name_qual" }; return names[i];
 
27588
  }
 
27589
  const void *__attr (unsigned __i) const {
 
27590
    switch (__i) { case 1: return &_name_indices; case 3: return &_name_to_indices; case 5: return &_name_qual; default: return 0; }
 
27591
  }
 
27592
#line 235 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27593
};
 
27594
 
 
27595
/** \class CT_ClassSliceDecl ACTree.h Puma/ACTree.h
 
27596
 *  Tree node representing a slice declaration for a class. 
 
27597
 *  Example: 
 
27598
 *  \code 
 
27599
 * slice class X : Y { 
 
27600
 *   int x; 
 
27601
 * }; 
 
27602
 *  \endcode */
 
27603
 
 
27604
#line 27605 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27605
} // closed Puma
 
27606
class CCExprResolve;
 
27607
class CExprResolve;
 
27608
class WinIfExists;
 
27609
class WinImportHandler;
 
27610
class WinMacros;
 
27611
class WinAsm;
 
27612
class WinDeclSpecs;
 
27613
class WinMemberExplSpec;
 
27614
class WinTypeKeywords;
 
27615
class WinFriend;
 
27616
class ExtAC;
 
27617
class ExtACBuilderCoupling;
 
27618
class ExtACSyntaxCoupling;
 
27619
class ExtACTree;
 
27620
class ExtACKeywords;
 
27621
class ExtGnu;
 
27622
class PragmaOnceUnitState;
 
27623
class PragmaOnce;
 
27624
class CMatchSyntax;
 
27625
namespace Puma {
 
27626
 
 
27627
#line 245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27628
class CT_ClassSliceDecl : public CTree, public CSemObject {
 
27629
#line 27630 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27630
  friend class ::CCExprResolve;
 
27631
  friend class ::CExprResolve;
 
27632
  friend class ::WinIfExists;
 
27633
  friend class ::WinImportHandler;
 
27634
  friend class ::WinMacros;
 
27635
  friend class ::WinAsm;
 
27636
  friend class ::WinDeclSpecs;
 
27637
  friend class ::WinMemberExplSpec;
 
27638
  friend class ::WinTypeKeywords;
 
27639
  friend class ::WinFriend;
 
27640
  friend class ::ExtAC;
 
27641
  friend class ::ExtACBuilderCoupling;
 
27642
  friend class ::ExtACSyntaxCoupling;
 
27643
  friend class ::ExtACTree;
 
27644
  friend class ::ExtACKeywords;
 
27645
  friend class ::ExtGnu;
 
27646
  friend class ::PragmaOnceUnitState;
 
27647
  friend class ::PragmaOnce;
 
27648
  friend class ::CMatchSyntax;
 
27649
 
 
27650
#line 245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27651
 
 
27652
  CTree *sons[6]; // SLICE? <key>? <name>? <baseclasses>? <members> ;
 
27653
  
 
27654
public:
 
27655
  /** Constructor.
 
27656
   *  \param sl The keyword 'slice'.
 
27657
   *  \param k The keyword 'class' or 'struct'.
 
27658
   *  \param n The name of the class.
 
27659
   *  \param b The base class list.
 
27660
   *  \param m The class member declarations list.
 
27661
   *  \param se The trailing semi-colon. */
 
27662
  CT_ClassSliceDecl (CTree *sl, CTree *k, CTree *n, CTree *b, CTree *m, CTree *se) {
 
27663
    sons[0] = sl; sons[1] = k; sons[2] = n; sons[3] = b; sons[4] = m; sons[5] = se;
 
27664
  }
 
27665
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27666
  static const char *NodeId ();
 
27667
  /** Get the name of the node. Can be compared with NodeId(). */
 
27668
  const char *NodeName () const { return NodeId (); }
 
27669
  /** Get the number of sons. */
 
27670
  int Sons () const { return CTree::Sons (sons, 6); }
 
27671
  /** Get the n-th son.
 
27672
   *  \param n The index of the son.
 
27673
   *  \return The n-th son or NULL. */
 
27674
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
27675
  /** Replace a son.
 
27676
   *  \param old_son The son to replace.
 
27677
   *  \param new_son The new son. */
 
27678
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27679
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
27680
  }
 
27681
  /** Get the class keyword, i.e. 'class' or 'struct'. */
 
27682
  CT_Token *key () const { return (CT_Token*)sons[1]; }
 
27683
  /** Get the name of the class. */
 
27684
  CT_SimpleName *name () const { return (CT_SimpleName*)sons[2]; }
 
27685
  /** Get the base class list. */
 
27686
  CT_Intro *base_clause () const { return (CT_Intro*)sons[3]; }
 
27687
  /** Get the class member declarations list. */
 
27688
  CT_Intro *members () const { return (CT_Intro*)sons[4]; }
 
27689
public:
 
27690
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
27691
  const char *__attr_name (unsigned i) const {
 
27692
    static const char *names[] = { "sons" }; return names[i];
 
27693
  }
 
27694
  const void *__attr (unsigned __i) const {
 
27695
    switch (__i) { case 0: return &sons; default: return 0; }
 
27696
  }
 
27697
#line 283 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27698
};
 
27699
 
 
27700
/** \class CT_SliceRef ACTree.h Puma/ACTree.h
 
27701
 *  Tree node representing a slice reference. 
 
27702
 *  Example: \code slice X; \endcode */
 
27703
 
 
27704
#line 27705 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27705
} // closed Puma
 
27706
class CCExprResolve;
 
27707
class CExprResolve;
 
27708
class WinIfExists;
 
27709
class WinImportHandler;
 
27710
class WinMacros;
 
27711
class WinAsm;
 
27712
class WinDeclSpecs;
 
27713
class WinMemberExplSpec;
 
27714
class WinTypeKeywords;
 
27715
class WinFriend;
 
27716
class ExtAC;
 
27717
class ExtACBuilderCoupling;
 
27718
class ExtACSyntaxCoupling;
 
27719
class ExtACTree;
 
27720
class ExtACKeywords;
 
27721
class ExtGnu;
 
27722
class PragmaOnceUnitState;
 
27723
class PragmaOnce;
 
27724
class CMatchSyntax;
 
27725
namespace Puma {
 
27726
 
 
27727
#line 288 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27728
class CT_SliceRef : public CTree {
 
27729
#line 27730 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27730
  friend class ::CCExprResolve;
 
27731
  friend class ::CExprResolve;
 
27732
  friend class ::WinIfExists;
 
27733
  friend class ::WinImportHandler;
 
27734
  friend class ::WinMacros;
 
27735
  friend class ::WinAsm;
 
27736
  friend class ::WinDeclSpecs;
 
27737
  friend class ::WinMemberExplSpec;
 
27738
  friend class ::WinTypeKeywords;
 
27739
  friend class ::WinFriend;
 
27740
  friend class ::ExtAC;
 
27741
  friend class ::ExtACBuilderCoupling;
 
27742
  friend class ::ExtACSyntaxCoupling;
 
27743
  friend class ::ExtACTree;
 
27744
  friend class ::ExtACKeywords;
 
27745
  friend class ::ExtGnu;
 
27746
  friend class ::PragmaOnceUnitState;
 
27747
  friend class ::PragmaOnce;
 
27748
  friend class ::CMatchSyntax;
 
27749
 
 
27750
#line 288 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27751
 
 
27752
  CTree *sons[3];
 
27753
  
 
27754
public:
 
27755
  /** Constructor.
 
27756
   *  \param sl The keyword 'slice'.
 
27757
   *  \param n The name of the slice.
 
27758
   *  \param se The trailing semi-colon. */
 
27759
  CT_SliceRef (CTree *sl, CTree *n, CTree *se) {
 
27760
    sons[0] = sl; sons[1] = n; sons[2] = se;
 
27761
  }
 
27762
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27763
  static const char *NodeId ();
 
27764
  /** Get the name of the node. Can be compared with NodeId(). */
 
27765
  const char *NodeName () const { return NodeId (); }
 
27766
  /** Get the number of sons. */
 
27767
  int Sons () const { return 3; }
 
27768
  /** Get the n-th son.
 
27769
   *  \param n The index of the son.
 
27770
   *  \return The n-th son or NULL. */
 
27771
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
27772
  /** Replace a son.
 
27773
   *  \param old_son The son to replace.
 
27774
   *  \param new_son The new son. */
 
27775
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27776
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
27777
  }
 
27778
  /** Get the name of the slice. */
 
27779
  CT_SimpleName *name () const { return (CT_SimpleName*)sons[1]; }
 
27780
public:
 
27781
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
27782
  const char *__attr_name (unsigned i) const {
 
27783
    static const char *names[] = { "sons" }; return names[i];
 
27784
  }
 
27785
  const void *__attr (unsigned __i) const {
 
27786
    switch (__i) { case 0: return &sons; default: return 0; }
 
27787
  }
 
27788
#line 317 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACTree.h"
 
27789
};
 
27790
 
 
27791
 
 
27792
} // namespace Puma
 
27793
 
 
27794
#endif /* __ACTree_h__ */
 
27795
 
 
27796
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACClassDatabase.h"
 
27797
// This file is part of PUMA.
 
27798
// Copyright (C) 1999-2003  The PUMA developer team.
 
27799
//                                                                
 
27800
// This program is free software;  you can redistribute it and/or 
 
27801
// modify it under the terms of the GNU General Public License as 
 
27802
// published by the Free Software Foundation; either version 2 of 
 
27803
// the License, or (at your option) any later version.            
 
27804
//                                                                
 
27805
// This program is distributed in the hope that it will be useful,
 
27806
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
27807
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
27808
// GNU General Public License for more details.                   
 
27809
//                                                                
 
27810
// You should have received a copy of the GNU General Public      
 
27811
// License along with this program; if not, write to the Free     
 
27812
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
27813
// MA  02111-1307  USA                                            
 
27814
 
 
27815
#ifndef __ACClassDatabase_h__
 
27816
#define __ACClassDatabase_h__
 
27817
 
 
27818
/** \file 
 
27819
 *  AspectC++ specific class database. This is a database of all
 
27820
 *  aspect and pointcut info objects. */
 
27821
 
 
27822
 
 
27823
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACClassDatabase.h"
 
27824
using std::ostream;
 
27825
using std::endl;
 
27826
 
 
27827
namespace Puma {
 
27828
 
 
27829
 
 
27830
class ACAspectInfo;
 
27831
class ACPointcutInfo;
 
27832
class ACSliceInfo;
 
27833
class CObjectInfo;
 
27834
class CFunctionInfo;
 
27835
class CClassInfo;
 
27836
 
 
27837
 
 
27838
/** \class ACClassDatabase ACClassDatabase.h Puma/ACClassDatabase.h
 
27839
 *  AspectC++ specific database of all aspect, slice, and pointcut 
 
27840
 *  info objects. */
 
27841
 
 
27842
#line 27843 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27843
} // closed Puma
 
27844
class CCExprResolve;
 
27845
class CExprResolve;
 
27846
class WinIfExists;
 
27847
class WinImportHandler;
 
27848
class WinMacros;
 
27849
class WinAsm;
 
27850
class WinDeclSpecs;
 
27851
class WinMemberExplSpec;
 
27852
class WinTypeKeywords;
 
27853
class WinFriend;
 
27854
class ExtAC;
 
27855
class ExtACBuilderCoupling;
 
27856
class ExtACSyntaxCoupling;
 
27857
class ExtACTree;
 
27858
class ExtACKeywords;
 
27859
class ExtGnu;
 
27860
class PragmaOnceUnitState;
 
27861
class PragmaOnce;
 
27862
class CMatchSyntax;
 
27863
namespace Puma {
 
27864
 
 
27865
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACClassDatabase.h"
 
27866
class ACClassDatabase {
 
27867
#line 27868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
27868
  friend class ::CCExprResolve;
 
27869
  friend class ::CExprResolve;
 
27870
  friend class ::WinIfExists;
 
27871
  friend class ::WinImportHandler;
 
27872
  friend class ::WinMacros;
 
27873
  friend class ::WinAsm;
 
27874
  friend class ::WinDeclSpecs;
 
27875
  friend class ::WinMemberExplSpec;
 
27876
  friend class ::WinTypeKeywords;
 
27877
  friend class ::WinFriend;
 
27878
  friend class ::ExtAC;
 
27879
  friend class ::ExtACBuilderCoupling;
 
27880
  friend class ::ExtACSyntaxCoupling;
 
27881
  friend class ::ExtACTree;
 
27882
  friend class ::ExtACKeywords;
 
27883
  friend class ::ExtGnu;
 
27884
  friend class ::PragmaOnceUnitState;
 
27885
  friend class ::PragmaOnce;
 
27886
  friend class ::CMatchSyntax;
 
27887
 
 
27888
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACClassDatabase.h"
 
27889
 
 
27890
  Array<ACAspectInfo*>   _aspect;   // index of aspects
 
27891
  Array<ACPointcutInfo*> _pointcut; // index of pointcuts
 
27892
  Array<ACSliceInfo*>    _slice;    // index of slices
 
27893
 
 
27894
  void clear (); // release all allocated heap objects
 
27895
  
 
27896
public:
 
27897
  /** Destruct the database. Destroys all aspect and pointcut infos
 
27898
   *  in the database. */
 
27899
  virtual ~ACClassDatabase ();
 
27900
 
 
27901
  // access to the database entries /////////////////////////////
 
27902
  
 
27903
  /** Get the number of aspect infos in the database. */
 
27904
  int AspectInfos () const { return _aspect.length (); }
 
27905
  /** Get the n-th aspect info. 
 
27906
   *  \param n The number of the aspect info.
 
27907
   *  \return The aspect info or \c NULL if \e n is invalid. */
 
27908
  ACAspectInfo *AspectInfo (int n) const { return _aspect.lookup (n); }
 
27909
  /** Get the info of the aspect with the given name.
 
27910
   *  \param n The name of the aspect. 
 
27911
   *  \return The aspect info or \c NULL if there is no aspect with that name. */
 
27912
  ACAspectInfo *AspectInfo (const char *n) const;
 
27913
  /** Get the aspect info according to the given class info. 
 
27914
   *  \param ci The class info of the aspect. 
 
27915
   *  \return The aspect info or \c NULL if no matching aspect was found. */
 
27916
  ACAspectInfo *AspectInfo (CClassInfo *ci) const;
 
27917
  /** Get the number of pointcut infos in the database. */
 
27918
  int PointcutInfos () const { return _pointcut.length (); }
 
27919
  /** Get the n-th pointcut info. 
 
27920
   *  \param n The number of the pointcut info.
 
27921
   *  \return The pointcut info or \c NULL if \e n is invalid. */
 
27922
  ACPointcutInfo *PointcutInfo (int n) const { return _pointcut.lookup (n); }
 
27923
  /** Get the pointcut info according to the given function info. 
 
27924
   *  \param fi The function info of the pointcut. 
 
27925
   *  \return The pointcut info or \c NULL if no matching pointcut was found. */
 
27926
  ACPointcutInfo *PointcutInfo (CFunctionInfo* fi) const;
 
27927
  /** Get the number of slice infos in the database. */
 
27928
  int SliceInfos () const { return _slice.length (); }
 
27929
  /** Get the n-th slice info. 
 
27930
   *  \param n The number of the slice info.
 
27931
   *  \return The slice info or \c NULL if \e n is invalid. */
 
27932
  ACSliceInfo *SliceInfo (int n) const { return _slice.lookup (n); }
 
27933
  /** Get the slice info that is represented by the given object info.
 
27934
   *  \param oi The object info of the slice. 
 
27935
   *  \return The slice info or \c NULL if no matching slice was found. */
 
27936
  ACSliceInfo *SliceInfo (CObjectInfo* oi) const;
 
27937
  
 
27938
public:
 
27939
  // Administration /////////////////////////////////////////////
 
27940
 
 
27941
  /** Create a new aspect info from the given class info.
 
27942
   *  The info is added to the database.
 
27943
   *  \param ci The class info. */
 
27944
  ACAspectInfo *new_aspect (CClassInfo *ci);
 
27945
  /** Create a new pointcut info from the given function info.
 
27946
   *  The info is added to the database.
 
27947
   *  \param fi The function info. */
 
27948
  ACPointcutInfo *new_pointcut (CFunctionInfo *fi);
 
27949
  /** Create a new slice info from the given object info.
 
27950
   *  The info is added to the database.
 
27951
   *  \param oi The object info. */
 
27952
  ACSliceInfo *new_slice (CObjectInfo *oi);
 
27953
 
 
27954
  /** Dump the contents of the database. 
 
27955
   *  \param out The output stream to dump to. 
 
27956
   *  \param level The output level (not yet used). */
 
27957
  void Dump (ostream &out, int level = 0) const;
 
27958
public:
 
27959
  typedef AC::TL<Puma::Array< Puma::ACAspectInfo * >,AC::TL<Puma::Array< Puma::ACPointcutInfo * >,AC::TL<Puma::Array< Puma::ACSliceInfo * >,AC::TLE > > > __AttrTypes;
 
27960
  const char *__attr_name (unsigned i) const {
 
27961
    static const char *names[] = { "_aspect", "_pointcut", "_slice" }; return names[i];
 
27962
  }
 
27963
  const void *__attr (unsigned __i) const {
 
27964
    switch (__i) { case 1: return &_aspect; case 3: return &_pointcut; case 5: return &_slice; default: return 0; }
 
27965
  }
 
27966
#line 115 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACClassDatabase.h"
 
27967
};
 
27968
 
 
27969
inline ACClassDatabase::~ACClassDatabase () {
 
27970
  clear ();
 
27971
}
 
27972
 
 
27973
} // namespace Puma
 
27974
 
 
27975
#endif /* __ACClassDatabase_h__ */
 
27976
 
 
27977
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAspectInfo.h"
 
27978
// This file is part of PUMA.
 
27979
// Copyright (C) 1999-2003  The PUMA developer team.
 
27980
//                                                                
 
27981
// This program is free software;  you can redistribute it and/or 
 
27982
// modify it under the terms of the GNU General Public License as 
 
27983
// published by the Free Software Foundation; either version 2 of 
 
27984
// the License, or (at your option) any later version.            
 
27985
//                                                                
 
27986
// This program is distributed in the hope that it will be useful,
 
27987
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
27988
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
27989
// GNU General Public License for more details.                   
 
27990
//                                                                
 
27991
// You should have received a copy of the GNU General Public      
 
27992
// License along with this program; if not, write to the Free     
 
27993
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
27994
// MA  02111-1307  USA                                            
 
27995
 
 
27996
#ifndef __ACAspectInfo_h__
 
27997
#define __ACAspectInfo_h__
 
27998
 
 
27999
/** \file 
 
28000
 *  Semantic information about an AspectC++ 'aspect'. */
 
28001
 
 
28002
#include <set>
 
28003
using std::set;
 
28004
 
 
28005
 
 
28006
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CClassInfo.h"
 
28007
// This file is part of PUMA.
 
28008
// Copyright (C) 1999-2003  The PUMA developer team.
 
28009
//                                                                
 
28010
// This program is free software;  you can redistribute it and/or 
 
28011
// modify it under the terms of the GNU General Public License as 
 
28012
// published by the Free Software Foundation; either version 2 of 
 
28013
// the License, or (at your option) any later version.            
 
28014
//                                                                
 
28015
// This program is distributed in the hope that it will be useful,
 
28016
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
28017
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
28018
// GNU General Public License for more details.                   
 
28019
//                                                                
 
28020
// You should have received a copy of the GNU General Public      
 
28021
// License along with this program; if not, write to the Free     
 
28022
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
28023
// MA  02111-1307  USA                                            
 
28024
 
 
28025
#ifndef __CClassInfo_h__
 
28026
#define __CClassInfo_h__
 
28027
 
 
28028
/** \file 
 
28029
 *  Semantic information about a class. */
 
28030
 
 
28031
 
 
28032
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecord.h"
 
28033
// This file is part of PUMA.
 
28034
// Copyright (C) 1999-2003  The PUMA developer team.
 
28035
//                                                                
 
28036
// This program is free software;  you can redistribute it and/or 
 
28037
// modify it under the terms of the GNU General Public License as 
 
28038
// published by the Free Software Foundation; either version 2 of 
 
28039
// the License, or (at your option) any later version.            
 
28040
//                                                                
 
28041
// This program is distributed in the hope that it will be useful,
 
28042
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
28043
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
28044
// GNU General Public License for more details.                   
 
28045
//                                                                
 
28046
// You should have received a copy of the GNU General Public      
 
28047
// License along with this program; if not, write to the Free     
 
28048
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
28049
// MA  02111-1307  USA                                            
 
28050
 
 
28051
#ifndef __CRecord_h__
 
28052
#define __CRecord_h__
 
28053
 
 
28054
/** \file 
 
28055
 *  Semantic information about a class or union. */
 
28056
 
 
28057
 
 
28058
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
28059
// This file is part of PUMA.
 
28060
// Copyright (C) 1999-2003  The PUMA developer team.
 
28061
//                                                                
 
28062
// This program is free software;  you can redistribute it and/or 
 
28063
// modify it under the terms of the GNU General Public License as 
 
28064
// published by the Free Software Foundation; either version 2 of 
 
28065
// the License, or (at your option) any later version.            
 
28066
//                                                                
 
28067
// This program is distributed in the hope that it will be useful,
 
28068
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
28069
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
28070
// GNU General Public License for more details.                   
 
28071
//                                                                
 
28072
// You should have received a copy of the GNU General Public      
 
28073
// License along with this program; if not, write to the Free     
 
28074
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
28075
// MA  02111-1307  USA                                            
 
28076
 
 
28077
#ifndef __CStructure_h__
 
28078
#define __CStructure_h__
 
28079
 
 
28080
/** \file
 
28081
 *  Semantic information about entities that can contain other entity declarations. */
 
28082
 
 
28083
 
 
28084
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
28085
#ifndef __puma
 
28086
 
 
28087
#include <map>
 
28088
#include <set>
 
28089
#include <list>
 
28090
#include <string>
 
28091
#include "Puma/DString.h"
 
28092
using namespace std;
 
28093
 
 
28094
#endif
 
28095
 
 
28096
namespace Puma {
 
28097
 
 
28098
 
 
28099
class CAttributeInfo;
 
28100
class CTemplateParamInfo;
 
28101
class CFunctionInfo;
 
28102
class CClassInfo;
 
28103
class CUnionInfo;
 
28104
class CEnumInfo;
 
28105
class CTypedefInfo;
 
28106
class CNamespaceInfo;
 
28107
class CUsingInfo;
 
28108
class CMemberAliasInfo;
 
28109
 
 
28110
 
 
28111
/** \class CStructure CStructure.h Puma/CStructure.h
 
28112
 *  Base class of all semantic information classes for
 
28113
 *  entities that can contain other entity declarations
 
28114
 *  (like classes, namespaces, functions). */
 
28115
 
 
28116
#line 28117 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
28117
} // closed Puma
 
28118
class CCExprResolve;
 
28119
class CExprResolve;
 
28120
class WinIfExists;
 
28121
class WinImportHandler;
 
28122
class WinMacros;
 
28123
class WinAsm;
 
28124
class WinDeclSpecs;
 
28125
class WinMemberExplSpec;
 
28126
class WinTypeKeywords;
 
28127
class WinFriend;
 
28128
class ExtAC;
 
28129
class ExtACBuilderCoupling;
 
28130
class ExtACSyntaxCoupling;
 
28131
class ExtACTree;
 
28132
class ExtACKeywords;
 
28133
class ExtGnu;
 
28134
class PragmaOnceUnitState;
 
28135
class PragmaOnce;
 
28136
class CMatchSyntax;
 
28137
namespace Puma {
 
28138
 
 
28139
#line 58 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
28140
class CStructure : public CScopeInfo {
 
28141
#line 28142 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
28142
  friend class ::CCExprResolve;
 
28143
  friend class ::CExprResolve;
 
28144
  friend class ::WinIfExists;
 
28145
  friend class ::WinImportHandler;
 
28146
  friend class ::WinMacros;
 
28147
  friend class ::WinAsm;
 
28148
  friend class ::WinDeclSpecs;
 
28149
  friend class ::WinMemberExplSpec;
 
28150
  friend class ::WinTypeKeywords;
 
28151
  friend class ::WinFriend;
 
28152
  friend class ::ExtAC;
 
28153
  friend class ::ExtACBuilderCoupling;
 
28154
  friend class ::ExtACSyntaxCoupling;
 
28155
  friend class ::ExtACTree;
 
28156
  friend class ::ExtACKeywords;
 
28157
  friend class ::ExtGnu;
 
28158
  friend class ::PragmaOnceUnitState;
 
28159
  friend class ::PragmaOnce;
 
28160
  friend class ::CMatchSyntax;
 
28161
 
 
28162
#line 58 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
28163
 
 
28164
public:
 
28165
#ifndef __puma
 
28166
  /** List type for semantic objects. */
 
28167
  typedef list<CObjectInfo*> ObjectInfoList;
 
28168
  /** Map type for entity name to semantic object mapping. */
 
28169
  typedef map<DString,ObjectInfoList> ObjectsByName;
 
28170
  /** Set type for semantic objects. */
 
28171
  typedef set<CObjectInfo*> ObjectInfoSet;
 
28172
#endif 
 
28173
 
 
28174
private:
 
28175
  CStructure                *_Shared;
 
28176
  Array<CObjectInfo*>        _Objects; // ALL objects (mixed, in the order added to)
 
28177
  Array<CAttributeInfo*>     _Attributes;
 
28178
  Array<CTemplateParamInfo*> _TemplateParams;
 
28179
  Array<CFunctionInfo*>      _Functions;
 
28180
  Array<CObjectInfo*>        _Types;
 
28181
  Array<CUsingInfo*>         _Usings;     
 
28182
  Array<CRecord*>            _Friends;
 
28183
  Array<CNamespaceInfo*>     _Namespaces;     
 
28184
  Array<CMemberAliasInfo*>   _Aliases;     
 
28185
#ifndef __puma
 
28186
  ObjectsByName              _ObjectMap;
 
28187
  ObjectInfoSet              _ObjectSet;
 
28188
#endif
 
28189
 
 
28190
protected:
 
28191
  /** Constructor.
 
28192
   *  \param id The object type. */
 
28193
  CStructure (ObjectId id);
 
28194
 
 
28195
public:
 
28196
  /** Destructor. */
 
28197
  ~CStructure ();
 
28198
 
 
28199
#ifndef __puma
 
28200
  /** Get the entity name to semantic object map. */
 
28201
  ObjectsByName& ObjectInfoMap() { return _Shared->_ObjectMap; }
 
28202
  /** Get the entity name to semantic object map. */
 
28203
  const ObjectInfoSet& ObjectInfos() const { return _Shared->_ObjectSet; }
 
28204
#endif 
 
28205
 
 
28206
  /** Get the number of contained semantic objects. */
 
28207
  unsigned Objects () const;
 
28208
  /** Get the number of contained semantic objects for
 
28209
   *  entities with the given name. 
 
28210
   *  \param name The name of the entity. */
 
28211
  unsigned Objects (const DString& name) const;
 
28212
  /** Get the number of contained semantic objects for
 
28213
   *  type declarations. */
 
28214
  unsigned Types () const;
 
28215
  /** Get the number of contained semantic objects for
 
28216
   *  declarations of types with the given name. 
 
28217
   *  \param name The name of the type. */
 
28218
  unsigned Types (const DString& name) const;
 
28219
  /** Get the number of contained semantic objects for
 
28220
   *  object declarations. */
 
28221
  unsigned Attributes () const;
 
28222
  /** Get the number of contained semantic objects for
 
28223
   *  declarations of objects with the given name. 
 
28224
   *  \param name The name of the object. */
 
28225
  unsigned Attributes (const DString& name) const;
 
28226
  /** Get the number of contained semantic objects for
 
28227
   *  template parameter declarations. */
 
28228
  unsigned TemplateParams () const;
 
28229
  /** Get the number of contained semantic objects for
 
28230
   *  declarations of template parameters with the given name. 
 
28231
   *  \param name The name of the template parameter. */
 
28232
  unsigned TemplateParams (const DString& name) const;
 
28233
  /** Get the number of contained semantic objects for
 
28234
   *  function declarations. */
 
28235
  unsigned Functions () const;
 
28236
  /** Get the number of contained semantic objects for
 
28237
   *  declarations of functions with the given name. 
 
28238
   *  \param name The name of the function. */
 
28239
  unsigned Functions (const DString& name) const;
 
28240
  /** Get the number of contained semantic objects for
 
28241
   *  used members. */
 
28242
  unsigned Usings () const;
 
28243
  /** Get the number of contained semantic objects for
 
28244
   *  used members with the given name. 
 
28245
   *  \param name The name of the member. */
 
28246
  unsigned Usings (const DString& name) const;
 
28247
  /** Get the number of contained semantic objects for
 
28248
   *  namespace declarations. */
 
28249
  unsigned Namespaces () const;
 
28250
  /** Get the number of contained semantic objects for
 
28251
   *  declarations of namespaces with the given name. 
 
28252
   *  \param name The name of the namespace. */
 
28253
  unsigned Namespaces (const DString& name) const;
 
28254
  /** Get the number of contained semantic objects for
 
28255
   *  friend declarations. */
 
28256
  unsigned Friends () const;
 
28257
  /** Get the number of contained semantic objects for
 
28258
   *  declarations of friends with the given name. 
 
28259
   *  \param name The name of the friend. */
 
28260
  unsigned Friends (const DString& name) const;
 
28261
 
 
28262
  /** Get the n-th contained semantic object. 
 
28263
   *  \param n The index of the semantic object. */
 
28264
  CObjectInfo *Object (unsigned n) const;
 
28265
  /** Get the n-th contained semantic object for
 
28266
   *  entities with the given name. 
 
28267
   *  \param name The name of the entity.
 
28268
   *  \param n Optional index of the semantic object (defaults to 0). */
 
28269
  CObjectInfo *Object (const DString& name, unsigned n = 0) const;
 
28270
  /** Get the n-th contained semantic object for a type. 
 
28271
   *  \param n The index of the semantic object. */
 
28272
  CObjectInfo *Type (unsigned n) const;
 
28273
  /** Get the n-th contained semantic object for
 
28274
   *  types with the given name. 
 
28275
   *  \param name The name of the type.
 
28276
   *  \param n Optional index of the semantic object (defaults to 0). */
 
28277
  CObjectInfo *Type (const DString& name, unsigned n = 0) const;
 
28278
  /** Get the n-th contained semantic object for a using-directive.
 
28279
   *  \param n The index of the semantic object. */
 
28280
  CUsingInfo *Using (unsigned n) const;
 
28281
  /** Get the n-th contained semantic object for
 
28282
   *  used members with the given name. 
 
28283
   *  \param name The name of the member.
 
28284
   *  \param n Optional index of the semantic object (defaults to 0). */
 
28285
  CUsingInfo *Using (const DString& name, unsigned n = 0) const;
 
28286
  /** Get the n-th contained semantic object for a namespace. 
 
28287
   *  \param n The index of the semantic object. */
 
28288
  CNamespaceInfo *Namespace (unsigned n) const;
 
28289
  /** Get the n-th contained semantic object for
 
28290
   *  namespaces with the given name. 
 
28291
   *  \param name The name of the namespace.
 
28292
   *  \param n Optional index of the semantic object (defaults to 0). */
 
28293
  CNamespaceInfo *Namespace (const DString& name, unsigned n = 0) const;
 
28294
  /** Get the n-th contained semantic object for a friend. 
 
28295
   *  \param n The index of the semantic object. */
 
28296
  CRecord *Friend (unsigned n) const;
 
28297
  /** Get the n-th contained semantic object for
 
28298
   *  friends with the given name. 
 
28299
   *  \param name The name of the friend.
 
28300
   *  \param n Optional index of the semantic object (defaults to 0). */
 
28301
  CRecord *Friend (const DString& name, unsigned n = 0) const;
 
28302
  /** Get the n-th contained semantic object for an object. 
 
28303
   *  \param n The index of the semantic object. */
 
28304
  CAttributeInfo *Attribute (unsigned n) const;
 
28305
  /** Get the n-th contained semantic object for
 
28306
   *  objects with the given name. 
 
28307
   *  \param name The name of the object.
 
28308
   *  \param n Optional index of the semantic object (defaults to 0). */
 
28309
  CAttributeInfo *Attribute (const DString& name, unsigned n = 0) const;
 
28310
  /** Get the n-th contained semantic object for a template parameter. 
 
28311
   *  \param n The index of the semantic object. */
 
28312
  CTemplateParamInfo *TemplateParam (unsigned n) const;
 
28313
  /** Get the n-th contained semantic object for
 
28314
   *  template parameters with the given name. 
 
28315
   *  \param name The name of the template parameter.
 
28316
   *  \param n Optional index of the semantic object (defaults to 0). */
 
28317
  CTemplateParamInfo *TemplateParam (const DString& name, unsigned n = 0) const;
 
28318
  /** Get the n-th contained semantic object for a function. 
 
28319
   *  \param n The index of the semantic object. */
 
28320
  CFunctionInfo *Function (unsigned n) const;
 
28321
  /** Get the n-th contained semantic object for
 
28322
   *  functions with the given name. 
 
28323
   *  \param name The name of the function.
 
28324
   *  \param n Optional index of the semantic object (defaults to 0). */
 
28325
  CFunctionInfo *Function (const DString& name, unsigned n = 0) const;
 
28326
  /** Get the contained semantic object for functions with the 
 
28327
   *  given name and type. 
 
28328
   *  \param name The name of the function.
 
28329
   *  \param type The type of the function. */
 
28330
  CFunctionInfo *Function (const DString& name, CTypeInfo *type) const;
 
28331
 
 
28332
  /** Check if an alias exists for the given entity in this scope.
 
28333
   *  \param info The semantic object of the entity. */
 
28334
  bool isMemberAlias (const CObjectInfo *info) const;
 
28335
  /** Get the member alias information for the aliased entity.
 
28336
   *  \param info The semantic object of the entity. */
 
28337
  CMemberAliasInfo *MemberAlias (const CObjectInfo *info) const;
 
28338
 
 
28339
  /** Set a common data object for the linked semantic objects.
 
28340
   *  \param share The common data object. */
 
28341
  void setShared (CStructure *share);
 
28342
  
 
28343
  /** Add a semantic object. 
 
28344
   *  \param info The semantic object. */
 
28345
  void addObject (CObjectInfo *info);
 
28346
  /** Add a semantic object for an object.
 
28347
   *  \param info The semantic object. */
 
28348
  void addAttribute (CAttributeInfo *info);
 
28349
  /** Add a semantic object for a template parameter.
 
28350
   *  \param info The semantic object. */
 
28351
  void addTemplateParam (CTemplateParamInfo *info);
 
28352
  /** Add a semantic object for a function.
 
28353
   *  \param info The semantic object. */
 
28354
  void addFunction (CFunctionInfo *info);
 
28355
  /** Add a semantic object for a type.
 
28356
   *  \param info The semantic object. */
 
28357
  void addType (CObjectInfo *info);
 
28358
  /** Add a semantic object for a using-directive.
 
28359
   *  \param info The semantic object. */
 
28360
  void addUsing (CUsingInfo *info);
 
28361
  /** Add a semantic object for a namespace.
 
28362
   *  \param info The semantic object. */
 
28363
  void addNamespace (CNamespaceInfo *info);
 
28364
  /** Add a semantic object for a friend.
 
28365
   *  \param info The semantic object. */
 
28366
  void addFriend (CRecord *info);
 
28367
  
 
28368
  /** Remove the semantic object.
 
28369
   *  \param info The semantic object. */
 
28370
  void removeObject (const CObjectInfo *info);
 
28371
  /** Remove the semantic object for an object.
 
28372
   *  \param info The semantic object. */
 
28373
  void removeAttribute (const CAttributeInfo *info);
 
28374
  /** Remove the semantic object for a template parameter.
 
28375
   *  \param info The semantic object. */
 
28376
  void removeTemplateParam (const CTemplateParamInfo *info);
 
28377
  /** Remove the semantic object for a function.
 
28378
   *  \param info The semantic object. */
 
28379
  void removeFunction (const CFunctionInfo *info);
 
28380
  /** Remove the semantic object for a type.
 
28381
   *  \param info The semantic object. */
 
28382
  void removeType (const CObjectInfo *info);
 
28383
  /** Remove the semantic object for a using-directive.
 
28384
   *  \param info The semantic object. */
 
28385
  void removeUsing (const CUsingInfo *info);
 
28386
  /** Remove the semantic object for a namespace.
 
28387
   *  \param info The semantic object. */
 
28388
  void removeNamespace (const CNamespaceInfo *info);
 
28389
  /** Remove the semantic object for a friend.
 
28390
   *  \param info The semantic object. */
 
28391
  void removeFriend (const CRecord *info);
 
28392
  /** Remove the semantic object for a member alias.
 
28393
   *  \param info The semantic object. */
 
28394
  void removeMemberAlias (const CMemberAliasInfo *info);
 
28395
 
 
28396
  /** Unregister this semantic object at all contained
 
28397
   *  semantic objects. */
 
28398
  void removeRegisterEntry ();
 
28399
  
 
28400
  /** Add a semantic object to the name map. 
 
28401
   *  \warning For internal use only!
 
28402
   *  \param info The semantic object. */
 
28403
  void addObjectName(CObjectInfo* info);
 
28404
  /** Remove the given semantic object for the entity
 
28405
   *  with the given name from the name map. 
 
28406
   *  \warning For internal use only!
 
28407
   *  \param name The name of the entity. 
 
28408
   *  \param info The semantic object. */
 
28409
  void removeObjectName (const DString& name, CObjectInfo* info);
 
28410
 
 
28411
  /** Create a new semantic object for an object declaration. */
 
28412
  CAttributeInfo *newAttribute ();
 
28413
  /** Create a new semantic object for an enumeration. */
 
28414
  CEnumInfo *newEnum ();
 
28415
  /** Create a new semantic object for a using-directive. */
 
28416
  CUsingInfo *newUsing ();
 
28417
  /** Create a new semantic object for a typedef. */
 
28418
  CTypedefInfo *newTypedef ();
 
28419
  /** Create a new semantic object for a member alias. 
 
28420
   *  \param member The aliased member. */
 
28421
  CMemberAliasInfo *newMemberAlias (CObjectInfo *member);
 
28422
  
 
28423
  /** Remove and destroy the given semantic object for an object. 
 
28424
   *  \param info The semantic object. */
 
28425
  void deleteAttribute (const CAttributeInfo *info); 
 
28426
  /** Remove and destroy the given semantic object for an enumeration. 
 
28427
   *  \param info The semantic object. */
 
28428
  void deleteEnum (const CEnumInfo *info);
 
28429
  /** Remove and destroy the given semantic object for a using-directive. 
 
28430
   *  \param info The semantic object. */
 
28431
  void deleteUsing (const CUsingInfo *info);
 
28432
  /** Remove and destroy the given semantic object for a typedef. 
 
28433
   *  \param info The semantic object. */
 
28434
  void deleteTypedef (const CTypedefInfo *info);
 
28435
  /** Remove and destroy the given semantic object for a member alias. 
 
28436
   *  \param info The semantic object. */
 
28437
  void deleteMemberAlias (const CMemberAliasInfo *info);
 
28438
public:
 
28439
  typedef AC::TL<Puma::CStructure *,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CAttributeInfo * >,AC::TL<Puma::Array< Puma::CTemplateParamInfo * >,AC::TL<Puma::Array< Puma::CFunctionInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CUsingInfo * >,AC::TL<Puma::Array< Puma::CRecord * >,AC::TL<Puma::Array< Puma::CNamespaceInfo * >,AC::TL<Puma::Array< Puma::CMemberAliasInfo * >,AC::TLE > > > > > > > > > > __AttrTypes;
 
28440
  const char *__attr_name (unsigned i) const {
 
28441
    static const char *names[] = { "_Shared", "_Objects", "_Attributes", "_TemplateParams", "_Functions", "_Types", "_Usings", "_Friends", "_Namespaces", "_Aliases" }; return names[i];
 
28442
  }
 
28443
  const void *__attr (unsigned __i) const {
 
28444
    switch (__i) { case 0: return &_Shared; case 2: return &_Objects; case 4: return &_Attributes; case 6: return &_TemplateParams; case 8: return &_Functions; case 10: return &_Types; case 12: return &_Usings; case 14: return &_Friends; case 16: return &_Namespaces; case 18: return &_Aliases; default: return 0; }
 
28445
  }
 
28446
#line 333 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
28447
};
 
28448
 
 
28449
#define INIT_SIZE 20
 
28450
#define INCR_SIZE 20
 
28451
 
 
28452
inline CStructure::CStructure (CObjectInfo::ObjectId id) :
 
28453
  CScopeInfo (id),
 
28454
  _Shared (this),
 
28455
  _Objects (INIT_SIZE, INCR_SIZE),
 
28456
  _Attributes (INIT_SIZE, INCR_SIZE),
 
28457
  _TemplateParams (INIT_SIZE, INCR_SIZE),
 
28458
  _Functions (INIT_SIZE, INCR_SIZE),
 
28459
  _Types (INIT_SIZE, INCR_SIZE),
 
28460
  _Usings (INIT_SIZE, INCR_SIZE),
 
28461
  _Friends (INIT_SIZE, INCR_SIZE),
 
28462
  _Namespaces (INIT_SIZE, INCR_SIZE),
 
28463
  _Aliases (INIT_SIZE, INCR_SIZE)
 
28464
 {}
 
28465
 
 
28466
inline unsigned CStructure::Objects () const
 
28467
 { return _Objects.length (); }
 
28468
inline unsigned CStructure::Types () const
 
28469
 { return _Types.length (); }
 
28470
inline unsigned CStructure::Attributes () const
 
28471
 { return _Attributes.length (); }
 
28472
inline unsigned CStructure::TemplateParams () const
 
28473
 { return _TemplateParams.length (); }
 
28474
inline unsigned CStructure::Functions () const
 
28475
 { return _Functions.length (); }
 
28476
inline unsigned CStructure::Usings () const
 
28477
 { return _Usings.length (); }
 
28478
inline unsigned CStructure::Namespaces () const
 
28479
 { return _Namespaces.length (); }
 
28480
inline unsigned CStructure::Friends () const
 
28481
 { return _Friends.length (); }
 
28482
inline CObjectInfo *CStructure::Object (unsigned n) const
 
28483
 { return _Objects.lookup (n); }
 
28484
inline CObjectInfo *CStructure::Type (unsigned n) const
 
28485
 { return _Types.lookup (n); }
 
28486
inline CAttributeInfo *CStructure::Attribute (unsigned n) const
 
28487
 { return _Attributes.lookup (n); }
 
28488
inline CTemplateParamInfo *CStructure::TemplateParam (unsigned n) const
 
28489
 { return _TemplateParams.lookup (n); }
 
28490
inline CFunctionInfo *CStructure::Function (unsigned n) const
 
28491
 { return _Functions.lookup (n); }
 
28492
inline CUsingInfo *CStructure::Using (unsigned n) const
 
28493
 { return _Usings.lookup (n); }
 
28494
inline CNamespaceInfo *CStructure::Namespace (unsigned n) const
 
28495
 { return _Namespaces.lookup (n); }
 
28496
inline CRecord *CStructure::Friend (unsigned n) const
 
28497
 { return _Friends.lookup (n); }
 
28498
 
 
28499
inline bool CStructure::isMemberAlias (const CObjectInfo *info) const
 
28500
 { return (MemberAlias (info)); }
 
28501
 
 
28502
 
 
28503
} // namespace Puma
 
28504
 
 
28505
#endif /* __CStructure_h__ */
 
28506
 
 
28507
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecord.h"
 
28508
namespace Puma {
 
28509
 
 
28510
 
 
28511
class CTemplateInfo;
 
28512
 
 
28513
 
 
28514
/** \class CRecord CRecord.h Puma/CRecord.h
 
28515
 *  Semantic information about a class or union. */
 
28516
 
 
28517
#line 28518 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
28518
} // closed Puma
 
28519
class CCExprResolve;
 
28520
class CExprResolve;
 
28521
class WinIfExists;
 
28522
class WinImportHandler;
 
28523
class WinMacros;
 
28524
class WinAsm;
 
28525
class WinDeclSpecs;
 
28526
class WinMemberExplSpec;
 
28527
class WinTypeKeywords;
 
28528
class WinFriend;
 
28529
class ExtAC;
 
28530
class ExtACBuilderCoupling;
 
28531
class ExtACSyntaxCoupling;
 
28532
class ExtACTree;
 
28533
class ExtACKeywords;
 
28534
class ExtGnu;
 
28535
class PragmaOnceUnitState;
 
28536
class PragmaOnce;
 
28537
class CMatchSyntax;
 
28538
namespace Puma {
 
28539
 
 
28540
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecord.h"
 
28541
class CRecord : public CStructure {
 
28542
#line 28543 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
28543
  friend class ::CCExprResolve;
 
28544
  friend class ::CExprResolve;
 
28545
  friend class ::WinIfExists;
 
28546
  friend class ::WinImportHandler;
 
28547
  friend class ::WinMacros;
 
28548
  friend class ::WinAsm;
 
28549
  friend class ::WinDeclSpecs;
 
28550
  friend class ::WinMemberExplSpec;
 
28551
  friend class ::WinTypeKeywords;
 
28552
  friend class ::WinFriend;
 
28553
  friend class ::ExtAC;
 
28554
  friend class ::ExtACBuilderCoupling;
 
28555
  friend class ::ExtACSyntaxCoupling;
 
28556
  friend class ::ExtACTree;
 
28557
  friend class ::ExtACKeywords;
 
28558
  friend class ::ExtGnu;
 
28559
  friend class ::PragmaOnceUnitState;
 
28560
  friend class ::PragmaOnce;
 
28561
  friend class ::CMatchSyntax;
 
28562
 
 
28563
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecord.h"
 
28564
 
 
28565
  CTemplateInfo *_TemplateInfo;
 
28566
  bool _isTemplate;
 
28567
  bool _hiddenFwdDecl;
 
28568
 
 
28569
protected:
 
28570
  /** Constructor.
 
28571
   *  \param id The object type. */
 
28572
  CRecord (ObjectId id);
 
28573
 
 
28574
public:
 
28575
  /** Destructor. */
 
28576
  ~CRecord ();
 
28577
 
 
28578
  /** Get the template information if this is a class or union template.
 
28579
   *  \return The template information or NULL if not a template. */
 
28580
  CTemplateInfo *TemplateInfo () const;
 
28581
  /** Set the template information of a class/union template.
 
28582
   *  \param info The template information. */
 
28583
  void TemplateInfo (CTemplateInfo *info);
 
28584
 
 
28585
  /** Set the qualification scope of a nested class or union 
 
28586
   *  or class/union declared in a namespace.
 
28587
   *  \param scope The qualification scope. */
 
28588
  void QualifiedScope (CStructure *scope);
 
28589
 
 
28590
  /** Check if the class/union is complete (defined)
 
28591
   *  at the given source code position. The position
 
28592
   *  is specified by the unique number of the CT_Token
 
28593
   *  tree node representing the name of the class/union.
 
28594
   *  \param pos The source code position. */
 
28595
  bool isComplete (unsigned long pos = 0) const;
 
28596
  /** Check if the class/union is defined. */
 
28597
  bool isDefined () const;
 
28598
  /** Check if the class/union is a template. */
 
28599
  bool isTemplate () const;
 
28600
  /** Check if this is a class/union forward declaration
 
28601
   *  hidden by another declaration in the same scope. */
 
28602
  bool isHiddenForwardDecl () const;
 
28603
 
 
28604
  /** Set whether this class/union is a template.
 
28605
   *  \param v \e true if it is a template. */
 
28606
  void isTemplate (bool v);
 
28607
  /** Set whether this is a class/union forward declaration
 
28608
   *  hidden by another declaration in the same scope. 
 
28609
   *  \param v \e true if it is a hidden forward declaration. */
 
28610
  void isHiddenForwardDecl (bool v);
 
28611
public:
 
28612
  typedef AC::TL<Puma::CTemplateInfo *,AC::TL<bool,AC::TL<bool,AC::TLE > > > __AttrTypes;
 
28613
  const char *__attr_name (unsigned i) const {
 
28614
    static const char *names[] = { "_TemplateInfo", "_isTemplate", "_hiddenFwdDecl" }; return names[i];
 
28615
  }
 
28616
  const void *__attr (unsigned __i) const {
 
28617
    switch (__i) { case 0: return &_TemplateInfo; case 1: return &_isTemplate; case 2: return &_hiddenFwdDecl; default: return 0; }
 
28618
  }
 
28619
#line 82 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecord.h"
 
28620
};
 
28621
 
 
28622
inline CRecord::CRecord (CObjectInfo::ObjectId id) :
 
28623
  CStructure (id),
 
28624
  _TemplateInfo ((CTemplateInfo*)0),
 
28625
  _isTemplate (false),
 
28626
  _hiddenFwdDecl (false)
 
28627
 {}
 
28628
 
 
28629
inline bool CRecord::isTemplate () const 
 
28630
 { return _isTemplate; }
 
28631
inline void CRecord::isTemplate (bool v)
 
28632
 { _isTemplate = v; }
 
28633
 
 
28634
inline bool CRecord::isHiddenForwardDecl () const 
 
28635
 { return _hiddenFwdDecl; }
 
28636
inline void CRecord::isHiddenForwardDecl (bool v)
 
28637
 { _hiddenFwdDecl = v; }
 
28638
  
 
28639
inline CTemplateInfo *CRecord::TemplateInfo () const
 
28640
 { return _TemplateInfo; }
 
28641
inline void CRecord::TemplateInfo (CTemplateInfo *info) 
 
28642
 { _TemplateInfo = info; }
 
28643
 
 
28644
inline void CRecord::QualifiedScope (CStructure *s)
 
28645
 { _QualScope = s; }
 
28646
 
 
28647
//inline unsigned CRecord::Referers () const
 
28648
// { return _Referer.length (); }
 
28649
//inline unsigned CRecord::Usages () const
 
28650
// { return _Used.length (); }
 
28651
//inline unsigned CRecord::Transferers () const
 
28652
// { return _Transferer.length (); }
 
28653
//inline unsigned CRecord::Transfers () const
 
28654
// { return _Transfered.length (); }
 
28655
//inline CObjectInfo *CRecord::Referer (unsigned n) const
 
28656
// { return _Referer.lookup (n); }
 
28657
//inline CObjectInfo *CRecord::Usage (unsigned n) const
 
28658
// { return _Used.lookup (n); }
 
28659
//inline CFunctionInfo *CRecord::Transferer (unsigned n) const
 
28660
// { return _Transferer.lookup (n); }
 
28661
//inline CObjectInfo *CRecord::Transfer (unsigned n) const
 
28662
// { return _Transfered.lookup (n); }
 
28663
 
 
28664
 
 
28665
} // namespace Puma
 
28666
 
 
28667
#endif /* __CRecord_h__ */
 
28668
 
 
28669
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CBaseClassInfo.h"
 
28670
// This file is part of PUMA.
 
28671
// Copyright (C) 1999-2003  The PUMA developer team.
 
28672
//                                                                
 
28673
// This program is free software;  you can redistribute it and/or 
 
28674
// modify it under the terms of the GNU General Public License as 
 
28675
// published by the Free Software Foundation; either version 2 of 
 
28676
// the License, or (at your option) any later version.            
 
28677
//                                                                
 
28678
// This program is distributed in the hope that it will be useful,
 
28679
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
28680
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
28681
// GNU General Public License for more details.                   
 
28682
//                                                                
 
28683
// You should have received a copy of the GNU General Public      
 
28684
// License along with this program; if not, write to the Free     
 
28685
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
28686
// MA  02111-1307  USA                                            
 
28687
 
 
28688
#ifndef __CBaseClassInfo_h__
 
28689
#define __CBaseClassInfo_h__
 
28690
 
 
28691
/** \file 
 
28692
 *  Semantic information about a base class of a class. */
 
28693
 
 
28694
 
 
28695
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CBaseClassInfo.h"
 
28696
namespace Puma {
 
28697
 
 
28698
class CClassInfo;
 
28699
class CT_BaseSpec;
 
28700
 
 
28701
/** \class CBaseClassInfo CBaseClassInfo.h Puma/CBaseClassInfo.h
 
28702
 *  Semantic information about a base class of a class. The base
 
28703
 *  class is specified by a base class specifier in the base class
 
28704
 *  list of a class definition. It can have several qualifiers 
 
28705
 *  like \e virtual, \e public, and so on. */
 
28706
 
 
28707
#line 28708 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
28708
} // closed Puma
 
28709
class CCExprResolve;
 
28710
class CExprResolve;
 
28711
class WinIfExists;
 
28712
class WinImportHandler;
 
28713
class WinMacros;
 
28714
class WinAsm;
 
28715
class WinDeclSpecs;
 
28716
class WinMemberExplSpec;
 
28717
class WinTypeKeywords;
 
28718
class WinFriend;
 
28719
class ExtAC;
 
28720
class ExtACBuilderCoupling;
 
28721
class ExtACSyntaxCoupling;
 
28722
class ExtACTree;
 
28723
class ExtACKeywords;
 
28724
class ExtGnu;
 
28725
class PragmaOnceUnitState;
 
28726
class PragmaOnce;
 
28727
class CMatchSyntax;
 
28728
namespace Puma {
 
28729
 
 
28730
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CBaseClassInfo.h"
 
28731
class CBaseClassInfo : public CScopeRequest {
 
28732
#line 28733 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
28733
  friend class ::CCExprResolve;
 
28734
  friend class ::CExprResolve;
 
28735
  friend class ::WinIfExists;
 
28736
  friend class ::WinImportHandler;
 
28737
  friend class ::WinMacros;
 
28738
  friend class ::WinAsm;
 
28739
  friend class ::WinDeclSpecs;
 
28740
  friend class ::WinMemberExplSpec;
 
28741
  friend class ::WinTypeKeywords;
 
28742
  friend class ::WinFriend;
 
28743
  friend class ::ExtAC;
 
28744
  friend class ::ExtACBuilderCoupling;
 
28745
  friend class ::ExtACSyntaxCoupling;
 
28746
  friend class ::ExtACTree;
 
28747
  friend class ::ExtACKeywords;
 
28748
  friend class ::ExtGnu;
 
28749
  friend class ::PragmaOnceUnitState;
 
28750
  friend class ::PragmaOnce;
 
28751
  friend class ::CMatchSyntax;
 
28752
 
 
28753
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CBaseClassInfo.h"
 
28754
 
 
28755
  /** The semantic object of the base class. */
 
28756
  CClassInfo        *_Class;
 
28757
  /** The semantic object of the pseudo instance 
 
28758
   *  if the base class is a pseudo instance. */
 
28759
  CClassInfo        *_ClassPseudoInstance;
 
28760
  
 
28761
public: 
 
28762
  /** Constructor. */
 
28763
  CBaseClassInfo ();
 
28764
  /** Destructor. If the object type is CObjectInfo::BASECLASS_INFO, 
 
28765
   *  then CObjectInfo::CleanUp() is called. */
 
28766
  ~CBaseClassInfo ();
 
28767
  
 
28768
  /** Get the semantic information for the base class. */
 
28769
  CClassInfo *Class () const;
 
28770
  /** Get the semantic information for the template pseudo instance 
 
28771
   *  if the base class is a template pseudo instance. */
 
28772
  CClassInfo *ClassPseudoInstance () const;
 
28773
  /** Set the semantic information for the base class. */
 
28774
  void Class (CClassInfo *);
 
28775
 
 
28776
  /** Get the syntax tree node representing the base class specifier. */
 
28777
  CT_BaseSpec *Tree () const;
 
28778
public:
 
28779
  typedef AC::TL<Puma::CClassInfo *,AC::TL<Puma::CClassInfo *,AC::TLE > > __AttrTypes;
 
28780
  const char *__attr_name (unsigned i) const {
 
28781
    static const char *names[] = { "_Class", "_ClassPseudoInstance" }; return names[i];
 
28782
  }
 
28783
  const void *__attr (unsigned __i) const {
 
28784
    switch (__i) { case 0: return &_Class; case 1: return &_ClassPseudoInstance; default: return 0; }
 
28785
  }
 
28786
#line 62 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CBaseClassInfo.h"
 
28787
};
 
28788
 
 
28789
inline CBaseClassInfo::CBaseClassInfo () :
 
28790
  CScopeRequest (CObjectInfo::BASECLASS_INFO),
 
28791
  _Class ((CClassInfo*)0)
 
28792
 {}
 
28793
 
 
28794
 
 
28795
inline CClassInfo *CBaseClassInfo::Class () const {
 
28796
  return _Class;
 
28797
}
 
28798
 
 
28799
inline CClassInfo *CBaseClassInfo::ClassPseudoInstance () const {
 
28800
  return _ClassPseudoInstance;
 
28801
}
 
28802
 
 
28803
} // namespace Puma
 
28804
 
 
28805
#endif /* __CBaseClassInfo_h__ */
 
28806
 
 
28807
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CClassInfo.h"
 
28808
namespace Puma {
 
28809
 
 
28810
/** \class CClassInfo CClassInfo.h Puma/CClassInfo.h
 
28811
 *  Semantic information about a class. Note that 'struct's
 
28812
 *  are ordinary classes where the member access type 
 
28813
 *  defaults to \e public. Note also that a 'union', 
 
28814
 *  although syntactically very similar, is not a class 
 
28815
 *  and thus not represented by CClassInfo. */
 
28816
 
 
28817
#line 28818 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
28818
} // closed Puma
 
28819
class CCExprResolve;
 
28820
class CExprResolve;
 
28821
class WinIfExists;
 
28822
class WinImportHandler;
 
28823
class WinMacros;
 
28824
class WinAsm;
 
28825
class WinDeclSpecs;
 
28826
class WinMemberExplSpec;
 
28827
class WinTypeKeywords;
 
28828
class WinFriend;
 
28829
class ExtAC;
 
28830
class ExtACBuilderCoupling;
 
28831
class ExtACSyntaxCoupling;
 
28832
class ExtACTree;
 
28833
class ExtACKeywords;
 
28834
class ExtGnu;
 
28835
class PragmaOnceUnitState;
 
28836
class PragmaOnce;
 
28837
class CMatchSyntax;
 
28838
namespace Puma {
 
28839
 
 
28840
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CClassInfo.h"
 
28841
class CClassInfo : public CRecord {
 
28842
#line 28843 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
28843
  friend class ::CCExprResolve;
 
28844
  friend class ::CExprResolve;
 
28845
  friend class ::WinIfExists;
 
28846
  friend class ::WinImportHandler;
 
28847
  friend class ::WinMacros;
 
28848
  friend class ::WinAsm;
 
28849
  friend class ::WinDeclSpecs;
 
28850
  friend class ::WinMemberExplSpec;
 
28851
  friend class ::WinTypeKeywords;
 
28852
  friend class ::WinFriend;
 
28853
  friend class ::ExtAC;
 
28854
  friend class ::ExtACBuilderCoupling;
 
28855
  friend class ::ExtACSyntaxCoupling;
 
28856
  friend class ::ExtACTree;
 
28857
  friend class ::ExtACKeywords;
 
28858
  friend class ::ExtGnu;
 
28859
  friend class ::PragmaOnceUnitState;
 
28860
  friend class ::PragmaOnce;
 
28861
  friend class ::CMatchSyntax;
 
28862
 
 
28863
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CClassInfo.h"
 
28864
 
 
28865
  Array<CBaseClassInfo*> _BaseClasses;
 
28866
  Array<CClassInfo*> _Derived;
 
28867
  // true if class has dependent base classes
 
28868
  bool _DepBaseClass;
 
28869
 
 
28870
protected:
 
28871
  /** Constructor.
 
28872
   *  \param id The object type. */
 
28873
  CClassInfo (ObjectId id);
 
28874
 
 
28875
public: 
 
28876
  /** Constructor. */
 
28877
  CClassInfo ();
 
28878
  /** Destructor. If the object type is CObjectInfo::CLASS_INFO, 
 
28879
   *  then CObjectInfo::CleanUp() is called. */
 
28880
  ~CClassInfo ();
 
28881
 
 
28882
  /** Get the semantic object of the class definition. 
 
28883
   *  \see CObjectInfo::DefObject() */
 
28884
  CClassInfo *DefObject () const;
 
28885
  /** Get the type information for the class. */
 
28886
  CTypeClass *TypeInfo () const;
 
28887
 
 
28888
  /** Get the number of the base classes of the class. */
 
28889
  unsigned BaseClasses () const;
 
28890
  /** Get the number of classes derived from the class. */
 
28891
  unsigned DerivedClasses() const;
 
28892
  /** Get the n-th base class. 
 
28893
   *  \param n The index of the base class. 
 
28894
   *  \return The base class or if \e n is not valid. */
 
28895
  CBaseClassInfo *BaseClass (unsigned n) const;
 
28896
  /** Get the base class with the given name. 
 
28897
   *  \param name The name of the base class.
 
28898
   *  \return The base class or NULL if there is no base 
 
28899
   *          class with the given name. */
 
28900
  CBaseClassInfo *BaseClass (const char *name) const;
 
28901
  /** Get the n-th derived class. 
 
28902
   *  \param n The index of the derived class. 
 
28903
   *  \return The derived class or NULL if \e n is not valid. */
 
28904
  CClassInfo *DerivedClass (unsigned n) const;
 
28905
  /** Get the derived class with the given name. 
 
28906
   *  \param name The name of the derived class.
 
28907
   *  \return The derived class or NULL if there is no derived
 
28908
   *          class with the given name. */
 
28909
  CClassInfo *DerivedClass (const char *name) const;
 
28910
  
 
28911
  /** Check if the given class is a base class of this class.
 
28912
   *  \param base The base class.
 
28913
   *  \param recursive If \e false then only the direct base classes
 
28914
   *                   are considered. */
 
28915
  bool isBaseClass (const CClassInfo *base, bool recursive = false) const;
 
28916
  /** Check if the given class is derived from this class.
 
28917
   *  \param dc The derived class.
 
28918
   *  \param recursive If \e false then only the directly derived classes
 
28919
   *                   are considered. */
 
28920
  bool isDerivedClass (const CClassInfo *dc, bool recursive = false) const;
 
28921
  /** Set that this class has a base class that depends on template 
 
28922
   *  parameters. 
 
28923
   *  \param depends \e true if there is a dependent base class. */
 
28924
  void hasDepBaseClass (bool depends);
 
28925
  /** Check if this class has a base class that depends on 
 
28926
   *  template parameters. */
 
28927
  bool hasDepBaseClass () const;
 
28928
 
 
28929
  /** Add a base class to this class.
 
28930
   *  \param bc The base class. */
 
28931
  void addBaseClass (CBaseClassInfo *bc);
 
28932
  /** Add a derived class to this class.
 
28933
   *  \param dc The derived class. */
 
28934
  void addDerivedClass (CClassInfo *dc);
 
28935
  /** Remove the given base class from this class.
 
28936
   *  \param bc The base class. */
 
28937
  void removeBaseClass (const CBaseClassInfo *bc);
 
28938
  /** Remove the given base class from this class.
 
28939
   *  \param bc The base class. */
 
28940
  void removeBaseClass (const CClassInfo *bc);
 
28941
  /** Remove the given derived class from this class.
 
28942
   *  \param dc The derived class. */
 
28943
  void removeDerivedClass (const CClassInfo *dc);
 
28944
 
 
28945
  /** Create a new base class semantic object.
 
28946
   *  \param bc The semantic information about the of the base class
 
28947
   *            or NULL to create an empty base class semantic object. */
 
28948
  CBaseClassInfo *newBaseClass (CClassInfo *bc = 0);
 
28949
 
 
28950
  /** Check if the class is declared using keyword 'struct'. */
 
28951
  bool isStruct () const;
 
28952
  
 
28953
  /** Get the accessibility of a particular member or base class member.
 
28954
   *  \param oi The semantic object for the member. */
 
28955
  CProtection::Type Accessibility (CObjectInfo *oi) const;
 
28956
  
 
28957
  /** Check if the given function overrides any virtual function
 
28958
   *  defined in this class or any of its base classes.
 
28959
   *  \param fi The function. */
 
28960
  bool overridesVirtual (const CFunctionInfo *fi) const;
 
28961
   
 
28962
  /** Check if this class is an aggregate according to 
 
28963
   *  paragraph 8.5.1-1 of the ISO C++ standard. */
 
28964
  bool isAggregate () const;
 
28965
public:
 
28966
  typedef AC::TL<Puma::Array< Puma::CBaseClassInfo * >,AC::TL<Puma::Array< Puma::CClassInfo * >,AC::TL<bool,AC::TLE > > > __AttrTypes;
 
28967
  const char *__attr_name (unsigned i) const {
 
28968
    static const char *names[] = { "_BaseClasses", "_Derived", "_DepBaseClass" }; return names[i];
 
28969
  }
 
28970
  const void *__attr (unsigned __i) const {
 
28971
    switch (__i) { case 1: return &_BaseClasses; case 3: return &_Derived; case 4: return &_DepBaseClass; default: return 0; }
 
28972
  }
 
28973
#line 140 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CClassInfo.h"
 
28974
};
 
28975
 
 
28976
inline CClassInfo::CClassInfo (ObjectId id) :
 
28977
  CRecord (id),
 
28978
  _DepBaseClass (false)
 
28979
 {}
 
28980
inline CClassInfo::CClassInfo () :
 
28981
  CRecord (CObjectInfo::CLASS_INFO),
 
28982
  _DepBaseClass (false)
 
28983
 {}
 
28984
 
 
28985
inline CTypeClass *CClassInfo::TypeInfo () const
 
28986
 { return (CTypeClass*)CObjectInfo::TypeInfo (); }
 
28987
 
 
28988
inline unsigned CClassInfo::BaseClasses () const
 
28989
 { return _BaseClasses.length (); }
 
28990
inline unsigned CClassInfo::DerivedClasses () const
 
28991
 { return _Derived.length (); }
 
28992
inline CBaseClassInfo *CClassInfo::BaseClass (unsigned n) const
 
28993
 { return _BaseClasses.lookup (n); }
 
28994
inline CClassInfo *CClassInfo::DerivedClass (unsigned n) const
 
28995
 { return _Derived.lookup (n); }
 
28996
 
 
28997
inline bool CClassInfo::hasDepBaseClass () const
 
28998
 { return _DepBaseClass; }
 
28999
inline void CClassInfo::hasDepBaseClass (bool v)
 
29000
 { _DepBaseClass = v; }
 
29001
 
 
29002
 
 
29003
} // namespace Puma
 
29004
 
 
29005
#endif /* __CClassInfo_h__ */
 
29006
 
 
29007
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroductionInfo.h"
 
29008
// This file is part of PUMA.
 
29009
// Copyright (C) 1999-2003  The PUMA developer team.
 
29010
//                                                                
 
29011
// This program is free software;  you can redistribute it and/or 
 
29012
// modify it under the terms of the GNU General Public License as 
 
29013
// published by the Free Software Foundation; either version 2 of 
 
29014
// the License, or (at your option) any later version.            
 
29015
//                                                                
 
29016
// This program is distributed in the hope that it will be useful,
 
29017
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29018
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29019
// GNU General Public License for more details.                   
 
29020
//                                                                
 
29021
// You should have received a copy of the GNU General Public      
 
29022
// License along with this program; if not, write to the Free     
 
29023
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29024
// MA  02111-1307  USA                                            
 
29025
 
 
29026
#ifndef __ACIntroductionInfo_h__
 
29027
#define __ACIntroductionInfo_h__
 
29028
 
 
29029
/** \file 
 
29030
 *  Semantic information about an AspectC++ introduction 'advice'. */
 
29031
 
 
29032
 
 
29033
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroductionInfo.h"
 
29034
namespace Puma {
 
29035
 
 
29036
 
 
29037
class CT_AdviceDecl;
 
29038
class ACAspectInfo;
 
29039
 
 
29040
/** \class ACIntroductionInfo ACIntroductionInfo.h Puma/ACIntroductionInfo.h
 
29041
 *  Semantic information about an AspectC++ introduction 
 
29042
 *  'advice' declaration. */
 
29043
 
 
29044
#line 29045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29045
} // closed Puma
 
29046
class CCExprResolve;
 
29047
class CExprResolve;
 
29048
class WinIfExists;
 
29049
class WinImportHandler;
 
29050
class WinMacros;
 
29051
class WinAsm;
 
29052
class WinDeclSpecs;
 
29053
class WinMemberExplSpec;
 
29054
class WinTypeKeywords;
 
29055
class WinFriend;
 
29056
class ExtAC;
 
29057
class ExtACBuilderCoupling;
 
29058
class ExtACSyntaxCoupling;
 
29059
class ExtACTree;
 
29060
class ExtACKeywords;
 
29061
class ExtGnu;
 
29062
class PragmaOnceUnitState;
 
29063
class PragmaOnce;
 
29064
class CMatchSyntax;
 
29065
namespace Puma {
 
29066
 
 
29067
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroductionInfo.h"
 
29068
class ACIntroductionInfo {
 
29069
#line 29070 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29070
  friend class ::CCExprResolve;
 
29071
  friend class ::CExprResolve;
 
29072
  friend class ::WinIfExists;
 
29073
  friend class ::WinImportHandler;
 
29074
  friend class ::WinMacros;
 
29075
  friend class ::WinAsm;
 
29076
  friend class ::WinDeclSpecs;
 
29077
  friend class ::WinMemberExplSpec;
 
29078
  friend class ::WinTypeKeywords;
 
29079
  friend class ::WinFriend;
 
29080
  friend class ::ExtAC;
 
29081
  friend class ::ExtACBuilderCoupling;
 
29082
  friend class ::ExtACSyntaxCoupling;
 
29083
  friend class ::ExtACTree;
 
29084
  friend class ::ExtACKeywords;
 
29085
  friend class ::ExtGnu;
 
29086
  friend class ::PragmaOnceUnitState;
 
29087
  friend class ::PragmaOnce;
 
29088
  friend class ::CMatchSyntax;
 
29089
 
 
29090
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroductionInfo.h"
 
29091
 
 
29092
  CT_AdviceDecl *_def_node;
 
29093
  CProtection::Type _prot;
 
29094
  ACAspectInfo *_aspect;
 
29095
 
 
29096
public:
 
29097
  /** Construct an ACIntroductionInfo object.
 
29098
   *  \param d The corresponding advice declaration syntax tree node.
 
29099
   *  \param p The protection of the advice (\e public, \e protected,
 
29100
   *           \e private). */
 
29101
  ACIntroductionInfo (CT_AdviceDecl *d, CProtection::Type p) :
 
29102
    _def_node (d), _prot (p) {}
 
29103
 
 
29104
  /** Get the introduction advice declaration syntax tree node. */
 
29105
  CT_AdviceDecl *def_node () { return _def_node; }
 
29106
  /** Get the protection of the introduction advice (\e public, 
 
29107
   *  \e protected, \e private). */
 
29108
  CProtection::Type prot () { return _prot; }
 
29109
  
 
29110
  /** Set the aspect containing the introduction.
 
29111
   *  \param ai The aspect info. */
 
29112
  void Aspect (ACAspectInfo *ai) { _aspect = ai; }
 
29113
  /** Get the aspect containing the introduction. */
 
29114
  ACAspectInfo *Aspect () { return _aspect; }
 
29115
 
 
29116
public:
 
29117
  typedef AC::TL<Puma::CT_AdviceDecl *,AC::TL<Puma::CProtection::Type,AC::TL<Puma::ACAspectInfo *,AC::TLE > > > __AttrTypes;
 
29118
  const char *__attr_name (unsigned i) const {
 
29119
    static const char *names[] = { "_def_node", "_prot", "_aspect" }; return names[i];
 
29120
  }
 
29121
  const void *__attr (unsigned __i) const {
 
29122
    switch (__i) { case 0: return &_def_node; case 1: return &_prot; case 2: return &_aspect; default: return 0; }
 
29123
  }
 
29124
#line 61 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroductionInfo.h"
 
29125
};
 
29126
 
 
29127
 
 
29128
} // namespace Puma
 
29129
 
 
29130
#endif /* __ACIntroductionInfo_h__ */
 
29131
 
 
29132
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAspectInfo.h"
 
29133
namespace Puma {
 
29134
 
 
29135
 
 
29136
class ACPointcutInfo;
 
29137
class ACAdviceInfo;
 
29138
class CFunctionInfo;
 
29139
 
 
29140
/** \class ACAspectInfo ACAspectInfo.h Puma/ACAspectInfo.h
 
29141
 *  Semantic information about an AspectC++ 'aspect' declaration. 
 
29142
 *  An aspect declaration is syntactically equal to a C++ class 
 
29143
 *  declaration and also parsed like a C++ class. Additionally it
 
29144
 *  contains pointcut and advice declarations. */
 
29145
 
 
29146
#line 29147 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29147
} // closed Puma
 
29148
class CCExprResolve;
 
29149
class CExprResolve;
 
29150
class WinIfExists;
 
29151
class WinImportHandler;
 
29152
class WinMacros;
 
29153
class WinAsm;
 
29154
class WinDeclSpecs;
 
29155
class WinMemberExplSpec;
 
29156
class WinTypeKeywords;
 
29157
class WinFriend;
 
29158
class ExtAC;
 
29159
class ExtACBuilderCoupling;
 
29160
class ExtACSyntaxCoupling;
 
29161
class ExtACTree;
 
29162
class ExtACKeywords;
 
29163
class ExtGnu;
 
29164
class PragmaOnceUnitState;
 
29165
class PragmaOnce;
 
29166
class CMatchSyntax;
 
29167
namespace Puma {
 
29168
 
 
29169
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAspectInfo.h"
 
29170
class ACAspectInfo {
 
29171
#line 29172 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29172
  friend class ::CCExprResolve;
 
29173
  friend class ::CExprResolve;
 
29174
  friend class ::WinIfExists;
 
29175
  friend class ::WinImportHandler;
 
29176
  friend class ::WinMacros;
 
29177
  friend class ::WinAsm;
 
29178
  friend class ::WinDeclSpecs;
 
29179
  friend class ::WinMemberExplSpec;
 
29180
  friend class ::WinTypeKeywords;
 
29181
  friend class ::WinFriend;
 
29182
  friend class ::ExtAC;
 
29183
  friend class ::ExtACBuilderCoupling;
 
29184
  friend class ::ExtACSyntaxCoupling;
 
29185
  friend class ::ExtACTree;
 
29186
  friend class ::ExtACKeywords;
 
29187
  friend class ::ExtGnu;
 
29188
  friend class ::PragmaOnceUnitState;
 
29189
  friend class ::PragmaOnce;
 
29190
  friend class ::CMatchSyntax;
 
29191
 
 
29192
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAspectInfo.h"
 
29193
 
 
29194
  CClassInfo *_class;
 
29195
  Array<ACPointcutInfo*> _pointcuts;
 
29196
  int _intro_count;
 
29197
  Array<ACIntroductionInfo*> _intro_nodes;
 
29198
  int _advice_count;
 
29199
  Array<CT_AdviceDecl*> _advice_nodes;
 
29200
  Array<CT_AdviceDecl*> _order_nodes;
 
29201
  CFunctionInfo *_aspectof;
 
29202
  //ThisJoinPoint _aspectof_tjp;
 
29203
 
 
29204
  // determine the set of pure virtual functions or pointcuts of a class
 
29205
  static void pure_virtual_functions (CClassInfo *cls,
 
29206
                                      set<CFunctionInfo*> &res);
 
29207
                                      
 
29208
public:
 
29209
  /** Construct an ACAspectInfo object from a CClassInfo.
 
29210
   *  \param node The class info of the aspect declaration. */
 
29211
  ACAspectInfo (CClassInfo *node);
 
29212
  /** Destroy the aspect info. */
 
29213
  ~ACAspectInfo ();
 
29214
 
 
29215
  /** Get the class info of the aspect declaration. */
 
29216
  CClassInfo *ClassInfo () const;
 
29217
  /** Get the name of the aspect. */
 
29218
  const char *name () const;
 
29219
 
 
29220
  /** Return \e true if the aspect is declared abstract. */
 
29221
  bool is_abstract () const;
 
29222
 
 
29223
  /** Return the number of pointcut declarations in the aspect. */
 
29224
  int PointcutInfos () const { return _pointcuts.length (); }
 
29225
  /** Get the n-th pointcut declaration of the aspect. 
 
29226
   *  \param n The number of the pointcut declaration. 
 
29227
   *  \return The pointcut info or \c NULL if \e n is invalid. */
 
29228
  ACPointcutInfo *PointcutInfo (int n) const { 
 
29229
    return _pointcuts.lookup (n); 
 
29230
  }
 
29231
  /** Add a pointcut info to the aspect. 
 
29232
   *  \param p The pointcut info. */
 
29233
  void add (ACPointcutInfo *p) { _pointcuts.append (p); }
 
29234
 
 
29235
  /** Return the number of introduction advices in the aspect. */
 
29236
  int IntroNodes () const { return _intro_nodes.length (); }
 
29237
  /** Get the n-th introduction advice of the aspect. 
 
29238
   *  \param n The number of the introduction info. 
 
29239
   *  \return The introduction info or \c NULL if \e n is invalid. */
 
29240
  ACIntroductionInfo *IntroNode (int n) const { 
 
29241
    return _intro_nodes.lookup (n); 
 
29242
  }
 
29243
  /** Add an introduction advice info to the aspect. 
 
29244
   *  \param node The corresponding advice declaration node. 
 
29245
   *  \param tp The protection of the advice (\e public, 
 
29246
   *            \e protected, \e private). */
 
29247
  void addIntroNode (CT_AdviceDecl *node, CProtection::Type tp) { 
 
29248
    ACIntroductionInfo *acii = new ACIntroductionInfo (node, tp);
 
29249
    _intro_nodes.append (acii); 
 
29250
    acii->Aspect (this);
 
29251
  }
 
29252
  /** Increase the introduction advice counter and return
 
29253
   *  the resulting count. */
 
29254
  int IntroCount () { return _intro_count++; }
 
29255
 
 
29256
  /** Return the number of advice declaration nodes in the aspect. */
 
29257
  int AdviceNodes () const { return _advice_nodes.length (); }
 
29258
  /** Get the n-th advice declaration node of the aspect. 
 
29259
   *  \param n The number of the advice declaration.
 
29260
   *  \return The advice declaration node or \c NULL if \e n is invalid. */
 
29261
  CT_AdviceDecl *AdviceNode (int n) const {
 
29262
    return _advice_nodes.lookup (n);
 
29263
  }
 
29264
  /** Add an advice declaration node to the aspect info. 
 
29265
   *  \param node The advice declaration syntax tree node. */
 
29266
  void addAdviceNode (CT_AdviceDecl *node) { _advice_nodes.append (node); }
 
29267
  /** Increase the advice declaration counter and return
 
29268
   *  the resulting count. */
 
29269
  int AdviceCount () { return _advice_count++; }
 
29270
 
 
29271
  /** Return the number of order advice declaration nodes in the aspect. */
 
29272
  int OrderNodes () const { return _order_nodes.length (); }
 
29273
  /** Get the n-th order advice declaration node of the aspect. 
 
29274
   *  \param n The number of the advice declaration.
 
29275
   *  \return The order advice declaration node or \c NULL if \e n is invalid. */
 
29276
  CT_AdviceDecl *OrderNode (int n) const {
 
29277
    return _order_nodes.lookup (n);
 
29278
  }
 
29279
  /** Add an order advice declaration node to the aspect info. 
 
29280
   *  \param node The order advice declaration syntax tree node. */
 
29281
  void addOrderNode (CT_AdviceDecl *node) { _order_nodes.append (node); }
 
29282
 
 
29283
  /** Set the aspectOf() function declared in the aspect. 
 
29284
   *  \param a The function info of the aspectOf() function. */
 
29285
  void aspect_of (CFunctionInfo *a) { _aspectof = a; }
 
29286
  /** Get the function info of the aspectOf() function. */
 
29287
  CFunctionInfo *aspect_of () const { return _aspectof; }
 
29288
public:
 
29289
  typedef AC::TL<Puma::CClassInfo *,AC::TL<Puma::Array< Puma::ACPointcutInfo * >,AC::TL<int,AC::TL<Puma::Array< Puma::ACIntroductionInfo * >,AC::TL<int,AC::TL<Puma::Array< Puma::CT_AdviceDecl * >,AC::TL<Puma::Array< Puma::CT_AdviceDecl * >,AC::TL<Puma::CFunctionInfo *,AC::TLE > > > > > > > > __AttrTypes;
 
29290
  const char *__attr_name (unsigned i) const {
 
29291
    static const char *names[] = { "_class", "_pointcuts", "_intro_count", "_intro_nodes", "_advice_count", "_advice_nodes", "_order_nodes", "_aspectof" }; return names[i];
 
29292
  }
 
29293
  const void *__attr (unsigned __i) const {
 
29294
    switch (__i) { case 0: return &_class; case 2: return &_pointcuts; case 3: return &_intro_count; case 5: return &_intro_nodes; case 6: return &_advice_count; case 8: return &_advice_nodes; case 10: return &_order_nodes; case 11: return &_aspectof; default: return 0; }
 
29295
  }
 
29296
#line 139 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAspectInfo.h"
 
29297
};
 
29298
 
 
29299
inline ACAspectInfo::ACAspectInfo (CClassInfo *node) : 
 
29300
 _class (node), _intro_count (0), _advice_count (0), _aspectof (0) {}
 
29301
 
 
29302
inline CClassInfo *ACAspectInfo::ClassInfo () const 
 
29303
 { return _class; }
 
29304
inline const char *ACAspectInfo::name () const 
 
29305
 { return _class->Name (); }
 
29306
 
 
29307
 
 
29308
} // namespace Puma
 
29309
 
 
29310
#endif /* __ACAspectInfo_h__ */
 
29311
 
 
29312
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAdviceInfo.h"
 
29313
// This file is part of PUMA.
 
29314
// Copyright (C) 1999-2003  The PUMA developer team.
 
29315
//                                                                
 
29316
// This program is free software;  you can redistribute it and/or 
 
29317
// modify it under the terms of the GNU General Public License as 
 
29318
// published by the Free Software Foundation; either version 2 of 
 
29319
// the License, or (at your option) any later version.            
 
29320
//                                                                
 
29321
// This program is distributed in the hope that it will be useful,
 
29322
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29323
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29324
// GNU General Public License for more details.                   
 
29325
//                                                                
 
29326
// You should have received a copy of the GNU General Public      
 
29327
// License along with this program; if not, write to the Free     
 
29328
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29329
// MA  02111-1307  USA                                            
 
29330
 
 
29331
#ifndef __ACAdviceInfo_h__
 
29332
#define __ACAdviceInfo_h__
 
29333
 
 
29334
/** \file 
 
29335
 *  Semantic information about an AspectC++ 'advice'. */
 
29336
 
 
29337
 
 
29338
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFunctionInfo.h"
 
29339
// This file is part of PUMA.
 
29340
// Copyright (C) 1999-2003  The PUMA developer team.
 
29341
//                                                                
 
29342
// This program is free software;  you can redistribute it and/or 
 
29343
// modify it under the terms of the GNU General Public License as 
 
29344
// published by the Free Software Foundation; either version 2 of 
 
29345
// the License, or (at your option) any later version.            
 
29346
//                                                                
 
29347
// This program is distributed in the hope that it will be useful,
 
29348
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29349
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29350
// GNU General Public License for more details.                   
 
29351
//                                                                
 
29352
// You should have received a copy of the GNU General Public      
 
29353
// License along with this program; if not, write to the Free     
 
29354
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29355
// MA  02111-1307  USA                                            
 
29356
 
 
29357
#ifndef __CFunctionInfo_h__
 
29358
#define __CFunctionInfo_h__
 
29359
 
 
29360
/** \file 
 
29361
 *  Semantic information about a function. */
 
29362
 
 
29363
 
 
29364
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFunctionInfo.h"
 
29365
namespace Puma {
 
29366
 
 
29367
 
 
29368
class CArgumentInfo;
 
29369
class CLabelInfo;
 
29370
class CRecord;
 
29371
class CNamespaceInfo;
 
29372
class CTemplateInfo;
 
29373
 
 
29374
/** \class CFunctionInfo CFunctionInfo.h Puma/CFunctionInfo.h
 
29375
 *  Semantic information about a function, method, overloaded
 
29376
 *  operator, or user conversion function. */
 
29377
 
 
29378
#line 29379 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29379
} // closed Puma
 
29380
class CCExprResolve;
 
29381
class CExprResolve;
 
29382
class WinIfExists;
 
29383
class WinImportHandler;
 
29384
class WinMacros;
 
29385
class WinAsm;
 
29386
class WinDeclSpecs;
 
29387
class WinMemberExplSpec;
 
29388
class WinTypeKeywords;
 
29389
class WinFriend;
 
29390
class ExtAC;
 
29391
class ExtACBuilderCoupling;
 
29392
class ExtACSyntaxCoupling;
 
29393
class ExtACTree;
 
29394
class ExtACKeywords;
 
29395
class ExtGnu;
 
29396
class PragmaOnceUnitState;
 
29397
class PragmaOnce;
 
29398
class CMatchSyntax;
 
29399
namespace Puma {
 
29400
 
 
29401
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFunctionInfo.h"
 
29402
class CFunctionInfo : public CStructure {
 
29403
#line 29404 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29404
  friend class ::CCExprResolve;
 
29405
  friend class ::CExprResolve;
 
29406
  friend class ::WinIfExists;
 
29407
  friend class ::WinImportHandler;
 
29408
  friend class ::WinMacros;
 
29409
  friend class ::WinAsm;
 
29410
  friend class ::WinDeclSpecs;
 
29411
  friend class ::WinMemberExplSpec;
 
29412
  friend class ::WinTypeKeywords;
 
29413
  friend class ::WinFriend;
 
29414
  friend class ::ExtAC;
 
29415
  friend class ::ExtACBuilderCoupling;
 
29416
  friend class ::ExtACSyntaxCoupling;
 
29417
  friend class ::ExtACTree;
 
29418
  friend class ::ExtACKeywords;
 
29419
  friend class ::ExtGnu;
 
29420
  friend class ::PragmaOnceUnitState;
 
29421
  friend class ::PragmaOnce;
 
29422
  friend class ::CMatchSyntax;
 
29423
 
 
29424
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFunctionInfo.h"
 
29425
 
 
29426
  Array<CArgumentInfo*> _Arguments;
 
29427
  Array<CLabelInfo*> _Labels;
 
29428
 
 
29429
  CTypeInfo     *_ConversionType;
 
29430
  CTemplateInfo *_TemplateInfo;
 
29431
  bool           _isTemplate;
 
29432
 
 
29433
  enum MethodType {
 
29434
    NONE,
 
29435
    CONSTRUCTOR,
 
29436
    DESTRUCTOR,
 
29437
    OPERATOR,
 
29438
    CONVERSION
 
29439
  } _MethodType;
 
29440
 
 
29441
protected:
 
29442
  /** Constructor.
 
29443
   *  \param id The object type. */
 
29444
  CFunctionInfo (ObjectId id);
 
29445
 
 
29446
public: 
 
29447
  /** Constructor. */
 
29448
  CFunctionInfo ();
 
29449
  /** Destructor. If the object type is CObjectInfo::FUNCTION_INFO, 
 
29450
   *  then CObjectInfo::CleanUp() is called. */
 
29451
  ~CFunctionInfo ();
 
29452
  
 
29453
  /** Get the semantic object of the function definition. 
 
29454
   *  \see CObjectInfo::DefObject() */
 
29455
  CFunctionInfo *DefObject () const;
 
29456
  /** Get the type information for the function. */
 
29457
  CTypeFunction *TypeInfo () const;
 
29458
  /** Get the conversion type if this is a conversion function.
 
29459
   *  \return The conversion type or NULL if not a conversion function. */
 
29460
  CTypeInfo *ConversionType () const;
 
29461
  /** Get the return type of the function. */
 
29462
  CTypeInfo *ReturnType () const;
 
29463
  /** Get the template information if this is a function template.
 
29464
   *  \return The template information or NULL if not a function template. */
 
29465
  CTemplateInfo *TemplateInfo () const;
 
29466
  /** Get the class or union if this is a method of a class or union.
 
29467
   *  \return The class/union or NULL if not a method. */
 
29468
  CRecord *Record () const;
 
29469
  /** Get the namespace if this function is declared in a namespace.
 
29470
   *  \return The namespace or NULL if not declared in a namespace. */
 
29471
  CNamespaceInfo *Namespace () const;
 
29472
 
 
29473
  /** Get the number of jump labels defined in the function body. */
 
29474
  unsigned Labels () const;
 
29475
  /** Get the number of function parameters. */
 
29476
  unsigned Arguments () const;
 
29477
  /** Get the n-th jump label.
 
29478
   *  \param n The index of the jump label.
 
29479
   *  \return The label or NULL if \e n is invalid. */
 
29480
  CLabelInfo *Label (unsigned n) const;
 
29481
  /** Get the jump label with the given name.
 
29482
   *  \param name The name of the jump label.
 
29483
   *  \return The label or NULL if no such label. */
 
29484
  CLabelInfo *Label (const char *name) const;
 
29485
  /** Get the n-th function parameter.
 
29486
   *  \param n The index of the function parameter. 
 
29487
   *  \return The function parameter or NULL if \e n is invalid. */
 
29488
  CArgumentInfo *Argument (unsigned n) const;
 
29489
  /** Get the function parameter with the given name. 
 
29490
   *  \param name The name of the function parameter.
 
29491
   *  \return The function parameter or NULL if no such parameter. */
 
29492
  CArgumentInfo *Argument (const char *name) const;
 
29493
  /** Get the default argument of the n-th function parameter.
 
29494
   *  \param n The index of the function parameter.
 
29495
   *  \return The syntax tree node of the default argument or 
 
29496
   *          NULL if the n-th parameter has no default argument. */
 
29497
  CTree *DefaultArgument (unsigned n) const;
 
29498
  /** Get the initializer of the function. Only pure virtual functions
 
29499
   *  have an initializer ("=0").
 
29500
   *  \return The syntax tree node of the initializer or NULL
 
29501
   *          if function is not pure virtual. */
 
29502
  CT_ExprList *Init () const;
 
29503
 
 
29504
  /** Set the conversion type of a conversion function. 
 
29505
   *  \param type The conversion type. */
 
29506
  void ConversionType (CTypeInfo *type);
 
29507
  /** Set the qualification scope of a class/union method or 
 
29508
   *  function declared in a namespace.
 
29509
   *  \param scope The qualification scope. */
 
29510
  void QualifiedScope (CStructure *scope);
 
29511
  /** Add a function parameter. 
 
29512
   *  \param info The function parameter. */
 
29513
  void addArgument (CArgumentInfo *info);
 
29514
  /** Add a jump label.
 
29515
   *  \param label The jump label. */
 
29516
  void addLabel (CLabelInfo *label);
 
29517
  /** Remove the given function parameter.
 
29518
   *  \param info The function parameter. */
 
29519
  void removeArgument (const CArgumentInfo *info);
 
29520
  /** Remove the given jump label.
 
29521
   *  \param label The jump label. */
 
29522
  void removeLabel (const CLabelInfo *label);
 
29523
  /** Set the template information of a function template.
 
29524
   *  \param info The template information. */
 
29525
  void TemplateInfo (CTemplateInfo *info);
 
29526
  /** Set whether the function is a function template.
 
29527
   *  \param v \c true if the function is a template. */
 
29528
  void isTemplate (bool v);
 
29529
 
 
29530
  /** Create a new function parameter. The new function parameter
 
29531
   *  is added to the function. */
 
29532
  CArgumentInfo *newArgument ();
 
29533
  /** Create a new jump label. The new jump label is added
 
29534
   *  to the function. */
 
29535
  CLabelInfo *newLabel ();
 
29536
  /** Remove and destroy the given function parameter. 
 
29537
   *  \param info The function parameter. */
 
29538
  void deleteArgument (const CArgumentInfo *info);
 
29539
  /** Remove and destroy the given jump label. 
 
29540
   *  \param info The jump label. */
 
29541
  void deleteLabel (const CLabelInfo *info);
 
29542
 
 
29543
  /** Check if the function accepts a variable argument list. */
 
29544
  bool hasEllipsis () const;
 
29545
  /** Check if the n-th function parameter has a default argument.
 
29546
   *  \param n The index of the function parameter. */
 
29547
  bool hasDefaultArgument (unsigned n) const;
 
29548
  
 
29549
  /** Check if this is a function definition. */
 
29550
  bool isFctDef () const;                    
 
29551
  /** Check if this is a method of a class or union. */
 
29552
  bool isMethod () const;                    
 
29553
  /** Check if this is a static method of a class or union. */
 
29554
  bool isStaticMethod () const;          
 
29555
  /** Check if this is a function template. */
 
29556
  bool isTemplate () const;        
 
29557
  /** Check if the function is defined. */
 
29558
  bool isDefined () const;              
 
29559
  /** Check if this is a destructor. */
 
29560
  bool isDestructor () const;          
 
29561
  /** Check if this is a constructor. */
 
29562
  bool isConstructor () const;              
 
29563
  /** Check if this is an overloaded operator. */
 
29564
  bool isOperator () const;           
 
29565
  /** Check if this is a conversion function. */
 
29566
  bool isConversion () const;     
 
29567
  /** Check if the function is pure virtual. */
 
29568
  bool isPureVirtual () const;
 
29569
 
 
29570
  /** Set whether the function is a destructor. 
 
29571
   *  \param v \e true if the function is a destructor. */
 
29572
  void isDestructor (bool v);
 
29573
  /** Set whether the function is a constructor. 
 
29574
   *  \param v \e true if the function is a constructor. */
 
29575
  void isConstructor (bool v);
 
29576
  /** Set whether the function is an overloaded operator. 
 
29577
   *  \param v \e true if the function is an overloaded operator. */
 
29578
  void isOperator (bool v);
 
29579
  /** Set whether the function is a conversion function. 
 
29580
   *  \param v \e true if the function is a conversion function. */
 
29581
  void isConversion (bool v);
 
29582
 
 
29583
  /** Check if the given function has the same name and
 
29584
   *  parameter types as this function.
 
29585
   *  \param fi The function to compare with. */
 
29586
  bool hasSameNameAndArgs (const CFunctionInfo *fi) const;
 
29587
  
 
29588
  /** Check if the function is a non-static member function and if
 
29589
   *  in any of the base classes there is a function definition of a
 
29590
   *  virtual function with the same name and argument types. */
 
29591
  bool overridesVirtual () const;
 
29592
public:
 
29593
  typedef AC::TL<Puma::Array< Puma::CArgumentInfo * >,AC::TL<Puma::Array< Puma::CLabelInfo * >,AC::TL<Puma::CTypeInfo *,AC::TL<Puma::CTemplateInfo *,AC::TL<bool,AC::TL<Puma::CFunctionInfo::MethodType,AC::TLE > > > > > > __AttrTypes;
 
29594
  const char *__attr_name (unsigned i) const {
 
29595
    static const char *names[] = { "_Arguments", "_Labels", "_ConversionType", "_TemplateInfo", "_isTemplate", "_MethodType" }; return names[i];
 
29596
  }
 
29597
  const void *__attr (unsigned __i) const {
 
29598
    switch (__i) { case 1: return &_Arguments; case 3: return &_Labels; case 4: return &_ConversionType; case 5: return &_TemplateInfo; case 6: return &_isTemplate; case 12: return &_MethodType; default: return 0; }
 
29599
  }
 
29600
#line 208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFunctionInfo.h"
 
29601
};
 
29602
 
 
29603
inline CFunctionInfo::CFunctionInfo (ObjectId id) :
 
29604
  CStructure (id),
 
29605
  _ConversionType ((CTypeInfo*)0),
 
29606
  _TemplateInfo ((CTemplateInfo*)0),
 
29607
  _isTemplate (false),
 
29608
  _MethodType (NONE)
 
29609
 {}
 
29610
inline CFunctionInfo::CFunctionInfo () :
 
29611
  CStructure (CObjectInfo::FUNCTION_INFO),
 
29612
  _ConversionType ((CTypeInfo*)0),
 
29613
  _TemplateInfo ((CTemplateInfo*)0),
 
29614
  _isTemplate (false),
 
29615
  _MethodType (NONE)
 
29616
 {}
 
29617
 
 
29618
inline CTypeInfo *CFunctionInfo::ConversionType () const
 
29619
 { return _ConversionType; }
 
29620
inline void CFunctionInfo::ConversionType (CTypeInfo *t)
 
29621
 { _ConversionType = t; }
 
29622
 
 
29623
inline CTypeFunction *CFunctionInfo::TypeInfo () const
 
29624
 { return (CTypeFunction*)CObjectInfo::TypeInfo (); }
 
29625
 
 
29626
inline unsigned CFunctionInfo::Arguments () const
 
29627
 { return _Arguments.length (); }
 
29628
inline CArgumentInfo *CFunctionInfo::Argument (unsigned n) const
 
29629
 { return _Arguments.lookup (n); }
 
29630
inline unsigned CFunctionInfo::Labels () const
 
29631
 { return _Labels.length (); }
 
29632
inline CLabelInfo *CFunctionInfo::Label (unsigned n) const
 
29633
 { return _Labels.lookup (n); }
 
29634
 
 
29635
inline void CFunctionInfo::QualifiedScope (CStructure *s)
 
29636
 { _QualScope = s; }
 
29637
 
 
29638
inline bool CFunctionInfo::isDestructor () const
 
29639
 { return _MethodType == DESTRUCTOR; }
 
29640
inline bool CFunctionInfo::isConstructor () const
 
29641
 { return _MethodType == CONSTRUCTOR; }
 
29642
inline bool CFunctionInfo::isOperator () const
 
29643
 { return _MethodType == OPERATOR; }
 
29644
inline bool CFunctionInfo::isConversion () const
 
29645
 { return _MethodType == CONVERSION; }
 
29646
inline bool CFunctionInfo::isMethod () const 
 
29647
 { return (Record ()); }
 
29648
inline bool CFunctionInfo::isStaticMethod () const 
 
29649
 { return (isMethod () && isStatic ()); }
 
29650
 
 
29651
inline void CFunctionInfo::isDestructor (bool v)
 
29652
 { if (v) _MethodType = DESTRUCTOR; }
 
29653
inline void CFunctionInfo::isConstructor (bool v)
 
29654
 { if (v) _MethodType = CONSTRUCTOR; }
 
29655
inline void CFunctionInfo::isOperator (bool v)
 
29656
 { if (v) _MethodType = OPERATOR; }
 
29657
inline void CFunctionInfo::isConversion (bool v)
 
29658
 { if (v) _MethodType = CONVERSION; }
 
29659
 
 
29660
inline bool CFunctionInfo::isTemplate () const 
 
29661
 { return _isTemplate; }
 
29662
inline void CFunctionInfo::isTemplate (bool v)
 
29663
 { _isTemplate = v; }
 
29664
 
 
29665
inline CTemplateInfo *CFunctionInfo::TemplateInfo () const
 
29666
 { return _TemplateInfo; }
 
29667
inline void CFunctionInfo::TemplateInfo (CTemplateInfo *info) 
 
29668
 { _TemplateInfo = info; }
 
29669
 
 
29670
//inline bool CFunctionInfo::isRedefined () const 
 
29671
// { return BaseObject () && ! isInherited (); }
 
29672
 
 
29673
 
 
29674
} // namespace Puma
 
29675
 
 
29676
#endif /* __CFunctionInfo_h__ */
 
29677
 
 
29678
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAdviceInfo.h"
 
29679
using namespace std;
 
29680
 
 
29681
namespace Puma {
 
29682
 
 
29683
 
 
29684
class ACAspectInfo;
 
29685
 
 
29686
/** \class ACAdviceInfo ACAdviceInfo.h Puma/ACAdviceInfo.h
 
29687
 *  Semantic information about an AspectC++ 'advice' declaration. 
 
29688
 *  An advice is part of an aspect declaration. */
 
29689
 
 
29690
#line 29691 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29691
} // closed Puma
 
29692
class CCExprResolve;
 
29693
class CExprResolve;
 
29694
class WinIfExists;
 
29695
class WinImportHandler;
 
29696
class WinMacros;
 
29697
class WinAsm;
 
29698
class WinDeclSpecs;
 
29699
class WinMemberExplSpec;
 
29700
class WinTypeKeywords;
 
29701
class WinFriend;
 
29702
class ExtAC;
 
29703
class ExtACBuilderCoupling;
 
29704
class ExtACSyntaxCoupling;
 
29705
class ExtACTree;
 
29706
class ExtACKeywords;
 
29707
class ExtGnu;
 
29708
class PragmaOnceUnitState;
 
29709
class PragmaOnce;
 
29710
class CMatchSyntax;
 
29711
namespace Puma {
 
29712
 
 
29713
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAdviceInfo.h"
 
29714
class ACAdviceInfo {
 
29715
#line 29716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29716
  friend class ::CCExprResolve;
 
29717
  friend class ::CExprResolve;
 
29718
  friend class ::WinIfExists;
 
29719
  friend class ::WinImportHandler;
 
29720
  friend class ::WinMacros;
 
29721
  friend class ::WinAsm;
 
29722
  friend class ::WinDeclSpecs;
 
29723
  friend class ::WinMemberExplSpec;
 
29724
  friend class ::WinTypeKeywords;
 
29725
  friend class ::WinFriend;
 
29726
  friend class ::ExtAC;
 
29727
  friend class ::ExtACBuilderCoupling;
 
29728
  friend class ::ExtACSyntaxCoupling;
 
29729
  friend class ::ExtACTree;
 
29730
  friend class ::ExtACKeywords;
 
29731
  friend class ::ExtGnu;
 
29732
  friend class ::PragmaOnceUnitState;
 
29733
  friend class ::PragmaOnce;
 
29734
  friend class ::CMatchSyntax;
 
29735
 
 
29736
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAdviceInfo.h"
 
29737
 
 
29738
public:
 
29739
  /** The three advice types: before, around, and after advice. */
 
29740
  enum advice_type { BEFORE, AROUND, AFTER };
 
29741
 
 
29742
private:
 
29743
  advice_type _type;
 
29744
 
 
29745
  CT_AdviceDecl *_def_node;
 
29746
  CT_AdviceDecl *_decl_node;
 
29747
  std::ostringstream _name;
 
29748
  ACAspectInfo *_aspect;
 
29749
  bool _inherited;
 
29750
  ACAdviceInfo *_parent;
 
29751
  bool _uses_aspectOf;
 
29752
  bool _have_advice_func;
 
29753
 
 
29754
public:
 
29755
  /** Construct an advice info object. Also constructs the internal
 
29756
   *  name of an advice.
 
29757
   *  \param n A consecutive number used for the unique internal
 
29758
   *           name of the advice. */
 
29759
  ACAdviceInfo (int n) : _def_node (0), _decl_node (0), _aspect (0), 
 
29760
   _inherited (false), _parent (0), _uses_aspectOf (false), 
 
29761
   _have_advice_func (false) { _name << "__advice_" << n; }
 
29762
 
 
29763
  /** Get the internal name of the advice. */
 
29764
  const char *name () { return _name.str ().c_str (); }
 
29765
  /** Return \e true if the advice is inherited from another aspect. */
 
29766
  bool is_inherited () { return _inherited; }
 
29767
  /** Set the \e inherited state of the advice info. 
 
29768
   *  \param i \e true if the advice is inherited from another aspect. */
 
29769
  void is_inherited (bool i) { _inherited = i; }
 
29770
  /** Set the parent advice. The parent advice is the advice in the 
 
29771
   *  base aspect from which this advice inherits. 
 
29772
   *  \param p The advice info of the parent advice. */
 
29773
  void parent (ACAdviceInfo *p) { _parent = p; }
 
29774
  /** Get the parent advice info. If an advice is inherited from 
 
29775
   *  another aspect, this method returns the info of the corresponding
 
29776
   *  advice of the base aspect. 
 
29777
   *  \return The advice info or \c NULL if advice is not inherited. */
 
29778
  ACAdviceInfo *parent () { return _parent; }
 
29779
  /** If an advice is inherited, this method returns the info of the 
 
29780
   *  advice of the aspect first defining the advice.
 
29781
   *  \return The advice info or \e this if the advice is not inherited. */
 
29782
  ACAdviceInfo *root () {
 
29783
    ACAdviceInfo *result = this;
 
29784
    while (result->is_inherited ())
 
29785
      result = result->parent ();
 
29786
    return result;
 
29787
  }
 
29788
  /** Get the type of the advice. */
 
29789
  advice_type type () { return _type; }
 
29790
  /** Set the syntax tree node of the definition of the advice. 
 
29791
   *  \param ad The advice definition syntax tree node. */
 
29792
  void def_node (CT_AdviceDecl *ad) { _def_node = ad; }
 
29793
  /** Get the advice definition syntax tree node. */
 
29794
  CT_AdviceDecl *def_node () { return _def_node; }
 
29795
  /** Set the syntax tree node of the declaration of the advice. 
 
29796
   *  \param ad The advice declaration syntax tree node. */
 
29797
  void decl_node (CT_AdviceDecl *ad) {
 
29798
    _decl_node = ad;
 
29799
  }
 
29800
  /** Get the advice declaration syntax tree node. */
 
29801
  CT_AdviceDecl *decl_node () { return _decl_node; }
 
29802
  /** Set the aspect containing the advice. 
 
29803
   *  \param ai The aspect info. */
 
29804
  void Aspect (ACAspectInfo *ai) { _aspect = ai; }
 
29805
  /** Get the aspect containing the advice. */
 
29806
  ACAspectInfo *Aspect () { return _aspect; }
 
29807
  /** Get the function info of the advice. Advice declarations
 
29808
   *  are syntactically realized as function declaration. */
 
29809
  CFunctionInfo *function();
 
29810
  /** Return \e true if the advice uses the aspectOf() function. */
 
29811
  bool uses_aspectOf () const {return _uses_aspectOf;}
 
29812
  /** Set the state whether the advice uses the aspectOf() function. 
 
29813
   *  \param u \e true if the advice uses the aspectOf() function. */
 
29814
  void uses_aspectOf (bool u) { _uses_aspectOf = u;}
 
29815
public:
 
29816
  typedef AC::TL<Puma::ACAdviceInfo::advice_type,AC::TL<Puma::CT_AdviceDecl *,AC::TL<Puma::CT_AdviceDecl *,AC::TL<std::basic_ostringstream< char >,AC::TL<Puma::ACAspectInfo *,AC::TL<bool,AC::TL<Puma::ACAdviceInfo *,AC::TL<bool,AC::TL<bool,AC::TLE > > > > > > > > > __AttrTypes;
 
29817
  const char *__attr_name (unsigned i) const {
 
29818
    static const char *names[] = { "_type", "_def_node", "_decl_node", "_name", "_aspect", "_inherited", "_parent", "_uses_aspectOf", "_have_advice_func" }; return names[i];
 
29819
  }
 
29820
  const void *__attr (unsigned __i) const {
 
29821
    switch (__i) { case 3: return &_type; case 4: return &_def_node; case 5: return &_decl_node; case 6: return &_name; case 7: return &_aspect; case 8: return &_inherited; case 9: return &_parent; case 10: return &_uses_aspectOf; case 11: return &_have_advice_func; default: return 0; }
 
29822
  }
 
29823
#line 117 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACAdviceInfo.h"
 
29824
};
 
29825
 
 
29826
 
 
29827
} // namespace Puma
 
29828
 
 
29829
#endif /* __ACAdviceInfo_h__ */
 
29830
 
 
29831
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACPointcutInfo.h"
 
29832
// This file is part of PUMA.
 
29833
// Copyright (C) 1999-2003  The PUMA developer team.
 
29834
//                                                                
 
29835
// This program is free software;  you can redistribute it and/or 
 
29836
// modify it under the terms of the GNU General Public License as 
 
29837
// published by the Free Software Foundation; either version 2 of 
 
29838
// the License, or (at your option) any later version.            
 
29839
//                                                                
 
29840
// This program is distributed in the hope that it will be useful,
 
29841
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29842
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29843
// GNU General Public License for more details.                   
 
29844
//                                                                
 
29845
// You should have received a copy of the GNU General Public      
 
29846
// License along with this program; if not, write to the Free     
 
29847
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29848
// MA  02111-1307  USA                                            
 
29849
 
 
29850
#ifndef __ACPointCutInfo_h__
 
29851
#define __ACPointCutInfo_h__
 
29852
 
 
29853
/** \file 
 
29854
 *  Semantic information about an AspectC++ 'pointcut'. */
 
29855
 
 
29856
 
 
29857
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACPointcutInfo.h"
 
29858
namespace Puma {
 
29859
 
 
29860
 
 
29861
class ACAspectInfo;
 
29862
class CT_PointcutDecl;
 
29863
 
 
29864
/** \class ACPointcutInfo ACPointcutInfo.h Puma/ACPointcutInfo.h
 
29865
 *  Semantic information about an AspectC++ 'pointcut' declaration. 
 
29866
 *  A pointcut declaration is syntactically equal to a function 
 
29867
 *  declaration and also parsed like a function. */
 
29868
 
 
29869
#line 29870 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29870
} // closed Puma
 
29871
class CCExprResolve;
 
29872
class CExprResolve;
 
29873
class WinIfExists;
 
29874
class WinImportHandler;
 
29875
class WinMacros;
 
29876
class WinAsm;
 
29877
class WinDeclSpecs;
 
29878
class WinMemberExplSpec;
 
29879
class WinTypeKeywords;
 
29880
class WinFriend;
 
29881
class ExtAC;
 
29882
class ExtACBuilderCoupling;
 
29883
class ExtACSyntaxCoupling;
 
29884
class ExtACTree;
 
29885
class ExtACKeywords;
 
29886
class ExtGnu;
 
29887
class PragmaOnceUnitState;
 
29888
class PragmaOnce;
 
29889
class CMatchSyntax;
 
29890
namespace Puma {
 
29891
 
 
29892
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACPointcutInfo.h"
 
29893
class ACPointcutInfo {
 
29894
#line 29895 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
29895
  friend class ::CCExprResolve;
 
29896
  friend class ::CExprResolve;
 
29897
  friend class ::WinIfExists;
 
29898
  friend class ::WinImportHandler;
 
29899
  friend class ::WinMacros;
 
29900
  friend class ::WinAsm;
 
29901
  friend class ::WinDeclSpecs;
 
29902
  friend class ::WinMemberExplSpec;
 
29903
  friend class ::WinTypeKeywords;
 
29904
  friend class ::WinFriend;
 
29905
  friend class ::ExtAC;
 
29906
  friend class ::ExtACBuilderCoupling;
 
29907
  friend class ::ExtACSyntaxCoupling;
 
29908
  friend class ::ExtACTree;
 
29909
  friend class ::ExtACKeywords;
 
29910
  friend class ::ExtGnu;
 
29911
  friend class ::PragmaOnceUnitState;
 
29912
  friend class ::PragmaOnce;
 
29913
  friend class ::CMatchSyntax;
 
29914
 
 
29915
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACPointcutInfo.h"
 
29916
 
 
29917
  CFunctionInfo   *_function;
 
29918
  ACAspectInfo    *_aspect;
 
29919
  CT_PointcutDecl *_def_node;
 
29920
      
 
29921
public:
 
29922
  /** Construct a pointcut info object.
 
29923
   *  \param f The function info of the pointcut declaration. */
 
29924
  ACPointcutInfo (CFunctionInfo *f) :
 
29925
    _function (f), _aspect ((ACAspectInfo*)0),
 
29926
    _def_node ((CT_PointcutDecl *)0) {}
 
29927
 
 
29928
  /** Get the name of the pointcut. */
 
29929
  const char *name () { return _function->Name (); }
 
29930
  /** Get the function info of the pointcut declaration. */
 
29931
  CFunctionInfo *function () { return _function; }
 
29932
  /** Set the aspect in which the pointcut is declared. 
 
29933
   *  \param ai The aspect info of the corresponding aspect. */
 
29934
  void Aspect (ACAspectInfo *ai) { _aspect = ai; }
 
29935
  /** Get the aspect in which the pointcut is declared. */
 
29936
  ACAspectInfo *Aspect () { return _aspect; }
 
29937
 
 
29938
  /** Return \e true if the pointcut is virtual. */
 
29939
  bool is_virtual () { return (_function->isVirtual ()); }
 
29940
  //bool is_pure () { return _function->isPureVirtual (); }
 
29941
 
 
29942
  /** Set the pointcut definition syntax tree node.
 
29943
   *  \param pcd The pointcut syntax tree node. */
 
29944
  void def_node (CT_PointcutDecl *pcd) { _def_node = pcd; }
 
29945
  /** Get the syntax tree node of the pointcut definition. */
 
29946
  CT_PointcutDecl *def_node () { return _def_node; }
 
29947
public:
 
29948
  typedef AC::TL<Puma::CFunctionInfo *,AC::TL<Puma::ACAspectInfo *,AC::TL<Puma::CT_PointcutDecl *,AC::TLE > > > __AttrTypes;
 
29949
  const char *__attr_name (unsigned i) const {
 
29950
    static const char *names[] = { "_function", "_aspect", "_def_node" }; return names[i];
 
29951
  }
 
29952
  const void *__attr (unsigned __i) const {
 
29953
    switch (__i) { case 0: return &_function; case 1: return &_aspect; case 2: return &_def_node; default: return 0; }
 
29954
  }
 
29955
#line 68 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACPointcutInfo.h"
 
29956
};
 
29957
 
 
29958
 
 
29959
} // namespace Puma
 
29960
 
 
29961
#endif /* __PointCutInfo_h__ */
 
29962
 
 
29963
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACSliceInfo.h"
 
29964
// This file is part of PUMA.
 
29965
// Copyright (C) 1999-2003  The PUMA developer team.
 
29966
//                                                                
 
29967
// This program is free software;  you can redistribute it and/or 
 
29968
// modify it under the terms of the GNU General Public License as 
 
29969
// published by the Free Software Foundation; either version 2 of 
 
29970
// the License, or (at your option) any later version.            
 
29971
//                                                                
 
29972
// This program is distributed in the hope that it will be useful,
 
29973
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29974
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29975
// GNU General Public License for more details.                   
 
29976
//                                                                
 
29977
// You should have received a copy of the GNU General Public      
 
29978
// License along with this program; if not, write to the Free     
 
29979
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29980
// MA  02111-1307  USA                                            
 
29981
 
 
29982
#ifndef __ACSliceInfo_h__
 
29983
#define __ACSliceInfo_h__
 
29984
 
 
29985
/** \file 
 
29986
 *  Semantic information about an AspectC++ 'slice'. */
 
29987
 
 
29988
 
 
29989
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACSliceInfo.h"
 
29990
namespace Puma {
 
29991
 
 
29992
 
 
29993
class ACAspectInfo;
 
29994
class CT_ClassSliceDecl;
 
29995
class CT_Intro;
 
29996
class Unit;
 
29997
 
 
29998
 
 
29999
/** \class ACSliceInfo ACSliceInfo.h Puma/ACSliceInfo.h
 
30000
 *  Semantic information about an AspectC++ 'slice' declaration. 
 
30001
 *  A slice represents a fragment of a C/C++ language element. For
 
30002
 *  example a 'class slice' is a (possibly incomplete) fragment
 
30003
 *  of a class. */
 
30004
 
 
30005
#line 30006 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
30006
} // closed Puma
 
30007
class CCExprResolve;
 
30008
class CExprResolve;
 
30009
class WinIfExists;
 
30010
class WinImportHandler;
 
30011
class WinMacros;
 
30012
class WinAsm;
 
30013
class WinDeclSpecs;
 
30014
class WinMemberExplSpec;
 
30015
class WinTypeKeywords;
 
30016
class WinFriend;
 
30017
class ExtAC;
 
30018
class ExtACBuilderCoupling;
 
30019
class ExtACSyntaxCoupling;
 
30020
class ExtACTree;
 
30021
class ExtACKeywords;
 
30022
class ExtGnu;
 
30023
class PragmaOnceUnitState;
 
30024
class PragmaOnce;
 
30025
class CMatchSyntax;
 
30026
namespace Puma {
 
30027
 
 
30028
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACSliceInfo.h"
 
30029
class ACSliceInfo {
 
30030
#line 30031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
30031
  friend class ::CCExprResolve;
 
30032
  friend class ::CExprResolve;
 
30033
  friend class ::WinIfExists;
 
30034
  friend class ::WinImportHandler;
 
30035
  friend class ::WinMacros;
 
30036
  friend class ::WinAsm;
 
30037
  friend class ::WinDeclSpecs;
 
30038
  friend class ::WinMemberExplSpec;
 
30039
  friend class ::WinTypeKeywords;
 
30040
  friend class ::WinFriend;
 
30041
  friend class ::ExtAC;
 
30042
  friend class ::ExtACBuilderCoupling;
 
30043
  friend class ::ExtACSyntaxCoupling;
 
30044
  friend class ::ExtACTree;
 
30045
  friend class ::ExtACKeywords;
 
30046
  friend class ::ExtGnu;
 
30047
  friend class ::PragmaOnceUnitState;
 
30048
  friend class ::PragmaOnce;
 
30049
  friend class ::CMatchSyntax;
 
30050
 
 
30051
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACSliceInfo.h"
 
30052
 
 
30053
  CObjectInfo       *_object;
 
30054
  CT_ClassSliceDecl *_def_node;
 
30055
  Unit              *_pattern;        // inline member patterns (in 1 unit)
 
30056
  Unit              *_base_pattern;   // base class intro part
 
30057
  Array<CT_Intro*>  _members;         // non-inline slice members
 
30058
  Array<Unit*>      _member_patterns; // non-inline member patterns
 
30059
  Array<Unit*>      _member_units;    // non-inline member units (ah files)
 
30060
  bool              _in_advice;
 
30061
      
 
30062
public:
 
30063
  /** Various types of slices */
 
30064
  enum Type { SL_UNKNOWN, SL_ASPECT, SL_CLASS, SL_STRUCT, SL_UNION };
 
30065
  
 
30066
  /** Construct a slice info object.
 
30067
   *  \param oi The object info of the slice declaration, e.g. class info. */
 
30068
  ACSliceInfo (CObjectInfo *oi) :
 
30069
    _object (oi), _def_node ((CT_ClassSliceDecl *)0),
 
30070
    _pattern (0), _base_pattern (0) {}
 
30071
 
 
30072
  /** Desctructor: delete all pattern units */
 
30073
  ~ACSliceInfo ();
 
30074
  
 
30075
  /** Get the name of the slice. */
 
30076
  const char *name () { return _object->Name (); }
 
30077
  /** Get the object info of the slice declaration. */
 
30078
  CObjectInfo *object () { return _object; }
 
30079
 
 
30080
  /** Set the slice definition syntax tree node.
 
30081
   *  \param node The slice syntax tree node. */
 
30082
  void def_node (CT_ClassSliceDecl *node);
 
30083
  /** Get the syntax tree node of the slice definition. */
 
30084
  CT_ClassSliceDecl *def_node () { return _def_node; }
 
30085
  
 
30086
  /** Add a non-inline slice member.
 
30087
   *  \param i The new member. */
 
30088
  void add_member (CT_Intro *i);
 
30089
  
 
30090
  /** Get the number of non-inline slice members. */
 
30091
  int members () const { return _members.length (); }
 
30092
  
 
30093
  /** Get the ith non-inline slice member. */
 
30094
  CT_Intro *member (int i) const { return _members.lookup (i); }
 
30095
  
 
30096
  /** Get the ith non-inline slice member code pattern. */
 
30097
  const Unit *member_pattern (int i) const { return _member_patterns.lookup (i); }
 
30098
  
 
30099
  /** Get the ith non-inline slice member unit. */
 
30100
  const Unit *member_unit (int i) const { return _member_units.lookup (i); }
 
30101
  
 
30102
  /** Set a flag to determine if this definition is part of an advice decl
 
30103
   *  \param a true, iff this definition is location within 'advice .. : ..'. */
 
30104
  void in_advice (bool a) { _in_advice = a; }
 
30105
  
 
30106
  /** true, iff this slice decl is located within 'advice .. : ..'. */
 
30107
  bool in_advice () const { return _in_advice; }
 
30108
  
 
30109
  /** Get the slice type (e.g. class or union) */
 
30110
  Type type () const;
 
30111
  
 
30112
  /** Get the definition of this slice or return 0 if there is no definition */
 
30113
  ACSliceInfo *definition () const;
 
30114
  
 
30115
  /** Get the base class pattern of this slice as a unit */
 
30116
  const Unit *base_pattern () const { return _base_pattern; }
 
30117
 
 
30118
  /** Get the inline member pattern of this slice as a unit */
 
30119
  const Unit *pattern () const { return _pattern; }
 
30120
public:
 
30121
  typedef AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CT_ClassSliceDecl *,AC::TL<Puma::Unit *,AC::TL<Puma::Unit *,AC::TL<Puma::Array< Puma::CT_Intro * >,AC::TL<Puma::Array< Puma::Unit * >,AC::TL<Puma::Array< Puma::Unit * >,AC::TL<bool,AC::TLE > > > > > > > > __AttrTypes;
 
30122
  const char *__attr_name (unsigned i) const {
 
30123
    static const char *names[] = { "_object", "_def_node", "_pattern", "_base_pattern", "_members", "_member_patterns", "_member_units", "_in_advice" }; return names[i];
 
30124
  }
 
30125
  const void *__attr (unsigned __i) const {
 
30126
    switch (__i) { case 0: return &_object; case 1: return &_def_node; case 2: return &_pattern; case 3: return &_base_pattern; case 5: return &_members; case 7: return &_member_patterns; case 9: return &_member_units; case 10: return &_in_advice; default: return 0; }
 
30127
  }
 
30128
#line 110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACSliceInfo.h"
 
30129
};
 
30130
 
 
30131
 
 
30132
} // namespace Puma
 
30133
 
 
30134
#endif /* __ACSliceInfo_h__ */
 
30135
 
 
30136
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
30137
 
 
30138
#line 30139 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
30139
 
 
30140
#ifndef __ac_fwd_ExtGnu__
 
30141
#define __ac_fwd_ExtGnu__
 
30142
class ExtGnu;
 
30143
namespace AC {
 
30144
  template <class JoinPoint>
 
30145
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
30146
  template <class JoinPoint>
 
30147
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
30148
  template <class JoinPoint>
 
30149
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_after (JoinPoint *tjp);
 
30150
  template <class JoinPoint>
 
30151
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_around (JoinPoint *tjp);
 
30152
  template <class JoinPoint>
 
30153
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
30154
  template <class JoinPoint>
 
30155
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
30156
  template <class JoinPoint>
 
30157
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
30158
  template <class JoinPoint>
 
30159
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
30160
  template <class JoinPoint>
 
30161
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_after (JoinPoint *tjp);
 
30162
  template <class JoinPoint>
 
30163
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
30164
  template <class JoinPoint>
 
30165
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
30166
  template <class JoinPoint>
 
30167
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_before (JoinPoint *tjp);
 
30168
  template <class JoinPoint>
 
30169
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
30170
  template <class JoinPoint>
 
30171
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_after (JoinPoint *tjp);
 
30172
  template <class JoinPoint>
 
30173
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
30174
  template <class JoinPoint>
 
30175
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
30176
  template <class JoinPoint>
 
30177
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
30178
  template <class JoinPoint>
 
30179
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
30180
  template <class JoinPoint>
 
30181
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_before (JoinPoint *tjp);
 
30182
  template <class JoinPoint>
 
30183
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_before (JoinPoint *tjp);
 
30184
  template <class JoinPoint>
 
30185
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_around (JoinPoint *tjp);
 
30186
}
 
30187
#endif
 
30188
 
 
30189
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
30190
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
30191
#endif
 
30192
 
 
30193
#ifndef __ac_fwd_CMatchSyntax__
 
30194
#define __ac_fwd_CMatchSyntax__
 
30195
class CMatchSyntax;
 
30196
namespace AC {
 
30197
  template <class JoinPoint>
 
30198
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a0_around (JoinPoint *tjp);
 
30199
  template <class JoinPoint>
 
30200
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a1_around (JoinPoint *tjp);
 
30201
  template <class JoinPoint>
 
30202
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a2_around (JoinPoint *tjp);
 
30203
  template <class JoinPoint>
 
30204
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a3_around (JoinPoint *tjp);
 
30205
  template <class JoinPoint>
 
30206
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a4_around (JoinPoint *tjp);
 
30207
  template <class JoinPoint>
 
30208
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a5_after (JoinPoint *tjp);
 
30209
  template <class JoinPoint>
 
30210
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a6_after (JoinPoint *tjp);
 
30211
  template <class JoinPoint>
 
30212
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a7_around (JoinPoint *tjp);
 
30213
  template <class JoinPoint>
 
30214
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a8_around (JoinPoint *tjp);
 
30215
  template <class JoinPoint>
 
30216
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a9_around (JoinPoint *tjp);
 
30217
  template <class JoinPoint>
 
30218
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a10_around (JoinPoint *tjp);
 
30219
  template <class JoinPoint>
 
30220
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a11_around (JoinPoint *tjp);
 
30221
  template <class JoinPoint>
 
30222
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a12_around (JoinPoint *tjp);
 
30223
  template <class JoinPoint>
 
30224
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a13_around (JoinPoint *tjp);
 
30225
  template <class JoinPoint>
 
30226
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a14_around (JoinPoint *tjp);
 
30227
  template <class JoinPoint>
 
30228
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a15_around (JoinPoint *tjp);
 
30229
  template <class JoinPoint>
 
30230
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a16_around (JoinPoint *tjp);
 
30231
  template <class JoinPoint>
 
30232
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a17_around (JoinPoint *tjp);
 
30233
  template <class JoinPoint>
 
30234
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a18_around (JoinPoint *tjp);
 
30235
  template <class JoinPoint>
 
30236
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a19_around (JoinPoint *tjp);
 
30237
  template <class JoinPoint>
 
30238
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a20_around (JoinPoint *tjp);
 
30239
  template <class JoinPoint>
 
30240
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a21_around (JoinPoint *tjp);
 
30241
  template <class JoinPoint>
 
30242
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a22_around (JoinPoint *tjp);
 
30243
  template <class JoinPoint>
 
30244
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a23_around (JoinPoint *tjp);
 
30245
  template <class JoinPoint>
 
30246
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a24_around (JoinPoint *tjp);
 
30247
  template <class JoinPoint>
 
30248
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a25_before (JoinPoint *tjp);
 
30249
}
 
30250
#endif
 
30251
 
 
30252
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
30253
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
30254
#endif
 
30255
 
 
30256
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
30257
// This file is part of PUMA.
 
30258
// Copyright (C) 1999-2003  The PUMA developer team.
 
30259
//                                                                
 
30260
// This program is free software;  you can redistribute it and/or 
 
30261
// modify it under the terms of the GNU General Public License as 
 
30262
// published by the Free Software Foundation; either version 2 of 
 
30263
// the License, or (at your option) any later version.            
 
30264
//                                                                
 
30265
// This program is distributed in the hope that it will be useful,
 
30266
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30267
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30268
// GNU General Public License for more details.                   
 
30269
//                                                                
 
30270
// You should have received a copy of the GNU General Public      
 
30271
// License along with this program; if not, write to the Free     
 
30272
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30273
// MA  02111-1307  USA                                            
 
30274
 
 
30275
#ifndef __Syntax_h__
 
30276
#define __Syntax_h__
 
30277
 
 
30278
/** \file
 
30279
 *  Basic syntactic analysis component. */
 
30280
 
 
30281
 
 
30282
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Builder.h"
 
30283
// This file is part of PUMA.
 
30284
// Copyright (C) 1999-2003  The PUMA developer team.
 
30285
//                                                                
 
30286
// This program is free software;  you can redistribute it and/or 
 
30287
// modify it under the terms of the GNU General Public License as 
 
30288
// published by the Free Software Foundation; either version 2 of 
 
30289
// the License, or (at your option) any later version.            
 
30290
//                                                                
 
30291
// This program is distributed in the hope that it will be useful,
 
30292
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30293
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30294
// GNU General Public License for more details.                   
 
30295
//                                                                
 
30296
// You should have received a copy of the GNU General Public      
 
30297
// License along with this program; if not, write to the Free     
 
30298
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30299
// MA  02111-1307  USA                                            
 
30300
 
 
30301
#ifndef __Builder_h__
 
30302
#define __Builder_h__
 
30303
 
 
30304
/** \file
 
30305
 *  Basic syntax tree builder component. */
 
30306
 
 
30307
 
 
30308
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorCollector.h"
 
30309
// This file is part of PUMA.
 
30310
// Copyright (C) 1999-2003  The PUMA developer team.
 
30311
//                                                                
 
30312
// This program is free software;  you can redistribute it and/or 
 
30313
// modify it under the terms of the GNU General Public License as 
 
30314
// published by the Free Software Foundation; either version 2 of 
 
30315
// the License, or (at your option) any later version.            
 
30316
//                                                                
 
30317
// This program is distributed in the hope that it will be useful,
 
30318
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30319
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30320
// GNU General Public License for more details.                   
 
30321
//                                                                
 
30322
// You should have received a copy of the GNU General Public      
 
30323
// License along with this program; if not, write to the Free     
 
30324
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30325
// MA  02111-1307  USA                                            
 
30326
 
 
30327
#ifndef __error_collector_h__
 
30328
#define __error_collector_h__
 
30329
 
 
30330
 
 
30331
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorCollector.h"
 
30332
using namespace std;
 
30333
 
 
30334
namespace Puma {
 
30335
 
 
30336
 
 
30337
 
 
30338
#line 30339 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
30339
} // closed Puma
 
30340
class CCExprResolve;
 
30341
class CExprResolve;
 
30342
class WinIfExists;
 
30343
class WinImportHandler;
 
30344
class WinMacros;
 
30345
class WinAsm;
 
30346
class WinDeclSpecs;
 
30347
class WinMemberExplSpec;
 
30348
class WinTypeKeywords;
 
30349
class WinFriend;
 
30350
class ExtAC;
 
30351
class ExtACBuilderCoupling;
 
30352
class ExtACSyntaxCoupling;
 
30353
class ExtACTree;
 
30354
class ExtACKeywords;
 
30355
class ExtGnu;
 
30356
class PragmaOnceUnitState;
 
30357
class PragmaOnce;
 
30358
class CMatchSyntax;
 
30359
namespace Puma {
 
30360
 
 
30361
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorCollector.h"
 
30362
class ErrorCollector : public ErrorSink {
 
30363
#line 30364 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
30364
  friend class ::CCExprResolve;
 
30365
  friend class ::CExprResolve;
 
30366
  friend class ::WinIfExists;
 
30367
  friend class ::WinImportHandler;
 
30368
  friend class ::WinMacros;
 
30369
  friend class ::WinAsm;
 
30370
  friend class ::WinDeclSpecs;
 
30371
  friend class ::WinMemberExplSpec;
 
30372
  friend class ::WinTypeKeywords;
 
30373
  friend class ::WinFriend;
 
30374
  friend class ::ExtAC;
 
30375
  friend class ::ExtACBuilderCoupling;
 
30376
  friend class ::ExtACSyntaxCoupling;
 
30377
  friend class ::ExtACTree;
 
30378
  friend class ::ExtACKeywords;
 
30379
  friend class ::ExtGnu;
 
30380
  friend class ::PragmaOnceUnitState;
 
30381
  friend class ::PragmaOnce;
 
30382
  friend class ::CMatchSyntax;
 
30383
 
 
30384
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorCollector.h"
 
30385
 
 
30386
  class Msg {
 
30387
#line 30388 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
30388
  friend class ::CCExprResolve;
 
30389
  friend class ::CExprResolve;
 
30390
  friend class ::WinIfExists;
 
30391
  friend class ::WinImportHandler;
 
30392
  friend class ::WinMacros;
 
30393
  friend class ::WinAsm;
 
30394
  friend class ::WinDeclSpecs;
 
30395
  friend class ::WinMemberExplSpec;
 
30396
  friend class ::WinTypeKeywords;
 
30397
  friend class ::WinFriend;
 
30398
  friend class ::ExtAC;
 
30399
  friend class ::ExtACBuilderCoupling;
 
30400
  friend class ::ExtACSyntaxCoupling;
 
30401
  friend class ::ExtACTree;
 
30402
  friend class ::ExtACKeywords;
 
30403
  friend class ::ExtGnu;
 
30404
  friend class ::PragmaOnceUnitState;
 
30405
  friend class ::PragmaOnce;
 
30406
  friend class ::CMatchSyntax;
 
30407
 
 
30408
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorCollector.h"
 
30409
 
 
30410
    ErrorSeverity _sev;
 
30411
    Location _loc;
 
30412
    bool _have_loc;
 
30413
    char *_msg;
 
30414
 
 
30415
  public:
 
30416
    Msg (const ErrorSeverity &s, Location l, const char *m);
 
30417
    Msg (const ErrorSeverity &s, const char *m);
 
30418
    ~Msg ();
 
30419
    bool operator == (const Msg&) const;
 
30420
    void Shift (ErrorSink &e);
 
30421
    const ErrorSeverity &severity () const { return _sev; }
 
30422
  public:
 
30423
  typedef AC::TL<Puma::ErrorSeverity,AC::TL<Puma::Location,AC::TL<bool,AC::TL<char *,AC::TLE > > > > __AttrTypes;
 
30424
  const char *__attr_name (unsigned i) const {
 
30425
    static const char *names[] = { "_sev", "_loc", "_have_loc", "_msg" }; return names[i];
 
30426
  }
 
30427
  const void *__attr (unsigned __i) const {
 
30428
    switch (__i) { case 0: return &_sev; case 1: return &_loc; case 2: return &_have_loc; case 3: return &_msg; default: return 0; }
 
30429
  }
 
30430
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorCollector.h"
 
30431
};
 
30432
 
 
30433
  Array<Msg*> _msgs;
 
30434
 
 
30435
  Location _loc;
 
30436
  bool _have_loc;
 
30437
  ErrorSeverity _sev;
 
30438
  std::ostringstream _msg;
 
30439
 
 
30440
  void clear ();
 
30441
 
 
30442
public:
 
30443
  ErrorCollector () { clear (); }
 
30444
  virtual ~ErrorCollector () {}
 
30445
 
 
30446
  ErrorCollector& operator << (const char *);
 
30447
  ErrorCollector& operator << (long);
 
30448
  ErrorCollector& operator << (unsigned);
 
30449
  ErrorCollector& operator << (int);
 
30450
  ErrorCollector& operator << (short);
 
30451
  ErrorCollector& operator << (char);
 
30452
  ErrorCollector& operator << (double);
 
30453
  ErrorCollector& operator << (const ErrorSeverity&);
 
30454
  ErrorCollector& operator << (Location);
 
30455
  ErrorCollector& operator << (const Printable&);
 
30456
  ErrorCollector& operator << (void (*f)(ErrorSink&));
 
30457
 
 
30458
  void endMessage ();
 
30459
 
 
30460
  int index ();
 
30461
  void index (int n);
 
30462
  void Shift (ErrorSink &e);
 
30463
 
 
30464
  const ErrorSeverity &severity () const;
 
30465
public:
 
30466
  typedef AC::TL<Puma::Array< Puma::ErrorCollector::Msg * >,AC::TL<Puma::Location,AC::TL<bool,AC::TL<Puma::ErrorSeverity,AC::TL<std::basic_ostringstream< char >,AC::TLE > > > > > __AttrTypes;
 
30467
  const char *__attr_name (unsigned i) const {
 
30468
    static const char *names[] = { "_msgs", "_loc", "_have_loc", "_sev", "_msg" }; return names[i];
 
30469
  }
 
30470
  const void *__attr (unsigned __i) const {
 
30471
    switch (__i) { case 1: return &_msgs; case 2: return &_loc; case 3: return &_have_loc; case 4: return &_sev; case 5: return &_msg; default: return 0; }
 
30472
  }
 
30473
#line 80 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorCollector.h"
 
30474
};
 
30475
  
 
30476
 
 
30477
} // namespace Puma
 
30478
 
 
30479
#endif /* __error_collector_h__ */
 
30480
 
 
30481
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PtrStack.h"
 
30482
// This file is part of PUMA.
 
30483
// Copyright (C) 1999-2003  The PUMA developer team.
 
30484
//                                                                
 
30485
// This program is free software;  you can redistribute it and/or 
 
30486
// modify it under the terms of the GNU General Public License as 
 
30487
// published by the Free Software Foundation; either version 2 of 
 
30488
// the License, or (at your option) any later version.            
 
30489
//                                                                
 
30490
// This program is distributed in the hope that it will be useful,
 
30491
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30492
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30493
// GNU General Public License for more details.                   
 
30494
//                                                                
 
30495
// You should have received a copy of the GNU General Public      
 
30496
// License along with this program; if not, write to the Free     
 
30497
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30498
// MA  02111-1307  USA                                            
 
30499
 
 
30500
#ifndef __PtrStack_h__
 
30501
#define __PtrStack_h__
 
30502
 
 
30503
// Stepped pointer stack.
 
30504
 
 
30505
 
 
30506
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Stack.h"
 
30507
// This file is part of PUMA.
 
30508
// Copyright (C) 1999-2003  The PUMA developer team.
 
30509
//                                                                
 
30510
// This program is free software;  you can redistribute it and/or 
 
30511
// modify it under the terms of the GNU General Public License as 
 
30512
// published by the Free Software Foundation; either version 2 of 
 
30513
// the License, or (at your option) any later version.            
 
30514
//                                                                
 
30515
// This program is distributed in the hope that it will be useful,
 
30516
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30517
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30518
// GNU General Public License for more details.                   
 
30519
//                                                                
 
30520
// You should have received a copy of the GNU General Public      
 
30521
// License along with this program; if not, write to the Free     
 
30522
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30523
// MA  02111-1307  USA                                            
 
30524
 
 
30525
#ifndef __stack_h__
 
30526
#define __stack_h__
 
30527
 
 
30528
 
 
30529
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Stack.h"
 
30530
namespace Puma {
 
30531
 
 
30532
template <class Item>
 
30533
class Stack : private Array<Item> {
 
30534
public:
 
30535
  Stack (long is = 8192, long incr = 8192) :
 
30536
    Array<Item> (is, incr) {}
 
30537
  void push (Item f) { Array<Item>::append (f); }
 
30538
  Item &top () const { long len = Array<Item>::length ()-1; 
 
30539
                       return Array<Item>::lookup (len >= 0 ? len : 0); }
 
30540
  void pop () { Array<Item>::remove (Array<Item>::length () - 1); }
 
30541
  long length () const { return Array<Item>::length (); }
 
30542
  void reset () { Array<Item>::reset (); }
 
30543
};
 
30544
 
 
30545
} // namespace Puma
 
30546
 
 
30547
#endif /* __stack_h__ */
 
30548
 
 
30549
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/BCStack.h"
 
30550
// This file is part of PUMA.
 
30551
// Copyright (C) 1999-2003  The PUMA developer team.
 
30552
//                                                                
 
30553
// This program is free software;  you can redistribute it and/or 
 
30554
// modify it under the terms of the GNU General Public License as 
 
30555
// published by the Free Software Foundation; either version 2 of 
 
30556
// the License, or (at your option) any later version.            
 
30557
//                                                                
 
30558
// This program is distributed in the hope that it will be useful,
 
30559
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30560
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30561
// GNU General Public License for more details.                   
 
30562
//                                                                
 
30563
// You should have received a copy of the GNU General Public      
 
30564
// License along with this program; if not, write to the Free     
 
30565
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30566
// MA  02111-1307  USA                                            
 
30567
 
 
30568
#ifndef __bcstack_h__
 
30569
#define __bcstack_h__
 
30570
 
 
30571
 
 
30572
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/BCList.h"
 
30573
// This file is part of PUMA.
 
30574
// Copyright (C) 1999-2003  The PUMA developer team.
 
30575
//                                                                
 
30576
// This program is free software;  you can redistribute it and/or 
 
30577
// modify it under the terms of the GNU General Public License as 
 
30578
// published by the Free Software Foundation; either version 2 of 
 
30579
// the License, or (at your option) any later version.            
 
30580
//                                                                
 
30581
// This program is distributed in the hope that it will be useful,
 
30582
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30583
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30584
// GNU General Public License for more details.                   
 
30585
//                                                                
 
30586
// You should have received a copy of the GNU General Public      
 
30587
// License along with this program; if not, write to the Free     
 
30588
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30589
// MA  02111-1307  USA                                            
 
30590
 
 
30591
#ifndef __bclist_h__
 
30592
#define __bclist_h__
 
30593
 
 
30594
namespace Puma {
 
30595
 
 
30596
template <class Item, int BUCKET_SIZE = 32>
 
30597
class BCList {
 
30598
 
 
30599
protected:
 
30600
  struct Bucket {
 
30601
    Bucket *_prev;
 
30602
    Bucket *_next;
 
30603
    Item *_write_pos;
 
30604
    Item *_end_pos;
 
30605
    Item _data[BUCKET_SIZE]; // large amount of token pointers to avoid new
 
30606
 
 
30607
    Bucket () : _prev (0), _next (0), _write_pos (_data),
 
30608
      _end_pos (_data + BUCKET_SIZE) {}
 
30609
    ~Bucket () { if (_next) delete _next; }
 
30610
    void clear () {
 
30611
      if (_next) delete _next;
 
30612
      _next = 0;
 
30613
      _write_pos = _data;
 
30614
    }
 
30615
    Item *first () { return _data; }
 
30616
    Item *pos () const { return _write_pos; }
 
30617
    Item *end () const { return _end_pos; }
 
30618
    bool full () const { return _write_pos == _end_pos; }
 
30619
    Bucket *new_bucket () {
 
30620
      _next = new Bucket;
 
30621
      _next->_prev = this;
 
30622
      return _next;
 
30623
    }
 
30624
    void add (Item token) {
 
30625
      *_write_pos = token;
 
30626
      _write_pos++;
 
30627
    }
 
30628
  };
 
30629
 
 
30630
  Bucket _first_bucket; // the first bucket is part of the container
 
30631
  Bucket *_last_bucket; // pointer to the last bucket for insertion
 
30632
 
 
30633
public:  
 
30634
  class Iterator {
 
30635
    friend class BCList<Item, BUCKET_SIZE>;
 
30636
 
 
30637
    Item *_item;
 
30638
    Bucket *_bucket;
 
30639
 
 
30640
    Iterator (Item *item, Bucket *bucket) :
 
30641
      _item (item), _bucket (bucket) {}
 
30642
 
 
30643
  public:
 
30644
    Iterator () : _item (0) {}
 
30645
    // this one is needed, because somewhere in Puma 0 is passed for an
 
30646
    // Iterator argument
 
30647
    Iterator (int i) { _item = 0; }
 
30648
    operator bool () const { return _item != 0; }
 
30649
 
 
30650
    // comparison function    
 
30651
    bool operator == (const Iterator& other) const {
 
30652
      return _item == other._item;
 
30653
    }
 
30654
    bool operator != (const Iterator &other) const {
 
30655
      return !(*this == other);
 
30656
    }
 
30657
 
 
30658
    // ++ operators to iterate
 
30659
    Iterator &operator ++ () {
 
30660
      _item++;
 
30661
      if (_item == _bucket->pos ()) {
 
30662
        _bucket = _bucket->_next;
 
30663
        _item = _bucket ? _bucket->first () : 0;
 
30664
      }
 
30665
      return *this;
 
30666
    }
 
30667
    Iterator operator ++ (int) {
 
30668
      Iterator temp (*this);
 
30669
      ++(*this);
 
30670
      return temp;
 
30671
    }
 
30672
    Iterator &operator -- () {
 
30673
      if (_item == _bucket->first ()) {
 
30674
        _bucket = _bucket->_prev;
 
30675
        if (_bucket) {
 
30676
          _item = _bucket->pos ();
 
30677
          _item--;
 
30678
        }
 
30679
        else {
 
30680
          _item = 0;
 
30681
        }
 
30682
      }
 
30683
      else {
 
30684
        _item--; 
 
30685
      }
 
30686
      return *this;
 
30687
    }
 
30688
    Iterator operator -- (int) {
 
30689
      Iterator temp (*this);
 
30690
      --(*this);
 
30691
      return temp;
 
30692
    }
 
30693
    
 
30694
    // access functions
 
30695
    Item &operator * () const { return *_item; }
 
30696
    Item *operator -> () const { return _item; }
 
30697
  };
 
30698
 
 
30699
  // constructor
 
30700
  BCList () : _last_bucket (&_first_bucket) {}
 
30701
  
 
30702
  // start and end of the list
 
30703
  Iterator begin () {
 
30704
    return Iterator (_first_bucket.first (), &_first_bucket);
 
30705
  }
 
30706
  Iterator end () const {
 
30707
    return Iterator ();
 
30708
  }
 
30709
  
 
30710
  // add an element to the list
 
30711
  Iterator add (Item item) {
 
30712
    // if the last bucket is full extend the bucket chain
 
30713
    if (_last_bucket->full ())
 
30714
      _last_bucket = _last_bucket->new_bucket ();
 
30715
    // the result is the position of the inserted item
 
30716
    Item *result = _last_bucket->pos ();
 
30717
    // add the item; the bucket is not full!
 
30718
    _last_bucket->add (item);
 
30719
    // return an iterator for the new item
 
30720
    return Iterator (result, _last_bucket);
 
30721
  }
 
30722
  
 
30723
  void reset () {
 
30724
    _first_bucket.clear ();
 
30725
  }
 
30726
};
 
30727
 
 
30728
} // namespace Puma
 
30729
 
 
30730
#endif /* __bclist_h__ */
 
30731
 
 
30732
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/BCStack.h"
 
30733
namespace Puma {
 
30734
 
 
30735
template <class Item, int BUCKET_SIZE = 32>
 
30736
class BCStack : private BCList<Item, BUCKET_SIZE> {
 
30737
  typedef BCList<Item, BUCKET_SIZE> List;
 
30738
public:
 
30739
  typedef typename List::Iterator Iterator;
 
30740
 
 
30741
private:
 
30742
  Iterator _tos;
 
30743
  long _length;
 
30744
  
 
30745
public:
 
30746
  BCStack () : _length (0L) {}
 
30747
  long length () const { return _length; }
 
30748
  void push (Item item) {
 
30749
    if (_tos)
 
30750
      ++_tos;
 
30751
    if (! _tos) 
 
30752
      _tos = add (item);
 
30753
    else
 
30754
      *_tos = item;
 
30755
    _length++;
 
30756
  }
 
30757
  Item &top () const { return *_tos; }
 
30758
  void pop () { --_tos; _length--; }
 
30759
  void reset () { List::reset (); _length = 0L; }
 
30760
  bool empty () const { return _length == 0L; }
 
30761
};
 
30762
 
 
30763
} // namespace Puma
 
30764
 
 
30765
#endif /* __bcstack_h__ */
 
30766
 
 
30767
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PtrStack.h"
 
30768
namespace Puma {
 
30769
 
 
30770
 
 
30771
template <class T>
 
30772
class PtrStack
 
30773
#ifndef __puma
 
30774
: private Array<T*>
 
30775
#endif
 
30776
 {
 
30777
  BCStack<long, 8192> _Indices;   // start indices
 
30778
  
 
30779
public:
 
30780
  PtrStack (long = 8192, long = 8192);
 
30781
  virtual ~PtrStack () {}
 
30782
 
 
30783
#ifndef __puma
 
30784
  void Push (const T *);  // push item on current stack
 
30785
#else
 
30786
  void Push (...);        // simple version for PUMA
 
30787
#endif
 
30788
  void Pop ();            // pop item from current stack
 
30789
  T *Top () const;        // get top item from current stack
 
30790
 
 
30791
  long Length () const;   // length of current stack
 
30792
  T *Get (long) const;    // get n-th item from current stack
 
30793
 
 
30794
  void New ();            // provide new stack
 
30795
  void Forget ();         // forget current stack (as if New() wasn't called)  
 
30796
  void Reject ();         // reject current stack (call Remove() for item)
 
30797
  void Destroy ();        // destroy current stack (call Delete() for item)
 
30798
  long Stacks () const;   // current number of stacks
 
30799
  
 
30800
  void Reset ();          // reset stack to initial state
 
30801
 
 
30802
protected:
 
30803
  virtual void Delete (); // delete item
 
30804
  virtual void Remove (); // remove item
 
30805
  
 
30806
private:
 
30807
  long Index () const;    // return current index
 
30808
  long Bottom () const;   // return start index of current stack
 
30809
};
 
30810
 
 
30811
#ifndef __puma
 
30812
 
 
30813
template <class T>
 
30814
inline PtrStack<T>::PtrStack (long is, long incr) :
 
30815
  Array<T*> (is, incr) {
 
30816
  New ();
 
30817
}
 
30818
 
 
30819
template <class T>
 
30820
inline void PtrStack<T>::Reset () { 
 
30821
  _Indices.reset ();
 
30822
  Array<T*>::reset ();
 
30823
  New ();
 
30824
}
 
30825
 
 
30826
template <class T>
 
30827
inline long PtrStack<T>::Index () const { 
 
30828
  return Array<T*>::length () - 1; 
 
30829
}
 
30830
 
 
30831
template <class T>
 
30832
inline long PtrStack<T>::Bottom () const { 
 
30833
  return _Indices.top (); 
 
30834
}
 
30835
 
 
30836
template <class T>
 
30837
inline long PtrStack<T>::Stacks () const { 
 
30838
  return _Indices.length (); 
 
30839
}
 
30840
 
 
30841
template <class T>
 
30842
inline long PtrStack<T>::Length () const { 
 
30843
  return Index () - Bottom (); 
 
30844
}
 
30845
 
 
30846
template <class T>
 
30847
inline T *PtrStack<T>::Top () const { 
 
30848
  if (Length () > 0)
 
30849
    return lookup (Index ()); 
 
30850
  else 
 
30851
    return (T*)0;
 
30852
}
 
30853
 
 
30854
template <class T>
 
30855
inline void PtrStack<T>::Push (const T *item) { 
 
30856
  append ((T*)item); 
 
30857
}
 
30858
 
 
30859
template <class T>
 
30860
inline void PtrStack<T>::Pop () { 
 
30861
  if (Length () > 0)
 
30862
    Array<T*>::remove (Index ()); 
 
30863
}
 
30864
 
 
30865
template <class T>
 
30866
inline T *PtrStack<T>::Get (long idx) const {
 
30867
  if (Length () <= 0 || idx >= Length () || idx < 0)
 
30868
    return (T*)0;
 
30869
  return lookup (Bottom () + 1 + idx);
 
30870
}
 
30871
 
 
30872
template <class T>
 
30873
inline void PtrStack<T>::New () { 
 
30874
  _Indices.push (Index ()); 
 
30875
}
 
30876
 
 
30877
template <class T>
 
30878
inline void PtrStack<T>::Forget () { 
 
30879
  _Indices.pop (); 
 
30880
}
 
30881
  
 
30882
template <class T>
 
30883
inline void PtrStack<T>::Reject () { 
 
30884
  while (Length () > 0)
 
30885
    Remove ();
 
30886
  Forget (); 
 
30887
}
 
30888
  
 
30889
template <class T>
 
30890
inline void PtrStack<T>::Destroy () { 
 
30891
  while (Length () > 0) {
 
30892
    Delete ();
 
30893
    Array<T*>::remove (Index ()); // Pop()
 
30894
  }
 
30895
  Forget (); 
 
30896
}
 
30897
 
 
30898
template <class T>
 
30899
inline void PtrStack<T>::Remove () {
 
30900
  Array<T*>::remove (Index ()); // Same as Pop()
 
30901
}
 
30902
  
 
30903
template <class T>
 
30904
inline void PtrStack<T>::Delete () {
 
30905
  T *item = Top (); 
 
30906
  if (item)
 
30907
    delete item;
 
30908
}
 
30909
 
 
30910
#endif /* __puma */
 
30911
 
 
30912
 
 
30913
} // namespace Puma
 
30914
 
 
30915
#endif /* __PtrStack_h__ */
 
30916
 
 
30917
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
30918
 
 
30919
#line 30920 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
30920
 
 
30921
#ifndef __ac_fwd_ExtACTree__
 
30922
#define __ac_fwd_ExtACTree__
 
30923
class ExtACTree;
 
30924
namespace AC {
 
30925
  template <class JoinPoint>
 
30926
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp);
 
30927
  template <class JoinPoint>
 
30928
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp);
 
30929
}
 
30930
#endif
 
30931
 
 
30932
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
30933
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
30934
#endif
 
30935
 
 
30936
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
30937
// This file is part of PUMA.
 
30938
// Copyright (C) 1999-2003  The PUMA developer team.
 
30939
//                                                                
 
30940
// This program is free software;  you can redistribute it and/or 
 
30941
// modify it under the terms of the GNU General Public License as 
 
30942
// published by the Free Software Foundation; either version 2 of 
 
30943
// the License, or (at your option) any later version.            
 
30944
//                                                                
 
30945
// This program is distributed in the hope that it will be useful,
 
30946
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30947
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30948
// GNU General Public License for more details.                   
 
30949
//                                                                
 
30950
// You should have received a copy of the GNU General Public      
 
30951
// License along with this program; if not, write to the Free     
 
30952
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30953
// MA  02111-1307  USA                                            
 
30954
 
 
30955
#ifndef __CTree_h__
 
30956
#define __CTree_h__
 
30957
 
 
30958
/** \file 
 
30959
 *  C/C++ syntax tree classes. */
 
30960
 
 
30961
namespace Puma {
 
30962
 
 
30963
 
 
30964
// Syntax tree node hierarchy:
 
30965
class CTree;
 
30966
class   CT_Statement;          
 
30967
class     CT_LabelStmt;
 
30968
class     CT_IfStmt;
 
30969
class     CT_IfElseStmt;
 
30970
class     CT_SwitchStmt;
 
30971
class     CT_BreakStmt;
 
30972
class     CT_ExprStmt;
 
30973
class     CT_WhileStmt;
 
30974
class     CT_DoStmt;
 
30975
class     CT_ForStmt;
 
30976
class     CT_ContinueStmt;
 
30977
class     CT_ReturnStmt;
 
30978
class     CT_GotoStmt;
 
30979
class     CT_DeclStmt;
 
30980
class     CT_CaseStmt;
 
30981
class     CT_DefaultStmt;
 
30982
class     CT_TryStmt;
 
30983
class   CT_Expression;
 
30984
class     CT_Call;
 
30985
class       CT_CallExpr;
 
30986
class       CT_ImplicitCall;
 
30987
class     CT_ThrowExpr;
 
30988
class     CT_NewExpr;
 
30989
class     CT_DeleteExpr;
 
30990
class     CT_ConstructExpr;
 
30991
class     CT_Integer;
 
30992
class     CT_Character;
 
30993
class       CT_WideCharacter;
 
30994
class     CT_Float;
 
30995
class     CT_Bool;
 
30996
class     CT_BracedExpr;
 
30997
class     CT_BinaryExpr;
 
30998
class       CT_MembPtrExpr;
 
30999
class         CT_MembRefExpr;
 
31000
class     CT_UnaryExpr;
 
31001
class       CT_PostfixExpr;
 
31002
class       CT_AddrExpr;
 
31003
class       CT_DerefExpr;
 
31004
class     CT_IfThenExpr;
 
31005
class     CT_CmpdLiteral;
 
31006
class     CT_IndexExpr;
 
31007
class     CT_CastExpr;
 
31008
class     CT_StaticCast;
 
31009
class       CT_ConstCast;
 
31010
class       CT_ReintCast;
 
31011
class       CT_DynamicCast;
 
31012
class     CT_TypeidExpr;
 
31013
class     CT_SizeofExpr;
 
31014
class     CT_MembDesignator;
 
31015
class     CT_IndexDesignator;
 
31016
class     CT_ImplicitCast;
 
31017
class     CT_MembInit;
 
31018
class   CT_DeclSpec;
 
31019
class     CT_PrimDeclSpec;
 
31020
class     CT_NamedType;
 
31021
class     CT_ClassSpec;
 
31022
class       CT_UnionSpec;
 
31023
class       CT_EnumSpec;
 
31024
class     CT_ExceptionSpec;
 
31025
class   CT_Declarator;
 
31026
class     CT_InitDeclarator;
 
31027
class     CT_BracedDeclarator;
 
31028
class     CT_ArrayDeclarator;
 
31029
class     CT_FctDeclarator;
 
31030
class     CT_RefDeclarator;
 
31031
class     CT_PtrDeclarator;
 
31032
class     CT_MembPtrDeclarator;
 
31033
class     CT_BitFieldDeclarator;
 
31034
class   CT_Decl;
 
31035
class     CT_ObjDecl;
 
31036
class     CT_ArgDecl;
 
31037
class     CT_AccessDecl;
 
31038
class       CT_UsingDecl;
 
31039
class     CT_FctDef;
 
31040
class     CT_AsmDef;
 
31041
class     CT_EnumDef;
 
31042
class     CT_ClassDef;
 
31043
class       CT_UnionDef;
 
31044
class     CT_Enumerator;
 
31045
class     CT_LinkageSpec;
 
31046
class     CT_Handler;
 
31047
class     CT_TemplateDecl;
 
31048
class     CT_TemplateParamDecl;
 
31049
class       CT_TypeParamDecl;
 
31050
class       CT_NonTypeParamDecl;
 
31051
class     CT_NamespaceDef;
 
31052
class     CT_NamespaceAliasDef;
 
31053
class     CT_UsingDirective;
 
31054
class     CT_Condition;
 
31055
class   CT_List;
 
31056
class     CT_CmpdStmt;
 
31057
class     CT_DeclSpecSeq;
 
31058
class     CT_HandlerSeq;
 
31059
class     CT_DesignatorSeq;
 
31060
class     CT_DeclList;
 
31061
class       CT_Program;
 
31062
class       CT_ArgDeclList;
 
31063
class         CT_ArgNameList;
 
31064
class       CT_ArgDeclSeq;
 
31065
class       CT_MembList;
 
31066
class     CT_ExprList;
 
31067
class     CT_DeclaratorList;
 
31068
class     CT_BaseSpecList;
 
31069
class     CT_MembInitList;
 
31070
class     CT_SimpleName;
 
31071
class       CT_SpecialName;
 
31072
class         CT_PrivateName;
 
31073
class         CT_OperatorName;
 
31074
class         CT_DestructorName;
 
31075
class         CT_ConversionName;
 
31076
class         CT_TemplateName;
 
31077
class       CT_QualName;
 
31078
class         CT_RootQualName;
 
31079
class     CT_String;
 
31080
class       CT_WideString;
 
31081
class     CT_TemplateParamList;
 
31082
class     CT_TemplateArgList;
 
31083
class   CT_Token;
 
31084
class   CT_Error;
 
31085
class   CT_BaseSpec;
 
31086
class   CT_AccessSpec;
 
31087
class   CT_ArrayDelimiter;
 
31088
class   CT_Any;
 
31089
class   CT_AnyList;
 
31090
class   CT_AnyExtension;
 
31091
class   CT_AnyCondition;
 
31092
 
 
31093
 
 
31094
} // namespace Puma
 
31095
 
 
31096
#include "Puma/ErrorSeverity.h"
 
31097
#include "Puma/CSemObject.h"
 
31098
#include "Puma/CSemScope.h"
 
31099
#include "Puma/CSemValue.h"
 
31100
#include "Puma/CExprValue.h"
 
31101
#include "Puma/CStrLiteral.h"
 
31102
#include "Puma/CTypeInfo.h"
 
31103
#include "Puma/Printable.h"
 
31104
#include "Puma/CTokens.h"
 
31105
#include "Puma/Token.h"
 
31106
 
 
31107
#include <iostream>
 
31108
#include <string.h>
 
31109
using namespace std;
 
31110
 
 
31111
namespace Puma {
 
31112
 
 
31113
 
 
31114
class ErrorStream;
 
31115
class CObjectInfo;
 
31116
class CStructure;
 
31117
 
 
31118
/*****************************************************************************/
 
31119
/*                                                                           */
 
31120
/*                    S y n t a x  t r e e  n o d e s                        */
 
31121
/*                                                                           */
 
31122
/*****************************************************************************/
 
31123
 
 
31124
/** \class CTree CTree.h Puma/CTree.h
 
31125
 *  Base class for all C/C++ syntax tree classes. 
 
31126
 *
 
31127
 *  The syntax tree is the result of the syntactic analysis of the input source 
 
31128
 *  code representing its syntactic structure according to the accepted grammar
 
31129
 *  (see class Syntax). 
 
31130
 *
 
31131
 *  Objects of this class and classes derived from this class are created by 
 
31132
 *  the tree builder component of %Puma during the parse process. A syntax tree 
 
31133
 *  shall be destroyed using the tree builder that has created it by calling its 
 
31134
 *  method Builder::destroy(CTree*) with the root node of the syntax tree as its 
 
31135
 *  argument.
 
31136
 *  
 
31137
 *  The navigation in the syntax tree is done using the methods CTree::Parent(), 
 
31138
 *  CTree::Sons(), and CTree::Son(int) const. In a syntax tree "sons" are 
 
31139
 *  understood as the syntactic child nodes of a syntax tree node, whereas 
 
31140
 *  "daughters" are understood are their semantic child nodes. 
 
31141
 *
 
31142
 *  Another way to traverse a syntax tree is to implement an own tree visitor 
 
31143
 *  based on class Puma::CVisitor. This is recommended especially for larger 
 
31144
 *  syntax trees.
 
31145
 *
 
31146
 *  A syntax tree node can be identified by comparing its node name with the node 
 
31147
 *  identifier of the expected syntax tree node:
 
31148
 *  \code if (node->NodeName() == Puma::CT_BinaryExpr::NodeId()) ... \endcode
 
31149
 *  
 
31150
 *  Based on the syntax tree further semantic analyses can be performed. Semantic 
 
31151
 *  information, like scope, value, type, and object information, is linked into 
 
31152
 *  the syntax tree. It can be accessed using the methods CTree::SemScope(), 
 
31153
 *  CTree::SemValue(), and CTree::SemObject(). Some nodes provide short-cuts to
 
31154
 *  the semantic type and value information by implementing the methods 
 
31155
 *  CTree::Type() and CTree::Value().
 
31156
 *
 
31157
 *  The information of the syntax tree can be used to perform high-level 
 
31158
 *  transformations of the source code (see class ManipCommander). */
 
31159
 
 
31160
#line 31161 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31161
} // closed Puma
 
31162
class CCExprResolve;
 
31163
class CExprResolve;
 
31164
class WinIfExists;
 
31165
class WinImportHandler;
 
31166
class WinMacros;
 
31167
class WinAsm;
 
31168
class WinDeclSpecs;
 
31169
class WinMemberExplSpec;
 
31170
class WinTypeKeywords;
 
31171
class WinFriend;
 
31172
class ExtAC;
 
31173
class ExtACBuilderCoupling;
 
31174
class ExtACSyntaxCoupling;
 
31175
class ExtACTree;
 
31176
class ExtACKeywords;
 
31177
class ExtGnu;
 
31178
class PragmaOnceUnitState;
 
31179
class PragmaOnce;
 
31180
class CMatchSyntax;
 
31181
namespace Puma {
 
31182
 
 
31183
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31184
 
 
31185
#line 31186 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31186
} // closed Puma
 
31187
 
 
31188
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
31189
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
31190
#include "CCExprResolveH.ah"
 
31191
#endif
 
31192
namespace Puma {
 
31193
 
 
31194
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31195
 
 
31196
#line 31197 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31197
} // closed Puma
 
31198
 
 
31199
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
31200
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
31201
#include "CExprResolveH.ah"
 
31202
#endif
 
31203
namespace Puma {
 
31204
 
 
31205
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31206
class CTree {
 
31207
#line 31208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31208
  friend class ::CCExprResolve;
 
31209
  friend class ::CExprResolve;
 
31210
  friend class ::WinIfExists;
 
31211
  friend class ::WinImportHandler;
 
31212
  friend class ::WinMacros;
 
31213
  friend class ::WinAsm;
 
31214
  friend class ::WinDeclSpecs;
 
31215
  friend class ::WinMemberExplSpec;
 
31216
  friend class ::WinTypeKeywords;
 
31217
  friend class ::WinFriend;
 
31218
  friend class ::ExtAC;
 
31219
  friend class ::ExtACBuilderCoupling;
 
31220
  friend class ::ExtACSyntaxCoupling;
 
31221
  friend class ::ExtACTree;
 
31222
  friend class ::ExtACKeywords;
 
31223
  friend class ::ExtGnu;
 
31224
  friend class ::PragmaOnceUnitState;
 
31225
  friend class ::PragmaOnce;
 
31226
  friend class ::CMatchSyntax;
 
31227
 
 
31228
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31229
 
 
31230
  CTree * _parent;
 
31231
 
 
31232
public:
 
31233
  /*DEBUG*/static int alloc;
 
31234
  /*DEBUG*/static int release;
 
31235
 
 
31236
protected:
 
31237
  /** Get the n-th son from given sons array. Skips empty (NULL) array items.
 
31238
   *  \param sons The sons array.
 
31239
   *  \param len Length of the sons array.
 
31240
   *  \param n Index of the son.
 
31241
   *  \return The n-th son or NULL. */
 
31242
  CTree *Son (CTree * const *sons, int len, int n) const;
 
31243
  /** Get the number of sons in the given sons array. Skips empty (NULL) array items.
 
31244
   *  \param sons The sons array.
 
31245
   *  \param len Length of the sons array. */
 
31246
  int Sons (CTree * const *sons, int len) const;
 
31247
  /** Replace a son.
 
31248
   *  \param sons The sons array.
 
31249
   *  \param len Length of the sons array.
 
31250
   *  \param old_son The son to replace.
 
31251
   *  \param new_son The new son. */
 
31252
  void ReplaceSon (CTree **sons, int len, CTree *old_son, CTree *new_son);
 
31253
  /** Replace a son if it equals the given son.
 
31254
   *  \param son The actual son.
 
31255
   *  \param old_son The son to replace, must match the actual son.
 
31256
   *  \param new_son The new son, overwrites the actual son. */
 
31257
  void ReplaceSon (CTree *&son, CTree *old_son, CTree *new_son);
 
31258
  /** Add a new son.
 
31259
   *  \param son The actual son.
 
31260
   *  \param new_son The new son, overwrites the actual son. */
 
31261
  void AddSon (CTree *&son, CTree *new_son);
 
31262
  /** Set the parent tree node.
 
31263
   *  \param parent The new parent tree node. */
 
31264
  void SetParent (const CTree *parent) { _parent = (CTree*)parent; }
 
31265
  /** Set the parent tree node of the given tree node.
 
31266
   *  \param node The tree node.
 
31267
   *  \param parent The new parent. */
 
31268
  void SetParent (CTree *node, const CTree *parent) { node->_parent = (CTree*)parent; }
 
31269
  
 
31270
protected:
 
31271
  /** Default constructor. */
 
31272
  CTree () : _parent(0) { /*DEBUG*/alloc++; }
 
31273
 
 
31274
public:
 
31275
  /** Destructor. */
 
31276
  virtual ~CTree () { /*DEBUG*/release++; }
 
31277
  /** Get the number of sons. */
 
31278
  virtual int Sons () const = 0;
 
31279
  /** Get the n-th son.
 
31280
   *  \param n The index of the son.
 
31281
   *  \return The n-th son or NULL. */
 
31282
  virtual CTree *Son (int n) const { return (CTree*)0; }
 
31283
  /** Get the node name (node identifier). */
 
31284
  virtual const char *NodeName () const = 0;
 
31285
  /** Get the first token of the syntactic construct represented by this sub-tree.
 
31286
   *  \return The token or NULL. */
 
31287
  virtual Token *token () const;
 
31288
  /** Get the last token of the syntactic construct represented by this sub-tree.
 
31289
   *  \return The token or NULL. */
 
31290
  virtual Token *end_token () const;
 
31291
  /** Get the CT_Token node of the first token of the syntactic construct represented by this sub-tree.
 
31292
   *  \return The token node or NULL. */
 
31293
  virtual CT_Token *token_node () const;
 
31294
  /** Get the CT_Token node of the last token of the syntactic construct represented by this sub-tree.
 
31295
   *  \return The token node or NULL. */
 
31296
  virtual CT_Token *end_token_node () const;
 
31297
  /** Replace a son.
 
31298
   *  \param old_son The son to replace.
 
31299
   *  \param new_son The son with which to replace. */
 
31300
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {}
 
31301
  /** Get the parent node.
 
31302
   *  \return The parent node or NULL. */
 
31303
  virtual CTree *Parent () const { return (CTree*)_parent; }
 
31304
 
 
31305
public: // semantic information
 
31306
  /** Get the semantic type of the node.
 
31307
   *  \return The type object or NULL. */
 
31308
  virtual CTypeInfo *Type () const { return (CTypeInfo*)0; }
 
31309
  /** Get the calculated value of the expression.
 
31310
   *  \return The value object or NULL. */
 
31311
  virtual CExprValue *Value () const { return (CExprValue*)0; }
 
31312
  
 
31313
  /** Get the scope opened by the node.
 
31314
   *  \return The scope object or NULL. */
 
31315
  virtual CSemScope *SemScope () const { return (CSemScope*)0; }
 
31316
  /** Get the semantic value of the node.
 
31317
   *  \return The value object or NULL. */
 
31318
  virtual CSemValue *SemValue () const { return (CSemValue*)0; }
 
31319
  /** Get the semantic information of the node.
 
31320
   *  \return The semantic object or NULL. */
 
31321
  virtual CSemObject *SemObject () const { return (CSemObject*)0; }
 
31322
  
 
31323
public: // node classification function
 
31324
  /** Get a pointer to CT_SimpleName if the current node represents a name.
 
31325
   *  \return The CT_SimpleName node or NULL. */
 
31326
  virtual CT_SimpleName *IsSimpleName () { return 0; }
 
31327
  /** Get a pointer to CT_String if the current node represents a string.
 
31328
   *  \return The CT_String node or NULL. */
 
31329
  virtual CT_String *IsString () { return 0; }
 
31330
  /** Get a pointer to CT_Declarator if the current node represents a declarator.
 
31331
   *  \return The CT_Declarator pointer or NULL. */
 
31332
  virtual CT_Declarator *IsDeclarator () { return 0; }
 
31333
  /** Get a pointer to CT_Statement if the current node represents a statement.
 
31334
   *  \return The CT_Statement pointer or NULL. */
 
31335
  virtual CT_Statement *IsStatement () { return 0; }
 
31336
  /** Get a pointer to CT_Expression if the current node represents a expression.
 
31337
   *  \return The CT_Expression pointer or NULL. */
 
31338
  virtual CT_Expression *IsExpression () { return 0; }
 
31339
  /** Get a pointer to CT_Decl if the current node represents a declaration.
 
31340
   *  \return The CT_Decl pointer or NULL. */
 
31341
  virtual CT_Decl *IsDeclaration () { return 0; }
 
31342
  /** Get a pointer to CT_Call if the current node represents a call expression.
 
31343
   *  \return The CT_Call pointer or NULL. */
 
31344
  virtual CT_Call *IsCall () { return 0; }
 
31345
   private:
 
31346
  typedef CTree CCExprResolveCTree;
 
31347
 
 
31348
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
31349
 public :
 
31350
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
31351
  typedef CTree CExprResolveCTree;
 
31352
 
 
31353
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
31354
 public :
 
31355
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
31356
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
31357
  const char *__attr_name (unsigned i) const {
 
31358
    static const char *names[] = { "_parent" }; return names[i];
 
31359
  }
 
31360
  const void *__attr (unsigned __i) const {
 
31361
    switch (__i) { case 0: return &_parent; default: return 0; }
 
31362
  }
 
31363
#line 339 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31364
};
 
31365
 
 
31366
/** \class CT_Error CTree.h Puma/CTree.h
 
31367
 *  Error tree node that is inserted into the tree for syntactic constructs
 
31368
 *  that could not be parsed. */
 
31369
 
 
31370
#line 31371 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31371
} // closed Puma
 
31372
class CCExprResolve;
 
31373
class CExprResolve;
 
31374
class WinIfExists;
 
31375
class WinImportHandler;
 
31376
class WinMacros;
 
31377
class WinAsm;
 
31378
class WinDeclSpecs;
 
31379
class WinMemberExplSpec;
 
31380
class WinTypeKeywords;
 
31381
class WinFriend;
 
31382
class ExtAC;
 
31383
class ExtACBuilderCoupling;
 
31384
class ExtACSyntaxCoupling;
 
31385
class ExtACTree;
 
31386
class ExtACKeywords;
 
31387
class ExtGnu;
 
31388
class PragmaOnceUnitState;
 
31389
class PragmaOnce;
 
31390
class CMatchSyntax;
 
31391
namespace Puma {
 
31392
 
 
31393
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31394
class CT_Error : public CTree {
 
31395
#line 31396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31396
  friend class ::CCExprResolve;
 
31397
  friend class ::CExprResolve;
 
31398
  friend class ::WinIfExists;
 
31399
  friend class ::WinImportHandler;
 
31400
  friend class ::WinMacros;
 
31401
  friend class ::WinAsm;
 
31402
  friend class ::WinDeclSpecs;
 
31403
  friend class ::WinMemberExplSpec;
 
31404
  friend class ::WinTypeKeywords;
 
31405
  friend class ::WinFriend;
 
31406
  friend class ::ExtAC;
 
31407
  friend class ::ExtACBuilderCoupling;
 
31408
  friend class ::ExtACSyntaxCoupling;
 
31409
  friend class ::ExtACTree;
 
31410
  friend class ::ExtACKeywords;
 
31411
  friend class ::ExtGnu;
 
31412
  friend class ::PragmaOnceUnitState;
 
31413
  friend class ::PragmaOnce;
 
31414
  friend class ::CMatchSyntax;
 
31415
 
 
31416
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31417
 
 
31418
public:
 
31419
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
31420
  static const char *NodeId ();
 
31421
  /** Get the name of the node. Can be compared with NodeId(). */
 
31422
  const char *NodeName () const { return NodeId (); }
 
31423
  /** Get the number of sons. */
 
31424
  int Sons () const { return 0; }
 
31425
public:
 
31426
  typedef AC::TLE __AttrTypes;
 
31427
  const char *__attr_name (unsigned i) const { return 0; }
 
31428
  const void *__attr (unsigned __i) const { return 0; }
 
31429
#line 352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31430
};
 
31431
 
 
31432
/** \class CT_Token CTree.h Puma/CTree.h
 
31433
 *  Tree node representing a single token in the source code. */
 
31434
 
 
31435
#line 31436 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31436
} // closed Puma
 
31437
class CCExprResolve;
 
31438
class CExprResolve;
 
31439
class WinIfExists;
 
31440
class WinImportHandler;
 
31441
class WinMacros;
 
31442
class WinAsm;
 
31443
class WinDeclSpecs;
 
31444
class WinMemberExplSpec;
 
31445
class WinTypeKeywords;
 
31446
class WinFriend;
 
31447
class ExtAC;
 
31448
class ExtACBuilderCoupling;
 
31449
class ExtACSyntaxCoupling;
 
31450
class ExtACTree;
 
31451
class ExtACKeywords;
 
31452
class ExtGnu;
 
31453
class PragmaOnceUnitState;
 
31454
class PragmaOnce;
 
31455
class CMatchSyntax;
 
31456
namespace Puma {
 
31457
 
 
31458
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31459
class CT_Token : public CTree {
 
31460
#line 31461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31461
  friend class ::CCExprResolve;
 
31462
  friend class ::CExprResolve;
 
31463
  friend class ::WinIfExists;
 
31464
  friend class ::WinImportHandler;
 
31465
  friend class ::WinMacros;
 
31466
  friend class ::WinAsm;
 
31467
  friend class ::WinDeclSpecs;
 
31468
  friend class ::WinMemberExplSpec;
 
31469
  friend class ::WinTypeKeywords;
 
31470
  friend class ::WinFriend;
 
31471
  friend class ::ExtAC;
 
31472
  friend class ::ExtACBuilderCoupling;
 
31473
  friend class ::ExtACSyntaxCoupling;
 
31474
  friend class ::ExtACTree;
 
31475
  friend class ::ExtACKeywords;
 
31476
  friend class ::ExtGnu;
 
31477
  friend class ::PragmaOnceUnitState;
 
31478
  friend class ::PragmaOnce;
 
31479
  friend class ::CMatchSyntax;
 
31480
 
 
31481
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31482
 
 
31483
  Token *_token;
 
31484
  unsigned long int _number;
 
31485
  
 
31486
public:
 
31487
  /** Constructor. 
 
31488
   *  \param token The represented token.
 
31489
   *  \param number The token number (a consecutive number). */
 
31490
  CT_Token (Token *token, unsigned long int number = 0) : 
 
31491
    _token (token), _number (number) {}
 
31492
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
31493
  static const char *NodeId ();
 
31494
  /** Get the name of the node. Can be compared with NodeId(). */
 
31495
  const char *NodeName () const { return NodeId (); }
 
31496
  /** Get the number of sons. */
 
31497
  int Sons () const { return 0; }
 
31498
  /** Get the represented token. */
 
31499
  Token *token () const { return _token; }
 
31500
  /** Get the represented token. */
 
31501
  Token *end_token () const { return _token; }
 
31502
  /** Get this. */
 
31503
  CT_Token *token_node () const { return (CT_Token*)this; }
 
31504
  /** Get this. */
 
31505
  CT_Token *end_token_node () const { return (CT_Token*)this; }
 
31506
  /** Set the token number. 
 
31507
   *  \param number The token number. */ 
 
31508
  void Number (unsigned long int number) { _number = number; }
 
31509
  /** Get the token number. Can be used to indentify this token. */
 
31510
  unsigned long int Number () const { return _number; }
 
31511
  
 
31512
public:
 
31513
  /** Own new operator reusing memory. */
 
31514
  void *operator new (size_t);
 
31515
  /** Own delete operator. */
 
31516
  void operator delete (void *);
 
31517
public:
 
31518
  typedef AC::TL<Puma::Token *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
31519
  const char *__attr_name (unsigned i) const {
 
31520
    static const char *names[] = { "_token", "_number" }; return names[i];
 
31521
  }
 
31522
  const void *__attr (unsigned __i) const {
 
31523
    switch (__i) { case 0: return &_token; case 1: return &_number; default: return 0; }
 
31524
  }
 
31525
#line 391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31526
};
 
31527
 
 
31528
/*****************************************************************************/
 
31529
/*                                                                           */
 
31530
/*                              List nodes                                   */
 
31531
/*                                                                           */
 
31532
/*****************************************************************************/
 
31533
 
 
31534
/** \class CT_List CTree.h Puma/CTree.h
 
31535
 *  Base class for tree nodes representing lists. */
 
31536
 
 
31537
#line 31538 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31538
} // closed Puma
 
31539
class CCExprResolve;
 
31540
class CExprResolve;
 
31541
class WinIfExists;
 
31542
class WinImportHandler;
 
31543
class WinMacros;
 
31544
class WinAsm;
 
31545
class WinDeclSpecs;
 
31546
class WinMemberExplSpec;
 
31547
class WinTypeKeywords;
 
31548
class WinFriend;
 
31549
class ExtAC;
 
31550
class ExtACBuilderCoupling;
 
31551
class ExtACSyntaxCoupling;
 
31552
class ExtACTree;
 
31553
class ExtACKeywords;
 
31554
class ExtGnu;
 
31555
class PragmaOnceUnitState;
 
31556
class PragmaOnce;
 
31557
class CMatchSyntax;
 
31558
namespace Puma {
 
31559
 
 
31560
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31561
class CT_List : public CTree {
 
31562
#line 31563 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31563
  friend class ::CCExprResolve;
 
31564
  friend class ::CExprResolve;
 
31565
  friend class ::WinIfExists;
 
31566
  friend class ::WinImportHandler;
 
31567
  friend class ::WinMacros;
 
31568
  friend class ::WinAsm;
 
31569
  friend class ::WinDeclSpecs;
 
31570
  friend class ::WinMemberExplSpec;
 
31571
  friend class ::WinTypeKeywords;
 
31572
  friend class ::WinFriend;
 
31573
  friend class ::ExtAC;
 
31574
  friend class ::ExtACBuilderCoupling;
 
31575
  friend class ::ExtACSyntaxCoupling;
 
31576
  friend class ::ExtACTree;
 
31577
  friend class ::ExtACKeywords;
 
31578
  friend class ::ExtGnu;
 
31579
  friend class ::PragmaOnceUnitState;
 
31580
  friend class ::PragmaOnce;
 
31581
  friend class ::CMatchSyntax;
 
31582
 
 
31583
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31584
 
 
31585
  Array<CTree*> _sons;
 
31586
  int _properties;
 
31587
 
 
31588
protected:
 
31589
  /** Constructor.
 
31590
   *  \param size The initial list size.
 
31591
   *  \param incr The initial increment count. 
 
31592
   *  \param props The list properties (bit array). */
 
31593
  CT_List(int size = 5, int incr = 5, int props = 0) : 
 
31594
    _sons (size, incr), _properties (props) {}
 
31595
 
 
31596
public:
 
31597
  /** %List properties. */
 
31598
  enum {
 
31599
    /** %List has a start token, like ':' in ":a(1),b(2)" */
 
31600
    OPEN = 1,         
 
31601
    /** %List has an end token */
 
31602
    CLOSE = 2,        
 
31603
    /** %List has opening and closing delimiters, like '(' and ')' */
 
31604
    OPEN_CLOSE = 3,   
 
31605
    /** %List has separators, like ',' */
 
31606
    SEPARATORS = 4,   
 
31607
    /** %List pretend to be empty, like for "(void)" */
 
31608
    FORCE_EMPTY = 8,  
 
31609
    /** %List has trailing separator, like "a,b,c," */
 
31610
    END_SEP = 16,     
 
31611
    /** %List has no separator before last element, like "(a,b...)" */
 
31612
    NO_LAST_SEP = 32, 
 
31613
    /** %List has an introduction chararacter, like "=" in "={a,b}" */
 
31614
    INTRO = 64        
 
31615
  };
 
31616
 
 
31617
  /** Get the number of list entries. */
 
31618
  int Entries () const;
 
31619
  /** Get the n-th list entry.
 
31620
   *  \param n The index of the entry. 
 
31621
   *  \return The list entry or NULL. */
 
31622
  CTree *Entry (int n) const;
 
31623
  /** Get the number of sons. */
 
31624
  int Sons () const { return _sons.length (); }
 
31625
  /** Get the n-th son.
 
31626
   *  \param n The index of the son. 
 
31627
   *  \return The n-th son or NULL. */
 
31628
  CTree *Son (int n) const { return _sons.lookup (n); }
 
31629
  /** Get the list properties. */
 
31630
  int GetProperties () const { return _properties; }
 
31631
  /** Add a list property.
 
31632
   *  \param p The property to add. */
 
31633
  void AddProperties (int p) { _properties |= p; }
 
31634
  /** Add a son.
 
31635
   *  \param s The son to add. */
 
31636
  void AddSon (CTree *s) { if (s) { _sons.append (s); SetParent (s, this); } }
 
31637
  /** Prepend a son.
 
31638
   *  \param s The son to prepend. */
 
31639
  void PrefixSon (CTree *s) { if (s) { _sons.prepend (s); SetParent (s, this); } }
 
31640
  /** Insert a son before another son.
 
31641
   *  \param before The son to insert the new son before.
 
31642
   *  \param son The son to insert. */
 
31643
  void InsertSon (CTree *before, CTree *son); 
 
31644
  /** Replace a son.
 
31645
   *  \param old_son The son to replace.
 
31646
   *  \param new_son The new son. */
 
31647
  void ReplaceSon (CTree *old_son, CTree *new_son);
 
31648
  /** Remove a son.
 
31649
   *  \param son The son to remove. */
 
31650
  void RemoveSon (CTree *son);
 
31651
  /** Insert a son at the given index. 
 
31652
   *  \param idx The index at which to insert.
 
31653
   *  \param s The son to insert. */
 
31654
  void InsertSon (int idx, CTree *s)
 
31655
   { if (s && idx <= Sons ()) { _sons.insert (idx, s); SetParent (s, this); } }
 
31656
  /** Replace the son at the given index.
 
31657
   *  \param idx The index of the son to replace.
 
31658
   *  \param s The new son. */
 
31659
  void ReplaceSon (int idx, CTree *s) 
 
31660
   { if (s && idx < Sons ()) { SetParent (_sons[idx], 0); _sons[idx] = s; SetParent (s, this); } }
 
31661
  /** Remove the son at the given index. 
 
31662
   *  \param idx The index of the son to remove. */
 
31663
  void RemoveSon (int idx) 
 
31664
   { if (idx < Sons ()) { SetParent (_sons[idx], 0); _sons.remove (idx); } }
 
31665
public:
 
31666
  typedef AC::TL<Puma::Array< Puma::CTree * >,AC::TL<int,AC::TLE > > __AttrTypes;
 
31667
  const char *__attr_name (unsigned i) const {
 
31668
    static const char *names[] = { "_sons", "_properties" }; return names[i];
 
31669
  }
 
31670
  const void *__attr (unsigned __i) const {
 
31671
    switch (__i) { case 1: return &_sons; case 2: return &_properties; default: return 0; }
 
31672
  }
 
31673
#line 482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31674
};
 
31675
 
 
31676
/** \class CT_ExprList CTree.h Puma/CTree.h
 
31677
 *  Tree node representing an expression list. */
 
31678
 
 
31679
#line 31680 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31680
} // closed Puma
 
31681
class CCExprResolve;
 
31682
class CExprResolve;
 
31683
class WinIfExists;
 
31684
class WinImportHandler;
 
31685
class WinMacros;
 
31686
class WinAsm;
 
31687
class WinDeclSpecs;
 
31688
class WinMemberExplSpec;
 
31689
class WinTypeKeywords;
 
31690
class WinFriend;
 
31691
class ExtAC;
 
31692
class ExtACBuilderCoupling;
 
31693
class ExtACSyntaxCoupling;
 
31694
class ExtACTree;
 
31695
class ExtACKeywords;
 
31696
class ExtGnu;
 
31697
class PragmaOnceUnitState;
 
31698
class PragmaOnce;
 
31699
class CMatchSyntax;
 
31700
namespace Puma {
 
31701
 
 
31702
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31703
class CT_ExprList : public CT_List, public CSemValue, public CSemObject {
 
31704
#line 31705 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31705
  friend class ::CCExprResolve;
 
31706
  friend class ::CExprResolve;
 
31707
  friend class ::WinIfExists;
 
31708
  friend class ::WinImportHandler;
 
31709
  friend class ::WinMacros;
 
31710
  friend class ::WinAsm;
 
31711
  friend class ::WinDeclSpecs;
 
31712
  friend class ::WinMemberExplSpec;
 
31713
  friend class ::WinTypeKeywords;
 
31714
  friend class ::WinFriend;
 
31715
  friend class ::ExtAC;
 
31716
  friend class ::ExtACBuilderCoupling;
 
31717
  friend class ::ExtACSyntaxCoupling;
 
31718
  friend class ::ExtACTree;
 
31719
  friend class ::ExtACKeywords;
 
31720
  friend class ::ExtGnu;
 
31721
  friend class ::PragmaOnceUnitState;
 
31722
  friend class ::PragmaOnce;
 
31723
  friend class ::CMatchSyntax;
 
31724
 
 
31725
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31726
 
 
31727
public:
 
31728
  /** Constructor. */
 
31729
  CT_ExprList () { AddProperties (SEPARATORS); }
 
31730
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
31731
  static const char *NodeId ();
 
31732
  /** Get the name of the node. Can be compared with NodeId(). */
 
31733
  const char *NodeName () const { return NodeId (); }
 
31734
 
 
31735
  /** Get the type of the last expression in the expression list.
 
31736
   *  \return The type or NULL. */
 
31737
  CTypeInfo *Type () const { return type; }
 
31738
  /** Get the value of the last expression in the expression list.
 
31739
   *  \return The value of NULL. */
 
31740
  CExprValue *Value () const { return value; }
 
31741
  /** Get the semantic value of the node. */
 
31742
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
31743
  /** Get the semantic information about the node. */
 
31744
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
31745
public:
 
31746
  typedef AC::TLE __AttrTypes;
 
31747
  const char *__attr_name (unsigned i) const { return 0; }
 
31748
  const void *__attr (unsigned __i) const { return 0; }
 
31749
#line 505 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31750
};
 
31751
 
 
31752
/** \class CT_DeclaratorList CTree.h Puma/CTree.h
 
31753
 *  Tree node representing a list of declarators. */
 
31754
 
 
31755
#line 31756 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31756
} // closed Puma
 
31757
class CCExprResolve;
 
31758
class CExprResolve;
 
31759
class WinIfExists;
 
31760
class WinImportHandler;
 
31761
class WinMacros;
 
31762
class WinAsm;
 
31763
class WinDeclSpecs;
 
31764
class WinMemberExplSpec;
 
31765
class WinTypeKeywords;
 
31766
class WinFriend;
 
31767
class ExtAC;
 
31768
class ExtACBuilderCoupling;
 
31769
class ExtACSyntaxCoupling;
 
31770
class ExtACTree;
 
31771
class ExtACKeywords;
 
31772
class ExtGnu;
 
31773
class PragmaOnceUnitState;
 
31774
class PragmaOnce;
 
31775
class CMatchSyntax;
 
31776
namespace Puma {
 
31777
 
 
31778
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31779
class CT_DeclaratorList : public CT_List {
 
31780
#line 31781 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31781
  friend class ::CCExprResolve;
 
31782
  friend class ::CExprResolve;
 
31783
  friend class ::WinIfExists;
 
31784
  friend class ::WinImportHandler;
 
31785
  friend class ::WinMacros;
 
31786
  friend class ::WinAsm;
 
31787
  friend class ::WinDeclSpecs;
 
31788
  friend class ::WinMemberExplSpec;
 
31789
  friend class ::WinTypeKeywords;
 
31790
  friend class ::WinFriend;
 
31791
  friend class ::ExtAC;
 
31792
  friend class ::ExtACBuilderCoupling;
 
31793
  friend class ::ExtACSyntaxCoupling;
 
31794
  friend class ::ExtACTree;
 
31795
  friend class ::ExtACKeywords;
 
31796
  friend class ::ExtGnu;
 
31797
  friend class ::PragmaOnceUnitState;
 
31798
  friend class ::PragmaOnce;
 
31799
  friend class ::CMatchSyntax;
 
31800
 
 
31801
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31802
 
 
31803
public:
 
31804
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
31805
  static const char *NodeId ();
 
31806
  /** Get the name of the node. Can be compared with NodeId(). */
 
31807
  const char *NodeName () const { return NodeId (); }
 
31808
public:
 
31809
  typedef AC::TLE __AttrTypes;
 
31810
  const char *__attr_name (unsigned i) const { return 0; }
 
31811
  const void *__attr (unsigned __i) const { return 0; }
 
31812
#line 515 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31813
};
 
31814
 
 
31815
/** \class CT_EnumeratorList CTree.h Puma/CTree.h
 
31816
 *  Tree node representing a list of enumerator constants. */
 
31817
 
 
31818
#line 31819 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31819
} // closed Puma
 
31820
class CCExprResolve;
 
31821
class CExprResolve;
 
31822
class WinIfExists;
 
31823
class WinImportHandler;
 
31824
class WinMacros;
 
31825
class WinAsm;
 
31826
class WinDeclSpecs;
 
31827
class WinMemberExplSpec;
 
31828
class WinTypeKeywords;
 
31829
class WinFriend;
 
31830
class ExtAC;
 
31831
class ExtACBuilderCoupling;
 
31832
class ExtACSyntaxCoupling;
 
31833
class ExtACTree;
 
31834
class ExtACKeywords;
 
31835
class ExtGnu;
 
31836
class PragmaOnceUnitState;
 
31837
class PragmaOnce;
 
31838
class CMatchSyntax;
 
31839
namespace Puma {
 
31840
 
 
31841
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31842
class CT_EnumeratorList : public CT_List {
 
31843
#line 31844 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31844
  friend class ::CCExprResolve;
 
31845
  friend class ::CExprResolve;
 
31846
  friend class ::WinIfExists;
 
31847
  friend class ::WinImportHandler;
 
31848
  friend class ::WinMacros;
 
31849
  friend class ::WinAsm;
 
31850
  friend class ::WinDeclSpecs;
 
31851
  friend class ::WinMemberExplSpec;
 
31852
  friend class ::WinTypeKeywords;
 
31853
  friend class ::WinFriend;
 
31854
  friend class ::ExtAC;
 
31855
  friend class ::ExtACBuilderCoupling;
 
31856
  friend class ::ExtACSyntaxCoupling;
 
31857
  friend class ::ExtACTree;
 
31858
  friend class ::ExtACKeywords;
 
31859
  friend class ::ExtGnu;
 
31860
  friend class ::PragmaOnceUnitState;
 
31861
  friend class ::PragmaOnce;
 
31862
  friend class ::CMatchSyntax;
 
31863
 
 
31864
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31865
 
 
31866
public:
 
31867
  /** Constructor. */
 
31868
  CT_EnumeratorList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
31869
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
31870
  static const char *NodeId ();
 
31871
  /** Get the name of the node. Can be compared with NodeId(). */
 
31872
  const char *NodeName () const { return NodeId (); }
 
31873
public:
 
31874
  typedef AC::TLE __AttrTypes;
 
31875
  const char *__attr_name (unsigned i) const { return 0; }
 
31876
  const void *__attr (unsigned __i) const { return 0; }
 
31877
#line 527 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31878
};
 
31879
   
 
31880
/** \class CT_DeclList CTree.h Puma/CTree.h
 
31881
 *  Tree node representing a list of declarations. */
 
31882
 
 
31883
#line 31884 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31884
} // closed Puma
 
31885
class CCExprResolve;
 
31886
class CExprResolve;
 
31887
class WinIfExists;
 
31888
class WinImportHandler;
 
31889
class WinMacros;
 
31890
class WinAsm;
 
31891
class WinDeclSpecs;
 
31892
class WinMemberExplSpec;
 
31893
class WinTypeKeywords;
 
31894
class WinFriend;
 
31895
class ExtAC;
 
31896
class ExtACBuilderCoupling;
 
31897
class ExtACSyntaxCoupling;
 
31898
class ExtACTree;
 
31899
class ExtACKeywords;
 
31900
class ExtGnu;
 
31901
class PragmaOnceUnitState;
 
31902
class PragmaOnce;
 
31903
class CMatchSyntax;
 
31904
namespace Puma {
 
31905
 
 
31906
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31907
class CT_DeclList : public CT_List {
 
31908
#line 31909 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31909
  friend class ::CCExprResolve;
 
31910
  friend class ::CExprResolve;
 
31911
  friend class ::WinIfExists;
 
31912
  friend class ::WinImportHandler;
 
31913
  friend class ::WinMacros;
 
31914
  friend class ::WinAsm;
 
31915
  friend class ::WinDeclSpecs;
 
31916
  friend class ::WinMemberExplSpec;
 
31917
  friend class ::WinTypeKeywords;
 
31918
  friend class ::WinFriend;
 
31919
  friend class ::ExtAC;
 
31920
  friend class ::ExtACBuilderCoupling;
 
31921
  friend class ::ExtACSyntaxCoupling;
 
31922
  friend class ::ExtACTree;
 
31923
  friend class ::ExtACKeywords;
 
31924
  friend class ::ExtGnu;
 
31925
  friend class ::PragmaOnceUnitState;
 
31926
  friend class ::PragmaOnce;
 
31927
  friend class ::CMatchSyntax;
 
31928
 
 
31929
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31930
 
 
31931
public:
 
31932
  /** Constructor. 
 
31933
   *  \param size The initial size of the list.
 
31934
   *  \param incr The initial increment count of the list. */
 
31935
  CT_DeclList (int size = 20, int incr = 20) : CT_List (size, incr) {}
 
31936
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
31937
  static const char *NodeId ();
 
31938
  /** Get the name of the node. Can be compared with NodeId(). */
 
31939
  const char *NodeName () const { return NodeId (); }
 
31940
  /** Set the linkage specifiers to each declaration in the list.
 
31941
   *  \param l The linkage specifiers node. */
 
31942
  void Linkage (CT_LinkageSpec *l);
 
31943
public:
 
31944
  typedef AC::TLE __AttrTypes;
 
31945
  const char *__attr_name (unsigned i) const { return 0; }
 
31946
  const void *__attr (unsigned __i) const { return 0; }
 
31947
#line 544 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31948
};
 
31949
 
 
31950
/** \class CT_DeclSpecSeq CTree.h Puma/CTree.h
 
31951
 *  Tree node representing a sequence of declaration specifiers. */
 
31952
 
 
31953
#line 31954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31954
} // closed Puma
 
31955
class CCExprResolve;
 
31956
class CExprResolve;
 
31957
class WinIfExists;
 
31958
class WinImportHandler;
 
31959
class WinMacros;
 
31960
class WinAsm;
 
31961
class WinDeclSpecs;
 
31962
class WinMemberExplSpec;
 
31963
class WinTypeKeywords;
 
31964
class WinFriend;
 
31965
class ExtAC;
 
31966
class ExtACBuilderCoupling;
 
31967
class ExtACSyntaxCoupling;
 
31968
class ExtACTree;
 
31969
class ExtACKeywords;
 
31970
class ExtGnu;
 
31971
class PragmaOnceUnitState;
 
31972
class PragmaOnce;
 
31973
class CMatchSyntax;
 
31974
namespace Puma {
 
31975
 
 
31976
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
31977
class CT_DeclSpecSeq : public CT_List {
 
31978
#line 31979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
31979
  friend class ::CCExprResolve;
 
31980
  friend class ::CExprResolve;
 
31981
  friend class ::WinIfExists;
 
31982
  friend class ::WinImportHandler;
 
31983
  friend class ::WinMacros;
 
31984
  friend class ::WinAsm;
 
31985
  friend class ::WinDeclSpecs;
 
31986
  friend class ::WinMemberExplSpec;
 
31987
  friend class ::WinTypeKeywords;
 
31988
  friend class ::WinFriend;
 
31989
  friend class ::ExtAC;
 
31990
  friend class ::ExtACBuilderCoupling;
 
31991
  friend class ::ExtACSyntaxCoupling;
 
31992
  friend class ::ExtACTree;
 
31993
  friend class ::ExtACKeywords;
 
31994
  friend class ::ExtGnu;
 
31995
  friend class ::PragmaOnceUnitState;
 
31996
  friend class ::PragmaOnce;
 
31997
  friend class ::CMatchSyntax;
 
31998
 
 
31999
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32000
 
 
32001
public:
 
32002
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32003
  static const char *NodeId ();
 
32004
  /** Get the name of the node. Can be compared with NodeId(). */
 
32005
  const char *NodeName () const { return NodeId (); }
 
32006
public:
 
32007
  typedef AC::TLE __AttrTypes;
 
32008
  const char *__attr_name (unsigned i) const { return 0; }
 
32009
  const void *__attr (unsigned __i) const { return 0; }
 
32010
#line 554 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32011
};
 
32012
 
 
32013
/** \class CT_CmpdStmt CTree.h Puma/CTree.h
 
32014
 *  Tree node representing a compound statement. */
 
32015
 
 
32016
#line 32017 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32017
} // closed Puma
 
32018
class CCExprResolve;
 
32019
class CExprResolve;
 
32020
class WinIfExists;
 
32021
class WinImportHandler;
 
32022
class WinMacros;
 
32023
class WinAsm;
 
32024
class WinDeclSpecs;
 
32025
class WinMemberExplSpec;
 
32026
class WinTypeKeywords;
 
32027
class WinFriend;
 
32028
class ExtAC;
 
32029
class ExtACBuilderCoupling;
 
32030
class ExtACSyntaxCoupling;
 
32031
class ExtACTree;
 
32032
class ExtACKeywords;
 
32033
class ExtGnu;
 
32034
class PragmaOnceUnitState;
 
32035
class PragmaOnce;
 
32036
class CMatchSyntax;
 
32037
namespace Puma {
 
32038
 
 
32039
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32040
class CT_CmpdStmt : public CT_List, public CSemScope {
 
32041
#line 32042 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32042
  friend class ::CCExprResolve;
 
32043
  friend class ::CExprResolve;
 
32044
  friend class ::WinIfExists;
 
32045
  friend class ::WinImportHandler;
 
32046
  friend class ::WinMacros;
 
32047
  friend class ::WinAsm;
 
32048
  friend class ::WinDeclSpecs;
 
32049
  friend class ::WinMemberExplSpec;
 
32050
  friend class ::WinTypeKeywords;
 
32051
  friend class ::WinFriend;
 
32052
  friend class ::ExtAC;
 
32053
  friend class ::ExtACBuilderCoupling;
 
32054
  friend class ::ExtACSyntaxCoupling;
 
32055
  friend class ::ExtACTree;
 
32056
  friend class ::ExtACKeywords;
 
32057
  friend class ::ExtGnu;
 
32058
  friend class ::PragmaOnceUnitState;
 
32059
  friend class ::PragmaOnce;
 
32060
  friend class ::CMatchSyntax;
 
32061
 
 
32062
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32063
 
 
32064
public:
 
32065
  /* Constructor. */
 
32066
  CT_CmpdStmt () { AddProperties (OPEN_CLOSE); }
 
32067
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32068
  static const char *NodeId ();
 
32069
  /** Get the name of the node. Can be compared with NodeId(). */
 
32070
  const char *NodeName () const { return NodeId (); }
 
32071
  /** Get the scope opened by the compound statement. */
 
32072
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
32073
public:
 
32074
  typedef AC::TLE __AttrTypes;
 
32075
  const char *__attr_name (unsigned i) const { return 0; }
 
32076
  const void *__attr (unsigned __i) const { return 0; }
 
32077
#line 568 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32078
};
 
32079
 
 
32080
/** \class CT_HandlerSeq CTree.h Puma/CTree.h
 
32081
 *  Tree node representing an exception handler sequence. */
 
32082
 
 
32083
#line 32084 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32084
} // closed Puma
 
32085
class CCExprResolve;
 
32086
class CExprResolve;
 
32087
class WinIfExists;
 
32088
class WinImportHandler;
 
32089
class WinMacros;
 
32090
class WinAsm;
 
32091
class WinDeclSpecs;
 
32092
class WinMemberExplSpec;
 
32093
class WinTypeKeywords;
 
32094
class WinFriend;
 
32095
class ExtAC;
 
32096
class ExtACBuilderCoupling;
 
32097
class ExtACSyntaxCoupling;
 
32098
class ExtACTree;
 
32099
class ExtACKeywords;
 
32100
class ExtGnu;
 
32101
class PragmaOnceUnitState;
 
32102
class PragmaOnce;
 
32103
class CMatchSyntax;
 
32104
namespace Puma {
 
32105
 
 
32106
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32107
class CT_HandlerSeq : public CT_List {
 
32108
#line 32109 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32109
  friend class ::CCExprResolve;
 
32110
  friend class ::CExprResolve;
 
32111
  friend class ::WinIfExists;
 
32112
  friend class ::WinImportHandler;
 
32113
  friend class ::WinMacros;
 
32114
  friend class ::WinAsm;
 
32115
  friend class ::WinDeclSpecs;
 
32116
  friend class ::WinMemberExplSpec;
 
32117
  friend class ::WinTypeKeywords;
 
32118
  friend class ::WinFriend;
 
32119
  friend class ::ExtAC;
 
32120
  friend class ::ExtACBuilderCoupling;
 
32121
  friend class ::ExtACSyntaxCoupling;
 
32122
  friend class ::ExtACTree;
 
32123
  friend class ::ExtACKeywords;
 
32124
  friend class ::ExtGnu;
 
32125
  friend class ::PragmaOnceUnitState;
 
32126
  friend class ::PragmaOnce;
 
32127
  friend class ::CMatchSyntax;
 
32128
 
 
32129
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32130
 
 
32131
public:
 
32132
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32133
  static const char *NodeId ();
 
32134
  /** Get the name of the node. Can be compared with NodeId(). */
 
32135
  const char *NodeName () const { return NodeId (); }
 
32136
public:
 
32137
  typedef AC::TLE __AttrTypes;
 
32138
  const char *__attr_name (unsigned i) const { return 0; }
 
32139
  const void *__attr (unsigned __i) const { return 0; }
 
32140
#line 578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32141
};
 
32142
 
 
32143
/** \class CT_TemplateParamList CTree.h Puma/CTree.h
 
32144
 *  Tree node representing a template parameter list. */
 
32145
 
 
32146
#line 32147 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32147
} // closed Puma
 
32148
class CCExprResolve;
 
32149
class CExprResolve;
 
32150
class WinIfExists;
 
32151
class WinImportHandler;
 
32152
class WinMacros;
 
32153
class WinAsm;
 
32154
class WinDeclSpecs;
 
32155
class WinMemberExplSpec;
 
32156
class WinTypeKeywords;
 
32157
class WinFriend;
 
32158
class ExtAC;
 
32159
class ExtACBuilderCoupling;
 
32160
class ExtACSyntaxCoupling;
 
32161
class ExtACTree;
 
32162
class ExtACKeywords;
 
32163
class ExtGnu;
 
32164
class PragmaOnceUnitState;
 
32165
class PragmaOnce;
 
32166
class CMatchSyntax;
 
32167
namespace Puma {
 
32168
 
 
32169
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32170
class CT_TemplateParamList : public CT_List, public CSemScope {
 
32171
#line 32172 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32172
  friend class ::CCExprResolve;
 
32173
  friend class ::CExprResolve;
 
32174
  friend class ::WinIfExists;
 
32175
  friend class ::WinImportHandler;
 
32176
  friend class ::WinMacros;
 
32177
  friend class ::WinAsm;
 
32178
  friend class ::WinDeclSpecs;
 
32179
  friend class ::WinMemberExplSpec;
 
32180
  friend class ::WinTypeKeywords;
 
32181
  friend class ::WinFriend;
 
32182
  friend class ::ExtAC;
 
32183
  friend class ::ExtACBuilderCoupling;
 
32184
  friend class ::ExtACSyntaxCoupling;
 
32185
  friend class ::ExtACTree;
 
32186
  friend class ::ExtACKeywords;
 
32187
  friend class ::ExtGnu;
 
32188
  friend class ::PragmaOnceUnitState;
 
32189
  friend class ::PragmaOnce;
 
32190
  friend class ::CMatchSyntax;
 
32191
 
 
32192
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32193
 
 
32194
public:
 
32195
  CT_TemplateParamList () { AddProperties (INTRO | SEPARATORS | OPEN_CLOSE); }
 
32196
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32197
  static const char *NodeId ();
 
32198
  /** Get the name of the node. Can be compared with NodeId(). */
 
32199
  const char *NodeName () const { return NodeId (); }
 
32200
  /** Get the scope opened by the template parameter list. */
 
32201
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
32202
public:
 
32203
  typedef AC::TLE __AttrTypes;
 
32204
  const char *__attr_name (unsigned i) const { return 0; }
 
32205
  const void *__attr (unsigned __i) const { return 0; }
 
32206
#line 591 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32207
};
 
32208
 
 
32209
/** \class CT_TemplateArgList CTree.h Puma/CTree.h
 
32210
 *  Tree node representing a template argument list. */
 
32211
 
 
32212
#line 32213 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32213
} // closed Puma
 
32214
class CCExprResolve;
 
32215
class CExprResolve;
 
32216
class WinIfExists;
 
32217
class WinImportHandler;
 
32218
class WinMacros;
 
32219
class WinAsm;
 
32220
class WinDeclSpecs;
 
32221
class WinMemberExplSpec;
 
32222
class WinTypeKeywords;
 
32223
class WinFriend;
 
32224
class ExtAC;
 
32225
class ExtACBuilderCoupling;
 
32226
class ExtACSyntaxCoupling;
 
32227
class ExtACTree;
 
32228
class ExtACKeywords;
 
32229
class ExtGnu;
 
32230
class PragmaOnceUnitState;
 
32231
class PragmaOnce;
 
32232
class CMatchSyntax;
 
32233
namespace Puma {
 
32234
 
 
32235
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32236
class CT_TemplateArgList : public CT_List {
 
32237
#line 32238 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32238
  friend class ::CCExprResolve;
 
32239
  friend class ::CExprResolve;
 
32240
  friend class ::WinIfExists;
 
32241
  friend class ::WinImportHandler;
 
32242
  friend class ::WinMacros;
 
32243
  friend class ::WinAsm;
 
32244
  friend class ::WinDeclSpecs;
 
32245
  friend class ::WinMemberExplSpec;
 
32246
  friend class ::WinTypeKeywords;
 
32247
  friend class ::WinFriend;
 
32248
  friend class ::ExtAC;
 
32249
  friend class ::ExtACBuilderCoupling;
 
32250
  friend class ::ExtACSyntaxCoupling;
 
32251
  friend class ::ExtACTree;
 
32252
  friend class ::ExtACKeywords;
 
32253
  friend class ::ExtGnu;
 
32254
  friend class ::PragmaOnceUnitState;
 
32255
  friend class ::PragmaOnce;
 
32256
  friend class ::CMatchSyntax;
 
32257
 
 
32258
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32259
 
 
32260
public:
 
32261
  /** Constructor. */
 
32262
  CT_TemplateArgList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
32263
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32264
  static const char *NodeId ();
 
32265
  /** Get the name of the node. Can be compared with NodeId(). */
 
32266
  const char *NodeName () const { return NodeId (); }
 
32267
public:
 
32268
  typedef AC::TLE __AttrTypes;
 
32269
  const char *__attr_name (unsigned i) const { return 0; }
 
32270
  const void *__attr (unsigned __i) const { return 0; }
 
32271
#line 603 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32272
};
 
32273
 
 
32274
/*****************************************************************************/
 
32275
/*                                                                           */
 
32276
/*                              Expressions                                  */
 
32277
/*                                                                           */
 
32278
/*****************************************************************************/
 
32279
 
 
32280
/** \class CT_Expression CTree.h Puma/CTree.h
 
32281
 *  Base class for all expression tree nodes. */
 
32282
 
 
32283
#line 32284 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32284
} // closed Puma
 
32285
class CCExprResolve;
 
32286
class CExprResolve;
 
32287
class WinIfExists;
 
32288
class WinImportHandler;
 
32289
class WinMacros;
 
32290
class WinAsm;
 
32291
class WinDeclSpecs;
 
32292
class WinMemberExplSpec;
 
32293
class WinTypeKeywords;
 
32294
class WinFriend;
 
32295
class ExtAC;
 
32296
class ExtACBuilderCoupling;
 
32297
class ExtACSyntaxCoupling;
 
32298
class ExtACTree;
 
32299
class ExtACKeywords;
 
32300
class ExtGnu;
 
32301
class PragmaOnceUnitState;
 
32302
class PragmaOnce;
 
32303
class CMatchSyntax;
 
32304
namespace Puma {
 
32305
 
 
32306
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32307
 
 
32308
#line 32309 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32309
} // closed Puma
 
32310
 
 
32311
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32312
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32313
#include "CCExprResolveH.ah"
 
32314
#endif
 
32315
namespace Puma {
 
32316
 
 
32317
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32318
 
 
32319
#line 32320 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32320
} // closed Puma
 
32321
 
 
32322
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32323
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32324
#include "CExprResolveH.ah"
 
32325
#endif
 
32326
namespace Puma {
 
32327
 
 
32328
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32329
class CT_Expression : public CTree, public CSemValue {
 
32330
#line 32331 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32331
  friend class ::CCExprResolve;
 
32332
  friend class ::CExprResolve;
 
32333
  friend class ::WinIfExists;
 
32334
  friend class ::WinImportHandler;
 
32335
  friend class ::WinMacros;
 
32336
  friend class ::WinAsm;
 
32337
  friend class ::WinDeclSpecs;
 
32338
  friend class ::WinMemberExplSpec;
 
32339
  friend class ::WinTypeKeywords;
 
32340
  friend class ::WinFriend;
 
32341
  friend class ::ExtAC;
 
32342
  friend class ::ExtACBuilderCoupling;
 
32343
  friend class ::ExtACSyntaxCoupling;
 
32344
  friend class ::ExtACTree;
 
32345
  friend class ::ExtACKeywords;
 
32346
  friend class ::ExtGnu;
 
32347
  friend class ::PragmaOnceUnitState;
 
32348
  friend class ::PragmaOnce;
 
32349
  friend class ::CMatchSyntax;
 
32350
 
 
32351
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32352
 
 
32353
protected:
 
32354
  /** Constructor. */
 
32355
  CT_Expression () {}
 
32356
 
 
32357
public:
 
32358
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32359
  static const char *NodeId ();
 
32360
  /** Get the name of the node. Can be compared with NodeId(). */
 
32361
  const char *NodeName () const { return NodeId (); }
 
32362
  /** Get the type of the expression.
 
32363
   *  \return The type information object or NULL. */
 
32364
  CTypeInfo *Type () const { return type; }
 
32365
  /** Get the value of the expression.
 
32366
   *  \return The value object or NULL. */
 
32367
  CExprValue *Value () const { return value; }
 
32368
  /** Get the semantic value information of the expression.
 
32369
   *  \return The value object or NULL. */
 
32370
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
32371
  /** Get this. */
 
32372
  virtual CT_Expression *IsExpression () { return this; }
 
32373
   private:
 
32374
  typedef CT_Expression CCExprResolveExpr;
 
32375
 
 
32376
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
32377
 public :
 
32378
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
32379
  typedef CT_Expression CExprResolveExpr;
 
32380
 
 
32381
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
32382
 public :
 
32383
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
32384
  typedef AC::TLE __AttrTypes;
 
32385
  const char *__attr_name (unsigned i) const { return 0; }
 
32386
  const void *__attr (unsigned __i) const { return 0; }
 
32387
#line 634 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32388
};
 
32389
 
 
32390
/** \class CT_Call CTree.h Puma/CTree.h
 
32391
 *  Tree node representing explicit or implicit function calls 
 
32392
 *  including built-in or user-defined functions and overloaded
 
32393
 *  operators. */
 
32394
 
 
32395
#line 32396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32396
} // closed Puma
 
32397
class CCExprResolve;
 
32398
class CExprResolve;
 
32399
class WinIfExists;
 
32400
class WinImportHandler;
 
32401
class WinMacros;
 
32402
class WinAsm;
 
32403
class WinDeclSpecs;
 
32404
class WinMemberExplSpec;
 
32405
class WinTypeKeywords;
 
32406
class WinFriend;
 
32407
class ExtAC;
 
32408
class ExtACBuilderCoupling;
 
32409
class ExtACSyntaxCoupling;
 
32410
class ExtACTree;
 
32411
class ExtACKeywords;
 
32412
class ExtGnu;
 
32413
class PragmaOnceUnitState;
 
32414
class PragmaOnce;
 
32415
class CMatchSyntax;
 
32416
namespace Puma {
 
32417
 
 
32418
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32419
 
 
32420
#line 32421 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32421
} // closed Puma
 
32422
 
 
32423
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32424
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32425
#include "CCExprResolveH.ah"
 
32426
#endif
 
32427
namespace Puma {
 
32428
 
 
32429
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32430
 
 
32431
#line 32432 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32432
} // closed Puma
 
32433
 
 
32434
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32435
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32436
#include "CExprResolveH.ah"
 
32437
#endif
 
32438
namespace Puma {
 
32439
 
 
32440
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32441
class CT_Call : public CT_Expression, public CSemObject {
 
32442
#line 32443 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32443
  friend class ::CCExprResolve;
 
32444
  friend class ::CExprResolve;
 
32445
  friend class ::WinIfExists;
 
32446
  friend class ::WinImportHandler;
 
32447
  friend class ::WinMacros;
 
32448
  friend class ::WinAsm;
 
32449
  friend class ::WinDeclSpecs;
 
32450
  friend class ::WinMemberExplSpec;
 
32451
  friend class ::WinTypeKeywords;
 
32452
  friend class ::WinFriend;
 
32453
  friend class ::ExtAC;
 
32454
  friend class ::ExtACBuilderCoupling;
 
32455
  friend class ::ExtACSyntaxCoupling;
 
32456
  friend class ::ExtACTree;
 
32457
  friend class ::ExtACKeywords;
 
32458
  friend class ::ExtGnu;
 
32459
  friend class ::PragmaOnceUnitState;
 
32460
  friend class ::PragmaOnce;
 
32461
  friend class ::CMatchSyntax;
 
32462
 
 
32463
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32464
 
 
32465
protected:
 
32466
  /** Constructor. */
 
32467
  CT_Call () {}
 
32468
  
 
32469
public:
 
32470
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32471
  static const char *NodeId ();
 
32472
  /** Get the name of the node. Can be compared with NodeId(). */
 
32473
  const char *NodeName () const { return NodeId (); }
 
32474
  /** Get the semantic information of the call. */
 
32475
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
32476
  /** Get this. */
 
32477
  CT_Call *IsCall () { return this; }
 
32478
   private:
 
32479
  typedef CT_Call CCExprResolveExpr;
 
32480
 
 
32481
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
32482
 public :
 
32483
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
32484
  typedef CT_Call CExprResolveExpr;
 
32485
 
 
32486
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
32487
 public :
 
32488
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
32489
  typedef AC::TLE __AttrTypes;
 
32490
  const char *__attr_name (unsigned i) const { return 0; }
 
32491
  const void *__attr (unsigned __i) const { return 0; }
 
32492
#line 654 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32493
};
 
32494
 
 
32495
/** \class CT_ImplicitCall CTree.h Puma/CTree.h
 
32496
 *  Tree node representing implicit function calls detected by
 
32497
 *  the semantic analysis. 
 
32498
 *  Example:
 
32499
 *  \code
 
32500
 * class Number {
 
32501
 *   int _n;
 
32502
 * public:
 
32503
 *   Number(int n) : _n(n) {}
 
32504
 *   int operator+(const Number& n) { return n._n + _n; }
 
32505
 * };
 
32506
 *     
 
32507
 * Number one(1), two(2);
 
32508
 * one + two;  // implicitely calls one.operator+(two)
 
32509
 *  \endcode */
 
32510
 
 
32511
#line 32512 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32512
} // closed Puma
 
32513
class CCExprResolve;
 
32514
class CExprResolve;
 
32515
class WinIfExists;
 
32516
class WinImportHandler;
 
32517
class WinMacros;
 
32518
class WinAsm;
 
32519
class WinDeclSpecs;
 
32520
class WinMemberExplSpec;
 
32521
class WinTypeKeywords;
 
32522
class WinFriend;
 
32523
class ExtAC;
 
32524
class ExtACBuilderCoupling;
 
32525
class ExtACSyntaxCoupling;
 
32526
class ExtACTree;
 
32527
class ExtACKeywords;
 
32528
class ExtGnu;
 
32529
class PragmaOnceUnitState;
 
32530
class PragmaOnce;
 
32531
class CMatchSyntax;
 
32532
namespace Puma {
 
32533
 
 
32534
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32535
 
 
32536
#line 32537 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32537
} // closed Puma
 
32538
 
 
32539
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32540
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32541
#include "CCExprResolveH.ah"
 
32542
#endif
 
32543
namespace Puma {
 
32544
 
 
32545
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32546
 
 
32547
#line 32548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32548
} // closed Puma
 
32549
 
 
32550
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32551
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32552
#include "CExprResolveH.ah"
 
32553
#endif
 
32554
namespace Puma {
 
32555
 
 
32556
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32557
class CT_ImplicitCall : public CT_Call {
 
32558
#line 32559 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32559
  friend class ::CCExprResolve;
 
32560
  friend class ::CExprResolve;
 
32561
  friend class ::WinIfExists;
 
32562
  friend class ::WinImportHandler;
 
32563
  friend class ::WinMacros;
 
32564
  friend class ::WinAsm;
 
32565
  friend class ::WinDeclSpecs;
 
32566
  friend class ::WinMemberExplSpec;
 
32567
  friend class ::WinTypeKeywords;
 
32568
  friend class ::WinFriend;
 
32569
  friend class ::ExtAC;
 
32570
  friend class ::ExtACBuilderCoupling;
 
32571
  friend class ::ExtACSyntaxCoupling;
 
32572
  friend class ::ExtACTree;
 
32573
  friend class ::ExtACKeywords;
 
32574
  friend class ::ExtGnu;
 
32575
  friend class ::PragmaOnceUnitState;
 
32576
  friend class ::PragmaOnce;
 
32577
  friend class ::CMatchSyntax;
 
32578
 
 
32579
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32580
 
 
32581
  CTree *_arg;
 
32582
 
 
32583
public:
 
32584
  /** Constructor.
 
32585
   *  \param arg The call argument. */
 
32586
  CT_ImplicitCall (CTree *arg) { AddSon (_arg, arg); }
 
32587
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32588
  static const char *NodeId ();
 
32589
  /** Get the name of the node. Can be compared with NodeId(). */
 
32590
  const char *NodeName () const { return NodeId (); }
 
32591
  /** Get the number of sons. */
 
32592
  int Sons () const { return 1; }
 
32593
  /** Get the n-th son.
 
32594
   *  \param n The index of the son.
 
32595
   *  \return The n-th son or NULL. */
 
32596
  CTree *Son (int n) const { return (n == 0) ? _arg : (CTree*)0; }
 
32597
  /** Replace a son.
 
32598
   *  \param old_son The son to replace.
 
32599
   *  \param new_son The new son. */
 
32600
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
32601
   { CTree::ReplaceSon (_arg, old_son, new_son); }
 
32602
   private:
 
32603
  typedef CT_ImplicitCall CCExprResolveExpr;
 
32604
 
 
32605
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
32606
 public :
 
32607
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
32608
  typedef CT_ImplicitCall CExprResolveExpr;
 
32609
 
 
32610
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
32611
 public :
 
32612
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
32613
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
32614
  const char *__attr_name (unsigned i) const {
 
32615
    static const char *names[] = { "_arg" }; return names[i];
 
32616
  }
 
32617
  const void *__attr (unsigned __i) const {
 
32618
    switch (__i) { case 0: return &_arg; default: return 0; }
 
32619
  }
 
32620
#line 693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32621
};
 
32622
 
 
32623
/** \class CT_String CTree.h Puma/CTree.h
 
32624
 *  Tree node representing a string literal. 
 
32625
 *  Example: \code "abc" \endcode */
 
32626
 
 
32627
#line 32628 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32628
} // closed Puma
 
32629
class CCExprResolve;
 
32630
class CExprResolve;
 
32631
class WinIfExists;
 
32632
class WinImportHandler;
 
32633
class WinMacros;
 
32634
class WinAsm;
 
32635
class WinDeclSpecs;
 
32636
class WinMemberExplSpec;
 
32637
class WinTypeKeywords;
 
32638
class WinFriend;
 
32639
class ExtAC;
 
32640
class ExtACBuilderCoupling;
 
32641
class ExtACSyntaxCoupling;
 
32642
class ExtACTree;
 
32643
class ExtACKeywords;
 
32644
class ExtGnu;
 
32645
class PragmaOnceUnitState;
 
32646
class PragmaOnce;
 
32647
class CMatchSyntax;
 
32648
namespace Puma {
 
32649
 
 
32650
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32651
 
 
32652
#line 32653 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32653
} // closed Puma
 
32654
 
 
32655
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32656
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32657
#include "CCExprResolveH.ah"
 
32658
#endif
 
32659
namespace Puma {
 
32660
 
 
32661
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32662
 
 
32663
#line 32664 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32664
} // closed Puma
 
32665
 
 
32666
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32667
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32668
#include "CExprResolveH.ah"
 
32669
#endif
 
32670
namespace Puma {
 
32671
 
 
32672
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32673
class CT_String : public CT_List, public CSemValue {
 
32674
#line 32675 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32675
  friend class ::CCExprResolve;
 
32676
  friend class ::CExprResolve;
 
32677
  friend class ::WinIfExists;
 
32678
  friend class ::WinImportHandler;
 
32679
  friend class ::WinMacros;
 
32680
  friend class ::WinAsm;
 
32681
  friend class ::WinDeclSpecs;
 
32682
  friend class ::WinMemberExplSpec;
 
32683
  friend class ::WinTypeKeywords;
 
32684
  friend class ::WinFriend;
 
32685
  friend class ::ExtAC;
 
32686
  friend class ::ExtACBuilderCoupling;
 
32687
  friend class ::ExtACSyntaxCoupling;
 
32688
  friend class ::ExtACTree;
 
32689
  friend class ::ExtACKeywords;
 
32690
  friend class ::ExtGnu;
 
32691
  friend class ::PragmaOnceUnitState;
 
32692
  friend class ::PragmaOnce;
 
32693
  friend class ::CMatchSyntax;
 
32694
 
 
32695
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32696
 
 
32697
public:
 
32698
  /** Constructor. 
 
32699
   *  \param size The number of sub-strings. */
 
32700
  CT_String (int size) : CT_List (size, 1) {}
 
32701
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32702
  static const char *NodeId ();
 
32703
  /** Get the name of the node. Can be compared with NodeId(). */
 
32704
  const char *NodeName () const { return NodeId (); }
 
32705
 
 
32706
  /** Get the type of the string. 
 
32707
   *  \return The type or NULL. */
 
32708
  CTypeInfo *Type () const { return type; }
 
32709
  /** Get the string value.
 
32710
   *  \return The value or NULL. */
 
32711
  CExprValue *Value () const { return value; }
 
32712
  /** Get the semantic value info object.
 
32713
   *  \return The semantic value object or NULL. */
 
32714
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
32715
  /** Get this. */
 
32716
  virtual CT_String *IsString () { return this; }
 
32717
   private:
 
32718
  typedef CT_String CCExprResolveExpr;
 
32719
 
 
32720
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
32721
 public :
 
32722
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
32723
  typedef CT_String CExprResolveExpr;
 
32724
 
 
32725
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
32726
 public :
 
32727
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
32728
  typedef AC::TLE __AttrTypes;
 
32729
  const char *__attr_name (unsigned i) const { return 0; }
 
32730
  const void *__attr (unsigned __i) const { return 0; }
 
32731
#line 719 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32732
};
 
32733
 
 
32734
/** \class CT_WideString CTree.h Puma/CTree.h
 
32735
 *  Tree node representing a wide string literal. 
 
32736
 *  Example: \code L"abc" \endcode */
 
32737
 
 
32738
#line 32739 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32739
} // closed Puma
 
32740
class CCExprResolve;
 
32741
class CExprResolve;
 
32742
class WinIfExists;
 
32743
class WinImportHandler;
 
32744
class WinMacros;
 
32745
class WinAsm;
 
32746
class WinDeclSpecs;
 
32747
class WinMemberExplSpec;
 
32748
class WinTypeKeywords;
 
32749
class WinFriend;
 
32750
class ExtAC;
 
32751
class ExtACBuilderCoupling;
 
32752
class ExtACSyntaxCoupling;
 
32753
class ExtACTree;
 
32754
class ExtACKeywords;
 
32755
class ExtGnu;
 
32756
class PragmaOnceUnitState;
 
32757
class PragmaOnce;
 
32758
class CMatchSyntax;
 
32759
namespace Puma {
 
32760
 
 
32761
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32762
 
 
32763
#line 32764 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32764
} // closed Puma
 
32765
 
 
32766
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32767
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32768
#include "CCExprResolveH.ah"
 
32769
#endif
 
32770
namespace Puma {
 
32771
 
 
32772
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32773
 
 
32774
#line 32775 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32775
} // closed Puma
 
32776
 
 
32777
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32778
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32779
#include "CExprResolveH.ah"
 
32780
#endif
 
32781
namespace Puma {
 
32782
 
 
32783
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32784
class CT_WideString : public CT_String {
 
32785
#line 32786 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32786
  friend class ::CCExprResolve;
 
32787
  friend class ::CExprResolve;
 
32788
  friend class ::WinIfExists;
 
32789
  friend class ::WinImportHandler;
 
32790
  friend class ::WinMacros;
 
32791
  friend class ::WinAsm;
 
32792
  friend class ::WinDeclSpecs;
 
32793
  friend class ::WinMemberExplSpec;
 
32794
  friend class ::WinTypeKeywords;
 
32795
  friend class ::WinFriend;
 
32796
  friend class ::ExtAC;
 
32797
  friend class ::ExtACBuilderCoupling;
 
32798
  friend class ::ExtACSyntaxCoupling;
 
32799
  friend class ::ExtACTree;
 
32800
  friend class ::ExtACKeywords;
 
32801
  friend class ::ExtGnu;
 
32802
  friend class ::PragmaOnceUnitState;
 
32803
  friend class ::PragmaOnce;
 
32804
  friend class ::CMatchSyntax;
 
32805
 
 
32806
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32807
 
 
32808
public:
 
32809
  /** Constructor.
 
32810
   *  \param size The number of sub-strings. */
 
32811
  CT_WideString (int size) : CT_String (size) {}
 
32812
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32813
  static const char *NodeId ();
 
32814
  /** Get the name of the node. Can be compared with NodeId(). */
 
32815
  const char *NodeName () const { return NodeId (); }
 
32816
   private:
 
32817
  typedef CT_WideString CCExprResolveExpr;
 
32818
 
 
32819
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
32820
 public :
 
32821
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
32822
  typedef CT_WideString CExprResolveExpr;
 
32823
 
 
32824
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
32825
 public :
 
32826
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
32827
  typedef AC::TLE __AttrTypes;
 
32828
  const char *__attr_name (unsigned i) const { return 0; }
 
32829
  const void *__attr (unsigned __i) const { return 0; }
 
32830
#line 733 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32831
};
 
32832
 
 
32833
/** \class CT_Integer CTree.h Puma/CTree.h
 
32834
 *  Tree node representing an integer constant. 
 
32835
 *  Example: \code 1234 \endcode */
 
32836
 
 
32837
#line 32838 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32838
} // closed Puma
 
32839
class CCExprResolve;
 
32840
class CExprResolve;
 
32841
class WinIfExists;
 
32842
class WinImportHandler;
 
32843
class WinMacros;
 
32844
class WinAsm;
 
32845
class WinDeclSpecs;
 
32846
class WinMemberExplSpec;
 
32847
class WinTypeKeywords;
 
32848
class WinFriend;
 
32849
class ExtAC;
 
32850
class ExtACBuilderCoupling;
 
32851
class ExtACSyntaxCoupling;
 
32852
class ExtACTree;
 
32853
class ExtACKeywords;
 
32854
class ExtGnu;
 
32855
class PragmaOnceUnitState;
 
32856
class PragmaOnce;
 
32857
class CMatchSyntax;
 
32858
namespace Puma {
 
32859
 
 
32860
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32861
 
 
32862
#line 32863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32863
} // closed Puma
 
32864
 
 
32865
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32866
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32867
#include "CCExprResolveH.ah"
 
32868
#endif
 
32869
namespace Puma {
 
32870
 
 
32871
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32872
 
 
32873
#line 32874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32874
} // closed Puma
 
32875
 
 
32876
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32877
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32878
#include "CExprResolveH.ah"
 
32879
#endif
 
32880
namespace Puma {
 
32881
 
 
32882
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32883
class CT_Integer : public CT_Expression {
 
32884
#line 32885 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32885
  friend class ::CCExprResolve;
 
32886
  friend class ::CExprResolve;
 
32887
  friend class ::WinIfExists;
 
32888
  friend class ::WinImportHandler;
 
32889
  friend class ::WinMacros;
 
32890
  friend class ::WinAsm;
 
32891
  friend class ::WinDeclSpecs;
 
32892
  friend class ::WinMemberExplSpec;
 
32893
  friend class ::WinTypeKeywords;
 
32894
  friend class ::WinFriend;
 
32895
  friend class ::ExtAC;
 
32896
  friend class ::ExtACBuilderCoupling;
 
32897
  friend class ::ExtACSyntaxCoupling;
 
32898
  friend class ::ExtACTree;
 
32899
  friend class ::ExtACKeywords;
 
32900
  friend class ::ExtGnu;
 
32901
  friend class ::PragmaOnceUnitState;
 
32902
  friend class ::PragmaOnce;
 
32903
  friend class ::CMatchSyntax;
 
32904
 
 
32905
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32906
 
 
32907
  CTree *_value;  // CT_Token
 
32908
 
 
32909
public:
 
32910
  /** Constructor.
 
32911
   *  \param token The token containing the integer value. */
 
32912
  CT_Integer (CTree *token) { AddSon (_value, token); }
 
32913
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32914
  static const char *NodeId ();
 
32915
  /** Get the name of the node. Can be compared with NodeId(). */
 
32916
  const char *NodeName () const { return NodeId (); }
 
32917
  /** Get the number of sons. */
 
32918
  int Sons () const { return _value ? 1 : 0; }
 
32919
  /** Get the n-th son.
 
32920
   *  \param n The index of the son.
 
32921
   *  \return The n-th son or NULL. */
 
32922
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
32923
  /** Replace a son.
 
32924
   *  \param old_son The son to replace.
 
32925
   *  \param new_son The new son. */
 
32926
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
32927
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
32928
   private:
 
32929
  typedef CT_Integer CCExprResolveExpr;
 
32930
 
 
32931
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
32932
 public :
 
32933
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
32934
  typedef CT_Integer CExprResolveExpr;
 
32935
 
 
32936
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
32937
 public :
 
32938
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
32939
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
32940
  const char *__attr_name (unsigned i) const {
 
32941
    static const char *names[] = { "_value" }; return names[i];
 
32942
  }
 
32943
  const void *__attr (unsigned __i) const {
 
32944
    switch (__i) { case 0: return &_value; default: return 0; }
 
32945
  }
 
32946
#line 760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32947
};
 
32948
 
 
32949
/** \class CT_Character CTree.h Puma/CTree.h
 
32950
 *  Tree node representing a single character constant. 
 
32951
 *  Example: \code 'a' \endcode */
 
32952
 
 
32953
#line 32954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32954
} // closed Puma
 
32955
class CCExprResolve;
 
32956
class CExprResolve;
 
32957
class WinIfExists;
 
32958
class WinImportHandler;
 
32959
class WinMacros;
 
32960
class WinAsm;
 
32961
class WinDeclSpecs;
 
32962
class WinMemberExplSpec;
 
32963
class WinTypeKeywords;
 
32964
class WinFriend;
 
32965
class ExtAC;
 
32966
class ExtACBuilderCoupling;
 
32967
class ExtACSyntaxCoupling;
 
32968
class ExtACTree;
 
32969
class ExtACKeywords;
 
32970
class ExtGnu;
 
32971
class PragmaOnceUnitState;
 
32972
class PragmaOnce;
 
32973
class CMatchSyntax;
 
32974
namespace Puma {
 
32975
 
 
32976
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32977
 
 
32978
#line 32979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32979
} // closed Puma
 
32980
 
 
32981
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32982
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32983
#include "CCExprResolveH.ah"
 
32984
#endif
 
32985
namespace Puma {
 
32986
 
 
32987
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32988
 
 
32989
#line 32990 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
32990
} // closed Puma
 
32991
 
 
32992
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32993
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32994
#include "CExprResolveH.ah"
 
32995
#endif
 
32996
namespace Puma {
 
32997
 
 
32998
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32999
class CT_Character : public CT_Expression {
 
33000
#line 33001 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33001
  friend class ::CCExprResolve;
 
33002
  friend class ::CExprResolve;
 
33003
  friend class ::WinIfExists;
 
33004
  friend class ::WinImportHandler;
 
33005
  friend class ::WinMacros;
 
33006
  friend class ::WinAsm;
 
33007
  friend class ::WinDeclSpecs;
 
33008
  friend class ::WinMemberExplSpec;
 
33009
  friend class ::WinTypeKeywords;
 
33010
  friend class ::WinFriend;
 
33011
  friend class ::ExtAC;
 
33012
  friend class ::ExtACBuilderCoupling;
 
33013
  friend class ::ExtACSyntaxCoupling;
 
33014
  friend class ::ExtACTree;
 
33015
  friend class ::ExtACKeywords;
 
33016
  friend class ::ExtGnu;
 
33017
  friend class ::PragmaOnceUnitState;
 
33018
  friend class ::PragmaOnce;
 
33019
  friend class ::CMatchSyntax;
 
33020
 
 
33021
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33022
 
 
33023
  CTree *_value;  // CT_Token
 
33024
 
 
33025
public:
 
33026
  /** Constructor.
 
33027
   *  \param token The token containing the character value. */
 
33028
  CT_Character (CTree *token) { AddSon (_value, token); }
 
33029
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33030
  static const char *NodeId ();
 
33031
  /** Get the name of the node. Can be compared with NodeId(). */
 
33032
  const char *NodeName () const { return NodeId (); }
 
33033
  /** Get the number of sons. */
 
33034
  int Sons () const { return 1; }
 
33035
  /** Get the n-th son.
 
33036
   *  \param n The index of the son.
 
33037
   *  \return The n-th son or NULL. */
 
33038
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
33039
  /** Replace a son.
 
33040
   *  \param old_son The son to replace.
 
33041
   *  \param new_son The new son. */
 
33042
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
33043
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
33044
   private:
 
33045
  typedef CT_Character CCExprResolveExpr;
 
33046
 
 
33047
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33048
 public :
 
33049
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33050
  typedef CT_Character CExprResolveExpr;
 
33051
 
 
33052
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33053
 public :
 
33054
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33055
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
33056
  const char *__attr_name (unsigned i) const {
 
33057
    static const char *names[] = { "_value" }; return names[i];
 
33058
  }
 
33059
  const void *__attr (unsigned __i) const {
 
33060
    switch (__i) { case 0: return &_value; default: return 0; }
 
33061
  }
 
33062
#line 787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33063
};
 
33064
 
 
33065
/** \class CT_WideCharacter CTree.h Puma/CTree.h
 
33066
 *  Tree node representing a wide character constant. 
 
33067
 *  Example: \code L'a' \endcode */
 
33068
 
 
33069
#line 33070 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33070
} // closed Puma
 
33071
class CCExprResolve;
 
33072
class CExprResolve;
 
33073
class WinIfExists;
 
33074
class WinImportHandler;
 
33075
class WinMacros;
 
33076
class WinAsm;
 
33077
class WinDeclSpecs;
 
33078
class WinMemberExplSpec;
 
33079
class WinTypeKeywords;
 
33080
class WinFriend;
 
33081
class ExtAC;
 
33082
class ExtACBuilderCoupling;
 
33083
class ExtACSyntaxCoupling;
 
33084
class ExtACTree;
 
33085
class ExtACKeywords;
 
33086
class ExtGnu;
 
33087
class PragmaOnceUnitState;
 
33088
class PragmaOnce;
 
33089
class CMatchSyntax;
 
33090
namespace Puma {
 
33091
 
 
33092
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33093
 
 
33094
#line 33095 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33095
} // closed Puma
 
33096
 
 
33097
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33098
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33099
#include "CCExprResolveH.ah"
 
33100
#endif
 
33101
namespace Puma {
 
33102
 
 
33103
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33104
 
 
33105
#line 33106 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33106
} // closed Puma
 
33107
 
 
33108
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33109
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33110
#include "CExprResolveH.ah"
 
33111
#endif
 
33112
namespace Puma {
 
33113
 
 
33114
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33115
class CT_WideCharacter : public CT_Character {
 
33116
#line 33117 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33117
  friend class ::CCExprResolve;
 
33118
  friend class ::CExprResolve;
 
33119
  friend class ::WinIfExists;
 
33120
  friend class ::WinImportHandler;
 
33121
  friend class ::WinMacros;
 
33122
  friend class ::WinAsm;
 
33123
  friend class ::WinDeclSpecs;
 
33124
  friend class ::WinMemberExplSpec;
 
33125
  friend class ::WinTypeKeywords;
 
33126
  friend class ::WinFriend;
 
33127
  friend class ::ExtAC;
 
33128
  friend class ::ExtACBuilderCoupling;
 
33129
  friend class ::ExtACSyntaxCoupling;
 
33130
  friend class ::ExtACTree;
 
33131
  friend class ::ExtACKeywords;
 
33132
  friend class ::ExtGnu;
 
33133
  friend class ::PragmaOnceUnitState;
 
33134
  friend class ::PragmaOnce;
 
33135
  friend class ::CMatchSyntax;
 
33136
 
 
33137
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33138
 
 
33139
public:
 
33140
  /** Constructor.
 
33141
   *  \param token The token containing the wide character value. */
 
33142
  CT_WideCharacter (CTree *token) : CT_Character (token) {}
 
33143
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33144
  static const char *NodeId ();
 
33145
  /** Get the name of the node. Can be compared with NodeId(). */
 
33146
  const char *NodeName () const { return NodeId (); }
 
33147
   private:
 
33148
  typedef CT_WideCharacter CCExprResolveExpr;
 
33149
 
 
33150
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33151
 public :
 
33152
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33153
  typedef CT_WideCharacter CExprResolveExpr;
 
33154
 
 
33155
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33156
 public :
 
33157
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33158
  typedef AC::TLE __AttrTypes;
 
33159
  const char *__attr_name (unsigned i) const { return 0; }
 
33160
  const void *__attr (unsigned __i) const { return 0; }
 
33161
#line 801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33162
};
 
33163
 
 
33164
/** \class CT_Float CTree.h Puma/CTree.h
 
33165
 *  Tree node representing a floating point constant. 
 
33166
 *  Example: \code 12.34 \endcode */
 
33167
 
 
33168
#line 33169 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33169
} // closed Puma
 
33170
class CCExprResolve;
 
33171
class CExprResolve;
 
33172
class WinIfExists;
 
33173
class WinImportHandler;
 
33174
class WinMacros;
 
33175
class WinAsm;
 
33176
class WinDeclSpecs;
 
33177
class WinMemberExplSpec;
 
33178
class WinTypeKeywords;
 
33179
class WinFriend;
 
33180
class ExtAC;
 
33181
class ExtACBuilderCoupling;
 
33182
class ExtACSyntaxCoupling;
 
33183
class ExtACTree;
 
33184
class ExtACKeywords;
 
33185
class ExtGnu;
 
33186
class PragmaOnceUnitState;
 
33187
class PragmaOnce;
 
33188
class CMatchSyntax;
 
33189
namespace Puma {
 
33190
 
 
33191
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33192
 
 
33193
#line 33194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33194
} // closed Puma
 
33195
 
 
33196
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33197
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33198
#include "CCExprResolveH.ah"
 
33199
#endif
 
33200
namespace Puma {
 
33201
 
 
33202
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33203
 
 
33204
#line 33205 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33205
} // closed Puma
 
33206
 
 
33207
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33208
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33209
#include "CExprResolveH.ah"
 
33210
#endif
 
33211
namespace Puma {
 
33212
 
 
33213
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33214
class CT_Float : public CT_Expression {
 
33215
#line 33216 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33216
  friend class ::CCExprResolve;
 
33217
  friend class ::CExprResolve;
 
33218
  friend class ::WinIfExists;
 
33219
  friend class ::WinImportHandler;
 
33220
  friend class ::WinMacros;
 
33221
  friend class ::WinAsm;
 
33222
  friend class ::WinDeclSpecs;
 
33223
  friend class ::WinMemberExplSpec;
 
33224
  friend class ::WinTypeKeywords;
 
33225
  friend class ::WinFriend;
 
33226
  friend class ::ExtAC;
 
33227
  friend class ::ExtACBuilderCoupling;
 
33228
  friend class ::ExtACSyntaxCoupling;
 
33229
  friend class ::ExtACTree;
 
33230
  friend class ::ExtACKeywords;
 
33231
  friend class ::ExtGnu;
 
33232
  friend class ::PragmaOnceUnitState;
 
33233
  friend class ::PragmaOnce;
 
33234
  friend class ::CMatchSyntax;
 
33235
 
 
33236
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33237
 
 
33238
  CTree *_value;  // CT_Token
 
33239
 
 
33240
public:
 
33241
  /** Constructor.
 
33242
   *  \param token The token containing the floating point value. */
 
33243
  CT_Float (CTree *token) { AddSon (_value, token); }
 
33244
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33245
  static const char *NodeId ();
 
33246
  /** Get the name of the node. Can be compared with NodeId(). */
 
33247
  const char *NodeName () const { return NodeId (); }
 
33248
  /** Get the number of sons. */
 
33249
  int Sons () const { return 1; }
 
33250
  /** Get the n-th son.
 
33251
   *  \param n The index of the son.
 
33252
   *  \return The n-th son or NULL. */
 
33253
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
33254
  /** Replace a son.
 
33255
   *  \param old_son The son to replace.
 
33256
   *  \param new_son The new son. */
 
33257
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
33258
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
33259
   private:
 
33260
  typedef CT_Float CCExprResolveExpr;
 
33261
 
 
33262
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33263
 public :
 
33264
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33265
  typedef CT_Float CExprResolveExpr;
 
33266
 
 
33267
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33268
 public :
 
33269
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33270
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
33271
  const char *__attr_name (unsigned i) const {
 
33272
    static const char *names[] = { "_value" }; return names[i];
 
33273
  }
 
33274
  const void *__attr (unsigned __i) const {
 
33275
    switch (__i) { case 0: return &_value; default: return 0; }
 
33276
  }
 
33277
#line 828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33278
};
 
33279
 
 
33280
/** \class CT_Bool CTree.h Puma/CTree.h
 
33281
 *  Tree node representing a boolean literal. 
 
33282
 *  Examples: 
 
33283
 *  \code 
 
33284
 * true
 
33285
 * false
 
33286
 *  \endcode */
 
33287
 
 
33288
#line 33289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33289
} // closed Puma
 
33290
class CCExprResolve;
 
33291
class CExprResolve;
 
33292
class WinIfExists;
 
33293
class WinImportHandler;
 
33294
class WinMacros;
 
33295
class WinAsm;
 
33296
class WinDeclSpecs;
 
33297
class WinMemberExplSpec;
 
33298
class WinTypeKeywords;
 
33299
class WinFriend;
 
33300
class ExtAC;
 
33301
class ExtACBuilderCoupling;
 
33302
class ExtACSyntaxCoupling;
 
33303
class ExtACTree;
 
33304
class ExtACKeywords;
 
33305
class ExtGnu;
 
33306
class PragmaOnceUnitState;
 
33307
class PragmaOnce;
 
33308
class CMatchSyntax;
 
33309
namespace Puma {
 
33310
 
 
33311
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33312
 
 
33313
#line 33314 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33314
} // closed Puma
 
33315
 
 
33316
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33317
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33318
#include "CCExprResolveH.ah"
 
33319
#endif
 
33320
namespace Puma {
 
33321
 
 
33322
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33323
 
 
33324
#line 33325 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33325
} // closed Puma
 
33326
 
 
33327
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33328
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33329
#include "CExprResolveH.ah"
 
33330
#endif
 
33331
namespace Puma {
 
33332
 
 
33333
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33334
class CT_Bool : public CT_Expression {
 
33335
#line 33336 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33336
  friend class ::CCExprResolve;
 
33337
  friend class ::CExprResolve;
 
33338
  friend class ::WinIfExists;
 
33339
  friend class ::WinImportHandler;
 
33340
  friend class ::WinMacros;
 
33341
  friend class ::WinAsm;
 
33342
  friend class ::WinDeclSpecs;
 
33343
  friend class ::WinMemberExplSpec;
 
33344
  friend class ::WinTypeKeywords;
 
33345
  friend class ::WinFriend;
 
33346
  friend class ::ExtAC;
 
33347
  friend class ::ExtACBuilderCoupling;
 
33348
  friend class ::ExtACSyntaxCoupling;
 
33349
  friend class ::ExtACTree;
 
33350
  friend class ::ExtACKeywords;
 
33351
  friend class ::ExtGnu;
 
33352
  friend class ::PragmaOnceUnitState;
 
33353
  friend class ::PragmaOnce;
 
33354
  friend class ::CMatchSyntax;
 
33355
 
 
33356
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33357
 
 
33358
  CTree *_value;  // CT_Token
 
33359
 
 
33360
public:
 
33361
  /** Constructor.
 
33362
   *  \param token The token containing the boolean value. */
 
33363
  CT_Bool (CTree *token) { AddSon (_value, token); }
 
33364
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33365
  static const char *NodeId ();
 
33366
  /** Get the name of the node. Can be compared with NodeId(). */
 
33367
  const char *NodeName () const { return NodeId (); }
 
33368
  /** Get the number of sons. */
 
33369
  int Sons () const { return 1; }
 
33370
  /** Get the n-th son.
 
33371
   *  \param n The index of the son.
 
33372
   *  \return The n-th son or NULL. */
 
33373
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
33374
  /** Replace a son.
 
33375
   *  \param old_son The son to replace.
 
33376
   *  \param new_son The new son. */
 
33377
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
33378
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
33379
   private:
 
33380
  typedef CT_Bool CCExprResolveExpr;
 
33381
 
 
33382
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33383
 public :
 
33384
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33385
  typedef CT_Bool CExprResolveExpr;
 
33386
 
 
33387
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33388
 public :
 
33389
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33390
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
33391
  const char *__attr_name (unsigned i) const {
 
33392
    static const char *names[] = { "_value" }; return names[i];
 
33393
  }
 
33394
  const void *__attr (unsigned __i) const {
 
33395
    switch (__i) { case 0: return &_value; default: return 0; }
 
33396
  }
 
33397
#line 859 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33398
};
 
33399
 
 
33400
/** \class CT_BracedExpr CTree.h Puma/CTree.h
 
33401
 *  Tree node representing a braced expression.
 
33402
 *  Example: \code (a+b) \endcode */
 
33403
 
 
33404
#line 33405 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33405
} // closed Puma
 
33406
class CCExprResolve;
 
33407
class CExprResolve;
 
33408
class WinIfExists;
 
33409
class WinImportHandler;
 
33410
class WinMacros;
 
33411
class WinAsm;
 
33412
class WinDeclSpecs;
 
33413
class WinMemberExplSpec;
 
33414
class WinTypeKeywords;
 
33415
class WinFriend;
 
33416
class ExtAC;
 
33417
class ExtACBuilderCoupling;
 
33418
class ExtACSyntaxCoupling;
 
33419
class ExtACTree;
 
33420
class ExtACKeywords;
 
33421
class ExtGnu;
 
33422
class PragmaOnceUnitState;
 
33423
class PragmaOnce;
 
33424
class CMatchSyntax;
 
33425
namespace Puma {
 
33426
 
 
33427
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33428
 
 
33429
#line 33430 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33430
} // closed Puma
 
33431
 
 
33432
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33433
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33434
#include "CCExprResolveH.ah"
 
33435
#endif
 
33436
namespace Puma {
 
33437
 
 
33438
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33439
 
 
33440
#line 33441 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33441
} // closed Puma
 
33442
 
 
33443
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33444
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33445
#include "CExprResolveH.ah"
 
33446
#endif
 
33447
namespace Puma {
 
33448
 
 
33449
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33450
class CT_BracedExpr : public CT_Expression {
 
33451
#line 33452 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33452
  friend class ::CCExprResolve;
 
33453
  friend class ::CExprResolve;
 
33454
  friend class ::WinIfExists;
 
33455
  friend class ::WinImportHandler;
 
33456
  friend class ::WinMacros;
 
33457
  friend class ::WinAsm;
 
33458
  friend class ::WinDeclSpecs;
 
33459
  friend class ::WinMemberExplSpec;
 
33460
  friend class ::WinTypeKeywords;
 
33461
  friend class ::WinFriend;
 
33462
  friend class ::ExtAC;
 
33463
  friend class ::ExtACBuilderCoupling;
 
33464
  friend class ::ExtACSyntaxCoupling;
 
33465
  friend class ::ExtACTree;
 
33466
  friend class ::ExtACKeywords;
 
33467
  friend class ::ExtGnu;
 
33468
  friend class ::PragmaOnceUnitState;
 
33469
  friend class ::PragmaOnce;
 
33470
  friend class ::CMatchSyntax;
 
33471
 
 
33472
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33473
 
 
33474
  CTree *sons[3]; // open, expr, close
 
33475
 
 
33476
public:
 
33477
  /** Constructor.
 
33478
   *  \param o The opening brace.
 
33479
   *  \param e The enclosed expression.
 
33480
   *  \param c The closing brace. */
 
33481
  CT_BracedExpr (CTree *o, CTree *e, CTree *c) { 
 
33482
    AddSon (sons[0], o); AddSon (sons[1], e); AddSon (sons[2], c); 
 
33483
  }
 
33484
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33485
  static const char *NodeId ();
 
33486
  /** Get the name of the node. Can be compared with NodeId(). */
 
33487
  const char *NodeName () const { return NodeId (); }
 
33488
  /** Get the number of sons. */
 
33489
  int Sons () const { return 3; }
 
33490
  /** Get the n-th son.
 
33491
   *  \param n The index of the son.
 
33492
   *  \return The n-th son or NULL. */
 
33493
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
33494
  /** Get the enclosed expression. */
 
33495
  CTree *Expr () const { return sons[1]; }
 
33496
  /** Get the type of the enclosed expression. */
 
33497
  CTypeInfo *Type () const { return Expr ()->Type (); }
 
33498
  /** Get the value of the enclosed expression. */
 
33499
  CExprValue *Value () const { return Expr ()->Value (); }
 
33500
  /** Get the semantic value of the expression. */
 
33501
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
33502
  /** Replace a son.
 
33503
   *  \param old_son The son to replace.
 
33504
   *  \param new_son The new son. */
 
33505
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
33506
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
33507
  }
 
33508
   private:
 
33509
  typedef CT_BracedExpr CCExprResolveExpr;
 
33510
 
 
33511
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33512
 public :
 
33513
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33514
  typedef CT_BracedExpr CExprResolveExpr;
 
33515
 
 
33516
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33517
 public :
 
33518
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33519
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
33520
  const char *__attr_name (unsigned i) const {
 
33521
    static const char *names[] = { "sons" }; return names[i];
 
33522
  }
 
33523
  const void *__attr (unsigned __i) const {
 
33524
    switch (__i) { case 0: return &sons; default: return 0; }
 
33525
  }
 
33526
#line 899 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33527
};
 
33528
 
 
33529
/** \class CT_SimpleName CTree.h Puma/CTree.h
 
33530
 *  Base class for all tree nodes representing a name. 
 
33531
 *  Example: \code a \endcode */
 
33532
 
 
33533
#line 33534 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33534
} // closed Puma
 
33535
class CCExprResolve;
 
33536
class CExprResolve;
 
33537
class WinIfExists;
 
33538
class WinImportHandler;
 
33539
class WinMacros;
 
33540
class WinAsm;
 
33541
class WinDeclSpecs;
 
33542
class WinMemberExplSpec;
 
33543
class WinTypeKeywords;
 
33544
class WinFriend;
 
33545
class ExtAC;
 
33546
class ExtACBuilderCoupling;
 
33547
class ExtACSyntaxCoupling;
 
33548
class ExtACTree;
 
33549
class ExtACKeywords;
 
33550
class ExtGnu;
 
33551
class PragmaOnceUnitState;
 
33552
class PragmaOnce;
 
33553
class CMatchSyntax;
 
33554
namespace Puma {
 
33555
 
 
33556
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33557
 
 
33558
#line 33559 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33559
} // closed Puma
 
33560
 
 
33561
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33562
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33563
#include "CCExprResolveH.ah"
 
33564
#endif
 
33565
namespace Puma {
 
33566
 
 
33567
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33568
 
 
33569
#line 33570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33570
} // closed Puma
 
33571
 
 
33572
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33573
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33574
#include "CExprResolveH.ah"
 
33575
#endif
 
33576
namespace Puma {
 
33577
 
 
33578
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33579
class CT_SimpleName : public CT_List, public Printable, 
 
33580
                      public CSemValue, public CSemObject {
 
33581
#line 33582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33582
  friend class ::CCExprResolve;
 
33583
  friend class ::CExprResolve;
 
33584
  friend class ::WinIfExists;
 
33585
  friend class ::WinImportHandler;
 
33586
  friend class ::WinMacros;
 
33587
  friend class ::WinAsm;
 
33588
  friend class ::WinDeclSpecs;
 
33589
  friend class ::WinMemberExplSpec;
 
33590
  friend class ::WinTypeKeywords;
 
33591
  friend class ::WinFriend;
 
33592
  friend class ::ExtAC;
 
33593
  friend class ::ExtACBuilderCoupling;
 
33594
  friend class ::ExtACSyntaxCoupling;
 
33595
  friend class ::ExtACTree;
 
33596
  friend class ::ExtACKeywords;
 
33597
  friend class ::ExtGnu;
 
33598
  friend class ::PragmaOnceUnitState;
 
33599
  friend class ::PragmaOnce;
 
33600
  friend class ::CMatchSyntax;
 
33601
 
 
33602
#line 905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33603
 
 
33604
protected:
 
33605
  /** Constructor.
 
33606
   *  \param size The number of sub-names (for qualified names). */
 
33607
  CT_SimpleName (int size) : CT_List (size, 1) {}
 
33608
  /** Constructor.
 
33609
   *  \param size The number of sub-names (for qualified names). 
 
33610
   *  \param properties Additional name list properties (for root qualified names). */
 
33611
  CT_SimpleName (int size, int properties) : 
 
33612
    CT_List (size, 2, properties) {}
 
33613
  
 
33614
public:
 
33615
  /** Constructor.
 
33616
   *  \param n The sub-tree containing the name. */
 
33617
  CT_SimpleName (CTree *n) : CT_List (1, 1) { AddSon (n); }
 
33618
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33619
  static const char *NodeId ();
 
33620
  /** Get the name of the node. Can be compared with NodeId(). */
 
33621
  const char *NodeName () const { return NodeId (); }
 
33622
  /** Get the string containing the name. */
 
33623
  virtual const char *Text () const 
 
33624
   { return Son (Sons ()-1)->token ()->text (); }
 
33625
  /** Print the name on the given stream. 
 
33626
   *  \param os The output stream. */
 
33627
  virtual void print (ostream &os) const { os << Text (); }
 
33628
  /** Get this. */
 
33629
  virtual CT_SimpleName *Name () const { return (CT_SimpleName*)this; }
 
33630
  /** Get the type of the entity represented by the name. */
 
33631
  CTypeInfo *Type () const { return type; }
 
33632
  /** Get the value of the entity represented by the name. */ 
 
33633
  CExprValue *Value () const { return value; }
 
33634
  /** Get the sematic value information of the name. */
 
33635
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
33636
  /** Get the sematic information about the name. */
 
33637
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
33638
  /** Get this. */
 
33639
  virtual CT_SimpleName *IsSimpleName () { return this; }  
 
33640
 
 
33641
public:
 
33642
  /** Own new operator reusing memory. */
 
33643
  void *operator new (size_t);
 
33644
  /** Own delete operator. */
 
33645
  void operator delete (void *);
 
33646
   private:
 
33647
  typedef CT_SimpleName CCExprResolveExpr;
 
33648
 
 
33649
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33650
 public :
 
33651
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33652
  typedef CT_SimpleName CExprResolveExpr;
 
33653
 
 
33654
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33655
 public :
 
33656
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33657
  typedef AC::TLE __AttrTypes;
 
33658
  const char *__attr_name (unsigned i) const { return 0; }
 
33659
  const void *__attr (unsigned __i) const { return 0; }
 
33660
#line 948 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33661
};
 
33662
 
 
33663
/** \class CT_SpecialName CTree.h Puma/CTree.h
 
33664
 *  Base class for tree nodes representing a special name, like destructor names. */
 
33665
 
 
33666
#line 33667 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33667
} // closed Puma
 
33668
class CCExprResolve;
 
33669
class CExprResolve;
 
33670
class WinIfExists;
 
33671
class WinImportHandler;
 
33672
class WinMacros;
 
33673
class WinAsm;
 
33674
class WinDeclSpecs;
 
33675
class WinMemberExplSpec;
 
33676
class WinTypeKeywords;
 
33677
class WinFriend;
 
33678
class ExtAC;
 
33679
class ExtACBuilderCoupling;
 
33680
class ExtACSyntaxCoupling;
 
33681
class ExtACTree;
 
33682
class ExtACKeywords;
 
33683
class ExtGnu;
 
33684
class PragmaOnceUnitState;
 
33685
class PragmaOnce;
 
33686
class CMatchSyntax;
 
33687
namespace Puma {
 
33688
 
 
33689
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33690
 
 
33691
#line 33692 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33692
} // closed Puma
 
33693
 
 
33694
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33695
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33696
#include "CCExprResolveH.ah"
 
33697
#endif
 
33698
namespace Puma {
 
33699
 
 
33700
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33701
 
 
33702
#line 33703 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33703
} // closed Puma
 
33704
 
 
33705
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33706
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33707
#include "CExprResolveH.ah"
 
33708
#endif
 
33709
namespace Puma {
 
33710
 
 
33711
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33712
class CT_SpecialName : public CT_SimpleName {
 
33713
#line 33714 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33714
  friend class ::CCExprResolve;
 
33715
  friend class ::CExprResolve;
 
33716
  friend class ::WinIfExists;
 
33717
  friend class ::WinImportHandler;
 
33718
  friend class ::WinMacros;
 
33719
  friend class ::WinAsm;
 
33720
  friend class ::WinDeclSpecs;
 
33721
  friend class ::WinMemberExplSpec;
 
33722
  friend class ::WinTypeKeywords;
 
33723
  friend class ::WinFriend;
 
33724
  friend class ::ExtAC;
 
33725
  friend class ::ExtACBuilderCoupling;
 
33726
  friend class ::ExtACSyntaxCoupling;
 
33727
  friend class ::ExtACTree;
 
33728
  friend class ::ExtACKeywords;
 
33729
  friend class ::ExtGnu;
 
33730
  friend class ::PragmaOnceUnitState;
 
33731
  friend class ::PragmaOnce;
 
33732
  friend class ::CMatchSyntax;
 
33733
 
 
33734
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33735
 
 
33736
  char *_name;
 
33737
  
 
33738
protected:
 
33739
  /** Constructor.
 
33740
   *  \param size The number of sub-names (for qualified names). */
 
33741
  CT_SpecialName (int size = 1) : CT_SimpleName (size), _name (0) {}
 
33742
  
 
33743
public:
 
33744
  /** Destructor. Deletes the name string. */
 
33745
  ~CT_SpecialName () { if (_name) delete[] _name; }
 
33746
  /** Get the string containing the name. */
 
33747
  const char *Text () const { return _name; }
 
33748
  /** Set the name. The name is copied.
 
33749
   *  \param n The name. */
 
33750
  void Name (const char *n) { 
 
33751
    if (n) { 
 
33752
      _name = new char[strlen(n) + 1];
 
33753
      strcpy (_name,n);
 
33754
    }
 
33755
  }
 
33756
 
 
33757
public:
 
33758
  /** Own new operator reusing memory. */
 
33759
  void *operator new (size_t);
 
33760
  /** Own delete operator. */
 
33761
  void operator delete (void *);
 
33762
   private:
 
33763
  typedef CT_SpecialName CCExprResolveExpr;
 
33764
 
 
33765
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33766
 public :
 
33767
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33768
  typedef CT_SpecialName CExprResolveExpr;
 
33769
 
 
33770
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33771
 public :
 
33772
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33773
  typedef AC::TL<char *,AC::TLE > __AttrTypes;
 
33774
  const char *__attr_name (unsigned i) const {
 
33775
    static const char *names[] = { "_name" }; return names[i];
 
33776
  }
 
33777
  const void *__attr (unsigned __i) const {
 
33778
    switch (__i) { case 0: return &_name; default: return 0; }
 
33779
  }
 
33780
#line 979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33781
};
 
33782
 
 
33783
/** \class CT_PrivateName CTree.h Puma/CTree.h
 
33784
 *  Tree node representing a private name. Private names 
 
33785
 *  are generated names for instance for abstract declarators.
 
33786
 *  Example: 
 
33787
 *  \code 
 
33788
 * void foo(int*);  // first parameter of foo has private name
 
33789
 *  \endcode */
 
33790
 
 
33791
#line 33792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33792
} // closed Puma
 
33793
class CCExprResolve;
 
33794
class CExprResolve;
 
33795
class WinIfExists;
 
33796
class WinImportHandler;
 
33797
class WinMacros;
 
33798
class WinAsm;
 
33799
class WinDeclSpecs;
 
33800
class WinMemberExplSpec;
 
33801
class WinTypeKeywords;
 
33802
class WinFriend;
 
33803
class ExtAC;
 
33804
class ExtACBuilderCoupling;
 
33805
class ExtACSyntaxCoupling;
 
33806
class ExtACTree;
 
33807
class ExtACKeywords;
 
33808
class ExtGnu;
 
33809
class PragmaOnceUnitState;
 
33810
class PragmaOnce;
 
33811
class CMatchSyntax;
 
33812
namespace Puma {
 
33813
 
 
33814
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33815
 
 
33816
#line 33817 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33817
} // closed Puma
 
33818
 
 
33819
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33820
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33821
#include "CCExprResolveH.ah"
 
33822
#endif
 
33823
namespace Puma {
 
33824
 
 
33825
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33826
 
 
33827
#line 33828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33828
} // closed Puma
 
33829
 
 
33830
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33831
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33832
#include "CExprResolveH.ah"
 
33833
#endif
 
33834
namespace Puma {
 
33835
 
 
33836
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33837
class CT_PrivateName : public CT_SpecialName {
 
33838
#line 33839 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33839
  friend class ::CCExprResolve;
 
33840
  friend class ::CExprResolve;
 
33841
  friend class ::WinIfExists;
 
33842
  friend class ::WinImportHandler;
 
33843
  friend class ::WinMacros;
 
33844
  friend class ::WinAsm;
 
33845
  friend class ::WinDeclSpecs;
 
33846
  friend class ::WinMemberExplSpec;
 
33847
  friend class ::WinTypeKeywords;
 
33848
  friend class ::WinFriend;
 
33849
  friend class ::ExtAC;
 
33850
  friend class ::ExtACBuilderCoupling;
 
33851
  friend class ::ExtACSyntaxCoupling;
 
33852
  friend class ::ExtACTree;
 
33853
  friend class ::ExtACKeywords;
 
33854
  friend class ::ExtGnu;
 
33855
  friend class ::PragmaOnceUnitState;
 
33856
  friend class ::PragmaOnce;
 
33857
  friend class ::CMatchSyntax;
 
33858
 
 
33859
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33860
 
 
33861
public:
 
33862
  /** Constructor.
 
33863
   *  \param n The private (generated) name. */
 
33864
  CT_PrivateName (const char *n) { Name (n); }
 
33865
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33866
  static const char *NodeId ();
 
33867
  /** Get the name of the node. Can be compared with NodeId(). */
 
33868
  const char *NodeName () const { return NodeId (); }
 
33869
  /** Get the number of sons. */
 
33870
  int Sons () const { return 0; }
 
33871
  /** Get the n-th son.
 
33872
   *  \param n The index of the son.
 
33873
   *  \return The n-th son or NULL. */
 
33874
  CTree *Son (int n) const { return (CTree*)0; }
 
33875
 
 
33876
public:
 
33877
  /** Own new operator reusing memory. */
 
33878
  void *operator new (size_t);
 
33879
  /** Own delete operator. */
 
33880
  void operator delete (void *);
 
33881
   private:
 
33882
  typedef CT_PrivateName CCExprResolveExpr;
 
33883
 
 
33884
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33885
 public :
 
33886
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33887
  typedef CT_PrivateName CExprResolveExpr;
 
33888
 
 
33889
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33890
 public :
 
33891
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33892
  typedef AC::TLE __AttrTypes;
 
33893
  const char *__attr_name (unsigned i) const { return 0; }
 
33894
  const void *__attr (unsigned __i) const { return 0; }
 
33895
#line 1009 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33896
};
 
33897
 
 
33898
/** \class CT_DestructorName CTree.h Puma/CTree.h
 
33899
 *  Tree node representing a destructor name.
 
33900
 *  Example: \code ~X \endcode */
 
33901
 
 
33902
#line 33903 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33903
} // closed Puma
 
33904
class CCExprResolve;
 
33905
class CExprResolve;
 
33906
class WinIfExists;
 
33907
class WinImportHandler;
 
33908
class WinMacros;
 
33909
class WinAsm;
 
33910
class WinDeclSpecs;
 
33911
class WinMemberExplSpec;
 
33912
class WinTypeKeywords;
 
33913
class WinFriend;
 
33914
class ExtAC;
 
33915
class ExtACBuilderCoupling;
 
33916
class ExtACSyntaxCoupling;
 
33917
class ExtACTree;
 
33918
class ExtACKeywords;
 
33919
class ExtGnu;
 
33920
class PragmaOnceUnitState;
 
33921
class PragmaOnce;
 
33922
class CMatchSyntax;
 
33923
namespace Puma {
 
33924
 
 
33925
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33926
 
 
33927
#line 33928 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33928
} // closed Puma
 
33929
 
 
33930
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33931
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33932
#include "CCExprResolveH.ah"
 
33933
#endif
 
33934
namespace Puma {
 
33935
 
 
33936
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33937
 
 
33938
#line 33939 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33939
} // closed Puma
 
33940
 
 
33941
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33942
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33943
#include "CExprResolveH.ah"
 
33944
#endif
 
33945
namespace Puma {
 
33946
 
 
33947
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33948
class CT_DestructorName : public CT_SpecialName {
 
33949
#line 33950 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
33950
  friend class ::CCExprResolve;
 
33951
  friend class ::CExprResolve;
 
33952
  friend class ::WinIfExists;
 
33953
  friend class ::WinImportHandler;
 
33954
  friend class ::WinMacros;
 
33955
  friend class ::WinAsm;
 
33956
  friend class ::WinDeclSpecs;
 
33957
  friend class ::WinMemberExplSpec;
 
33958
  friend class ::WinTypeKeywords;
 
33959
  friend class ::WinFriend;
 
33960
  friend class ::ExtAC;
 
33961
  friend class ::ExtACBuilderCoupling;
 
33962
  friend class ::ExtACSyntaxCoupling;
 
33963
  friend class ::ExtACTree;
 
33964
  friend class ::ExtACKeywords;
 
33965
  friend class ::ExtGnu;
 
33966
  friend class ::PragmaOnceUnitState;
 
33967
  friend class ::PragmaOnce;
 
33968
  friend class ::CMatchSyntax;
 
33969
 
 
33970
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33971
 
 
33972
public:
 
33973
  /** Constructor.
 
33974
   *  \param t The tilde operator.
 
33975
   *  \param n The class name. */
 
33976
  CT_DestructorName (CTree *t, CTree *n);
 
33977
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33978
  static const char *NodeId ();
 
33979
  /** Get the name of the node. Can be compared with NodeId(). */
 
33980
  const char *NodeName () const { return NodeId (); }
 
33981
 
 
33982
public:
 
33983
  /** Own new operator reusing memory. */
 
33984
  void *operator new (size_t);
 
33985
  /** Own delete operator. */
 
33986
  void operator delete (void *);
 
33987
   private:
 
33988
  typedef CT_DestructorName CCExprResolveExpr;
 
33989
 
 
33990
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33991
 public :
 
33992
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33993
  typedef CT_DestructorName CExprResolveExpr;
 
33994
 
 
33995
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33996
 public :
 
33997
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33998
  typedef AC::TLE __AttrTypes;
 
33999
  const char *__attr_name (unsigned i) const { return 0; }
 
34000
  const void *__attr (unsigned __i) const { return 0; }
 
34001
#line 1030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34002
};
 
34003
 
 
34004
/** \class CT_TemplateName CTree.h Puma/CTree.h
 
34005
 *  Tree node representing a template name.
 
34006
 *  Example: \code X<T> \endcode */
 
34007
 
 
34008
#line 34009 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34009
} // closed Puma
 
34010
class CCExprResolve;
 
34011
class CExprResolve;
 
34012
class WinIfExists;
 
34013
class WinImportHandler;
 
34014
class WinMacros;
 
34015
class WinAsm;
 
34016
class WinDeclSpecs;
 
34017
class WinMemberExplSpec;
 
34018
class WinTypeKeywords;
 
34019
class WinFriend;
 
34020
class ExtAC;
 
34021
class ExtACBuilderCoupling;
 
34022
class ExtACSyntaxCoupling;
 
34023
class ExtACTree;
 
34024
class ExtACKeywords;
 
34025
class ExtGnu;
 
34026
class PragmaOnceUnitState;
 
34027
class PragmaOnce;
 
34028
class CMatchSyntax;
 
34029
namespace Puma {
 
34030
 
 
34031
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34032
 
 
34033
#line 34034 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34034
} // closed Puma
 
34035
 
 
34036
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34037
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34038
#include "CCExprResolveH.ah"
 
34039
#endif
 
34040
namespace Puma {
 
34041
 
 
34042
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34043
 
 
34044
#line 34045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34045
} // closed Puma
 
34046
 
 
34047
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34048
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34049
#include "CExprResolveH.ah"
 
34050
#endif
 
34051
namespace Puma {
 
34052
 
 
34053
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34054
class CT_TemplateName : public CT_SpecialName {
 
34055
#line 34056 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34056
  friend class ::CCExprResolve;
 
34057
  friend class ::CExprResolve;
 
34058
  friend class ::WinIfExists;
 
34059
  friend class ::WinImportHandler;
 
34060
  friend class ::WinMacros;
 
34061
  friend class ::WinAsm;
 
34062
  friend class ::WinDeclSpecs;
 
34063
  friend class ::WinMemberExplSpec;
 
34064
  friend class ::WinTypeKeywords;
 
34065
  friend class ::WinFriend;
 
34066
  friend class ::ExtAC;
 
34067
  friend class ::ExtACBuilderCoupling;
 
34068
  friend class ::ExtACSyntaxCoupling;
 
34069
  friend class ::ExtACTree;
 
34070
  friend class ::ExtACKeywords;
 
34071
  friend class ::ExtGnu;
 
34072
  friend class ::PragmaOnceUnitState;
 
34073
  friend class ::PragmaOnce;
 
34074
  friend class ::CMatchSyntax;
 
34075
 
 
34076
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34077
 
 
34078
public:
 
34079
  /** Constructor.
 
34080
   *  \param n The template class or function name.
 
34081
   *  \param a The template argument list. */
 
34082
  CT_TemplateName (CTree *n, CTree *a) 
 
34083
   { AddSon (n); AddSon (a); }
 
34084
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34085
  static const char *NodeId ();
 
34086
  /** Get the name of the node. Can be compared with NodeId(). */
 
34087
  const char *NodeName () const { return NodeId (); }
 
34088
  /** Get the template argument list. */
 
34089
  CT_TemplateArgList *Arguments () const 
 
34090
   { return (CT_TemplateArgList*)Son (Sons ()-1); }
 
34091
  /** Get the template class or function name. */
 
34092
  CT_SimpleName *TemplateName () const 
 
34093
   { return (CT_SimpleName*)Son (Sons ()-2); }
 
34094
  // may change in the future
 
34095
  const char *Text () const { return TemplateName ()->Text (); }
 
34096
 
 
34097
public:
 
34098
  /** Own new operator reusing memory. */
 
34099
  void *operator new (size_t);
 
34100
  /** Own delete operator. */
 
34101
  void operator delete (void *);
 
34102
   private:
 
34103
  typedef CT_TemplateName CCExprResolveExpr;
 
34104
 
 
34105
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34106
 public :
 
34107
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34108
  typedef CT_TemplateName CExprResolveExpr;
 
34109
 
 
34110
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34111
 public :
 
34112
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34113
  typedef AC::TLE __AttrTypes;
 
34114
  const char *__attr_name (unsigned i) const { return 0; }
 
34115
  const void *__attr (unsigned __i) const { return 0; }
 
34116
#line 1060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34117
};
 
34118
 
 
34119
/** \class CT_OperatorName CTree.h Puma/CTree.h
 
34120
 *  Tree node representing the name of an overloaded operator. 
 
34121
 *  Example: \code operator== \endcode */
 
34122
 
 
34123
#line 34124 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34124
} // closed Puma
 
34125
class CCExprResolve;
 
34126
class CExprResolve;
 
34127
class WinIfExists;
 
34128
class WinImportHandler;
 
34129
class WinMacros;
 
34130
class WinAsm;
 
34131
class WinDeclSpecs;
 
34132
class WinMemberExplSpec;
 
34133
class WinTypeKeywords;
 
34134
class WinFriend;
 
34135
class ExtAC;
 
34136
class ExtACBuilderCoupling;
 
34137
class ExtACSyntaxCoupling;
 
34138
class ExtACTree;
 
34139
class ExtACKeywords;
 
34140
class ExtGnu;
 
34141
class PragmaOnceUnitState;
 
34142
class PragmaOnce;
 
34143
class CMatchSyntax;
 
34144
namespace Puma {
 
34145
 
 
34146
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34147
 
 
34148
#line 34149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34149
} // closed Puma
 
34150
 
 
34151
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34152
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34153
#include "CCExprResolveH.ah"
 
34154
#endif
 
34155
namespace Puma {
 
34156
 
 
34157
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34158
 
 
34159
#line 34160 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34160
} // closed Puma
 
34161
 
 
34162
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34163
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34164
#include "CExprResolveH.ah"
 
34165
#endif
 
34166
namespace Puma {
 
34167
 
 
34168
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34169
class CT_OperatorName : public CT_SpecialName {
 
34170
#line 34171 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34171
  friend class ::CCExprResolve;
 
34172
  friend class ::CExprResolve;
 
34173
  friend class ::WinIfExists;
 
34174
  friend class ::WinImportHandler;
 
34175
  friend class ::WinMacros;
 
34176
  friend class ::WinAsm;
 
34177
  friend class ::WinDeclSpecs;
 
34178
  friend class ::WinMemberExplSpec;
 
34179
  friend class ::WinTypeKeywords;
 
34180
  friend class ::WinFriend;
 
34181
  friend class ::ExtAC;
 
34182
  friend class ::ExtACBuilderCoupling;
 
34183
  friend class ::ExtACSyntaxCoupling;
 
34184
  friend class ::ExtACTree;
 
34185
  friend class ::ExtACKeywords;
 
34186
  friend class ::ExtGnu;
 
34187
  friend class ::PragmaOnceUnitState;
 
34188
  friend class ::PragmaOnce;
 
34189
  friend class ::CMatchSyntax;
 
34190
 
 
34191
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34192
 
 
34193
  int _oper;
 
34194
 
 
34195
public:
 
34196
  /** Complex operator types. */
 
34197
  enum { 
 
34198
    FCT_CALL = -100,  /** Function call operator, i.e. (). */
 
34199
    SUBSCRIPT,        /** Array subscript operator, i.e. []. */
 
34200
    NEW_ARRAY,        /** New array operator, i.e. new[]. */
 
34201
    DEL_ARRAY         /** Delete array operator, i.e. delete[]. */
 
34202
  };
 
34203
 
 
34204
public:
 
34205
  /** Constructor.
 
34206
   *  \param op The token containing the operator. */
 
34207
  CT_OperatorName (CTree *op);
 
34208
  /** Constructor.
 
34209
   *  \param f The operator function keyword 'operator'.
 
34210
   *  \param op The token containing the operator. 
 
34211
   *  \param o The token of '[' or '('.
 
34212
   *  \param c The token of ']' or ')'. */
 
34213
  CT_OperatorName (CTree *f, CTree *op, CTree *o, CTree *c);
 
34214
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34215
  static const char *NodeId ();
 
34216
  /** Get the name of the node. Can be compared with NodeId(). */
 
34217
  const char *NodeName () const { return NodeId (); }
 
34218
  /** Get the operator type (either the token type or one of 
 
34219
   *  the complex operator types). */
 
34220
  int Operator () const { return _oper; }
 
34221
 
 
34222
public:
 
34223
  /** Own new operator reusing memory. */
 
34224
  void *operator new (size_t);
 
34225
  /** Own delete operator. */
 
34226
  void operator delete (void *);
 
34227
   private:
 
34228
  typedef CT_OperatorName CCExprResolveExpr;
 
34229
 
 
34230
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34231
 public :
 
34232
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34233
  typedef CT_OperatorName CExprResolveExpr;
 
34234
 
 
34235
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34236
 public :
 
34237
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34238
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
34239
  const char *__attr_name (unsigned i) const {
 
34240
    static const char *names[] = { "_oper" }; return names[i];
 
34241
  }
 
34242
  const void *__attr (unsigned __i) const {
 
34243
    switch (__i) { case 0: return &_oper; default: return 0; }
 
34244
  }
 
34245
#line 1100 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34246
};
 
34247
 
 
34248
/** \class CT_ConversionName CTree.h Puma/CTree.h
 
34249
 *  Tree node representing the name of a conversion function.
 
34250
 *  Example: \code operator int* \endcode */
 
34251
 
 
34252
#line 34253 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34253
} // closed Puma
 
34254
class CCExprResolve;
 
34255
class CExprResolve;
 
34256
class WinIfExists;
 
34257
class WinImportHandler;
 
34258
class WinMacros;
 
34259
class WinAsm;
 
34260
class WinDeclSpecs;
 
34261
class WinMemberExplSpec;
 
34262
class WinTypeKeywords;
 
34263
class WinFriend;
 
34264
class ExtAC;
 
34265
class ExtACBuilderCoupling;
 
34266
class ExtACSyntaxCoupling;
 
34267
class ExtACTree;
 
34268
class ExtACKeywords;
 
34269
class ExtGnu;
 
34270
class PragmaOnceUnitState;
 
34271
class PragmaOnce;
 
34272
class CMatchSyntax;
 
34273
namespace Puma {
 
34274
 
 
34275
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34276
 
 
34277
#line 34278 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34278
} // closed Puma
 
34279
 
 
34280
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34281
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34282
#include "CCExprResolveH.ah"
 
34283
#endif
 
34284
namespace Puma {
 
34285
 
 
34286
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34287
 
 
34288
#line 34289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34289
} // closed Puma
 
34290
 
 
34291
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34292
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34293
#include "CExprResolveH.ah"
 
34294
#endif
 
34295
namespace Puma {
 
34296
 
 
34297
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34298
class CT_ConversionName : public CT_SpecialName {
 
34299
#line 34300 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34300
  friend class ::CCExprResolve;
 
34301
  friend class ::CExprResolve;
 
34302
  friend class ::WinIfExists;
 
34303
  friend class ::WinImportHandler;
 
34304
  friend class ::WinMacros;
 
34305
  friend class ::WinAsm;
 
34306
  friend class ::WinDeclSpecs;
 
34307
  friend class ::WinMemberExplSpec;
 
34308
  friend class ::WinTypeKeywords;
 
34309
  friend class ::WinFriend;
 
34310
  friend class ::ExtAC;
 
34311
  friend class ::ExtACBuilderCoupling;
 
34312
  friend class ::ExtACSyntaxCoupling;
 
34313
  friend class ::ExtACTree;
 
34314
  friend class ::ExtACKeywords;
 
34315
  friend class ::ExtGnu;
 
34316
  friend class ::PragmaOnceUnitState;
 
34317
  friend class ::PragmaOnce;
 
34318
  friend class ::CMatchSyntax;
 
34319
 
 
34320
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34321
 
 
34322
public:
 
34323
  /** Constructor.
 
34324
   *  \param f The operator function keyword 'operator'.
 
34325
   *  \param t The sub-tree containing the conversion type. */
 
34326
  CT_ConversionName (CTree *f, CTree *t);
 
34327
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34328
  static const char *NodeId ();
 
34329
  /** Get the name of the node. Can be compared with NodeId(). */
 
34330
  const char *NodeName () const { return NodeId (); }
 
34331
  /** Get the conversion type. */
 
34332
  CT_NamedType *TypeName () const { return (CT_NamedType*)Son (Sons ()-1); }
 
34333
 
 
34334
public:
 
34335
  /** Own new operator reusing memory. */
 
34336
  void *operator new (size_t);
 
34337
  /** Own delete operator. */
 
34338
  void operator delete (void *);
 
34339
   private:
 
34340
  typedef CT_ConversionName CCExprResolveExpr;
 
34341
 
 
34342
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34343
 public :
 
34344
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34345
  typedef CT_ConversionName CExprResolveExpr;
 
34346
 
 
34347
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34348
 public :
 
34349
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34350
  typedef AC::TLE __AttrTypes;
 
34351
  const char *__attr_name (unsigned i) const { return 0; }
 
34352
  const void *__attr (unsigned __i) const { return 0; }
 
34353
#line 1123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34354
};
 
34355
 
 
34356
/** \class CT_QualName CTree.h Puma/CTree.h
 
34357
 *  Tree node representing a qualified name.
 
34358
 *  Example: \code X::Y::Z \endcode */
 
34359
 
 
34360
#line 34361 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34361
} // closed Puma
 
34362
class CCExprResolve;
 
34363
class CExprResolve;
 
34364
class WinIfExists;
 
34365
class WinImportHandler;
 
34366
class WinMacros;
 
34367
class WinAsm;
 
34368
class WinDeclSpecs;
 
34369
class WinMemberExplSpec;
 
34370
class WinTypeKeywords;
 
34371
class WinFriend;
 
34372
class ExtAC;
 
34373
class ExtACBuilderCoupling;
 
34374
class ExtACSyntaxCoupling;
 
34375
class ExtACTree;
 
34376
class ExtACKeywords;
 
34377
class ExtGnu;
 
34378
class PragmaOnceUnitState;
 
34379
class PragmaOnce;
 
34380
class CMatchSyntax;
 
34381
namespace Puma {
 
34382
 
 
34383
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34384
 
 
34385
#line 34386 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34386
} // closed Puma
 
34387
 
 
34388
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34389
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34390
#include "CCExprResolveH.ah"
 
34391
#endif
 
34392
namespace Puma {
 
34393
 
 
34394
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34395
 
 
34396
#line 34397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34397
} // closed Puma
 
34398
 
 
34399
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34400
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34401
#include "CExprResolveH.ah"
 
34402
#endif
 
34403
namespace Puma {
 
34404
 
 
34405
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34406
class CT_QualName : public CT_SimpleName {
 
34407
#line 34408 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34408
  friend class ::CCExprResolve;
 
34409
  friend class ::CExprResolve;
 
34410
  friend class ::WinIfExists;
 
34411
  friend class ::WinImportHandler;
 
34412
  friend class ::WinMacros;
 
34413
  friend class ::WinAsm;
 
34414
  friend class ::WinDeclSpecs;
 
34415
  friend class ::WinMemberExplSpec;
 
34416
  friend class ::WinTypeKeywords;
 
34417
  friend class ::WinFriend;
 
34418
  friend class ::ExtAC;
 
34419
  friend class ::ExtACBuilderCoupling;
 
34420
  friend class ::ExtACSyntaxCoupling;
 
34421
  friend class ::ExtACTree;
 
34422
  friend class ::ExtACKeywords;
 
34423
  friend class ::ExtGnu;
 
34424
  friend class ::PragmaOnceUnitState;
 
34425
  friend class ::PragmaOnce;
 
34426
  friend class ::CMatchSyntax;
 
34427
 
 
34428
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34429
 
 
34430
public:
 
34431
  /** Constructor.
 
34432
   *  \param size The initial number sub-names plus separators. */
 
34433
  CT_QualName (int size = 3) : 
 
34434
    CT_SimpleName (size, CT_List::SEPARATORS) {}
 
34435
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34436
  static const char *NodeId ();
 
34437
  /** Get the name of the node. Can be compared with NodeId(). */
 
34438
  const char *NodeName () const { return NodeId (); }
 
34439
  /** Print the qualified name on the given stream. 
 
34440
   *  \param os The output stream. */
 
34441
  void print (ostream &os) const;
 
34442
  /** Get the last name of the qualified name, e.g. Z of qualified name X::Y::Z. */
 
34443
  CT_SimpleName *Name () const { return (CT_SimpleName*)Son (Sons ()-1); }
 
34444
  /** Get the string containing the last name of the qualified name. */
 
34445
  const char *Text () const { return Name ()->Text (); }
 
34446
  /** Get the type of the last name. */
 
34447
  CTypeInfo *Type () const { return Name ()->Type (); }
 
34448
  /** Get the value of the last name. */
 
34449
  CExprValue *Value () const { return Name ()->Value (); }
 
34450
  /** Get the semantic value object of the last name. */
 
34451
  CSemValue *SemValue () const { return Name ()->SemValue (); }
 
34452
  /** Get the semantic information of the last name. */
 
34453
  CSemObject *SemObject () const { return Name ()->SemObject (); }
 
34454
 
 
34455
public:
 
34456
  /** Own new operator reusing memory. */
 
34457
  void *operator new (size_t);
 
34458
  /** Own delete operator. */
 
34459
  void operator delete (void *);
 
34460
   private:
 
34461
  typedef CT_QualName CCExprResolveExpr;
 
34462
 
 
34463
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34464
 public :
 
34465
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34466
  typedef CT_QualName CExprResolveExpr;
 
34467
 
 
34468
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34469
 public :
 
34470
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34471
  typedef AC::TLE __AttrTypes;
 
34472
  const char *__attr_name (unsigned i) const { return 0; }
 
34473
  const void *__attr (unsigned __i) const { return 0; }
 
34474
#line 1159 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34475
};
 
34476
 
 
34477
/** \class CT_RootQualName CTree.h Puma/CTree.h
 
34478
 *  Tree node representing a qualified name with introducing name separator.
 
34479
 *  Example: \code ::X::Y::Z \endcode */
 
34480
 
 
34481
#line 34482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34482
} // closed Puma
 
34483
class CCExprResolve;
 
34484
class CExprResolve;
 
34485
class WinIfExists;
 
34486
class WinImportHandler;
 
34487
class WinMacros;
 
34488
class WinAsm;
 
34489
class WinDeclSpecs;
 
34490
class WinMemberExplSpec;
 
34491
class WinTypeKeywords;
 
34492
class WinFriend;
 
34493
class ExtAC;
 
34494
class ExtACBuilderCoupling;
 
34495
class ExtACSyntaxCoupling;
 
34496
class ExtACTree;
 
34497
class ExtACKeywords;
 
34498
class ExtGnu;
 
34499
class PragmaOnceUnitState;
 
34500
class PragmaOnce;
 
34501
class CMatchSyntax;
 
34502
namespace Puma {
 
34503
 
 
34504
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34505
 
 
34506
#line 34507 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34507
} // closed Puma
 
34508
 
 
34509
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34510
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34511
#include "CCExprResolveH.ah"
 
34512
#endif
 
34513
namespace Puma {
 
34514
 
 
34515
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34516
 
 
34517
#line 34518 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34518
} // closed Puma
 
34519
 
 
34520
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34521
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34522
#include "CExprResolveH.ah"
 
34523
#endif
 
34524
namespace Puma {
 
34525
 
 
34526
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34527
class CT_RootQualName : public CT_QualName {
 
34528
#line 34529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34529
  friend class ::CCExprResolve;
 
34530
  friend class ::CExprResolve;
 
34531
  friend class ::WinIfExists;
 
34532
  friend class ::WinImportHandler;
 
34533
  friend class ::WinMacros;
 
34534
  friend class ::WinAsm;
 
34535
  friend class ::WinDeclSpecs;
 
34536
  friend class ::WinMemberExplSpec;
 
34537
  friend class ::WinTypeKeywords;
 
34538
  friend class ::WinFriend;
 
34539
  friend class ::ExtAC;
 
34540
  friend class ::ExtACBuilderCoupling;
 
34541
  friend class ::ExtACSyntaxCoupling;
 
34542
  friend class ::ExtACTree;
 
34543
  friend class ::ExtACKeywords;
 
34544
  friend class ::ExtGnu;
 
34545
  friend class ::PragmaOnceUnitState;
 
34546
  friend class ::PragmaOnce;
 
34547
  friend class ::CMatchSyntax;
 
34548
 
 
34549
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34550
 
 
34551
public:
 
34552
  /** Constructor.
 
34553
   *  \param size Initial number of sub-name plus separator. */
 
34554
  CT_RootQualName (int size = 2) : 
 
34555
    CT_QualName (size) { AddProperties (INTRO); }
 
34556
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34557
  static const char *NodeId ();
 
34558
  /** Get the name of the node. Can be compared with NodeId(). */
 
34559
  const char *NodeName () const { return NodeId (); }
 
34560
 
 
34561
public:
 
34562
  /** Own new operator reusing memory. */
 
34563
  void *operator new (size_t);
 
34564
  /** Own delete operator. */
 
34565
  void operator delete (void *);
 
34566
   private:
 
34567
  typedef CT_RootQualName CCExprResolveExpr;
 
34568
 
 
34569
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34570
 public :
 
34571
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34572
  typedef CT_RootQualName CExprResolveExpr;
 
34573
 
 
34574
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34575
 public :
 
34576
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34577
  typedef AC::TLE __AttrTypes;
 
34578
  const char *__attr_name (unsigned i) const { return 0; }
 
34579
  const void *__attr (unsigned __i) const { return 0; }
 
34580
#line 1180 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34581
};
 
34582
 
 
34583
/** \class CT_BinaryExpr CTree.h Puma/CTree.h
 
34584
 *  Tree node representing a binary expression.
 
34585
 *  Example: \code a+b \endcode */
 
34586
 
 
34587
#line 34588 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34588
} // closed Puma
 
34589
class CCExprResolve;
 
34590
class CExprResolve;
 
34591
class WinIfExists;
 
34592
class WinImportHandler;
 
34593
class WinMacros;
 
34594
class WinAsm;
 
34595
class WinDeclSpecs;
 
34596
class WinMemberExplSpec;
 
34597
class WinTypeKeywords;
 
34598
class WinFriend;
 
34599
class ExtAC;
 
34600
class ExtACBuilderCoupling;
 
34601
class ExtACSyntaxCoupling;
 
34602
class ExtACTree;
 
34603
class ExtACKeywords;
 
34604
class ExtGnu;
 
34605
class PragmaOnceUnitState;
 
34606
class PragmaOnce;
 
34607
class CMatchSyntax;
 
34608
namespace Puma {
 
34609
 
 
34610
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34611
 
 
34612
#line 34613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34613
} // closed Puma
 
34614
 
 
34615
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34616
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34617
#include "CCExprResolveH.ah"
 
34618
#endif
 
34619
namespace Puma {
 
34620
 
 
34621
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34622
 
 
34623
#line 34624 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34624
} // closed Puma
 
34625
 
 
34626
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34627
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34628
#include "CExprResolveH.ah"
 
34629
#endif
 
34630
namespace Puma {
 
34631
 
 
34632
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34633
class CT_BinaryExpr : public CT_Call {
 
34634
#line 34635 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34635
  friend class ::CCExprResolve;
 
34636
  friend class ::CExprResolve;
 
34637
  friend class ::WinIfExists;
 
34638
  friend class ::WinImportHandler;
 
34639
  friend class ::WinMacros;
 
34640
  friend class ::WinAsm;
 
34641
  friend class ::WinDeclSpecs;
 
34642
  friend class ::WinMemberExplSpec;
 
34643
  friend class ::WinTypeKeywords;
 
34644
  friend class ::WinFriend;
 
34645
  friend class ::ExtAC;
 
34646
  friend class ::ExtACBuilderCoupling;
 
34647
  friend class ::ExtACSyntaxCoupling;
 
34648
  friend class ::ExtACTree;
 
34649
  friend class ::ExtACKeywords;
 
34650
  friend class ::ExtGnu;
 
34651
  friend class ::PragmaOnceUnitState;
 
34652
  friend class ::PragmaOnce;
 
34653
  friend class ::CMatchSyntax;
 
34654
 
 
34655
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34656
 
 
34657
  CTree *sons[3]; // expr, oper, expr
 
34658
 
 
34659
public:
 
34660
  /** Constructor. 
 
34661
   *  \param l Left hand side of the expression. 
 
34662
   *  \param o The operator token. 
 
34663
   *  \param r Right hand side of the expression. */
 
34664
  CT_BinaryExpr (CTree *l, CTree *o, CTree *r) {
 
34665
    AddSon (sons[0], l); AddSon (sons[1], o); AddSon (sons[2], r);
 
34666
  }
 
34667
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34668
  static const char *NodeId ();
 
34669
  /** Get the name of the node. Can be compared with NodeId(). */
 
34670
  const char *NodeName () const { return NodeId (); }
 
34671
  /** Get the number of sons. */
 
34672
  int Sons () const { return 3; }
 
34673
  /** Get the n-th son.
 
34674
   *  \param n The index of the son.
 
34675
   *  \return The n-th son or NULL. */
 
34676
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
34677
  /** Replace a son.
 
34678
   *  \param old_son The son to replace.
 
34679
   *  \param new_son The new son. */
 
34680
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
34681
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
34682
  }
 
34683
   private:
 
34684
  typedef CT_BinaryExpr CCExprResolveExpr;
 
34685
 
 
34686
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34687
 public :
 
34688
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34689
  typedef CT_BinaryExpr CExprResolveExpr;
 
34690
 
 
34691
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34692
 public :
 
34693
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34694
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
34695
  const char *__attr_name (unsigned i) const {
 
34696
    static const char *names[] = { "sons" }; return names[i];
 
34697
  }
 
34698
  const void *__attr (unsigned __i) const {
 
34699
    switch (__i) { case 0: return &sons; default: return 0; }
 
34700
  }
 
34701
#line 1212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34702
};
 
34703
 
 
34704
/** \class CT_MembPtrExpr CTree.h Puma/CTree.h
 
34705
 *  Tree node representing a member pointer expression.
 
34706
 *  Example: \code a->b \endcode */
 
34707
 
 
34708
#line 34709 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34709
} // closed Puma
 
34710
class CCExprResolve;
 
34711
class CExprResolve;
 
34712
class WinIfExists;
 
34713
class WinImportHandler;
 
34714
class WinMacros;
 
34715
class WinAsm;
 
34716
class WinDeclSpecs;
 
34717
class WinMemberExplSpec;
 
34718
class WinTypeKeywords;
 
34719
class WinFriend;
 
34720
class ExtAC;
 
34721
class ExtACBuilderCoupling;
 
34722
class ExtACSyntaxCoupling;
 
34723
class ExtACTree;
 
34724
class ExtACKeywords;
 
34725
class ExtGnu;
 
34726
class PragmaOnceUnitState;
 
34727
class PragmaOnce;
 
34728
class CMatchSyntax;
 
34729
namespace Puma {
 
34730
 
 
34731
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34732
 
 
34733
#line 34734 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34734
} // closed Puma
 
34735
 
 
34736
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34737
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34738
#include "CCExprResolveH.ah"
 
34739
#endif
 
34740
namespace Puma {
 
34741
 
 
34742
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34743
 
 
34744
#line 34745 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34745
} // closed Puma
 
34746
 
 
34747
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34748
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34749
#include "CExprResolveH.ah"
 
34750
#endif
 
34751
namespace Puma {
 
34752
 
 
34753
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34754
class CT_MembPtrExpr : public CT_Expression, public CSemObject {
 
34755
#line 34756 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34756
  friend class ::CCExprResolve;
 
34757
  friend class ::CExprResolve;
 
34758
  friend class ::WinIfExists;
 
34759
  friend class ::WinImportHandler;
 
34760
  friend class ::WinMacros;
 
34761
  friend class ::WinAsm;
 
34762
  friend class ::WinDeclSpecs;
 
34763
  friend class ::WinMemberExplSpec;
 
34764
  friend class ::WinTypeKeywords;
 
34765
  friend class ::WinFriend;
 
34766
  friend class ::ExtAC;
 
34767
  friend class ::ExtACBuilderCoupling;
 
34768
  friend class ::ExtACSyntaxCoupling;
 
34769
  friend class ::ExtACTree;
 
34770
  friend class ::ExtACKeywords;
 
34771
  friend class ::ExtGnu;
 
34772
  friend class ::PragmaOnceUnitState;
 
34773
  friend class ::PragmaOnce;
 
34774
  friend class ::CMatchSyntax;
 
34775
 
 
34776
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34777
 
 
34778
  CTree *sons[3]; // expr, oper, expr
 
34779
  
 
34780
public:
 
34781
  /** Constructor.
 
34782
   *  \param e Expression on which to call the member.
 
34783
   *  \param o The arrow operator token.
 
34784
   *  \param i The member name. */
 
34785
  CT_MembPtrExpr (CTree *e, CTree *o, CTree *i) {
 
34786
    AddSon (sons[0], e); AddSon (sons[1], o); AddSon (sons[2], i);
 
34787
  }
 
34788
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34789
  static const char *NodeId ();
 
34790
  /** Get the name of the node. Can be compared with NodeId(). */
 
34791
  const char *NodeName () const { return NodeId (); }
 
34792
  /** Get the number of sons. */
 
34793
  int Sons () const { return 3; }
 
34794
  /** Get the n-th son.
 
34795
   *  \param n The index of the son.
 
34796
   *  \return The n-th son or NULL. */
 
34797
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
34798
  /** Replace a son.
 
34799
   *  \param old_son The son to replace.
 
34800
   *  \param new_son The new son. */
 
34801
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
34802
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
34803
  }
 
34804
   private:
 
34805
  typedef CT_MembPtrExpr CCExprResolveExpr;
 
34806
 
 
34807
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34808
 public :
 
34809
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34810
  typedef CT_MembPtrExpr CExprResolveExpr;
 
34811
 
 
34812
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34813
 public :
 
34814
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34815
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
34816
  const char *__attr_name (unsigned i) const {
 
34817
    static const char *names[] = { "sons" }; return names[i];
 
34818
  }
 
34819
  const void *__attr (unsigned __i) const {
 
34820
    switch (__i) { case 0: return &sons; default: return 0; }
 
34821
  }
 
34822
#line 1244 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34823
};
 
34824
 
 
34825
/** \class CT_MembRefExpr CTree.h Puma/CTree.h
 
34826
 *  Tree node representing a member reference expression.
 
34827
 *  Example: \code a.b \endcode */
 
34828
 
 
34829
#line 34830 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34830
} // closed Puma
 
34831
class CCExprResolve;
 
34832
class CExprResolve;
 
34833
class WinIfExists;
 
34834
class WinImportHandler;
 
34835
class WinMacros;
 
34836
class WinAsm;
 
34837
class WinDeclSpecs;
 
34838
class WinMemberExplSpec;
 
34839
class WinTypeKeywords;
 
34840
class WinFriend;
 
34841
class ExtAC;
 
34842
class ExtACBuilderCoupling;
 
34843
class ExtACSyntaxCoupling;
 
34844
class ExtACTree;
 
34845
class ExtACKeywords;
 
34846
class ExtGnu;
 
34847
class PragmaOnceUnitState;
 
34848
class PragmaOnce;
 
34849
class CMatchSyntax;
 
34850
namespace Puma {
 
34851
 
 
34852
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34853
 
 
34854
#line 34855 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34855
} // closed Puma
 
34856
 
 
34857
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34858
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34859
#include "CCExprResolveH.ah"
 
34860
#endif
 
34861
namespace Puma {
 
34862
 
 
34863
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34864
 
 
34865
#line 34866 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34866
} // closed Puma
 
34867
 
 
34868
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34869
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34870
#include "CExprResolveH.ah"
 
34871
#endif
 
34872
namespace Puma {
 
34873
 
 
34874
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34875
class CT_MembRefExpr : public CT_MembPtrExpr {
 
34876
#line 34877 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34877
  friend class ::CCExprResolve;
 
34878
  friend class ::CExprResolve;
 
34879
  friend class ::WinIfExists;
 
34880
  friend class ::WinImportHandler;
 
34881
  friend class ::WinMacros;
 
34882
  friend class ::WinAsm;
 
34883
  friend class ::WinDeclSpecs;
 
34884
  friend class ::WinMemberExplSpec;
 
34885
  friend class ::WinTypeKeywords;
 
34886
  friend class ::WinFriend;
 
34887
  friend class ::ExtAC;
 
34888
  friend class ::ExtACBuilderCoupling;
 
34889
  friend class ::ExtACSyntaxCoupling;
 
34890
  friend class ::ExtACTree;
 
34891
  friend class ::ExtACKeywords;
 
34892
  friend class ::ExtGnu;
 
34893
  friend class ::PragmaOnceUnitState;
 
34894
  friend class ::PragmaOnce;
 
34895
  friend class ::CMatchSyntax;
 
34896
 
 
34897
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34898
 
 
34899
public:
 
34900
  /** Constructor.
 
34901
   *  \param e Expression on which to call the member.
 
34902
   *  \param o The dot operator.
 
34903
   *  \param i The member name. */
 
34904
  CT_MembRefExpr (CTree *e, CTree *o, CTree *i) :
 
34905
    CT_MembPtrExpr (e, o, i) {}
 
34906
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34907
  static const char *NodeId ();
 
34908
  /** Get the name of the node. Can be compared with NodeId(). */
 
34909
  const char *NodeName () const { return NodeId (); }
 
34910
   private:
 
34911
  typedef CT_MembRefExpr CCExprResolveExpr;
 
34912
 
 
34913
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34914
 public :
 
34915
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34916
  typedef CT_MembRefExpr CExprResolveExpr;
 
34917
 
 
34918
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34919
 public :
 
34920
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34921
  typedef AC::TLE __AttrTypes;
 
34922
  const char *__attr_name (unsigned i) const { return 0; }
 
34923
  const void *__attr (unsigned __i) const { return 0; }
 
34924
#line 1261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34925
};
 
34926
 
 
34927
/** \class CT_UnaryExpr CTree.h Puma/CTree.h
 
34928
 *  Base class for tree nodes representing unary expressions. 
 
34929
 *  Example: \code !a \endcode */
 
34930
 
 
34931
#line 34932 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34932
} // closed Puma
 
34933
class CCExprResolve;
 
34934
class CExprResolve;
 
34935
class WinIfExists;
 
34936
class WinImportHandler;
 
34937
class WinMacros;
 
34938
class WinAsm;
 
34939
class WinDeclSpecs;
 
34940
class WinMemberExplSpec;
 
34941
class WinTypeKeywords;
 
34942
class WinFriend;
 
34943
class ExtAC;
 
34944
class ExtACBuilderCoupling;
 
34945
class ExtACSyntaxCoupling;
 
34946
class ExtACTree;
 
34947
class ExtACKeywords;
 
34948
class ExtGnu;
 
34949
class PragmaOnceUnitState;
 
34950
class PragmaOnce;
 
34951
class CMatchSyntax;
 
34952
namespace Puma {
 
34953
 
 
34954
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34955
 
 
34956
#line 34957 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34957
} // closed Puma
 
34958
 
 
34959
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34960
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34961
#include "CCExprResolveH.ah"
 
34962
#endif
 
34963
namespace Puma {
 
34964
 
 
34965
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34966
 
 
34967
#line 34968 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34968
} // closed Puma
 
34969
 
 
34970
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34971
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34972
#include "CExprResolveH.ah"
 
34973
#endif
 
34974
namespace Puma {
 
34975
 
 
34976
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34977
class CT_UnaryExpr : public CT_Call {
 
34978
#line 34979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
34979
  friend class ::CCExprResolve;
 
34980
  friend class ::CExprResolve;
 
34981
  friend class ::WinIfExists;
 
34982
  friend class ::WinImportHandler;
 
34983
  friend class ::WinMacros;
 
34984
  friend class ::WinAsm;
 
34985
  friend class ::WinDeclSpecs;
 
34986
  friend class ::WinMemberExplSpec;
 
34987
  friend class ::WinTypeKeywords;
 
34988
  friend class ::WinFriend;
 
34989
  friend class ::ExtAC;
 
34990
  friend class ::ExtACBuilderCoupling;
 
34991
  friend class ::ExtACSyntaxCoupling;
 
34992
  friend class ::ExtACTree;
 
34993
  friend class ::ExtACKeywords;
 
34994
  friend class ::ExtGnu;
 
34995
  friend class ::PragmaOnceUnitState;
 
34996
  friend class ::PragmaOnce;
 
34997
  friend class ::CMatchSyntax;
 
34998
 
 
34999
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35000
 
 
35001
  CTree *sons[2]; // oper, expr
 
35002
 
 
35003
public:
 
35004
  /** Constructor.
 
35005
   *  \param o The unary operator.
 
35006
   *  \param e The expression on which the operator is invoked. */
 
35007
  CT_UnaryExpr (CTree *o, CTree *e) { AddSon (sons[0], o); AddSon (sons[1], e); }
 
35008
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35009
  static const char *NodeId ();
 
35010
  /** Get the name of the node. Can be compared with NodeId(). */
 
35011
  const char *NodeName () const { return NodeId (); }
 
35012
  /** Get the number of sons. */
 
35013
  int Sons () const { return 2; }
 
35014
  /** Get the n-th son.
 
35015
   *  \param n The index of the son.
 
35016
   *  \return The n-th son or NULL. */
 
35017
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
35018
  /** Replace a son.
 
35019
   *  \param old_son The son to replace.
 
35020
   *  \param new_son The new son. */
 
35021
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
35022
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
35023
  }
 
35024
  /** Get the expression node. */
 
35025
  CTree *Expr () const { return sons[1]; }
 
35026
   private:
 
35027
  typedef CT_UnaryExpr CCExprResolveExpr;
 
35028
 
 
35029
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35030
 public :
 
35031
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35032
  typedef CT_UnaryExpr CExprResolveExpr;
 
35033
 
 
35034
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35035
 public :
 
35036
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35037
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
35038
  const char *__attr_name (unsigned i) const {
 
35039
    static const char *names[] = { "sons" }; return names[i];
 
35040
  }
 
35041
  const void *__attr (unsigned __i) const {
 
35042
    switch (__i) { case 0: return &sons; default: return 0; }
 
35043
  }
 
35044
#line 1292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35045
};
 
35046
 
 
35047
/** \class CT_PostfixExpr CTree.h Puma/CTree.h
 
35048
 *  Tree node representing a postfix expression.
 
35049
 *  Example: \code a++ \endcode */
 
35050
 
 
35051
#line 35052 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35052
} // closed Puma
 
35053
class CCExprResolve;
 
35054
class CExprResolve;
 
35055
class WinIfExists;
 
35056
class WinImportHandler;
 
35057
class WinMacros;
 
35058
class WinAsm;
 
35059
class WinDeclSpecs;
 
35060
class WinMemberExplSpec;
 
35061
class WinTypeKeywords;
 
35062
class WinFriend;
 
35063
class ExtAC;
 
35064
class ExtACBuilderCoupling;
 
35065
class ExtACSyntaxCoupling;
 
35066
class ExtACTree;
 
35067
class ExtACKeywords;
 
35068
class ExtGnu;
 
35069
class PragmaOnceUnitState;
 
35070
class PragmaOnce;
 
35071
class CMatchSyntax;
 
35072
namespace Puma {
 
35073
 
 
35074
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35075
 
 
35076
#line 35077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35077
} // closed Puma
 
35078
 
 
35079
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35080
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35081
#include "CCExprResolveH.ah"
 
35082
#endif
 
35083
namespace Puma {
 
35084
 
 
35085
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35086
 
 
35087
#line 35088 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35088
} // closed Puma
 
35089
 
 
35090
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35091
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35092
#include "CExprResolveH.ah"
 
35093
#endif
 
35094
namespace Puma {
 
35095
 
 
35096
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35097
class CT_PostfixExpr : public CT_UnaryExpr {
 
35098
#line 35099 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35099
  friend class ::CCExprResolve;
 
35100
  friend class ::CExprResolve;
 
35101
  friend class ::WinIfExists;
 
35102
  friend class ::WinImportHandler;
 
35103
  friend class ::WinMacros;
 
35104
  friend class ::WinAsm;
 
35105
  friend class ::WinDeclSpecs;
 
35106
  friend class ::WinMemberExplSpec;
 
35107
  friend class ::WinTypeKeywords;
 
35108
  friend class ::WinFriend;
 
35109
  friend class ::ExtAC;
 
35110
  friend class ::ExtACBuilderCoupling;
 
35111
  friend class ::ExtACSyntaxCoupling;
 
35112
  friend class ::ExtACTree;
 
35113
  friend class ::ExtACKeywords;
 
35114
  friend class ::ExtGnu;
 
35115
  friend class ::PragmaOnceUnitState;
 
35116
  friend class ::PragmaOnce;
 
35117
  friend class ::CMatchSyntax;
 
35118
 
 
35119
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35120
 
 
35121
public:
 
35122
  /** Constructor.
 
35123
   *  \param e The expression on which to invoke the operator. 
 
35124
   *  \param o The postfix operator. */
 
35125
  CT_PostfixExpr (CTree *e, CTree *o) :
 
35126
    CT_UnaryExpr (e, o) {}
 
35127
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35128
  static const char *NodeId ();
 
35129
  /** Get the name of the node. Can be compared with NodeId(). */
 
35130
  const char *NodeName () const { return NodeId (); }
 
35131
   private:
 
35132
  typedef CT_PostfixExpr CCExprResolveExpr;
 
35133
 
 
35134
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35135
 public :
 
35136
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35137
  typedef CT_PostfixExpr CExprResolveExpr;
 
35138
 
 
35139
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35140
 public :
 
35141
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35142
  typedef AC::TLE __AttrTypes;
 
35143
  const char *__attr_name (unsigned i) const { return 0; }
 
35144
  const void *__attr (unsigned __i) const { return 0; }
 
35145
#line 1308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35146
};
 
35147
 
 
35148
/** \class CT_AddrExpr CTree.h Puma/CTree.h
 
35149
 *  Tree node representing an address expression.
 
35150
 *  Example: \code &a \endcode */
 
35151
 
 
35152
#line 35153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35153
} // closed Puma
 
35154
class CCExprResolve;
 
35155
class CExprResolve;
 
35156
class WinIfExists;
 
35157
class WinImportHandler;
 
35158
class WinMacros;
 
35159
class WinAsm;
 
35160
class WinDeclSpecs;
 
35161
class WinMemberExplSpec;
 
35162
class WinTypeKeywords;
 
35163
class WinFriend;
 
35164
class ExtAC;
 
35165
class ExtACBuilderCoupling;
 
35166
class ExtACSyntaxCoupling;
 
35167
class ExtACTree;
 
35168
class ExtACKeywords;
 
35169
class ExtGnu;
 
35170
class PragmaOnceUnitState;
 
35171
class PragmaOnce;
 
35172
class CMatchSyntax;
 
35173
namespace Puma {
 
35174
 
 
35175
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35176
 
 
35177
#line 35178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35178
} // closed Puma
 
35179
 
 
35180
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35181
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35182
#include "CCExprResolveH.ah"
 
35183
#endif
 
35184
namespace Puma {
 
35185
 
 
35186
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35187
 
 
35188
#line 35189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35189
} // closed Puma
 
35190
 
 
35191
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35192
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35193
#include "CExprResolveH.ah"
 
35194
#endif
 
35195
namespace Puma {
 
35196
 
 
35197
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35198
class CT_AddrExpr : public CT_UnaryExpr {
 
35199
#line 35200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35200
  friend class ::CCExprResolve;
 
35201
  friend class ::CExprResolve;
 
35202
  friend class ::WinIfExists;
 
35203
  friend class ::WinImportHandler;
 
35204
  friend class ::WinMacros;
 
35205
  friend class ::WinAsm;
 
35206
  friend class ::WinDeclSpecs;
 
35207
  friend class ::WinMemberExplSpec;
 
35208
  friend class ::WinTypeKeywords;
 
35209
  friend class ::WinFriend;
 
35210
  friend class ::ExtAC;
 
35211
  friend class ::ExtACBuilderCoupling;
 
35212
  friend class ::ExtACSyntaxCoupling;
 
35213
  friend class ::ExtACTree;
 
35214
  friend class ::ExtACKeywords;
 
35215
  friend class ::ExtGnu;
 
35216
  friend class ::PragmaOnceUnitState;
 
35217
  friend class ::PragmaOnce;
 
35218
  friend class ::CMatchSyntax;
 
35219
 
 
35220
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35221
 
 
35222
public:
 
35223
  /** Constructor.
 
35224
   *  \param o The address operator, i.e. '&'.
 
35225
   *  \param e The expression from which to take the address. */
 
35226
  CT_AddrExpr (CTree *o, CTree *e) :
 
35227
    CT_UnaryExpr (o, e) {}
 
35228
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35229
  static const char *NodeId ();
 
35230
  /** Get the name of the node. Can be compared with NodeId(). */
 
35231
  const char *NodeName () const { return NodeId (); }
 
35232
   private:
 
35233
  typedef CT_AddrExpr CCExprResolveExpr;
 
35234
 
 
35235
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35236
 public :
 
35237
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35238
  typedef CT_AddrExpr CExprResolveExpr;
 
35239
 
 
35240
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35241
 public :
 
35242
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35243
  typedef AC::TLE __AttrTypes;
 
35244
  const char *__attr_name (unsigned i) const { return 0; }
 
35245
  const void *__attr (unsigned __i) const { return 0; }
 
35246
#line 1324 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35247
};
 
35248
 
 
35249
/** \class CT_DerefExpr CTree.h Puma/CTree.h
 
35250
 *  Tree node representing a pointer dereferencing expression.
 
35251
 *  Example: \code *a \endcode */
 
35252
 
 
35253
#line 35254 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35254
} // closed Puma
 
35255
class CCExprResolve;
 
35256
class CExprResolve;
 
35257
class WinIfExists;
 
35258
class WinImportHandler;
 
35259
class WinMacros;
 
35260
class WinAsm;
 
35261
class WinDeclSpecs;
 
35262
class WinMemberExplSpec;
 
35263
class WinTypeKeywords;
 
35264
class WinFriend;
 
35265
class ExtAC;
 
35266
class ExtACBuilderCoupling;
 
35267
class ExtACSyntaxCoupling;
 
35268
class ExtACTree;
 
35269
class ExtACKeywords;
 
35270
class ExtGnu;
 
35271
class PragmaOnceUnitState;
 
35272
class PragmaOnce;
 
35273
class CMatchSyntax;
 
35274
namespace Puma {
 
35275
 
 
35276
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35277
 
 
35278
#line 35279 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35279
} // closed Puma
 
35280
 
 
35281
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35282
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35283
#include "CCExprResolveH.ah"
 
35284
#endif
 
35285
namespace Puma {
 
35286
 
 
35287
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35288
 
 
35289
#line 35290 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35290
} // closed Puma
 
35291
 
 
35292
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35293
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35294
#include "CExprResolveH.ah"
 
35295
#endif
 
35296
namespace Puma {
 
35297
 
 
35298
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35299
class CT_DerefExpr : public CT_UnaryExpr {
 
35300
#line 35301 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35301
  friend class ::CCExprResolve;
 
35302
  friend class ::CExprResolve;
 
35303
  friend class ::WinIfExists;
 
35304
  friend class ::WinImportHandler;
 
35305
  friend class ::WinMacros;
 
35306
  friend class ::WinAsm;
 
35307
  friend class ::WinDeclSpecs;
 
35308
  friend class ::WinMemberExplSpec;
 
35309
  friend class ::WinTypeKeywords;
 
35310
  friend class ::WinFriend;
 
35311
  friend class ::ExtAC;
 
35312
  friend class ::ExtACBuilderCoupling;
 
35313
  friend class ::ExtACSyntaxCoupling;
 
35314
  friend class ::ExtACTree;
 
35315
  friend class ::ExtACKeywords;
 
35316
  friend class ::ExtGnu;
 
35317
  friend class ::PragmaOnceUnitState;
 
35318
  friend class ::PragmaOnce;
 
35319
  friend class ::CMatchSyntax;
 
35320
 
 
35321
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35322
 
 
35323
public:
 
35324
  /** Constructor.
 
35325
   *  \param o The dereferencing operator, i.e. '*'.
 
35326
   *  \param e The expression to dereference. */
 
35327
  CT_DerefExpr (CTree *o, CTree *e) :
 
35328
    CT_UnaryExpr (o, e) {}
 
35329
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35330
  static const char *NodeId ();
 
35331
  /** Get the name of the node. Can be compared with NodeId(). */
 
35332
  const char *NodeName () const { return NodeId (); }
 
35333
   private:
 
35334
  typedef CT_DerefExpr CCExprResolveExpr;
 
35335
 
 
35336
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35337
 public :
 
35338
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35339
  typedef CT_DerefExpr CExprResolveExpr;
 
35340
 
 
35341
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35342
 public :
 
35343
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35344
  typedef AC::TLE __AttrTypes;
 
35345
  const char *__attr_name (unsigned i) const { return 0; }
 
35346
  const void *__attr (unsigned __i) const { return 0; }
 
35347
#line 1340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35348
};
 
35349
 
 
35350
/** \class CT_DeleteExpr CTree.h Puma/CTree.h
 
35351
 *  Tree node representing a delete expression.
 
35352
 *  Example: \code delete a \endcode */
 
35353
 
 
35354
#line 35355 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35355
} // closed Puma
 
35356
class CCExprResolve;
 
35357
class CExprResolve;
 
35358
class WinIfExists;
 
35359
class WinImportHandler;
 
35360
class WinMacros;
 
35361
class WinAsm;
 
35362
class WinDeclSpecs;
 
35363
class WinMemberExplSpec;
 
35364
class WinTypeKeywords;
 
35365
class WinFriend;
 
35366
class ExtAC;
 
35367
class ExtACBuilderCoupling;
 
35368
class ExtACSyntaxCoupling;
 
35369
class ExtACTree;
 
35370
class ExtACKeywords;
 
35371
class ExtGnu;
 
35372
class PragmaOnceUnitState;
 
35373
class PragmaOnce;
 
35374
class CMatchSyntax;
 
35375
namespace Puma {
 
35376
 
 
35377
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35378
 
 
35379
#line 35380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35380
} // closed Puma
 
35381
 
 
35382
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35383
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35384
#include "CCExprResolveH.ah"
 
35385
#endif
 
35386
namespace Puma {
 
35387
 
 
35388
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35389
 
 
35390
#line 35391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35391
} // closed Puma
 
35392
 
 
35393
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35394
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35395
#include "CExprResolveH.ah"
 
35396
#endif
 
35397
namespace Puma {
 
35398
 
 
35399
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35400
class CT_DeleteExpr : public CT_Expression, public CSemObject {
 
35401
#line 35402 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35402
  friend class ::CCExprResolve;
 
35403
  friend class ::CExprResolve;
 
35404
  friend class ::WinIfExists;
 
35405
  friend class ::WinImportHandler;
 
35406
  friend class ::WinMacros;
 
35407
  friend class ::WinAsm;
 
35408
  friend class ::WinDeclSpecs;
 
35409
  friend class ::WinMemberExplSpec;
 
35410
  friend class ::WinTypeKeywords;
 
35411
  friend class ::WinFriend;
 
35412
  friend class ::ExtAC;
 
35413
  friend class ::ExtACBuilderCoupling;
 
35414
  friend class ::ExtACSyntaxCoupling;
 
35415
  friend class ::ExtACTree;
 
35416
  friend class ::ExtACKeywords;
 
35417
  friend class ::ExtGnu;
 
35418
  friend class ::PragmaOnceUnitState;
 
35419
  friend class ::PragmaOnce;
 
35420
  friend class ::CMatchSyntax;
 
35421
 
 
35422
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35423
 
 
35424
  CTree *sons[2]; // oper, expr
 
35425
 
 
35426
public:
 
35427
  /** Constructor.
 
35428
   *  \param op The delete operator.
 
35429
   *  \param e The expression representing the object to delete. */
 
35430
  CT_DeleteExpr (CTree *op, CTree *e) { AddSon (sons[0], op); AddSon (sons[1], e); }
 
35431
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35432
  static const char *NodeId ();
 
35433
  /** Get the name of the node. Can be compared with NodeId(). */
 
35434
  const char *NodeName () const { return NodeId (); }
 
35435
  /** Get the number of sons. */
 
35436
  int Sons () const { return 2; }
 
35437
  /** Get the n-th son.
 
35438
   *  \param n The index of the son.
 
35439
   *  \return The n-th son or NULL. */
 
35440
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
35441
  /** Replace a son.
 
35442
   *  \param old_son The son to replace.
 
35443
   *  \param new_son The new son. */
 
35444
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
35445
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
35446
  }
 
35447
  /** Get the expression. */
 
35448
  CTree *Expr () const { return sons[1]; }
 
35449
  /** Get the operator name, i.e. 'delete' or 'delete[]'. */
 
35450
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
35451
  /** Get the semantic information. */
 
35452
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
35453
   private:
 
35454
  typedef CT_DeleteExpr CCExprResolveExpr;
 
35455
 
 
35456
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35457
 public :
 
35458
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35459
  typedef CT_DeleteExpr CExprResolveExpr;
 
35460
 
 
35461
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35462
 public :
 
35463
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35464
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
35465
  const char *__attr_name (unsigned i) const {
 
35466
    static const char *names[] = { "sons" }; return names[i];
 
35467
  }
 
35468
  const void *__attr (unsigned __i) const {
 
35469
    switch (__i) { case 0: return &sons; default: return 0; }
 
35470
  }
 
35471
#line 1375 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35472
};
 
35473
 
 
35474
/** \class CT_NewExpr CTree.h Puma/CTree.h
 
35475
 *  Tree node representing a new expression.
 
35476
 *  Example: \code new A() \endcode */
 
35477
 
 
35478
#line 35479 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35479
} // closed Puma
 
35480
class CCExprResolve;
 
35481
class CExprResolve;
 
35482
class WinIfExists;
 
35483
class WinImportHandler;
 
35484
class WinMacros;
 
35485
class WinAsm;
 
35486
class WinDeclSpecs;
 
35487
class WinMemberExplSpec;
 
35488
class WinTypeKeywords;
 
35489
class WinFriend;
 
35490
class ExtAC;
 
35491
class ExtACBuilderCoupling;
 
35492
class ExtACSyntaxCoupling;
 
35493
class ExtACTree;
 
35494
class ExtACKeywords;
 
35495
class ExtGnu;
 
35496
class PragmaOnceUnitState;
 
35497
class PragmaOnce;
 
35498
class CMatchSyntax;
 
35499
namespace Puma {
 
35500
 
 
35501
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35502
 
 
35503
#line 35504 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35504
} // closed Puma
 
35505
 
 
35506
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35507
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35508
#include "CCExprResolveH.ah"
 
35509
#endif
 
35510
namespace Puma {
 
35511
 
 
35512
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35513
 
 
35514
#line 35515 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35515
} // closed Puma
 
35516
 
 
35517
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35518
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35519
#include "CExprResolveH.ah"
 
35520
#endif
 
35521
namespace Puma {
 
35522
 
 
35523
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35524
class CT_NewExpr : public CT_Expression, public CSemObject {
 
35525
#line 35526 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35526
  friend class ::CCExprResolve;
 
35527
  friend class ::CExprResolve;
 
35528
  friend class ::WinIfExists;
 
35529
  friend class ::WinImportHandler;
 
35530
  friend class ::WinMacros;
 
35531
  friend class ::WinAsm;
 
35532
  friend class ::WinDeclSpecs;
 
35533
  friend class ::WinMemberExplSpec;
 
35534
  friend class ::WinTypeKeywords;
 
35535
  friend class ::WinFriend;
 
35536
  friend class ::ExtAC;
 
35537
  friend class ::ExtACBuilderCoupling;
 
35538
  friend class ::ExtACSyntaxCoupling;
 
35539
  friend class ::ExtACTree;
 
35540
  friend class ::ExtACKeywords;
 
35541
  friend class ::ExtGnu;
 
35542
  friend class ::PragmaOnceUnitState;
 
35543
  friend class ::PragmaOnce;
 
35544
  friend class ::CMatchSyntax;
 
35545
 
 
35546
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35547
 
 
35548
  CTree *sons[6]; // oper, placement, open, type, close, init
 
35549
 
 
35550
public:
 
35551
  /** Constructor.
 
35552
   *  \param op The new operator.
 
35553
   *  \param p The optional placement expression.
 
35554
   *  \param o The optional left parenthesis around the type identifier.
 
35555
   *  \param t The type identifier specifying the type of the object to create.
 
35556
   *  \param c The optional right parenthesis around the type identifier.
 
35557
   *  \param i The optional initializer. */
 
35558
  CT_NewExpr (CTree *op, CTree *p, CTree *o, CTree *t, CTree *c, CTree *i) {
 
35559
    AddSon (sons[0], op); AddSon (sons[1], p); AddSon (sons[2], o); 
 
35560
    AddSon (sons[3], t); AddSon (sons[4], c); AddSon (sons[5], i); 
 
35561
  }
 
35562
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35563
  static const char *NodeId ();
 
35564
  /** Get the name of the node. Can be compared with NodeId(). */
 
35565
  const char *NodeName () const { return NodeId (); }
 
35566
  /** Get the number of sons. */
 
35567
  int Sons () const { return CTree::Sons (sons, 6); }
 
35568
  /** Get the n-th son.
 
35569
   *  \param n The index of the son.
 
35570
   *  \return The n-th son or NULL. */
 
35571
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
35572
  /** Replace a son.
 
35573
   *  \param old_son The son to replace.
 
35574
   *  \param new_son The new son. */
 
35575
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
35576
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
35577
  }
 
35578
  /** Get the operator name. */
 
35579
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
35580
  /** Get the placement expression. */
 
35581
  CT_ExprList *Placement () const { return (CT_ExprList*)sons[1];; }
 
35582
  /** Get the initializer. */
 
35583
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[5]; }
 
35584
  /** Get the type of the object to create. */
 
35585
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[3]; }
 
35586
  /** Get the semantic information. */
 
35587
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
35588
   private:
 
35589
  typedef CT_NewExpr CCExprResolveExpr;
 
35590
 
 
35591
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35592
 public :
 
35593
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35594
  typedef CT_NewExpr CExprResolveExpr;
 
35595
 
 
35596
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35597
 public :
 
35598
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35599
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
35600
  const char *__attr_name (unsigned i) const {
 
35601
    static const char *names[] = { "sons" }; return names[i];
 
35602
  }
 
35603
  const void *__attr (unsigned __i) const {
 
35604
    switch (__i) { case 0: return &sons; default: return 0; }
 
35605
  }
 
35606
#line 1421 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35607
};
 
35608
 
 
35609
/** \class CT_IfThenExpr CTree.h Puma/CTree.h
 
35610
 *  Tree node representing an if-then expression.
 
35611
 *  Example: \code a>0?a:b \endcode or \code a?:b \endcode */
 
35612
 
 
35613
#line 35614 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35614
} // closed Puma
 
35615
class CCExprResolve;
 
35616
class CExprResolve;
 
35617
class WinIfExists;
 
35618
class WinImportHandler;
 
35619
class WinMacros;
 
35620
class WinAsm;
 
35621
class WinDeclSpecs;
 
35622
class WinMemberExplSpec;
 
35623
class WinTypeKeywords;
 
35624
class WinFriend;
 
35625
class ExtAC;
 
35626
class ExtACBuilderCoupling;
 
35627
class ExtACSyntaxCoupling;
 
35628
class ExtACTree;
 
35629
class ExtACKeywords;
 
35630
class ExtGnu;
 
35631
class PragmaOnceUnitState;
 
35632
class PragmaOnce;
 
35633
class CMatchSyntax;
 
35634
namespace Puma {
 
35635
 
 
35636
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35637
 
 
35638
#line 35639 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35639
} // closed Puma
 
35640
 
 
35641
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35642
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35643
#include "CCExprResolveH.ah"
 
35644
#endif
 
35645
namespace Puma {
 
35646
 
 
35647
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35648
 
 
35649
#line 35650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35650
} // closed Puma
 
35651
 
 
35652
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35653
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35654
#include "CExprResolveH.ah"
 
35655
#endif
 
35656
namespace Puma {
 
35657
 
 
35658
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35659
class CT_IfThenExpr : public CT_Expression {
 
35660
#line 35661 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35661
  friend class ::CCExprResolve;
 
35662
  friend class ::CExprResolve;
 
35663
  friend class ::WinIfExists;
 
35664
  friend class ::WinImportHandler;
 
35665
  friend class ::WinMacros;
 
35666
  friend class ::WinAsm;
 
35667
  friend class ::WinDeclSpecs;
 
35668
  friend class ::WinMemberExplSpec;
 
35669
  friend class ::WinTypeKeywords;
 
35670
  friend class ::WinFriend;
 
35671
  friend class ::ExtAC;
 
35672
  friend class ::ExtACBuilderCoupling;
 
35673
  friend class ::ExtACSyntaxCoupling;
 
35674
  friend class ::ExtACTree;
 
35675
  friend class ::ExtACKeywords;
 
35676
  friend class ::ExtGnu;
 
35677
  friend class ::PragmaOnceUnitState;
 
35678
  friend class ::PragmaOnce;
 
35679
  friend class ::CMatchSyntax;
 
35680
 
 
35681
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35682
 
 
35683
  CTree *sons[5]; // cond, oper, left, colon, right
 
35684
 
 
35685
public:
 
35686
  /** Constructor.
 
35687
   *  \param c1 The condition expression.
 
35688
   *  \param o The question mark operator. 
 
35689
   *  \param l The expression to the left of the colon.
 
35690
   *  \param c2 The colon operator.
 
35691
   *  \param r The expression to the right of the colon. */ 
 
35692
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *l, CTree *c2, CTree *r) {
 
35693
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], l); 
 
35694
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
35695
  }
 
35696
  /** Constructor.
 
35697
   *  \param c1 The condition expression.
 
35698
   *  \param o The question mark operator. 
 
35699
   *  \param c2 The colon operator.
 
35700
   *  \param r The expression to the right of the colon. */ 
 
35701
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *c2, CTree *r) {
 
35702
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], 0); 
 
35703
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
35704
  }
 
35705
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35706
  static const char *NodeId ();
 
35707
  /** Get the name of the node. Can be compared with NodeId(). */
 
35708
  const char *NodeName () const { return NodeId (); }
 
35709
  /** Get the number of sons. */
 
35710
  int Sons () const { return CTree::Sons (sons, 5); }
 
35711
  /** Get the n-th son.
 
35712
   *  \param n The index of the son.
 
35713
   *  \return The n-th son or NULL. */
 
35714
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
35715
  /** Get the condition expression. */
 
35716
  CTree *Condition () const { return sons[0]; }
 
35717
  /** Get the left expression (condition=true). */
 
35718
  CTree *LeftOperand () const { return sons[2]; }
 
35719
  /** Get the right expression (condition=false). */
 
35720
  CTree *RightOperand () const { return sons[4]; }
 
35721
  /** Replace a son.
 
35722
   *  \param old_son The son to replace.
 
35723
   *  \param new_son The new son. */
 
35724
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
35725
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
35726
  }
 
35727
   private:
 
35728
  typedef CT_IfThenExpr CCExprResolveExpr;
 
35729
 
 
35730
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35731
 public :
 
35732
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35733
  typedef CT_IfThenExpr CExprResolveExpr;
 
35734
 
 
35735
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35736
 public :
 
35737
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35738
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
35739
  const char *__attr_name (unsigned i) const {
 
35740
    static const char *names[] = { "sons" }; return names[i];
 
35741
  }
 
35742
  const void *__attr (unsigned __i) const {
 
35743
    switch (__i) { case 0: return &sons; default: return 0; }
 
35744
  }
 
35745
#line 1471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35746
};
 
35747
 
 
35748
/** \class CT_CmpdLiteral CTree.h Puma/CTree.h
 
35749
 *  Tree node representing a compound literal.
 
35750
 *  Example: \code (int[]){1,2,3) \endcode */
 
35751
 
 
35752
#line 35753 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35753
} // closed Puma
 
35754
class CCExprResolve;
 
35755
class CExprResolve;
 
35756
class WinIfExists;
 
35757
class WinImportHandler;
 
35758
class WinMacros;
 
35759
class WinAsm;
 
35760
class WinDeclSpecs;
 
35761
class WinMemberExplSpec;
 
35762
class WinTypeKeywords;
 
35763
class WinFriend;
 
35764
class ExtAC;
 
35765
class ExtACBuilderCoupling;
 
35766
class ExtACSyntaxCoupling;
 
35767
class ExtACTree;
 
35768
class ExtACKeywords;
 
35769
class ExtGnu;
 
35770
class PragmaOnceUnitState;
 
35771
class PragmaOnce;
 
35772
class CMatchSyntax;
 
35773
namespace Puma {
 
35774
 
 
35775
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35776
 
 
35777
#line 35778 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35778
} // closed Puma
 
35779
 
 
35780
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35781
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35782
#include "CCExprResolveH.ah"
 
35783
#endif
 
35784
namespace Puma {
 
35785
 
 
35786
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35787
 
 
35788
#line 35789 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35789
} // closed Puma
 
35790
 
 
35791
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35792
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35793
#include "CExprResolveH.ah"
 
35794
#endif
 
35795
namespace Puma {
 
35796
 
 
35797
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35798
class CT_CmpdLiteral : public CT_Expression, public CSemObject {
 
35799
#line 35800 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35800
  friend class ::CCExprResolve;
 
35801
  friend class ::CExprResolve;
 
35802
  friend class ::WinIfExists;
 
35803
  friend class ::WinImportHandler;
 
35804
  friend class ::WinMacros;
 
35805
  friend class ::WinAsm;
 
35806
  friend class ::WinDeclSpecs;
 
35807
  friend class ::WinMemberExplSpec;
 
35808
  friend class ::WinTypeKeywords;
 
35809
  friend class ::WinFriend;
 
35810
  friend class ::ExtAC;
 
35811
  friend class ::ExtACBuilderCoupling;
 
35812
  friend class ::ExtACSyntaxCoupling;
 
35813
  friend class ::ExtACTree;
 
35814
  friend class ::ExtACKeywords;
 
35815
  friend class ::ExtGnu;
 
35816
  friend class ::PragmaOnceUnitState;
 
35817
  friend class ::PragmaOnce;
 
35818
  friend class ::CMatchSyntax;
 
35819
 
 
35820
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35821
 
 
35822
  CTree *sons[4]; // open, type, close, init
 
35823
 
 
35824
public:
 
35825
  /** Constructor.
 
35826
   *  \param r Left parenthesis of the type name.
 
35827
   *  \param t The type name.
 
35828
   *  \param cr Right parenthesis of the type name.
 
35829
   *  \param i The initializer list. */
 
35830
  CT_CmpdLiteral (CTree *r, CTree *t, CTree *cr, CTree *i) {
 
35831
    AddSon (sons[0], r); AddSon (sons[1], t); 
 
35832
    AddSon (sons[2], cr); AddSon (sons[3], i);
 
35833
  }
 
35834
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35835
  static const char *NodeId ();
 
35836
  /** Get the name of the node. Can be compared with NodeId(). */
 
35837
  const char *NodeName () const { return NodeId (); }
 
35838
  /** Get the number of sons. */
 
35839
  int Sons () const { return 4; }
 
35840
  /** Get the n-th son.
 
35841
   *  \param n The index of the son.
 
35842
   *  \return The n-th son or NULL. */
 
35843
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
35844
  /** Replace a son.
 
35845
   *  \param old_son The son to replace.
 
35846
   *  \param new_son The new son. */
 
35847
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
35848
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
35849
  }
 
35850
  /** Get the type name. */
 
35851
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
35852
  /** Get the initializer list. */
 
35853
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[3]; }
 
35854
  /** Get the semantic information about the created object. */
 
35855
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
35856
   private:
 
35857
  typedef CT_CmpdLiteral CCExprResolveExpr;
 
35858
 
 
35859
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35860
 public :
 
35861
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35862
  typedef CT_CmpdLiteral CExprResolveExpr;
 
35863
 
 
35864
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35865
 public :
 
35866
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35867
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
35868
  const char *__attr_name (unsigned i) const {
 
35869
    static const char *names[] = { "sons" }; return names[i];
 
35870
  }
 
35871
  const void *__attr (unsigned __i) const {
 
35872
    switch (__i) { case 0: return &sons; default: return 0; }
 
35873
  }
 
35874
#line 1511 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35875
};
 
35876
 
 
35877
/** \class CT_ConstructExpr CTree.h Puma/CTree.h
 
35878
 *  Tree node representing a construct expression.
 
35879
 *  Example: \code std::string("abc") \endcode */
 
35880
 
 
35881
#line 35882 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35882
} // closed Puma
 
35883
class CCExprResolve;
 
35884
class CExprResolve;
 
35885
class WinIfExists;
 
35886
class WinImportHandler;
 
35887
class WinMacros;
 
35888
class WinAsm;
 
35889
class WinDeclSpecs;
 
35890
class WinMemberExplSpec;
 
35891
class WinTypeKeywords;
 
35892
class WinFriend;
 
35893
class ExtAC;
 
35894
class ExtACBuilderCoupling;
 
35895
class ExtACSyntaxCoupling;
 
35896
class ExtACTree;
 
35897
class ExtACKeywords;
 
35898
class ExtGnu;
 
35899
class PragmaOnceUnitState;
 
35900
class PragmaOnce;
 
35901
class CMatchSyntax;
 
35902
namespace Puma {
 
35903
 
 
35904
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35905
 
 
35906
#line 35907 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35907
} // closed Puma
 
35908
 
 
35909
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35910
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35911
#include "CCExprResolveH.ah"
 
35912
#endif
 
35913
namespace Puma {
 
35914
 
 
35915
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35916
 
 
35917
#line 35918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35918
} // closed Puma
 
35919
 
 
35920
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35921
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35922
#include "CExprResolveH.ah"
 
35923
#endif
 
35924
namespace Puma {
 
35925
 
 
35926
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35927
class CT_ConstructExpr : public CT_Expression, public CSemObject {
 
35928
#line 35929 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
35929
  friend class ::CCExprResolve;
 
35930
  friend class ::CExprResolve;
 
35931
  friend class ::WinIfExists;
 
35932
  friend class ::WinImportHandler;
 
35933
  friend class ::WinMacros;
 
35934
  friend class ::WinAsm;
 
35935
  friend class ::WinDeclSpecs;
 
35936
  friend class ::WinMemberExplSpec;
 
35937
  friend class ::WinTypeKeywords;
 
35938
  friend class ::WinFriend;
 
35939
  friend class ::ExtAC;
 
35940
  friend class ::ExtACBuilderCoupling;
 
35941
  friend class ::ExtACSyntaxCoupling;
 
35942
  friend class ::ExtACTree;
 
35943
  friend class ::ExtACKeywords;
 
35944
  friend class ::ExtGnu;
 
35945
  friend class ::PragmaOnceUnitState;
 
35946
  friend class ::PragmaOnce;
 
35947
  friend class ::CMatchSyntax;
 
35948
 
 
35949
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35950
 
 
35951
  CTree *sons[2]; // type, init
 
35952
 
 
35953
public:
 
35954
  /** Constructor.
 
35955
   *  \param t The type name.
 
35956
   *  \param i The initializer list. */
 
35957
  CT_ConstructExpr (CTree *t, CTree *i) { AddSon (sons[0], t); AddSon (sons[1], i); }
 
35958
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35959
  static const char *NodeId ();
 
35960
  /** Get the name of the node. Can be compared with NodeId(). */
 
35961
  const char *NodeName () const { return NodeId (); }
 
35962
  /** Get the number of sons. */
 
35963
  int Sons () const { return 2; }
 
35964
  /** Get the n-th son.
 
35965
   *  \param n The index of the son.
 
35966
   *  \return The n-th son or NULL. */
 
35967
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
35968
  /** Replace a son.
 
35969
   *  \param old_son The son to replace.
 
35970
   *  \param new_son The new son. */
 
35971
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
35972
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
35973
  }
 
35974
  /** Get the type name. */
 
35975
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[0]; }
 
35976
  /** Get the initializer. */
 
35977
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
35978
  /** Get the semantic information about the created object. */
 
35979
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
35980
   private:
 
35981
  typedef CT_ConstructExpr CCExprResolveExpr;
 
35982
 
 
35983
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35984
 public :
 
35985
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35986
  typedef CT_ConstructExpr CExprResolveExpr;
 
35987
 
 
35988
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35989
 public :
 
35990
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35991
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
35992
  const char *__attr_name (unsigned i) const {
 
35993
    static const char *names[] = { "sons" }; return names[i];
 
35994
  }
 
35995
  const void *__attr (unsigned __i) const {
 
35996
    switch (__i) { case 0: return &sons; default: return 0; }
 
35997
  }
 
35998
#line 1546 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35999
};
 
36000
 
 
36001
/** \class CT_ThrowExpr CTree.h Puma/CTree.h
 
36002
 *  Tree node representing a throw expression.
 
36003
 *  Example: \code throw std::exception() \endcode */
 
36004
 
 
36005
#line 36006 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36006
} // closed Puma
 
36007
class CCExprResolve;
 
36008
class CExprResolve;
 
36009
class WinIfExists;
 
36010
class WinImportHandler;
 
36011
class WinMacros;
 
36012
class WinAsm;
 
36013
class WinDeclSpecs;
 
36014
class WinMemberExplSpec;
 
36015
class WinTypeKeywords;
 
36016
class WinFriend;
 
36017
class ExtAC;
 
36018
class ExtACBuilderCoupling;
 
36019
class ExtACSyntaxCoupling;
 
36020
class ExtACTree;
 
36021
class ExtACKeywords;
 
36022
class ExtGnu;
 
36023
class PragmaOnceUnitState;
 
36024
class PragmaOnce;
 
36025
class CMatchSyntax;
 
36026
namespace Puma {
 
36027
 
 
36028
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36029
 
 
36030
#line 36031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36031
} // closed Puma
 
36032
 
 
36033
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36034
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36035
#include "CCExprResolveH.ah"
 
36036
#endif
 
36037
namespace Puma {
 
36038
 
 
36039
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36040
 
 
36041
#line 36042 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36042
} // closed Puma
 
36043
 
 
36044
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36045
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36046
#include "CExprResolveH.ah"
 
36047
#endif
 
36048
namespace Puma {
 
36049
 
 
36050
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36051
class CT_ThrowExpr : public CT_Expression {
 
36052
#line 36053 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36053
  friend class ::CCExprResolve;
 
36054
  friend class ::CExprResolve;
 
36055
  friend class ::WinIfExists;
 
36056
  friend class ::WinImportHandler;
 
36057
  friend class ::WinMacros;
 
36058
  friend class ::WinAsm;
 
36059
  friend class ::WinDeclSpecs;
 
36060
  friend class ::WinMemberExplSpec;
 
36061
  friend class ::WinTypeKeywords;
 
36062
  friend class ::WinFriend;
 
36063
  friend class ::ExtAC;
 
36064
  friend class ::ExtACBuilderCoupling;
 
36065
  friend class ::ExtACSyntaxCoupling;
 
36066
  friend class ::ExtACTree;
 
36067
  friend class ::ExtACKeywords;
 
36068
  friend class ::ExtGnu;
 
36069
  friend class ::PragmaOnceUnitState;
 
36070
  friend class ::PragmaOnce;
 
36071
  friend class ::CMatchSyntax;
 
36072
 
 
36073
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36074
 
 
36075
  CTree *sons[2]; // throw, expr
 
36076
 
 
36077
public:
 
36078
  /** Constructor.
 
36079
   *  \param t The 'throw' keyword.
 
36080
   *  \param e The expression. */
 
36081
  CT_ThrowExpr (CTree *t, CTree *e = (CTree*)0) { AddSon (sons[0], t); AddSon (sons[1], e); }
 
36082
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36083
  static const char *NodeId ();
 
36084
  /** Get the name of the node. Can be compared with NodeId(). */
 
36085
  const char *NodeName () const { return NodeId (); }
 
36086
  /** Get the number of sons. */
 
36087
  int Sons () const { return CTree::Sons (sons, 2); }
 
36088
  /** Get the n-th son.
 
36089
   *  \param n The index of the son.
 
36090
   *  \return The n-th son or NULL. */
 
36091
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
36092
  /** Replace a son.
 
36093
   *  \param old_son The son to replace.
 
36094
   *  \param new_son The new son. */
 
36095
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
36096
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
36097
  }
 
36098
  /** Get the expression. */
 
36099
  CTree *Expr () const { return sons[1]; }
 
36100
   private:
 
36101
  typedef CT_ThrowExpr CCExprResolveExpr;
 
36102
 
 
36103
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36104
 public :
 
36105
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36106
  typedef CT_ThrowExpr CExprResolveExpr;
 
36107
 
 
36108
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36109
 public :
 
36110
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36111
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
36112
  const char *__attr_name (unsigned i) const {
 
36113
    static const char *names[] = { "sons" }; return names[i];
 
36114
  }
 
36115
  const void *__attr (unsigned __i) const {
 
36116
    switch (__i) { case 0: return &sons; default: return 0; }
 
36117
  }
 
36118
#line 1577 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36119
};
 
36120
 
 
36121
/** \class CT_IndexExpr CTree.h Puma/CTree.h
 
36122
 *  Tree node representing an index expression. 
 
36123
 *  Example: \code a[1] \endcode */
 
36124
 
 
36125
#line 36126 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36126
} // closed Puma
 
36127
class CCExprResolve;
 
36128
class CExprResolve;
 
36129
class WinIfExists;
 
36130
class WinImportHandler;
 
36131
class WinMacros;
 
36132
class WinAsm;
 
36133
class WinDeclSpecs;
 
36134
class WinMemberExplSpec;
 
36135
class WinTypeKeywords;
 
36136
class WinFriend;
 
36137
class ExtAC;
 
36138
class ExtACBuilderCoupling;
 
36139
class ExtACSyntaxCoupling;
 
36140
class ExtACTree;
 
36141
class ExtACKeywords;
 
36142
class ExtGnu;
 
36143
class PragmaOnceUnitState;
 
36144
class PragmaOnce;
 
36145
class CMatchSyntax;
 
36146
namespace Puma {
 
36147
 
 
36148
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36149
 
 
36150
#line 36151 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36151
} // closed Puma
 
36152
 
 
36153
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36154
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36155
#include "CCExprResolveH.ah"
 
36156
#endif
 
36157
namespace Puma {
 
36158
 
 
36159
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36160
 
 
36161
#line 36162 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36162
} // closed Puma
 
36163
 
 
36164
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36165
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36166
#include "CExprResolveH.ah"
 
36167
#endif
 
36168
namespace Puma {
 
36169
 
 
36170
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36171
class CT_IndexExpr : public CT_Call {
 
36172
#line 36173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36173
  friend class ::CCExprResolve;
 
36174
  friend class ::CExprResolve;
 
36175
  friend class ::WinIfExists;
 
36176
  friend class ::WinImportHandler;
 
36177
  friend class ::WinMacros;
 
36178
  friend class ::WinAsm;
 
36179
  friend class ::WinDeclSpecs;
 
36180
  friend class ::WinMemberExplSpec;
 
36181
  friend class ::WinTypeKeywords;
 
36182
  friend class ::WinFriend;
 
36183
  friend class ::ExtAC;
 
36184
  friend class ::ExtACBuilderCoupling;
 
36185
  friend class ::ExtACSyntaxCoupling;
 
36186
  friend class ::ExtACTree;
 
36187
  friend class ::ExtACKeywords;
 
36188
  friend class ::ExtGnu;
 
36189
  friend class ::PragmaOnceUnitState;
 
36190
  friend class ::PragmaOnce;
 
36191
  friend class ::CMatchSyntax;
 
36192
 
 
36193
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36194
 
 
36195
  CTree *sons[4]; // expr, open, index, close
 
36196
 
 
36197
public:
 
36198
  /** Constructor.
 
36199
   *  \param e The expression on which to invoke the index operator.
 
36200
   *  \param o Left parenthesis of the index expression.
 
36201
   *  \param i The index expression. 
 
36202
   *  \param c Right parenthesis of the index expression. */
 
36203
  CT_IndexExpr (CTree *e, CTree *o, CTree *i, CTree *c) {
 
36204
    AddSon (sons[0], e); AddSon (sons[1], o); 
 
36205
    AddSon (sons[2], i); AddSon (sons[3], c);
 
36206
  }
 
36207
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36208
  static const char *NodeId ();
 
36209
  /** Get the name of the node. Can be compared with NodeId(). */
 
36210
  const char *NodeName () const { return NodeId (); }
 
36211
  /** Get the number of sons. */
 
36212
  int Sons () const { return 4; }
 
36213
  /** Get the n-th son.
 
36214
   *  \param n The index of the son.
 
36215
   *  \return The n-th son or NULL. */
 
36216
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
36217
  /** Replace a son.
 
36218
   *  \param old_son The son to replace.
 
36219
   *  \param new_son The new son. */
 
36220
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
36221
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
36222
  }
 
36223
   private:
 
36224
  typedef CT_IndexExpr CCExprResolveExpr;
 
36225
 
 
36226
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36227
 public :
 
36228
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36229
  typedef CT_IndexExpr CExprResolveExpr;
 
36230
 
 
36231
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36232
 public :
 
36233
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36234
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
36235
  const char *__attr_name (unsigned i) const {
 
36236
    static const char *names[] = { "sons" }; return names[i];
 
36237
  }
 
36238
  const void *__attr (unsigned __i) const {
 
36239
    switch (__i) { case 0: return &sons; default: return 0; }
 
36240
  }
 
36241
#line 1611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36242
};
 
36243
 
 
36244
/** \class CT_CallExpr CTree.h Puma/CTree.h
 
36245
 *  Tree node representing a function call expression.
 
36246
 *  Example: \code f(i) \endcode */
 
36247
 
 
36248
#line 36249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36249
} // closed Puma
 
36250
class CCExprResolve;
 
36251
class CExprResolve;
 
36252
class WinIfExists;
 
36253
class WinImportHandler;
 
36254
class WinMacros;
 
36255
class WinAsm;
 
36256
class WinDeclSpecs;
 
36257
class WinMemberExplSpec;
 
36258
class WinTypeKeywords;
 
36259
class WinFriend;
 
36260
class ExtAC;
 
36261
class ExtACBuilderCoupling;
 
36262
class ExtACSyntaxCoupling;
 
36263
class ExtACTree;
 
36264
class ExtACKeywords;
 
36265
class ExtGnu;
 
36266
class PragmaOnceUnitState;
 
36267
class PragmaOnce;
 
36268
class CMatchSyntax;
 
36269
namespace Puma {
 
36270
 
 
36271
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36272
 
 
36273
#line 36274 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36274
} // closed Puma
 
36275
 
 
36276
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36277
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36278
#include "CCExprResolveH.ah"
 
36279
#endif
 
36280
namespace Puma {
 
36281
 
 
36282
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36283
 
 
36284
#line 36285 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36285
} // closed Puma
 
36286
 
 
36287
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36288
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36289
#include "CExprResolveH.ah"
 
36290
#endif
 
36291
namespace Puma {
 
36292
 
 
36293
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36294
class CT_CallExpr : public CT_Call {
 
36295
#line 36296 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36296
  friend class ::CCExprResolve;
 
36297
  friend class ::CExprResolve;
 
36298
  friend class ::WinIfExists;
 
36299
  friend class ::WinImportHandler;
 
36300
  friend class ::WinMacros;
 
36301
  friend class ::WinAsm;
 
36302
  friend class ::WinDeclSpecs;
 
36303
  friend class ::WinMemberExplSpec;
 
36304
  friend class ::WinTypeKeywords;
 
36305
  friend class ::WinFriend;
 
36306
  friend class ::ExtAC;
 
36307
  friend class ::ExtACBuilderCoupling;
 
36308
  friend class ::ExtACSyntaxCoupling;
 
36309
  friend class ::ExtACTree;
 
36310
  friend class ::ExtACKeywords;
 
36311
  friend class ::ExtGnu;
 
36312
  friend class ::PragmaOnceUnitState;
 
36313
  friend class ::PragmaOnce;
 
36314
  friend class ::CMatchSyntax;
 
36315
 
 
36316
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36317
 
 
36318
  CTree *sons[2]; // expr, args
 
36319
 
 
36320
public:
 
36321
  /** Constructor.
 
36322
   *  \param e The expression on which the call is invoked. */
 
36323
  CT_CallExpr (CTree *e) { AddSon (sons[0], e); AddSon (sons[1], 0); }
 
36324
  /** Constructor.
 
36325
   *  \param e The expression on which the call is invoked.
 
36326
   *  \param l The argument list of the call. */
 
36327
  CT_CallExpr (CTree *e, CTree *l) { AddSon (sons[0], e); AddSon (sons[1], l); }
 
36328
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36329
  static const char *NodeId ();
 
36330
  /** Get the name of the node. Can be compared with NodeId(). */
 
36331
  const char *NodeName () const { return NodeId (); }
 
36332
  /** Get the number of sons. */
 
36333
  int Sons () const { return CTree::Sons (sons, 2); }
 
36334
  /** Get the n-th son.
 
36335
   *  \param n The index of the son.
 
36336
   *  \return The n-th son or NULL. */
 
36337
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
36338
  /** Replace a son.
 
36339
   *  \param old_son The son to replace.
 
36340
   *  \param new_son The new son. */
 
36341
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
36342
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
36343
  }
 
36344
  CTree *Expr () const { return sons[0]; }
 
36345
  CT_ExprList *Arguments () const { return (CT_ExprList*)sons[1]; }
 
36346
   private:
 
36347
  typedef CT_CallExpr CCExprResolveExpr;
 
36348
 
 
36349
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36350
 public :
 
36351
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36352
  typedef CT_CallExpr CExprResolveExpr;
 
36353
 
 
36354
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36355
 public :
 
36356
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36357
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
36358
  const char *__attr_name (unsigned i) const {
 
36359
    static const char *names[] = { "sons" }; return names[i];
 
36360
  }
 
36361
  const void *__attr (unsigned __i) const {
 
36362
    switch (__i) { case 0: return &sons; default: return 0; }
 
36363
  }
 
36364
#line 1645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36365
};
 
36366
 
 
36367
/** \class CT_CastExpr CTree.h Puma/CTree.h
 
36368
 *  Tree node representing a cast expression.
 
36369
 *  Example: \code (int)a \endcode */
 
36370
 
 
36371
#line 36372 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36372
} // closed Puma
 
36373
class CCExprResolve;
 
36374
class CExprResolve;
 
36375
class WinIfExists;
 
36376
class WinImportHandler;
 
36377
class WinMacros;
 
36378
class WinAsm;
 
36379
class WinDeclSpecs;
 
36380
class WinMemberExplSpec;
 
36381
class WinTypeKeywords;
 
36382
class WinFriend;
 
36383
class ExtAC;
 
36384
class ExtACBuilderCoupling;
 
36385
class ExtACSyntaxCoupling;
 
36386
class ExtACTree;
 
36387
class ExtACKeywords;
 
36388
class ExtGnu;
 
36389
class PragmaOnceUnitState;
 
36390
class PragmaOnce;
 
36391
class CMatchSyntax;
 
36392
namespace Puma {
 
36393
 
 
36394
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36395
 
 
36396
#line 36397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36397
} // closed Puma
 
36398
 
 
36399
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36400
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36401
#include "CCExprResolveH.ah"
 
36402
#endif
 
36403
namespace Puma {
 
36404
 
 
36405
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36406
 
 
36407
#line 36408 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36408
} // closed Puma
 
36409
 
 
36410
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36411
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36412
#include "CExprResolveH.ah"
 
36413
#endif
 
36414
namespace Puma {
 
36415
 
 
36416
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36417
class CT_CastExpr : public CT_Expression {
 
36418
#line 36419 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36419
  friend class ::CCExprResolve;
 
36420
  friend class ::CExprResolve;
 
36421
  friend class ::WinIfExists;
 
36422
  friend class ::WinImportHandler;
 
36423
  friend class ::WinMacros;
 
36424
  friend class ::WinAsm;
 
36425
  friend class ::WinDeclSpecs;
 
36426
  friend class ::WinMemberExplSpec;
 
36427
  friend class ::WinTypeKeywords;
 
36428
  friend class ::WinFriend;
 
36429
  friend class ::ExtAC;
 
36430
  friend class ::ExtACBuilderCoupling;
 
36431
  friend class ::ExtACSyntaxCoupling;
 
36432
  friend class ::ExtACTree;
 
36433
  friend class ::ExtACKeywords;
 
36434
  friend class ::ExtGnu;
 
36435
  friend class ::PragmaOnceUnitState;
 
36436
  friend class ::PragmaOnce;
 
36437
  friend class ::CMatchSyntax;
 
36438
 
 
36439
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36440
 
 
36441
  CTree *sons[4]; // open, type, close, expr
 
36442
 
 
36443
public:
 
36444
  /** Constructor.
 
36445
   *  \param o Left parenthesis of the type name.
 
36446
   *  \param t The type to cast to.
 
36447
   *  \param c Right parenthesis of the type name. 
 
36448
   *  \param e The expression to cast. */
 
36449
  CT_CastExpr (CTree *o, CTree *t, CTree *c, CTree *e) {
 
36450
    AddSon (sons[0], o); AddSon (sons[1], t); 
 
36451
    AddSon (sons[2], c); AddSon (sons[3], e);
 
36452
  }
 
36453
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36454
  static const char *NodeId ();
 
36455
  /** Get the name of the node. Can be compared with NodeId(). */
 
36456
  const char *NodeName () const { return NodeId (); }
 
36457
  /** Get the number of sons. */
 
36458
  int Sons () const { return 4; }
 
36459
  /** Get the n-th son.
 
36460
   *  \param n The index of the son.
 
36461
   *  \return The n-th son or NULL. */
 
36462
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
36463
  /** Replace a son.
 
36464
   *  \param old_son The son to replace.
 
36465
   *  \param new_son The new son. */
 
36466
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
36467
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
36468
  }
 
36469
  /** Get the casted expression. */
 
36470
  CTree *Expr () const { return sons[3]; }
 
36471
  /** Get the type to cast to. */
 
36472
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
36473
   private:
 
36474
  typedef CT_CastExpr CCExprResolveExpr;
 
36475
 
 
36476
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36477
 public :
 
36478
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36479
  typedef CT_CastExpr CExprResolveExpr;
 
36480
 
 
36481
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36482
 public :
 
36483
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36484
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
36485
  const char *__attr_name (unsigned i) const {
 
36486
    static const char *names[] = { "sons" }; return names[i];
 
36487
  }
 
36488
  const void *__attr (unsigned __i) const {
 
36489
    switch (__i) { case 0: return &sons; default: return 0; }
 
36490
  }
 
36491
#line 1683 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36492
};
 
36493
 
 
36494
/** \class CT_StaticCast CTree.h Puma/CTree.h
 
36495
 *  Tree node representing a static cast.
 
36496
 *  Example: \code static_cast<int>(a) \endcode */
 
36497
 
 
36498
#line 36499 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36499
} // closed Puma
 
36500
class CCExprResolve;
 
36501
class CExprResolve;
 
36502
class WinIfExists;
 
36503
class WinImportHandler;
 
36504
class WinMacros;
 
36505
class WinAsm;
 
36506
class WinDeclSpecs;
 
36507
class WinMemberExplSpec;
 
36508
class WinTypeKeywords;
 
36509
class WinFriend;
 
36510
class ExtAC;
 
36511
class ExtACBuilderCoupling;
 
36512
class ExtACSyntaxCoupling;
 
36513
class ExtACTree;
 
36514
class ExtACKeywords;
 
36515
class ExtGnu;
 
36516
class PragmaOnceUnitState;
 
36517
class PragmaOnce;
 
36518
class CMatchSyntax;
 
36519
namespace Puma {
 
36520
 
 
36521
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36522
 
 
36523
#line 36524 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36524
} // closed Puma
 
36525
 
 
36526
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36527
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36528
#include "CCExprResolveH.ah"
 
36529
#endif
 
36530
namespace Puma {
 
36531
 
 
36532
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36533
 
 
36534
#line 36535 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36535
} // closed Puma
 
36536
 
 
36537
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36538
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36539
#include "CExprResolveH.ah"
 
36540
#endif
 
36541
namespace Puma {
 
36542
 
 
36543
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36544
class CT_StaticCast : public CT_Expression {
 
36545
#line 36546 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36546
  friend class ::CCExprResolve;
 
36547
  friend class ::CExprResolve;
 
36548
  friend class ::WinIfExists;
 
36549
  friend class ::WinImportHandler;
 
36550
  friend class ::WinMacros;
 
36551
  friend class ::WinAsm;
 
36552
  friend class ::WinDeclSpecs;
 
36553
  friend class ::WinMemberExplSpec;
 
36554
  friend class ::WinTypeKeywords;
 
36555
  friend class ::WinFriend;
 
36556
  friend class ::ExtAC;
 
36557
  friend class ::ExtACBuilderCoupling;
 
36558
  friend class ::ExtACSyntaxCoupling;
 
36559
  friend class ::ExtACTree;
 
36560
  friend class ::ExtACKeywords;
 
36561
  friend class ::ExtGnu;
 
36562
  friend class ::PragmaOnceUnitState;
 
36563
  friend class ::PragmaOnce;
 
36564
  friend class ::CMatchSyntax;
 
36565
 
 
36566
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36567
 
 
36568
  CTree *sons[5]; // cast, open, type, close, expr
 
36569
 
 
36570
public:
 
36571
  /** Constructor.
 
36572
   *  \param cst The cast operator, i.e. 'static_cast'.
 
36573
   *  \param o Left arrow bracket of the type name.
 
36574
   *  \param t The type to cast to.
 
36575
   *  \param c Right array bracket of the type name.
 
36576
   *  \param e The expression to cast. */
 
36577
  CT_StaticCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) {
 
36578
    AddSon (sons[0], cst); AddSon (sons[1], o); AddSon (sons[2], t); 
 
36579
    AddSon (sons[3], c); AddSon (sons[4], e);
 
36580
  }
 
36581
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36582
  static const char *NodeId ();
 
36583
  /** Get the name of the node. Can be compared with NodeId(). */
 
36584
  const char *NodeName () const { return NodeId (); }
 
36585
  /** Get the number of sons. */
 
36586
  int Sons () const { return 5; }
 
36587
  /** Get the n-th son.
 
36588
   *  \param n The index of the son.
 
36589
   *  \return The n-th son or NULL. */
 
36590
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
36591
  /** Replace a son.
 
36592
   *  \param old_son The son to replace.
 
36593
   *  \param new_son The new son. */
 
36594
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
36595
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
36596
  }
 
36597
  /** Get the casted expression. */
 
36598
  CTree *Expr () const { return sons[4]; }
 
36599
  /** Get the type to cast to. */
 
36600
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
36601
   private:
 
36602
  typedef CT_StaticCast CCExprResolveExpr;
 
36603
 
 
36604
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36605
 public :
 
36606
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36607
  typedef CT_StaticCast CExprResolveExpr;
 
36608
 
 
36609
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36610
 public :
 
36611
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36612
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
36613
  const char *__attr_name (unsigned i) const {
 
36614
    static const char *names[] = { "sons" }; return names[i];
 
36615
  }
 
36616
  const void *__attr (unsigned __i) const {
 
36617
    switch (__i) { case 0: return &sons; default: return 0; }
 
36618
  }
 
36619
#line 1722 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36620
};
 
36621
 
 
36622
/** \class CT_ConstCast CTree.h Puma/CTree.h
 
36623
 *  Tree node representing a const cast.
 
36624
 *  Example: \code const_cast<int>(a) \endcode */
 
36625
 
 
36626
#line 36627 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36627
} // closed Puma
 
36628
class CCExprResolve;
 
36629
class CExprResolve;
 
36630
class WinIfExists;
 
36631
class WinImportHandler;
 
36632
class WinMacros;
 
36633
class WinAsm;
 
36634
class WinDeclSpecs;
 
36635
class WinMemberExplSpec;
 
36636
class WinTypeKeywords;
 
36637
class WinFriend;
 
36638
class ExtAC;
 
36639
class ExtACBuilderCoupling;
 
36640
class ExtACSyntaxCoupling;
 
36641
class ExtACTree;
 
36642
class ExtACKeywords;
 
36643
class ExtGnu;
 
36644
class PragmaOnceUnitState;
 
36645
class PragmaOnce;
 
36646
class CMatchSyntax;
 
36647
namespace Puma {
 
36648
 
 
36649
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36650
 
 
36651
#line 36652 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36652
} // closed Puma
 
36653
 
 
36654
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36655
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36656
#include "CCExprResolveH.ah"
 
36657
#endif
 
36658
namespace Puma {
 
36659
 
 
36660
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36661
 
 
36662
#line 36663 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36663
} // closed Puma
 
36664
 
 
36665
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36666
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36667
#include "CExprResolveH.ah"
 
36668
#endif
 
36669
namespace Puma {
 
36670
 
 
36671
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36672
class CT_ConstCast : public CT_StaticCast {
 
36673
#line 36674 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36674
  friend class ::CCExprResolve;
 
36675
  friend class ::CExprResolve;
 
36676
  friend class ::WinIfExists;
 
36677
  friend class ::WinImportHandler;
 
36678
  friend class ::WinMacros;
 
36679
  friend class ::WinAsm;
 
36680
  friend class ::WinDeclSpecs;
 
36681
  friend class ::WinMemberExplSpec;
 
36682
  friend class ::WinTypeKeywords;
 
36683
  friend class ::WinFriend;
 
36684
  friend class ::ExtAC;
 
36685
  friend class ::ExtACBuilderCoupling;
 
36686
  friend class ::ExtACSyntaxCoupling;
 
36687
  friend class ::ExtACTree;
 
36688
  friend class ::ExtACKeywords;
 
36689
  friend class ::ExtGnu;
 
36690
  friend class ::PragmaOnceUnitState;
 
36691
  friend class ::PragmaOnce;
 
36692
  friend class ::CMatchSyntax;
 
36693
 
 
36694
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36695
 
 
36696
public:
 
36697
  /** Constructor.
 
36698
   *  \param cst The cast operator, i.e. 'const_cast'.
 
36699
   *  \param o Left arrow bracket of the type name.
 
36700
   *  \param t The type to cast to.
 
36701
   *  \param c Right array bracket of the type name.
 
36702
   *  \param e The expression to cast. */
 
36703
  CT_ConstCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
36704
    CT_StaticCast (cst, o, t, c, e) {}
 
36705
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36706
  static const char *NodeId ();
 
36707
  /** Get the name of the node. Can be compared with NodeId(). */
 
36708
  const char *NodeName () const { return NodeId (); }
 
36709
   private:
 
36710
  typedef CT_ConstCast CCExprResolveExpr;
 
36711
 
 
36712
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36713
 public :
 
36714
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36715
  typedef CT_ConstCast CExprResolveExpr;
 
36716
 
 
36717
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36718
 public :
 
36719
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36720
  typedef AC::TLE __AttrTypes;
 
36721
  const char *__attr_name (unsigned i) const { return 0; }
 
36722
  const void *__attr (unsigned __i) const { return 0; }
 
36723
#line 1741 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36724
};
 
36725
 
 
36726
/** \class CT_ReintCast CTree.h Puma/CTree.h
 
36727
 *  Tree node representing a reinterpret cast.
 
36728
 *  Example: \code reinterpret_cast<int>(a) \endcode */
 
36729
 
 
36730
#line 36731 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36731
} // closed Puma
 
36732
class CCExprResolve;
 
36733
class CExprResolve;
 
36734
class WinIfExists;
 
36735
class WinImportHandler;
 
36736
class WinMacros;
 
36737
class WinAsm;
 
36738
class WinDeclSpecs;
 
36739
class WinMemberExplSpec;
 
36740
class WinTypeKeywords;
 
36741
class WinFriend;
 
36742
class ExtAC;
 
36743
class ExtACBuilderCoupling;
 
36744
class ExtACSyntaxCoupling;
 
36745
class ExtACTree;
 
36746
class ExtACKeywords;
 
36747
class ExtGnu;
 
36748
class PragmaOnceUnitState;
 
36749
class PragmaOnce;
 
36750
class CMatchSyntax;
 
36751
namespace Puma {
 
36752
 
 
36753
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36754
 
 
36755
#line 36756 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36756
} // closed Puma
 
36757
 
 
36758
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36759
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36760
#include "CCExprResolveH.ah"
 
36761
#endif
 
36762
namespace Puma {
 
36763
 
 
36764
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36765
 
 
36766
#line 36767 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36767
} // closed Puma
 
36768
 
 
36769
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36770
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36771
#include "CExprResolveH.ah"
 
36772
#endif
 
36773
namespace Puma {
 
36774
 
 
36775
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36776
class CT_ReintCast : public CT_StaticCast {
 
36777
#line 36778 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36778
  friend class ::CCExprResolve;
 
36779
  friend class ::CExprResolve;
 
36780
  friend class ::WinIfExists;
 
36781
  friend class ::WinImportHandler;
 
36782
  friend class ::WinMacros;
 
36783
  friend class ::WinAsm;
 
36784
  friend class ::WinDeclSpecs;
 
36785
  friend class ::WinMemberExplSpec;
 
36786
  friend class ::WinTypeKeywords;
 
36787
  friend class ::WinFriend;
 
36788
  friend class ::ExtAC;
 
36789
  friend class ::ExtACBuilderCoupling;
 
36790
  friend class ::ExtACSyntaxCoupling;
 
36791
  friend class ::ExtACTree;
 
36792
  friend class ::ExtACKeywords;
 
36793
  friend class ::ExtGnu;
 
36794
  friend class ::PragmaOnceUnitState;
 
36795
  friend class ::PragmaOnce;
 
36796
  friend class ::CMatchSyntax;
 
36797
 
 
36798
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36799
 
 
36800
public:
 
36801
  /** Constructor.
 
36802
   *  \param cst The cast operator, i.e. 'reinterpret_cast'.
 
36803
   *  \param o Left arrow bracket of the type name.
 
36804
   *  \param t The type to cast to.
 
36805
   *  \param c Right array bracket of the type name.
 
36806
   *  \param e The expression to cast. */
 
36807
  CT_ReintCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
36808
    CT_StaticCast (cst, o, t, c, e) {}
 
36809
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36810
  static const char *NodeId ();
 
36811
  /** Get the name of the node. Can be compared with NodeId(). */
 
36812
  const char *NodeName () const { return NodeId (); }
 
36813
   private:
 
36814
  typedef CT_ReintCast CCExprResolveExpr;
 
36815
 
 
36816
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36817
 public :
 
36818
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36819
  typedef CT_ReintCast CExprResolveExpr;
 
36820
 
 
36821
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36822
 public :
 
36823
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36824
  typedef AC::TLE __AttrTypes;
 
36825
  const char *__attr_name (unsigned i) const { return 0; }
 
36826
  const void *__attr (unsigned __i) const { return 0; }
 
36827
#line 1760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36828
};
 
36829
 
 
36830
/** \class CT_DynamicCast CTree.h Puma/CTree.h
 
36831
 *  Tree node representing a dynamic cast.
 
36832
 *  Example: \code dynamic_cast<int>(a) \endcode */
 
36833
 
 
36834
#line 36835 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36835
} // closed Puma
 
36836
class CCExprResolve;
 
36837
class CExprResolve;
 
36838
class WinIfExists;
 
36839
class WinImportHandler;
 
36840
class WinMacros;
 
36841
class WinAsm;
 
36842
class WinDeclSpecs;
 
36843
class WinMemberExplSpec;
 
36844
class WinTypeKeywords;
 
36845
class WinFriend;
 
36846
class ExtAC;
 
36847
class ExtACBuilderCoupling;
 
36848
class ExtACSyntaxCoupling;
 
36849
class ExtACTree;
 
36850
class ExtACKeywords;
 
36851
class ExtGnu;
 
36852
class PragmaOnceUnitState;
 
36853
class PragmaOnce;
 
36854
class CMatchSyntax;
 
36855
namespace Puma {
 
36856
 
 
36857
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36858
 
 
36859
#line 36860 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36860
} // closed Puma
 
36861
 
 
36862
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36863
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36864
#include "CCExprResolveH.ah"
 
36865
#endif
 
36866
namespace Puma {
 
36867
 
 
36868
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36869
 
 
36870
#line 36871 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36871
} // closed Puma
 
36872
 
 
36873
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36874
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36875
#include "CExprResolveH.ah"
 
36876
#endif
 
36877
namespace Puma {
 
36878
 
 
36879
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36880
class CT_DynamicCast : public CT_StaticCast {
 
36881
#line 36882 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36882
  friend class ::CCExprResolve;
 
36883
  friend class ::CExprResolve;
 
36884
  friend class ::WinIfExists;
 
36885
  friend class ::WinImportHandler;
 
36886
  friend class ::WinMacros;
 
36887
  friend class ::WinAsm;
 
36888
  friend class ::WinDeclSpecs;
 
36889
  friend class ::WinMemberExplSpec;
 
36890
  friend class ::WinTypeKeywords;
 
36891
  friend class ::WinFriend;
 
36892
  friend class ::ExtAC;
 
36893
  friend class ::ExtACBuilderCoupling;
 
36894
  friend class ::ExtACSyntaxCoupling;
 
36895
  friend class ::ExtACTree;
 
36896
  friend class ::ExtACKeywords;
 
36897
  friend class ::ExtGnu;
 
36898
  friend class ::PragmaOnceUnitState;
 
36899
  friend class ::PragmaOnce;
 
36900
  friend class ::CMatchSyntax;
 
36901
 
 
36902
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36903
 
 
36904
public:
 
36905
  /** Constructor.
 
36906
   *  \param cst The cast operator, i.e. 'dynamic_cast'.
 
36907
   *  \param o Left arrow bracket of the type name.
 
36908
   *  \param t The type to cast to.
 
36909
   *  \param c Right array bracket of the type name.
 
36910
   *  \param e The expression to cast. */
 
36911
  CT_DynamicCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
36912
    CT_StaticCast (cst, o, t, c, e) {}
 
36913
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36914
  static const char *NodeId ();
 
36915
  /** Get the name of the node. Can be compared with NodeId(). */
 
36916
  const char *NodeName () const { return NodeId (); }
 
36917
   private:
 
36918
  typedef CT_DynamicCast CCExprResolveExpr;
 
36919
 
 
36920
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36921
 public :
 
36922
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36923
  typedef CT_DynamicCast CExprResolveExpr;
 
36924
 
 
36925
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36926
 public :
 
36927
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36928
  typedef AC::TLE __AttrTypes;
 
36929
  const char *__attr_name (unsigned i) const { return 0; }
 
36930
  const void *__attr (unsigned __i) const { return 0; }
 
36931
#line 1779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36932
};
 
36933
 
 
36934
/** \class CT_ImplicitCast CTree.h Puma/CTree.h
 
36935
 *  Tree node representing an implicit cast.
 
36936
 *  Example: 
 
36937
 *  \code 
 
36938
 * int i = 1.2;  // implicit cast from float to int 
 
36939
 *  \endcode */
 
36940
 
 
36941
#line 36942 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36942
} // closed Puma
 
36943
class CCExprResolve;
 
36944
class CExprResolve;
 
36945
class WinIfExists;
 
36946
class WinImportHandler;
 
36947
class WinMacros;
 
36948
class WinAsm;
 
36949
class WinDeclSpecs;
 
36950
class WinMemberExplSpec;
 
36951
class WinTypeKeywords;
 
36952
class WinFriend;
 
36953
class ExtAC;
 
36954
class ExtACBuilderCoupling;
 
36955
class ExtACSyntaxCoupling;
 
36956
class ExtACTree;
 
36957
class ExtACKeywords;
 
36958
class ExtGnu;
 
36959
class PragmaOnceUnitState;
 
36960
class PragmaOnce;
 
36961
class CMatchSyntax;
 
36962
namespace Puma {
 
36963
 
 
36964
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36965
 
 
36966
#line 36967 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36967
} // closed Puma
 
36968
 
 
36969
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36970
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36971
#include "CCExprResolveH.ah"
 
36972
#endif
 
36973
namespace Puma {
 
36974
 
 
36975
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36976
 
 
36977
#line 36978 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36978
} // closed Puma
 
36979
 
 
36980
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36981
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36982
#include "CExprResolveH.ah"
 
36983
#endif
 
36984
namespace Puma {
 
36985
 
 
36986
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36987
class CT_ImplicitCast : public CT_Expression {
 
36988
#line 36989 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
36989
  friend class ::CCExprResolve;
 
36990
  friend class ::CExprResolve;
 
36991
  friend class ::WinIfExists;
 
36992
  friend class ::WinImportHandler;
 
36993
  friend class ::WinMacros;
 
36994
  friend class ::WinAsm;
 
36995
  friend class ::WinDeclSpecs;
 
36996
  friend class ::WinMemberExplSpec;
 
36997
  friend class ::WinTypeKeywords;
 
36998
  friend class ::WinFriend;
 
36999
  friend class ::ExtAC;
 
37000
  friend class ::ExtACBuilderCoupling;
 
37001
  friend class ::ExtACSyntaxCoupling;
 
37002
  friend class ::ExtACTree;
 
37003
  friend class ::ExtACKeywords;
 
37004
  friend class ::ExtGnu;
 
37005
  friend class ::PragmaOnceUnitState;
 
37006
  friend class ::PragmaOnce;
 
37007
  friend class ::CMatchSyntax;
 
37008
 
 
37009
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37010
 
 
37011
  CTree *_expr; // casted expression
 
37012
 
 
37013
public:
 
37014
  /** Constructor.
 
37015
   *  \param e The expression that is implicitely casted. */
 
37016
  CT_ImplicitCast (CTree *e) { AddSon (_expr, e); }
 
37017
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37018
  static const char *NodeId ();
 
37019
  /** Get the name of the node. Can be compared with NodeId(). */
 
37020
  const char *NodeName () const { return NodeId (); }
 
37021
  /** Get the number of sons. */
 
37022
  int Sons () const { return 1; }
 
37023
  /** Get the n-th son.
 
37024
   *  \param n The index of the son.
 
37025
   *  \return The n-th son or NULL. */
 
37026
  CTree *Son (int n) const { return n == 0 ? _expr : (CTree*)0; }
 
37027
  /** Get the casted expression. */
 
37028
  CTree *Expr () const { return _expr; }
 
37029
  /** Replace a son.
 
37030
   *  \param old_son The son to replace.
 
37031
   *  \param new_son The new son. */
 
37032
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
37033
   { CTree::ReplaceSon (_expr, old_son, new_son); }
 
37034
   private:
 
37035
  typedef CT_ImplicitCast CCExprResolveExpr;
 
37036
 
 
37037
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37038
 public :
 
37039
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37040
  typedef CT_ImplicitCast CExprResolveExpr;
 
37041
 
 
37042
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37043
 public :
 
37044
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37045
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
37046
  const char *__attr_name (unsigned i) const {
 
37047
    static const char *names[] = { "_expr" }; return names[i];
 
37048
  }
 
37049
  const void *__attr (unsigned __i) const {
 
37050
    switch (__i) { case 0: return &_expr; default: return 0; }
 
37051
  }
 
37052
#line 1811 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37053
};
 
37054
 
 
37055
/** \class CT_TypeidExpr CTree.h Puma/CTree.h
 
37056
 *  Tree node representing a typeid expression.
 
37057
 *  Example: \code typeid(X) \endcode */
 
37058
 
 
37059
#line 37060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37060
} // closed Puma
 
37061
class CCExprResolve;
 
37062
class CExprResolve;
 
37063
class WinIfExists;
 
37064
class WinImportHandler;
 
37065
class WinMacros;
 
37066
class WinAsm;
 
37067
class WinDeclSpecs;
 
37068
class WinMemberExplSpec;
 
37069
class WinTypeKeywords;
 
37070
class WinFriend;
 
37071
class ExtAC;
 
37072
class ExtACBuilderCoupling;
 
37073
class ExtACSyntaxCoupling;
 
37074
class ExtACTree;
 
37075
class ExtACKeywords;
 
37076
class ExtGnu;
 
37077
class PragmaOnceUnitState;
 
37078
class PragmaOnce;
 
37079
class CMatchSyntax;
 
37080
namespace Puma {
 
37081
 
 
37082
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37083
 
 
37084
#line 37085 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37085
} // closed Puma
 
37086
 
 
37087
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37088
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37089
#include "CCExprResolveH.ah"
 
37090
#endif
 
37091
namespace Puma {
 
37092
 
 
37093
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37094
 
 
37095
#line 37096 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37096
} // closed Puma
 
37097
 
 
37098
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37099
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37100
#include "CExprResolveH.ah"
 
37101
#endif
 
37102
namespace Puma {
 
37103
 
 
37104
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37105
class CT_TypeidExpr : public CT_Expression {
 
37106
#line 37107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37107
  friend class ::CCExprResolve;
 
37108
  friend class ::CExprResolve;
 
37109
  friend class ::WinIfExists;
 
37110
  friend class ::WinImportHandler;
 
37111
  friend class ::WinMacros;
 
37112
  friend class ::WinAsm;
 
37113
  friend class ::WinDeclSpecs;
 
37114
  friend class ::WinMemberExplSpec;
 
37115
  friend class ::WinTypeKeywords;
 
37116
  friend class ::WinFriend;
 
37117
  friend class ::ExtAC;
 
37118
  friend class ::ExtACBuilderCoupling;
 
37119
  friend class ::ExtACSyntaxCoupling;
 
37120
  friend class ::ExtACTree;
 
37121
  friend class ::ExtACKeywords;
 
37122
  friend class ::ExtGnu;
 
37123
  friend class ::PragmaOnceUnitState;
 
37124
  friend class ::PragmaOnce;
 
37125
  friend class ::CMatchSyntax;
 
37126
 
 
37127
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37128
 
 
37129
  CTree *sons[4]; // typeid, open, type_id/expr, close
 
37130
 
 
37131
public:
 
37132
  /** Constructor.
 
37133
   *  \param tid The 'typeid' operator.
 
37134
   *  \param o The left parenthesis of the type name or expression.
 
37135
   *  \param e The expression or type name for which to get the type identifier.
 
37136
   *  \param c The right parenthesis of the type name or expression. */
 
37137
  CT_TypeidExpr (CTree *tid, CTree *o, CTree *e, CTree *c) {
 
37138
    AddSon (sons[0], tid); AddSon (sons[1], o); 
 
37139
    AddSon (sons[2], e); AddSon (sons[3], c);
 
37140
  }
 
37141
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37142
  static const char *NodeId ();
 
37143
  /** Get the name of the node. Can be compared with NodeId(). */
 
37144
  const char *NodeName () const { return NodeId (); }
 
37145
  /** Get the number of sons. */
 
37146
  int Sons () const { return 4; }
 
37147
  /** Get the n-th son.
 
37148
   *  \param n The index of the son.
 
37149
   *  \return The n-th son or NULL. */
 
37150
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
37151
  /** Replace a son.
 
37152
   *  \param old_son The son to replace.
 
37153
   *  \param new_son The new son. */
 
37154
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37155
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
37156
  }
 
37157
  /** Get the typeid argument, i.e. the expression or type name for
 
37158
   *  which to get the type identifier. */
 
37159
  CTree *Arg () const { return sons[2]; }
 
37160
   private:
 
37161
  typedef CT_TypeidExpr CCExprResolveExpr;
 
37162
 
 
37163
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37164
 public :
 
37165
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37166
  typedef CT_TypeidExpr CExprResolveExpr;
 
37167
 
 
37168
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37169
 public :
 
37170
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37171
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
37172
  const char *__attr_name (unsigned i) const {
 
37173
    static const char *names[] = { "sons" }; return names[i];
 
37174
  }
 
37175
  const void *__attr (unsigned __i) const {
 
37176
    switch (__i) { case 0: return &sons; default: return 0; }
 
37177
  }
 
37178
#line 1848 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37179
};
 
37180
 
 
37181
/** \class CT_SizeofExpr CTree.h Puma/CTree.h
 
37182
 *  Tree node representing a sizeof expression.
 
37183
 *  Example: \code sizeof(int*) \endcode */
 
37184
 
 
37185
#line 37186 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37186
} // closed Puma
 
37187
class CCExprResolve;
 
37188
class CExprResolve;
 
37189
class WinIfExists;
 
37190
class WinImportHandler;
 
37191
class WinMacros;
 
37192
class WinAsm;
 
37193
class WinDeclSpecs;
 
37194
class WinMemberExplSpec;
 
37195
class WinTypeKeywords;
 
37196
class WinFriend;
 
37197
class ExtAC;
 
37198
class ExtACBuilderCoupling;
 
37199
class ExtACSyntaxCoupling;
 
37200
class ExtACTree;
 
37201
class ExtACKeywords;
 
37202
class ExtGnu;
 
37203
class PragmaOnceUnitState;
 
37204
class PragmaOnce;
 
37205
class CMatchSyntax;
 
37206
namespace Puma {
 
37207
 
 
37208
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37209
 
 
37210
#line 37211 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37211
} // closed Puma
 
37212
 
 
37213
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37214
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37215
#include "CCExprResolveH.ah"
 
37216
#endif
 
37217
namespace Puma {
 
37218
 
 
37219
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37220
 
 
37221
#line 37222 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37222
} // closed Puma
 
37223
 
 
37224
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37225
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37226
#include "CExprResolveH.ah"
 
37227
#endif
 
37228
namespace Puma {
 
37229
 
 
37230
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37231
class CT_SizeofExpr : public CT_Expression {
 
37232
#line 37233 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37233
  friend class ::CCExprResolve;
 
37234
  friend class ::CExprResolve;
 
37235
  friend class ::WinIfExists;
 
37236
  friend class ::WinImportHandler;
 
37237
  friend class ::WinMacros;
 
37238
  friend class ::WinAsm;
 
37239
  friend class ::WinDeclSpecs;
 
37240
  friend class ::WinMemberExplSpec;
 
37241
  friend class ::WinTypeKeywords;
 
37242
  friend class ::WinFriend;
 
37243
  friend class ::ExtAC;
 
37244
  friend class ::ExtACBuilderCoupling;
 
37245
  friend class ::ExtACSyntaxCoupling;
 
37246
  friend class ::ExtACTree;
 
37247
  friend class ::ExtACKeywords;
 
37248
  friend class ::ExtGnu;
 
37249
  friend class ::PragmaOnceUnitState;
 
37250
  friend class ::PragmaOnce;
 
37251
  friend class ::CMatchSyntax;
 
37252
 
 
37253
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37254
 
 
37255
  CTree *sons[5]; // key, open, type, close, expr
 
37256
 
 
37257
public:
 
37258
  /** Constructor.
 
37259
   *  \param k The 'sizeof' keyword.
 
37260
   *  \param o Left parenthesis around the type name.
 
37261
   *  \param t The type from which to get the size.
 
37262
   *  \param c Right parenthesis around the type name. */
 
37263
  CT_SizeofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
37264
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
37265
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
37266
  }
 
37267
  /** Constructor.
 
37268
   *  \param k The 'sizeof' keyword.
 
37269
   *  \param e The expression from which to get the size. */
 
37270
  CT_SizeofExpr (CTree *k, CTree *e) {
 
37271
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
37272
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
37273
  }
 
37274
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37275
  static const char *NodeId ();
 
37276
  /** Get the name of the node. Can be compared with NodeId(). */
 
37277
  const char *NodeName () const { return NodeId (); }
 
37278
  /** Get the number of sons. */
 
37279
  int Sons () const { return CTree::Sons (sons, 5); }
 
37280
  /** Get the n-th son.
 
37281
   *  \param n The index of the son.
 
37282
   *  \return The n-th son or NULL. */
 
37283
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
37284
  /** Replace a son.
 
37285
   *  \param old_son The son to replace.
 
37286
   *  \param new_son The new son. */
 
37287
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37288
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
37289
  }
 
37290
  /** Get the expression. */
 
37291
  CTree *Expr () const { return sons[4]; }
 
37292
  /** Get the type name. */
 
37293
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
37294
   private:
 
37295
  typedef CT_SizeofExpr CCExprResolveExpr;
 
37296
 
 
37297
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37298
 public :
 
37299
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37300
  typedef CT_SizeofExpr CExprResolveExpr;
 
37301
 
 
37302
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37303
 public :
 
37304
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37305
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
37306
  const char *__attr_name (unsigned i) const {
 
37307
    static const char *names[] = { "sons" }; return names[i];
 
37308
  }
 
37309
  const void *__attr (unsigned __i) const {
 
37310
    switch (__i) { case 0: return &sons; default: return 0; }
 
37311
  }
 
37312
#line 1893 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37313
};
 
37314
 
 
37315
/** \class CT_IndexDesignator CTree.h Puma/CTree.h
 
37316
 *  Tree node representing an index designator.
 
37317
 *  Example: \code [1] \endcode */
 
37318
 
 
37319
#line 37320 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37320
} // closed Puma
 
37321
class CCExprResolve;
 
37322
class CExprResolve;
 
37323
class WinIfExists;
 
37324
class WinImportHandler;
 
37325
class WinMacros;
 
37326
class WinAsm;
 
37327
class WinDeclSpecs;
 
37328
class WinMemberExplSpec;
 
37329
class WinTypeKeywords;
 
37330
class WinFriend;
 
37331
class ExtAC;
 
37332
class ExtACBuilderCoupling;
 
37333
class ExtACSyntaxCoupling;
 
37334
class ExtACTree;
 
37335
class ExtACKeywords;
 
37336
class ExtGnu;
 
37337
class PragmaOnceUnitState;
 
37338
class PragmaOnce;
 
37339
class CMatchSyntax;
 
37340
namespace Puma {
 
37341
 
 
37342
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37343
 
 
37344
#line 37345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37345
} // closed Puma
 
37346
 
 
37347
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37348
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37349
#include "CCExprResolveH.ah"
 
37350
#endif
 
37351
namespace Puma {
 
37352
 
 
37353
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37354
 
 
37355
#line 37356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37356
} // closed Puma
 
37357
 
 
37358
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37359
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37360
#include "CExprResolveH.ah"
 
37361
#endif
 
37362
namespace Puma {
 
37363
 
 
37364
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37365
class CT_IndexDesignator : public CT_Expression {
 
37366
#line 37367 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37367
  friend class ::CCExprResolve;
 
37368
  friend class ::CExprResolve;
 
37369
  friend class ::WinIfExists;
 
37370
  friend class ::WinImportHandler;
 
37371
  friend class ::WinMacros;
 
37372
  friend class ::WinAsm;
 
37373
  friend class ::WinDeclSpecs;
 
37374
  friend class ::WinMemberExplSpec;
 
37375
  friend class ::WinTypeKeywords;
 
37376
  friend class ::WinFriend;
 
37377
  friend class ::ExtAC;
 
37378
  friend class ::ExtACBuilderCoupling;
 
37379
  friend class ::ExtACSyntaxCoupling;
 
37380
  friend class ::ExtACTree;
 
37381
  friend class ::ExtACKeywords;
 
37382
  friend class ::ExtGnu;
 
37383
  friend class ::PragmaOnceUnitState;
 
37384
  friend class ::PragmaOnce;
 
37385
  friend class ::CMatchSyntax;
 
37386
 
 
37387
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37388
 
 
37389
  CTree *sons[3]; // open, index, close
 
37390
 
 
37391
public:
 
37392
  /** Constructor.
 
37393
   *  \param o Left bracket of the index designator.
 
37394
   *  \param i The index expression.
 
37395
   *  \param c Right bracket of the index designator. */
 
37396
  CT_IndexDesignator (CTree *o, CTree *i, CTree *c) {
 
37397
    AddSon (sons[0], o); AddSon (sons[1], i); AddSon (sons[2], c);
 
37398
  }
 
37399
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37400
  static const char *NodeId ();
 
37401
  /** Get the name of the node. Can be compared with NodeId(). */
 
37402
  const char *NodeName () const { return NodeId (); }
 
37403
  /** Get the number of sons. */
 
37404
  int Sons () const { return 3; }
 
37405
  /** Get the n-th son.
 
37406
   *  \param n The index of the son.
 
37407
   *  \return The n-th son or NULL. */
 
37408
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
37409
  /** Replace a son.
 
37410
   *  \param old_son The son to replace.
 
37411
   *  \param new_son The new son. */
 
37412
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37413
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
37414
  }
 
37415
   private:
 
37416
  typedef CT_IndexDesignator CCExprResolveExpr;
 
37417
 
 
37418
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37419
 public :
 
37420
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37421
  typedef CT_IndexDesignator CExprResolveExpr;
 
37422
 
 
37423
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37424
 public :
 
37425
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37426
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
37427
  const char *__attr_name (unsigned i) const {
 
37428
    static const char *names[] = { "sons" }; return names[i];
 
37429
  }
 
37430
  const void *__attr (unsigned __i) const {
 
37431
    switch (__i) { case 0: return &sons; default: return 0; }
 
37432
  }
 
37433
#line 1925 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37434
};
 
37435
 
 
37436
/** \class CT_MembDesignator CTree.h Puma/CTree.h
 
37437
 *  Tree node representing a member designator.
 
37438
 *  Example: \code .a \endcode */
 
37439
 
 
37440
#line 37441 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37441
} // closed Puma
 
37442
class CCExprResolve;
 
37443
class CExprResolve;
 
37444
class WinIfExists;
 
37445
class WinImportHandler;
 
37446
class WinMacros;
 
37447
class WinAsm;
 
37448
class WinDeclSpecs;
 
37449
class WinMemberExplSpec;
 
37450
class WinTypeKeywords;
 
37451
class WinFriend;
 
37452
class ExtAC;
 
37453
class ExtACBuilderCoupling;
 
37454
class ExtACSyntaxCoupling;
 
37455
class ExtACTree;
 
37456
class ExtACKeywords;
 
37457
class ExtGnu;
 
37458
class PragmaOnceUnitState;
 
37459
class PragmaOnce;
 
37460
class CMatchSyntax;
 
37461
namespace Puma {
 
37462
 
 
37463
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37464
 
 
37465
#line 37466 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37466
} // closed Puma
 
37467
 
 
37468
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37469
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37470
#include "CCExprResolveH.ah"
 
37471
#endif
 
37472
namespace Puma {
 
37473
 
 
37474
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37475
 
 
37476
#line 37477 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37477
} // closed Puma
 
37478
 
 
37479
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37480
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37481
#include "CExprResolveH.ah"
 
37482
#endif
 
37483
namespace Puma {
 
37484
 
 
37485
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37486
class CT_MembDesignator : public CT_Expression {
 
37487
#line 37488 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37488
  friend class ::CCExprResolve;
 
37489
  friend class ::CExprResolve;
 
37490
  friend class ::WinIfExists;
 
37491
  friend class ::WinImportHandler;
 
37492
  friend class ::WinMacros;
 
37493
  friend class ::WinAsm;
 
37494
  friend class ::WinDeclSpecs;
 
37495
  friend class ::WinMemberExplSpec;
 
37496
  friend class ::WinTypeKeywords;
 
37497
  friend class ::WinFriend;
 
37498
  friend class ::ExtAC;
 
37499
  friend class ::ExtACBuilderCoupling;
 
37500
  friend class ::ExtACSyntaxCoupling;
 
37501
  friend class ::ExtACTree;
 
37502
  friend class ::ExtACKeywords;
 
37503
  friend class ::ExtGnu;
 
37504
  friend class ::PragmaOnceUnitState;
 
37505
  friend class ::PragmaOnce;
 
37506
  friend class ::CMatchSyntax;
 
37507
 
 
37508
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37509
 
 
37510
  CTree *sons[2]; // dot, member
 
37511
 
 
37512
public:
 
37513
  /** Constructor.
 
37514
   *  \param d The dot before the member name.
 
37515
   *  \param m The member name. */
 
37516
  CT_MembDesignator (CTree *d, CTree *m) { AddSon (sons[0], d); AddSon (sons[1], m); }
 
37517
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37518
  static const char *NodeId ();
 
37519
  /** Get the name of the node. Can be compared with NodeId(). */
 
37520
  const char *NodeName () const { return NodeId (); }
 
37521
  /** Get the number of sons. */
 
37522
  int Sons () const { return 2; }
 
37523
  /** Get the n-th son.
 
37524
   *  \param n The index of the son.
 
37525
   *  \return The n-th son or NULL. */
 
37526
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
37527
  /** Replace a son.
 
37528
   *  \param old_son The son to replace.
 
37529
   *  \param new_son The new son. */
 
37530
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37531
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
37532
  }
 
37533
   private:
 
37534
  typedef CT_MembDesignator CCExprResolveExpr;
 
37535
 
 
37536
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37537
 public :
 
37538
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37539
  typedef CT_MembDesignator CExprResolveExpr;
 
37540
 
 
37541
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37542
 public :
 
37543
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37544
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
37545
  const char *__attr_name (unsigned i) const {
 
37546
    static const char *names[] = { "sons" }; return names[i];
 
37547
  }
 
37548
  const void *__attr (unsigned __i) const {
 
37549
    switch (__i) { case 0: return &sons; default: return 0; }
 
37550
  }
 
37551
#line 1954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37552
};
 
37553
 
 
37554
/** \class CT_DesignatorSeq CTree.h Puma/CTree.h
 
37555
 *  Tree node representing a designator sequence.
 
37556
 *  Example: \code .a.b.c \endcode */
 
37557
 
 
37558
#line 37559 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37559
} // closed Puma
 
37560
class CCExprResolve;
 
37561
class CExprResolve;
 
37562
class WinIfExists;
 
37563
class WinImportHandler;
 
37564
class WinMacros;
 
37565
class WinAsm;
 
37566
class WinDeclSpecs;
 
37567
class WinMemberExplSpec;
 
37568
class WinTypeKeywords;
 
37569
class WinFriend;
 
37570
class ExtAC;
 
37571
class ExtACBuilderCoupling;
 
37572
class ExtACSyntaxCoupling;
 
37573
class ExtACTree;
 
37574
class ExtACKeywords;
 
37575
class ExtGnu;
 
37576
class PragmaOnceUnitState;
 
37577
class PragmaOnce;
 
37578
class CMatchSyntax;
 
37579
namespace Puma {
 
37580
 
 
37581
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37582
class CT_DesignatorSeq : public CT_List, public CSemValue {
 
37583
#line 37584 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37584
  friend class ::CCExprResolve;
 
37585
  friend class ::CExprResolve;
 
37586
  friend class ::WinIfExists;
 
37587
  friend class ::WinImportHandler;
 
37588
  friend class ::WinMacros;
 
37589
  friend class ::WinAsm;
 
37590
  friend class ::WinDeclSpecs;
 
37591
  friend class ::WinMemberExplSpec;
 
37592
  friend class ::WinTypeKeywords;
 
37593
  friend class ::WinFriend;
 
37594
  friend class ::ExtAC;
 
37595
  friend class ::ExtACBuilderCoupling;
 
37596
  friend class ::ExtACSyntaxCoupling;
 
37597
  friend class ::ExtACTree;
 
37598
  friend class ::ExtACKeywords;
 
37599
  friend class ::ExtGnu;
 
37600
  friend class ::PragmaOnceUnitState;
 
37601
  friend class ::PragmaOnce;
 
37602
  friend class ::CMatchSyntax;
 
37603
 
 
37604
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37605
 
 
37606
public:
 
37607
  /** Constructor.
 
37608
   *  \param size Initial number of designators. */
 
37609
  CT_DesignatorSeq (int size = 1) : CT_List (size, 2) {}
 
37610
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37611
  static const char *NodeId ();
 
37612
  /** Get the name of the node. Can be compared with NodeId(). */
 
37613
  const char *NodeName () const { return NodeId (); }
 
37614
 
 
37615
  /** Get the type of the entity to initialize. */
 
37616
  CTypeInfo *Type () const { return type; }
 
37617
  /** Get the value of the entity to initialize. */
 
37618
  CExprValue *Value () const { return value; }
 
37619
  /** Get the semantic value object. */
 
37620
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
37621
public:
 
37622
  typedef AC::TLE __AttrTypes;
 
37623
  const char *__attr_name (unsigned i) const { return 0; }
 
37624
  const void *__attr (unsigned __i) const { return 0; }
 
37625
#line 1975 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37626
};
 
37627
 
 
37628
/*****************************************************************************/
 
37629
/*                                                                           */
 
37630
/*                         Declaration specifiers                            */
 
37631
/*                                                                           */
 
37632
/*****************************************************************************/
 
37633
 
 
37634
/** \class CT_DeclSpec CTree.h Puma/CTree.h
 
37635
 *  Base class for all tree nodes representing declaration specifiers. */
 
37636
 
 
37637
#line 37638 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37638
} // closed Puma
 
37639
class CCExprResolve;
 
37640
class CExprResolve;
 
37641
class WinIfExists;
 
37642
class WinImportHandler;
 
37643
class WinMacros;
 
37644
class WinAsm;
 
37645
class WinDeclSpecs;
 
37646
class WinMemberExplSpec;
 
37647
class WinTypeKeywords;
 
37648
class WinFriend;
 
37649
class ExtAC;
 
37650
class ExtACBuilderCoupling;
 
37651
class ExtACSyntaxCoupling;
 
37652
class ExtACTree;
 
37653
class ExtACKeywords;
 
37654
class ExtGnu;
 
37655
class PragmaOnceUnitState;
 
37656
class PragmaOnce;
 
37657
class CMatchSyntax;
 
37658
namespace Puma {
 
37659
 
 
37660
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37661
class CT_DeclSpec : public CTree {
 
37662
#line 37663 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37663
  friend class ::CCExprResolve;
 
37664
  friend class ::CExprResolve;
 
37665
  friend class ::WinIfExists;
 
37666
  friend class ::WinImportHandler;
 
37667
  friend class ::WinMacros;
 
37668
  friend class ::WinAsm;
 
37669
  friend class ::WinDeclSpecs;
 
37670
  friend class ::WinMemberExplSpec;
 
37671
  friend class ::WinTypeKeywords;
 
37672
  friend class ::WinFriend;
 
37673
  friend class ::ExtAC;
 
37674
  friend class ::ExtACBuilderCoupling;
 
37675
  friend class ::ExtACSyntaxCoupling;
 
37676
  friend class ::ExtACTree;
 
37677
  friend class ::ExtACKeywords;
 
37678
  friend class ::ExtGnu;
 
37679
  friend class ::PragmaOnceUnitState;
 
37680
  friend class ::PragmaOnce;
 
37681
  friend class ::CMatchSyntax;
 
37682
 
 
37683
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37684
 
 
37685
protected:
 
37686
  /** Constructor. */
 
37687
  CT_DeclSpec () {}
 
37688
public:
 
37689
  typedef AC::TLE __AttrTypes;
 
37690
  const char *__attr_name (unsigned i) const { return 0; }
 
37691
  const void *__attr (unsigned __i) const { return 0; }
 
37692
#line 1989 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37693
};
 
37694
 
 
37695
/** \class CT_PrimDeclSpec CTree.h Puma/CTree.h
 
37696
 *  Tree node representing a primitive declaration specifier. */
 
37697
 
 
37698
#line 37699 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37699
} // closed Puma
 
37700
class CCExprResolve;
 
37701
class CExprResolve;
 
37702
class WinIfExists;
 
37703
class WinImportHandler;
 
37704
class WinMacros;
 
37705
class WinAsm;
 
37706
class WinDeclSpecs;
 
37707
class WinMemberExplSpec;
 
37708
class WinTypeKeywords;
 
37709
class WinFriend;
 
37710
class ExtAC;
 
37711
class ExtACBuilderCoupling;
 
37712
class ExtACSyntaxCoupling;
 
37713
class ExtACTree;
 
37714
class ExtACKeywords;
 
37715
class ExtGnu;
 
37716
class PragmaOnceUnitState;
 
37717
class PragmaOnce;
 
37718
class CMatchSyntax;
 
37719
namespace Puma {
 
37720
 
 
37721
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37722
class CT_PrimDeclSpec : public CT_DeclSpec {
 
37723
#line 37724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37724
  friend class ::CCExprResolve;
 
37725
  friend class ::CExprResolve;
 
37726
  friend class ::WinIfExists;
 
37727
  friend class ::WinImportHandler;
 
37728
  friend class ::WinMacros;
 
37729
  friend class ::WinAsm;
 
37730
  friend class ::WinDeclSpecs;
 
37731
  friend class ::WinMemberExplSpec;
 
37732
  friend class ::WinTypeKeywords;
 
37733
  friend class ::WinFriend;
 
37734
  friend class ::ExtAC;
 
37735
  friend class ::ExtACBuilderCoupling;
 
37736
  friend class ::ExtACSyntaxCoupling;
 
37737
  friend class ::ExtACTree;
 
37738
  friend class ::ExtACKeywords;
 
37739
  friend class ::ExtGnu;
 
37740
  friend class ::PragmaOnceUnitState;
 
37741
  friend class ::PragmaOnce;
 
37742
  friend class ::CMatchSyntax;
 
37743
 
 
37744
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37745
 
 
37746
public:
 
37747
  /** Declaration specifier types. */
 
37748
  enum Type { 
 
37749
    PDS_FRIEND,    /** friend */
 
37750
    PDS_TYPEDEF,   /** typedef */
 
37751
    PDS_AUTO,      /** auto */
 
37752
    PDS_REGISTER,  /** register */
 
37753
    PDS_STATIC,    /** static */
 
37754
    PDS_EXTERN,    /** extern */
 
37755
    PDS_MUTABLE,   /** mutable */
 
37756
    PDS_INLINE,    /** inline */
 
37757
    PDS_VIRTUAL,   /** virtual */
 
37758
    PDS_EXPLICIT,  /** explicit */
 
37759
    PDS_CONST,     /** const */
 
37760
    PDS_VOLATILE,  /** volatile */
 
37761
    PDS_RESTRICT,  /** restrict */
 
37762
    PDS_CHAR,      /** char */
 
37763
    PDS_WCHAR_T,   /** wchar_t */
 
37764
    PDS_BOOL,      /** bool */
 
37765
    PDS_SHORT,     /** short */
 
37766
    PDS_INT,       /** int */
 
37767
    PDS_LONG,      /** long */
 
37768
    PDS_SIGNED,    /** signed */
 
37769
    PDS_UNSIGNED,  /** unsigned */
 
37770
    PDS_FLOAT,     /** float */
 
37771
    PDS_DOUBLE,    /** double */
 
37772
    PDS_VOID,      /** void */
 
37773
    // AspectC++ specific type specifier
 
37774
    PDS_UNKNOWN_T, /** unknown_t */
 
37775
    // Win specific declaration specifiers
 
37776
    PDS_CDECL,     /** __cdecl */
 
37777
    PDS_STDCALL,   /** __stdcall */
 
37778
    PDS_FASTCALL,  /** __fastcall */
 
37779
    PDS_INT64,     /** __int64 */
 
37780
    PDS_UNKNOWN,   /** Unknown declaration specifier. */
 
37781
    PDS_NUM        /** Number of declaration specifier types. */
 
37782
  };
 
37783
 
 
37784
private:
 
37785
  Type _type;
 
37786
  CTree *_token; // has to be a CT_Token
 
37787
 
 
37788
  void determine_type ();
 
37789
 
 
37790
public:
 
37791
  /** Constructor.
 
37792
   *  \param t The token containing the declaration specifier. */
 
37793
  CT_PrimDeclSpec (CT_Token *t) { AddSon (_token, (CTree*)t); determine_type (); }
 
37794
  /** Constructor.
 
37795
   *  \param t The declaration specifier type. */
 
37796
  CT_PrimDeclSpec (Type t) : _token (0) { _type = t; }
 
37797
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37798
  static const char *NodeId ();
 
37799
  /** Get the name of the node. Can be compared with NodeId(). */
 
37800
  const char *NodeName () const { return NodeId (); }
 
37801
  /** Get the number of sons. */
 
37802
  int Sons () const { return _token ? 1 : 0; }
 
37803
  /** Get the n-th son.
 
37804
   *  \param n The index of the son.
 
37805
   *  \return The n-th son or NULL. */
 
37806
  CTree *Son (int n) const 
 
37807
   { return (n == 0) ? _token : (CTree*)0; }
 
37808
  /** Get the textual representation of the declaration specifier.
 
37809
   *  \return The string representation or " ". */
 
37810
  const char *SpecText () const 
 
37811
   { return _token ? _token->token ()->text () : " "; }
 
37812
  /** Get the declaration specifier type. */
 
37813
  Type SpecType () const { return _type; }
 
37814
  /** Number of declaration specifier types. */
 
37815
  static const int NumTypes = PDS_NUM;
 
37816
  /** Replace a son.
 
37817
   *  \param old_son The son to replace.
 
37818
   *  \param new_son The new son. */
 
37819
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37820
    CTree::ReplaceSon (_token, (CTree*)old_son, (CTree*)new_son);
 
37821
    determine_type ();
 
37822
  }
 
37823
public:
 
37824
  typedef AC::TL<Puma::CT_PrimDeclSpec::Type,AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
37825
  const char *__attr_name (unsigned i) const {
 
37826
    static const char *names[] = { "_type", "_token" }; return names[i];
 
37827
  }
 
37828
  const void *__attr (unsigned __i) const {
 
37829
    switch (__i) { case 31: return &_type; case 32: return &_token; default: return 0; }
 
37830
  }
 
37831
#line 2071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37832
};
 
37833
 
 
37834
/** \class CT_NamedType CTree.h Puma/CTree.h
 
37835
 *  Tree node representing a named type.
 
37836
 *  Example: \code (int*)a \endcode where int* is a 
 
37837
 *  type with a generated name. */
 
37838
 
 
37839
#line 37840 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37840
} // closed Puma
 
37841
class CCExprResolve;
 
37842
class CExprResolve;
 
37843
class WinIfExists;
 
37844
class WinImportHandler;
 
37845
class WinMacros;
 
37846
class WinAsm;
 
37847
class WinDeclSpecs;
 
37848
class WinMemberExplSpec;
 
37849
class WinTypeKeywords;
 
37850
class WinFriend;
 
37851
class ExtAC;
 
37852
class ExtACBuilderCoupling;
 
37853
class ExtACSyntaxCoupling;
 
37854
class ExtACTree;
 
37855
class ExtACKeywords;
 
37856
class ExtGnu;
 
37857
class PragmaOnceUnitState;
 
37858
class PragmaOnce;
 
37859
class CMatchSyntax;
 
37860
namespace Puma {
 
37861
 
 
37862
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37863
class CT_NamedType : public CT_DeclSpec, public CSemObject {
 
37864
#line 37865 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37865
  friend class ::CCExprResolve;
 
37866
  friend class ::CExprResolve;
 
37867
  friend class ::WinIfExists;
 
37868
  friend class ::WinImportHandler;
 
37869
  friend class ::WinMacros;
 
37870
  friend class ::WinAsm;
 
37871
  friend class ::WinDeclSpecs;
 
37872
  friend class ::WinMemberExplSpec;
 
37873
  friend class ::WinTypeKeywords;
 
37874
  friend class ::WinFriend;
 
37875
  friend class ::ExtAC;
 
37876
  friend class ::ExtACBuilderCoupling;
 
37877
  friend class ::ExtACSyntaxCoupling;
 
37878
  friend class ::ExtACTree;
 
37879
  friend class ::ExtACKeywords;
 
37880
  friend class ::ExtGnu;
 
37881
  friend class ::PragmaOnceUnitState;
 
37882
  friend class ::PragmaOnce;
 
37883
  friend class ::CMatchSyntax;
 
37884
 
 
37885
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37886
 
 
37887
  CTree *sons[2]; // declspecs, declarator
 
37888
 
 
37889
public:
 
37890
  /** Constructor.
 
37891
   *  \param dss The declaration specifier sequence of the type.
 
37892
   *  \param d The type declarator. */
 
37893
  CT_NamedType (CTree *dss, CTree *d) { AddSon (sons[0], dss); AddSon (sons[1], d); }
 
37894
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37895
  static const char *NodeId ();
 
37896
  /** Get the name of the node. Can be compared with NodeId(). */
 
37897
  const char *NodeName () const { return NodeId (); }
 
37898
  /** Get the number of sons. */
 
37899
  int Sons () const { return CTree::Sons (sons, 2); }
 
37900
  /** Get the n-th son.
 
37901
   *  \param n The index of the son.
 
37902
   *  \return The n-th son or NULL. */
 
37903
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
37904
  /** Get the declarator. */
 
37905
  CTree *Declarator () const { return sons[1]; }
 
37906
  /** Replace a son.
 
37907
   *  \param old_son The son to replace.
 
37908
   *  \param new_son The new son. */
 
37909
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37910
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
37911
  }
 
37912
  /** Get the semantic information about the created temporary object. */
 
37913
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
37914
public:
 
37915
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
37916
  const char *__attr_name (unsigned i) const {
 
37917
    static const char *names[] = { "sons" }; return names[i];
 
37918
  }
 
37919
  const void *__attr (unsigned __i) const {
 
37920
    switch (__i) { case 0: return &sons; default: return 0; }
 
37921
  }
 
37922
#line 2105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37923
};
 
37924
      
 
37925
/** \class CT_ClassSpec CTree.h Puma/CTree.h
 
37926
 *  Tree node representing a class specifier.
 
37927
 *  Example: \code class X \endcode */
 
37928
 
 
37929
#line 37930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37930
} // closed Puma
 
37931
class CCExprResolve;
 
37932
class CExprResolve;
 
37933
class WinIfExists;
 
37934
class WinImportHandler;
 
37935
class WinMacros;
 
37936
class WinAsm;
 
37937
class WinDeclSpecs;
 
37938
class WinMemberExplSpec;
 
37939
class WinTypeKeywords;
 
37940
class WinFriend;
 
37941
class ExtAC;
 
37942
class ExtACBuilderCoupling;
 
37943
class ExtACSyntaxCoupling;
 
37944
class ExtACTree;
 
37945
class ExtACKeywords;
 
37946
class ExtGnu;
 
37947
class PragmaOnceUnitState;
 
37948
class PragmaOnce;
 
37949
class CMatchSyntax;
 
37950
namespace Puma {
 
37951
 
 
37952
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37953
class CT_ClassSpec : public CT_DeclSpec, public CSemObject {
 
37954
#line 37955 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
37955
  friend class ::CCExprResolve;
 
37956
  friend class ::CExprResolve;
 
37957
  friend class ::WinIfExists;
 
37958
  friend class ::WinImportHandler;
 
37959
  friend class ::WinMacros;
 
37960
  friend class ::WinAsm;
 
37961
  friend class ::WinDeclSpecs;
 
37962
  friend class ::WinMemberExplSpec;
 
37963
  friend class ::WinTypeKeywords;
 
37964
  friend class ::WinFriend;
 
37965
  friend class ::ExtAC;
 
37966
  friend class ::ExtACBuilderCoupling;
 
37967
  friend class ::ExtACSyntaxCoupling;
 
37968
  friend class ::ExtACTree;
 
37969
  friend class ::ExtACKeywords;
 
37970
  friend class ::ExtGnu;
 
37971
  friend class ::PragmaOnceUnitState;
 
37972
  friend class ::PragmaOnce;
 
37973
  friend class ::CMatchSyntax;
 
37974
 
 
37975
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37976
 
 
37977
  CTree *sons[2]; // key, name
 
37978
  
 
37979
public:
 
37980
  /** Constructor.
 
37981
   *  \param k The 'class' or 'struct' keyword.
 
37982
   *  \param n The class name. */
 
37983
  CT_ClassSpec (CTree *k, CTree *n) { AddSon (sons[0], k); AddSon (sons[1], n); }
 
37984
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37985
  static const char *NodeId ();
 
37986
  /** Get the name of the node. Can be compared with NodeId(). */
 
37987
  const char *NodeName () const { return NodeId (); }
 
37988
  /** Get the number of sons. */
 
37989
  int Sons () const { return 2; }
 
37990
  /** Get the n-th son.
 
37991
   *  \param n The index of the son.
 
37992
   *  \return The n-th son or NULL. */
 
37993
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
37994
  /** Get the class name. */
 
37995
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
37996
  /** Get the semantic information about the class. */
 
37997
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
37998
  /** Replace a son.
 
37999
   *  \param old_son The son to replace.
 
38000
   *  \param new_son The new son. */
 
38001
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38002
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
38003
  }
 
38004
public:
 
38005
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
38006
  const char *__attr_name (unsigned i) const {
 
38007
    static const char *names[] = { "sons" }; return names[i];
 
38008
  }
 
38009
  const void *__attr (unsigned __i) const {
 
38010
    switch (__i) { case 0: return &sons; default: return 0; }
 
38011
  }
 
38012
#line 2138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38013
};
 
38014
 
 
38015
/** \class CT_UnionSpec CTree.h Puma/CTree.h
 
38016
 *  Tree node representing a union specifier.
 
38017
 *  Example: \code union X \endcode */
 
38018
 
 
38019
#line 38020 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38020
} // closed Puma
 
38021
class CCExprResolve;
 
38022
class CExprResolve;
 
38023
class WinIfExists;
 
38024
class WinImportHandler;
 
38025
class WinMacros;
 
38026
class WinAsm;
 
38027
class WinDeclSpecs;
 
38028
class WinMemberExplSpec;
 
38029
class WinTypeKeywords;
 
38030
class WinFriend;
 
38031
class ExtAC;
 
38032
class ExtACBuilderCoupling;
 
38033
class ExtACSyntaxCoupling;
 
38034
class ExtACTree;
 
38035
class ExtACKeywords;
 
38036
class ExtGnu;
 
38037
class PragmaOnceUnitState;
 
38038
class PragmaOnce;
 
38039
class CMatchSyntax;
 
38040
namespace Puma {
 
38041
 
 
38042
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38043
class CT_UnionSpec : public CT_ClassSpec {
 
38044
#line 38045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38045
  friend class ::CCExprResolve;
 
38046
  friend class ::CExprResolve;
 
38047
  friend class ::WinIfExists;
 
38048
  friend class ::WinImportHandler;
 
38049
  friend class ::WinMacros;
 
38050
  friend class ::WinAsm;
 
38051
  friend class ::WinDeclSpecs;
 
38052
  friend class ::WinMemberExplSpec;
 
38053
  friend class ::WinTypeKeywords;
 
38054
  friend class ::WinFriend;
 
38055
  friend class ::ExtAC;
 
38056
  friend class ::ExtACBuilderCoupling;
 
38057
  friend class ::ExtACSyntaxCoupling;
 
38058
  friend class ::ExtACTree;
 
38059
  friend class ::ExtACKeywords;
 
38060
  friend class ::ExtGnu;
 
38061
  friend class ::PragmaOnceUnitState;
 
38062
  friend class ::PragmaOnce;
 
38063
  friend class ::CMatchSyntax;
 
38064
 
 
38065
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38066
 
 
38067
public:
 
38068
  /** Constructor.
 
38069
   *  \param k The 'union' keyword.
 
38070
   *  \param n The name of the union. */
 
38071
  CT_UnionSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
38072
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38073
  static const char *NodeId ();
 
38074
  /** Get the name of the node. Can be compared with NodeId(). */
 
38075
  const char *NodeName () const { return NodeId (); }
 
38076
public:
 
38077
  typedef AC::TLE __AttrTypes;
 
38078
  const char *__attr_name (unsigned i) const { return 0; }
 
38079
  const void *__attr (unsigned __i) const { return 0; }
 
38080
#line 2153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38081
};
 
38082
 
 
38083
/** \class CT_EnumSpec CTree.h Puma/CTree.h
 
38084
 *  Tree node representing an enumeration specifier.
 
38085
 *  Example: \code enum X \endcode */
 
38086
 
 
38087
#line 38088 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38088
} // closed Puma
 
38089
class CCExprResolve;
 
38090
class CExprResolve;
 
38091
class WinIfExists;
 
38092
class WinImportHandler;
 
38093
class WinMacros;
 
38094
class WinAsm;
 
38095
class WinDeclSpecs;
 
38096
class WinMemberExplSpec;
 
38097
class WinTypeKeywords;
 
38098
class WinFriend;
 
38099
class ExtAC;
 
38100
class ExtACBuilderCoupling;
 
38101
class ExtACSyntaxCoupling;
 
38102
class ExtACTree;
 
38103
class ExtACKeywords;
 
38104
class ExtGnu;
 
38105
class PragmaOnceUnitState;
 
38106
class PragmaOnce;
 
38107
class CMatchSyntax;
 
38108
namespace Puma {
 
38109
 
 
38110
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38111
class CT_EnumSpec : public CT_ClassSpec {
 
38112
#line 38113 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38113
  friend class ::CCExprResolve;
 
38114
  friend class ::CExprResolve;
 
38115
  friend class ::WinIfExists;
 
38116
  friend class ::WinImportHandler;
 
38117
  friend class ::WinMacros;
 
38118
  friend class ::WinAsm;
 
38119
  friend class ::WinDeclSpecs;
 
38120
  friend class ::WinMemberExplSpec;
 
38121
  friend class ::WinTypeKeywords;
 
38122
  friend class ::WinFriend;
 
38123
  friend class ::ExtAC;
 
38124
  friend class ::ExtACBuilderCoupling;
 
38125
  friend class ::ExtACSyntaxCoupling;
 
38126
  friend class ::ExtACTree;
 
38127
  friend class ::ExtACKeywords;
 
38128
  friend class ::ExtGnu;
 
38129
  friend class ::PragmaOnceUnitState;
 
38130
  friend class ::PragmaOnce;
 
38131
  friend class ::CMatchSyntax;
 
38132
 
 
38133
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38134
 
 
38135
public:
 
38136
  /** Constructor.
 
38137
   *  \param k The 'enum' keyword. 
 
38138
   *  \param n The name of the enumeration. */
 
38139
  CT_EnumSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
38140
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38141
  static const char *NodeId ();
 
38142
  /** Get the name of the node. Can be compared with NodeId(). */
 
38143
  const char *NodeName () const { return NodeId (); }
 
38144
public:
 
38145
  typedef AC::TLE __AttrTypes;
 
38146
  const char *__attr_name (unsigned i) const { return 0; }
 
38147
  const void *__attr (unsigned __i) const { return 0; }
 
38148
#line 2168 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38149
};
 
38150
 
 
38151
/** \class CT_ExceptionSpec CTree.h Puma/CTree.h
 
38152
 *  Tree node representing an exception specifier.
 
38153
 *  Example: \code throw(std::exception) \endcode */
 
38154
 
 
38155
#line 38156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38156
} // closed Puma
 
38157
class CCExprResolve;
 
38158
class CExprResolve;
 
38159
class WinIfExists;
 
38160
class WinImportHandler;
 
38161
class WinMacros;
 
38162
class WinAsm;
 
38163
class WinDeclSpecs;
 
38164
class WinMemberExplSpec;
 
38165
class WinTypeKeywords;
 
38166
class WinFriend;
 
38167
class ExtAC;
 
38168
class ExtACBuilderCoupling;
 
38169
class ExtACSyntaxCoupling;
 
38170
class ExtACTree;
 
38171
class ExtACKeywords;
 
38172
class ExtGnu;
 
38173
class PragmaOnceUnitState;
 
38174
class PragmaOnce;
 
38175
class CMatchSyntax;
 
38176
namespace Puma {
 
38177
 
 
38178
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38179
class CT_ExceptionSpec : public CT_DeclSpec {
 
38180
#line 38181 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38181
  friend class ::CCExprResolve;
 
38182
  friend class ::CExprResolve;
 
38183
  friend class ::WinIfExists;
 
38184
  friend class ::WinImportHandler;
 
38185
  friend class ::WinMacros;
 
38186
  friend class ::WinAsm;
 
38187
  friend class ::WinDeclSpecs;
 
38188
  friend class ::WinMemberExplSpec;
 
38189
  friend class ::WinTypeKeywords;
 
38190
  friend class ::WinFriend;
 
38191
  friend class ::ExtAC;
 
38192
  friend class ::ExtACBuilderCoupling;
 
38193
  friend class ::ExtACSyntaxCoupling;
 
38194
  friend class ::ExtACTree;
 
38195
  friend class ::ExtACKeywords;
 
38196
  friend class ::ExtGnu;
 
38197
  friend class ::PragmaOnceUnitState;
 
38198
  friend class ::PragmaOnce;
 
38199
  friend class ::CMatchSyntax;
 
38200
 
 
38201
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38202
 
 
38203
  CTree *sons[2]; // throw, type_id_list
 
38204
  
 
38205
public:
 
38206
  /** Constructor.
 
38207
   *  \param k The 'throw' keyword.
 
38208
   *  \param l The type list for the exception type to throw. */
 
38209
  CT_ExceptionSpec (CTree *k, CTree *l) { AddSon (sons[0], k); AddSon (sons[1], l); }
 
38210
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38211
  static const char *NodeId ();
 
38212
  /** Get the name of the node. Can be compared with NodeId(). */
 
38213
  const char *NodeName () const { return NodeId (); }
 
38214
  /** Get the number of sons. */
 
38215
  int Sons () const { return 2; }
 
38216
  /** Get the n-th son.
 
38217
   *  \param n The index of the son.
 
38218
   *  \return The n-th son or NULL. */
 
38219
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
38220
  /** Get the exception type list. */
 
38221
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
38222
  /** Replace a son.
 
38223
   *  \param old_son The son to replace.
 
38224
   *  \param new_son The new son. */
 
38225
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38226
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
38227
  }
 
38228
public:
 
38229
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
38230
  const char *__attr_name (unsigned i) const {
 
38231
    static const char *names[] = { "sons" }; return names[i];
 
38232
  }
 
38233
  const void *__attr (unsigned __i) const {
 
38234
    switch (__i) { case 0: return &sons; default: return 0; }
 
38235
  }
 
38236
#line 2199 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38237
};
 
38238
 
 
38239
/*****************************************************************************/
 
38240
/*                                                                           */
 
38241
/*                              Declarations                                 */
 
38242
/*                                                                           */
 
38243
/*****************************************************************************/
 
38244
 
 
38245
/** \class CT_Decl CTree.h Puma/CTree.h
 
38246
 *  Base class for all tree nodes representing declarations. */
 
38247
 
 
38248
#line 38249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38249
} // closed Puma
 
38250
class CCExprResolve;
 
38251
class CExprResolve;
 
38252
class WinIfExists;
 
38253
class WinImportHandler;
 
38254
class WinMacros;
 
38255
class WinAsm;
 
38256
class WinDeclSpecs;
 
38257
class WinMemberExplSpec;
 
38258
class WinTypeKeywords;
 
38259
class WinFriend;
 
38260
class ExtAC;
 
38261
class ExtACBuilderCoupling;
 
38262
class ExtACSyntaxCoupling;
 
38263
class ExtACTree;
 
38264
class ExtACKeywords;
 
38265
class ExtGnu;
 
38266
class PragmaOnceUnitState;
 
38267
class PragmaOnce;
 
38268
class CMatchSyntax;
 
38269
namespace Puma {
 
38270
 
 
38271
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38272
class CT_Decl : public CTree {
 
38273
#line 38274 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38274
  friend class ::CCExprResolve;
 
38275
  friend class ::CExprResolve;
 
38276
  friend class ::WinIfExists;
 
38277
  friend class ::WinImportHandler;
 
38278
  friend class ::WinMacros;
 
38279
  friend class ::WinAsm;
 
38280
  friend class ::WinDeclSpecs;
 
38281
  friend class ::WinMemberExplSpec;
 
38282
  friend class ::WinTypeKeywords;
 
38283
  friend class ::WinFriend;
 
38284
  friend class ::ExtAC;
 
38285
  friend class ::ExtACBuilderCoupling;
 
38286
  friend class ::ExtACSyntaxCoupling;
 
38287
  friend class ::ExtACTree;
 
38288
  friend class ::ExtACKeywords;
 
38289
  friend class ::ExtGnu;
 
38290
  friend class ::PragmaOnceUnitState;
 
38291
  friend class ::PragmaOnce;
 
38292
  friend class ::CMatchSyntax;
 
38293
 
 
38294
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38295
 
 
38296
  CT_LinkageSpec *_linkage;
 
38297
  
 
38298
protected:
 
38299
  /** Constructor. */
 
38300
  CT_Decl () : _linkage (0) {}
 
38301
  
 
38302
public:
 
38303
  /** Set the linkage of the declared entity.
 
38304
   *  \param l The linkage specifiers. */
 
38305
  void Linkage (CT_LinkageSpec *l) { _linkage = l; }
 
38306
  /** Get the linkage specifiers. */
 
38307
  CT_LinkageSpec *Linkage () const { return _linkage; }
 
38308
  /** Get this. */
 
38309
  virtual CT_Decl *IsDeclaration () { return this; }
 
38310
public:
 
38311
  typedef AC::TL<Puma::CT_LinkageSpec *,AC::TLE > __AttrTypes;
 
38312
  const char *__attr_name (unsigned i) const {
 
38313
    static const char *names[] = { "_linkage" }; return names[i];
 
38314
  }
 
38315
  const void *__attr (unsigned __i) const {
 
38316
    switch (__i) { case 0: return &_linkage; default: return 0; }
 
38317
  }
 
38318
#line 2224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38319
};
 
38320
 
 
38321
/** \class CT_Program CTree.h Puma/CTree.h
 
38322
 *  Root node of C/C++ syntax trees. */
 
38323
 
 
38324
#line 38325 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38325
} // closed Puma
 
38326
class CCExprResolve;
 
38327
class CExprResolve;
 
38328
class WinIfExists;
 
38329
class WinImportHandler;
 
38330
class WinMacros;
 
38331
class WinAsm;
 
38332
class WinDeclSpecs;
 
38333
class WinMemberExplSpec;
 
38334
class WinTypeKeywords;
 
38335
class WinFriend;
 
38336
class ExtAC;
 
38337
class ExtACBuilderCoupling;
 
38338
class ExtACSyntaxCoupling;
 
38339
class ExtACTree;
 
38340
class ExtACKeywords;
 
38341
class ExtGnu;
 
38342
class PragmaOnceUnitState;
 
38343
class PragmaOnce;
 
38344
class CMatchSyntax;
 
38345
namespace Puma {
 
38346
 
 
38347
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38348
class CT_Program : public CT_DeclList, public CSemScope {
 
38349
#line 38350 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38350
  friend class ::CCExprResolve;
 
38351
  friend class ::CExprResolve;
 
38352
  friend class ::WinIfExists;
 
38353
  friend class ::WinImportHandler;
 
38354
  friend class ::WinMacros;
 
38355
  friend class ::WinAsm;
 
38356
  friend class ::WinDeclSpecs;
 
38357
  friend class ::WinMemberExplSpec;
 
38358
  friend class ::WinTypeKeywords;
 
38359
  friend class ::WinFriend;
 
38360
  friend class ::ExtAC;
 
38361
  friend class ::ExtACBuilderCoupling;
 
38362
  friend class ::ExtACSyntaxCoupling;
 
38363
  friend class ::ExtACTree;
 
38364
  friend class ::ExtACKeywords;
 
38365
  friend class ::ExtGnu;
 
38366
  friend class ::PragmaOnceUnitState;
 
38367
  friend class ::PragmaOnce;
 
38368
  friend class ::CMatchSyntax;
 
38369
 
 
38370
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38371
 
 
38372
public:
 
38373
  /** Constructor.
 
38374
   *  \param size The initial number of declarations in the program.
 
38375
   *  \param incr The initial increment count. */
 
38376
  CT_Program (int size = 20, int incr = 20) : CT_DeclList (size, incr) {}
 
38377
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38378
  static const char *NodeId ();
 
38379
  /** Get the name of the node. Can be compared with NodeId(). */
 
38380
  const char *NodeName () const { return NodeId (); }
 
38381
  /** Get the top scope. */
 
38382
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
38383
public:
 
38384
  typedef AC::TLE __AttrTypes;
 
38385
  const char *__attr_name (unsigned i) const { return 0; }
 
38386
  const void *__attr (unsigned __i) const { return 0; }
 
38387
#line 2240 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38388
};
 
38389
   
 
38390
/** \class CT_ObjDecl CTree.h Puma/CTree.h
 
38391
 *  Tree node representing an object declaration.
 
38392
 *  Example: \code int *i \endcode */
 
38393
 
 
38394
#line 38395 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38395
} // closed Puma
 
38396
class CCExprResolve;
 
38397
class CExprResolve;
 
38398
class WinIfExists;
 
38399
class WinImportHandler;
 
38400
class WinMacros;
 
38401
class WinAsm;
 
38402
class WinDeclSpecs;
 
38403
class WinMemberExplSpec;
 
38404
class WinTypeKeywords;
 
38405
class WinFriend;
 
38406
class ExtAC;
 
38407
class ExtACBuilderCoupling;
 
38408
class ExtACSyntaxCoupling;
 
38409
class ExtACTree;
 
38410
class ExtACKeywords;
 
38411
class ExtGnu;
 
38412
class PragmaOnceUnitState;
 
38413
class PragmaOnce;
 
38414
class CMatchSyntax;
 
38415
namespace Puma {
 
38416
 
 
38417
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38418
class CT_ObjDecl : public CT_Decl {
 
38419
#line 38420 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38420
  friend class ::CCExprResolve;
 
38421
  friend class ::CExprResolve;
 
38422
  friend class ::WinIfExists;
 
38423
  friend class ::WinImportHandler;
 
38424
  friend class ::WinMacros;
 
38425
  friend class ::WinAsm;
 
38426
  friend class ::WinDeclSpecs;
 
38427
  friend class ::WinMemberExplSpec;
 
38428
  friend class ::WinTypeKeywords;
 
38429
  friend class ::WinFriend;
 
38430
  friend class ::ExtAC;
 
38431
  friend class ::ExtACBuilderCoupling;
 
38432
  friend class ::ExtACSyntaxCoupling;
 
38433
  friend class ::ExtACTree;
 
38434
  friend class ::ExtACKeywords;
 
38435
  friend class ::ExtGnu;
 
38436
  friend class ::PragmaOnceUnitState;
 
38437
  friend class ::PragmaOnce;
 
38438
  friend class ::CMatchSyntax;
 
38439
 
 
38440
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38441
 
 
38442
  CTree *sons[3]; // declspecs, declarators, colon
 
38443
 
 
38444
public:
 
38445
  /** Constructor.
 
38446
   *  \param dsl The declaration specifier sequence.
 
38447
   *  \param dl The declarator list.
 
38448
   *  \param c Optional colon. */
 
38449
  CT_ObjDecl (CTree *dsl, CTree *dl, CTree *c) {
 
38450
    AddSon (sons[0], dsl); AddSon (sons[1], dl); AddSon (sons[2], c);
 
38451
  }
 
38452
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38453
  static const char *NodeId ();
 
38454
  /** Get the name of the node. Can be compared with NodeId(). */
 
38455
  const char *NodeName () const { return NodeId (); }
 
38456
  /** Get the number of sons. */
 
38457
  int Sons () const { return 3; }
 
38458
  /** Get the n-th son.
 
38459
   *  \param n The index of the son.
 
38460
   *  \return The n-th son or NULL. */
 
38461
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
38462
  /** Get the declaration specifier sequence. */
 
38463
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
38464
  /** Get the declarator list. */
 
38465
  CT_DeclaratorList *Declarators () const { return (CT_DeclaratorList*)sons[1]; }
 
38466
  /** Replace a son.
 
38467
   *  \param old_son The son to replace.
 
38468
   *  \param new_son The new son. */
 
38469
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38470
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
38471
  }
 
38472
public:
 
38473
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
38474
  const char *__attr_name (unsigned i) const {
 
38475
    static const char *names[] = { "sons" }; return names[i];
 
38476
  }
 
38477
  const void *__attr (unsigned __i) const {
 
38478
    switch (__i) { case 0: return &sons; default: return 0; }
 
38479
  }
 
38480
#line 2276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38481
};
 
38482
 
 
38483
/** \class CT_TemplateDecl CTree.h Puma/CTree.h
 
38484
 *  Tree node representing a template declaration. */
 
38485
 
 
38486
#line 38487 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38487
} // closed Puma
 
38488
class CCExprResolve;
 
38489
class CExprResolve;
 
38490
class WinIfExists;
 
38491
class WinImportHandler;
 
38492
class WinMacros;
 
38493
class WinAsm;
 
38494
class WinDeclSpecs;
 
38495
class WinMemberExplSpec;
 
38496
class WinTypeKeywords;
 
38497
class WinFriend;
 
38498
class ExtAC;
 
38499
class ExtACBuilderCoupling;
 
38500
class ExtACSyntaxCoupling;
 
38501
class ExtACTree;
 
38502
class ExtACKeywords;
 
38503
class ExtGnu;
 
38504
class PragmaOnceUnitState;
 
38505
class PragmaOnce;
 
38506
class CMatchSyntax;
 
38507
namespace Puma {
 
38508
 
 
38509
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38510
class CT_TemplateDecl : public CT_Decl, public CSemScope {
 
38511
#line 38512 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38512
  friend class ::CCExprResolve;
 
38513
  friend class ::CExprResolve;
 
38514
  friend class ::WinIfExists;
 
38515
  friend class ::WinImportHandler;
 
38516
  friend class ::WinMacros;
 
38517
  friend class ::WinAsm;
 
38518
  friend class ::WinDeclSpecs;
 
38519
  friend class ::WinMemberExplSpec;
 
38520
  friend class ::WinTypeKeywords;
 
38521
  friend class ::WinFriend;
 
38522
  friend class ::ExtAC;
 
38523
  friend class ::ExtACBuilderCoupling;
 
38524
  friend class ::ExtACSyntaxCoupling;
 
38525
  friend class ::ExtACTree;
 
38526
  friend class ::ExtACKeywords;
 
38527
  friend class ::ExtGnu;
 
38528
  friend class ::PragmaOnceUnitState;
 
38529
  friend class ::PragmaOnce;
 
38530
  friend class ::CMatchSyntax;
 
38531
 
 
38532
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38533
 
 
38534
  CTree *sons[3]; // export, param_list, decl
 
38535
 
 
38536
public:
 
38537
  /** Constructor.
 
38538
   *  \param e Optional 'export' keyword. 
 
38539
   *  \param p The template parameter list.
 
38540
   *  \param d The class or function declaration. */
 
38541
  CT_TemplateDecl (CTree *e, CTree *p, CTree *d) {
 
38542
    AddSon (sons[0], e); AddSon (sons[1], p); AddSon (sons[2], d);
 
38543
  }
 
38544
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38545
  static const char *NodeId ();
 
38546
  /** Get the name of the node. Can be compared with NodeId(). */
 
38547
  const char *NodeName () const { return NodeId (); }
 
38548
  /** Get the number of sons. */
 
38549
  int Sons () const { return CTree::Sons (sons, 3); }
 
38550
  /** Get the n-th son.
 
38551
   *  \param n The index of the son.
 
38552
   *  \return The n-th son or NULL. */
 
38553
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
38554
  /** Replace a son.
 
38555
   *  \param old_son The son to replace.
 
38556
   *  \param new_son The new son. */
 
38557
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38558
    CTree::ReplaceSon (sons, 3, old_son, new_son); 
 
38559
  }
 
38560
  /** Get the 'export' keyword. */
 
38561
  CTree *Export () const { return sons[0]; }
 
38562
  /** Get the template parameter list. */
 
38563
  CT_TemplateParamList *Parameters () const { 
 
38564
    return (CT_TemplateParamList*)sons[1]; 
 
38565
  }
 
38566
  /** Get the class or function declaration. */
 
38567
  CTree *Declaration () const { return sons[2]; }
 
38568
  /** Get the scope opened by the template declaration. */
 
38569
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
38570
public:
 
38571
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
38572
  const char *__attr_name (unsigned i) const {
 
38573
    static const char *names[] = { "sons" }; return names[i];
 
38574
  }
 
38575
  const void *__attr (unsigned __i) const {
 
38576
    switch (__i) { case 0: return &sons; default: return 0; }
 
38577
  }
 
38578
#line 2317 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38579
};
 
38580
 
 
38581
/** \class CT_TemplateParamDecl CTree.h Puma/CTree.h
 
38582
 *  Base class for all tree nodesrepresenting a template parameter declaration. */
 
38583
 
 
38584
#line 38585 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38585
} // closed Puma
 
38586
class CCExprResolve;
 
38587
class CExprResolve;
 
38588
class WinIfExists;
 
38589
class WinImportHandler;
 
38590
class WinMacros;
 
38591
class WinAsm;
 
38592
class WinDeclSpecs;
 
38593
class WinMemberExplSpec;
 
38594
class WinTypeKeywords;
 
38595
class WinFriend;
 
38596
class ExtAC;
 
38597
class ExtACBuilderCoupling;
 
38598
class ExtACSyntaxCoupling;
 
38599
class ExtACTree;
 
38600
class ExtACKeywords;
 
38601
class ExtGnu;
 
38602
class PragmaOnceUnitState;
 
38603
class PragmaOnce;
 
38604
class CMatchSyntax;
 
38605
namespace Puma {
 
38606
 
 
38607
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38608
class CT_TemplateParamDecl : public CT_Decl, public CSemObject {
 
38609
#line 38610 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38610
  friend class ::CCExprResolve;
 
38611
  friend class ::CExprResolve;
 
38612
  friend class ::WinIfExists;
 
38613
  friend class ::WinImportHandler;
 
38614
  friend class ::WinMacros;
 
38615
  friend class ::WinAsm;
 
38616
  friend class ::WinDeclSpecs;
 
38617
  friend class ::WinMemberExplSpec;
 
38618
  friend class ::WinTypeKeywords;
 
38619
  friend class ::WinFriend;
 
38620
  friend class ::ExtAC;
 
38621
  friend class ::ExtACBuilderCoupling;
 
38622
  friend class ::ExtACSyntaxCoupling;
 
38623
  friend class ::ExtACTree;
 
38624
  friend class ::ExtACKeywords;
 
38625
  friend class ::ExtGnu;
 
38626
  friend class ::PragmaOnceUnitState;
 
38627
  friend class ::PragmaOnce;
 
38628
  friend class ::CMatchSyntax;
 
38629
 
 
38630
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38631
 
 
38632
protected:
 
38633
  /** Constructor. */
 
38634
  CT_TemplateParamDecl () {}
 
38635
  
 
38636
public:
 
38637
  /** Get the template default argument. */
 
38638
  virtual CT_ExprList *DefaultArgument () const = 0;
 
38639
  /** Get the semantic information about the template parameter. */
 
38640
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
38641
public:
 
38642
  typedef AC::TLE __AttrTypes;
 
38643
  const char *__attr_name (unsigned i) const { return 0; }
 
38644
  const void *__attr (unsigned __i) const { return 0; }
 
38645
#line 2331 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38646
};
 
38647
 
 
38648
/** \class CT_NonTypeParamDecl CTree.h Puma/CTree.h
 
38649
 *  Tree node representing a template non-type parameter declaration. */
 
38650
 
 
38651
#line 38652 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38652
} // closed Puma
 
38653
class CCExprResolve;
 
38654
class CExprResolve;
 
38655
class WinIfExists;
 
38656
class WinImportHandler;
 
38657
class WinMacros;
 
38658
class WinAsm;
 
38659
class WinDeclSpecs;
 
38660
class WinMemberExplSpec;
 
38661
class WinTypeKeywords;
 
38662
class WinFriend;
 
38663
class ExtAC;
 
38664
class ExtACBuilderCoupling;
 
38665
class ExtACSyntaxCoupling;
 
38666
class ExtACTree;
 
38667
class ExtACKeywords;
 
38668
class ExtGnu;
 
38669
class PragmaOnceUnitState;
 
38670
class PragmaOnce;
 
38671
class CMatchSyntax;
 
38672
namespace Puma {
 
38673
 
 
38674
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38675
class CT_NonTypeParamDecl : public CT_TemplateParamDecl {
 
38676
#line 38677 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38677
  friend class ::CCExprResolve;
 
38678
  friend class ::CExprResolve;
 
38679
  friend class ::WinIfExists;
 
38680
  friend class ::WinImportHandler;
 
38681
  friend class ::WinMacros;
 
38682
  friend class ::WinAsm;
 
38683
  friend class ::WinDeclSpecs;
 
38684
  friend class ::WinMemberExplSpec;
 
38685
  friend class ::WinTypeKeywords;
 
38686
  friend class ::WinFriend;
 
38687
  friend class ::ExtAC;
 
38688
  friend class ::ExtACBuilderCoupling;
 
38689
  friend class ::ExtACSyntaxCoupling;
 
38690
  friend class ::ExtACTree;
 
38691
  friend class ::ExtACKeywords;
 
38692
  friend class ::ExtGnu;
 
38693
  friend class ::PragmaOnceUnitState;
 
38694
  friend class ::PragmaOnce;
 
38695
  friend class ::CMatchSyntax;
 
38696
 
 
38697
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38698
 
 
38699
  CTree *sons[3]; // declspecs, declarator, init
 
38700
 
 
38701
public:
 
38702
  /** Constructor.
 
38703
   *  \param dsl The declaration specifier sequence.
 
38704
   *  \param d The parameter declarator.
 
38705
   *  \param i The default template argument. */
 
38706
  CT_NonTypeParamDecl (CTree *dsl, CTree *d, CTree *i = (CTree*)0) {
 
38707
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], i);
 
38708
  }
 
38709
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38710
  static const char *NodeId ();
 
38711
  /** Get the name of the node. Can be compared with NodeId(). */
 
38712
  const char *NodeName () const { return NodeId (); }
 
38713
  /** Get the number of sons. */
 
38714
  int Sons () const { return CTree::Sons (sons, 3); }
 
38715
  /** Get the n-th son.
 
38716
   *  \param n The index of the son.
 
38717
   *  \return The n-th son or NULL. */
 
38718
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
38719
  /** Get the declaration specifier sequence. */
 
38720
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
38721
  /** Get the parameter declarator. */
 
38722
  CTree *Declarator () const { return sons[1]; }
 
38723
  /** Get the default template argument. */
 
38724
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[2]; }
 
38725
  /** Get the semantic information about the template parameter. */
 
38726
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
38727
  /** Set the default template argument. 
 
38728
   *  \param i The default argument. */
 
38729
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
38730
  /** Replace a son.
 
38731
   *  \param old_son The son to replace.
 
38732
   *  \param new_son The new son. */
 
38733
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38734
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
38735
  }
 
38736
public:
 
38737
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
38738
  const char *__attr_name (unsigned i) const {
 
38739
    static const char *names[] = { "sons" }; return names[i];
 
38740
  }
 
38741
  const void *__attr (unsigned __i) const {
 
38742
    switch (__i) { case 0: return &sons; default: return 0; }
 
38743
  }
 
38744
#line 2373 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38745
};
 
38746
 
 
38747
/** \class CT_TypeParamDecl CTree.h Puma/CTree.h
 
38748
 *  Tree node representing a template type parameter declaration. */
 
38749
 
 
38750
#line 38751 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38751
} // closed Puma
 
38752
class CCExprResolve;
 
38753
class CExprResolve;
 
38754
class WinIfExists;
 
38755
class WinImportHandler;
 
38756
class WinMacros;
 
38757
class WinAsm;
 
38758
class WinDeclSpecs;
 
38759
class WinMemberExplSpec;
 
38760
class WinTypeKeywords;
 
38761
class WinFriend;
 
38762
class ExtAC;
 
38763
class ExtACBuilderCoupling;
 
38764
class ExtACSyntaxCoupling;
 
38765
class ExtACTree;
 
38766
class ExtACKeywords;
 
38767
class ExtGnu;
 
38768
class PragmaOnceUnitState;
 
38769
class PragmaOnce;
 
38770
class CMatchSyntax;
 
38771
namespace Puma {
 
38772
 
 
38773
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38774
class CT_TypeParamDecl : public CT_TemplateParamDecl {
 
38775
#line 38776 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38776
  friend class ::CCExprResolve;
 
38777
  friend class ::CExprResolve;
 
38778
  friend class ::WinIfExists;
 
38779
  friend class ::WinImportHandler;
 
38780
  friend class ::WinMacros;
 
38781
  friend class ::WinAsm;
 
38782
  friend class ::WinDeclSpecs;
 
38783
  friend class ::WinMemberExplSpec;
 
38784
  friend class ::WinTypeKeywords;
 
38785
  friend class ::WinFriend;
 
38786
  friend class ::ExtAC;
 
38787
  friend class ::ExtACBuilderCoupling;
 
38788
  friend class ::ExtACSyntaxCoupling;
 
38789
  friend class ::ExtACTree;
 
38790
  friend class ::ExtACKeywords;
 
38791
  friend class ::ExtGnu;
 
38792
  friend class ::PragmaOnceUnitState;
 
38793
  friend class ::PragmaOnce;
 
38794
  friend class ::CMatchSyntax;
 
38795
 
 
38796
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38797
 
 
38798
  CTree *sons[4]; // params, key, id, init
 
38799
 
 
38800
public:
 
38801
  /** Constructor.
 
38802
   *  \param pl The template parameter list of an template template parameter.
 
38803
   *  \param k The type keyword, i.e. 'class' or 'typename'.
 
38804
   *  \param id The parameter identifier.
 
38805
   *  \param i The default template argument. */
 
38806
  CT_TypeParamDecl (CTree *pl, CTree *k, CTree *id, CTree *i = (CTree*)0) { 
 
38807
    AddSon (sons[0], pl); AddSon (sons[1], k); 
 
38808
    AddSon (sons[2], id); AddSon (sons[3], i);
 
38809
  }
 
38810
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38811
  static const char *NodeId ();
 
38812
  /** Get the name of the node. Can be compared with NodeId(). */
 
38813
  const char *NodeName () const { return NodeId (); }
 
38814
  /** Get the number of sons. */
 
38815
  int Sons () const { return CTree::Sons (sons, 4); }
 
38816
  /** Get the n-th son.
 
38817
   *  \param n The index of the son.
 
38818
   *  \return The n-th son or NULL. */
 
38819
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
38820
  /** Get the template parameter list of a template template parameter. */
 
38821
  CT_TemplateParamList *Parameters () const { 
 
38822
    return (CT_TemplateParamList*)sons[0]; 
 
38823
  }
 
38824
  /** Get the templare parameter name. */
 
38825
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
38826
  /** Get the template default argument. */
 
38827
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[3]; }
 
38828
  /** Set the template default argument.
 
38829
   *  \param i The default argument. */
 
38830
  void Initializer (CTree *i) { AddSon (sons[3], i); }
 
38831
  /** Replace a son.
 
38832
   *  \param old_son The son to replace.
 
38833
   *  \param new_son The new son. */
 
38834
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38835
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
38836
  }
 
38837
public:
 
38838
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
38839
  const char *__attr_name (unsigned i) const {
 
38840
    static const char *names[] = { "sons" }; return names[i];
 
38841
  }
 
38842
  const void *__attr (unsigned __i) const {
 
38843
    switch (__i) { case 0: return &sons; default: return 0; }
 
38844
  }
 
38845
#line 2417 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38846
};
 
38847
 
 
38848
/** \class CT_EnumDef CTree.h Puma/CTree.h
 
38849
 *  Tree node representing the definition of an enumeration. 
 
38850
 *  Example: \code enum E { A, B, C } \endcode */
 
38851
 
 
38852
#line 38853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38853
} // closed Puma
 
38854
class CCExprResolve;
 
38855
class CExprResolve;
 
38856
class WinIfExists;
 
38857
class WinImportHandler;
 
38858
class WinMacros;
 
38859
class WinAsm;
 
38860
class WinDeclSpecs;
 
38861
class WinMemberExplSpec;
 
38862
class WinTypeKeywords;
 
38863
class WinFriend;
 
38864
class ExtAC;
 
38865
class ExtACBuilderCoupling;
 
38866
class ExtACSyntaxCoupling;
 
38867
class ExtACTree;
 
38868
class ExtACKeywords;
 
38869
class ExtGnu;
 
38870
class PragmaOnceUnitState;
 
38871
class PragmaOnce;
 
38872
class CMatchSyntax;
 
38873
namespace Puma {
 
38874
 
 
38875
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38876
class CT_EnumDef : public CT_Decl, public CSemObject {
 
38877
#line 38878 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38878
  friend class ::CCExprResolve;
 
38879
  friend class ::CExprResolve;
 
38880
  friend class ::WinIfExists;
 
38881
  friend class ::WinImportHandler;
 
38882
  friend class ::WinMacros;
 
38883
  friend class ::WinAsm;
 
38884
  friend class ::WinDeclSpecs;
 
38885
  friend class ::WinMemberExplSpec;
 
38886
  friend class ::WinTypeKeywords;
 
38887
  friend class ::WinFriend;
 
38888
  friend class ::ExtAC;
 
38889
  friend class ::ExtACBuilderCoupling;
 
38890
  friend class ::ExtACSyntaxCoupling;
 
38891
  friend class ::ExtACTree;
 
38892
  friend class ::ExtACKeywords;
 
38893
  friend class ::ExtGnu;
 
38894
  friend class ::PragmaOnceUnitState;
 
38895
  friend class ::PragmaOnce;
 
38896
  friend class ::CMatchSyntax;
 
38897
 
 
38898
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38899
 
 
38900
  CTree *sons[3]; // key, name, enumerators
 
38901
 
 
38902
public:
 
38903
  /** Constructor.
 
38904
   *  \param k The keyword 'enum'.
 
38905
   *  \param n The name of the enumeration. */
 
38906
  CT_EnumDef (CTree *k, CTree *n) {
 
38907
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], 0); 
 
38908
  }
 
38909
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38910
  static const char *NodeId ();
 
38911
  /** Get the name of the node. Can be compared with NodeId(). */
 
38912
  const char *NodeName () const { return NodeId (); }
 
38913
  /** Get the number of sons. */
 
38914
  int Sons () const { return CTree::Sons (sons, 3); }
 
38915
  /** Get the n-th son.
 
38916
   *  \param n The index of the son.
 
38917
   *  \return The n-th son or NULL. */
 
38918
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
38919
  /** Get the name of the enumeration. */
 
38920
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
38921
  /** Set the list of enumeration constants.
 
38922
   *  \param el The enumerator list. */
 
38923
  void Enumerators (CTree *el) { AddSon (sons[2], el); }
 
38924
  /** Get the list of enumeration constants. */
 
38925
  CT_EnumeratorList *Enumerators () const { return (CT_EnumeratorList*)sons[2]; }
 
38926
  /** Replace a son.
 
38927
   *  \param old_son The son to replace.
 
38928
   *  \param new_son The new son. */
 
38929
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38930
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
38931
  }
 
38932
  /** Get the semantic information about the enumeration. */
 
38933
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
38934
public:
 
38935
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
38936
  const char *__attr_name (unsigned i) const {
 
38937
    static const char *names[] = { "sons" }; return names[i];
 
38938
  }
 
38939
  const void *__attr (unsigned __i) const {
 
38940
    switch (__i) { case 0: return &sons; default: return 0; }
 
38941
  }
 
38942
#line 2457 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38943
};
 
38944
 
 
38945
/** \class CT_Enumerator CTree.h Puma/CTree.h
 
38946
 *  Tree node representing a single enumeration constant. */
 
38947
 
 
38948
#line 38949 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38949
} // closed Puma
 
38950
class CCExprResolve;
 
38951
class CExprResolve;
 
38952
class WinIfExists;
 
38953
class WinImportHandler;
 
38954
class WinMacros;
 
38955
class WinAsm;
 
38956
class WinDeclSpecs;
 
38957
class WinMemberExplSpec;
 
38958
class WinTypeKeywords;
 
38959
class WinFriend;
 
38960
class ExtAC;
 
38961
class ExtACBuilderCoupling;
 
38962
class ExtACSyntaxCoupling;
 
38963
class ExtACTree;
 
38964
class ExtACKeywords;
 
38965
class ExtGnu;
 
38966
class PragmaOnceUnitState;
 
38967
class PragmaOnce;
 
38968
class CMatchSyntax;
 
38969
namespace Puma {
 
38970
 
 
38971
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38972
class CT_Enumerator : public CT_Decl, public CSemObject {
 
38973
#line 38974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
38974
  friend class ::CCExprResolve;
 
38975
  friend class ::CExprResolve;
 
38976
  friend class ::WinIfExists;
 
38977
  friend class ::WinImportHandler;
 
38978
  friend class ::WinMacros;
 
38979
  friend class ::WinAsm;
 
38980
  friend class ::WinDeclSpecs;
 
38981
  friend class ::WinMemberExplSpec;
 
38982
  friend class ::WinTypeKeywords;
 
38983
  friend class ::WinFriend;
 
38984
  friend class ::ExtAC;
 
38985
  friend class ::ExtACBuilderCoupling;
 
38986
  friend class ::ExtACSyntaxCoupling;
 
38987
  friend class ::ExtACTree;
 
38988
  friend class ::ExtACKeywords;
 
38989
  friend class ::ExtGnu;
 
38990
  friend class ::PragmaOnceUnitState;
 
38991
  friend class ::PragmaOnce;
 
38992
  friend class ::CMatchSyntax;
 
38993
 
 
38994
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38995
 
 
38996
  CTree *sons[2]; // name, init
 
38997
 
 
38998
public:
 
38999
  /** Constructor.
 
39000
   *  \param n The name of the enumerator. */
 
39001
  CT_Enumerator (CTree *n) { AddSon (sons[0], n); AddSon (sons[1], 0); }
 
39002
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39003
  static const char *NodeId ();
 
39004
  /** Get the name of the node. Can be compared with NodeId(). */
 
39005
  const char *NodeName () const { return NodeId (); }
 
39006
  /** Get the number of sons. */
 
39007
  int Sons () const { return CTree::Sons (sons, 2); }
 
39008
  /** Get the n-th son.
 
39009
   *  \param n The index of the son.
 
39010
   *  \return The n-th son or NULL. */
 
39011
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
39012
  /** Get the name of the enumerator. */
 
39013
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
39014
  /** Set the initializer expression of the enumerator. */
 
39015
  void Initializer (CTree *i) { AddSon (sons[1], i); }
 
39016
  /** Get the initializer expression of the enumerator. */
 
39017
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
39018
  /** Replace a son.
 
39019
   *  \param old_son The son to replace.
 
39020
   *  \param new_son The new son. */
 
39021
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39022
    CTree::ReplaceSon (sons, 2, old_son, new_son); 
 
39023
  }
 
39024
  /** Get the semantic information about the enumerator. */
 
39025
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
39026
public:
 
39027
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
39028
  const char *__attr_name (unsigned i) const {
 
39029
    static const char *names[] = { "sons" }; return names[i];
 
39030
  }
 
39031
  const void *__attr (unsigned __i) const {
 
39032
    switch (__i) { case 0: return &sons; default: return 0; }
 
39033
  }
 
39034
#line 2492 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39035
};
 
39036
 
 
39037
/** \class CT_FctDef CTree.h Puma/CTree.h
 
39038
 *  Tree node representing a function definition. 
 
39039
 *  Example:
 
39040
 *  \code
 
39041
 * int mul(int x, int y) {
 
39042
 *   return x*y;
 
39043
 * }
 
39044
 *  \endcode */
 
39045
 
 
39046
#line 39047 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39047
} // closed Puma
 
39048
class CCExprResolve;
 
39049
class CExprResolve;
 
39050
class WinIfExists;
 
39051
class WinImportHandler;
 
39052
class WinMacros;
 
39053
class WinAsm;
 
39054
class WinDeclSpecs;
 
39055
class WinMemberExplSpec;
 
39056
class WinTypeKeywords;
 
39057
class WinFriend;
 
39058
class ExtAC;
 
39059
class ExtACBuilderCoupling;
 
39060
class ExtACSyntaxCoupling;
 
39061
class ExtACTree;
 
39062
class ExtACKeywords;
 
39063
class ExtGnu;
 
39064
class PragmaOnceUnitState;
 
39065
class PragmaOnce;
 
39066
class CMatchSyntax;
 
39067
namespace Puma {
 
39068
 
 
39069
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39070
class CT_FctDef : public CT_Decl, public CSemObject {
 
39071
#line 39072 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39072
  friend class ::CCExprResolve;
 
39073
  friend class ::CExprResolve;
 
39074
  friend class ::WinIfExists;
 
39075
  friend class ::WinImportHandler;
 
39076
  friend class ::WinMacros;
 
39077
  friend class ::WinAsm;
 
39078
  friend class ::WinDeclSpecs;
 
39079
  friend class ::WinMemberExplSpec;
 
39080
  friend class ::WinTypeKeywords;
 
39081
  friend class ::WinFriend;
 
39082
  friend class ::ExtAC;
 
39083
  friend class ::ExtACBuilderCoupling;
 
39084
  friend class ::ExtACSyntaxCoupling;
 
39085
  friend class ::ExtACTree;
 
39086
  friend class ::ExtACKeywords;
 
39087
  friend class ::ExtGnu;
 
39088
  friend class ::PragmaOnceUnitState;
 
39089
  friend class ::PragmaOnce;
 
39090
  friend class ::CMatchSyntax;
 
39091
 
 
39092
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39093
 
 
39094
  CTree *sons[7]; // declspecs, declarator, try, ctor_init, args, body, handlers
 
39095
 
 
39096
public:
 
39097
  /** Constructor.
 
39098
   *  \param dss The declaration specifier sequence. 
 
39099
   *  \param d The function declarator.
 
39100
   *  \param t Optional keyword 'try' for a function try-block.
 
39101
   *  \param ci Optional constructor initializer list.
 
39102
   *  \param as Optional K&R argument declaration list.
 
39103
   *  \param b The function body.
 
39104
   *  \param hs Exception handler sequence for a function try-block. */
 
39105
  CT_FctDef (CTree *dss, CTree *d, CTree *t, CTree *ci, CTree *as, 
 
39106
             CTree *b, CTree *hs) {
 
39107
    AddSon (sons[0], dss); AddSon (sons[1], d); AddSon (sons[2], t); 
 
39108
    AddSon (sons[3], ci); AddSon (sons[4], as); AddSon (sons[5], b); 
 
39109
    AddSon (sons[6], hs); 
 
39110
  }
 
39111
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39112
  static const char *NodeId ();
 
39113
  /** Get the name of the node. Can be compared with NodeId(). */
 
39114
  const char *NodeName () const { return NodeId (); }
 
39115
  /** Get the number of sons. */
 
39116
  int Sons () const { return CTree::Sons (sons, 7); }
 
39117
  /** Get the n-th son.
 
39118
   *  \param n The index of the son.
 
39119
   *  \return The n-th son or NULL. */
 
39120
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
39121
  /** Get the declaration specifier sequence. */
 
39122
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
39123
  /** Get the function declarator. */
 
39124
  CTree *Declarator () const { return sons[1]; }
 
39125
  /** Get the 'try' keyword of the function try-block. */
 
39126
  CT_Token *TryKey () const { return (CT_Token*)sons[2]; }
 
39127
  /** Get the constructor initializer list. */
 
39128
  CTree *CtorInit () const { return sons[3]; }
 
39129
  /** Get the K&R argument declaration sequence. */
 
39130
  CT_ArgDeclSeq *ArgDeclSeq () const { return (CT_ArgDeclSeq*)sons[4]; }
 
39131
  /** Get the function body. */
 
39132
  CT_CmpdStmt *Body () const { return (CT_CmpdStmt*)sons[5]; }
 
39133
  /** Get the exception handler sequence of a function try-block. */
 
39134
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[6]; }
 
39135
  /** Get the semantic information about the function. */
 
39136
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
39137
  /** Set the constructor initializer list. 
 
39138
   *  \param i The initializer list. */
 
39139
  void CtorInit (CTree *i) { AddSon (sons[3], i); }
 
39140
  /** Set the function body.
 
39141
   *  \param b The function body. */
 
39142
  void Body (CTree *b) { AddSon (sons[5], b); }
 
39143
  /** Set the function try-block.
 
39144
   *  \param t The keyword 'try'.
 
39145
   *  \param c Optional constructor initializer list.
 
39146
   *  \param b The function body.
 
39147
   *  \param h The exception handler sequence. */
 
39148
  void FctTryBlock (CTree *t, CTree *c, CTree *b, CTree *h) { 
 
39149
    AddSon (sons[2], t); AddSon (sons[3], c); 
 
39150
    AddSon (sons[5], b); AddSon (sons[6], h);
 
39151
  }
 
39152
  /** Replace a son.
 
39153
   *  \param old_son The son to replace.
 
39154
   *  \param new_son The new son. */
 
39155
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39156
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
39157
  }
 
39158
public:
 
39159
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
39160
  const char *__attr_name (unsigned i) const {
 
39161
    static const char *names[] = { "sons" }; return names[i];
 
39162
  }
 
39163
  const void *__attr (unsigned __i) const {
 
39164
    switch (__i) { case 0: return &sons; default: return 0; }
 
39165
  }
 
39166
#line 2567 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39167
};
 
39168
 
 
39169
/** \class CT_AsmDef CTree.h Puma/CTree.h
 
39170
 *  Tree node representing an inline assembly definition. 
 
39171
 *  Example: \code asm("movl %ecx %eax"); \endcode */
 
39172
 
 
39173
#line 39174 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39174
} // closed Puma
 
39175
class CCExprResolve;
 
39176
class CExprResolve;
 
39177
class WinIfExists;
 
39178
class WinImportHandler;
 
39179
class WinMacros;
 
39180
class WinAsm;
 
39181
class WinDeclSpecs;
 
39182
class WinMemberExplSpec;
 
39183
class WinTypeKeywords;
 
39184
class WinFriend;
 
39185
class ExtAC;
 
39186
class ExtACBuilderCoupling;
 
39187
class ExtACSyntaxCoupling;
 
39188
class ExtACTree;
 
39189
class ExtACKeywords;
 
39190
class ExtGnu;
 
39191
class PragmaOnceUnitState;
 
39192
class PragmaOnce;
 
39193
class CMatchSyntax;
 
39194
namespace Puma {
 
39195
 
 
39196
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39197
class CT_AsmDef : public CT_Decl {
 
39198
#line 39199 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39199
  friend class ::CCExprResolve;
 
39200
  friend class ::CExprResolve;
 
39201
  friend class ::WinIfExists;
 
39202
  friend class ::WinImportHandler;
 
39203
  friend class ::WinMacros;
 
39204
  friend class ::WinAsm;
 
39205
  friend class ::WinDeclSpecs;
 
39206
  friend class ::WinMemberExplSpec;
 
39207
  friend class ::WinTypeKeywords;
 
39208
  friend class ::WinFriend;
 
39209
  friend class ::ExtAC;
 
39210
  friend class ::ExtACBuilderCoupling;
 
39211
  friend class ::ExtACSyntaxCoupling;
 
39212
  friend class ::ExtACTree;
 
39213
  friend class ::ExtACKeywords;
 
39214
  friend class ::ExtGnu;
 
39215
  friend class ::PragmaOnceUnitState;
 
39216
  friend class ::PragmaOnce;
 
39217
  friend class ::CMatchSyntax;
 
39218
 
 
39219
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39220
 
 
39221
  CTree *sons[5]; // asm, open, str, close, semi_colon
 
39222
 
 
39223
public:
 
39224
  /** Constructor.
 
39225
   *  \param a The keyword 'asm'.
 
39226
   *  \param o Left parenthesis around the assembler code string. 
 
39227
   *  \param s The assembler code.
 
39228
   *  \param c Right parenthesis around the assembler code string.
 
39229
   *  \param sc Trailing semi-colon. */
 
39230
  CT_AsmDef (CTree *a, CTree *o, CTree *s, CTree *c, CTree *sc) {
 
39231
    AddSon (sons[0], a); AddSon (sons[1], o); AddSon (sons[2], s); 
 
39232
    AddSon (sons[3], c); AddSon (sons[4], sc); 
 
39233
  }
 
39234
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39235
  static const char *NodeId ();
 
39236
  /** Get the name of the node. Can be compared with NodeId(). */
 
39237
  const char *NodeName () const { return NodeId (); }
 
39238
  /** Get the number of sons. */
 
39239
  int Sons () const { return 5; }
 
39240
  /** Get the n-th son.
 
39241
   *  \param n The index of the son.
 
39242
   *  \return The n-th son or NULL. */
 
39243
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
39244
  /** Get the assembler code. */
 
39245
  CT_String *Instructions () const { return (CT_String*)sons[2]; }
 
39246
  /** Replace a son.
 
39247
   *  \param old_son The son to replace.
 
39248
   *  \param new_son The new son. */
 
39249
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39250
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
39251
  }
 
39252
public:
 
39253
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
39254
  const char *__attr_name (unsigned i) const {
 
39255
    static const char *names[] = { "sons" }; return names[i];
 
39256
  }
 
39257
  const void *__attr (unsigned __i) const {
 
39258
    switch (__i) { case 0: return &sons; default: return 0; }
 
39259
  }
 
39260
#line 2604 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39261
};
 
39262
 
 
39263
/** \class CT_Handler CTree.h Puma/CTree.h
 
39264
 *  Tree node representing an exception handler. */
 
39265
 
 
39266
#line 39267 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39267
} // closed Puma
 
39268
class CCExprResolve;
 
39269
class CExprResolve;
 
39270
class WinIfExists;
 
39271
class WinImportHandler;
 
39272
class WinMacros;
 
39273
class WinAsm;
 
39274
class WinDeclSpecs;
 
39275
class WinMemberExplSpec;
 
39276
class WinTypeKeywords;
 
39277
class WinFriend;
 
39278
class ExtAC;
 
39279
class ExtACBuilderCoupling;
 
39280
class ExtACSyntaxCoupling;
 
39281
class ExtACTree;
 
39282
class ExtACKeywords;
 
39283
class ExtGnu;
 
39284
class PragmaOnceUnitState;
 
39285
class PragmaOnce;
 
39286
class CMatchSyntax;
 
39287
namespace Puma {
 
39288
 
 
39289
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39290
class CT_Handler : public CT_Decl, public CSemScope {
 
39291
#line 39292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39292
  friend class ::CCExprResolve;
 
39293
  friend class ::CExprResolve;
 
39294
  friend class ::WinIfExists;
 
39295
  friend class ::WinImportHandler;
 
39296
  friend class ::WinMacros;
 
39297
  friend class ::WinAsm;
 
39298
  friend class ::WinDeclSpecs;
 
39299
  friend class ::WinMemberExplSpec;
 
39300
  friend class ::WinTypeKeywords;
 
39301
  friend class ::WinFriend;
 
39302
  friend class ::ExtAC;
 
39303
  friend class ::ExtACBuilderCoupling;
 
39304
  friend class ::ExtACSyntaxCoupling;
 
39305
  friend class ::ExtACTree;
 
39306
  friend class ::ExtACKeywords;
 
39307
  friend class ::ExtGnu;
 
39308
  friend class ::PragmaOnceUnitState;
 
39309
  friend class ::PragmaOnce;
 
39310
  friend class ::CMatchSyntax;
 
39311
 
 
39312
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39313
 
 
39314
  CTree *sons[3]; // catch, exception_decl, stmt
 
39315
 
 
39316
public:
 
39317
  /** Constructor.
 
39318
   *  \param c The keyword 'catch'.
 
39319
   *  \param e The exception object declaration.
 
39320
   *  \param s The exception handling statement. */
 
39321
  CT_Handler (CTree *c, CTree *e, CTree *s) {
 
39322
    AddSon (sons[0], c); AddSon (sons[1], e); AddSon (sons[2], s);
 
39323
  }
 
39324
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39325
  static const char *NodeId ();
 
39326
  /** Get the name of the node. Can be compared with NodeId(). */
 
39327
  const char *NodeName () const { return NodeId (); }
 
39328
  /** Get the number of sons. */
 
39329
  int Sons () const { return 3; }
 
39330
  /** Get the n-th son.
 
39331
   *  \param n The index of the son.
 
39332
   *  \return The n-th son or NULL. */
 
39333
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
39334
  /** Get the exception object declaration. */
 
39335
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
39336
  /** Get the exception handling statement. */
 
39337
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
39338
  /** Replace a son.
 
39339
   *  \param old_son The son to replace.
 
39340
   *  \param new_son The new son. */
 
39341
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39342
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
39343
  }
 
39344
  /** Get the scope opened by the handler. */
 
39345
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
39346
public:
 
39347
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
39348
  const char *__attr_name (unsigned i) const {
 
39349
    static const char *names[] = { "sons" }; return names[i];
 
39350
  }
 
39351
  const void *__attr (unsigned __i) const {
 
39352
    switch (__i) { case 0: return &sons; default: return 0; }
 
39353
  }
 
39354
#line 2641 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39355
};
 
39356
 
 
39357
/** \class CT_LinkageSpec CTree.h Puma/CTree.h
 
39358
 *  Tree node representing a list of declaration with a specific linkage. */
 
39359
 
 
39360
#line 39361 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39361
} // closed Puma
 
39362
class CCExprResolve;
 
39363
class CExprResolve;
 
39364
class WinIfExists;
 
39365
class WinImportHandler;
 
39366
class WinMacros;
 
39367
class WinAsm;
 
39368
class WinDeclSpecs;
 
39369
class WinMemberExplSpec;
 
39370
class WinTypeKeywords;
 
39371
class WinFriend;
 
39372
class ExtAC;
 
39373
class ExtACBuilderCoupling;
 
39374
class ExtACSyntaxCoupling;
 
39375
class ExtACTree;
 
39376
class ExtACKeywords;
 
39377
class ExtGnu;
 
39378
class PragmaOnceUnitState;
 
39379
class PragmaOnce;
 
39380
class CMatchSyntax;
 
39381
namespace Puma {
 
39382
 
 
39383
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39384
class CT_LinkageSpec : public CT_Decl {
 
39385
#line 39386 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39386
  friend class ::CCExprResolve;
 
39387
  friend class ::CExprResolve;
 
39388
  friend class ::WinIfExists;
 
39389
  friend class ::WinImportHandler;
 
39390
  friend class ::WinMacros;
 
39391
  friend class ::WinAsm;
 
39392
  friend class ::WinDeclSpecs;
 
39393
  friend class ::WinMemberExplSpec;
 
39394
  friend class ::WinTypeKeywords;
 
39395
  friend class ::WinFriend;
 
39396
  friend class ::ExtAC;
 
39397
  friend class ::ExtACBuilderCoupling;
 
39398
  friend class ::ExtACSyntaxCoupling;
 
39399
  friend class ::ExtACTree;
 
39400
  friend class ::ExtACKeywords;
 
39401
  friend class ::ExtGnu;
 
39402
  friend class ::PragmaOnceUnitState;
 
39403
  friend class ::PragmaOnce;
 
39404
  friend class ::CMatchSyntax;
 
39405
 
 
39406
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39407
 
 
39408
  CTree *sons[5]; // extern, str, open, decls, close
 
39409
 
 
39410
public:
 
39411
  /** Constructor.
 
39412
   *  \param e The keyword 'extern'.
 
39413
   *  \param s The linkage identifier, e.g. "C".
 
39414
   *  \param o Left parenthesis around the declaration list.
 
39415
   *  \param d The list of declarations.
 
39416
   *  \param c Right parenthesis around the declaration list. */
 
39417
  CT_LinkageSpec (CTree *e, CTree *s, CTree *o, CTree *d, CTree *c) {
 
39418
    AddSon (sons[0], e); AddSon (sons[1], s); AddSon (sons[2], o); 
 
39419
    AddSon (sons[3], d); AddSon (sons[4], c);
 
39420
    if (isList ())
 
39421
      ((CT_DeclList*)Decls ())->Linkage (this);
 
39422
    else
 
39423
      ((CT_Decl*)Decls ())->Linkage (this);
 
39424
  }
 
39425
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39426
  static const char *NodeId ();
 
39427
  /** Get the name of the node. Can be compared with NodeId(). */
 
39428
  const char *NodeName () const { return NodeId (); }
 
39429
  /** Get the number of sons. */
 
39430
  int Sons () const { return CTree::Sons (sons, 5); }
 
39431
  /** Get the n-th son.
 
39432
   *  \param n The index of the son.
 
39433
   *  \return The n-th son or NULL. */
 
39434
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
39435
  /** Get the linkage identifier. */
 
39436
  CT_String *Linkage () const { return (CT_String*)sons[1]; }
 
39437
  /** Get the list declarations. */
 
39438
  CTree *Decls () const { return sons[3]; }
 
39439
  /** Check if there is more than one enclosed declaration. 
 
39440
   *  In this case the node returned by Decls() is a CT_DeclList
 
39441
   *  node. */
 
39442
  bool isList () const {
 
39443
    return Decls ()->NodeName () == CT_DeclList::NodeId ();
 
39444
  }
 
39445
  /** Replace a son.
 
39446
   *  \param old_son The son to replace.
 
39447
   *  \param new_son The new son. */
 
39448
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39449
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
39450
  }
 
39451
public:
 
39452
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
39453
  const char *__attr_name (unsigned i) const {
 
39454
    static const char *names[] = { "sons" }; return names[i];
 
39455
  }
 
39456
  const void *__attr (unsigned __i) const {
 
39457
    switch (__i) { case 0: return &sons; default: return 0; }
 
39458
  }
 
39459
#line 2689 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39460
};
 
39461
 
 
39462
/** \class CT_ArgDecl CTree.h Puma/CTree.h
 
39463
 *  Tree node representing the declaration of a function parameter. */
 
39464
 
 
39465
#line 39466 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39466
} // closed Puma
 
39467
class CCExprResolve;
 
39468
class CExprResolve;
 
39469
class WinIfExists;
 
39470
class WinImportHandler;
 
39471
class WinMacros;
 
39472
class WinAsm;
 
39473
class WinDeclSpecs;
 
39474
class WinMemberExplSpec;
 
39475
class WinTypeKeywords;
 
39476
class WinFriend;
 
39477
class ExtAC;
 
39478
class ExtACBuilderCoupling;
 
39479
class ExtACSyntaxCoupling;
 
39480
class ExtACTree;
 
39481
class ExtACKeywords;
 
39482
class ExtGnu;
 
39483
class PragmaOnceUnitState;
 
39484
class PragmaOnce;
 
39485
class CMatchSyntax;
 
39486
namespace Puma {
 
39487
 
 
39488
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39489
class CT_ArgDecl : public CT_Decl, public CSemObject {
 
39490
#line 39491 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39491
  friend class ::CCExprResolve;
 
39492
  friend class ::CExprResolve;
 
39493
  friend class ::WinIfExists;
 
39494
  friend class ::WinImportHandler;
 
39495
  friend class ::WinMacros;
 
39496
  friend class ::WinAsm;
 
39497
  friend class ::WinDeclSpecs;
 
39498
  friend class ::WinMemberExplSpec;
 
39499
  friend class ::WinTypeKeywords;
 
39500
  friend class ::WinFriend;
 
39501
  friend class ::ExtAC;
 
39502
  friend class ::ExtACBuilderCoupling;
 
39503
  friend class ::ExtACSyntaxCoupling;
 
39504
  friend class ::ExtACTree;
 
39505
  friend class ::ExtACKeywords;
 
39506
  friend class ::ExtGnu;
 
39507
  friend class ::PragmaOnceUnitState;
 
39508
  friend class ::PragmaOnce;
 
39509
  friend class ::CMatchSyntax;
 
39510
 
 
39511
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39512
 
 
39513
  CTree *sons[4]; // declspecs, declarator, init, ellipsis
 
39514
 
 
39515
public:
 
39516
  /** Constructor.
 
39517
   *  \param dsl The declaration specifier sequence.
 
39518
   *  \param d The parameter declarator. */
 
39519
  CT_ArgDecl (CTree *dsl, CTree *d) {
 
39520
    AddSon (sons[0], dsl); AddSon (sons[1], d); 
 
39521
    AddSon (sons[2], 0); AddSon (sons[3], 0); 
 
39522
  }
 
39523
  /** Constructor.
 
39524
   *  \param ellipsis The variable argument list operator "...". */
 
39525
  CT_ArgDecl (CTree *ellipsis) {
 
39526
    AddSon (sons[0], 0); AddSon (sons[1], 0); 
 
39527
    AddSon (sons[2], 0); AddSon (sons[3], ellipsis); 
 
39528
  }
 
39529
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39530
  static const char *NodeId ();
 
39531
  /** Get the name of the node. Can be compared with NodeId(). */
 
39532
  const char *NodeName () const { return NodeId (); }
 
39533
  /** Get the number of sons. */
 
39534
  int Sons () const { return CTree::Sons (sons, 4); }
 
39535
  /** Get the n-th son.
 
39536
   *  \param n The index of the son.
 
39537
   *  \return The n-th son or NULL. */
 
39538
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
39539
  /** Get the declaration specifier sequence. */
 
39540
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
39541
  /** Get the function parameter declarator. */
 
39542
  CTree *Declarator () const { return sons[1]; }
 
39543
  /** Get the default argument. */
 
39544
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
39545
  /** Get the variable argument list operator. */
 
39546
  CT_Token *Ellipsis () const { return (CT_Token*)sons[3]; }
 
39547
  /** Get the semantic information about the function parameter. */
 
39548
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
39549
  /** Set the default argument. */
 
39550
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
39551
  /** Replace a son.
 
39552
   *  \param old_son The son to replace.
 
39553
   *  \param new_son The new son. */
 
39554
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39555
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
39556
  }
 
39557
public:
 
39558
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
39559
  const char *__attr_name (unsigned i) const {
 
39560
    static const char *names[] = { "sons" }; return names[i];
 
39561
  }
 
39562
  const void *__attr (unsigned __i) const {
 
39563
    switch (__i) { case 0: return &sons; default: return 0; }
 
39564
  }
 
39565
#line 2738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39566
};
 
39567
 
 
39568
/** \class CT_ArgDeclList CTree.h Puma/CTree.h
 
39569
 *  Tree node representing a function parameter list. */
 
39570
 
 
39571
#line 39572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39572
} // closed Puma
 
39573
class CCExprResolve;
 
39574
class CExprResolve;
 
39575
class WinIfExists;
 
39576
class WinImportHandler;
 
39577
class WinMacros;
 
39578
class WinAsm;
 
39579
class WinDeclSpecs;
 
39580
class WinMemberExplSpec;
 
39581
class WinTypeKeywords;
 
39582
class WinFriend;
 
39583
class ExtAC;
 
39584
class ExtACBuilderCoupling;
 
39585
class ExtACSyntaxCoupling;
 
39586
class ExtACTree;
 
39587
class ExtACKeywords;
 
39588
class ExtGnu;
 
39589
class PragmaOnceUnitState;
 
39590
class PragmaOnce;
 
39591
class CMatchSyntax;
 
39592
namespace Puma {
 
39593
 
 
39594
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39595
class CT_ArgDeclList : public CT_DeclList, public CSemScope {
 
39596
#line 39597 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39597
  friend class ::CCExprResolve;
 
39598
  friend class ::CExprResolve;
 
39599
  friend class ::WinIfExists;
 
39600
  friend class ::WinImportHandler;
 
39601
  friend class ::WinMacros;
 
39602
  friend class ::WinAsm;
 
39603
  friend class ::WinDeclSpecs;
 
39604
  friend class ::WinMemberExplSpec;
 
39605
  friend class ::WinTypeKeywords;
 
39606
  friend class ::WinFriend;
 
39607
  friend class ::ExtAC;
 
39608
  friend class ::ExtACBuilderCoupling;
 
39609
  friend class ::ExtACSyntaxCoupling;
 
39610
  friend class ::ExtACTree;
 
39611
  friend class ::ExtACKeywords;
 
39612
  friend class ::ExtGnu;
 
39613
  friend class ::PragmaOnceUnitState;
 
39614
  friend class ::PragmaOnce;
 
39615
  friend class ::CMatchSyntax;
 
39616
 
 
39617
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39618
 
 
39619
public:
 
39620
  /** Constructor.
 
39621
   *  \param size The initial size of the list.
 
39622
   *  \param props The list properties. */
 
39623
  CT_ArgDeclList (int size = 2, int props = SEPARATORS | OPEN_CLOSE) : 
 
39624
   CT_DeclList (size, 2) { AddProperties (props); }
 
39625
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39626
  static const char *NodeId ();
 
39627
  /** Get the name of the node. Can be compared with NodeId(). */
 
39628
  const char *NodeName () const { return NodeId (); }
 
39629
  /** Get the scope opened by the parameter list. */
 
39630
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
39631
public:
 
39632
  typedef AC::TLE __AttrTypes;
 
39633
  const char *__attr_name (unsigned i) const { return 0; }
 
39634
  const void *__attr (unsigned __i) const { return 0; }
 
39635
#line 2755 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39636
};
 
39637
 
 
39638
/** \class CT_ArgDeclSeq CTree.h Puma/CTree.h
 
39639
 *  Tree node representing a K&R function parameter declarations list. */
 
39640
 
 
39641
#line 39642 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39642
} // closed Puma
 
39643
class CCExprResolve;
 
39644
class CExprResolve;
 
39645
class WinIfExists;
 
39646
class WinImportHandler;
 
39647
class WinMacros;
 
39648
class WinAsm;
 
39649
class WinDeclSpecs;
 
39650
class WinMemberExplSpec;
 
39651
class WinTypeKeywords;
 
39652
class WinFriend;
 
39653
class ExtAC;
 
39654
class ExtACBuilderCoupling;
 
39655
class ExtACSyntaxCoupling;
 
39656
class ExtACTree;
 
39657
class ExtACKeywords;
 
39658
class ExtGnu;
 
39659
class PragmaOnceUnitState;
 
39660
class PragmaOnce;
 
39661
class CMatchSyntax;
 
39662
namespace Puma {
 
39663
 
 
39664
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39665
class CT_ArgDeclSeq : public CT_DeclList, public CSemScope {
 
39666
#line 39667 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39667
  friend class ::CCExprResolve;
 
39668
  friend class ::CExprResolve;
 
39669
  friend class ::WinIfExists;
 
39670
  friend class ::WinImportHandler;
 
39671
  friend class ::WinMacros;
 
39672
  friend class ::WinAsm;
 
39673
  friend class ::WinDeclSpecs;
 
39674
  friend class ::WinMemberExplSpec;
 
39675
  friend class ::WinTypeKeywords;
 
39676
  friend class ::WinFriend;
 
39677
  friend class ::ExtAC;
 
39678
  friend class ::ExtACBuilderCoupling;
 
39679
  friend class ::ExtACSyntaxCoupling;
 
39680
  friend class ::ExtACTree;
 
39681
  friend class ::ExtACKeywords;
 
39682
  friend class ::ExtGnu;
 
39683
  friend class ::PragmaOnceUnitState;
 
39684
  friend class ::PragmaOnce;
 
39685
  friend class ::CMatchSyntax;
 
39686
 
 
39687
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39688
 
 
39689
public:
 
39690
  /** Constructor.
 
39691
   *  \param size The initial size of the list. */
 
39692
  CT_ArgDeclSeq (int size = 2) : CT_DeclList (size, 2) {}
 
39693
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39694
  static const char *NodeId ();
 
39695
  /** Get the name of the node. Can be compared with NodeId(). */
 
39696
  const char *NodeName () const { return NodeId (); }
 
39697
  /** Get the scope opened by the parameter declarations list. */
 
39698
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
39699
public:
 
39700
  typedef AC::TLE __AttrTypes;
 
39701
  const char *__attr_name (unsigned i) const { return 0; }
 
39702
  const void *__attr (unsigned __i) const { return 0; }
 
39703
#line 2770 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39704
};
 
39705
 
 
39706
/** \class CT_ArgNameList CTree.h Puma/CTree.h
 
39707
 *  Tree node representing a K&R function parameter name list. */
 
39708
 
 
39709
#line 39710 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39710
} // closed Puma
 
39711
class CCExprResolve;
 
39712
class CExprResolve;
 
39713
class WinIfExists;
 
39714
class WinImportHandler;
 
39715
class WinMacros;
 
39716
class WinAsm;
 
39717
class WinDeclSpecs;
 
39718
class WinMemberExplSpec;
 
39719
class WinTypeKeywords;
 
39720
class WinFriend;
 
39721
class ExtAC;
 
39722
class ExtACBuilderCoupling;
 
39723
class ExtACSyntaxCoupling;
 
39724
class ExtACTree;
 
39725
class ExtACKeywords;
 
39726
class ExtGnu;
 
39727
class PragmaOnceUnitState;
 
39728
class PragmaOnce;
 
39729
class CMatchSyntax;
 
39730
namespace Puma {
 
39731
 
 
39732
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39733
class CT_ArgNameList : public CT_ArgDeclList {
 
39734
#line 39735 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39735
  friend class ::CCExprResolve;
 
39736
  friend class ::CExprResolve;
 
39737
  friend class ::WinIfExists;
 
39738
  friend class ::WinImportHandler;
 
39739
  friend class ::WinMacros;
 
39740
  friend class ::WinAsm;
 
39741
  friend class ::WinDeclSpecs;
 
39742
  friend class ::WinMemberExplSpec;
 
39743
  friend class ::WinTypeKeywords;
 
39744
  friend class ::WinFriend;
 
39745
  friend class ::ExtAC;
 
39746
  friend class ::ExtACBuilderCoupling;
 
39747
  friend class ::ExtACSyntaxCoupling;
 
39748
  friend class ::ExtACTree;
 
39749
  friend class ::ExtACKeywords;
 
39750
  friend class ::ExtGnu;
 
39751
  friend class ::PragmaOnceUnitState;
 
39752
  friend class ::PragmaOnce;
 
39753
  friend class ::CMatchSyntax;
 
39754
 
 
39755
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39756
 
 
39757
public:
 
39758
  /** Constructor. */
 
39759
  CT_ArgNameList () : CT_ArgDeclList () {}
 
39760
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39761
  static const char *NodeId ();
 
39762
  /** Get the name of the node. Can be compared with NodeId(). */
 
39763
  const char *NodeName () const { return NodeId (); }
 
39764
public:
 
39765
  typedef AC::TLE __AttrTypes;
 
39766
  const char *__attr_name (unsigned i) const { return 0; }
 
39767
  const void *__attr (unsigned __i) const { return 0; }
 
39768
#line 2782 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39769
};
 
39770
 
 
39771
/** \class CT_NamespaceDef CTree.h Puma/CTree.h
 
39772
 *  Tree node representing a namespace definition.
 
39773
 *  Example: \code namespace a {} \endcode */
 
39774
 
 
39775
#line 39776 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39776
} // closed Puma
 
39777
class CCExprResolve;
 
39778
class CExprResolve;
 
39779
class WinIfExists;
 
39780
class WinImportHandler;
 
39781
class WinMacros;
 
39782
class WinAsm;
 
39783
class WinDeclSpecs;
 
39784
class WinMemberExplSpec;
 
39785
class WinTypeKeywords;
 
39786
class WinFriend;
 
39787
class ExtAC;
 
39788
class ExtACBuilderCoupling;
 
39789
class ExtACSyntaxCoupling;
 
39790
class ExtACTree;
 
39791
class ExtACKeywords;
 
39792
class ExtGnu;
 
39793
class PragmaOnceUnitState;
 
39794
class PragmaOnce;
 
39795
class CMatchSyntax;
 
39796
namespace Puma {
 
39797
 
 
39798
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39799
class CT_NamespaceDef : public CT_Decl, public CSemObject {
 
39800
#line 39801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39801
  friend class ::CCExprResolve;
 
39802
  friend class ::CExprResolve;
 
39803
  friend class ::WinIfExists;
 
39804
  friend class ::WinImportHandler;
 
39805
  friend class ::WinMacros;
 
39806
  friend class ::WinAsm;
 
39807
  friend class ::WinDeclSpecs;
 
39808
  friend class ::WinMemberExplSpec;
 
39809
  friend class ::WinTypeKeywords;
 
39810
  friend class ::WinFriend;
 
39811
  friend class ::ExtAC;
 
39812
  friend class ::ExtACBuilderCoupling;
 
39813
  friend class ::ExtACSyntaxCoupling;
 
39814
  friend class ::ExtACTree;
 
39815
  friend class ::ExtACKeywords;
 
39816
  friend class ::ExtGnu;
 
39817
  friend class ::PragmaOnceUnitState;
 
39818
  friend class ::PragmaOnce;
 
39819
  friend class ::CMatchSyntax;
 
39820
 
 
39821
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39822
 
 
39823
  CTree *sons[3]; // ns, name, members
 
39824
 
 
39825
public:
 
39826
  /** Constructor.
 
39827
   *  \param n The keyword 'namespace'.
 
39828
   *  \param nm The name of the namespace. */
 
39829
  CT_NamespaceDef (CTree *n, CTree *nm) {
 
39830
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], 0); 
 
39831
  }
 
39832
  /** Constructor.
 
39833
   *  \param n The keyword 'namespace'.
 
39834
   *  \param nm The name of the namespace. 
 
39835
   *  \param m The namespace member declarations list. */
 
39836
  CT_NamespaceDef (CTree *n, CTree *nm, CTree *m) {
 
39837
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], m); 
 
39838
  }
 
39839
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39840
  static const char *NodeId ();
 
39841
  /** Get the name of the node. Can be compared with NodeId(). */
 
39842
  const char *NodeName () const { return NodeId (); }
 
39843
  /** Get the number of sons. */
 
39844
  int Sons () const { return CTree::Sons (sons, 3); }
 
39845
  /** Get the n-th son.
 
39846
   *  \param n The index of the son.
 
39847
   *  \return The n-th son or NULL. */
 
39848
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
39849
  /** Set the namespace member declarations list. */
 
39850
  void Members (CTree *m) { AddSon (sons[2], m); }
 
39851
  /** Get the namespace member declarations list. */
 
39852
  CT_MembList *Members () const { return (CT_MembList*)sons[2]; }
 
39853
  /** Get the name of the namespace. */
 
39854
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
39855
  /** Get the semantic information about the namespace. */
 
39856
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
39857
  /** Replace a son.
 
39858
   *  \param old_son The son to replace.
 
39859
   *  \param new_son The new son. */
 
39860
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39861
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
39862
  }
 
39863
public:
 
39864
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
39865
  const char *__attr_name (unsigned i) const {
 
39866
    static const char *names[] = { "sons" }; return names[i];
 
39867
  }
 
39868
  const void *__attr (unsigned __i) const {
 
39869
    switch (__i) { case 0: return &sons; default: return 0; }
 
39870
  }
 
39871
#line 2828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39872
};
 
39873
 
 
39874
/** \class CT_NamespaceAliasDef CTree.h Puma/CTree.h
 
39875
 *  Tree node representing a namespace alias definition.
 
39876
 *  Example: \code namespace b = a; \endcode */
 
39877
 
 
39878
#line 39879 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39879
} // closed Puma
 
39880
class CCExprResolve;
 
39881
class CExprResolve;
 
39882
class WinIfExists;
 
39883
class WinImportHandler;
 
39884
class WinMacros;
 
39885
class WinAsm;
 
39886
class WinDeclSpecs;
 
39887
class WinMemberExplSpec;
 
39888
class WinTypeKeywords;
 
39889
class WinFriend;
 
39890
class ExtAC;
 
39891
class ExtACBuilderCoupling;
 
39892
class ExtACSyntaxCoupling;
 
39893
class ExtACTree;
 
39894
class ExtACKeywords;
 
39895
class ExtGnu;
 
39896
class PragmaOnceUnitState;
 
39897
class PragmaOnce;
 
39898
class CMatchSyntax;
 
39899
namespace Puma {
 
39900
 
 
39901
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39902
class CT_NamespaceAliasDef : public CT_Decl, public CSemObject {
 
39903
#line 39904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39904
  friend class ::CCExprResolve;
 
39905
  friend class ::CExprResolve;
 
39906
  friend class ::WinIfExists;
 
39907
  friend class ::WinImportHandler;
 
39908
  friend class ::WinMacros;
 
39909
  friend class ::WinAsm;
 
39910
  friend class ::WinDeclSpecs;
 
39911
  friend class ::WinMemberExplSpec;
 
39912
  friend class ::WinTypeKeywords;
 
39913
  friend class ::WinFriend;
 
39914
  friend class ::ExtAC;
 
39915
  friend class ::ExtACBuilderCoupling;
 
39916
  friend class ::ExtACSyntaxCoupling;
 
39917
  friend class ::ExtACTree;
 
39918
  friend class ::ExtACKeywords;
 
39919
  friend class ::ExtGnu;
 
39920
  friend class ::PragmaOnceUnitState;
 
39921
  friend class ::PragmaOnce;
 
39922
  friend class ::CMatchSyntax;
 
39923
 
 
39924
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39925
 
 
39926
  CTree *sons[5]; // ns, alias, assign, name, semi_colon
 
39927
 
 
39928
public:
 
39929
  /** Constructor.
 
39930
   *  \param n The keyword 'namespace'.
 
39931
   *  \param a The name of the namespace alias.
 
39932
   *  \param as The assignment operator '='.
 
39933
   *  \param nm The name of the original namespace.
 
39934
   *  \param s The trailing semi-colon. */
 
39935
  CT_NamespaceAliasDef (CTree *n, CTree *a, CTree *as, CTree *nm, CTree *s) {
 
39936
    AddSon (sons[0], n); AddSon (sons[1], a); AddSon (sons[2], as); 
 
39937
    AddSon (sons[3], nm); AddSon (sons[4], s); 
 
39938
  }
 
39939
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39940
  static const char *NodeId ();
 
39941
  /** Get the name of the node. Can be compared with NodeId(). */
 
39942
  const char *NodeName () const { return NodeId (); }
 
39943
  /** Get the number of sons. */
 
39944
  int Sons () const { return 5; }
 
39945
  /** Get the n-th son.
 
39946
   *  \param n The index of the son.
 
39947
   *  \return The n-th son or NULL. */
 
39948
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
39949
  /** Get the name of the original namespace. */
 
39950
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[3]; }
 
39951
  /** Get the name of the namespace alias. */
 
39952
  CT_SimpleName *Alias () const { return (CT_SimpleName*)sons[1]; }
 
39953
  /** Get the semantic information about the namespace alias. */
 
39954
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
39955
  /** Replace a son.
 
39956
   *  \param old_son The son to replace.
 
39957
   *  \param new_son The new son. */
 
39958
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39959
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
39960
  }
 
39961
public:
 
39962
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
39963
  const char *__attr_name (unsigned i) const {
 
39964
    static const char *names[] = { "sons" }; return names[i];
 
39965
  }
 
39966
  const void *__attr (unsigned __i) const {
 
39967
    switch (__i) { case 0: return &sons; default: return 0; }
 
39968
  }
 
39969
#line 2869 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39970
};
 
39971
 
 
39972
/** \class CT_UsingDirective CTree.h Puma/CTree.h
 
39973
 *  Tree node representing a namespace using directive.
 
39974
 *  Example: \code using namespace std; \endcode */
 
39975
 
 
39976
#line 39977 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
39977
} // closed Puma
 
39978
class CCExprResolve;
 
39979
class CExprResolve;
 
39980
class WinIfExists;
 
39981
class WinImportHandler;
 
39982
class WinMacros;
 
39983
class WinAsm;
 
39984
class WinDeclSpecs;
 
39985
class WinMemberExplSpec;
 
39986
class WinTypeKeywords;
 
39987
class WinFriend;
 
39988
class ExtAC;
 
39989
class ExtACBuilderCoupling;
 
39990
class ExtACSyntaxCoupling;
 
39991
class ExtACTree;
 
39992
class ExtACKeywords;
 
39993
class ExtGnu;
 
39994
class PragmaOnceUnitState;
 
39995
class PragmaOnce;
 
39996
class CMatchSyntax;
 
39997
namespace Puma {
 
39998
 
 
39999
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40000
class CT_UsingDirective : public CT_Decl {
 
40001
#line 40002 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40002
  friend class ::CCExprResolve;
 
40003
  friend class ::CExprResolve;
 
40004
  friend class ::WinIfExists;
 
40005
  friend class ::WinImportHandler;
 
40006
  friend class ::WinMacros;
 
40007
  friend class ::WinAsm;
 
40008
  friend class ::WinDeclSpecs;
 
40009
  friend class ::WinMemberExplSpec;
 
40010
  friend class ::WinTypeKeywords;
 
40011
  friend class ::WinFriend;
 
40012
  friend class ::ExtAC;
 
40013
  friend class ::ExtACBuilderCoupling;
 
40014
  friend class ::ExtACSyntaxCoupling;
 
40015
  friend class ::ExtACTree;
 
40016
  friend class ::ExtACKeywords;
 
40017
  friend class ::ExtGnu;
 
40018
  friend class ::PragmaOnceUnitState;
 
40019
  friend class ::PragmaOnce;
 
40020
  friend class ::CMatchSyntax;
 
40021
 
 
40022
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40023
 
 
40024
  CTree *sons[4]; // using, ns, name, semi_colon
 
40025
 
 
40026
public:
 
40027
  /** Constructor. 
 
40028
   *  \param u The keyword 'using'.
 
40029
   *  \param ns The keyword 'namespace'. 
 
40030
   *  \param n The name of the namespace.
 
40031
   *  \param s The trailing semi-colon. */
 
40032
  CT_UsingDirective (CTree *u, CTree *ns, CTree *n, CTree *s) {
 
40033
    AddSon (sons[0], u); AddSon (sons[1], ns); AddSon (sons[2], n); 
 
40034
    AddSon (sons[3], s); 
 
40035
  }
 
40036
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40037
  static const char *NodeId ();
 
40038
  /** Get the name of the node. Can be compared with NodeId(). */
 
40039
  const char *NodeName () const { return NodeId (); }
 
40040
  /** Get the number of sons. */
 
40041
  int Sons () const { return 4; }
 
40042
  /** Get the n-th son.
 
40043
   *  \param n The index of the son.
 
40044
   *  \return The n-th son or NULL. */
 
40045
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
40046
  /** Get the name of the namespace. */
 
40047
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
40048
  /** Replace a son.
 
40049
   *  \param old_son The son to replace.
 
40050
   *  \param new_son The new son. */
 
40051
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40052
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
40053
  }
 
40054
public:
 
40055
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
40056
  const char *__attr_name (unsigned i) const {
 
40057
    static const char *names[] = { "sons" }; return names[i];
 
40058
  }
 
40059
  const void *__attr (unsigned __i) const {
 
40060
    switch (__i) { case 0: return &sons; default: return 0; }
 
40061
  }
 
40062
#line 2905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40063
};
 
40064
 
 
40065
/*****************************************************************************/
 
40066
/*                                                                           */
 
40067
/*                              Declarators                                  */
 
40068
/*                                                                           */
 
40069
/*****************************************************************************/
 
40070
 
 
40071
/** \class CT_Declarator CTree.h Puma/CTree.h
 
40072
 *  Base class for all tree nodes representing declarators. */
 
40073
 
 
40074
#line 40075 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40075
} // closed Puma
 
40076
class CCExprResolve;
 
40077
class CExprResolve;
 
40078
class WinIfExists;
 
40079
class WinImportHandler;
 
40080
class WinMacros;
 
40081
class WinAsm;
 
40082
class WinDeclSpecs;
 
40083
class WinMemberExplSpec;
 
40084
class WinTypeKeywords;
 
40085
class WinFriend;
 
40086
class ExtAC;
 
40087
class ExtACBuilderCoupling;
 
40088
class ExtACSyntaxCoupling;
 
40089
class ExtACTree;
 
40090
class ExtACKeywords;
 
40091
class ExtGnu;
 
40092
class PragmaOnceUnitState;
 
40093
class PragmaOnce;
 
40094
class CMatchSyntax;
 
40095
namespace Puma {
 
40096
 
 
40097
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40098
class CT_Declarator : public CTree {
 
40099
#line 40100 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40100
  friend class ::CCExprResolve;
 
40101
  friend class ::CExprResolve;
 
40102
  friend class ::WinIfExists;
 
40103
  friend class ::WinImportHandler;
 
40104
  friend class ::WinMacros;
 
40105
  friend class ::WinAsm;
 
40106
  friend class ::WinDeclSpecs;
 
40107
  friend class ::WinMemberExplSpec;
 
40108
  friend class ::WinTypeKeywords;
 
40109
  friend class ::WinFriend;
 
40110
  friend class ::ExtAC;
 
40111
  friend class ::ExtACBuilderCoupling;
 
40112
  friend class ::ExtACSyntaxCoupling;
 
40113
  friend class ::ExtACTree;
 
40114
  friend class ::ExtACKeywords;
 
40115
  friend class ::ExtGnu;
 
40116
  friend class ::PragmaOnceUnitState;
 
40117
  friend class ::PragmaOnce;
 
40118
  friend class ::CMatchSyntax;
 
40119
 
 
40120
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40121
 
 
40122
protected:
 
40123
  /** Constructor. */
 
40124
  CT_Declarator () {}
 
40125
 
 
40126
public:
 
40127
  /** Get the declarator. */
 
40128
  virtual CTree *Declarator () const = 0;
 
40129
  /** Get this. */
 
40130
  virtual CT_Declarator *IsDeclarator () { return this; }
 
40131
  /** Get the declared name. */
 
40132
  CT_SimpleName *Name ();
 
40133
  /** Get the declared name and set last_declarator to 
 
40134
   *  the declarator containing the name. 
 
40135
   *  \param last_declarator To be set to the declarator containing the name. */
 
40136
  CT_SimpleName *Name (CT_Declarator *&last_declarator);
 
40137
public:
 
40138
  typedef AC::TLE __AttrTypes;
 
40139
  const char *__attr_name (unsigned i) const { return 0; }
 
40140
  const void *__attr (unsigned __i) const { return 0; }
 
40141
#line 2931 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40142
};
 
40143
 
 
40144
/** \class CT_InitDeclarator CTree.h Puma/CTree.h
 
40145
 *  Tree node representing a declarator with initializer.
 
40146
 *  Example: \code int *i = 0; \endcode */
 
40147
 
 
40148
#line 40149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40149
} // closed Puma
 
40150
class CCExprResolve;
 
40151
class CExprResolve;
 
40152
class WinIfExists;
 
40153
class WinImportHandler;
 
40154
class WinMacros;
 
40155
class WinAsm;
 
40156
class WinDeclSpecs;
 
40157
class WinMemberExplSpec;
 
40158
class WinTypeKeywords;
 
40159
class WinFriend;
 
40160
class ExtAC;
 
40161
class ExtACBuilderCoupling;
 
40162
class ExtACSyntaxCoupling;
 
40163
class ExtACTree;
 
40164
class ExtACKeywords;
 
40165
class ExtGnu;
 
40166
class PragmaOnceUnitState;
 
40167
class PragmaOnce;
 
40168
class CMatchSyntax;
 
40169
namespace Puma {
 
40170
 
 
40171
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40172
class CT_InitDeclarator : public CT_Declarator, public CSemObject {
 
40173
#line 40174 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40174
  friend class ::CCExprResolve;
 
40175
  friend class ::CExprResolve;
 
40176
  friend class ::WinIfExists;
 
40177
  friend class ::WinImportHandler;
 
40178
  friend class ::WinMacros;
 
40179
  friend class ::WinAsm;
 
40180
  friend class ::WinDeclSpecs;
 
40181
  friend class ::WinMemberExplSpec;
 
40182
  friend class ::WinTypeKeywords;
 
40183
  friend class ::WinFriend;
 
40184
  friend class ::ExtAC;
 
40185
  friend class ::ExtACBuilderCoupling;
 
40186
  friend class ::ExtACSyntaxCoupling;
 
40187
  friend class ::ExtACTree;
 
40188
  friend class ::ExtACKeywords;
 
40189
  friend class ::ExtGnu;
 
40190
  friend class ::PragmaOnceUnitState;
 
40191
  friend class ::PragmaOnce;
 
40192
  friend class ::CMatchSyntax;
 
40193
 
 
40194
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40195
 
 
40196
  CTree *sons[3]; // declarator, ext, init
 
40197
  CTree *obj_decl;
 
40198
 
 
40199
public:
 
40200
  /** Constructor.
 
40201
   *  \param d The declarator.
 
40202
   *  \param e Optional extension list.
 
40203
   *  \param i The initializer. */
 
40204
  CT_InitDeclarator (CTree *d, CTree *e = 0, CTree *i = 0) {
 
40205
    AddSon (sons[0], d); AddSon (sons[1], e); AddSon (sons[2], i);
 
40206
    AddSon (obj_decl, 0); 
 
40207
  }
 
40208
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40209
  static const char *NodeId ();
 
40210
  /** Get the name of the node. Can be compared with NodeId(). */
 
40211
  const char *NodeName () const { return NodeId (); }
 
40212
  /** Get the number of sons. */
 
40213
  int Sons () const { return CTree::Sons (sons, 3); }
 
40214
  /** Get the n-th son.
 
40215
   *  \param n The index of the son.
 
40216
   *  \return The n-th son or NULL. */
 
40217
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
40218
  /** Get the declarator. */
 
40219
  CTree *Declarator () const { return sons[0]; }
 
40220
  /** Get the extensions list. */
 
40221
  CTree *Extension () const { return sons[1]; }
 
40222
  /** Get the initializer. */
 
40223
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
40224
  /** Get the semantic information about the declared object. */
 
40225
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
40226
  /** Get the object declaration node containing the declarator. */
 
40227
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
40228
  /** Set the initializer. */
 
40229
  void Initializer (CTree* i) { AddSon (sons[2], i); }
 
40230
  /** Set the extensions list. */
 
40231
  void Extension (CTree* e) { AddSon (sons[1], e); }
 
40232
  /** Set the object declaration node containing the declarator. 
 
40233
   *  \param od The object declaration node. */
 
40234
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
40235
  /** Replace a son.
 
40236
   *  \param old_son The son to replace.
 
40237
   *  \param new_son The new son. */
 
40238
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40239
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
40240
  }
 
40241
public:
 
40242
  typedef AC::TL<Puma::CTree * [3],AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
40243
  const char *__attr_name (unsigned i) const {
 
40244
    static const char *names[] = { "sons", "obj_decl" }; return names[i];
 
40245
  }
 
40246
  const void *__attr (unsigned __i) const {
 
40247
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; default: return 0; }
 
40248
  }
 
40249
#line 2982 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40250
};
 
40251
 
 
40252
/** \class CT_BracedDeclarator CTree.h Puma/CTree.h
 
40253
 *  Tree node representing a braced declarator.
 
40254
 *  Example: \code int (i); \endcode */
 
40255
 
 
40256
#line 40257 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40257
} // closed Puma
 
40258
class CCExprResolve;
 
40259
class CExprResolve;
 
40260
class WinIfExists;
 
40261
class WinImportHandler;
 
40262
class WinMacros;
 
40263
class WinAsm;
 
40264
class WinDeclSpecs;
 
40265
class WinMemberExplSpec;
 
40266
class WinTypeKeywords;
 
40267
class WinFriend;
 
40268
class ExtAC;
 
40269
class ExtACBuilderCoupling;
 
40270
class ExtACSyntaxCoupling;
 
40271
class ExtACTree;
 
40272
class ExtACKeywords;
 
40273
class ExtGnu;
 
40274
class PragmaOnceUnitState;
 
40275
class PragmaOnce;
 
40276
class CMatchSyntax;
 
40277
namespace Puma {
 
40278
 
 
40279
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40280
class CT_BracedDeclarator : public CT_Declarator {
 
40281
#line 40282 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40282
  friend class ::CCExprResolve;
 
40283
  friend class ::CExprResolve;
 
40284
  friend class ::WinIfExists;
 
40285
  friend class ::WinImportHandler;
 
40286
  friend class ::WinMacros;
 
40287
  friend class ::WinAsm;
 
40288
  friend class ::WinDeclSpecs;
 
40289
  friend class ::WinMemberExplSpec;
 
40290
  friend class ::WinTypeKeywords;
 
40291
  friend class ::WinFriend;
 
40292
  friend class ::ExtAC;
 
40293
  friend class ::ExtACBuilderCoupling;
 
40294
  friend class ::ExtACSyntaxCoupling;
 
40295
  friend class ::ExtACTree;
 
40296
  friend class ::ExtACKeywords;
 
40297
  friend class ::ExtGnu;
 
40298
  friend class ::PragmaOnceUnitState;
 
40299
  friend class ::PragmaOnce;
 
40300
  friend class ::CMatchSyntax;
 
40301
 
 
40302
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40303
 
 
40304
  CTree *sons[4]; // open, win_specs, declarator, close
 
40305
 
 
40306
public:
 
40307
  /** Constructor.
 
40308
   *  \param o Left parenthesis around the declarator.
 
40309
   *  \param d The declarator.
 
40310
   *  \param c Right parenthesis around the declarator. */
 
40311
  CT_BracedDeclarator (CTree *o, CTree *d, CTree *c) {
 
40312
    AddSon (sons[0], o); AddSon (sons[1], 0); 
 
40313
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
40314
  }
 
40315
  /** Constructor.
 
40316
   *  \param o Left parenthesis around the declarator.
 
40317
   *  \param ws Declaration specifiers.
 
40318
   *  \param d The declarator.
 
40319
   *  \param c Right parenthesis around the declarator. */
 
40320
  CT_BracedDeclarator (CTree *o, CTree *ws, CTree *d, CTree *c) {
 
40321
    AddSon (sons[0], o); AddSon (sons[1], ws); 
 
40322
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
40323
  }
 
40324
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40325
  static const char *NodeId ();
 
40326
  /** Get the name of the node. Can be compared with NodeId(). */
 
40327
  const char *NodeName () const { return NodeId (); }
 
40328
  /** Get the number of sons. */
 
40329
  int Sons () const { return CTree::Sons (sons, 4); }
 
40330
  /** Get the n-th son.
 
40331
   *  \param n The index of the son.
 
40332
   *  \return The n-th son or NULL. */
 
40333
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
40334
  /** Get the declarator. */
 
40335
  CTree *Declarator () const { return sons[2]; }
 
40336
  /** Replace a son.
 
40337
   *  \param old_son The son to replace.
 
40338
   *  \param new_son The new son. */
 
40339
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40340
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
40341
  }
 
40342
public:
 
40343
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
40344
  const char *__attr_name (unsigned i) const {
 
40345
    static const char *names[] = { "sons" }; return names[i];
 
40346
  }
 
40347
  const void *__attr (unsigned __i) const {
 
40348
    switch (__i) { case 0: return &sons; default: return 0; }
 
40349
  }
 
40350
#line 3026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40351
};
 
40352
 
 
40353
/** \class CT_ArrayDelimiter CTree.h Puma/CTree.h
 
40354
 *  Tree node representing an array delimiter.
 
40355
 *  Example: \code [10] \endcode or \code [*] \endcode */
 
40356
 
 
40357
#line 40358 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40358
} // closed Puma
 
40359
class CCExprResolve;
 
40360
class CExprResolve;
 
40361
class WinIfExists;
 
40362
class WinImportHandler;
 
40363
class WinMacros;
 
40364
class WinAsm;
 
40365
class WinDeclSpecs;
 
40366
class WinMemberExplSpec;
 
40367
class WinTypeKeywords;
 
40368
class WinFriend;
 
40369
class ExtAC;
 
40370
class ExtACBuilderCoupling;
 
40371
class ExtACSyntaxCoupling;
 
40372
class ExtACTree;
 
40373
class ExtACKeywords;
 
40374
class ExtGnu;
 
40375
class PragmaOnceUnitState;
 
40376
class PragmaOnce;
 
40377
class CMatchSyntax;
 
40378
namespace Puma {
 
40379
 
 
40380
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40381
class CT_ArrayDelimiter : public CTree {
 
40382
#line 40383 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40383
  friend class ::CCExprResolve;
 
40384
  friend class ::CExprResolve;
 
40385
  friend class ::WinIfExists;
 
40386
  friend class ::WinImportHandler;
 
40387
  friend class ::WinMacros;
 
40388
  friend class ::WinAsm;
 
40389
  friend class ::WinDeclSpecs;
 
40390
  friend class ::WinMemberExplSpec;
 
40391
  friend class ::WinTypeKeywords;
 
40392
  friend class ::WinFriend;
 
40393
  friend class ::ExtAC;
 
40394
  friend class ::ExtACBuilderCoupling;
 
40395
  friend class ::ExtACSyntaxCoupling;
 
40396
  friend class ::ExtACTree;
 
40397
  friend class ::ExtACKeywords;
 
40398
  friend class ::ExtGnu;
 
40399
  friend class ::PragmaOnceUnitState;
 
40400
  friend class ::PragmaOnce;
 
40401
  friend class ::CMatchSyntax;
 
40402
 
 
40403
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40404
 
 
40405
  CTree *sons[4]; // star, static, quals, expr
 
40406
  bool pos0;
 
40407
 
 
40408
public:
 
40409
  /** Constructor.
 
40410
   *  \param m The operator '*'.
 
40411
   *  \param s The keyword 'static'.
 
40412
   *  \param q The const/volatile qualifier sequence. 
 
40413
   *  \param e The array size expression. 
 
40414
   *  \param p Position of keyword 'static', true means before the
 
40415
   *           qualifier sequence and false means behind it. */
 
40416
  CT_ArrayDelimiter (CTree *m, CTree *s, CTree *q, CTree *e, bool p = false) {
 
40417
    AddSon (sons[0], m); AddSon (sons[1], s); 
 
40418
    AddSon (sons[2], q); AddSon (sons[3], e); pos0 = p;
 
40419
  }
 
40420
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40421
  static const char *NodeId ();
 
40422
  /** Get the name of the node. Can be compared with NodeId(). */
 
40423
  const char *NodeName () const { return NodeId (); }
 
40424
  /** Get the number of sons. */
 
40425
  int Sons () const { return CTree::Sons (sons, 4); }
 
40426
  /** Get the n-th son.
 
40427
   *  \param n The index of the son.
 
40428
   *  \return The n-th son or NULL. */
 
40429
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
40430
  /** Get the operator '*'. */
 
40431
  CT_Token *Star () const { return (CT_Token*)sons[0]; }
 
40432
  /** Get the keyword 'static'. */
 
40433
  CT_Token *Static () const { return (CT_Token*)sons[pos0?2:1]; }
 
40434
  /** Get the const/volatile qualifier sequence. */
 
40435
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[pos0?1:2]; }
 
40436
  /** Get the array size expression. */
 
40437
  CTree *Expr () const { return sons[3]; }
 
40438
  /** Replace a son.
 
40439
   *  \param old_son The son to replace.
 
40440
   *  \param new_son The new son. */
 
40441
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40442
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
40443
  }
 
40444
public:
 
40445
  typedef AC::TL<Puma::CTree * [4],AC::TL<bool,AC::TLE > > __AttrTypes;
 
40446
  const char *__attr_name (unsigned i) const {
 
40447
    static const char *names[] = { "sons", "pos0" }; return names[i];
 
40448
  }
 
40449
  const void *__attr (unsigned __i) const {
 
40450
    switch (__i) { case 0: return &sons; case 1: return &pos0; default: return 0; }
 
40451
  }
 
40452
#line 3071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40453
};
 
40454
 
 
40455
/** \class CT_ArrayDeclarator CTree.h Puma/CTree.h
 
40456
 *  Tree node representing an array declarator.
 
40457
 *  Example: \code a[10] \endcode */
 
40458
 
 
40459
#line 40460 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40460
} // closed Puma
 
40461
class CCExprResolve;
 
40462
class CExprResolve;
 
40463
class WinIfExists;
 
40464
class WinImportHandler;
 
40465
class WinMacros;
 
40466
class WinAsm;
 
40467
class WinDeclSpecs;
 
40468
class WinMemberExplSpec;
 
40469
class WinTypeKeywords;
 
40470
class WinFriend;
 
40471
class ExtAC;
 
40472
class ExtACBuilderCoupling;
 
40473
class ExtACSyntaxCoupling;
 
40474
class ExtACTree;
 
40475
class ExtACKeywords;
 
40476
class ExtGnu;
 
40477
class PragmaOnceUnitState;
 
40478
class PragmaOnce;
 
40479
class CMatchSyntax;
 
40480
namespace Puma {
 
40481
 
 
40482
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40483
class CT_ArrayDeclarator : public CT_Declarator, public CSemValue {
 
40484
#line 40485 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40485
  friend class ::CCExprResolve;
 
40486
  friend class ::CExprResolve;
 
40487
  friend class ::WinIfExists;
 
40488
  friend class ::WinImportHandler;
 
40489
  friend class ::WinMacros;
 
40490
  friend class ::WinAsm;
 
40491
  friend class ::WinDeclSpecs;
 
40492
  friend class ::WinMemberExplSpec;
 
40493
  friend class ::WinTypeKeywords;
 
40494
  friend class ::WinFriend;
 
40495
  friend class ::ExtAC;
 
40496
  friend class ::ExtACBuilderCoupling;
 
40497
  friend class ::ExtACSyntaxCoupling;
 
40498
  friend class ::ExtACTree;
 
40499
  friend class ::ExtACKeywords;
 
40500
  friend class ::ExtGnu;
 
40501
  friend class ::PragmaOnceUnitState;
 
40502
  friend class ::PragmaOnce;
 
40503
  friend class ::CMatchSyntax;
 
40504
 
 
40505
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40506
 
 
40507
  CTree *sons[4]; // declarator, open, delim, close
 
40508
 
 
40509
public:
 
40510
  /** Constructor.
 
40511
   *  \param d The array declarator.
 
40512
   *  \param o Left bracket around the delimiter.
 
40513
   *  \param ad The array delimiter.
 
40514
   *  \param c Right bracket around the delimiter. */
 
40515
  CT_ArrayDeclarator (CTree *d, CTree *o, CTree *ad, CTree *c) {
 
40516
    AddSon (sons[0], d); AddSon (sons[1], o); 
 
40517
    AddSon (sons[2], ad); AddSon (sons[3], c); 
 
40518
  }
 
40519
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40520
  static const char *NodeId ();
 
40521
  /** Get the name of the node. Can be compared with NodeId(). */
 
40522
  const char *NodeName () const { return NodeId (); }
 
40523
  /** Get the number of sons. */
 
40524
  int Sons () const { return 4; }
 
40525
  /** Get the n-th son.
 
40526
   *  \param n The index of the son.
 
40527
   *  \return The n-th son or NULL. */
 
40528
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
40529
  /** Get the array declarator. */
 
40530
  CTree *Declarator () const { return sons[0]; }
 
40531
  /** Get the array delimiter. */
 
40532
  CT_ArrayDelimiter *Delimiter () const 
 
40533
   { return (CT_ArrayDelimiter*)sons[2]; }
 
40534
  /** Replace a son.
 
40535
   *  \param old_son The son to replace.
 
40536
   *  \param new_son The new son. */
 
40537
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40538
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
40539
  }
 
40540
  /** Get the semantic information for the type of the declared array. */
 
40541
  CTypeInfo *Type () const { return type; }
 
40542
  /** Get the semantic information for the value of the declared array. */
 
40543
  CExprValue *Value () const { return value; }
 
40544
  /** Get the semantic information object. */
 
40545
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
40546
public:
 
40547
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
40548
  const char *__attr_name (unsigned i) const {
 
40549
    static const char *names[] = { "sons" }; return names[i];
 
40550
  }
 
40551
  const void *__attr (unsigned __i) const {
 
40552
    switch (__i) { case 0: return &sons; default: return 0; }
 
40553
  }
 
40554
#line 3116 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40555
};
 
40556
 
 
40557
/** \class CT_FctDeclarator CTree.h Puma/CTree.h
 
40558
 *  Tree node representing a function declarator.
 
40559
 *  Example: \code f(int a) const \endcode */
 
40560
 
 
40561
#line 40562 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40562
} // closed Puma
 
40563
class CCExprResolve;
 
40564
class CExprResolve;
 
40565
class WinIfExists;
 
40566
class WinImportHandler;
 
40567
class WinMacros;
 
40568
class WinAsm;
 
40569
class WinDeclSpecs;
 
40570
class WinMemberExplSpec;
 
40571
class WinTypeKeywords;
 
40572
class WinFriend;
 
40573
class ExtAC;
 
40574
class ExtACBuilderCoupling;
 
40575
class ExtACSyntaxCoupling;
 
40576
class ExtACTree;
 
40577
class ExtACKeywords;
 
40578
class ExtGnu;
 
40579
class PragmaOnceUnitState;
 
40580
class PragmaOnce;
 
40581
class CMatchSyntax;
 
40582
namespace Puma {
 
40583
 
 
40584
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40585
class CT_FctDeclarator : public CT_Declarator {
 
40586
#line 40587 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40587
  friend class ::CCExprResolve;
 
40588
  friend class ::CExprResolve;
 
40589
  friend class ::WinIfExists;
 
40590
  friend class ::WinImportHandler;
 
40591
  friend class ::WinMacros;
 
40592
  friend class ::WinAsm;
 
40593
  friend class ::WinDeclSpecs;
 
40594
  friend class ::WinMemberExplSpec;
 
40595
  friend class ::WinTypeKeywords;
 
40596
  friend class ::WinFriend;
 
40597
  friend class ::ExtAC;
 
40598
  friend class ::ExtACBuilderCoupling;
 
40599
  friend class ::ExtACSyntaxCoupling;
 
40600
  friend class ::ExtACTree;
 
40601
  friend class ::ExtACKeywords;
 
40602
  friend class ::ExtGnu;
 
40603
  friend class ::PragmaOnceUnitState;
 
40604
  friend class ::PragmaOnce;
 
40605
  friend class ::CMatchSyntax;
 
40606
 
 
40607
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40608
 
 
40609
  CTree *sons[4]; // declarator, args, cv_quals, exception_specs
 
40610
 
 
40611
public:
 
40612
  /** Constructor.
 
40613
   *  \param d The function declarator.
 
40614
   *  \param args The function parameter list.
 
40615
   *  \param cv The function qualifiers.
 
40616
   *  \param es The exception specifier. */
 
40617
  CT_FctDeclarator (CTree *d, CTree *args, CTree *cv, CTree *es) {
 
40618
    AddSon (sons[0], d); AddSon (sons[1], args); 
 
40619
    AddSon (sons[2], cv); AddSon (sons[3], es); 
 
40620
  }
 
40621
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40622
  static const char *NodeId ();
 
40623
  /** Get the name of the node. Can be compared with NodeId(). */
 
40624
  const char *NodeName () const { return NodeId (); }
 
40625
  /** Get the number of sons. */
 
40626
  int Sons () const { return CTree::Sons (sons, 4); }
 
40627
  /** Get the n-th son.
 
40628
   *  \param n The index of the son.
 
40629
   *  \return The n-th son or NULL. */
 
40630
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
40631
  /** Get the function declarator. */
 
40632
  CTree *Declarator () const { return sons[0]; }
 
40633
  /** Get the function parameter list. */
 
40634
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
40635
  /** Get the function qualifier list. */
 
40636
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[2]; }
 
40637
  /** Get the exception specifier. */
 
40638
  CT_ExceptionSpec *ExceptionSpecs () const { return (CT_ExceptionSpec*)sons[3]; }
 
40639
  /** Replace a son.
 
40640
   *  \param old_son The son to replace.
 
40641
   *  \param new_son The new son. */
 
40642
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40643
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
40644
  }
 
40645
public:
 
40646
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
40647
  const char *__attr_name (unsigned i) const {
 
40648
    static const char *names[] = { "sons" }; return names[i];
 
40649
  }
 
40650
  const void *__attr (unsigned __i) const {
 
40651
    switch (__i) { case 0: return &sons; default: return 0; }
 
40652
  }
 
40653
#line 3158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40654
};
 
40655
 
 
40656
/** \class CT_RefDeclarator CTree.h Puma/CTree.h
 
40657
 *  Tree node representing a reference declarator.
 
40658
 *  Example: \code &a \endcode */
 
40659
 
 
40660
#line 40661 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40661
} // closed Puma
 
40662
class CCExprResolve;
 
40663
class CExprResolve;
 
40664
class WinIfExists;
 
40665
class WinImportHandler;
 
40666
class WinMacros;
 
40667
class WinAsm;
 
40668
class WinDeclSpecs;
 
40669
class WinMemberExplSpec;
 
40670
class WinTypeKeywords;
 
40671
class WinFriend;
 
40672
class ExtAC;
 
40673
class ExtACBuilderCoupling;
 
40674
class ExtACSyntaxCoupling;
 
40675
class ExtACTree;
 
40676
class ExtACKeywords;
 
40677
class ExtGnu;
 
40678
class PragmaOnceUnitState;
 
40679
class PragmaOnce;
 
40680
class CMatchSyntax;
 
40681
namespace Puma {
 
40682
 
 
40683
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40684
class CT_RefDeclarator : public CT_Declarator {
 
40685
#line 40686 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40686
  friend class ::CCExprResolve;
 
40687
  friend class ::CExprResolve;
 
40688
  friend class ::WinIfExists;
 
40689
  friend class ::WinImportHandler;
 
40690
  friend class ::WinMacros;
 
40691
  friend class ::WinAsm;
 
40692
  friend class ::WinDeclSpecs;
 
40693
  friend class ::WinMemberExplSpec;
 
40694
  friend class ::WinTypeKeywords;
 
40695
  friend class ::WinFriend;
 
40696
  friend class ::ExtAC;
 
40697
  friend class ::ExtACBuilderCoupling;
 
40698
  friend class ::ExtACSyntaxCoupling;
 
40699
  friend class ::ExtACTree;
 
40700
  friend class ::ExtACKeywords;
 
40701
  friend class ::ExtGnu;
 
40702
  friend class ::PragmaOnceUnitState;
 
40703
  friend class ::PragmaOnce;
 
40704
  friend class ::CMatchSyntax;
 
40705
 
 
40706
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40707
 
 
40708
  CTree *sons[2]; // ref, declarator
 
40709
 
 
40710
public:
 
40711
  /** Constructor.
 
40712
   *  \param r The reference operator '&'.
 
40713
   *  \param d The declarator. */
 
40714
  CT_RefDeclarator (CTree *r, CTree *d) { AddSon (sons[0], r); AddSon (sons[1], d); }
 
40715
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40716
  static const char *NodeId ();
 
40717
  /** Get the name of the node. Can be compared with NodeId(). */
 
40718
  const char *NodeName () const { return NodeId (); }
 
40719
  /** Get the number of sons. */
 
40720
  int Sons () const { return 2; }
 
40721
  /** Get the n-th son.
 
40722
   *  \param n The index of the son.
 
40723
   *  \return The n-th son or NULL. */
 
40724
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
40725
  /** Get the declarator. */
 
40726
  CTree *Declarator () const { return sons[1]; }
 
40727
  /** Replace a son.
 
40728
   *  \param old_son The son to replace.
 
40729
   *  \param new_son The new son. */
 
40730
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
40731
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
40732
  }
 
40733
public:
 
40734
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
40735
  const char *__attr_name (unsigned i) const {
 
40736
    static const char *names[] = { "sons" }; return names[i];
 
40737
  }
 
40738
  const void *__attr (unsigned __i) const {
 
40739
    switch (__i) { case 0: return &sons; default: return 0; }
 
40740
  }
 
40741
#line 3189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40742
};
 
40743
 
 
40744
/** \class CT_PtrDeclarator CTree.h Puma/CTree.h
 
40745
 *  Tree node representing a pointer declarator.
 
40746
 *  Example: \code *a \endcode */
 
40747
 
 
40748
#line 40749 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40749
} // closed Puma
 
40750
class CCExprResolve;
 
40751
class CExprResolve;
 
40752
class WinIfExists;
 
40753
class WinImportHandler;
 
40754
class WinMacros;
 
40755
class WinAsm;
 
40756
class WinDeclSpecs;
 
40757
class WinMemberExplSpec;
 
40758
class WinTypeKeywords;
 
40759
class WinFriend;
 
40760
class ExtAC;
 
40761
class ExtACBuilderCoupling;
 
40762
class ExtACSyntaxCoupling;
 
40763
class ExtACTree;
 
40764
class ExtACKeywords;
 
40765
class ExtGnu;
 
40766
class PragmaOnceUnitState;
 
40767
class PragmaOnce;
 
40768
class CMatchSyntax;
 
40769
namespace Puma {
 
40770
 
 
40771
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40772
class CT_PtrDeclarator : public CT_Declarator {
 
40773
#line 40774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40774
  friend class ::CCExprResolve;
 
40775
  friend class ::CExprResolve;
 
40776
  friend class ::WinIfExists;
 
40777
  friend class ::WinImportHandler;
 
40778
  friend class ::WinMacros;
 
40779
  friend class ::WinAsm;
 
40780
  friend class ::WinDeclSpecs;
 
40781
  friend class ::WinMemberExplSpec;
 
40782
  friend class ::WinTypeKeywords;
 
40783
  friend class ::WinFriend;
 
40784
  friend class ::ExtAC;
 
40785
  friend class ::ExtACBuilderCoupling;
 
40786
  friend class ::ExtACSyntaxCoupling;
 
40787
  friend class ::ExtACTree;
 
40788
  friend class ::ExtACKeywords;
 
40789
  friend class ::ExtGnu;
 
40790
  friend class ::PragmaOnceUnitState;
 
40791
  friend class ::PragmaOnce;
 
40792
  friend class ::CMatchSyntax;
 
40793
 
 
40794
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40795
 
 
40796
  CTree *sons[3]; // ptr, cv_quals, declarator
 
40797
 
 
40798
public:
 
40799
  /** Constructor.
 
40800
   *  \param p The pointer operator '*'.
 
40801
   *  \param c The const/volatile pointer qualifier sequence.
 
40802
   *  \param d The declarator. */
 
40803
  CT_PtrDeclarator (CTree *p, CTree *c, CTree *d) {
 
40804
    AddSon (sons[0], p); AddSon (sons[1], c); AddSon (sons[2], d); 
 
40805
  }
 
40806
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40807
  static const char *NodeId ();
 
40808
  /** Get the name of the node. Can be compared with NodeId(). */
 
40809
  const char *NodeName () const { return NodeId (); }
 
40810
  /** Get the number of sons. */
 
40811
  int Sons () const { return CTree::Sons (sons, 3); }
 
40812
  /** Get the n-th son.
 
40813
   *  \param n The index of the son.
 
40814
   *  \return The n-th son or NULL. */
 
40815
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
40816
  /** Get the declarator. */
 
40817
  CTree *Declarator () const { return sons[2]; }
 
40818
  /** Get the const/volatile qualifier sequence. */
 
40819
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[1]; }
 
40820
  /** Replace a son.
 
40821
   *  \param old_son The son to replace.
 
40822
   *  \param new_son The new son. */
 
40823
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40824
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
40825
  }
 
40826
public:
 
40827
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
40828
  const char *__attr_name (unsigned i) const {
 
40829
    static const char *names[] = { "sons" }; return names[i];
 
40830
  }
 
40831
  const void *__attr (unsigned __i) const {
 
40832
    switch (__i) { case 0: return &sons; default: return 0; }
 
40833
  }
 
40834
#line 3225 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40835
};
 
40836
 
 
40837
/** \class CT_MembPtrDeclarator CTree.h Puma/CTree.h
 
40838
 *  Tree node representing a member pointer declarator.
 
40839
 *  Example: \code *X::a \endcode */
 
40840
 
 
40841
#line 40842 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40842
} // closed Puma
 
40843
class CCExprResolve;
 
40844
class CExprResolve;
 
40845
class WinIfExists;
 
40846
class WinImportHandler;
 
40847
class WinMacros;
 
40848
class WinAsm;
 
40849
class WinDeclSpecs;
 
40850
class WinMemberExplSpec;
 
40851
class WinTypeKeywords;
 
40852
class WinFriend;
 
40853
class ExtAC;
 
40854
class ExtACBuilderCoupling;
 
40855
class ExtACSyntaxCoupling;
 
40856
class ExtACTree;
 
40857
class ExtACKeywords;
 
40858
class ExtGnu;
 
40859
class PragmaOnceUnitState;
 
40860
class PragmaOnce;
 
40861
class CMatchSyntax;
 
40862
namespace Puma {
 
40863
 
 
40864
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40865
class CT_MembPtrDeclarator : public CT_Declarator {
 
40866
#line 40867 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40867
  friend class ::CCExprResolve;
 
40868
  friend class ::CExprResolve;
 
40869
  friend class ::WinIfExists;
 
40870
  friend class ::WinImportHandler;
 
40871
  friend class ::WinMacros;
 
40872
  friend class ::WinAsm;
 
40873
  friend class ::WinDeclSpecs;
 
40874
  friend class ::WinMemberExplSpec;
 
40875
  friend class ::WinTypeKeywords;
 
40876
  friend class ::WinFriend;
 
40877
  friend class ::ExtAC;
 
40878
  friend class ::ExtACBuilderCoupling;
 
40879
  friend class ::ExtACSyntaxCoupling;
 
40880
  friend class ::ExtACTree;
 
40881
  friend class ::ExtACKeywords;
 
40882
  friend class ::ExtGnu;
 
40883
  friend class ::PragmaOnceUnitState;
 
40884
  friend class ::PragmaOnce;
 
40885
  friend class ::CMatchSyntax;
 
40886
 
 
40887
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40888
 
 
40889
  CTree *sons[5]; // class, colon, ptr, cv_quals, declarator
 
40890
 
 
40891
public:
 
40892
  /** Constructor.
 
40893
   *  \param c The class name.
 
40894
   *  \param cc The scope operator '::'.
 
40895
   *  \param p The name of the pointer.
 
40896
   *  \param q The const/volatile pointer qualifier sequence.
 
40897
   *  \param d The declarator. */
 
40898
  CT_MembPtrDeclarator (CTree *c, CTree *cc, CTree *p, CTree *q, CTree *d) {
 
40899
    AddSon (sons[0], c); AddSon (sons[1], cc); AddSon (sons[2], p); 
 
40900
    AddSon (sons[3], q); AddSon (sons[4], d); 
 
40901
  }
 
40902
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40903
  static const char *NodeId ();
 
40904
  /** Get the name of the node. Can be compared with NodeId(). */
 
40905
  const char *NodeName () const { return NodeId (); }
 
40906
  /** Get the number of sons. */
 
40907
  int Sons () const { return CTree::Sons (sons, 5); }
 
40908
  /** Get the n-th son.
 
40909
   *  \param n The index of the son.
 
40910
   *  \return The n-th son or NULL. */
 
40911
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
40912
  /** Get the name of the declared pointer. */
 
40913
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
40914
  /** Get the declarator. */
 
40915
  CTree *Declarator () const { return sons[4]; }
 
40916
  /** Get the const/volatile qualifier sequence. */
 
40917
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[3]; }
 
40918
  /** Replace a son.
 
40919
   *  \param old_son The son to replace.
 
40920
   *  \param new_son The new son. */
 
40921
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40922
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
40923
  }
 
40924
public:
 
40925
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
40926
  const char *__attr_name (unsigned i) const {
 
40927
    static const char *names[] = { "sons" }; return names[i];
 
40928
  }
 
40929
  const void *__attr (unsigned __i) const {
 
40930
    switch (__i) { case 0: return &sons; default: return 0; }
 
40931
  }
 
40932
#line 3266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40933
};
 
40934
 
 
40935
/** \class CT_BitFieldDeclarator CTree.h Puma/CTree.h
 
40936
 *  Tree node representing a bit-field declarator.
 
40937
 *  Example: \code a : 2 \endcode */
 
40938
 
 
40939
#line 40940 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40940
} // closed Puma
 
40941
class CCExprResolve;
 
40942
class CExprResolve;
 
40943
class WinIfExists;
 
40944
class WinImportHandler;
 
40945
class WinMacros;
 
40946
class WinAsm;
 
40947
class WinDeclSpecs;
 
40948
class WinMemberExplSpec;
 
40949
class WinTypeKeywords;
 
40950
class WinFriend;
 
40951
class ExtAC;
 
40952
class ExtACBuilderCoupling;
 
40953
class ExtACSyntaxCoupling;
 
40954
class ExtACTree;
 
40955
class ExtACKeywords;
 
40956
class ExtGnu;
 
40957
class PragmaOnceUnitState;
 
40958
class PragmaOnce;
 
40959
class CMatchSyntax;
 
40960
namespace Puma {
 
40961
 
 
40962
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40963
class CT_BitFieldDeclarator : public CT_Declarator, public CSemObject {
 
40964
#line 40965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
40965
  friend class ::CCExprResolve;
 
40966
  friend class ::CExprResolve;
 
40967
  friend class ::WinIfExists;
 
40968
  friend class ::WinImportHandler;
 
40969
  friend class ::WinMacros;
 
40970
  friend class ::WinAsm;
 
40971
  friend class ::WinDeclSpecs;
 
40972
  friend class ::WinMemberExplSpec;
 
40973
  friend class ::WinTypeKeywords;
 
40974
  friend class ::WinFriend;
 
40975
  friend class ::ExtAC;
 
40976
  friend class ::ExtACBuilderCoupling;
 
40977
  friend class ::ExtACSyntaxCoupling;
 
40978
  friend class ::ExtACTree;
 
40979
  friend class ::ExtACKeywords;
 
40980
  friend class ::ExtGnu;
 
40981
  friend class ::PragmaOnceUnitState;
 
40982
  friend class ::PragmaOnce;
 
40983
  friend class ::CMatchSyntax;
 
40984
 
 
40985
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40986
 
 
40987
  CTree *sons[3]; // declarator, colon, expr
 
40988
 
 
40989
public:
 
40990
  /** Constructor.
 
40991
   *  \param d The declarator.
 
40992
   *  \param c The colon between the declarator and the bit count.
 
40993
   *  \param e The expression specifying the number of bits. */
 
40994
  CT_BitFieldDeclarator (CTree *d, CTree *c, CTree *e = 0) {
 
40995
    AddSon (sons[0], d); AddSon (sons[1], c); AddSon (sons[2], e); 
 
40996
  }
 
40997
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40998
  static const char *NodeId ();
 
40999
  /** Get the name of the node. Can be compared with NodeId(). */
 
41000
  const char *NodeName () const { return NodeId (); }
 
41001
  /** Get the number of sons. */
 
41002
  int Sons () const { return CTree::Sons (sons, 3); }
 
41003
  /** Get the n-th son.
 
41004
   *  \param n The index of the son.
 
41005
   *  \return The n-th son or NULL. */
 
41006
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
41007
  /** Get the declarator. */
 
41008
  CTree *Declarator () const { return sons[0]; }
 
41009
  /** Get the expression specifying the number of bits. */
 
41010
  CTree *Expr () const { return sons[2]; }
 
41011
  /** Set the expression specifying the number of bits. */
 
41012
  void FieldSize (CTree *s) { AddSon (sons[2], s); }
 
41013
  /** Get the semantic information about the declared bit-field. */
 
41014
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
41015
  /** Replace a son.
 
41016
   *  \param old_son The son to replace.
 
41017
   *  \param new_son The new son. */
 
41018
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41019
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
41020
  }
 
41021
public:
 
41022
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
41023
  const char *__attr_name (unsigned i) const {
 
41024
    static const char *names[] = { "sons" }; return names[i];
 
41025
  }
 
41026
  const void *__attr (unsigned __i) const {
 
41027
    switch (__i) { case 0: return &sons; default: return 0; }
 
41028
  }
 
41029
#line 3306 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41030
};
 
41031
 
 
41032
/*****************************************************************************/
 
41033
/*                                                                           */
 
41034
/*                              Statements                                   */
 
41035
/*                                                                           */
 
41036
/*****************************************************************************/
 
41037
 
 
41038
/** \class CT_Statement CTree.h Puma/CTree.h
 
41039
 *  Base class for all tree nodes representing statements. */
 
41040
 
 
41041
#line 41042 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41042
} // closed Puma
 
41043
class CCExprResolve;
 
41044
class CExprResolve;
 
41045
class WinIfExists;
 
41046
class WinImportHandler;
 
41047
class WinMacros;
 
41048
class WinAsm;
 
41049
class WinDeclSpecs;
 
41050
class WinMemberExplSpec;
 
41051
class WinTypeKeywords;
 
41052
class WinFriend;
 
41053
class ExtAC;
 
41054
class ExtACBuilderCoupling;
 
41055
class ExtACSyntaxCoupling;
 
41056
class ExtACTree;
 
41057
class ExtACKeywords;
 
41058
class ExtGnu;
 
41059
class PragmaOnceUnitState;
 
41060
class PragmaOnce;
 
41061
class CMatchSyntax;
 
41062
namespace Puma {
 
41063
 
 
41064
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41065
class CT_Statement : public CTree {
 
41066
#line 41067 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41067
  friend class ::CCExprResolve;
 
41068
  friend class ::CExprResolve;
 
41069
  friend class ::WinIfExists;
 
41070
  friend class ::WinImportHandler;
 
41071
  friend class ::WinMacros;
 
41072
  friend class ::WinAsm;
 
41073
  friend class ::WinDeclSpecs;
 
41074
  friend class ::WinMemberExplSpec;
 
41075
  friend class ::WinTypeKeywords;
 
41076
  friend class ::WinFriend;
 
41077
  friend class ::ExtAC;
 
41078
  friend class ::ExtACBuilderCoupling;
 
41079
  friend class ::ExtACSyntaxCoupling;
 
41080
  friend class ::ExtACTree;
 
41081
  friend class ::ExtACKeywords;
 
41082
  friend class ::ExtGnu;
 
41083
  friend class ::PragmaOnceUnitState;
 
41084
  friend class ::PragmaOnce;
 
41085
  friend class ::CMatchSyntax;
 
41086
 
 
41087
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41088
 
 
41089
protected:
 
41090
  /** Constructor. */
 
41091
  CT_Statement () {}
 
41092
  /** Get this. */
 
41093
  virtual CT_Statement *IsStatement () { return this; }
 
41094
public:
 
41095
  typedef AC::TLE __AttrTypes;
 
41096
  const char *__attr_name (unsigned i) const { return 0; }
 
41097
  const void *__attr (unsigned __i) const { return 0; }
 
41098
#line 3322 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41099
};
 
41100
 
 
41101
/** \class CT_LabelStmt CTree.h Puma/CTree.h
 
41102
 *  Tree node representing a label statement.
 
41103
 *  Example: \code incr_a: a++; \endcode */
 
41104
 
 
41105
#line 41106 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41106
} // closed Puma
 
41107
class CCExprResolve;
 
41108
class CExprResolve;
 
41109
class WinIfExists;
 
41110
class WinImportHandler;
 
41111
class WinMacros;
 
41112
class WinAsm;
 
41113
class WinDeclSpecs;
 
41114
class WinMemberExplSpec;
 
41115
class WinTypeKeywords;
 
41116
class WinFriend;
 
41117
class ExtAC;
 
41118
class ExtACBuilderCoupling;
 
41119
class ExtACSyntaxCoupling;
 
41120
class ExtACTree;
 
41121
class ExtACKeywords;
 
41122
class ExtGnu;
 
41123
class PragmaOnceUnitState;
 
41124
class PragmaOnce;
 
41125
class CMatchSyntax;
 
41126
namespace Puma {
 
41127
 
 
41128
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41129
class CT_LabelStmt : public CT_Statement {
 
41130
#line 41131 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41131
  friend class ::CCExprResolve;
 
41132
  friend class ::CExprResolve;
 
41133
  friend class ::WinIfExists;
 
41134
  friend class ::WinImportHandler;
 
41135
  friend class ::WinMacros;
 
41136
  friend class ::WinAsm;
 
41137
  friend class ::WinDeclSpecs;
 
41138
  friend class ::WinMemberExplSpec;
 
41139
  friend class ::WinTypeKeywords;
 
41140
  friend class ::WinFriend;
 
41141
  friend class ::ExtAC;
 
41142
  friend class ::ExtACBuilderCoupling;
 
41143
  friend class ::ExtACSyntaxCoupling;
 
41144
  friend class ::ExtACTree;
 
41145
  friend class ::ExtACKeywords;
 
41146
  friend class ::ExtGnu;
 
41147
  friend class ::PragmaOnceUnitState;
 
41148
  friend class ::PragmaOnce;
 
41149
  friend class ::CMatchSyntax;
 
41150
 
 
41151
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41152
 
 
41153
  CTree *sons[3]; // id, colon, stmt
 
41154
 
 
41155
public:
 
41156
  /** Constructor.
 
41157
   *  \param id The name of the label.
 
41158
   *  \param c The colon behind the label.
 
41159
   *  \param stmt The statement following the label. */
 
41160
  CT_LabelStmt (CTree *id, CTree *c, CTree *stmt) {
 
41161
    AddSon (sons[0], id); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
41162
  }
 
41163
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41164
  static const char *NodeId ();
 
41165
  /** Get the name of the node. Can be compared with NodeId(). */
 
41166
  const char *NodeName () const { return NodeId (); }
 
41167
  /** Get the number of sons. */
 
41168
  int Sons () const { return 3; }
 
41169
  /** Get the n-th son.
 
41170
   *  \param n The index of the son.
 
41171
   *  \return The n-th son or NULL. */
 
41172
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
41173
  /** Get the statement. */
 
41174
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
41175
  /** Get the name of the label. */
 
41176
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[0]; }
 
41177
  /** Replace a son.
 
41178
   *  \param old_son The son to replace.
 
41179
   *  \param new_son The new son. */
 
41180
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41181
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
41182
  }
 
41183
public:
 
41184
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
41185
  const char *__attr_name (unsigned i) const {
 
41186
    static const char *names[] = { "sons" }; return names[i];
 
41187
  }
 
41188
  const void *__attr (unsigned __i) const {
 
41189
    switch (__i) { case 0: return &sons; default: return 0; }
 
41190
  }
 
41191
#line 3358 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41192
};
 
41193
 
 
41194
/** \class CT_DefaultStmt CTree.h Puma/CTree.h
 
41195
 *  Tree node representing a default statement of a switch statement.
 
41196
 *  Example: \code default: break; \endcode */
 
41197
 
 
41198
#line 41199 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41199
} // closed Puma
 
41200
class CCExprResolve;
 
41201
class CExprResolve;
 
41202
class WinIfExists;
 
41203
class WinImportHandler;
 
41204
class WinMacros;
 
41205
class WinAsm;
 
41206
class WinDeclSpecs;
 
41207
class WinMemberExplSpec;
 
41208
class WinTypeKeywords;
 
41209
class WinFriend;
 
41210
class ExtAC;
 
41211
class ExtACBuilderCoupling;
 
41212
class ExtACSyntaxCoupling;
 
41213
class ExtACTree;
 
41214
class ExtACKeywords;
 
41215
class ExtGnu;
 
41216
class PragmaOnceUnitState;
 
41217
class PragmaOnce;
 
41218
class CMatchSyntax;
 
41219
namespace Puma {
 
41220
 
 
41221
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41222
class CT_DefaultStmt : public CT_Statement {
 
41223
#line 41224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41224
  friend class ::CCExprResolve;
 
41225
  friend class ::CExprResolve;
 
41226
  friend class ::WinIfExists;
 
41227
  friend class ::WinImportHandler;
 
41228
  friend class ::WinMacros;
 
41229
  friend class ::WinAsm;
 
41230
  friend class ::WinDeclSpecs;
 
41231
  friend class ::WinMemberExplSpec;
 
41232
  friend class ::WinTypeKeywords;
 
41233
  friend class ::WinFriend;
 
41234
  friend class ::ExtAC;
 
41235
  friend class ::ExtACBuilderCoupling;
 
41236
  friend class ::ExtACSyntaxCoupling;
 
41237
  friend class ::ExtACTree;
 
41238
  friend class ::ExtACKeywords;
 
41239
  friend class ::ExtGnu;
 
41240
  friend class ::PragmaOnceUnitState;
 
41241
  friend class ::PragmaOnce;
 
41242
  friend class ::CMatchSyntax;
 
41243
 
 
41244
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41245
 
 
41246
  CTree *sons[3]; // keyword, colon, stmt
 
41247
 
 
41248
public:
 
41249
  /** Constructor.
 
41250
   *  \param kw The keyword 'default'.
 
41251
   *  \param c The colon behind the keyword.
 
41252
   *  \param stmt The statement of the default case. */
 
41253
  CT_DefaultStmt (CTree *kw, CTree *c, CTree *stmt) {
 
41254
    AddSon (sons[0], kw); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
41255
  }
 
41256
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41257
  static const char *NodeId ();
 
41258
  /** Get the name of the node. Can be compared with NodeId(). */
 
41259
  const char *NodeName () const { return NodeId (); }
 
41260
  /** Get the number of sons. */
 
41261
  int Sons () const { return 3; }
 
41262
  /** Get the n-th son.
 
41263
   *  \param n The index of the son.
 
41264
   *  \return The n-th son or NULL. */
 
41265
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
41266
  /** Get the statement. */
 
41267
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
41268
  /** Replace a son.
 
41269
   *  \param old_son The son to replace.
 
41270
   *  \param new_son The new son. */
 
41271
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41272
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
41273
  }
 
41274
public:
 
41275
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
41276
  const char *__attr_name (unsigned i) const {
 
41277
    static const char *names[] = { "sons" }; return names[i];
 
41278
  }
 
41279
  const void *__attr (unsigned __i) const {
 
41280
    switch (__i) { case 0: return &sons; default: return 0; }
 
41281
  }
 
41282
#line 3392 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41283
};
 
41284
 
 
41285
/** \class CT_TryStmt CTree.h Puma/CTree.h
 
41286
 *  Tree node representing a try-catch statement.
 
41287
 *  Example: \code try { f(); } catch (...) {} \endcode */
 
41288
 
 
41289
#line 41290 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41290
} // closed Puma
 
41291
class CCExprResolve;
 
41292
class CExprResolve;
 
41293
class WinIfExists;
 
41294
class WinImportHandler;
 
41295
class WinMacros;
 
41296
class WinAsm;
 
41297
class WinDeclSpecs;
 
41298
class WinMemberExplSpec;
 
41299
class WinTypeKeywords;
 
41300
class WinFriend;
 
41301
class ExtAC;
 
41302
class ExtACBuilderCoupling;
 
41303
class ExtACSyntaxCoupling;
 
41304
class ExtACTree;
 
41305
class ExtACKeywords;
 
41306
class ExtGnu;
 
41307
class PragmaOnceUnitState;
 
41308
class PragmaOnce;
 
41309
class CMatchSyntax;
 
41310
namespace Puma {
 
41311
 
 
41312
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41313
class CT_TryStmt : public CT_Statement {
 
41314
#line 41315 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41315
  friend class ::CCExprResolve;
 
41316
  friend class ::CExprResolve;
 
41317
  friend class ::WinIfExists;
 
41318
  friend class ::WinImportHandler;
 
41319
  friend class ::WinMacros;
 
41320
  friend class ::WinAsm;
 
41321
  friend class ::WinDeclSpecs;
 
41322
  friend class ::WinMemberExplSpec;
 
41323
  friend class ::WinTypeKeywords;
 
41324
  friend class ::WinFriend;
 
41325
  friend class ::ExtAC;
 
41326
  friend class ::ExtACBuilderCoupling;
 
41327
  friend class ::ExtACSyntaxCoupling;
 
41328
  friend class ::ExtACTree;
 
41329
  friend class ::ExtACKeywords;
 
41330
  friend class ::ExtGnu;
 
41331
  friend class ::PragmaOnceUnitState;
 
41332
  friend class ::PragmaOnce;
 
41333
  friend class ::CMatchSyntax;
 
41334
 
 
41335
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41336
 
 
41337
  CTree *sons[3]; // try, stmt, handlers
 
41338
 
 
41339
public:
 
41340
  /** Constructor.
 
41341
   *  \param t The keyword 'try'.
 
41342
   *  \param s The statement enclosed in the try-catch block.
 
41343
   *  \param h The exception handler sequence. */
 
41344
  CT_TryStmt (CTree *t, CTree *s, CTree *h) {
 
41345
    AddSon (sons[0], t); AddSon (sons[1], s); AddSon (sons[2], h); 
 
41346
  }
 
41347
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41348
  static const char *NodeId ();
 
41349
  /** Get the name of the node. Can be compared with NodeId(). */
 
41350
  const char *NodeName () const { return NodeId (); }
 
41351
  /** Get the number of sons. */
 
41352
  int Sons () const { return 3; }
 
41353
  /** Get the n-th son.
 
41354
   *  \param n The index of the son.
 
41355
   *  \return The n-th son or NULL. */
 
41356
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
41357
  /** Get the enclosed statement. */
 
41358
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
41359
  /** Get the exception handler sequence. */
 
41360
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[2]; }
 
41361
  /** Replace a son.
 
41362
   *  \param old_son The son to replace.
 
41363
   *  \param new_son The new son. */
 
41364
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41365
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
41366
  }
 
41367
public:
 
41368
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
41369
  const char *__attr_name (unsigned i) const {
 
41370
    static const char *names[] = { "sons" }; return names[i];
 
41371
  }
 
41372
  const void *__attr (unsigned __i) const {
 
41373
    switch (__i) { case 0: return &sons; default: return 0; }
 
41374
  }
 
41375
#line 3428 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41376
};
 
41377
 
 
41378
/** \class CT_CaseStmt CTree.h Puma/CTree.h
 
41379
 *  Tree node representing a case statement.
 
41380
 *  Example: \code case 42: a=42; \endcode */
 
41381
 
 
41382
#line 41383 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41383
} // closed Puma
 
41384
class CCExprResolve;
 
41385
class CExprResolve;
 
41386
class WinIfExists;
 
41387
class WinImportHandler;
 
41388
class WinMacros;
 
41389
class WinAsm;
 
41390
class WinDeclSpecs;
 
41391
class WinMemberExplSpec;
 
41392
class WinTypeKeywords;
 
41393
class WinFriend;
 
41394
class ExtAC;
 
41395
class ExtACBuilderCoupling;
 
41396
class ExtACSyntaxCoupling;
 
41397
class ExtACTree;
 
41398
class ExtACKeywords;
 
41399
class ExtGnu;
 
41400
class PragmaOnceUnitState;
 
41401
class PragmaOnce;
 
41402
class CMatchSyntax;
 
41403
namespace Puma {
 
41404
 
 
41405
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41406
class CT_CaseStmt : public CT_Statement {
 
41407
#line 41408 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41408
  friend class ::CCExprResolve;
 
41409
  friend class ::CExprResolve;
 
41410
  friend class ::WinIfExists;
 
41411
  friend class ::WinImportHandler;
 
41412
  friend class ::WinMacros;
 
41413
  friend class ::WinAsm;
 
41414
  friend class ::WinDeclSpecs;
 
41415
  friend class ::WinMemberExplSpec;
 
41416
  friend class ::WinTypeKeywords;
 
41417
  friend class ::WinFriend;
 
41418
  friend class ::ExtAC;
 
41419
  friend class ::ExtACBuilderCoupling;
 
41420
  friend class ::ExtACSyntaxCoupling;
 
41421
  friend class ::ExtACTree;
 
41422
  friend class ::ExtACKeywords;
 
41423
  friend class ::ExtGnu;
 
41424
  friend class ::PragmaOnceUnitState;
 
41425
  friend class ::PragmaOnce;
 
41426
  friend class ::CMatchSyntax;
 
41427
 
 
41428
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41429
 
 
41430
  CTree *sons[4]; // keyword, expr, colon, stmt
 
41431
 
 
41432
public:
 
41433
  /** Constructor.
 
41434
   *  \param kw The keyword 'case'.
 
41435
   *  \param expr The constant expression specifying the case value.
 
41436
   *  \param c The colon.
 
41437
   *  \param stmt The statement of the case. */
 
41438
  CT_CaseStmt (CTree *kw, CTree *expr, CTree *c, CTree *stmt) {
 
41439
    AddSon (sons[0], kw); AddSon (sons[1], expr); 
 
41440
    AddSon (sons[2], c); AddSon (sons[3], stmt); 
 
41441
  }
 
41442
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41443
  static const char *NodeId ();
 
41444
  /** Get the name of the node. Can be compared with NodeId(). */
 
41445
  const char *NodeName () const { return NodeId (); }
 
41446
  /** Get the number of sons. */
 
41447
  int Sons () const { return 4; }
 
41448
  /** Get the n-th son.
 
41449
   *  \param n The index of the son.
 
41450
   *  \return The n-th son or NULL. */
 
41451
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
41452
  /** Get the statement. */
 
41453
  CT_Statement *Statement () const { return (CT_Statement*)sons[3]; }
 
41454
  /** Get the expression specifying the case value. */
 
41455
  CTree *Expr () const { return sons[1]; }
 
41456
  /** Replace a son.
 
41457
   *  \param old_son The son to replace.
 
41458
   *  \param new_son The new son. */
 
41459
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41460
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
41461
  }
 
41462
public:
 
41463
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
41464
  const char *__attr_name (unsigned i) const {
 
41465
    static const char *names[] = { "sons" }; return names[i];
 
41466
  }
 
41467
  const void *__attr (unsigned __i) const {
 
41468
    switch (__i) { case 0: return &sons; default: return 0; }
 
41469
  }
 
41470
#line 3466 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41471
};
 
41472
 
 
41473
/** \class CT_ExprStmt CTree.h Puma/CTree.h
 
41474
 *  Tree node representing an expression statement.
 
41475
 *  Example: \code a+b; \endcode */
 
41476
 
 
41477
#line 41478 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41478
} // closed Puma
 
41479
class CCExprResolve;
 
41480
class CExprResolve;
 
41481
class WinIfExists;
 
41482
class WinImportHandler;
 
41483
class WinMacros;
 
41484
class WinAsm;
 
41485
class WinDeclSpecs;
 
41486
class WinMemberExplSpec;
 
41487
class WinTypeKeywords;
 
41488
class WinFriend;
 
41489
class ExtAC;
 
41490
class ExtACBuilderCoupling;
 
41491
class ExtACSyntaxCoupling;
 
41492
class ExtACTree;
 
41493
class ExtACKeywords;
 
41494
class ExtGnu;
 
41495
class PragmaOnceUnitState;
 
41496
class PragmaOnce;
 
41497
class CMatchSyntax;
 
41498
namespace Puma {
 
41499
 
 
41500
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41501
class CT_ExprStmt : public CT_Statement {
 
41502
#line 41503 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41503
  friend class ::CCExprResolve;
 
41504
  friend class ::CExprResolve;
 
41505
  friend class ::WinIfExists;
 
41506
  friend class ::WinImportHandler;
 
41507
  friend class ::WinMacros;
 
41508
  friend class ::WinAsm;
 
41509
  friend class ::WinDeclSpecs;
 
41510
  friend class ::WinMemberExplSpec;
 
41511
  friend class ::WinTypeKeywords;
 
41512
  friend class ::WinFriend;
 
41513
  friend class ::ExtAC;
 
41514
  friend class ::ExtACBuilderCoupling;
 
41515
  friend class ::ExtACSyntaxCoupling;
 
41516
  friend class ::ExtACTree;
 
41517
  friend class ::ExtACKeywords;
 
41518
  friend class ::ExtGnu;
 
41519
  friend class ::PragmaOnceUnitState;
 
41520
  friend class ::PragmaOnce;
 
41521
  friend class ::CMatchSyntax;
 
41522
 
 
41523
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41524
 
 
41525
  CTree *sons[2]; // expr, semi_colon
 
41526
 
 
41527
public:
 
41528
  /** Constructor.
 
41529
   *  \param expr The expression.
 
41530
   *  \param sc The trailing semi-colon. */
 
41531
  CT_ExprStmt (CTree *expr, CTree *sc) { AddSon (sons[0], expr); AddSon (sons[1], sc); }
 
41532
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41533
  static const char *NodeId ();
 
41534
  /** Get the name of the node. Can be compared with NodeId(). */
 
41535
  const char *NodeName () const { return NodeId (); }
 
41536
  /** Get the number of sons. */
 
41537
  int Sons () const { return CTree::Sons (sons, 2); }
 
41538
  /** Get the n-th son.
 
41539
   *  \param n The index of the son.
 
41540
   *  \return The n-th son or NULL. */
 
41541
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
41542
  /** Get the expression. */
 
41543
  CTree *Expr () const { return sons[0]; }
 
41544
  /** Replace a son.
 
41545
   *  \param old_son The son to replace.
 
41546
   *  \param new_son The new son. */
 
41547
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41548
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
41549
  }
 
41550
public:
 
41551
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
41552
  const char *__attr_name (unsigned i) const {
 
41553
    static const char *names[] = { "sons" }; return names[i];
 
41554
  }
 
41555
  const void *__attr (unsigned __i) const {
 
41556
    switch (__i) { case 0: return &sons; default: return 0; }
 
41557
  }
 
41558
#line 3497 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41559
};
 
41560
 
 
41561
/** \class CT_DeclStmt CTree.h Puma/CTree.h
 
41562
 *  Tree node representing a declaration statement.
 
41563
 *  Example: \code int i = 0; \endcode */
 
41564
 
 
41565
#line 41566 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41566
} // closed Puma
 
41567
class CCExprResolve;
 
41568
class CExprResolve;
 
41569
class WinIfExists;
 
41570
class WinImportHandler;
 
41571
class WinMacros;
 
41572
class WinAsm;
 
41573
class WinDeclSpecs;
 
41574
class WinMemberExplSpec;
 
41575
class WinTypeKeywords;
 
41576
class WinFriend;
 
41577
class ExtAC;
 
41578
class ExtACBuilderCoupling;
 
41579
class ExtACSyntaxCoupling;
 
41580
class ExtACTree;
 
41581
class ExtACKeywords;
 
41582
class ExtGnu;
 
41583
class PragmaOnceUnitState;
 
41584
class PragmaOnce;
 
41585
class CMatchSyntax;
 
41586
namespace Puma {
 
41587
 
 
41588
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41589
class CT_DeclStmt : public CT_Statement {
 
41590
#line 41591 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41591
  friend class ::CCExprResolve;
 
41592
  friend class ::CExprResolve;
 
41593
  friend class ::WinIfExists;
 
41594
  friend class ::WinImportHandler;
 
41595
  friend class ::WinMacros;
 
41596
  friend class ::WinAsm;
 
41597
  friend class ::WinDeclSpecs;
 
41598
  friend class ::WinMemberExplSpec;
 
41599
  friend class ::WinTypeKeywords;
 
41600
  friend class ::WinFriend;
 
41601
  friend class ::ExtAC;
 
41602
  friend class ::ExtACBuilderCoupling;
 
41603
  friend class ::ExtACSyntaxCoupling;
 
41604
  friend class ::ExtACTree;
 
41605
  friend class ::ExtACKeywords;
 
41606
  friend class ::ExtGnu;
 
41607
  friend class ::PragmaOnceUnitState;
 
41608
  friend class ::PragmaOnce;
 
41609
  friend class ::CMatchSyntax;
 
41610
 
 
41611
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41612
 
 
41613
  CTree *_decl;
 
41614
 
 
41615
public:
 
41616
  /** Constructor.
 
41617
   *  \param decl The declaration. */
 
41618
  CT_DeclStmt (CTree *decl) { AddSon (_decl, decl); }
 
41619
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41620
  static const char *NodeId ();
 
41621
  /** Get the name of the node. Can be compared with NodeId(). */
 
41622
  const char *NodeName () const { return NodeId (); }
 
41623
  /** Get the number of sons. */
 
41624
  int Sons () const { return 1; }
 
41625
  /** Get the n-th son.
 
41626
   *  \param n The index of the son.
 
41627
   *  \return The n-th son or NULL. */
 
41628
  CTree *Son (int n) const { return n == 0 ? _decl : (CTree*)0; }
 
41629
  /** Replace a son.
 
41630
   *  \param old_son The son to replace.
 
41631
   *  \param new_son The new son. */
 
41632
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
41633
   { CTree::ReplaceSon (_decl, old_son, new_son); }
 
41634
public:
 
41635
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
41636
  const char *__attr_name (unsigned i) const {
 
41637
    static const char *names[] = { "_decl" }; return names[i];
 
41638
  }
 
41639
  const void *__attr (unsigned __i) const {
 
41640
    switch (__i) { case 0: return &_decl; default: return 0; }
 
41641
  }
 
41642
#line 3524 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41643
};
 
41644
 
 
41645
/** \class CT_SwitchStmt CTree.h Puma/CTree.h
 
41646
 *  Tree node representing a switch statement.
 
41647
 *  Example: \code switch(a) { case 0: a++; } \endcode */
 
41648
 
 
41649
#line 41650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41650
} // closed Puma
 
41651
class CCExprResolve;
 
41652
class CExprResolve;
 
41653
class WinIfExists;
 
41654
class WinImportHandler;
 
41655
class WinMacros;
 
41656
class WinAsm;
 
41657
class WinDeclSpecs;
 
41658
class WinMemberExplSpec;
 
41659
class WinTypeKeywords;
 
41660
class WinFriend;
 
41661
class ExtAC;
 
41662
class ExtACBuilderCoupling;
 
41663
class ExtACSyntaxCoupling;
 
41664
class ExtACTree;
 
41665
class ExtACKeywords;
 
41666
class ExtGnu;
 
41667
class PragmaOnceUnitState;
 
41668
class PragmaOnce;
 
41669
class CMatchSyntax;
 
41670
namespace Puma {
 
41671
 
 
41672
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41673
class CT_SwitchStmt : public CT_Statement, public CSemScope {
 
41674
#line 41675 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41675
  friend class ::CCExprResolve;
 
41676
  friend class ::CExprResolve;
 
41677
  friend class ::WinIfExists;
 
41678
  friend class ::WinImportHandler;
 
41679
  friend class ::WinMacros;
 
41680
  friend class ::WinAsm;
 
41681
  friend class ::WinDeclSpecs;
 
41682
  friend class ::WinMemberExplSpec;
 
41683
  friend class ::WinTypeKeywords;
 
41684
  friend class ::WinFriend;
 
41685
  friend class ::ExtAC;
 
41686
  friend class ::ExtACBuilderCoupling;
 
41687
  friend class ::ExtACSyntaxCoupling;
 
41688
  friend class ::ExtACTree;
 
41689
  friend class ::ExtACKeywords;
 
41690
  friend class ::ExtGnu;
 
41691
  friend class ::PragmaOnceUnitState;
 
41692
  friend class ::PragmaOnce;
 
41693
  friend class ::CMatchSyntax;
 
41694
 
 
41695
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41696
 
 
41697
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
41698
 
 
41699
public:
 
41700
  /** Constructor.
 
41701
   *  \param kw The keyword 'switch'.
 
41702
   *  \param o Left parenthesis before the condition.
 
41703
   *  \param cond The switch-expression. 
 
41704
   *  \param c Right parenthesis behind the condition. 
 
41705
   *  \param stmt The cases of the switch-statement. */
 
41706
  CT_SwitchStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
41707
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
41708
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
41709
  }
 
41710
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41711
  static const char *NodeId ();
 
41712
  /** Get the name of the node. Can be compared with NodeId(). */
 
41713
  const char *NodeName () const { return NodeId (); }
 
41714
  /** Get the number of sons. */
 
41715
  int Sons () const { return 5; }
 
41716
  /** Get the n-th son.
 
41717
   *  \param n The index of the son.
 
41718
   *  \return The n-th son or NULL. */
 
41719
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
41720
  /** Get the cases. */
 
41721
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
41722
  /** Get the switch-expression. */
 
41723
  CTree *Condition () const { return sons[2]; }
 
41724
  /** Replace a son.
 
41725
   *  \param old_son The son to replace.
 
41726
   *  \param new_son The new son. */
 
41727
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41728
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
41729
  }
 
41730
  /** Get the scope opened by the switch-statement. */
 
41731
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
41732
public:
 
41733
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
41734
  const char *__attr_name (unsigned i) const {
 
41735
    static const char *names[] = { "sons" }; return names[i];
 
41736
  }
 
41737
  const void *__attr (unsigned __i) const {
 
41738
    switch (__i) { case 0: return &sons; default: return 0; }
 
41739
  }
 
41740
#line 3565 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41741
};
 
41742
 
 
41743
/** \class CT_IfStmt CTree.h Puma/CTree.h
 
41744
 *  Tree node representing a if-statement.
 
41745
 *  Example: \code if(a==0) a++; \endcode */
 
41746
 
 
41747
#line 41748 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41748
} // closed Puma
 
41749
class CCExprResolve;
 
41750
class CExprResolve;
 
41751
class WinIfExists;
 
41752
class WinImportHandler;
 
41753
class WinMacros;
 
41754
class WinAsm;
 
41755
class WinDeclSpecs;
 
41756
class WinMemberExplSpec;
 
41757
class WinTypeKeywords;
 
41758
class WinFriend;
 
41759
class ExtAC;
 
41760
class ExtACBuilderCoupling;
 
41761
class ExtACSyntaxCoupling;
 
41762
class ExtACTree;
 
41763
class ExtACKeywords;
 
41764
class ExtGnu;
 
41765
class PragmaOnceUnitState;
 
41766
class PragmaOnce;
 
41767
class CMatchSyntax;
 
41768
namespace Puma {
 
41769
 
 
41770
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41771
class CT_IfStmt : public CT_Statement, public CSemScope {
 
41772
#line 41773 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41773
  friend class ::CCExprResolve;
 
41774
  friend class ::CExprResolve;
 
41775
  friend class ::WinIfExists;
 
41776
  friend class ::WinImportHandler;
 
41777
  friend class ::WinMacros;
 
41778
  friend class ::WinAsm;
 
41779
  friend class ::WinDeclSpecs;
 
41780
  friend class ::WinMemberExplSpec;
 
41781
  friend class ::WinTypeKeywords;
 
41782
  friend class ::WinFriend;
 
41783
  friend class ::ExtAC;
 
41784
  friend class ::ExtACBuilderCoupling;
 
41785
  friend class ::ExtACSyntaxCoupling;
 
41786
  friend class ::ExtACTree;
 
41787
  friend class ::ExtACKeywords;
 
41788
  friend class ::ExtGnu;
 
41789
  friend class ::PragmaOnceUnitState;
 
41790
  friend class ::PragmaOnce;
 
41791
  friend class ::CMatchSyntax;
 
41792
 
 
41793
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41794
 
 
41795
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
41796
 
 
41797
public:
 
41798
  /** Constructor.
 
41799
   *  \param kw The keyword 'if'.
 
41800
   *  \param o Left parenthesis before the condition.
 
41801
   *  \param cond The condition.
 
41802
   *  \param c Right parenthesis behind the condition.
 
41803
   *  \param stmt The controlled statement. */
 
41804
  CT_IfStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
41805
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
41806
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
41807
  }
 
41808
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41809
  static const char *NodeId ();
 
41810
  /** Get the name of the node. Can be compared with NodeId(). */
 
41811
  const char *NodeName () const { return NodeId (); }
 
41812
  /** Get the number of sons. */
 
41813
  int Sons () const { return 5; }
 
41814
  /** Get the n-th son.
 
41815
   *  \param n The index of the son.
 
41816
   *  \return The n-th son or NULL. */
 
41817
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
41818
  /** Get the controlled statement. */
 
41819
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
41820
  /** Get the condition. */
 
41821
  CTree *Condition () const { return sons[2]; }
 
41822
  /** Replace a son.
 
41823
   *  \param old_son The son to replace.
 
41824
   *  \param new_son The new son. */
 
41825
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41826
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
41827
  }
 
41828
  /** Get the scope opened by the if-statement. */
 
41829
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
41830
public:
 
41831
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
41832
  const char *__attr_name (unsigned i) const {
 
41833
    static const char *names[] = { "sons" }; return names[i];
 
41834
  }
 
41835
  const void *__attr (unsigned __i) const {
 
41836
    switch (__i) { case 0: return &sons; default: return 0; }
 
41837
  }
 
41838
#line 3606 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41839
};
 
41840
 
 
41841
/** \class CT_IfElseStmt CTree.h Puma/CTree.h
 
41842
 *  Tree node representing a if-else-statement.
 
41843
 *  Example: \code if(a==0) a++; else a=0; \endcode */
 
41844
 
 
41845
#line 41846 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41846
} // closed Puma
 
41847
class CCExprResolve;
 
41848
class CExprResolve;
 
41849
class WinIfExists;
 
41850
class WinImportHandler;
 
41851
class WinMacros;
 
41852
class WinAsm;
 
41853
class WinDeclSpecs;
 
41854
class WinMemberExplSpec;
 
41855
class WinTypeKeywords;
 
41856
class WinFriend;
 
41857
class ExtAC;
 
41858
class ExtACBuilderCoupling;
 
41859
class ExtACSyntaxCoupling;
 
41860
class ExtACTree;
 
41861
class ExtACKeywords;
 
41862
class ExtGnu;
 
41863
class PragmaOnceUnitState;
 
41864
class PragmaOnce;
 
41865
class CMatchSyntax;
 
41866
namespace Puma {
 
41867
 
 
41868
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41869
class CT_IfElseStmt : public CT_Statement, public CSemScope {
 
41870
#line 41871 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41871
  friend class ::CCExprResolve;
 
41872
  friend class ::CExprResolve;
 
41873
  friend class ::WinIfExists;
 
41874
  friend class ::WinImportHandler;
 
41875
  friend class ::WinMacros;
 
41876
  friend class ::WinAsm;
 
41877
  friend class ::WinDeclSpecs;
 
41878
  friend class ::WinMemberExplSpec;
 
41879
  friend class ::WinTypeKeywords;
 
41880
  friend class ::WinFriend;
 
41881
  friend class ::ExtAC;
 
41882
  friend class ::ExtACBuilderCoupling;
 
41883
  friend class ::ExtACSyntaxCoupling;
 
41884
  friend class ::ExtACTree;
 
41885
  friend class ::ExtACKeywords;
 
41886
  friend class ::ExtGnu;
 
41887
  friend class ::PragmaOnceUnitState;
 
41888
  friend class ::PragmaOnce;
 
41889
  friend class ::CMatchSyntax;
 
41890
 
 
41891
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41892
 
 
41893
  CTree *sons[7]; // if, open, cond, close, if_stmt, else, else_stmt
 
41894
 
 
41895
public:
 
41896
  /** Constructor.
 
41897
   *  \param i The keyword 'if'.
 
41898
   *  \param o Left parenthesis before the condition.
 
41899
   *  \param cond The condition.
 
41900
   *  \param c Right parenthesis behind the condition.
 
41901
   *  \param is The statement controlled by the if-branch.
 
41902
   *  \param e The keyword 'else'.
 
41903
   *  \param es The statement controlled by the else-branch. */
 
41904
  CT_IfElseStmt (CTree *i, CTree *o, CTree *cond, CTree *c, 
 
41905
                 CTree *is, CTree *e, CTree *es) {
 
41906
    AddSon (sons[0], i); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
41907
    AddSon (sons[3], c); AddSon (sons[4], is); AddSon (sons[5], e); 
 
41908
    AddSon (sons[6], es); 
 
41909
  }
 
41910
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41911
  static const char *NodeId ();
 
41912
  /** Get the name of the node. Can be compared with NodeId(). */
 
41913
  const char *NodeName () const { return NodeId (); }
 
41914
  /** Get the number of sons. */
 
41915
  int Sons () const { return 7; }
 
41916
  /** Get the n-th son.
 
41917
   *  \param n The index of the son.
 
41918
   *  \return The n-th son or NULL. */
 
41919
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
41920
  /** Get the condition. */
 
41921
  CTree *Condition () const { return sons[2]; }
 
41922
  /** Get the statement controlled by the if-branch. */
 
41923
  CT_Statement *IfPart () const { return (CT_Statement*)sons[4]; }
 
41924
  /** Get the statement controlled by the else-branch. */
 
41925
  CT_Statement *ElsePart () const { return (CT_Statement*)sons[6]; }
 
41926
  /** Replace a son.
 
41927
   *  \param old_son The son to replace.
 
41928
   *  \param new_son The new son. */
 
41929
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41930
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
41931
  }
 
41932
  /** Get the scope opened by the if-statement. */
 
41933
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
41934
public:
 
41935
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
41936
  const char *__attr_name (unsigned i) const {
 
41937
    static const char *names[] = { "sons" }; return names[i];
 
41938
  }
 
41939
  const void *__attr (unsigned __i) const {
 
41940
    switch (__i) { case 0: return &sons; default: return 0; }
 
41941
  }
 
41942
#line 3653 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41943
};
 
41944
 
 
41945
/** \class CT_BreakStmt CTree.h Puma/CTree.h
 
41946
 *  Tree node representing a break-statement.
 
41947
 *  Example: \code break; \endcode */
 
41948
 
 
41949
#line 41950 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41950
} // closed Puma
 
41951
class CCExprResolve;
 
41952
class CExprResolve;
 
41953
class WinIfExists;
 
41954
class WinImportHandler;
 
41955
class WinMacros;
 
41956
class WinAsm;
 
41957
class WinDeclSpecs;
 
41958
class WinMemberExplSpec;
 
41959
class WinTypeKeywords;
 
41960
class WinFriend;
 
41961
class ExtAC;
 
41962
class ExtACBuilderCoupling;
 
41963
class ExtACSyntaxCoupling;
 
41964
class ExtACTree;
 
41965
class ExtACKeywords;
 
41966
class ExtGnu;
 
41967
class PragmaOnceUnitState;
 
41968
class PragmaOnce;
 
41969
class CMatchSyntax;
 
41970
namespace Puma {
 
41971
 
 
41972
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41973
class CT_BreakStmt : public CT_Statement {
 
41974
#line 41975 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
41975
  friend class ::CCExprResolve;
 
41976
  friend class ::CExprResolve;
 
41977
  friend class ::WinIfExists;
 
41978
  friend class ::WinImportHandler;
 
41979
  friend class ::WinMacros;
 
41980
  friend class ::WinAsm;
 
41981
  friend class ::WinDeclSpecs;
 
41982
  friend class ::WinMemberExplSpec;
 
41983
  friend class ::WinTypeKeywords;
 
41984
  friend class ::WinFriend;
 
41985
  friend class ::ExtAC;
 
41986
  friend class ::ExtACBuilderCoupling;
 
41987
  friend class ::ExtACSyntaxCoupling;
 
41988
  friend class ::ExtACTree;
 
41989
  friend class ::ExtACKeywords;
 
41990
  friend class ::ExtGnu;
 
41991
  friend class ::PragmaOnceUnitState;
 
41992
  friend class ::PragmaOnce;
 
41993
  friend class ::CMatchSyntax;
 
41994
 
 
41995
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41996
 
 
41997
  CTree *sons[2]; // key, semi_colon
 
41998
 
 
41999
public:
 
42000
  /** Constructor.
 
42001
   *  \param key The keyword 'break'.
 
42002
   *  \param sc The trailing semi-colon. */
 
42003
  CT_BreakStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
42004
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42005
  static const char *NodeId ();
 
42006
  /** Get the name of the node. Can be compared with NodeId(). */
 
42007
  const char *NodeName () const { return NodeId (); }
 
42008
  /** Get the number of sons. */
 
42009
  int Sons () const { return 2; }
 
42010
  /** Get the n-th son.
 
42011
   *  \param n The index of the son.
 
42012
   *  \return The n-th son or NULL. */
 
42013
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
42014
  /** Replace a son.
 
42015
   *  \param old_son The son to replace.
 
42016
   *  \param new_son The new son. */
 
42017
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42018
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
42019
  }
 
42020
public:
 
42021
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
42022
  const char *__attr_name (unsigned i) const {
 
42023
    static const char *names[] = { "sons" }; return names[i];
 
42024
  }
 
42025
  const void *__attr (unsigned __i) const {
 
42026
    switch (__i) { case 0: return &sons; default: return 0; }
 
42027
  }
 
42028
#line 3682 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42029
};
 
42030
 
 
42031
/** \class CT_ContinueStmt CTree.h Puma/CTree.h
 
42032
 *  Tree node representing a continue-statement.
 
42033
 *  Example: \code continue; \endcode */
 
42034
 
 
42035
#line 42036 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42036
} // closed Puma
 
42037
class CCExprResolve;
 
42038
class CExprResolve;
 
42039
class WinIfExists;
 
42040
class WinImportHandler;
 
42041
class WinMacros;
 
42042
class WinAsm;
 
42043
class WinDeclSpecs;
 
42044
class WinMemberExplSpec;
 
42045
class WinTypeKeywords;
 
42046
class WinFriend;
 
42047
class ExtAC;
 
42048
class ExtACBuilderCoupling;
 
42049
class ExtACSyntaxCoupling;
 
42050
class ExtACTree;
 
42051
class ExtACKeywords;
 
42052
class ExtGnu;
 
42053
class PragmaOnceUnitState;
 
42054
class PragmaOnce;
 
42055
class CMatchSyntax;
 
42056
namespace Puma {
 
42057
 
 
42058
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42059
class CT_ContinueStmt : public CT_Statement {
 
42060
#line 42061 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42061
  friend class ::CCExprResolve;
 
42062
  friend class ::CExprResolve;
 
42063
  friend class ::WinIfExists;
 
42064
  friend class ::WinImportHandler;
 
42065
  friend class ::WinMacros;
 
42066
  friend class ::WinAsm;
 
42067
  friend class ::WinDeclSpecs;
 
42068
  friend class ::WinMemberExplSpec;
 
42069
  friend class ::WinTypeKeywords;
 
42070
  friend class ::WinFriend;
 
42071
  friend class ::ExtAC;
 
42072
  friend class ::ExtACBuilderCoupling;
 
42073
  friend class ::ExtACSyntaxCoupling;
 
42074
  friend class ::ExtACTree;
 
42075
  friend class ::ExtACKeywords;
 
42076
  friend class ::ExtGnu;
 
42077
  friend class ::PragmaOnceUnitState;
 
42078
  friend class ::PragmaOnce;
 
42079
  friend class ::CMatchSyntax;
 
42080
 
 
42081
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42082
 
 
42083
  CTree *sons[2]; // key, semi_colon
 
42084
 
 
42085
public:
 
42086
  /** Constructor.
 
42087
   *  \param key The keyword 'continue'.
 
42088
   *  \param sc The trailing semi-colon. */
 
42089
  CT_ContinueStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
42090
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42091
  static const char *NodeId ();
 
42092
  /** Get the name of the node. Can be compared with NodeId(). */
 
42093
  const char *NodeName () const { return NodeId (); }
 
42094
  /** Get the number of sons. */
 
42095
  int Sons () const { return 2; }
 
42096
  /** Get the n-th son.
 
42097
   *  \param n The index of the son.
 
42098
   *  \return The n-th son or NULL. */
 
42099
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
42100
  /** Replace a son.
 
42101
   *  \param old_son The son to replace.
 
42102
   *  \param new_son The new son. */
 
42103
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42104
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
42105
  }
 
42106
public:
 
42107
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
42108
  const char *__attr_name (unsigned i) const {
 
42109
    static const char *names[] = { "sons" }; return names[i];
 
42110
  }
 
42111
  const void *__attr (unsigned __i) const {
 
42112
    switch (__i) { case 0: return &sons; default: return 0; }
 
42113
  }
 
42114
#line 3711 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42115
};
 
42116
 
 
42117
/** \class CT_GotoStmt CTree.h Puma/CTree.h
 
42118
 *  Tree node representing a goto-stmt.
 
42119
 *  Example: \code goto incr_a; \endcode */
 
42120
 
 
42121
#line 42122 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42122
} // closed Puma
 
42123
class CCExprResolve;
 
42124
class CExprResolve;
 
42125
class WinIfExists;
 
42126
class WinImportHandler;
 
42127
class WinMacros;
 
42128
class WinAsm;
 
42129
class WinDeclSpecs;
 
42130
class WinMemberExplSpec;
 
42131
class WinTypeKeywords;
 
42132
class WinFriend;
 
42133
class ExtAC;
 
42134
class ExtACBuilderCoupling;
 
42135
class ExtACSyntaxCoupling;
 
42136
class ExtACTree;
 
42137
class ExtACKeywords;
 
42138
class ExtGnu;
 
42139
class PragmaOnceUnitState;
 
42140
class PragmaOnce;
 
42141
class CMatchSyntax;
 
42142
namespace Puma {
 
42143
 
 
42144
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42145
class CT_GotoStmt : public CT_Statement {
 
42146
#line 42147 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42147
  friend class ::CCExprResolve;
 
42148
  friend class ::CExprResolve;
 
42149
  friend class ::WinIfExists;
 
42150
  friend class ::WinImportHandler;
 
42151
  friend class ::WinMacros;
 
42152
  friend class ::WinAsm;
 
42153
  friend class ::WinDeclSpecs;
 
42154
  friend class ::WinMemberExplSpec;
 
42155
  friend class ::WinTypeKeywords;
 
42156
  friend class ::WinFriend;
 
42157
  friend class ::ExtAC;
 
42158
  friend class ::ExtACBuilderCoupling;
 
42159
  friend class ::ExtACSyntaxCoupling;
 
42160
  friend class ::ExtACTree;
 
42161
  friend class ::ExtACKeywords;
 
42162
  friend class ::ExtGnu;
 
42163
  friend class ::PragmaOnceUnitState;
 
42164
  friend class ::PragmaOnce;
 
42165
  friend class ::CMatchSyntax;
 
42166
 
 
42167
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42168
 
 
42169
  CTree *sons[3]; // key, label, semi_colon
 
42170
 
 
42171
public:
 
42172
  /** Constructor.
 
42173
   *  \param key The keyword 'goto'.
 
42174
   *  \param l The name of the jump label.
 
42175
   *  \param sc The trailing semi-colon. */
 
42176
  CT_GotoStmt (CTree *key, CTree *l, CTree *sc) {
 
42177
    AddSon (sons[0], key); AddSon (sons[1], l); AddSon (sons[2], sc); 
 
42178
  }
 
42179
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42180
  static const char *NodeId ();
 
42181
  /** Get the name of the node. Can be compared with NodeId(). */
 
42182
  const char *NodeName () const { return NodeId (); }
 
42183
  /** Get the number of sons. */
 
42184
  int Sons () const { return 3; }
 
42185
  /** Get the n-th son.
 
42186
   *  \param n The index of the son.
 
42187
   *  \return The n-th son or NULL. */
 
42188
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
42189
  /** Get the name of the jump label. */
 
42190
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[1]; }
 
42191
  /** Replace a son.
 
42192
   *  \param old_son The son to replace.
 
42193
   *  \param new_son The new son. */
 
42194
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42195
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
42196
  }
 
42197
public:
 
42198
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
42199
  const char *__attr_name (unsigned i) const {
 
42200
    static const char *names[] = { "sons" }; return names[i];
 
42201
  }
 
42202
  const void *__attr (unsigned __i) const {
 
42203
    switch (__i) { case 0: return &sons; default: return 0; }
 
42204
  }
 
42205
#line 3745 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42206
};
 
42207
 
 
42208
/** \class CT_ReturnStmt CTree.h Puma/CTree.h
 
42209
 *  Tree node representing a return-statement.
 
42210
 *  Example: \code return 1; \endcode */
 
42211
 
 
42212
#line 42213 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42213
} // closed Puma
 
42214
class CCExprResolve;
 
42215
class CExprResolve;
 
42216
class WinIfExists;
 
42217
class WinImportHandler;
 
42218
class WinMacros;
 
42219
class WinAsm;
 
42220
class WinDeclSpecs;
 
42221
class WinMemberExplSpec;
 
42222
class WinTypeKeywords;
 
42223
class WinFriend;
 
42224
class ExtAC;
 
42225
class ExtACBuilderCoupling;
 
42226
class ExtACSyntaxCoupling;
 
42227
class ExtACTree;
 
42228
class ExtACKeywords;
 
42229
class ExtGnu;
 
42230
class PragmaOnceUnitState;
 
42231
class PragmaOnce;
 
42232
class CMatchSyntax;
 
42233
namespace Puma {
 
42234
 
 
42235
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42236
class CT_ReturnStmt : public CT_Statement {
 
42237
#line 42238 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42238
  friend class ::CCExprResolve;
 
42239
  friend class ::CExprResolve;
 
42240
  friend class ::WinIfExists;
 
42241
  friend class ::WinImportHandler;
 
42242
  friend class ::WinMacros;
 
42243
  friend class ::WinAsm;
 
42244
  friend class ::WinDeclSpecs;
 
42245
  friend class ::WinMemberExplSpec;
 
42246
  friend class ::WinTypeKeywords;
 
42247
  friend class ::WinFriend;
 
42248
  friend class ::ExtAC;
 
42249
  friend class ::ExtACBuilderCoupling;
 
42250
  friend class ::ExtACSyntaxCoupling;
 
42251
  friend class ::ExtACTree;
 
42252
  friend class ::ExtACKeywords;
 
42253
  friend class ::ExtGnu;
 
42254
  friend class ::PragmaOnceUnitState;
 
42255
  friend class ::PragmaOnce;
 
42256
  friend class ::CMatchSyntax;
 
42257
 
 
42258
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42259
 
 
42260
  CTree *sons[3]; // key, expr, semi_colon
 
42261
 
 
42262
public:
 
42263
  /** Constructor.
 
42264
   *  \param key The keyword 'return'.
 
42265
   *  \param e The expression specifying the return value. 
 
42266
   *  \param sc The trailing semi-colon. */
 
42267
  CT_ReturnStmt (CTree *key, CTree *e, CTree *sc) {
 
42268
    AddSon (sons[0], key); AddSon (sons[1], e); AddSon (sons[2], sc); 
 
42269
  }
 
42270
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42271
  static const char *NodeId ();
 
42272
  /** Get the name of the node. Can be compared with NodeId(). */
 
42273
  const char *NodeName () const { return NodeId (); }
 
42274
  /** Get the number of sons. */
 
42275
  int Sons () const { return CTree::Sons (sons, 3); }
 
42276
  /** Get the n-th son.
 
42277
   *  \param n The index of the son.
 
42278
   *  \return The n-th son or NULL. */
 
42279
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
42280
  /** Get the expression specifying the return value. */
 
42281
  CTree *Expr () const { return sons[1]; }
 
42282
  /** Replace a son.
 
42283
   *  \param old_son The son to replace.
 
42284
   *  \param new_son The new son. */
 
42285
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42286
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
42287
  }
 
42288
public:
 
42289
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
42290
  const char *__attr_name (unsigned i) const {
 
42291
    static const char *names[] = { "sons" }; return names[i];
 
42292
  }
 
42293
  const void *__attr (unsigned __i) const {
 
42294
    switch (__i) { case 0: return &sons; default: return 0; }
 
42295
  }
 
42296
#line 3779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42297
};
 
42298
 
 
42299
/** \class CT_WhileStmt CTree.h Puma/CTree.h
 
42300
 *  Tree node representing a while-statement.
 
42301
 *  Example: \code while(a>0) a--; \endcode */
 
42302
 
 
42303
#line 42304 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42304
} // closed Puma
 
42305
class CCExprResolve;
 
42306
class CExprResolve;
 
42307
class WinIfExists;
 
42308
class WinImportHandler;
 
42309
class WinMacros;
 
42310
class WinAsm;
 
42311
class WinDeclSpecs;
 
42312
class WinMemberExplSpec;
 
42313
class WinTypeKeywords;
 
42314
class WinFriend;
 
42315
class ExtAC;
 
42316
class ExtACBuilderCoupling;
 
42317
class ExtACSyntaxCoupling;
 
42318
class ExtACTree;
 
42319
class ExtACKeywords;
 
42320
class ExtGnu;
 
42321
class PragmaOnceUnitState;
 
42322
class PragmaOnce;
 
42323
class CMatchSyntax;
 
42324
namespace Puma {
 
42325
 
 
42326
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42327
class CT_WhileStmt : public CT_Statement, public CSemScope {
 
42328
#line 42329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42329
  friend class ::CCExprResolve;
 
42330
  friend class ::CExprResolve;
 
42331
  friend class ::WinIfExists;
 
42332
  friend class ::WinImportHandler;
 
42333
  friend class ::WinMacros;
 
42334
  friend class ::WinAsm;
 
42335
  friend class ::WinDeclSpecs;
 
42336
  friend class ::WinMemberExplSpec;
 
42337
  friend class ::WinTypeKeywords;
 
42338
  friend class ::WinFriend;
 
42339
  friend class ::ExtAC;
 
42340
  friend class ::ExtACBuilderCoupling;
 
42341
  friend class ::ExtACSyntaxCoupling;
 
42342
  friend class ::ExtACTree;
 
42343
  friend class ::ExtACKeywords;
 
42344
  friend class ::ExtGnu;
 
42345
  friend class ::PragmaOnceUnitState;
 
42346
  friend class ::PragmaOnce;
 
42347
  friend class ::CMatchSyntax;
 
42348
 
 
42349
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42350
 
 
42351
  CTree *sons[5]; // key, open, cond, close, stmt
 
42352
 
 
42353
public:
 
42354
  /** Constructor.
 
42355
   *  \param kw The keyword 'while'.
 
42356
   *  \param o Left parenthesis before the condition.
 
42357
   *  \param cond The loop condition. 
 
42358
   *  \param c Right parenthesis behind the condition. 
 
42359
   *  \param stmt The controlled statement. */
 
42360
  CT_WhileStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
42361
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
42362
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
42363
  }
 
42364
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42365
  static const char *NodeId ();
 
42366
  /** Get the name of the node. Can be compared with NodeId(). */
 
42367
  const char *NodeName () const { return NodeId (); }
 
42368
  /** Get the number of sons. */
 
42369
  int Sons () const { return 5; }
 
42370
  /** Get the n-th son.
 
42371
   *  \param n The index of the son.
 
42372
   *  \return The n-th son or NULL. */
 
42373
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
42374
  /** Get the controlled statement. */
 
42375
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
42376
  /** Get the loop condition. */
 
42377
  CTree *Condition () const { return sons[2]; }
 
42378
  /** Replace a son.
 
42379
   *  \param old_son The son to replace.
 
42380
   *  \param new_son The new son. */
 
42381
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42382
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
42383
  }
 
42384
  /** Get the scope opened by the while-statement. */
 
42385
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
42386
public:
 
42387
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
42388
  const char *__attr_name (unsigned i) const {
 
42389
    static const char *names[] = { "sons" }; return names[i];
 
42390
  }
 
42391
  const void *__attr (unsigned __i) const {
 
42392
    switch (__i) { case 0: return &sons; default: return 0; }
 
42393
  }
 
42394
#line 3820 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42395
};
 
42396
 
 
42397
/** \class CT_DoStmt CTree.h Puma/CTree.h
 
42398
 *  Tree node representing a do-while-statement.
 
42399
 *  Example: \code do a--; while(a>0); \endcode */
 
42400
 
 
42401
#line 42402 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42402
} // closed Puma
 
42403
class CCExprResolve;
 
42404
class CExprResolve;
 
42405
class WinIfExists;
 
42406
class WinImportHandler;
 
42407
class WinMacros;
 
42408
class WinAsm;
 
42409
class WinDeclSpecs;
 
42410
class WinMemberExplSpec;
 
42411
class WinTypeKeywords;
 
42412
class WinFriend;
 
42413
class ExtAC;
 
42414
class ExtACBuilderCoupling;
 
42415
class ExtACSyntaxCoupling;
 
42416
class ExtACTree;
 
42417
class ExtACKeywords;
 
42418
class ExtGnu;
 
42419
class PragmaOnceUnitState;
 
42420
class PragmaOnce;
 
42421
class CMatchSyntax;
 
42422
namespace Puma {
 
42423
 
 
42424
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42425
class CT_DoStmt : public CT_Statement {
 
42426
#line 42427 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42427
  friend class ::CCExprResolve;
 
42428
  friend class ::CExprResolve;
 
42429
  friend class ::WinIfExists;
 
42430
  friend class ::WinImportHandler;
 
42431
  friend class ::WinMacros;
 
42432
  friend class ::WinAsm;
 
42433
  friend class ::WinDeclSpecs;
 
42434
  friend class ::WinMemberExplSpec;
 
42435
  friend class ::WinTypeKeywords;
 
42436
  friend class ::WinFriend;
 
42437
  friend class ::ExtAC;
 
42438
  friend class ::ExtACBuilderCoupling;
 
42439
  friend class ::ExtACSyntaxCoupling;
 
42440
  friend class ::ExtACTree;
 
42441
  friend class ::ExtACKeywords;
 
42442
  friend class ::ExtGnu;
 
42443
  friend class ::PragmaOnceUnitState;
 
42444
  friend class ::PragmaOnce;
 
42445
  friend class ::CMatchSyntax;
 
42446
 
 
42447
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42448
 
 
42449
  CTree *sons[7]; // do, stmt, while, open, expr, close, semi_colon
 
42450
 
 
42451
public:
 
42452
  /** Constructor.
 
42453
   *  \param d The keyword 'do'.
 
42454
   *  \param stmt The controlled statement.
 
42455
   *  \param w The keyword 'while'.
 
42456
   *  \param o Left parenthesis before the loop condition.
 
42457
   *  \param e The loop condition.
 
42458
   *  \param c Right parenthesis behind the loop condition.
 
42459
   *  \param sc The trailing semi-colon. */
 
42460
  CT_DoStmt (CTree *d, CTree *stmt, CTree *w, CTree *o, CTree *e, 
 
42461
             CTree *c, CTree *sc) {
 
42462
    AddSon (sons[0], d); AddSon (sons[1], stmt); AddSon (sons[2], w); 
 
42463
    AddSon (sons[3], o); AddSon (sons[4], e); AddSon (sons[5], c); 
 
42464
    AddSon (sons[6], sc); 
 
42465
  }
 
42466
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42467
  static const char *NodeId ();
 
42468
  /** Get the name of the node. Can be compared with NodeId(). */
 
42469
  const char *NodeName () const { return NodeId (); }
 
42470
  /** Get the number of sons. */
 
42471
  int Sons () const { return 7; }
 
42472
  /** Get the n-th son.
 
42473
   *  \param n The index of the son.
 
42474
   *  \return The n-th son or NULL. */
 
42475
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
42476
  /** Get the controlled statement. */
 
42477
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
42478
  /** Get the loop condition. */
 
42479
  CTree *Expr () const { return sons[4]; }
 
42480
  /** Replace a son.
 
42481
   *  \param old_son The son to replace.
 
42482
   *  \param new_son The new son. */
 
42483
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42484
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
42485
  }
 
42486
public:
 
42487
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
42488
  const char *__attr_name (unsigned i) const {
 
42489
    static const char *names[] = { "sons" }; return names[i];
 
42490
  }
 
42491
  const void *__attr (unsigned __i) const {
 
42492
    switch (__i) { case 0: return &sons; default: return 0; }
 
42493
  }
 
42494
#line 3863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42495
};
 
42496
 
 
42497
/** \class CT_ForStmt CTree.h Puma/CTree.h
 
42498
 *  Tree node representing a for-statement.
 
42499
 *  Example: \code for(int i=0; i<10; i++) f(i); \endcode */
 
42500
 
 
42501
#line 42502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42502
} // closed Puma
 
42503
class CCExprResolve;
 
42504
class CExprResolve;
 
42505
class WinIfExists;
 
42506
class WinImportHandler;
 
42507
class WinMacros;
 
42508
class WinAsm;
 
42509
class WinDeclSpecs;
 
42510
class WinMemberExplSpec;
 
42511
class WinTypeKeywords;
 
42512
class WinFriend;
 
42513
class ExtAC;
 
42514
class ExtACBuilderCoupling;
 
42515
class ExtACSyntaxCoupling;
 
42516
class ExtACTree;
 
42517
class ExtACKeywords;
 
42518
class ExtGnu;
 
42519
class PragmaOnceUnitState;
 
42520
class PragmaOnce;
 
42521
class CMatchSyntax;
 
42522
namespace Puma {
 
42523
 
 
42524
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42525
class CT_ForStmt : public CT_Statement, public CSemScope {
 
42526
#line 42527 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42527
  friend class ::CCExprResolve;
 
42528
  friend class ::CExprResolve;
 
42529
  friend class ::WinIfExists;
 
42530
  friend class ::WinImportHandler;
 
42531
  friend class ::WinMacros;
 
42532
  friend class ::WinAsm;
 
42533
  friend class ::WinDeclSpecs;
 
42534
  friend class ::WinMemberExplSpec;
 
42535
  friend class ::WinTypeKeywords;
 
42536
  friend class ::WinFriend;
 
42537
  friend class ::ExtAC;
 
42538
  friend class ::ExtACBuilderCoupling;
 
42539
  friend class ::ExtACSyntaxCoupling;
 
42540
  friend class ::ExtACTree;
 
42541
  friend class ::ExtACKeywords;
 
42542
  friend class ::ExtGnu;
 
42543
  friend class ::PragmaOnceUnitState;
 
42544
  friend class ::PragmaOnce;
 
42545
  friend class ::CMatchSyntax;
 
42546
 
 
42547
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42548
 
 
42549
  CTree *sons[8]; // key, open, init, cond, semi_colon, expr, close, stmt
 
42550
 
 
42551
public:
 
42552
  /** Constructor.
 
42553
   *  \param k The keyword 'for'.
 
42554
   *  \param o Left parenthesis.
 
42555
   *  \param i The loop initializer statement.
 
42556
   *  \param co The loop condition.
 
42557
   *  \param sc The semi-colon behind the loop condition.
 
42558
   *  \param e The loop counter expression.
 
42559
   *  \param c Right parenthesis.
 
42560
   *  \param stmt The controlled statement. */
 
42561
  CT_ForStmt (CTree *k, CTree *o, CTree *i, CTree *co, CTree *sc,
 
42562
              CTree *e, CTree *c, CTree *stmt) {
 
42563
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], i); 
 
42564
    AddSon (sons[3], co); AddSon (sons[4], sc); AddSon (sons[5], e); 
 
42565
    AddSon (sons[6], c); AddSon (sons[7], stmt); 
 
42566
  }
 
42567
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42568
  static const char *NodeId ();
 
42569
  /** Get the name of the node. Can be compared with NodeId(). */
 
42570
  const char *NodeName () const { return NodeId (); }
 
42571
  /** Get the number of sons. */
 
42572
  int Sons () const { return CTree::Sons (sons, 8); }
 
42573
  /** Get the n-th son.
 
42574
   *  \param n The index of the son.
 
42575
   *  \return The n-th son or NULL. */
 
42576
  CTree *Son (int n) const { return CTree::Son (sons, 8, n); }
 
42577
  /** Get the loop initializer. */
 
42578
  CTree *InitStmt () const { return sons[2]; }
 
42579
  /** Get the loop condition. */
 
42580
  CTree *Condition () const { return sons[3]; }
 
42581
  /** Get the loop counter expression. */
 
42582
  CTree *Expr () const { return sons[5]; }
 
42583
  /** Get the controlled statement. */
 
42584
  CT_Statement *Statement () const { return (CT_Statement*)sons[7]; }
 
42585
  /** Replace a son.
 
42586
   *  \param old_son The son to replace.
 
42587
   *  \param new_son The new son. */
 
42588
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42589
    CTree::ReplaceSon (sons, 8, old_son, new_son);
 
42590
  }
 
42591
  /** Get the scope opened by the for-statement. */
 
42592
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
42593
public:
 
42594
  typedef AC::TL<Puma::CTree * [8],AC::TLE > __AttrTypes;
 
42595
  const char *__attr_name (unsigned i) const {
 
42596
    static const char *names[] = { "sons" }; return names[i];
 
42597
  }
 
42598
  const void *__attr (unsigned __i) const {
 
42599
    switch (__i) { case 0: return &sons; default: return 0; }
 
42600
  }
 
42601
#line 3913 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42602
};
 
42603
 
 
42604
/** \class CT_Condition CTree.h Puma/CTree.h
 
42605
 *  Tree node representing a control-statement condition.
 
42606
 *  Example: \code int i = 0 \endcode */
 
42607
 
 
42608
#line 42609 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42609
} // closed Puma
 
42610
class CCExprResolve;
 
42611
class CExprResolve;
 
42612
class WinIfExists;
 
42613
class WinImportHandler;
 
42614
class WinMacros;
 
42615
class WinAsm;
 
42616
class WinDeclSpecs;
 
42617
class WinMemberExplSpec;
 
42618
class WinTypeKeywords;
 
42619
class WinFriend;
 
42620
class ExtAC;
 
42621
class ExtACBuilderCoupling;
 
42622
class ExtACSyntaxCoupling;
 
42623
class ExtACTree;
 
42624
class ExtACKeywords;
 
42625
class ExtGnu;
 
42626
class PragmaOnceUnitState;
 
42627
class PragmaOnce;
 
42628
class CMatchSyntax;
 
42629
namespace Puma {
 
42630
 
 
42631
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42632
class CT_Condition : public CT_Decl, public CSemObject {
 
42633
#line 42634 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42634
  friend class ::CCExprResolve;
 
42635
  friend class ::CExprResolve;
 
42636
  friend class ::WinIfExists;
 
42637
  friend class ::WinImportHandler;
 
42638
  friend class ::WinMacros;
 
42639
  friend class ::WinAsm;
 
42640
  friend class ::WinDeclSpecs;
 
42641
  friend class ::WinMemberExplSpec;
 
42642
  friend class ::WinTypeKeywords;
 
42643
  friend class ::WinFriend;
 
42644
  friend class ::ExtAC;
 
42645
  friend class ::ExtACBuilderCoupling;
 
42646
  friend class ::ExtACSyntaxCoupling;
 
42647
  friend class ::ExtACTree;
 
42648
  friend class ::ExtACKeywords;
 
42649
  friend class ::ExtGnu;
 
42650
  friend class ::PragmaOnceUnitState;
 
42651
  friend class ::PragmaOnce;
 
42652
  friend class ::CMatchSyntax;
 
42653
 
 
42654
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42655
 
 
42656
  CTree *sons[3]; // declspecs, declarator, init
 
42657
 
 
42658
public:
 
42659
  /** Constructor.
 
42660
   *  \param dsl The declaration specifier sequence. 
 
42661
   *  \param d The variable declarator. */
 
42662
  CT_Condition (CTree *dsl, CTree *d) {
 
42663
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], 0);
 
42664
  }
 
42665
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42666
  static const char *NodeId ();
 
42667
  /** Get the name of the node. Can be compared with NodeId(). */
 
42668
  const char *NodeName () const { return NodeId (); }
 
42669
  /** Get the number of sons. */
 
42670
  int Sons () const { return CTree::Sons (sons, 3); }
 
42671
  /** Get the n-th son.
 
42672
   *  \param n The index of the son.
 
42673
   *  \return The n-th son or NULL. */
 
42674
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
42675
  /** Get the declaration specifier sequence. */
 
42676
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
42677
  /** Get the declarator. */
 
42678
  CTree *Declarator () const { return sons[1]; }
 
42679
  /** Get the initializer of the declaration. */
 
42680
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
42681
  /** Get the semantic information of the declared object. */
 
42682
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
42683
  /** Set the initializer. */
 
42684
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
42685
  /** Replace a son.
 
42686
   *  \param old_son The son to replace.
 
42687
   *  \param new_son The new son. */
 
42688
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42689
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
42690
  }
 
42691
public:
 
42692
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
42693
  const char *__attr_name (unsigned i) const {
 
42694
    static const char *names[] = { "sons" }; return names[i];
 
42695
  }
 
42696
  const void *__attr (unsigned __i) const {
 
42697
    switch (__i) { case 0: return &sons; default: return 0; }
 
42698
  }
 
42699
#line 3954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42700
};
 
42701
 
 
42702
/*****************************************************************************/
 
42703
/*                                                                           */
 
42704
/*                              Classes                                      */
 
42705
/*                                                                           */
 
42706
/*****************************************************************************/
 
42707
 
 
42708
/** \class CT_ClassDef CTree.h Puma/CTree.h
 
42709
 *  Tree node representing a class definition.
 
42710
 *  Example: \code class X : Y { int x; } \endcode */
 
42711
 
 
42712
#line 42713 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42713
} // closed Puma
 
42714
class CCExprResolve;
 
42715
class CExprResolve;
 
42716
class WinIfExists;
 
42717
class WinImportHandler;
 
42718
class WinMacros;
 
42719
class WinAsm;
 
42720
class WinDeclSpecs;
 
42721
class WinMemberExplSpec;
 
42722
class WinTypeKeywords;
 
42723
class WinFriend;
 
42724
class ExtAC;
 
42725
class ExtACBuilderCoupling;
 
42726
class ExtACSyntaxCoupling;
 
42727
class ExtACTree;
 
42728
class ExtACKeywords;
 
42729
class ExtGnu;
 
42730
class PragmaOnceUnitState;
 
42731
class PragmaOnce;
 
42732
class CMatchSyntax;
 
42733
namespace Puma {
 
42734
 
 
42735
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42736
 
 
42737
#line 42738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42738
} // closed Puma
 
42739
 
 
42740
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
42741
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
42742
#include "ExtACTree.ah"
 
42743
#endif
 
42744
namespace Puma {
 
42745
 
 
42746
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42747
class CT_ClassDef : public CT_Decl, public CSemObject {
 
42748
#line 42749 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42749
  friend class ::CCExprResolve;
 
42750
  friend class ::CExprResolve;
 
42751
  friend class ::WinIfExists;
 
42752
  friend class ::WinImportHandler;
 
42753
  friend class ::WinMacros;
 
42754
  friend class ::WinAsm;
 
42755
  friend class ::WinDeclSpecs;
 
42756
  friend class ::WinMemberExplSpec;
 
42757
  friend class ::WinTypeKeywords;
 
42758
  friend class ::WinFriend;
 
42759
  friend class ::ExtAC;
 
42760
  friend class ::ExtACBuilderCoupling;
 
42761
  friend class ::ExtACSyntaxCoupling;
 
42762
  friend class ::ExtACTree;
 
42763
  friend class ::ExtACKeywords;
 
42764
  friend class ::ExtGnu;
 
42765
  friend class ::PragmaOnceUnitState;
 
42766
  friend class ::PragmaOnce;
 
42767
  friend class ::CMatchSyntax;
 
42768
 
 
42769
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42770
 
 
42771
   
 
42772
#line 42773 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42773
 
 
42774
  struct __ac_wrapper_sons {
 
42775
    typedef ::Puma::CTree * E; typedef E A[4]; A _data;
 
42776
    operator A& () { return _data; }
 
42777
    operator A& () const { return (A&)*(::Puma::CTree * *)_data; }
 
42778
    operator const A& () { return _data; }
 
42779
    operator const A& () const { return _data; }
 
42780
    operator void* () { return _data; }
 
42781
    operator void* () const { return (void*)_data; }
 
42782
    operator const void* () { return _data; }
 
42783
    operator const void* () const { return _data; }
 
42784
    template <typename I> E& operator [] (I i) { return _data[i]; } // for VC++ 2003
 
42785
    template <typename I> const E& operator [] (I i) const { return _data[i]; } // for VC++ 2003
 
42786
  } sons
 
42787
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42788
 
 
42789
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42790
; // key, name, bases, members
 
42791
  CTree *obj_decl;
 
42792
 
 
42793
public:
 
42794
  /** Constructor.
 
42795
   *  \param k The keyword 'class' or 'struct'.
 
42796
   *  \param n The name of the class.
 
42797
   *  \param b The base class list. */
 
42798
  
 
42799
#line 42800 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42800
 
 
42801
 
 
42802
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 {
 
42803
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 __TJP;
 
42804
  typedef TResult Result;
 
42805
  typedef TThat   That;
 
42806
  typedef TTarget Target;
 
42807
  enum { ARGS = TArgs::ARGS };
 
42808
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
42809
  static const int JPID = 55;
 
42810
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
42811
  struct Res {
 
42812
    typedef void Type;
 
42813
    typedef void ReferredType;
 
42814
  };
 
42815
 
 
42816
  That *_that;
 
42817
 
 
42818
  inline That *that() {return (That*)_that;}
 
42819
 
 
42820
};
 
42821
 
 
42822
 
 
42823
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42824
CT_ClassDef (CTree * arg0, CTree * arg1, CTree * arg2 = (CTree*)0) 
 
42825
#line 42826 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42826
{
 
42827
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TLE > > > > __TJP;
 
42828
    __TJP tjp;
 
42829
  tjp._that =  (__TJP::That*)this;
 
42830
    this->__exec_old_C1(arg0, arg1, arg2);
 
42831
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
42832
  
 
42833
}
 
42834
__attribute__((always_inline)) inline void __exec_old_C1(::Puma::CTree * k,::Puma::CTree * n,::Puma::CTree * b)
 
42835
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42836
{
 
42837
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], b); 
 
42838
    AddSon (sons[3], 0); AddSon (obj_decl, 0); 
 
42839
  }
 
42840
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42841
  static const char *NodeId ();
 
42842
  /** Get the name of the node. Can be compared with NodeId(). */
 
42843
  const char *NodeName () const { return NodeId (); }
 
42844
  /** Get the number of sons. */
 
42845
  int Sons () const { return CTree::Sons (sons, 4); }
 
42846
  /** Get the n-th son.
 
42847
   *  \param n The index of the son.
 
42848
   *  \return The n-th son or NULL. */
 
42849
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
42850
  /** Get the name of the class. */
 
42851
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
42852
  /** Get the member declarations list. */
 
42853
  CT_MembList *Members () const { return (CT_MembList*)sons[3]; }
 
42854
  /** Get the base class specifiers list. */
 
42855
  CT_BaseSpecList *BaseClasses () const { return (CT_BaseSpecList*)sons[2]; }
 
42856
  /** Get the object declaration node containing the class definition. */
 
42857
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
42858
  /** Get the semantic information about the declared class. */
 
42859
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
42860
  /** Set the member declarations list. */
 
42861
  void Members (CTree *m) { AddSon (sons[3], m); }
 
42862
  /** Set the base class specifiers list. */
 
42863
  void BaseClasses (CTree *bc) { AddSon (sons[2], bc); }
 
42864
  /** Set the object declaration containing the class definition. */
 
42865
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
42866
  /** Replace a son.
 
42867
   *  \param old_son The son to replace.
 
42868
   *  \param new_son The new son. */
 
42869
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
42870
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
42871
  }
 
42872
   private:
 
42873
 
 
42874
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
42875
 Puma :: CTree * _intro_members ;
 
42876
Puma :: CTree * _base_intros ;
 
42877
public :
 
42878
Puma :: CTree * IntroMembers ( ) const { return _intro_members ; }
 
42879
void IntroMembers ( Puma :: CTree * members ) { _intro_members = members ; }
 
42880
Puma :: CTree * BaseIntros ( ) const { return _base_intros ; }
 
42881
void BaseIntros ( Puma :: CTree * bases ) { _base_intros = bases ; }public:
 
42882
  typedef AC::TL<Puma::CTree * [4],AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
42883
  const char *__attr_name (unsigned i) const {
 
42884
    static const char *names[] = { "sons", "obj_decl", "_intro_members", "_base_intros" }; return names[i];
 
42885
  }
 
42886
  const void *__attr (unsigned __i) const {
 
42887
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; case 2: return &_intro_members; case 3: return &_base_intros; default: return 0; }
 
42888
  }
 
42889
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42890
 
 
42891
#line 42892 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42892
 
 
42893
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 {
 
42894
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 __TJP;
 
42895
  typedef TResult Result;
 
42896
  typedef TThat   That;
 
42897
  typedef TTarget Target;
 
42898
  enum { ARGS = TArgs::ARGS };
 
42899
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
42900
  static const int JPID = 7557;
 
42901
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
42902
  struct Res {
 
42903
    typedef void Type;
 
42904
    typedef void ReferredType;
 
42905
  };
 
42906
 
 
42907
  That *_that;
 
42908
 
 
42909
  inline That *that() {return (That*)_that;}
 
42910
 
 
42911
};
 
42912
 
 
42913
 
 
42914
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42915
 
 
42916
#line 42917 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42917
 
 
42918
public:
 
42919
inline CT_ClassDef (const Puma::CT_ClassDef & arg0) : Puma::CT_Decl (arg0), Puma::CSemObject (arg0), sons (arg0.sons), obj_decl (arg0.obj_decl), _intro_members (arg0._intro_members), _base_intros (arg0._base_intros) {
 
42920
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< const ::Puma::CT_ClassDef & , AC::TLE > > __TJP;
 
42921
  __TJP tjp;
 
42922
  tjp._that =  (__TJP::That*)this;
 
42923
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
42924
 
 
42925
}
 
42926
 
 
42927
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42928
 
 
42929
#line 42930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42930
 
 
42931
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefD1Ev_0 {
 
42932
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0 __TJP;
 
42933
  typedef TResult Result;
 
42934
  typedef TThat   That;
 
42935
  typedef TTarget Target;
 
42936
  enum { ARGS = TArgs::ARGS };
 
42937
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
42938
  static const int JPID = 7555;
 
42939
  static const AC::JPType JPTYPE = (AC::JPType)32;
 
42940
  struct Res {
 
42941
    typedef void Type;
 
42942
    typedef void ReferredType;
 
42943
  };
 
42944
 
 
42945
  That *_that;
 
42946
 
 
42947
  inline That *that() {return (That*)_that;}
 
42948
 
 
42949
};
 
42950
 
 
42951
 
 
42952
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42953
 
 
42954
#line 42955 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42955
 
 
42956
public:
 
42957
inline ~CT_ClassDef () {
 
42958
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TLE > __TJP;
 
42959
  __TJP tjp;
 
42960
  tjp._that =  (__TJP::That*)this;
 
42961
  AC::invoke_ExtACTree_ExtACTree_a1_before<__TJP> (&tjp);
 
42962
 
 
42963
}
 
42964
 
 
42965
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42966
};
 
42967
      
 
42968
/** \class CT_UnionDef CTree.h Puma/CTree.h
 
42969
 *  Tree node representing the definition of a union.
 
42970
 *  Example: \code union U { int i; } \endcode */
 
42971
 
 
42972
#line 42973 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42973
} // closed Puma
 
42974
class CCExprResolve;
 
42975
class CExprResolve;
 
42976
class WinIfExists;
 
42977
class WinImportHandler;
 
42978
class WinMacros;
 
42979
class WinAsm;
 
42980
class WinDeclSpecs;
 
42981
class WinMemberExplSpec;
 
42982
class WinTypeKeywords;
 
42983
class WinFriend;
 
42984
class ExtAC;
 
42985
class ExtACBuilderCoupling;
 
42986
class ExtACSyntaxCoupling;
 
42987
class ExtACTree;
 
42988
class ExtACKeywords;
 
42989
class ExtGnu;
 
42990
class PragmaOnceUnitState;
 
42991
class PragmaOnce;
 
42992
class CMatchSyntax;
 
42993
namespace Puma {
 
42994
 
 
42995
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42996
class CT_UnionDef : public CT_ClassDef {
 
42997
#line 42998 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
42998
  friend class ::CCExprResolve;
 
42999
  friend class ::CExprResolve;
 
43000
  friend class ::WinIfExists;
 
43001
  friend class ::WinImportHandler;
 
43002
  friend class ::WinMacros;
 
43003
  friend class ::WinAsm;
 
43004
  friend class ::WinDeclSpecs;
 
43005
  friend class ::WinMemberExplSpec;
 
43006
  friend class ::WinTypeKeywords;
 
43007
  friend class ::WinFriend;
 
43008
  friend class ::ExtAC;
 
43009
  friend class ::ExtACBuilderCoupling;
 
43010
  friend class ::ExtACSyntaxCoupling;
 
43011
  friend class ::ExtACTree;
 
43012
  friend class ::ExtACKeywords;
 
43013
  friend class ::ExtGnu;
 
43014
  friend class ::PragmaOnceUnitState;
 
43015
  friend class ::PragmaOnce;
 
43016
  friend class ::CMatchSyntax;
 
43017
 
 
43018
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43019
 
 
43020
public:
 
43021
  /** Constructor.
 
43022
   *  \param k The keyword 'union'.
 
43023
   *  \param n The name of the union.
 
43024
   *  \param b The base union list. */
 
43025
  CT_UnionDef (CTree *k, CTree *n, CTree *b = 0) : CT_ClassDef (k, n, b) {}
 
43026
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43027
  static const char *NodeId ();
 
43028
  /** Get the name of the node. Can be compared with NodeId(). */
 
43029
  const char *NodeName () const { return NodeId (); }
 
43030
public:
 
43031
  typedef AC::TLE __AttrTypes;
 
43032
  const char *__attr_name (unsigned i) const { return 0; }
 
43033
  const void *__attr (unsigned __i) const { return 0; }
 
43034
#line 4026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43035
};
 
43036
      
 
43037
/** \class CT_MembList CTree.h Puma/CTree.h
 
43038
 *  Tree node representing a member declarations list. */ 
 
43039
 
 
43040
#line 43041 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43041
} // closed Puma
 
43042
class CCExprResolve;
 
43043
class CExprResolve;
 
43044
class WinIfExists;
 
43045
class WinImportHandler;
 
43046
class WinMacros;
 
43047
class WinAsm;
 
43048
class WinDeclSpecs;
 
43049
class WinMemberExplSpec;
 
43050
class WinTypeKeywords;
 
43051
class WinFriend;
 
43052
class ExtAC;
 
43053
class ExtACBuilderCoupling;
 
43054
class ExtACSyntaxCoupling;
 
43055
class ExtACTree;
 
43056
class ExtACKeywords;
 
43057
class ExtGnu;
 
43058
class PragmaOnceUnitState;
 
43059
class PragmaOnce;
 
43060
class CMatchSyntax;
 
43061
namespace Puma {
 
43062
 
 
43063
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43064
class CT_MembList : public CT_DeclList, public CSemScope {
 
43065
#line 43066 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43066
  friend class ::CCExprResolve;
 
43067
  friend class ::CExprResolve;
 
43068
  friend class ::WinIfExists;
 
43069
  friend class ::WinImportHandler;
 
43070
  friend class ::WinMacros;
 
43071
  friend class ::WinAsm;
 
43072
  friend class ::WinDeclSpecs;
 
43073
  friend class ::WinMemberExplSpec;
 
43074
  friend class ::WinTypeKeywords;
 
43075
  friend class ::WinFriend;
 
43076
  friend class ::ExtAC;
 
43077
  friend class ::ExtACBuilderCoupling;
 
43078
  friend class ::ExtACSyntaxCoupling;
 
43079
  friend class ::ExtACTree;
 
43080
  friend class ::ExtACKeywords;
 
43081
  friend class ::ExtGnu;
 
43082
  friend class ::PragmaOnceUnitState;
 
43083
  friend class ::PragmaOnce;
 
43084
  friend class ::CMatchSyntax;
 
43085
 
 
43086
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43087
 
 
43088
public:
 
43089
  CT_MembList (int size = 10, int incr = 10) : 
 
43090
    CT_DeclList (size, incr) {}
 
43091
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43092
  static const char *NodeId ();
 
43093
  /** Get the name of the node. Can be compared with NodeId(). */
 
43094
  const char *NodeName () const { return NodeId (); }
 
43095
  /** Get the scope opened by the member declarations list. */
 
43096
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
43097
public:
 
43098
  typedef AC::TLE __AttrTypes;
 
43099
  const char *__attr_name (unsigned i) const { return 0; }
 
43100
  const void *__attr (unsigned __i) const { return 0; }
 
43101
#line 4040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43102
};
 
43103
 
 
43104
/** \class CT_MembInitList CTree.h Puma/CTree.h
 
43105
 *  Tree node representing a constructor initializer list.
 
43106
 *  Example: \code : Base(), m_Member(0) \endcode */
 
43107
 
 
43108
#line 43109 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43109
} // closed Puma
 
43110
class CCExprResolve;
 
43111
class CExprResolve;
 
43112
class WinIfExists;
 
43113
class WinImportHandler;
 
43114
class WinMacros;
 
43115
class WinAsm;
 
43116
class WinDeclSpecs;
 
43117
class WinMemberExplSpec;
 
43118
class WinTypeKeywords;
 
43119
class WinFriend;
 
43120
class ExtAC;
 
43121
class ExtACBuilderCoupling;
 
43122
class ExtACSyntaxCoupling;
 
43123
class ExtACTree;
 
43124
class ExtACKeywords;
 
43125
class ExtGnu;
 
43126
class PragmaOnceUnitState;
 
43127
class PragmaOnce;
 
43128
class CMatchSyntax;
 
43129
namespace Puma {
 
43130
 
 
43131
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43132
class CT_MembInitList : public CT_List, public CSemScope {
 
43133
#line 43134 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43134
  friend class ::CCExprResolve;
 
43135
  friend class ::CExprResolve;
 
43136
  friend class ::WinIfExists;
 
43137
  friend class ::WinImportHandler;
 
43138
  friend class ::WinMacros;
 
43139
  friend class ::WinAsm;
 
43140
  friend class ::WinDeclSpecs;
 
43141
  friend class ::WinMemberExplSpec;
 
43142
  friend class ::WinTypeKeywords;
 
43143
  friend class ::WinFriend;
 
43144
  friend class ::ExtAC;
 
43145
  friend class ::ExtACBuilderCoupling;
 
43146
  friend class ::ExtACSyntaxCoupling;
 
43147
  friend class ::ExtACTree;
 
43148
  friend class ::ExtACKeywords;
 
43149
  friend class ::ExtGnu;
 
43150
  friend class ::PragmaOnceUnitState;
 
43151
  friend class ::PragmaOnce;
 
43152
  friend class ::CMatchSyntax;
 
43153
 
 
43154
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43155
 
 
43156
public:
 
43157
  /** Constructor.
 
43158
   *  \param size The initial size of the list. */
 
43159
  CT_MembInitList (int size = 2) : 
 
43160
    CT_List (size, 2, CT_List::OPEN) {}
 
43161
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43162
  static const char *NodeId ();
 
43163
  /** Get the name of the node. Can be compared with NodeId(). */
 
43164
  const char *NodeName () const { return NodeId (); }
 
43165
  /** Get the scope opened by the member initializer list. */
 
43166
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
43167
public:
 
43168
  typedef AC::TLE __AttrTypes;
 
43169
  const char *__attr_name (unsigned i) const { return 0; }
 
43170
  const void *__attr (unsigned __i) const { return 0; }
 
43171
#line 4057 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43172
};
 
43173
 
 
43174
/** \class CT_MembInit CTree.h Puma/CTree.h
 
43175
 *  Tree node representing a member initializer.
 
43176
 *  Example: \code m_Member(0) \endcode */
 
43177
 
 
43178
#line 43179 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43179
} // closed Puma
 
43180
class CCExprResolve;
 
43181
class CExprResolve;
 
43182
class WinIfExists;
 
43183
class WinImportHandler;
 
43184
class WinMacros;
 
43185
class WinAsm;
 
43186
class WinDeclSpecs;
 
43187
class WinMemberExplSpec;
 
43188
class WinTypeKeywords;
 
43189
class WinFriend;
 
43190
class ExtAC;
 
43191
class ExtACBuilderCoupling;
 
43192
class ExtACSyntaxCoupling;
 
43193
class ExtACTree;
 
43194
class ExtACKeywords;
 
43195
class ExtGnu;
 
43196
class PragmaOnceUnitState;
 
43197
class PragmaOnce;
 
43198
class CMatchSyntax;
 
43199
namespace Puma {
 
43200
 
 
43201
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43202
 
 
43203
#line 43204 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43204
} // closed Puma
 
43205
 
 
43206
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
43207
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
43208
#include "CCExprResolveH.ah"
 
43209
#endif
 
43210
namespace Puma {
 
43211
 
 
43212
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43213
 
 
43214
#line 43215 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43215
} // closed Puma
 
43216
 
 
43217
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
43218
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
43219
#include "CExprResolveH.ah"
 
43220
#endif
 
43221
namespace Puma {
 
43222
 
 
43223
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43224
class CT_MembInit : public CT_Expression, public CSemObject {
 
43225
#line 43226 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43226
  friend class ::CCExprResolve;
 
43227
  friend class ::CExprResolve;
 
43228
  friend class ::WinIfExists;
 
43229
  friend class ::WinImportHandler;
 
43230
  friend class ::WinMacros;
 
43231
  friend class ::WinAsm;
 
43232
  friend class ::WinDeclSpecs;
 
43233
  friend class ::WinMemberExplSpec;
 
43234
  friend class ::WinTypeKeywords;
 
43235
  friend class ::WinFriend;
 
43236
  friend class ::ExtAC;
 
43237
  friend class ::ExtACBuilderCoupling;
 
43238
  friend class ::ExtACSyntaxCoupling;
 
43239
  friend class ::ExtACTree;
 
43240
  friend class ::ExtACKeywords;
 
43241
  friend class ::ExtGnu;
 
43242
  friend class ::PragmaOnceUnitState;
 
43243
  friend class ::PragmaOnce;
 
43244
  friend class ::CMatchSyntax;
 
43245
 
 
43246
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43247
 
 
43248
  CTree *sons[2]; // name, init
 
43249
 
 
43250
public:
 
43251
  /** Constructor.
 
43252
   *  \param n The name of the member.
 
43253
   *  \param i The member initializer. */
 
43254
  CT_MembInit (CTree *n, CTree *i) { AddSon (sons[0], n); AddSon (sons[1], i); }
 
43255
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43256
  static const char *NodeId ();
 
43257
  /** Get the name of the node. Can be compared with NodeId(). */
 
43258
  const char *NodeName () const { return NodeId (); }
 
43259
  /** Get the number of sons. */
 
43260
  int Sons () const { return 2; }
 
43261
  /** Get the n-th son.
 
43262
   *  \param n The index of the son.
 
43263
   *  \return The n-th son or NULL. */
 
43264
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
43265
  /** Replace a son.
 
43266
   *  \param old_son The son to replace.
 
43267
   *  \param new_son The new son. */
 
43268
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43269
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
43270
  }
 
43271
  /** Get the name of the member. */
 
43272
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
43273
  /** Get the initializer. */
 
43274
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
43275
  /** Get the semantic information about the initialized member. */
 
43276
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
43277
   private:
 
43278
  typedef CT_MembInit CCExprResolveExpr;
 
43279
 
 
43280
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
43281
 public :
 
43282
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
43283
  typedef CT_MembInit CExprResolveExpr;
 
43284
 
 
43285
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
43286
 public :
 
43287
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
43288
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
43289
  const char *__attr_name (unsigned i) const {
 
43290
    static const char *names[] = { "sons" }; return names[i];
 
43291
  }
 
43292
  const void *__attr (unsigned __i) const {
 
43293
    switch (__i) { case 0: return &sons; default: return 0; }
 
43294
  }
 
43295
#line 4092 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43296
};
 
43297
 
 
43298
/** \class CT_BaseSpecList CTree.h Puma/CTree.h
 
43299
 *  Tree node representing a base specifier list.
 
43300
 *  Example: \code : X, Y, Z \endcode */
 
43301
 
 
43302
#line 43303 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43303
} // closed Puma
 
43304
class CCExprResolve;
 
43305
class CExprResolve;
 
43306
class WinIfExists;
 
43307
class WinImportHandler;
 
43308
class WinMacros;
 
43309
class WinAsm;
 
43310
class WinDeclSpecs;
 
43311
class WinMemberExplSpec;
 
43312
class WinTypeKeywords;
 
43313
class WinFriend;
 
43314
class ExtAC;
 
43315
class ExtACBuilderCoupling;
 
43316
class ExtACSyntaxCoupling;
 
43317
class ExtACTree;
 
43318
class ExtACKeywords;
 
43319
class ExtGnu;
 
43320
class PragmaOnceUnitState;
 
43321
class PragmaOnce;
 
43322
class CMatchSyntax;
 
43323
namespace Puma {
 
43324
 
 
43325
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43326
class CT_BaseSpecList : public CT_List {
 
43327
#line 43328 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43328
  friend class ::CCExprResolve;
 
43329
  friend class ::CExprResolve;
 
43330
  friend class ::WinIfExists;
 
43331
  friend class ::WinImportHandler;
 
43332
  friend class ::WinMacros;
 
43333
  friend class ::WinAsm;
 
43334
  friend class ::WinDeclSpecs;
 
43335
  friend class ::WinMemberExplSpec;
 
43336
  friend class ::WinTypeKeywords;
 
43337
  friend class ::WinFriend;
 
43338
  friend class ::ExtAC;
 
43339
  friend class ::ExtACBuilderCoupling;
 
43340
  friend class ::ExtACSyntaxCoupling;
 
43341
  friend class ::ExtACTree;
 
43342
  friend class ::ExtACKeywords;
 
43343
  friend class ::ExtGnu;
 
43344
  friend class ::PragmaOnceUnitState;
 
43345
  friend class ::PragmaOnce;
 
43346
  friend class ::CMatchSyntax;
 
43347
 
 
43348
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43349
 
 
43350
public:
 
43351
  /** Constructor.
 
43352
   *  \param size The initial size of the list. */
 
43353
  CT_BaseSpecList (int size = 2) : 
 
43354
    CT_List (size, 2, CT_List::OPEN|CT_List::SEPARATORS) {}
 
43355
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43356
  static const char *NodeId ();
 
43357
  /** Get the name of the node. Can be compared with NodeId(). */
 
43358
  const char *NodeName () const { return NodeId (); }
 
43359
public:
 
43360
  typedef AC::TLE __AttrTypes;
 
43361
  const char *__attr_name (unsigned i) const { return 0; }
 
43362
  const void *__attr (unsigned __i) const { return 0; }
 
43363
#line 4107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43364
};
 
43365
 
 
43366
/** \class CT_AccessSpec CTree.h Puma/CTree.h
 
43367
 *  Tree node representing an access specifier.
 
43368
 *  Example: \code public: \endcode */
 
43369
 
 
43370
#line 43371 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43371
} // closed Puma
 
43372
class CCExprResolve;
 
43373
class CExprResolve;
 
43374
class WinIfExists;
 
43375
class WinImportHandler;
 
43376
class WinMacros;
 
43377
class WinAsm;
 
43378
class WinDeclSpecs;
 
43379
class WinMemberExplSpec;
 
43380
class WinTypeKeywords;
 
43381
class WinFriend;
 
43382
class ExtAC;
 
43383
class ExtACBuilderCoupling;
 
43384
class ExtACSyntaxCoupling;
 
43385
class ExtACTree;
 
43386
class ExtACKeywords;
 
43387
class ExtGnu;
 
43388
class PragmaOnceUnitState;
 
43389
class PragmaOnce;
 
43390
class CMatchSyntax;
 
43391
namespace Puma {
 
43392
 
 
43393
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43394
class CT_AccessSpec : public CTree {
 
43395
#line 43396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43396
  friend class ::CCExprResolve;
 
43397
  friend class ::CExprResolve;
 
43398
  friend class ::WinIfExists;
 
43399
  friend class ::WinImportHandler;
 
43400
  friend class ::WinMacros;
 
43401
  friend class ::WinAsm;
 
43402
  friend class ::WinDeclSpecs;
 
43403
  friend class ::WinMemberExplSpec;
 
43404
  friend class ::WinTypeKeywords;
 
43405
  friend class ::WinFriend;
 
43406
  friend class ::ExtAC;
 
43407
  friend class ::ExtACBuilderCoupling;
 
43408
  friend class ::ExtACSyntaxCoupling;
 
43409
  friend class ::ExtACTree;
 
43410
  friend class ::ExtACKeywords;
 
43411
  friend class ::ExtGnu;
 
43412
  friend class ::PragmaOnceUnitState;
 
43413
  friend class ::PragmaOnce;
 
43414
  friend class ::CMatchSyntax;
 
43415
 
 
43416
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43417
 
 
43418
  CTree *sons[2]; // access, colon
 
43419
 
 
43420
public:
 
43421
  /** Constructor.
 
43422
   *  \param a The access specifier, i.e. 'public', 'private', or 'protected'.
 
43423
   *  \param c The trailing colon. */
 
43424
  CT_AccessSpec (CTree *a, CTree *c) { AddSon (sons[0], a); AddSon (sons[1], c); }
 
43425
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43426
  static const char *NodeId ();
 
43427
  /** Get the name of the node. Can be compared with NodeId(). */
 
43428
  const char *NodeName () const { return NodeId (); }
 
43429
  /** Get the number of sons. */
 
43430
  int Sons () const { return 2; }
 
43431
  /** Get the n-th son.
 
43432
   *  \param n The index of the son.
 
43433
   *  \return The n-th son or NULL. */
 
43434
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
43435
  /** Get the access specifier type (token type). */
 
43436
  int Access () const { return sons[0]->token ()->type (); }
 
43437
  /** Replace a son.
 
43438
   *  \param old_son The son to replace.
 
43439
   *  \param new_son The new son. */
 
43440
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43441
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
43442
  }
 
43443
public:
 
43444
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
43445
  const char *__attr_name (unsigned i) const {
 
43446
    static const char *names[] = { "sons" }; return names[i];
 
43447
  }
 
43448
  const void *__attr (unsigned __i) const {
 
43449
    switch (__i) { case 0: return &sons; default: return 0; }
 
43450
  }
 
43451
#line 4138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43452
};
 
43453
 
 
43454
/** \class CT_BaseSpec CTree.h Puma/CTree.h
 
43455
 *  Tree node representing a base class specifier.
 
43456
 *  Example: \code public X \endcode */
 
43457
 
 
43458
#line 43459 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43459
} // closed Puma
 
43460
class CCExprResolve;
 
43461
class CExprResolve;
 
43462
class WinIfExists;
 
43463
class WinImportHandler;
 
43464
class WinMacros;
 
43465
class WinAsm;
 
43466
class WinDeclSpecs;
 
43467
class WinMemberExplSpec;
 
43468
class WinTypeKeywords;
 
43469
class WinFriend;
 
43470
class ExtAC;
 
43471
class ExtACBuilderCoupling;
 
43472
class ExtACSyntaxCoupling;
 
43473
class ExtACTree;
 
43474
class ExtACKeywords;
 
43475
class ExtGnu;
 
43476
class PragmaOnceUnitState;
 
43477
class PragmaOnce;
 
43478
class CMatchSyntax;
 
43479
namespace Puma {
 
43480
 
 
43481
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43482
class CT_BaseSpec : public CTree {
 
43483
#line 43484 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43484
  friend class ::CCExprResolve;
 
43485
  friend class ::CExprResolve;
 
43486
  friend class ::WinIfExists;
 
43487
  friend class ::WinImportHandler;
 
43488
  friend class ::WinMacros;
 
43489
  friend class ::WinAsm;
 
43490
  friend class ::WinDeclSpecs;
 
43491
  friend class ::WinMemberExplSpec;
 
43492
  friend class ::WinTypeKeywords;
 
43493
  friend class ::WinFriend;
 
43494
  friend class ::ExtAC;
 
43495
  friend class ::ExtACBuilderCoupling;
 
43496
  friend class ::ExtACSyntaxCoupling;
 
43497
  friend class ::ExtACTree;
 
43498
  friend class ::ExtACKeywords;
 
43499
  friend class ::ExtGnu;
 
43500
  friend class ::PragmaOnceUnitState;
 
43501
  friend class ::PragmaOnce;
 
43502
  friend class ::CMatchSyntax;
 
43503
 
 
43504
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43505
 
 
43506
  CTree *sons[3]; // virtual, access, name
 
43507
 
 
43508
public:
 
43509
  /** Constructor.
 
43510
   *  \param v Optional keyword 'virtual'.
 
43511
   *  \param a The optional access specifier.
 
43512
   *  \param n The name of the base class. */
 
43513
  CT_BaseSpec (CTree *v, CTree *a, CTree *n) {
 
43514
    AddSon (sons[0], v); AddSon (sons[1], a); AddSon (sons[2], n); 
 
43515
  }
 
43516
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43517
  static const char *NodeId ();
 
43518
  /** Get the name of the node. Can be compared with NodeId(). */
 
43519
  const char *NodeName () const { return NodeId (); }
 
43520
  /** Get the number of sons. */
 
43521
  int Sons () const { return CTree::Sons (sons, 3); }
 
43522
  /** Get the n-th son.
 
43523
   *  \param n The index of the son.
 
43524
   *  \return The n-th son or NULL. */
 
43525
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
43526
  /** Get the type of the access specifier (token type). */
 
43527
  int Access () const { return sons[1]->token ()->type (); }
 
43528
  /** The access specifier. */
 
43529
  CTree *AccessSpec () const { return sons[1]; }
 
43530
  /** Get the keyword 'virtual'. */
 
43531
  CTree *Virtual () const { return sons[0]; }
 
43532
  /** Get the name of the base class. */
 
43533
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
43534
  /** Replace a son.
 
43535
   *  \param old_son The son to replace.
 
43536
   *  \param new_son The new son. */
 
43537
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43538
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
43539
  }
 
43540
public:
 
43541
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
43542
  const char *__attr_name (unsigned i) const {
 
43543
    static const char *names[] = { "sons" }; return names[i];
 
43544
  }
 
43545
  const void *__attr (unsigned __i) const {
 
43546
    switch (__i) { case 0: return &sons; default: return 0; }
 
43547
  }
 
43548
#line 4178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43549
};
 
43550
 
 
43551
/** \class CT_AccessDecl CTree.h Puma/CTree.h
 
43552
 *  Tree node representing a member access declaration.
 
43553
 *  Example: \code m_BaseClassMember; \endcode */
 
43554
 
 
43555
#line 43556 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43556
} // closed Puma
 
43557
class CCExprResolve;
 
43558
class CExprResolve;
 
43559
class WinIfExists;
 
43560
class WinImportHandler;
 
43561
class WinMacros;
 
43562
class WinAsm;
 
43563
class WinDeclSpecs;
 
43564
class WinMemberExplSpec;
 
43565
class WinTypeKeywords;
 
43566
class WinFriend;
 
43567
class ExtAC;
 
43568
class ExtACBuilderCoupling;
 
43569
class ExtACSyntaxCoupling;
 
43570
class ExtACTree;
 
43571
class ExtACKeywords;
 
43572
class ExtGnu;
 
43573
class PragmaOnceUnitState;
 
43574
class PragmaOnce;
 
43575
class CMatchSyntax;
 
43576
namespace Puma {
 
43577
 
 
43578
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43579
class CT_AccessDecl : public CT_Decl {
 
43580
#line 43581 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43581
  friend class ::CCExprResolve;
 
43582
  friend class ::CExprResolve;
 
43583
  friend class ::WinIfExists;
 
43584
  friend class ::WinImportHandler;
 
43585
  friend class ::WinMacros;
 
43586
  friend class ::WinAsm;
 
43587
  friend class ::WinDeclSpecs;
 
43588
  friend class ::WinMemberExplSpec;
 
43589
  friend class ::WinTypeKeywords;
 
43590
  friend class ::WinFriend;
 
43591
  friend class ::ExtAC;
 
43592
  friend class ::ExtACBuilderCoupling;
 
43593
  friend class ::ExtACSyntaxCoupling;
 
43594
  friend class ::ExtACTree;
 
43595
  friend class ::ExtACKeywords;
 
43596
  friend class ::ExtGnu;
 
43597
  friend class ::PragmaOnceUnitState;
 
43598
  friend class ::PragmaOnce;
 
43599
  friend class ::CMatchSyntax;
 
43600
 
 
43601
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43602
 
 
43603
  CTree *sons[2]; // name, semi_colon
 
43604
 
 
43605
public:
 
43606
  /** Constructor.
 
43607
   *  \param n The name of the base class member.
 
43608
   *  \param s The trailing semi-colon. */
 
43609
  CT_AccessDecl (CTree *n, CTree *s) { AddSon (sons[0], n); AddSon (sons[1], s); }
 
43610
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43611
  static const char *NodeId ();
 
43612
  /** Get the name of the node. Can be compared with NodeId(). */
 
43613
  const char *NodeName () const { return NodeId (); }
 
43614
  /** Get the number of sons. */
 
43615
  int Sons () const { return 2; }
 
43616
  /** Get the n-th son.
 
43617
   *  \param n The index of the son.
 
43618
   *  \return The n-th son or NULL. */
 
43619
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
43620
  /** Get the name of the base class member. */
 
43621
  CT_QualName *Member () const { return (CT_QualName*)sons[0]; }
 
43622
  /** Replace a son.
 
43623
   *  \param old_son The son to replace.
 
43624
   *  \param new_son The new son. */
 
43625
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43626
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
43627
  }
 
43628
public:
 
43629
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
43630
  const char *__attr_name (unsigned i) const {
 
43631
    static const char *names[] = { "sons" }; return names[i];
 
43632
  }
 
43633
  const void *__attr (unsigned __i) const {
 
43634
    switch (__i) { case 0: return &sons; default: return 0; }
 
43635
  }
 
43636
#line 4209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43637
};
 
43638
 
 
43639
/** \class CT_UsingDecl CTree.h Puma/CTree.h
 
43640
 *  Tree node representing a using declaration.
 
43641
 *  Example: \code using Base::m_Member; \endcode */
 
43642
 
 
43643
#line 43644 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43644
} // closed Puma
 
43645
class CCExprResolve;
 
43646
class CExprResolve;
 
43647
class WinIfExists;
 
43648
class WinImportHandler;
 
43649
class WinMacros;
 
43650
class WinAsm;
 
43651
class WinDeclSpecs;
 
43652
class WinMemberExplSpec;
 
43653
class WinTypeKeywords;
 
43654
class WinFriend;
 
43655
class ExtAC;
 
43656
class ExtACBuilderCoupling;
 
43657
class ExtACSyntaxCoupling;
 
43658
class ExtACTree;
 
43659
class ExtACKeywords;
 
43660
class ExtGnu;
 
43661
class PragmaOnceUnitState;
 
43662
class PragmaOnce;
 
43663
class CMatchSyntax;
 
43664
namespace Puma {
 
43665
 
 
43666
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43667
class CT_UsingDecl : public CT_AccessDecl {
 
43668
#line 43669 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43669
  friend class ::CCExprResolve;
 
43670
  friend class ::CExprResolve;
 
43671
  friend class ::WinIfExists;
 
43672
  friend class ::WinImportHandler;
 
43673
  friend class ::WinMacros;
 
43674
  friend class ::WinAsm;
 
43675
  friend class ::WinDeclSpecs;
 
43676
  friend class ::WinMemberExplSpec;
 
43677
  friend class ::WinTypeKeywords;
 
43678
  friend class ::WinFriend;
 
43679
  friend class ::ExtAC;
 
43680
  friend class ::ExtACBuilderCoupling;
 
43681
  friend class ::ExtACSyntaxCoupling;
 
43682
  friend class ::ExtACTree;
 
43683
  friend class ::ExtACKeywords;
 
43684
  friend class ::ExtGnu;
 
43685
  friend class ::PragmaOnceUnitState;
 
43686
  friend class ::PragmaOnce;
 
43687
  friend class ::CMatchSyntax;
 
43688
 
 
43689
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43690
 
 
43691
  CTree *sons[2]; // using, typename
 
43692
 
 
43693
public:
 
43694
  /** Constructor.
 
43695
   *  \param u The keyword 'using'.
 
43696
   *  \param n The name of the entity.
 
43697
   *  \param s The trailing semi-colon. */
 
43698
  CT_UsingDecl (CTree *u, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
43699
    AddSon (sons[0], u); AddSon (sons[1], 0); 
 
43700
  }
 
43701
  /** Constructor.
 
43702
   *  \param u The keyword 'using'.
 
43703
   *  \param t The keyword 'typename'.
 
43704
   *  \param n The name of the entity.
 
43705
   *  \param s The trailing semi-colon. */
 
43706
  CT_UsingDecl (CTree *u, CTree *t, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
43707
    AddSon (sons[0], u); AddSon (sons[1], t); 
 
43708
  }
 
43709
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43710
  static const char *NodeId ();
 
43711
  /** Get the name of the node. Can be compared with NodeId(). */
 
43712
  const char *NodeName () const { return NodeId (); }
 
43713
  /** Get the number of sons. */
 
43714
  int Sons () const { return CTree::Sons (sons, 2) + CT_AccessDecl::Sons (); }
 
43715
  /** Get the n-th son.
 
43716
   *  \param n The index of the son.
 
43717
   *  \return The n-th son or NULL. */
 
43718
  CTree *Son (int n) const {
 
43719
    int num = CTree::Sons (sons, 2);
 
43720
    CTree *result = CTree::Son (sons, 2, n);
 
43721
    return result ? result : CT_AccessDecl::Son (n-num);
 
43722
  }
 
43723
  /** Get the keyword 'typename'. */
 
43724
  CTree *Typename () const { return sons[1]; }
 
43725
  /** Replace a son.
 
43726
   *  \param old_son The son to replace.
 
43727
   *  \param new_son The new son. */
 
43728
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43729
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
43730
    CT_AccessDecl::ReplaceSon (old_son, new_son);
 
43731
  }
 
43732
public:
 
43733
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
43734
  const char *__attr_name (unsigned i) const {
 
43735
    static const char *names[] = { "sons" }; return names[i];
 
43736
  }
 
43737
  const void *__attr (unsigned __i) const {
 
43738
    switch (__i) { case 0: return &sons; default: return 0; }
 
43739
  }
 
43740
#line 4256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43741
};
 
43742
 
 
43743
/*****************************************************************************/
 
43744
/*                                                                           */
 
43745
/*                              Wildcards                                    */
 
43746
/*                                                                           */
 
43747
/*****************************************************************************/
 
43748
 
 
43749
/** \class CT_Any CTree.h Puma/CTree.h
 
43750
 *  Tree node representing a wildcard. */
 
43751
 
 
43752
#line 43753 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43753
} // closed Puma
 
43754
class CCExprResolve;
 
43755
class CExprResolve;
 
43756
class WinIfExists;
 
43757
class WinImportHandler;
 
43758
class WinMacros;
 
43759
class WinAsm;
 
43760
class WinDeclSpecs;
 
43761
class WinMemberExplSpec;
 
43762
class WinTypeKeywords;
 
43763
class WinFriend;
 
43764
class ExtAC;
 
43765
class ExtACBuilderCoupling;
 
43766
class ExtACSyntaxCoupling;
 
43767
class ExtACTree;
 
43768
class ExtACKeywords;
 
43769
class ExtGnu;
 
43770
class PragmaOnceUnitState;
 
43771
class PragmaOnce;
 
43772
class CMatchSyntax;
 
43773
namespace Puma {
 
43774
 
 
43775
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43776
class CT_Any : public CTree {
 
43777
#line 43778 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43778
  friend class ::CCExprResolve;
 
43779
  friend class ::CExprResolve;
 
43780
  friend class ::WinIfExists;
 
43781
  friend class ::WinImportHandler;
 
43782
  friend class ::WinMacros;
 
43783
  friend class ::WinAsm;
 
43784
  friend class ::WinDeclSpecs;
 
43785
  friend class ::WinMemberExplSpec;
 
43786
  friend class ::WinTypeKeywords;
 
43787
  friend class ::WinFriend;
 
43788
  friend class ::ExtAC;
 
43789
  friend class ::ExtACBuilderCoupling;
 
43790
  friend class ::ExtACSyntaxCoupling;
 
43791
  friend class ::ExtACTree;
 
43792
  friend class ::ExtACKeywords;
 
43793
  friend class ::ExtGnu;
 
43794
  friend class ::PragmaOnceUnitState;
 
43795
  friend class ::PragmaOnce;
 
43796
  friend class ::CMatchSyntax;
 
43797
 
 
43798
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43799
 
 
43800
  CTree *sons[2]; // keyword, extension
 
43801
 
 
43802
public:
 
43803
  /** Constructor.
 
43804
   *  \param k The wildcard keyword.
 
43805
   *  \param e The extension. */
 
43806
  CT_Any (CTree *k, CTree *e = (CTree*)0) { AddSon (sons[0], k); AddSon (sons[1], e); }
 
43807
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43808
  static const char *NodeId ();
 
43809
  /** Get the name of the node. Can be compared with NodeId(). */
 
43810
  const char *NodeName () const { return NodeId (); }
 
43811
  /** Get the number of sons. */
 
43812
  int Sons () const { return CTree::Sons (sons, 2); }
 
43813
  /** Get the n-th son.
 
43814
   *  \param n The index of the son.
 
43815
   *  \return The n-th son or NULL. */
 
43816
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
43817
  /** Replace a son.
 
43818
   *  \param old_son The son to replace.
 
43819
   *  \param new_son The new son. */
 
43820
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43821
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
43822
  }
 
43823
  /** Get the type of the wildcard (token type). */
 
43824
  int AnyType () const { return sons[0]->token ()->type (); }
 
43825
  /** Get the extension. */
 
43826
  CT_AnyExtension *Extension () const { return (CT_AnyExtension*)sons[1]; }
 
43827
public:
 
43828
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
43829
  const char *__attr_name (unsigned i) const {
 
43830
    static const char *names[] = { "sons" }; return names[i];
 
43831
  }
 
43832
  const void *__attr (unsigned __i) const {
 
43833
    switch (__i) { case 0: return &sons; default: return 0; }
 
43834
  }
 
43835
#line 4294 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43836
};
 
43837
 
 
43838
/** \class CT_AnyList CTree.h Puma/CTree.h
 
43839
 *  Tree node representing a list wildcard. */
 
43840
 
 
43841
#line 43842 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43842
} // closed Puma
 
43843
class CCExprResolve;
 
43844
class CExprResolve;
 
43845
class WinIfExists;
 
43846
class WinImportHandler;
 
43847
class WinMacros;
 
43848
class WinAsm;
 
43849
class WinDeclSpecs;
 
43850
class WinMemberExplSpec;
 
43851
class WinTypeKeywords;
 
43852
class WinFriend;
 
43853
class ExtAC;
 
43854
class ExtACBuilderCoupling;
 
43855
class ExtACSyntaxCoupling;
 
43856
class ExtACTree;
 
43857
class ExtACKeywords;
 
43858
class ExtGnu;
 
43859
class PragmaOnceUnitState;
 
43860
class PragmaOnce;
 
43861
class CMatchSyntax;
 
43862
namespace Puma {
 
43863
 
 
43864
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43865
class CT_AnyList : public CT_Any {
 
43866
#line 43867 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43867
  friend class ::CCExprResolve;
 
43868
  friend class ::CExprResolve;
 
43869
  friend class ::WinIfExists;
 
43870
  friend class ::WinImportHandler;
 
43871
  friend class ::WinMacros;
 
43872
  friend class ::WinAsm;
 
43873
  friend class ::WinDeclSpecs;
 
43874
  friend class ::WinMemberExplSpec;
 
43875
  friend class ::WinTypeKeywords;
 
43876
  friend class ::WinFriend;
 
43877
  friend class ::ExtAC;
 
43878
  friend class ::ExtACBuilderCoupling;
 
43879
  friend class ::ExtACSyntaxCoupling;
 
43880
  friend class ::ExtACTree;
 
43881
  friend class ::ExtACKeywords;
 
43882
  friend class ::ExtGnu;
 
43883
  friend class ::PragmaOnceUnitState;
 
43884
  friend class ::PragmaOnce;
 
43885
  friend class ::CMatchSyntax;
 
43886
 
 
43887
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43888
 
 
43889
public:
 
43890
  /** Constructor.
 
43891
   *  \param k The wildcard keyword.
 
43892
   *  \param e The extension. */
 
43893
  CT_AnyList (CTree *k, CTree *e = (CTree*)0) : CT_Any (k, e) {}
 
43894
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43895
  static const char *NodeId ();
 
43896
  /** Get the name of the node. Can be compared with NodeId(). */
 
43897
  const char *NodeName () const { return NodeId (); }
 
43898
public:
 
43899
  typedef AC::TLE __AttrTypes;
 
43900
  const char *__attr_name (unsigned i) const { return 0; }
 
43901
  const void *__attr (unsigned __i) const { return 0; }
 
43902
#line 4308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43903
};
 
43904
 
 
43905
/** \class CT_AnyExtension CTree.h Puma/CTree.h
 
43906
 *  Tree node representing a wildcard extension. */
 
43907
 
 
43908
#line 43909 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43909
} // closed Puma
 
43910
class CCExprResolve;
 
43911
class CExprResolve;
 
43912
class WinIfExists;
 
43913
class WinImportHandler;
 
43914
class WinMacros;
 
43915
class WinAsm;
 
43916
class WinDeclSpecs;
 
43917
class WinMemberExplSpec;
 
43918
class WinTypeKeywords;
 
43919
class WinFriend;
 
43920
class ExtAC;
 
43921
class ExtACBuilderCoupling;
 
43922
class ExtACSyntaxCoupling;
 
43923
class ExtACTree;
 
43924
class ExtACKeywords;
 
43925
class ExtGnu;
 
43926
class PragmaOnceUnitState;
 
43927
class PragmaOnce;
 
43928
class CMatchSyntax;
 
43929
namespace Puma {
 
43930
 
 
43931
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43932
class CT_AnyExtension : public CTree, public CSemValue {
 
43933
#line 43934 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
43934
  friend class ::CCExprResolve;
 
43935
  friend class ::CExprResolve;
 
43936
  friend class ::WinIfExists;
 
43937
  friend class ::WinImportHandler;
 
43938
  friend class ::WinMacros;
 
43939
  friend class ::WinAsm;
 
43940
  friend class ::WinDeclSpecs;
 
43941
  friend class ::WinMemberExplSpec;
 
43942
  friend class ::WinTypeKeywords;
 
43943
  friend class ::WinFriend;
 
43944
  friend class ::ExtAC;
 
43945
  friend class ::ExtACBuilderCoupling;
 
43946
  friend class ::ExtACSyntaxCoupling;
 
43947
  friend class ::ExtACTree;
 
43948
  friend class ::ExtACKeywords;
 
43949
  friend class ::ExtGnu;
 
43950
  friend class ::PragmaOnceUnitState;
 
43951
  friend class ::PragmaOnce;
 
43952
  friend class ::CMatchSyntax;
 
43953
 
 
43954
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43955
 
 
43956
  CTree *sons[5]; // open, string, comma, cond, close
 
43957
 
 
43958
public:
 
43959
  /** Constructor.
 
43960
   *  \param o Left parenthesis before the extension. 
 
43961
   *  \param n The name of the extension.
 
43962
   *  \param co The comma between the name and the condition. 
 
43963
   *  \param c The condition.
 
43964
   *  \param cr Right parenthesis behind the extension. */
 
43965
  CT_AnyExtension (CTree *o, CTree *n, CTree *co, CTree *c, CTree *cr) {
 
43966
    AddSon (sons[0], o); AddSon (sons[1], n); AddSon (sons[2], co); 
 
43967
    AddSon (sons[3], c); AddSon (sons[4], cr); 
 
43968
  }
 
43969
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43970
  static const char *NodeId ();
 
43971
  /** Get the name of the node. Can be compared with NodeId(). */
 
43972
  const char *NodeName () const { return NodeId (); }
 
43973
  /** Get the number of sons. */
 
43974
  int Sons () const { return CTree::Sons (sons, 5); }
 
43975
  /** Get the n-th son.
 
43976
   *  \param n The index of the son.
 
43977
   *  \return The n-th son or NULL. */
 
43978
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
43979
  /** Replace a son.
 
43980
   *  \param old_son The son to replace.
 
43981
   *  \param new_son The new son. */
 
43982
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43983
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
43984
  }
 
43985
  /** Get the condition. */
 
43986
  CTree *Condition () const { return sons[3]; }
 
43987
  /** Get the name string. */
 
43988
  CT_Token *String () const { return (CT_Token*)sons[1]; }
 
43989
  /** Get the extension name. */
 
43990
  const char *Name () const { return value ? value->StrLiteral ()->String () : (const char*)0; }
 
43991
  /** Get the value of the extension (the name). */
 
43992
  CExprValue *Value () const { return value; }
 
43993
  /** Get the semantic value information object. */
 
43994
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
43995
public:
 
43996
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
43997
  const char *__attr_name (unsigned i) const {
 
43998
    static const char *names[] = { "sons" }; return names[i];
 
43999
  }
 
44000
  const void *__attr (unsigned __i) const {
 
44001
    switch (__i) { case 0: return &sons; default: return 0; }
 
44002
  }
 
44003
#line 4352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44004
};
 
44005
 
 
44006
/** \class CT_AnyCondition CTree.h Puma/CTree.h
 
44007
 *  Tree node representing the condition of a wildcard. */
 
44008
 
 
44009
#line 44010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44010
} // closed Puma
 
44011
class CCExprResolve;
 
44012
class CExprResolve;
 
44013
class WinIfExists;
 
44014
class WinImportHandler;
 
44015
class WinMacros;
 
44016
class WinAsm;
 
44017
class WinDeclSpecs;
 
44018
class WinMemberExplSpec;
 
44019
class WinTypeKeywords;
 
44020
class WinFriend;
 
44021
class ExtAC;
 
44022
class ExtACBuilderCoupling;
 
44023
class ExtACSyntaxCoupling;
 
44024
class ExtACTree;
 
44025
class ExtACKeywords;
 
44026
class ExtGnu;
 
44027
class PragmaOnceUnitState;
 
44028
class PragmaOnce;
 
44029
class CMatchSyntax;
 
44030
namespace Puma {
 
44031
 
 
44032
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44033
class CT_AnyCondition : public CTree {
 
44034
#line 44035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44035
  friend class ::CCExprResolve;
 
44036
  friend class ::CExprResolve;
 
44037
  friend class ::WinIfExists;
 
44038
  friend class ::WinImportHandler;
 
44039
  friend class ::WinMacros;
 
44040
  friend class ::WinAsm;
 
44041
  friend class ::WinDeclSpecs;
 
44042
  friend class ::WinMemberExplSpec;
 
44043
  friend class ::WinTypeKeywords;
 
44044
  friend class ::WinFriend;
 
44045
  friend class ::ExtAC;
 
44046
  friend class ::ExtACBuilderCoupling;
 
44047
  friend class ::ExtACSyntaxCoupling;
 
44048
  friend class ::ExtACTree;
 
44049
  friend class ::ExtACKeywords;
 
44050
  friend class ::ExtGnu;
 
44051
  friend class ::PragmaOnceUnitState;
 
44052
  friend class ::PragmaOnce;
 
44053
  friend class ::CMatchSyntax;
 
44054
 
 
44055
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44056
 
 
44057
  CTree *sons[3]; // arg1, arg2, arg3
 
44058
 
 
44059
public:
 
44060
  /** Constructor.
 
44061
   *  \param a1 The first argument.
 
44062
   *  \param a2 The optional second argument.
 
44063
   *  \param a3 The optional third argument. */
 
44064
  CT_AnyCondition (CTree *a1, CTree *a2 = (CTree*)0, CTree *a3 = (CTree*)0) {
 
44065
    AddSon (sons[0], a1); AddSon (sons[1], a2); AddSon (sons[2], a3); 
 
44066
  }
 
44067
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44068
  static const char *NodeId ();
 
44069
  /** Get the name of the node. Can be compared with NodeId(). */
 
44070
  const char *NodeName () const { return NodeId (); }
 
44071
  /** Get the number of sons. */
 
44072
  int Sons () const { return CTree::Sons (sons, 3); }
 
44073
  /** Get the n-th son.
 
44074
   *  \param n The index of the son.
 
44075
   *  \return The n-th son or NULL. */
 
44076
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
44077
  /** Replace a son.
 
44078
   *  \param old_son The son to replace.
 
44079
   *  \param new_son The new son. */
 
44080
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
44081
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
44082
  }
 
44083
public:
 
44084
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
44085
  const char *__attr_name (unsigned i) const {
 
44086
    static const char *names[] = { "sons" }; return names[i];
 
44087
  }
 
44088
  const void *__attr (unsigned __i) const {
 
44089
    switch (__i) { case 0: return &sons; default: return 0; }
 
44090
  }
 
44091
#line 4383 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44092
};
 
44093
 
 
44094
 
 
44095
} // namespace Puma
 
44096
 
 
44097
#endif /* __CTree_h__ */
 
44098
 
 
44099
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Builder.h"
 
44100
namespace Puma {
 
44101
 
 
44102
 
 
44103
class Token;
 
44104
 
 
44105
 
 
44106
/** \class Builder Builder.h Puma/Builder.h
 
44107
 *  %Syntax tree builder base class. Implements the basic infrastructure 
 
44108
 *  for building CTree based syntax trees. 
 
44109
 *
 
44110
 *  Tree builders are used in the syntax analysis to create the nodes 
 
44111
 *  of the syntax tree according to the accepted grammar (see class 
 
44112
 *  Syntax). A syntax tree shall be destroyed using the tree builder 
 
44113
 *  that has created it by calling its method Builder::destroy(CTree*) 
 
44114
 *  with the root node of the syntax tree as its argument.
 
44115
 *
 
44116
 *  The builder is organized as a multi-level stack. If a grammar rule 
 
44117
 *  is parsed then a new stack level is created. The sub-trees of the 
 
44118
 *  syntax tree representing the parsed grammer rule are pushed on this 
 
44119
 *  level of the stack. If the grammar rule is parsed successfully then 
 
44120
 *  these sub-trees are used to build the syntax tree representing the 
 
44121
 *  parsed grammar rule (and thus the corresponding source code). The 
 
44122
 *  current stack level is then discarded and the created syntax tree 
 
44123
 *  is pushed on the stack of the previous level (which is now the top
 
44124
 *  level of the stack). If the grammar rule could not be parsed 
 
44125
 *  successfully then the current stack level is discarded and all 
 
44126
 *  the sub-trees pushed on it are destroyed. */
 
44127
 
 
44128
#line 44129 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44129
} // closed Puma
 
44130
class CCExprResolve;
 
44131
class CExprResolve;
 
44132
class WinIfExists;
 
44133
class WinImportHandler;
 
44134
class WinMacros;
 
44135
class WinAsm;
 
44136
class WinDeclSpecs;
 
44137
class WinMemberExplSpec;
 
44138
class WinTypeKeywords;
 
44139
class WinFriend;
 
44140
class ExtAC;
 
44141
class ExtACBuilderCoupling;
 
44142
class ExtACSyntaxCoupling;
 
44143
class ExtACTree;
 
44144
class ExtACKeywords;
 
44145
class ExtGnu;
 
44146
class PragmaOnceUnitState;
 
44147
class PragmaOnce;
 
44148
class CMatchSyntax;
 
44149
namespace Puma {
 
44150
 
 
44151
#line 57 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Builder.h"
 
44152
class Builder : public PtrStack<CTree> {
 
44153
#line 44154 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44154
  friend class ::CCExprResolve;
 
44155
  friend class ::CExprResolve;
 
44156
  friend class ::WinIfExists;
 
44157
  friend class ::WinImportHandler;
 
44158
  friend class ::WinMacros;
 
44159
  friend class ::WinAsm;
 
44160
  friend class ::WinDeclSpecs;
 
44161
  friend class ::WinMemberExplSpec;
 
44162
  friend class ::WinTypeKeywords;
 
44163
  friend class ::WinFriend;
 
44164
  friend class ::ExtAC;
 
44165
  friend class ::ExtACBuilderCoupling;
 
44166
  friend class ::ExtACSyntaxCoupling;
 
44167
  friend class ::ExtACTree;
 
44168
  friend class ::ExtACKeywords;
 
44169
  friend class ::ExtGnu;
 
44170
  friend class ::PragmaOnceUnitState;
 
44171
  friend class ::PragmaOnce;
 
44172
  friend class ::CMatchSyntax;
 
44173
 
 
44174
#line 57 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Builder.h"
 
44175
 
 
44176
protected:
 
44177
  /** The error collector object. */
 
44178
  ErrorCollector ec;
 
44179
  /** Counter for the created CT_Token object. */
 
44180
  static unsigned long int token_counter;
 
44181
  
 
44182
public:
 
44183
  /** Container class for collecting a set of 
 
44184
   *  syntax tree nodes. */
 
44185
  class Container : public CT_List {
 
44186
#line 44187 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44187
  friend class ::CCExprResolve;
 
44188
  friend class ::CExprResolve;
 
44189
  friend class ::WinIfExists;
 
44190
  friend class ::WinImportHandler;
 
44191
  friend class ::WinMacros;
 
44192
  friend class ::WinAsm;
 
44193
  friend class ::WinDeclSpecs;
 
44194
  friend class ::WinMemberExplSpec;
 
44195
  friend class ::WinTypeKeywords;
 
44196
  friend class ::WinFriend;
 
44197
  friend class ::ExtAC;
 
44198
  friend class ::ExtACBuilderCoupling;
 
44199
  friend class ::ExtACSyntaxCoupling;
 
44200
  friend class ::ExtACTree;
 
44201
  friend class ::ExtACKeywords;
 
44202
  friend class ::ExtGnu;
 
44203
  friend class ::PragmaOnceUnitState;
 
44204
  friend class ::PragmaOnce;
 
44205
  friend class ::CMatchSyntax;
 
44206
 
 
44207
#line 67 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Builder.h"
 
44208
 
 
44209
  public:
 
44210
    /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44211
    static const char *NodeId ();
 
44212
    /** Get the name of the node. Can be compared with NodeId(). */
 
44213
    const char *NodeName () const { return NodeId (); }
 
44214
  public:
 
44215
  typedef AC::TLE __AttrTypes;
 
44216
  const char *__attr_name (unsigned i) const { return 0; }
 
44217
  const void *__attr (unsigned __i) const { return 0; }
 
44218
#line 73 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Builder.h"
 
44219
};
 
44220
 
 
44221
protected:
 
44222
  /** Constructor. */
 
44223
  Builder () {}
 
44224
 
 
44225
public:
 
44226
  /** Destroy the given syntax tree recursively. 
 
44227
   *  \param tree The root node of the syntax tree. */
 
44228
  static void destroy (CTree *tree);
 
44229
 
 
44230
  /** Print the collected error messages on the
 
44231
   *  given error output stream. 
 
44232
   *  \param e The error output stream. */
 
44233
  void errors (ErrorSink &e);
 
44234
 
 
44235
  /** Get the collected errors. */
 
44236
  ErrorSink &err () const;
 
44237
  /** Save the current state. */
 
44238
  void save_state ();
 
44239
  /** Discard the saved state. */
 
44240
  void forget_state ();
 
44241
  /** Restore the saved state. */
 
44242
  void restore_state ();
 
44243
 
 
44244
  /** Create a new CT_Token object for the given token.
 
44245
   *  \param t The token. */
 
44246
  CTree *token (Token *t);
 
44247
  /** Create a new CT_Error object. */
 
44248
  CTree *error ();
 
44249
 
 
44250
  /** Get the current number of nodes on the builder stack. */
 
44251
  int nodes () const;
 
44252
  /** Get the n-th node from the builder stack. 
 
44253
   *  \param n The index of the node. */
 
44254
  CTree *get_node (int n = 0) const;
 
44255
  
 
44256
  /** Reset the token counter. 
 
44257
   *  \param v The new counter value. */
 
44258
  void setTokenCounter (unsigned long v);
 
44259
  /** Get the current token count. */
 
44260
  unsigned long getTokenCounter () const;
 
44261
 
 
44262
protected:
 
44263
  /** Destroy the top tree node of the builder stack. */
 
44264
  void Delete ();
 
44265
 
 
44266
  /** Put all nodes on the builder stack into a Container object. */
 
44267
  CTree *container () const;
 
44268
 
 
44269
  /** Add all nodes on the builder stack to the given list node.
 
44270
   *  \param l The list node. */
 
44271
  CTree *list (CT_List *l) const;
 
44272
  /** Add all nodes of the given container to the given list node.
 
44273
   *  \param l The list node. 
 
44274
   *  \param c The node container. */
 
44275
  CTree *copy_list (CT_List *l, Container *c) const;
 
44276
public:
 
44277
  typedef AC::TL<Puma::ErrorCollector,AC::TLE > __AttrTypes;
 
44278
  const char *__attr_name (unsigned i) const {
 
44279
    static const char *names[] = { "ec" }; return names[i];
 
44280
  }
 
44281
  const void *__attr (unsigned __i) const {
 
44282
    switch (__i) { case 1: return &ec; default: return 0; }
 
44283
  }
 
44284
#line 130 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Builder.h"
 
44285
};
 
44286
 
 
44287
inline int Builder::nodes () const
 
44288
 { return (int)Length (); }
 
44289
 
 
44290
inline CTree *Builder::get_node (int i) const
 
44291
 { return (CTree*)Get (i); }
 
44292
 
 
44293
inline CTree *Builder::container () const
 
44294
 { return list (new Container); }
 
44295
 
 
44296
inline ErrorSink &Builder::err () const { return (ErrorSink&)ec; }
 
44297
inline void Builder::errors (ErrorSink &e) { ec.Shift (e); }
 
44298
 
 
44299
inline void Builder::save_state ()    { New (); }
 
44300
inline void Builder::forget_state ()  { Reject (); }
 
44301
inline void Builder::restore_state () { Destroy (); }
 
44302
 
 
44303
inline void Builder::setTokenCounter (unsigned long num) 
 
44304
 { token_counter = num; }
 
44305
inline unsigned long Builder::getTokenCounter () const 
 
44306
 { return token_counter; }
 
44307
 
 
44308
} // namespace Puma
 
44309
 
 
44310
#endif /* __Builder_h__ */
 
44311
 
 
44312
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenProvider.h"
 
44313
// This file is part of PUMA.
 
44314
// Copyright (C) 1999-2003  The PUMA developer team.
 
44315
//                                                                
 
44316
// This program is free software;  you can redistribute it and/or 
 
44317
// modify it under the terms of the GNU General Public License as 
 
44318
// published by the Free Software Foundation; either version 2 of 
 
44319
// the License, or (at your option) any later version.            
 
44320
//                                                                
 
44321
// This program is distributed in the hope that it will be useful,
 
44322
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
44323
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
44324
// GNU General Public License for more details.                   
 
44325
//                                                                
 
44326
// You should have received a copy of the GNU General Public      
 
44327
// License along with this program; if not, write to the Free     
 
44328
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
44329
// MA  02111-1307  USA                                            
 
44330
 
 
44331
#ifndef __TokenProvider__
 
44332
#define __TokenProvider__
 
44333
 
 
44334
/** \file
 
44335
 *  Token provider abstraction. */
 
44336
 
 
44337
 
 
44338
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenSource.h"
 
44339
// This file is part of PUMA.
 
44340
// Copyright (C) 1999-2003  The PUMA developer team.
 
44341
//                                                                
 
44342
// This program is free software;  you can redistribute it and/or 
 
44343
// modify it under the terms of the GNU General Public License as 
 
44344
// published by the Free Software Foundation; either version 2 of 
 
44345
// the License, or (at your option) any later version.            
 
44346
//                                                                
 
44347
// This program is distributed in the hope that it will be useful,
 
44348
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
44349
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
44350
// GNU General Public License for more details.                   
 
44351
//                                                                
 
44352
// You should have received a copy of the GNU General Public      
 
44353
// License along with this program; if not, write to the Free     
 
44354
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
44355
// MA  02111-1307  USA                                            
 
44356
 
 
44357
#ifndef __Token_Source__
 
44358
#define __Token_Source__
 
44359
 
 
44360
namespace Puma {
 
44361
 
 
44362
 
 
44363
class Token;
 
44364
 
 
44365
 
 
44366
#line 44367 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44367
} // closed Puma
 
44368
class CCExprResolve;
 
44369
class CExprResolve;
 
44370
class WinIfExists;
 
44371
class WinImportHandler;
 
44372
class WinMacros;
 
44373
class WinAsm;
 
44374
class WinDeclSpecs;
 
44375
class WinMemberExplSpec;
 
44376
class WinTypeKeywords;
 
44377
class WinFriend;
 
44378
class ExtAC;
 
44379
class ExtACBuilderCoupling;
 
44380
class ExtACSyntaxCoupling;
 
44381
class ExtACTree;
 
44382
class ExtACKeywords;
 
44383
class ExtGnu;
 
44384
class PragmaOnceUnitState;
 
44385
class PragmaOnce;
 
44386
class CMatchSyntax;
 
44387
namespace Puma {
 
44388
 
 
44389
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenSource.h"
 
44390
class PumaTokenSource {
 
44391
#line 44392 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44392
  friend class ::CCExprResolve;
 
44393
  friend class ::CExprResolve;
 
44394
  friend class ::WinIfExists;
 
44395
  friend class ::WinImportHandler;
 
44396
  friend class ::WinMacros;
 
44397
  friend class ::WinAsm;
 
44398
  friend class ::WinDeclSpecs;
 
44399
  friend class ::WinMemberExplSpec;
 
44400
  friend class ::WinTypeKeywords;
 
44401
  friend class ::WinFriend;
 
44402
  friend class ::ExtAC;
 
44403
  friend class ::ExtACBuilderCoupling;
 
44404
  friend class ::ExtACSyntaxCoupling;
 
44405
  friend class ::ExtACTree;
 
44406
  friend class ::ExtACKeywords;
 
44407
  friend class ::ExtGnu;
 
44408
  friend class ::PragmaOnceUnitState;
 
44409
  friend class ::PragmaOnce;
 
44410
  friend class ::CMatchSyntax;
 
44411
 
 
44412
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenSource.h"
 
44413
 
 
44414
protected:
 
44415
  PumaTokenSource () {}
 
44416
 
 
44417
public:
 
44418
  virtual ~PumaTokenSource () {}
 
44419
  virtual Token *next () = 0;
 
44420
public:
 
44421
  typedef AC::TLE __AttrTypes;
 
44422
  const char *__attr_name (unsigned i) const { return 0; }
 
44423
  const void *__attr (unsigned __i) const { return 0; }
 
44424
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenSource.h"
 
44425
};
 
44426
 
 
44427
 
 
44428
} // namespace Puma
 
44429
 
 
44430
#endif /* __Token_Source__ */
 
44431
 
 
44432
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenProvider.h"
 
44433
namespace Puma {
 
44434
 
 
44435
/** \class TokenProvider TokenProvider.h Puma/TokenProvider.h
 
44436
 *  Reads tokens from a token source. Supports unlimited look ahead. 
 
44437
 *  A token source can be a file, a string, a token preprocessor,
 
44438
 *  and so on. */
 
44439
 
 
44440
#line 44441 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44441
} // closed Puma
 
44442
class CCExprResolve;
 
44443
class CExprResolve;
 
44444
class WinIfExists;
 
44445
class WinImportHandler;
 
44446
class WinMacros;
 
44447
class WinAsm;
 
44448
class WinDeclSpecs;
 
44449
class WinMemberExplSpec;
 
44450
class WinTypeKeywords;
 
44451
class WinFriend;
 
44452
class ExtAC;
 
44453
class ExtACBuilderCoupling;
 
44454
class ExtACSyntaxCoupling;
 
44455
class ExtACTree;
 
44456
class ExtACKeywords;
 
44457
class ExtGnu;
 
44458
class PragmaOnceUnitState;
 
44459
class PragmaOnce;
 
44460
class CMatchSyntax;
 
44461
namespace Puma {
 
44462
 
 
44463
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenProvider.h"
 
44464
class TokenProvider {
 
44465
#line 44466 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44466
  friend class ::CCExprResolve;
 
44467
  friend class ::CExprResolve;
 
44468
  friend class ::WinIfExists;
 
44469
  friend class ::WinImportHandler;
 
44470
  friend class ::WinMacros;
 
44471
  friend class ::WinAsm;
 
44472
  friend class ::WinDeclSpecs;
 
44473
  friend class ::WinMemberExplSpec;
 
44474
  friend class ::WinTypeKeywords;
 
44475
  friend class ::WinFriend;
 
44476
  friend class ::ExtAC;
 
44477
  friend class ::ExtACBuilderCoupling;
 
44478
  friend class ::ExtACSyntaxCoupling;
 
44479
  friend class ::ExtACTree;
 
44480
  friend class ::ExtACKeywords;
 
44481
  friend class ::ExtGnu;
 
44482
  friend class ::PragmaOnceUnitState;
 
44483
  friend class ::PragmaOnce;
 
44484
  friend class ::CMatchSyntax;
 
44485
 
 
44486
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenProvider.h"
 
44487
 
 
44488
  typedef BCList<Token*, 8192> TokenStore;
 
44489
  
 
44490
  PumaTokenSource &_source;
 
44491
  TokenStore _tokens;
 
44492
  TokenStore::Iterator _read_pos;
 
44493
 
 
44494
public:
 
44495
  /** Read position. */
 
44496
  typedef TokenStore::Iterator State;
 
44497
 
 
44498
  /** Constructor.
 
44499
   *  \param s The token source from which to read the tokens. */
 
44500
  TokenProvider (PumaTokenSource &s) : _source (s) {
 
44501
    _read_pos = _tokens.add (_source.next ());
 
44502
  }
 
44503
 
 
44504
  /** Get the token source object. */
 
44505
  PumaTokenSource &source () const { return _source; }
 
44506
  
 
44507
  /** Read the next token from the token source. */
 
44508
  Token *next () {
 
44509
    // go to the next read position
 
44510
    ++_read_pos;
 
44511
    // did we reach the end of the list?
 
44512
    if (! _read_pos) {
 
44513
      // add a new token to the token list
 
44514
      Token *token = _source.next (); // get the next token from the source
 
44515
      _read_pos = _tokens.add (token);
 
44516
    }
 
44517
    return *_read_pos;
 
44518
  }
 
44519
  
 
44520
  /** Get the last token read from the token source. */
 
44521
  Token *current () const { return *_read_pos; }
 
44522
  
 
44523
  /** Get the current read position. */
 
44524
  State get_state () { return _read_pos; }
 
44525
  /** Restore the read position.
 
44526
   *  \param restored_pos The new read position. */
 
44527
  void set_state (State restored_pos) { _read_pos = restored_pos; }
 
44528
public:
 
44529
  typedef AC::TL<Puma::PumaTokenSource &,AC::TL<Puma::BCList< Puma::Token *,8192 >,AC::TL<Puma::BCList< Puma::Token *,8192 >,AC::TLE > > > __AttrTypes;
 
44530
  const char *__attr_name (unsigned i) const {
 
44531
    static const char *names[] = { "_source", "_tokens", "_read_pos" }; return names[i];
 
44532
  }
 
44533
  const void *__attr (unsigned __i) const {
 
44534
    switch (__i) { case 1: return &_source; case 2: return &_tokens; case 3: return &_read_pos; default: return 0; }
 
44535
  }
 
44536
#line 76 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenProvider.h"
 
44537
};
 
44538
 
 
44539
} // namespace Puma
 
44540
 
 
44541
#endif /* __TokenProvider__ */
 
44542
 
 
44543
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
44544
namespace Puma {
 
44545
 
 
44546
class Semantic;
 
44547
class Config;
 
44548
class CTree;
 
44549
 
 
44550
 
 
44551
/** \class Syntax Syntax.h Puma/Syntax.h
 
44552
 *  Syntactic analysis base class. 
 
44553
 *
 
44554
 *  Implements the top-down parsing algorithm (recursive descend parser). 
 
44555
 *  To be derived to implement parsers for specific grammars. Provides 
 
44556
 *  infinite look-ahead. 
 
44557
 *
 
44558
 *  This class uses a tree builder object (see Builder) to create the 
 
44559
 *  syntax tree, and a semantic analysis object (see Semantic) to perform
 
44560
 *  required semantic analyses of the parsed code. 
 
44561
 *
 
44562
 *  The parse process is started by calling Syntax::run() with a token
 
44563
 *  provider as argument. Using the token provider this method reads the 
 
44564
 *  first core language token from the input source code and tries to parse 
 
44565
 *  it by applying the top grammar rule. 
 
44566
 *
 
44567
 *  \code return parse(&Puma::Syntax::trans_unit) ? builder().Top() : (Puma::CTree*)0; \endcode
 
44568
 *
 
44569
 *  The top grammar rule has to be provided by reimplementing method 
 
44570
 *  Syntax::trans_unit(). It may call sub-rules according to the implemented 
 
44571
 *  language-specific grammar. Example:
 
44572
 *
 
44573
 *  \code 
 
44574
 * Puma::CTree *MySyntax::trans_unit() {
 
44575
 *   return parse(&MySyntax::block_seq) ? builder().block_seq() : (Puma::CTree*)0;
 
44576
 * }
 
44577
 *  \endcode
 
44578
 *
 
44579
 *  For context-sensitive grammars it may be necessary in the rules of 
 
44580
 *  the grammar to perform first semantic analyses of the parsed code
 
44581
 *  (to differentiate ambigous syntactic constructs, resolve names, 
 
44582
 *  detect errors, and so one). Example:
 
44583
 *
 
44584
 *  \code 
 
44585
 * Puma::CTree *MySyntax::block() {
 
44586
 *   // '{' instruction instruction ... '}'
 
44587
 *   if (parse(TOK_OPEN_CURLY)) {             // parse '{'
 
44588
 *     semantic().enter_block();              // enter block scope
 
44589
 *     seq(&MySyntax::instruction);           // parse sequence of instructions
 
44590
 *     semantic().leave_block();              // leave block scope
 
44591
 *     if (parse(TOK_CLOSE_CURLY)) {          // parse '}'
 
44592
 *       return builder().block();            // build syntax tree for the block
 
44593
 *     }
 
44594
 *   }
 
44595
 *   return (CTree*)0;                        // rule failed
 
44596
 * }
 
44597
 *  \endcode
 
44598
 *
 
44599
 *  If a rule could be parsed successfully the tree builder is used to 
 
44600
 *  create a CTree based syntax tree (fragment) for the parsed rule. Failing
 
44601
 *  grammar rules shall return NULL. The result of the top grammar rule is 
 
44602
 *  the root node of the abstract syntax tree for the whole input source code. */
 
44603
 
 
44604
#line 44605 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44605
} // closed Puma
 
44606
class CCExprResolve;
 
44607
class CExprResolve;
 
44608
class WinIfExists;
 
44609
class WinImportHandler;
 
44610
class WinMacros;
 
44611
class WinAsm;
 
44612
class WinDeclSpecs;
 
44613
class WinMemberExplSpec;
 
44614
class WinTypeKeywords;
 
44615
class WinFriend;
 
44616
class ExtAC;
 
44617
class ExtACBuilderCoupling;
 
44618
class ExtACSyntaxCoupling;
 
44619
class ExtACTree;
 
44620
class ExtACKeywords;
 
44621
class ExtGnu;
 
44622
class PragmaOnceUnitState;
 
44623
class PragmaOnce;
 
44624
class CMatchSyntax;
 
44625
namespace Puma {
 
44626
 
 
44627
#line 89 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
44628
class Syntax {
 
44629
#line 44630 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44630
  friend class ::CCExprResolve;
 
44631
  friend class ::CExprResolve;
 
44632
  friend class ::WinIfExists;
 
44633
  friend class ::WinImportHandler;
 
44634
  friend class ::WinMacros;
 
44635
  friend class ::WinAsm;
 
44636
  friend class ::WinDeclSpecs;
 
44637
  friend class ::WinMemberExplSpec;
 
44638
  friend class ::WinTypeKeywords;
 
44639
  friend class ::WinFriend;
 
44640
  friend class ::ExtAC;
 
44641
  friend class ::ExtACBuilderCoupling;
 
44642
  friend class ::ExtACSyntaxCoupling;
 
44643
  friend class ::ExtACTree;
 
44644
  friend class ::ExtACKeywords;
 
44645
  friend class ::ExtGnu;
 
44646
  friend class ::PragmaOnceUnitState;
 
44647
  friend class ::PragmaOnce;
 
44648
  friend class ::CMatchSyntax;
 
44649
 
 
44650
#line 89 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
44651
 
 
44652
  Token *_problem_token;
 
44653
  bool _have_error;
 
44654
 
 
44655
  Builder &_builder;
 
44656
  Semantic &_semantic;
 
44657
 
 
44658
public:
 
44659
  /** Token provider for getting the tokens to parse. */
 
44660
  TokenProvider *token_provider;
 
44661
 
 
44662
public: 
 
44663
  /** \class State Syntax.h Puma/Syntax.h
 
44664
   *  Parser state, the current position in the token stream. */
 
44665
  struct State : public TokenProvider::State {
 
44666
#line 44667 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44667
  friend class ::CCExprResolve;
 
44668
  friend class ::CExprResolve;
 
44669
  friend class ::WinIfExists;
 
44670
  friend class ::WinImportHandler;
 
44671
  friend class ::WinMacros;
 
44672
  friend class ::WinAsm;
 
44673
  friend class ::WinDeclSpecs;
 
44674
  friend class ::WinMemberExplSpec;
 
44675
  friend class ::WinTypeKeywords;
 
44676
  friend class ::WinFriend;
 
44677
  friend class ::ExtAC;
 
44678
  friend class ::ExtACBuilderCoupling;
 
44679
  friend class ::ExtACSyntaxCoupling;
 
44680
  friend class ::ExtACTree;
 
44681
  friend class ::ExtACKeywords;
 
44682
  friend class ::ExtGnu;
 
44683
  friend class ::PragmaOnceUnitState;
 
44684
  friend class ::PragmaOnce;
 
44685
  friend class ::CMatchSyntax;
 
44686
 
 
44687
#line 103 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
44688
 
 
44689
    /** Constructor. */
 
44690
    State () {}
 
44691
    /** Constructor. */
 
44692
    State (int) {}
 
44693
    /** Copy constructor.
 
44694
     *  \param s The parser state to copy. */
 
44695
    State (const TokenProvider::State &s) : TokenProvider::State (s) {}
 
44696
  public:
 
44697
  typedef AC::TLE __AttrTypes;
 
44698
  const char *__attr_name (unsigned i) const { return 0; }
 
44699
  const void *__attr (unsigned __i) const { return 0; }
 
44700
#line 111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
44701
};
 
44702
 
 
44703
protected:
 
44704
  /** Constructor.
 
44705
   *  \param b The syntax tree builder.
 
44706
   *  \param s The semantic analysis object. */ 
 
44707
  Syntax (Builder &b, Semantic &s);
 
44708
  /** Destructor. */
 
44709
  virtual ~Syntax () {}
 
44710
 
 
44711
public:
 
44712
  /** Start the parse process.
 
44713
   *  \param tp The token provider from where to get the tokens to parse. 
 
44714
   *  \return The resulting syntax tree. */
 
44715
  CTree *run (TokenProvider &tp);
 
44716
  /** Start the parse process at a specific grammar rule.
 
44717
   *  \param tp The token provider from where to get the tokens to parse. 
 
44718
   *  \param rule The grammar rule where to start. 
 
44719
   *  \return The resulting syntax tree. */
 
44720
  template <class T> CTree *run (TokenProvider &tp, CTree *(T::*rule)());
 
44721
  /** Configure the syntactic analysis object. 
 
44722
   *  \param c The configuration object. */
 
44723
  
 
44724
#line 44725 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44725
 
 
44726
 
 
44727
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma6Syntax9configureERN4PumaE6Config_0 {
 
44728
  typedef TJP__ZN4Puma6Syntax9configureERN4PumaE6Config_0 __TJP;
 
44729
  typedef TResult Result;
 
44730
  typedef TThat   That;
 
44731
  typedef TTarget Target;
 
44732
  enum { ARGS = TArgs::ARGS };
 
44733
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
44734
  static const int JPID = 54;
 
44735
  static const AC::JPType JPTYPE = (AC::JPType)8;
 
44736
  struct Res {
 
44737
    typedef TResult Type;
 
44738
    typedef TResult ReferredType;
 
44739
  };
 
44740
 
 
44741
  void *_args[ARGS];
 
44742
 
 
44743
  inline void *arg (int n) {return _args[n];}
 
44744
  template <int I> typename Arg<I>::ReferredType *arg () {
 
44745
    return (typename Arg<I>::ReferredType*)arg (I);
 
44746
  }
 
44747
 
 
44748
struct Binding_CMatchSyntax_CMatchSyntax_a25_before {
 
44749
  typedef __TJP TJP;
 
44750
  template <int I, int DUMMY = 0> struct Arg {
 
44751
    void val (TJP *tjp) {} // for VC7
 
44752
  };
 
44753
  template <int DUMMY> struct Arg<0, DUMMY> {
 
44754
    static typename TJP::template Arg<0>::ReferredType &val (TJP *tjp) { return *tjp->template arg<0> (); }
 
44755
  };
 
44756
};
 
44757
struct Binding_ExtGnu_ExtGnu_a19_before {
 
44758
  typedef __TJP TJP;
 
44759
  template <int I, int DUMMY = 0> struct Arg {
 
44760
    void val (TJP *tjp) {} // for VC7
 
44761
  };
 
44762
  template <int DUMMY> struct Arg<0, DUMMY> {
 
44763
    static typename TJP::template Arg<0>::ReferredType &val (TJP *tjp) { return *tjp->template arg<0> (); }
 
44764
  };
 
44765
};
 
44766
};
 
44767
 
 
44768
 
 
44769
#line 133 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
44770
virtual void configure (Config & arg0) 
 
44771
#line 44772 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
44772
{
 
44773
  typedef TJP__ZN4Puma6Syntax9configureERN4PumaE6Config_0< void, ::Puma::Syntax , ::Puma::Syntax ,  AC::TL< ::Puma::Config & , AC::TLE > > __TJP;
 
44774
    __TJP tjp;
 
44775
  tjp._args[0] = (void*)&arg0;
 
44776
  AC::invoke_CMatchSyntax_CMatchSyntax_a25_before<__TJP> (&tjp);
 
44777
  AC::invoke_ExtGnu_ExtGnu_a19_before<__TJP> (&tjp);
 
44778
    this->__exec_old_configure(arg0);
 
44779
  
 
44780
}
 
44781
__attribute__((always_inline)) inline void __exec_old_configure(::Puma::Config & c)
 
44782
#line 133 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
44783
{}
 
44784
  /** Get the token provider from which the parsed tokens are read. */
 
44785
  TokenProvider *provider () const { return token_provider; }
 
44786
  /** Get the last token that could not be parsed. */
 
44787
  Token *problem () const;
 
44788
  /** Check if errors occured during the parse process. */
 
44789
  bool error () const;
 
44790
  /** Look-ahead n core language tokens and check if 
 
44791
   *  the n-th token has the given type. 
 
44792
   *  \param token_type The type of the n-th token. 
 
44793
   *  \param n The number of tokens to look-ahead. 
 
44794
   *  \return True if the n-th token has the given type. */
 
44795
  bool look_ahead (int token_type, unsigned n = 1);
 
44796
  /** Look-ahead n core language tokens and check if 
 
44797
   *  the n-th token has one of the given types. 
 
44798
   *  \param token_types The possible types of the n-th token. 
 
44799
   *  \param n The number of tokens to look-ahead. 
 
44800
   *  \return True if the n-th token has one of the given types. */
 
44801
  bool look_ahead (int* token_types, unsigned n = 1);
 
44802
  /** Look-ahead one core language token. 
 
44803
   *  \return The type of the next core language token. */
 
44804
  inline int look_ahead () const;
 
44805
  /** Consume all tokens until the next core language token. */
 
44806
  inline bool consume ();
 
44807
 
 
44808
protected:
 
44809
  /** Parse the given grammar rule. Saves the current state of 
 
44810
   *  the builder, semantic, and token provider objects.
 
44811
   *  \param rule The rule to parse. 
 
44812
   *  \return True if parsed successfully. */
 
44813
  template <class T> bool parse (CTree *(T::*rule)());
 
44814
  /** Parse a sequence of the given grammar rule. 
 
44815
   *  \param rule The rule to parse at least once. 
 
44816
   *  \return True if parsed successfully. */
 
44817
  template <class T> bool seq (CTree *(T::*rule)());
 
44818
  /** Parse a sequence of the given grammar rule. 
 
44819
   *  \param rule The rule to parse at least once. 
 
44820
   *  \return True if parsed successfully. */
 
44821
  template <class T> bool seq (bool (T::*rule)());
 
44822
  /** Parse a sequence of rule-separator pairs. 
 
44823
   *  \param rule The rule to parse at least once. 
 
44824
   *  \param separator The separator token.
 
44825
   *  \param trailing_separator True if a trailing separator token is allowed.
 
44826
   *  \return True if parsed successfully. */
 
44827
  template <class T> bool list (CTree *(T::*rule)(), int separator, bool trailing_separator = false);
 
44828
  /** Parse a sequence of rule-separator pairs. 
 
44829
   *  \param rule The rule to parse at least once. 
 
44830
   *  \param separators The separator tokens.
 
44831
   *  \param trailing_separator True if a trailing separator token is allowed.
 
44832
   *  \return True if parsed successfully. */
 
44833
  template <class T> bool list (CTree *(T::*rule)(), int* separators, bool trailing_separator = false);
 
44834
  /** Parse a sequence of rule-separator pairs. 
 
44835
   *  \param rule The rule to parse at least once. 
 
44836
   *  \param separator The separator token.
 
44837
   *  \param trailing_separator True if a trailing separator token is allowed.
 
44838
   *  \return True if parsed successfully. */
 
44839
  template <class T> bool list (bool (T::*rule)(), int separator, bool trailing_separator = false);
 
44840
  /** Parse a sequence of rule-separator pairs. 
 
44841
   *  \param rule The rule to parse at least once. 
 
44842
   *  \param separators The separator tokens.
 
44843
   *  \param trailing_separator True if a trailing separator token is allowed.
 
44844
   *  \return True if parsed successfully. */
 
44845
  template <class T> bool list (bool (T::*rule)(), int* separators, bool trailing_separator = false);
 
44846
  /** Parse a grammar rule automatically catching parse errors. 
 
44847
   *  \param rule The rule to parse. 
 
44848
   *  \param msg The error message to show if the rule fails.
 
44849
   *  \param finish_tokens Set of token types that abort parsing the rule.
 
44850
   *  \param skip_tokens If the rule fails skip all tokens until a token is read
 
44851
   *                     that has one of the types given here. 
 
44852
   *  \return False if at EOF or a finish_token is read, true otherwise. */
 
44853
  template <class T> bool catch_error (CTree *(T::*rule)(), const char* msg, int* finish_tokens, int* skip_tokens);
 
44854
  /** Parse a token with the given type.
 
44855
   *  \param token_type The token type. 
 
44856
   *  \return True a corresponding token was parsed. */
 
44857
  bool parse (int token_type);
 
44858
  /** Parse a token with one of the given types.
 
44859
   *  \param token_types The token types. 
 
44860
   *  \return True a corresponding token was parsed. */
 
44861
  bool parse (int *token_types);
 
44862
  /** Parse a token with the given type.
 
44863
   *  \param token_type The token type. 
 
44864
   *  \return True a corresponding token was parsed. */
 
44865
  bool parse_token (int token_type);
 
44866
  /** Optional rule parsing. Always succeeds regardless
 
44867
   *  of the argument.
 
44868
   *  \param dummy Dummy parameter, is not evaluated.
 
44869
   *  \return True. */
 
44870
  bool opt (bool dummy) const;
 
44871
 
 
44872
protected:
 
44873
  /** Get the syntax tree builder. */
 
44874
  Builder &builder () const;
 
44875
  /** Get the semantic analysis object. */
 
44876
  Semantic &semantic () const;
 
44877
 
 
44878
protected:
 
44879
  /** Top parse rule to be reimplemented for a specific grammar. 
 
44880
   *  \return The root node of the syntax tree, or NULL. */
 
44881
  virtual CTree *trans_unit ();
 
44882
 
 
44883
  /** Handle a compiler directive token. The default handling is
 
44884
   *  to skip the compiler directive. */
 
44885
  virtual void handle_directive ();
 
44886
 
 
44887
protected:
 
44888
  /** Save the current parser state. Calls save_state() on the 
 
44889
   *  builder, semantic, and token provider objects.
 
44890
   *  \return The current parser state. */
 
44891
  State save_state ();
 
44892
  /** Forget the saved parser state. */
 
44893
  void forget_state ();
 
44894
  /** Restore the saved parser state. Triggers restoring the 
 
44895
   *  syntax and semantic trees to the saved state. */
 
44896
  void restore_state ();
 
44897
  /** Restore the saved parser state to the given state. 
 
44898
   *  Triggers restoring the syntax and semantic trees.
 
44899
   *  \param state The state to which to restore. */
 
44900
  void restore_state (State state);
 
44901
  /** Overwrite the parser state with the given state. 
 
44902
   *  \param state The new parser state. */
 
44903
  void set_state (State state);
 
44904
 
 
44905
  /** Accept the given syntax tree node. If the node is NULL
 
44906
   *  then the parser state is restored to the given state.
 
44907
   *  Otherwise all saved states are discarded. 
 
44908
   *  \param tree Tree to accept. 
 
44909
   *  \param state The saved state. */
 
44910
  bool accept (CTree *tree, State state);
 
44911
 
 
44912
  /** Skip all non-core language tokens until the next 
 
44913
   *  core-language token is read. 
 
44914
   *  \return The next core-language token. */
 
44915
  Token *locate_token ();
 
44916
  /** Skip the current token. */
 
44917
  void skip ();
 
44918
  /** Skip all tokens between start and end, including
 
44919
   *  start and end token.
 
44920
   *  \param start The start token type.
 
44921
   *  \param end The end token type. */
 
44922
  void skip_block (int start, int end);
 
44923
  /** Skip all tokens between '{' and '}', including
 
44924
   *  '{' and '}'. */
 
44925
  void skip_curly_block ();
 
44926
  /** Skip all tokens between '(' and ')', including
 
44927
   *  '(' and ')'. */
 
44928
  void skip_round_block ();
 
44929
  /** Parse all tokens between start and end, including
 
44930
   *  start and end token.
 
44931
   *  \param start The start token type.
 
44932
   *  \param end The end token type. */
 
44933
  void parse_block (int start, int end);
 
44934
  /** Parse all tokens between '{' and '}', including
 
44935
   *  '{' and '}'. */
 
44936
  void parse_curly_block ();
 
44937
  /** Parse all tokens between '(' and ')', including
 
44938
   *  '(' and ')'. */
 
44939
  void parse_round_block ();
 
44940
  /** Skip all tokens until a token with the given type is read.
 
44941
   *  \param stop_token The type of the token to stop.
 
44942
   *  \param inclusive If true, the stop token is skipped too. 
 
44943
   *  \return False if the stop token is not found, true otherwise. */
 
44944
  bool skip (int stop_token, bool inclusive = true);
 
44945
  /** Skip all tokens until a token with one of the given types is read.
 
44946
   *  \param stop_tokens The types of the token to stop.
 
44947
   *  \param inclusive If true, the stop token is skipped too. 
 
44948
   *  \return False if the stop token is not found, true otherwise. */
 
44949
  bool skip (int *stop_tokens, bool inclusive = true);
 
44950
  /** Check if the given token type is in the set of given token types.
 
44951
   *  \param token_type The token type to check.
 
44952
   *  \param token_types The set of token types. */
 
44953
  bool is_in (int token_type, int *token_types) const;
 
44954
public:
 
44955
  typedef AC::TL<Puma::Token *,AC::TL<bool,AC::TL<Puma::Builder &,AC::TL<Puma::Semantic &,AC::TL<Puma::TokenProvider *,AC::TLE > > > > > __AttrTypes;
 
44956
  const char *__attr_name (unsigned i) const {
 
44957
    static const char *names[] = { "_problem_token", "_have_error", "_builder", "_semantic", "token_provider" }; return names[i];
 
44958
  }
 
44959
  const void *__attr (unsigned __i) const {
 
44960
    switch (__i) { case 0: return &_problem_token; case 1: return &_have_error; case 2: return &_builder; case 3: return &_semantic; case 4: return &token_provider; default: return 0; }
 
44961
  }
 
44962
#line 304 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Syntax.h"
 
44963
};
 
44964
 
 
44965
inline Syntax::Syntax (Builder &b, Semantic &s) : 
 
44966
  _problem_token ((Token*)0), 
 
44967
  _have_error (false),
 
44968
  _builder (b),
 
44969
  _semantic (s) {
 
44970
}
 
44971
 
 
44972
template <class T> 
 
44973
CTree *Syntax::run (TokenProvider &tp, CTree *(T::*rule)()) {
 
44974
  TokenProvider *tp_save = token_provider;
 
44975
  token_provider = &tp;
 
44976
  _have_error = false;
 
44977
  _problem_token = (Token*)0;
 
44978
  locate_token ();
 
44979
  CTree *result = parse (rule) ? builder ().Top () : (CTree*)0;
 
44980
  if (result) builder ().Pop ();
 
44981
  token_provider = tp_save;
 
44982
  return result;
 
44983
}
 
44984
 
 
44985
 
 
44986
inline int Syntax::look_ahead () const {
 
44987
  Token *token = token_provider->current ();
 
44988
  return token ? token->type () : 0;
 
44989
}
 
44990
 
 
44991
inline bool Syntax::consume () {
 
44992
  Token *t = token_provider->current ();
 
44993
  _problem_token = (Token*)0;
 
44994
  token_provider->next ();
 
44995
  locate_token ();
 
44996
  builder ().Push (builder ().token (t));
 
44997
  return true;
 
44998
}
 
44999
 
 
45000
 
 
45001
// Workaround for (old) Puma overload resolution problem
 
45002
#ifndef __puma
 
45003
inline bool Syntax::parse (int token_type) { return parse_token (token_type); }
 
45004
#endif 
 
45005
 
 
45006
inline bool Syntax::opt (bool) const { return true; }
 
45007
inline bool Syntax::error () const { return _have_error; }
 
45008
inline Token *Syntax::problem () const { return _problem_token; }
 
45009
inline Builder &Syntax::builder () const { return _builder; }
 
45010
inline Semantic &Syntax::semantic () const { return _semantic; }
 
45011
 
 
45012
inline CTree *Syntax::trans_unit () { return (CTree*)0; }
 
45013
 
 
45014
inline void Syntax::handle_directive () {
 
45015
  while (token_provider->current () &&
 
45016
         token_provider->current ()->is_directive ()) 
 
45017
    token_provider->next ();
 
45018
}
 
45019
 
 
45020
#ifndef __puma
 
45021
 
 
45022
template <class T> 
 
45023
inline bool Syntax::parse (CTree *(T::*rule)()) {
 
45024
  State s = save_state ();
 
45025
  return accept ((((T*)this)->*rule) (), s);
 
45026
}
 
45027
 
 
45028
template <class T> 
 
45029
inline bool Syntax::seq (CTree *(T::*rule)()) {
 
45030
  if (! parse (rule))
 
45031
    return false;
 
45032
  while (parse (rule));
 
45033
  return true;
 
45034
}
 
45035
 
 
45036
template <class T> 
 
45037
inline bool Syntax::seq ( bool (T::*rule)()) {
 
45038
  if (!(((T*)this)->*rule) ())
 
45039
    return false;
 
45040
  while ((((T*)this)->*rule) ());
 
45041
  return true;
 
45042
}
 
45043
 
 
45044
template <class T> 
 
45045
inline bool Syntax::list (CTree *(T::*rule)(), int token_type, bool end_sep) {
 
45046
  if (! parse (rule))
 
45047
    return false;
 
45048
  while (parse (token_type))
 
45049
    if (! parse (rule))
 
45050
      return end_sep ? true : false;
 
45051
  return true;
 
45052
}
 
45053
 
 
45054
template <class T> 
 
45055
inline bool Syntax::list (bool (T::*rule)(), int token_type, bool end_sep) {
 
45056
  if (! (((T*)this)->*rule) ())
 
45057
    return false;
 
45058
  while (parse (token_type))
 
45059
    if (! (((T*)this)->*rule) ())
 
45060
      return end_sep ? true : false;
 
45061
  return true;
 
45062
}
 
45063
 
 
45064
template <class T> 
 
45065
inline bool Syntax::list (CTree *(T::*rule)(), int *token_type_set, bool end_sep) {
 
45066
  if (! parse (rule))
 
45067
    return false;
 
45068
  while (parse (token_type_set))
 
45069
    if (! parse (rule))
 
45070
      return end_sep ? true : false;
 
45071
  return true;
 
45072
}
 
45073
 
 
45074
template <class T> 
 
45075
inline bool Syntax::list (bool (T::*rule)(), int *token_type_set, bool end_sep) {
 
45076
  if (! (((T*)this)->*rule) ())
 
45077
    return false;
 
45078
  while (parse (token_type_set))
 
45079
    if (! (((T*)this)->*rule) ())
 
45080
      return end_sep ? true : false;
 
45081
  return true;
 
45082
}
 
45083
 
 
45084
template <class T> 
 
45085
bool Syntax::catch_error (CTree *(T::*rule)(), const char *msg,
 
45086
                          int *finish_tokens, int *skip_tokens) {
 
45087
  Token *current_pos, *token;
 
45088
  int index;
 
45089
  
 
45090
  current_pos = token_provider->current ();
 
45091
  if (! current_pos || is_in (current_pos->type (), finish_tokens))
 
45092
    return false;
 
45093
 
 
45094
  index = ((ErrorCollector&)builder ().err ()).index ();
 
45095
  if (parse (rule))
 
45096
    return true;
 
45097
    
 
45098
  _have_error = true;
 
45099
  token = problem () ? problem () : current_pos;
 
45100
  builder ().Push (builder ().error ());
 
45101
 
 
45102
  // if there is no detailed error message generate a standard message
 
45103
  if (index == ((ErrorCollector&)builder ().err ()).index ())
 
45104
    builder ().err () << sev_error << token->location () << msg
 
45105
      << " near token `" << token->text () << "'" << endMessage;
 
45106
 
 
45107
  skip (skip_tokens, false);
 
45108
  return true;
 
45109
}
 
45110
 
 
45111
#endif /* __puma */
 
45112
 
 
45113
 
 
45114
} // namespace Puma
 
45115
 
 
45116
#endif /* __Syntax_h__ */
 
45117
 
 
45118
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CArgumentInfo.h"
 
45119
// This file is part of PUMA.
 
45120
// Copyright (C) 1999-2003  The PUMA developer team.
 
45121
//                                                                
 
45122
// This program is free software;  you can redistribute it and/or 
 
45123
// modify it under the terms of the GNU General Public License as 
 
45124
// published by the Free Software Foundation; either version 2 of 
 
45125
// the License, or (at your option) any later version.            
 
45126
//                                                                
 
45127
// This program is distributed in the hope that it will be useful,
 
45128
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
45129
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
45130
// GNU General Public License for more details.                   
 
45131
//                                                                
 
45132
// You should have received a copy of the GNU General Public      
 
45133
// License along with this program; if not, write to the Free     
 
45134
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
45135
// MA  02111-1307  USA                                            
 
45136
 
 
45137
#ifndef __CArgumentInfo_h__
 
45138
#define __CArgumentInfo_h__
 
45139
 
 
45140
/** \file 
 
45141
 *  Semantic information about a function parameter. */
 
45142
 
 
45143
 
 
45144
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CArgumentInfo.h"
 
45145
namespace Puma {
 
45146
 
 
45147
 
 
45148
/** \class CArgumentInfo CArgumentInfo.h Puma/CArgumentInfo.h
 
45149
 *  Semantic information about a function parameter. */
 
45150
 
 
45151
#line 45152 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45152
} // closed Puma
 
45153
class CCExprResolve;
 
45154
class CExprResolve;
 
45155
class WinIfExists;
 
45156
class WinImportHandler;
 
45157
class WinMacros;
 
45158
class WinAsm;
 
45159
class WinDeclSpecs;
 
45160
class WinMemberExplSpec;
 
45161
class WinTypeKeywords;
 
45162
class WinFriend;
 
45163
class ExtAC;
 
45164
class ExtACBuilderCoupling;
 
45165
class ExtACSyntaxCoupling;
 
45166
class ExtACTree;
 
45167
class ExtACKeywords;
 
45168
class ExtGnu;
 
45169
class PragmaOnceUnitState;
 
45170
class PragmaOnce;
 
45171
class CMatchSyntax;
 
45172
namespace Puma {
 
45173
 
 
45174
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CArgumentInfo.h"
 
45175
class CArgumentInfo : public CScopeRequest {
 
45176
#line 45177 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45177
  friend class ::CCExprResolve;
 
45178
  friend class ::CExprResolve;
 
45179
  friend class ::WinIfExists;
 
45180
  friend class ::WinImportHandler;
 
45181
  friend class ::WinMacros;
 
45182
  friend class ::WinAsm;
 
45183
  friend class ::WinDeclSpecs;
 
45184
  friend class ::WinMemberExplSpec;
 
45185
  friend class ::WinTypeKeywords;
 
45186
  friend class ::WinFriend;
 
45187
  friend class ::ExtAC;
 
45188
  friend class ::ExtACBuilderCoupling;
 
45189
  friend class ::ExtACSyntaxCoupling;
 
45190
  friend class ::ExtACTree;
 
45191
  friend class ::ExtACKeywords;
 
45192
  friend class ::ExtGnu;
 
45193
  friend class ::PragmaOnceUnitState;
 
45194
  friend class ::PragmaOnce;
 
45195
  friend class ::CMatchSyntax;
 
45196
 
 
45197
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CArgumentInfo.h"
 
45198
 
 
45199
  bool _hasDefaultArg; // can be set to true even without an init tree
 
45200
                       // (needed for inline member functions)
 
45201
public: 
 
45202
  /** Constructor. */
 
45203
  CArgumentInfo ();
 
45204
  /** Destructor. If the object type is CObjectInfo::ARGUMENT_INFO, 
 
45205
   *  then CObjectInfo::CleanUp() is called. */
 
45206
  ~CArgumentInfo ();
 
45207
 
 
45208
  /** Get the default argument of the parameter.
 
45209
   *  \return The syntax tree node of the default argument or
 
45210
   *          NULL if the parameter has no default argument. */
 
45211
  CT_ExprList *Init () const;
 
45212
  /** Return \e true if the parameter has a default argument. */
 
45213
  bool hasDefaultArg () const;  
 
45214
  /** Set whether the parameter has a default argument. 
 
45215
   *  \param v True for yes, false for no. */
 
45216
  void hasDefaultArg (bool v);  
 
45217
public:
 
45218
  typedef AC::TL<bool,AC::TLE > __AttrTypes;
 
45219
  const char *__attr_name (unsigned i) const {
 
45220
    static const char *names[] = { "_hasDefaultArg" }; return names[i];
 
45221
  }
 
45222
  const void *__attr (unsigned __i) const {
 
45223
    switch (__i) { case 0: return &_hasDefaultArg; default: return 0; }
 
45224
  }
 
45225
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CArgumentInfo.h"
 
45226
};
 
45227
 
 
45228
inline CArgumentInfo::CArgumentInfo () :
 
45229
  CScopeRequest (CObjectInfo::ARGUMENT_INFO), _hasDefaultArg (false)
 
45230
 {}
 
45231
 
 
45232
inline bool CArgumentInfo::hasDefaultArg () const
 
45233
 { return (_hasDefaultArg || Init ()); }
 
45234
 
 
45235
inline void CArgumentInfo::hasDefaultArg (bool has_arg)
 
45236
 { _hasDefaultArg = has_arg; }
 
45237
 
 
45238
} // namespace Puma
 
45239
 
 
45240
#endif /* __CArgumentInfo_h__ */
 
45241
 
 
45242
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroAnalyzer.h"
 
45243
// This file is part of PUMA.
 
45244
// Copyright (C) 1999-2003  The PUMA developer team.
 
45245
//                                                                
 
45246
// This program is free software;  you can redistribute it and/or 
 
45247
// modify it under the terms of the GNU General Public License as 
 
45248
// published by the Free Software Foundation; either version 2 of 
 
45249
// the License, or (at your option) any later version.            
 
45250
//                                                                
 
45251
// This program is distributed in the hope that it will be useful,
 
45252
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
45253
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
45254
// GNU General Public License for more details.                   
 
45255
//                                                                
 
45256
// You should have received a copy of the GNU General Public      
 
45257
// License along with this program; if not, write to the Free     
 
45258
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
45259
// MA  02111-1307  USA                                            
 
45260
 
 
45261
#ifndef __ACIntroAnalyzer_h__
 
45262
#define __ACIntroAnalyzer_h__
 
45263
 
 
45264
 
 
45265
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroAnalyzer.h"
 
45266
namespace Puma {
 
45267
  class ACAspectInfo;
 
45268
  class CSemDatabase;
 
45269
  class CScopeInfo;
 
45270
  class CObjectInfo;
 
45271
}
 
45272
 
 
45273
namespace Puma {
 
45274
 
 
45275
 
 
45276
#line 45277 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45277
} // closed Puma
 
45278
class CCExprResolve;
 
45279
class CExprResolve;
 
45280
class WinIfExists;
 
45281
class WinImportHandler;
 
45282
class WinMacros;
 
45283
class WinAsm;
 
45284
class WinDeclSpecs;
 
45285
class WinMemberExplSpec;
 
45286
class WinTypeKeywords;
 
45287
class WinFriend;
 
45288
class ExtAC;
 
45289
class ExtACBuilderCoupling;
 
45290
class ExtACSyntaxCoupling;
 
45291
class ExtACTree;
 
45292
class ExtACKeywords;
 
45293
class ExtGnu;
 
45294
class PragmaOnceUnitState;
 
45295
class PragmaOnce;
 
45296
class CMatchSyntax;
 
45297
namespace Puma {
 
45298
 
 
45299
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroAnalyzer.h"
 
45300
class ACIntroAnalyzer {
 
45301
#line 45302 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45302
  friend class ::CCExprResolve;
 
45303
  friend class ::CExprResolve;
 
45304
  friend class ::WinIfExists;
 
45305
  friend class ::WinImportHandler;
 
45306
  friend class ::WinMacros;
 
45307
  friend class ::WinAsm;
 
45308
  friend class ::WinDeclSpecs;
 
45309
  friend class ::WinMemberExplSpec;
 
45310
  friend class ::WinTypeKeywords;
 
45311
  friend class ::WinFriend;
 
45312
  friend class ::ExtAC;
 
45313
  friend class ::ExtACBuilderCoupling;
 
45314
  friend class ::ExtACSyntaxCoupling;
 
45315
  friend class ::ExtACTree;
 
45316
  friend class ::ExtACKeywords;
 
45317
  friend class ::ExtGnu;
 
45318
  friend class ::PragmaOnceUnitState;
 
45319
  friend class ::PragmaOnce;
 
45320
  friend class ::CMatchSyntax;
 
45321
 
 
45322
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroAnalyzer.h"
 
45323
 
 
45324
  CSemDatabase *_db;
 
45325
  CScopeInfo *_current_scope;
 
45326
  int _state;
 
45327
  CT_Intro *_intro;
 
45328
  bool _is_slice;
 
45329
 
 
45330
  int ttype(int pos);
 
45331
  bool is_in (int tok, int *set);
 
45332
  bool block (int &outer_pos, int open, int close);
 
45333
  bool skip (int &outer_pos, int *term);
 
45334
  bool constructor_args (int &outer_pos);
 
45335
  bool nested_name (int &outer_pos, bool &is_declarator,
 
45336
    bool is_decl_name = false);
 
45337
  bool ptr_operator (int &outer_pos);
 
45338
  bool declarator (int &outer_pos);
 
45339
  bool init_declarator (int &outer_pos);
 
45340
  
 
45341
public:
 
45342
  enum {
 
45343
    IA_OK = 0, IA_UNDEFINED, IA_INVALID, IA_INV_SCOPE, IA_INV_SLICE,
 
45344
    IA_INV_DESTR, IA_SLICE_IN_SLICE, IA_ASPECT_IN_SLICE, IA_ADVICE_IN_SLICE,
 
45345
    IA_PCT_IN_SLICE
 
45346
  };
 
45347
 
 
45348
  // a default constructor can be used if the analysis should take place later
 
45349
  ACIntroAnalyzer (CSemDatabase *db, CScopeInfo *s) :
 
45350
    _db (db), _current_scope (s), _state (IA_UNDEFINED) {}
 
45351
 
 
45352
  void analyze_intro (CT_Intro *);
 
45353
  void analyze_intro_member (CT_Intro *);
 
45354
  int error () const { return (_state != IA_OK); }
 
45355
  const char *error_msg () const;
 
45356
public:
 
45357
  typedef AC::TL<Puma::CSemDatabase *,AC::TL<Puma::CScopeInfo *,AC::TL<int,AC::TL<Puma::CT_Intro *,AC::TL<bool,AC::TLE > > > > > __AttrTypes;
 
45358
  const char *__attr_name (unsigned i) const {
 
45359
    static const char *names[] = { "_db", "_current_scope", "_state", "_intro", "_is_slice" }; return names[i];
 
45360
  }
 
45361
  const void *__attr (unsigned __i) const {
 
45362
    switch (__i) { case 0: return &_db; case 1: return &_current_scope; case 2: return &_state; case 3: return &_intro; case 4: return &_is_slice; default: return 0; }
 
45363
  }
 
45364
#line 66 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroAnalyzer.h"
 
45365
};
 
45366
 
 
45367
} // namespace Puma
 
45368
 
 
45369
#endif /* __ACIntroAnalyzer_h__ */
 
45370
 
 
45371
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroducer.h"
 
45372
// This file is part of PUMA.
 
45373
// Copyright (C) 1999-2003  The PUMA developer team.
 
45374
//                                                                
 
45375
// This program is free software;  you can redistribute it and/or 
 
45376
// modify it under the terms of the GNU General Public License as 
 
45377
// published by the Free Software Foundation; either version 2 of 
 
45378
// the License, or (at your option) any later version.            
 
45379
//                                                                
 
45380
// This program is distributed in the hope that it will be useful,
 
45381
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
45382
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
45383
// GNU General Public License for more details.                   
 
45384
//                                                                
 
45385
// You should have received a copy of the GNU General Public      
 
45386
// License along with this program; if not, write to the Free     
 
45387
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
45388
// MA  02111-1307  USA                                            
 
45389
 
 
45390
#ifndef __ACIntroducer_h__
 
45391
#define __ACIntroducer_h__
 
45392
 
 
45393
// Interface class that is used for introductions during a parser run.
 
45394
// The semantics object has a reference to an ACIntroducer and uses
 
45395
// the interface at some well defined (join) points.
 
45396
 
 
45397
namespace Puma {
 
45398
  class CT_ClassDef;
 
45399
  class CT_Program;
 
45400
}
 
45401
 
 
45402
namespace Puma {
 
45403
 
 
45404
 
 
45405
#line 45406 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45406
} // closed Puma
 
45407
class CCExprResolve;
 
45408
class CExprResolve;
 
45409
class WinIfExists;
 
45410
class WinImportHandler;
 
45411
class WinMacros;
 
45412
class WinAsm;
 
45413
class WinDeclSpecs;
 
45414
class WinMemberExplSpec;
 
45415
class WinTypeKeywords;
 
45416
class WinFriend;
 
45417
class ExtAC;
 
45418
class ExtACBuilderCoupling;
 
45419
class ExtACSyntaxCoupling;
 
45420
class ExtACTree;
 
45421
class ExtACKeywords;
 
45422
class ExtGnu;
 
45423
class PragmaOnceUnitState;
 
45424
class PragmaOnce;
 
45425
class CMatchSyntax;
 
45426
namespace Puma {
 
45427
 
 
45428
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroducer.h"
 
45429
class ACIntroducer {
 
45430
#line 45431 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45431
  friend class ::CCExprResolve;
 
45432
  friend class ::CExprResolve;
 
45433
  friend class ::WinIfExists;
 
45434
  friend class ::WinImportHandler;
 
45435
  friend class ::WinMacros;
 
45436
  friend class ::WinAsm;
 
45437
  friend class ::WinDeclSpecs;
 
45438
  friend class ::WinMemberExplSpec;
 
45439
  friend class ::WinTypeKeywords;
 
45440
  friend class ::WinFriend;
 
45441
  friend class ::ExtAC;
 
45442
  friend class ::ExtACBuilderCoupling;
 
45443
  friend class ::ExtACSyntaxCoupling;
 
45444
  friend class ::ExtACTree;
 
45445
  friend class ::ExtACKeywords;
 
45446
  friend class ::ExtGnu;
 
45447
  friend class ::PragmaOnceUnitState;
 
45448
  friend class ::PragmaOnce;
 
45449
  friend class ::CMatchSyntax;
 
45450
 
 
45451
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroducer.h"
 
45452
 
 
45453
public:
 
45454
  virtual ~ACIntroducer () {}
 
45455
  
 
45456
  // called when a new class/union/struct/aspect is created, current scope
 
45457
  // is the global scope
 
45458
  virtual void class_before (CT_ClassDef*) {}
 
45459
 
 
45460
  // called when a new class/union/struct/aspect body is parsed
 
45461
  virtual void class_begin (CT_ClassDef*) {}
 
45462
 
 
45463
  // called when a new class/union/struct/aspect definition ends
 
45464
  // (still in the class scope)
 
45465
  virtual void class_end (CT_ClassDef*) {}
 
45466
  
 
45467
  // called after the parser tried to parse a base clause
 
45468
  virtual void base_clause_end (CT_ClassDef*, Token*) {}
 
45469
  
 
45470
  // called after the program has been parsed completely
 
45471
  virtual void trans_unit_end (CT_Program*) {}
 
45472
public:
 
45473
  typedef AC::TLE __AttrTypes;
 
45474
  const char *__attr_name (unsigned i) const { return 0; }
 
45475
  const void *__attr (unsigned __i) const { return 0; }
 
45476
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ACIntroducer.h"
 
45477
};
 
45478
 
 
45479
} // namespace Puma
 
45480
 
 
45481
#endif /* __ACIntroducer_h__ */
 
45482
 
 
45483
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCNameLookup.h"
 
45484
 
 
45485
#line 45486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45486
 
 
45487
#ifndef __ac_fwd_ExtGnu__
 
45488
#define __ac_fwd_ExtGnu__
 
45489
class ExtGnu;
 
45490
namespace AC {
 
45491
  template <class JoinPoint>
 
45492
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
45493
  template <class JoinPoint>
 
45494
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
45495
  template <class JoinPoint>
 
45496
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_after (JoinPoint *tjp);
 
45497
  template <class JoinPoint>
 
45498
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_around (JoinPoint *tjp);
 
45499
  template <class JoinPoint>
 
45500
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
45501
  template <class JoinPoint>
 
45502
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
45503
  template <class JoinPoint>
 
45504
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
45505
  template <class JoinPoint>
 
45506
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
45507
  template <class JoinPoint>
 
45508
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_after (JoinPoint *tjp);
 
45509
  template <class JoinPoint>
 
45510
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
45511
  template <class JoinPoint>
 
45512
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
45513
  template <class JoinPoint>
 
45514
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_before (JoinPoint *tjp);
 
45515
  template <class JoinPoint>
 
45516
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
45517
  template <class JoinPoint>
 
45518
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_after (JoinPoint *tjp);
 
45519
  template <class JoinPoint>
 
45520
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
45521
  template <class JoinPoint>
 
45522
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
45523
  template <class JoinPoint>
 
45524
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
45525
  template <class JoinPoint>
 
45526
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
45527
  template <class JoinPoint>
 
45528
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_before (JoinPoint *tjp);
 
45529
  template <class JoinPoint>
 
45530
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_before (JoinPoint *tjp);
 
45531
  template <class JoinPoint>
 
45532
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_around (JoinPoint *tjp);
 
45533
}
 
45534
#endif
 
45535
 
 
45536
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
45537
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
45538
#endif
 
45539
 
 
45540
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCNameLookup.h"
 
45541
// This file is part of PUMA.
 
45542
// Copyright (C) 1999-2003  The PUMA developer team.
 
45543
//                                                                
 
45544
// This program is free software;  you can redistribute it and/or 
 
45545
// modify it under the terms of the GNU General Public License as 
 
45546
// published by the Free Software Foundation; either version 2 of 
 
45547
// the License, or (at your option) any later version.            
 
45548
//                                                                
 
45549
// This program is distributed in the hope that it will be useful,
 
45550
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
45551
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
45552
// GNU General Public License for more details.                   
 
45553
//                                                                
 
45554
// You should have received a copy of the GNU General Public      
 
45555
// License along with this program; if not, write to the Free     
 
45556
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
45557
// MA  02111-1307  USA                                            
 
45558
 
 
45559
#ifndef __CCNameLookup_h__
 
45560
#define __CCNameLookup_h__
 
45561
 
 
45562
 
 
45563
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCNameLookup.h"
 
45564
namespace Puma {
 
45565
 
 
45566
 
 
45567
class CT_SimpleName;
 
45568
class CBaseClassInfo;
 
45569
 
 
45570
 
 
45571
#line 45572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45572
} // closed Puma
 
45573
class CCExprResolve;
 
45574
class CExprResolve;
 
45575
class WinIfExists;
 
45576
class WinImportHandler;
 
45577
class WinMacros;
 
45578
class WinAsm;
 
45579
class WinDeclSpecs;
 
45580
class WinMemberExplSpec;
 
45581
class WinTypeKeywords;
 
45582
class WinFriend;
 
45583
class ExtAC;
 
45584
class ExtACBuilderCoupling;
 
45585
class ExtACSyntaxCoupling;
 
45586
class ExtACTree;
 
45587
class ExtACKeywords;
 
45588
class ExtGnu;
 
45589
class PragmaOnceUnitState;
 
45590
class PragmaOnce;
 
45591
class CMatchSyntax;
 
45592
namespace Puma {
 
45593
 
 
45594
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCNameLookup.h"
 
45595
class CCNameLookup {
 
45596
#line 45597 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45597
  friend class ::CCExprResolve;
 
45598
  friend class ::CExprResolve;
 
45599
  friend class ::WinIfExists;
 
45600
  friend class ::WinImportHandler;
 
45601
  friend class ::WinMacros;
 
45602
  friend class ::WinAsm;
 
45603
  friend class ::WinDeclSpecs;
 
45604
  friend class ::WinMemberExplSpec;
 
45605
  friend class ::WinTypeKeywords;
 
45606
  friend class ::WinFriend;
 
45607
  friend class ::ExtAC;
 
45608
  friend class ::ExtACBuilderCoupling;
 
45609
  friend class ::ExtACSyntaxCoupling;
 
45610
  friend class ::ExtACTree;
 
45611
  friend class ::ExtACKeywords;
 
45612
  friend class ::ExtGnu;
 
45613
  friend class ::PragmaOnceUnitState;
 
45614
  friend class ::PragmaOnce;
 
45615
  friend class ::CMatchSyntax;
 
45616
 
 
45617
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCNameLookup.h"
 
45618
 
 
45619
  typedef std::map<CClassInfo*, bool> BaseClassMap;
 
45620
  
 
45621
  Array<CObjectInfo*> objects;
 
45622
  Array<CObjectInfo*> namespaces;
 
45623
  BaseClassMap        baseclasses;
 
45624
  CClassInfo*         virtualbase;
 
45625
  Array<CClassInfo*>  virtualbases;
 
45626
  Array<CStructure*>  objscopes;
 
45627
  CT_SimpleName *     sname;
 
45628
  DString             name;
 
45629
  ErrorSink &         err;
 
45630
  unsigned int        pos;
 
45631
  unsigned char       flags;
 
45632
  
 
45633
#ifndef __puma
 
45634
  typedef CStructure::ObjectsByName::iterator          ObjectsIter;
 
45635
  typedef CStructure::ObjectInfoList::reverse_iterator ObjectListRIter;
 
45636
#endif
 
45637
 
 
45638
public:
 
45639
  enum Flags { 
 
45640
    IS_TYPE         = 1, // lookup a type name ignoring all non-types        
 
45641
    IS_NAMESPACE    = 2, // lookup a namespace name ignoring everything else
 
45642
    ASS_NS_LOOKUP   = 4, // lookup in associated namespace (overload resolution)
 
45643
    NO_MEMBER_FCTS  = 8,
 
45644
    NO_MEMBER_ALIAS = 16
 
45645
  };
 
45646
 
 
45647
public:
 
45648
  CCNameLookup (ErrorSink &);
 
45649
  
 
45650
  // usage: lookup(name, scope, nested, base classes & usings)
 
45651
  void lookup (const DString&, CStructure *, bool = false, bool = false, int = 0);
 
45652
  void lookup (CT_SimpleName *, CStructure *, bool = false, bool = false);
 
45653
  void lookupType (const DString&, CStructure *, bool = false, bool = false, int = 0);
 
45654
  void lookupType (CT_SimpleName *, CStructure *, bool = false, bool = false);
 
45655
  void lookupNamespace (const DString&, CStructure *, int = 0);
 
45656
  void lookupNamespace (CT_SimpleName *, CStructure *);
 
45657
  void lookupInAssNs (const DString&, CStructure *, int = 0);
 
45658
  void lookupInAssNs (CT_SimpleName *, CStructure *);
 
45659
  void lookupOpName (const DString&, CStructure *, int = 0);
 
45660
  void lookupOpName (CT_SimpleName *, CStructure *);
 
45661
  void lookupFunction (const DString&, CStructure *, int = 0);
 
45662
  void lookupFunction (CT_SimpleName *, CStructure *);
 
45663
  
 
45664
  // resulting set of object infos
 
45665
  unsigned Objects () const;
 
45666
  CObjectInfo *Object (unsigned = 0) const;
 
45667
  
 
45668
  // reset the internal state and reject 
 
45669
  // the result of previous lookups
 
45670
  void reset ();
 
45671
 
 
45672
private: 
 
45673
  
 
45674
#line 45675 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45675
public: __attribute__((always_inline)) inline void __exec_old_lookup(::Puma::CStructure * ,bool ,bool );
 
45676
private:
 
45677
 
 
45678
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCNameLookup.h"
 
45679
void lookup (CStructure *, bool, bool);
 
45680
  void unqualifiedLookup (CStructure *, bool);
 
45681
  CObjectInfo *unqualLookup (CStructure *, bool);
 
45682
  void unqualTypeLookup (CStructure *);
 
45683
  void lookupUsings (CStructure *);
 
45684
  bool namespaceVisited (CObjectInfo *);
 
45685
  void addObject (CObjectInfo *, CStructure *);
 
45686
  bool visibleFriend (CObjectInfo *) const;
 
45687
  bool knownHere (CObjectInfo *) const;
 
45688
  CStructure *getNameScope (CT_SimpleName *, CStructure *) const;
 
45689
  bool isDistinctSubObject (CBaseClassInfo *bcinfo);
 
45690
  void findMostDominant (unsigned long num);
 
45691
  bool dominates (CObjectInfo *cand1, CObjectInfo *cand2);
 
45692
  bool isSameSubObject (CClassInfo *ci, CClassInfo *bc1);
 
45693
public:
 
45694
  typedef AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<std::map< Puma::CClassInfo *,bool >,AC::TL<Puma::CClassInfo *,AC::TL<Puma::Array< Puma::CClassInfo * >,AC::TL<Puma::Array< Puma::CStructure * >,AC::TL<Puma::CT_SimpleName *,AC::TL<Puma::DString,AC::TL<Puma::ErrorSink &,AC::TL<unsigned int,AC::TL<unsigned char,AC::TLE > > > > > > > > > > > __AttrTypes;
 
45695
  const char *__attr_name (unsigned i) const {
 
45696
    static const char *names[] = { "objects", "namespaces", "baseclasses", "virtualbase", "virtualbases", "objscopes", "sname", "name", "err", "pos", "flags" }; return names[i];
 
45697
  }
 
45698
  const void *__attr (unsigned __i) const {
 
45699
    switch (__i) { case 3: return &objects; case 5: return &namespaces; case 6: return &baseclasses; case 7: return &virtualbase; case 9: return &virtualbases; case 11: return &objscopes; case 12: return &sname; case 13: return &name; case 14: return &err; case 15: return &pos; case 16: return &flags; default: return 0; }
 
45700
  }
 
45701
#line 104 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCNameLookup.h"
 
45702
};
 
45703
 
 
45704
inline unsigned CCNameLookup::Objects () const
 
45705
 { return objects.length (); }
 
45706
inline CObjectInfo *CCNameLookup::Object (unsigned i) const
 
45707
 { return objects.lookup (i); }
 
45708
 
 
45709
inline void CCNameLookup::addObject (CObjectInfo *info, CStructure *scope) 
 
45710
 { objects.append (info); virtualbases.append (virtualbase); 
 
45711
   objscopes.append (scope); }
 
45712
inline void CCNameLookup::reset ()
 
45713
 { objects.reset (); namespaces.reset (); baseclasses.clear (); objscopes.reset ();
 
45714
   virtualbase = 0; virtualbases.reset (); flags = 0; }
 
45715
 
 
45716
inline void CCNameLookup::lookup (const DString& sn, CStructure *scope,
 
45717
 bool nested, bool base_usings, int p) 
 
45718
 { name = sn; pos = p; lookup (scope, nested, base_usings); flags = 0; }
 
45719
 
 
45720
inline void CCNameLookup::lookupType (const DString& sn, 
 
45721
 CStructure *scope, bool nested, bool base_usings, int p) 
 
45722
 { flags = IS_TYPE; lookup (sn, scope, nested, base_usings, p); }
 
45723
 
 
45724
inline void CCNameLookup::lookupType (CT_SimpleName *sn, 
 
45725
 CStructure *scope, bool nested, bool base_usings) 
 
45726
 { flags = IS_TYPE; lookup (sn, scope, nested, base_usings); }
 
45727
 
 
45728
inline void CCNameLookup::lookupNamespace (const DString& sn, 
 
45729
 CStructure *scope, int p) 
 
45730
 { flags = IS_NAMESPACE; lookup (sn, scope, true, true, p); }
 
45731
 
 
45732
inline void CCNameLookup::lookupNamespace (CT_SimpleName *sn, 
 
45733
 CStructure *scope) 
 
45734
 { flags = IS_NAMESPACE; lookup (sn, scope, true, true); }
 
45735
 
 
45736
inline void CCNameLookup::lookupFunction (const DString& sn, 
 
45737
 CStructure *scope, int p) 
 
45738
 { flags = NO_MEMBER_ALIAS; lookup (sn, scope, false, false, p); }
 
45739
 
 
45740
inline void CCNameLookup::lookupFunction (CT_SimpleName *sn, 
 
45741
 CStructure *scope) 
 
45742
 { flags = NO_MEMBER_ALIAS; lookup (sn, scope, false, false); }
 
45743
 
 
45744
inline void CCNameLookup::lookupInAssNs (const DString& sn, 
 
45745
 CStructure *scope, int p) 
 
45746
 { flags = ASS_NS_LOOKUP; lookup (sn, scope, false, false, p); }
 
45747
 
 
45748
inline void CCNameLookup::lookupInAssNs (CT_SimpleName *sn, 
 
45749
 CStructure *scope) 
 
45750
 { flags = ASS_NS_LOOKUP; lookup (sn, scope, false, false); }
 
45751
 
 
45752
inline void CCNameLookup::lookupOpName (const DString& sn, 
 
45753
 CStructure *scope, int p) 
 
45754
 { flags = NO_MEMBER_FCTS; lookup (sn, scope, true, true, p); }
 
45755
 
 
45756
inline void CCNameLookup::lookupOpName (CT_SimpleName *sn, 
 
45757
 CStructure *scope) 
 
45758
 { flags = NO_MEMBER_FCTS; lookup (sn, scope, true, true); }
 
45759
 
 
45760
 
 
45761
} // namespace Puma
 
45762
 
 
45763
#endif /* __CCNameLookup_h__ */
 
45764
 
 
45765
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
45766
 
 
45767
#line 45768 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45768
 
 
45769
#ifndef __ac_fwd_ExtACKeywords__
 
45770
#define __ac_fwd_ExtACKeywords__
 
45771
class ExtACKeywords;
 
45772
namespace AC {
 
45773
  template <class JoinPoint>
 
45774
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a0_before (JoinPoint *tjp);
 
45775
  template <class JoinPoint>
 
45776
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a1_before (JoinPoint *tjp);
 
45777
  template <class JoinPoint>
 
45778
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a2_before (JoinPoint *tjp);
 
45779
}
 
45780
#endif
 
45781
 
 
45782
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
45783
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
45784
#endif
 
45785
 
 
45786
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
45787
// This file is part of PUMA.
 
45788
// Copyright (C) 1999-2003  The PUMA developer team.
 
45789
//                                                                
 
45790
// This program is free software;  you can redistribute it and/or 
 
45791
// modify it under the terms of the GNU General Public License as 
 
45792
// published by the Free Software Foundation; either version 2 of 
 
45793
// the License, or (at your option) any later version.            
 
45794
//                                                                
 
45795
// This program is distributed in the hope that it will be useful,
 
45796
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
45797
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
45798
// GNU General Public License for more details.                   
 
45799
//                                                                
 
45800
// You should have received a copy of the GNU General Public      
 
45801
// License along with this program; if not, write to the Free     
 
45802
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
45803
// MA  02111-1307  USA                                            
 
45804
 
 
45805
#ifndef __CProject_h__
 
45806
#define __CProject_h__
 
45807
 
 
45808
// Special project derivation for C++ sources.
 
45809
 
 
45810
#include "Puma/Config.h"
 
45811
#include "Puma/Project.h"
 
45812
#include "Puma/CScanner.h"
 
45813
#include "Puma/ErrorStream.h"
 
45814
 
 
45815
namespace Puma {
 
45816
 
 
45817
 
 
45818
class Source;
 
45819
class CTypeInfo;
 
45820
 
 
45821
 
 
45822
#line 45823 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45823
} // closed Puma
 
45824
class CCExprResolve;
 
45825
class CExprResolve;
 
45826
class WinIfExists;
 
45827
class WinImportHandler;
 
45828
class WinMacros;
 
45829
class WinAsm;
 
45830
class WinDeclSpecs;
 
45831
class WinMemberExplSpec;
 
45832
class WinTypeKeywords;
 
45833
class WinFriend;
 
45834
class ExtAC;
 
45835
class ExtACBuilderCoupling;
 
45836
class ExtACSyntaxCoupling;
 
45837
class ExtACTree;
 
45838
class ExtACKeywords;
 
45839
class ExtGnu;
 
45840
class PragmaOnceUnitState;
 
45841
class PragmaOnce;
 
45842
class CMatchSyntax;
 
45843
namespace Puma {
 
45844
 
 
45845
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
45846
class CProject : public Project {
 
45847
#line 45848 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45848
  friend class ::CCExprResolve;
 
45849
  friend class ::CExprResolve;
 
45850
  friend class ::WinIfExists;
 
45851
  friend class ::WinImportHandler;
 
45852
  friend class ::WinMacros;
 
45853
  friend class ::WinAsm;
 
45854
  friend class ::WinDeclSpecs;
 
45855
  friend class ::WinMemberExplSpec;
 
45856
  friend class ::WinTypeKeywords;
 
45857
  friend class ::WinFriend;
 
45858
  friend class ::ExtAC;
 
45859
  friend class ::ExtACBuilderCoupling;
 
45860
  friend class ::ExtACSyntaxCoupling;
 
45861
  friend class ::ExtACTree;
 
45862
  friend class ::ExtACKeywords;
 
45863
  friend class ::ExtGnu;
 
45864
  friend class ::PragmaOnceUnitState;
 
45865
  friend class ::PragmaOnce;
 
45866
  friend class ::CMatchSyntax;
 
45867
 
 
45868
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
45869
 
 
45870
  Config _config;
 
45871
  CScanner _scanner;
 
45872
 
 
45873
public:
 
45874
  CProject (ErrorStream &e);
 
45875
 
 
45876
  // Constructor: Add some source directories.
 
45877
  CProject (ErrorStream &, const char *defs, 
 
45878
               const char *decls = (const char*)0); 
 
45879
 
 
45880
  // Constructor: Setup preprocessor configuration according to
 
45881
  // command line parameter and the global config file and
 
45882
  // add some source directories.
 
45883
  CProject (ErrorStream &, int &argc, char **&argv, 
 
45884
            const char *defs = (const char*)0, 
 
45885
            const char *decls = (const char*)0);
 
45886
 
 
45887
public: // Project configuration 
 
45888
  // Get the preprocessor configuration.
 
45889
  Config &config ();
 
45890
 
 
45891
  // Configure the project from the command line or a file.
 
45892
  virtual void configure (Config &);
 
45893
 
 
45894
  // Add a new file to the project.
 
45895
  Unit *addFile (Filename file);
 
45896
 
 
45897
public: // Scanner interface
 
45898
  // Get the scanner.
 
45899
  CScanner &scanner ();
 
45900
 
 
45901
  // Scan the file `file' or the source if given. When
 
45902
  // scanning a source the resulting unit gets the name `file'.
 
45903
  
 
45904
#line 45905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45905
public: __attribute__((always_inline)) inline ::Puma::Unit * __exec_old_scanFile(const char * file,::Puma::Source * ,bool isFile);
 
45906
 
 
45907
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
45908
virtual Unit *scanFile (const char *file, Source * = (Source*)0, 
 
45909
                          bool isFile = true);
 
45910
        
 
45911
  // Scan a string. The resulting unit gets the name `name'.
 
45912
  // (and will not be registered at the unit manager!)
 
45913
  virtual Unit *scanString (const char *str, 
 
45914
                            const char *name = (const char*)0);
 
45915
 
 
45916
public: // Miscellaneous Functions
 
45917
 
 
45918
  // Give the filename needed to include a particular header file
 
45919
  Filename getInclString (Filename filename);
 
45920
 
 
45921
private:
 
45922
  // Map the type string from --size-type and --ptrdiff-type
 
45923
  // to real Puma type.
 
45924
  CTypeInfo *mapType (const char *) const;
 
45925
public:
 
45926
  typedef AC::TL<Puma::Config,AC::TL<Puma::CScanner,AC::TLE > > __AttrTypes;
 
45927
  const char *__attr_name (unsigned i) const {
 
45928
    static const char *names[] = { "_config", "_scanner" }; return names[i];
 
45929
  }
 
45930
  const void *__attr (unsigned __i) const {
 
45931
    switch (__i) { case 0: return &_config; case 1: return &_scanner; default: return 0; }
 
45932
  }
 
45933
#line 86 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
45934
};
 
45935
 
 
45936
inline Config &CProject::config () 
 
45937
 { return _config; }
 
45938
inline CScanner &CProject::scanner () 
 
45939
 { return _scanner; }
 
45940
 
 
45941
 
 
45942
} // namespace Puma
 
45943
 
 
45944
#endif /* __CProject_h__ */
 
45945
 
 
45946
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
45947
 
 
45948
#line 45949 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45949
class CCExprResolve;
 
45950
class CExprResolve;
 
45951
class WinIfExists;
 
45952
class WinImportHandler;
 
45953
class WinMacros;
 
45954
class WinAsm;
 
45955
class WinDeclSpecs;
 
45956
class WinMemberExplSpec;
 
45957
class WinTypeKeywords;
 
45958
class WinFriend;
 
45959
class ExtACBuilderCoupling;
 
45960
class ExtACSyntaxCoupling;
 
45961
class ExtACTree;
 
45962
class ExtACKeywords;
 
45963
class ExtGnu;
 
45964
class PragmaOnceUnitState;
 
45965
class PragmaOnce;
 
45966
class CMatchSyntax;
 
45967
 
 
45968
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
45969
class ExtAC {
 
45970
#line 45971 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45971
 
 
45972
public:
 
45973
  static ExtAC *aspectof () {
 
45974
    static ExtAC __instance;
 
45975
    return &__instance;
 
45976
  }
 
45977
  static ExtAC *aspectOf () {
 
45978
    return aspectof ();
 
45979
  }
 
45980
private:
 
45981
 
 
45982
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
45983
 
 
45984
#line 45985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
45985
  friend class ::CCExprResolve;
 
45986
  friend class ::CExprResolve;
 
45987
  friend class ::WinIfExists;
 
45988
  friend class ::WinImportHandler;
 
45989
  friend class ::WinMacros;
 
45990
  friend class ::WinAsm;
 
45991
  friend class ::WinDeclSpecs;
 
45992
  friend class ::WinMemberExplSpec;
 
45993
  friend class ::WinTypeKeywords;
 
45994
  friend class ::WinFriend;
 
45995
  friend class ::ExtACBuilderCoupling;
 
45996
  friend class ::ExtACSyntaxCoupling;
 
45997
  friend class ::ExtACTree;
 
45998
  friend class ::ExtACKeywords;
 
45999
  friend class ::ExtGnu;
 
46000
  friend class ::PragmaOnceUnitState;
 
46001
  friend class ::PragmaOnce;
 
46002
  friend class ::CMatchSyntax;
 
46003
 
 
46004
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46005
 
 
46006
  // used to enable and disable this extension at runtime
 
46007
  bool _enabled;
 
46008
  
 
46009
protected:
 
46010
  ExtAC () : _enabled (false) {}
 
46011
  
 
46012
  // ******************
 
46013
  // C parser extension
 
46014
  // ******************
 
46015
  
 
46016
#line 56 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46017
 
 
46018
  
 
46019
#line 61 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46020
 
 
46021
 
 
46022
  // *****************
 
46023
  // ClassDb extension
 
46024
  // *****************
 
46025
 
 
46026
  // introduce AC extensions
 
46027
  
 
46028
#line 68 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46029
 
 
46030
  
 
46031
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46032
 
 
46033
  
 
46034
  // add behavioral extensions
 
46035
  
 
46036
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46037
 
 
46038
public: template<class JoinPoint> void __a0_before 
 
46039
#line 72 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46040
 
 
46041
#line 72 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46042
(JoinPoint *tjp)
 
46043
#line 72 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46044
 {
 
46045
#line 46046 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46046
 
 
46047
  typedef typename JoinPoint::That __JP_That;
 
46048
  typedef typename JoinPoint::Target __JP_Target;
 
46049
  typedef typename JoinPoint::Result __JP_Result;
 
46050
 
 
46051
#line 72 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46052
 
 
46053
    tjp->that ()->Puma::ACClassDatabase::Dump (*tjp->template arg<0>(), *tjp->template arg<1>());
 
46054
  }
 
46055
#line 46056 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46056
 
 
46057
protected:
 
46058
 
 
46059
#line 74 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46060
 
 
46061
 
 
46062
  // ***************************
 
46063
  // C and CC-Semantic extension
 
46064
  // ***************************
 
46065
 
 
46066
  
 
46067
#line 80 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46068
 
 
46069
 
 
46070
  
 
46071
#line 114 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46072
 
 
46073
 
 
46074
  
 
46075
#line 116 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46076
 
 
46077
 
 
46078
  
 
46079
#line 121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46080
 
 
46081
  
 
46082
  // initialize introduced attributes
 
46083
  
 
46084
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46085
 
 
46086
public: template<class JoinPoint> void __a1_after 
 
46087
#line 124 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46088
 
 
46089
#line 124 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46090
(JoinPoint *tjp)
 
46091
#line 124 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46092
 {
 
46093
#line 46094 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46094
 
 
46095
  typedef typename JoinPoint::That __JP_That;
 
46096
  typedef typename JoinPoint::Target __JP_Target;
 
46097
  typedef typename JoinPoint::Result __JP_Result;
 
46098
 
 
46099
#line 124 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46100
 
 
46101
    tjp->that ()->_in_advice_decl   = false;
 
46102
    tjp->that ()->_in_pointcut_decl = false;
 
46103
    tjp->that ()->_introducer       = 0;
 
46104
  }
 
46105
#line 46106 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46106
 
 
46107
protected:
 
46108
 
 
46109
#line 128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46110
 
 
46111
  
 
46112
  // introduce_function must check for code advice
 
46113
  
 
46114
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46115
 
 
46116
public: template<class JoinPoint> void __a2_around 
 
46117
#line 132 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46118
 
 
46119
#line 132 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46120
(JoinPoint *tjp)
 
46121
#line 132 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46122
 {
 
46123
#line 46124 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46124
 
 
46125
  typedef typename JoinPoint::That __JP_That;
 
46126
  typedef typename JoinPoint::Target __JP_Target;
 
46127
  typedef typename JoinPoint::Result __JP_Result;
 
46128
 
 
46129
#line 132 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46130
 
 
46131
     
 
46132
    // first save the current function
 
46133
    Puma::CObjectInfo *func = tjp->that ()->current_fct;
 
46134
    
 
46135
    // now do the original stuff
 
46136
    tjp->proceed ();
 
46137
    Puma::CTree *node = *tjp->result ();
 
46138
    if (!node)
 
46139
      return;
 
46140
 
 
46141
    // do the necessary post processing
 
46142
    tjp->that ()->introduce_function_post (func, node);
 
46143
  }
 
46144
#line 46145 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46145
 
 
46146
protected:
 
46147
 
 
46148
#line 145 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46149
 
 
46150
  
 
46151
  // make sure lookup of functions is ignored for intros
 
46152
  
 
46153
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46154
 
 
46155
public: template<class JoinPoint> void __a3_around 
 
46156
#line 149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46157
 
 
46158
#line 149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46159
(JoinPoint *tjp)
 
46160
#line 149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46161
 {
 
46162
#line 46163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46163
 
 
46164
  typedef typename JoinPoint::That __JP_That;
 
46165
  typedef typename JoinPoint::Target __JP_Target;
 
46166
  typedef typename JoinPoint::Result __JP_Result;
 
46167
 
 
46168
#line 149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46169
 
 
46170
    if (tjp->that ()->_in_advice_decl)
 
46171
      *tjp->result () = true;
 
46172
    else
 
46173
      tjp->proceed ();
 
46174
  }
 
46175
#line 46176 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46176
 
 
46177
protected:
 
46178
 
 
46179
#line 154 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46180
 
 
46181
 
 
46182
  // extend member handling
 
46183
  
 
46184
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46185
 
 
46186
public: template<class JoinPoint> void __a4_after 
 
46187
#line 158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46188
 
 
46189
#line 158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46190
(JoinPoint *tjp)
 
46191
#line 158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46192
 {
 
46193
#line 46194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46194
 
 
46195
  typedef typename JoinPoint::That __JP_That;
 
46196
  typedef typename JoinPoint::Target __JP_Target;
 
46197
  typedef typename JoinPoint::Result __JP_Result;
 
46198
 
 
46199
#line 158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46200
 
 
46201
    Puma::CTree *node = *tjp->result ();
 
46202
    if (!node || node->NodeName () != Puma::CT_InitDeclarator::NodeId ())
 
46203
      return;
 
46204
 
 
46205
    Puma::CObjectInfo *object = ((Puma::CT_InitDeclarator *)node)->Object ();
 
46206
    if (tjp->that ()->_in_pointcut_decl && object->FunctionInfo ()) {
 
46207
      // setup the scope for the following pointcut expression
 
46208
      tjp->that ()->current_scope = object->FunctionInfo ();
 
46209
    }
 
46210
  }
 
46211
#line 46212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46212
 
 
46213
protected:
 
46214
 
 
46215
#line 168 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46216
 
 
46217
 
 
46218
  // make sure lookup of members is ignored for intros
 
46219
  
 
46220
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46221
 
 
46222
public: template<class JoinPoint> void __a5_around 
 
46223
#line 174 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46224
 
 
46225
#line 174 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46226
(JoinPoint *tjp, bool &redef_typedef)
 
46227
#line 174 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46228
 {
 
46229
#line 46230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46230
 
 
46231
  typedef typename JoinPoint::That __JP_That;
 
46232
  typedef typename JoinPoint::Target __JP_Target;
 
46233
  typedef typename JoinPoint::Result __JP_Result;
 
46234
 
 
46235
#line 174 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46236
 
 
46237
    if (tjp->that ()->_in_advice_decl) {
 
46238
      redef_typedef = false;
 
46239
      *tjp->result () = true;
 
46240
    } else
 
46241
      tjp->proceed ();
 
46242
  }
 
46243
#line 46244 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46244
 
 
46245
protected:
 
46246
 
 
46247
#line 180 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46248
 
 
46249
 
 
46250
  // extend object handling
 
46251
  
 
46252
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46253
 
 
46254
public: template<class JoinPoint> void __a6_after 
 
46255
#line 184 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46256
 
 
46257
#line 184 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46258
(JoinPoint *tjp)
 
46259
#line 184 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46260
 {
 
46261
#line 46262 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46262
 
 
46263
  typedef typename JoinPoint::That __JP_That;
 
46264
  typedef typename JoinPoint::Target __JP_Target;
 
46265
  typedef typename JoinPoint::Result __JP_Result;
 
46266
 
 
46267
#line 184 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46268
 
 
46269
    Puma::CTree *node = *tjp->result ();
 
46270
    if (! node || node->NodeName () != Puma::CT_InitDeclarator::NodeId ()) 
 
46271
      return;
 
46272
 
 
46273
    Puma::CObjectInfo *object = ((Puma::CT_InitDeclarator *)node)->Object ();
 
46274
    if (tjp->that ()->_in_pointcut_decl && object->FunctionInfo ()) {
 
46275
      // setup the scope for the following pointcut expression
 
46276
// TEMPORARY
 
46277
//      tjp->that ()->last_scope = tjp->that ()->current_scope;
 
46278
      tjp->that ()->current_scope = object->FunctionInfo ();
 
46279
    }
 
46280
  }
 
46281
#line 46282 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46282
 
 
46283
protected:
 
46284
 
 
46285
#line 196 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46286
 
 
46287
  
 
46288
  // make sure lookup of members is ignored for intros
 
46289
  
 
46290
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46291
 
 
46292
public: template<class JoinPoint> void __a7_around 
 
46293
#line 202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46294
 
 
46295
#line 202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46296
(JoinPoint *tjp, bool &redef_typedef)
 
46297
#line 202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46298
 {
 
46299
#line 46300 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46300
 
 
46301
  typedef typename JoinPoint::That __JP_That;
 
46302
  typedef typename JoinPoint::Target __JP_Target;
 
46303
  typedef typename JoinPoint::Result __JP_Result;
 
46304
 
 
46305
#line 202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46306
 
 
46307
      if (tjp->that ()->_in_advice_decl) {
 
46308
        redef_typedef = false;
 
46309
        *tjp->result () = true;
 
46310
      } else
 
46311
        tjp->proceed ();
 
46312
  }
 
46313
#line 46314 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46314
 
 
46315
protected:
 
46316
 
 
46317
#line 208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46318
 
 
46319
 
 
46320
  // extend the class handling  
 
46321
  
 
46322
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46323
 
 
46324
public: template<class JoinPoint> void __a8_after 
 
46325
#line 212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46326
 
 
46327
#line 212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46328
(JoinPoint *tjp)
 
46329
#line 212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46330
 {
 
46331
#line 46332 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46332
 
 
46333
  typedef typename JoinPoint::That __JP_That;
 
46334
  typedef typename JoinPoint::Target __JP_Target;
 
46335
  typedef typename JoinPoint::Result __JP_Result;
 
46336
 
 
46337
#line 212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46338
 
 
46339
    Puma::CT_ClassDef *cd = (Puma::CT_ClassDef*)*tjp->result ();
 
46340
    if (!cd)
 
46341
      return;
 
46342
    tjp->that ()->introduce_class_post (cd);
 
46343
  }
 
46344
#line 46345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46345
 
 
46346
protected:
 
46347
 
 
46348
#line 217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46349
 
 
46350
 
 
46351
  // extend the class handling  
 
46352
//  advice within (derived (csemantic ())) &&
 
46353
//    execution ("% ...::class_spec(...)") : before () {
 
46354
//    if (tjp->that ()->_introducer) {
 
46355
//      Puma::CT_ClassDef *cd =
 
46356
//        (Puma::CT_ClassDef*)tjp->that ()->current_scope->Structure ()->Tree ();
 
46357
//      Puma::Builder &builder = tjp->that ()->builder ();
 
46358
//      tjp->that ()->_introducer->class_end (cd,
 
46359
//        builder.get_node (builder.nodes () - 1));
 
46360
//    }
 
46361
//  }
 
46362
  
 
46363
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46364
 
 
46365
public: template<class JoinPoint> void __a9_before 
 
46366
#line 231 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46367
 
 
46368
#line 231 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46369
(JoinPoint *tjp)
 
46370
#line 231 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46371
 {
 
46372
#line 46373 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46373
 
 
46374
  typedef typename JoinPoint::That __JP_That;
 
46375
  typedef typename JoinPoint::Target __JP_Target;
 
46376
  typedef typename JoinPoint::Result __JP_Result;
 
46377
 
 
46378
#line 231 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46379
 
 
46380
    if (tjp->that ()->_introducer) {
 
46381
      Puma::CT_ClassDef *cd = (Puma::CT_ClassDef*)
 
46382
        tjp->that ()->current_scope->Structure ()->Tree ();
 
46383
      tjp->that ()->_introducer->class_end (cd);
 
46384
    }
 
46385
  }
 
46386
#line 46387 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46387
 
 
46388
protected:
 
46389
 
 
46390
#line 237 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46391
 
 
46392
  
 
46393
  // perform an additional check on base classes with aspects
 
46394
  
 
46395
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46396
 
 
46397
public: template<class JoinPoint> void __a10_after 
 
46398
#line 241 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46399
 
 
46400
#line 241 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46401
(JoinPoint *tjp)
 
46402
#line 241 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46403
 {
 
46404
#line 46405 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46405
 
 
46406
  typedef typename JoinPoint::That __JP_That;
 
46407
  typedef typename JoinPoint::Target __JP_Target;
 
46408
  typedef typename JoinPoint::Result __JP_Result;
 
46409
 
 
46410
#line 241 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46411
 
 
46412
 
 
46413
    // obtain the first argument
 
46414
    Puma::CT_ClassDef *cd = (Puma::CT_ClassDef*)*tjp->template arg<0>();
 
46415
    
 
46416
    // if necessary introduce base classes here
 
46417
    if (tjp->that ()->_introducer) {
 
46418
      tjp->that ()->_introducer->base_clause_end (cd,
 
46419
        tjp->that ()->syntax ().provider ()->current ());
 
46420
    }
 
46421
 
 
46422
    // semantically handle introduced base classes
 
46423
    Puma::CT_BaseSpecList *bl = (Puma::CT_BaseSpecList*)cd->BaseIntros ();
 
46424
    if (cd->Object () && bl) {
 
46425
      int num = bl->Entries ();
 
46426
      for (int i = 0; i < num; i++)
 
46427
        tjp->that ()->addBaseClass (cd->Object ()->ClassInfo (),
 
46428
          (Puma::CT_BaseSpec*)bl->Entry (i));
 
46429
    }
 
46430
 
 
46431
    // handle it
 
46432
    tjp->that ()->add_base_classes_post (cd);
 
46433
  }
 
46434
#line 46435 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46435
 
 
46436
protected:
 
46437
 
 
46438
#line 263 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46439
 
 
46440
 
 
46441
  // extend the translation unit handling -> finalization
 
46442
  
 
46443
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46444
 
 
46445
public: template<class JoinPoint> void __a11_after 
 
46446
#line 267 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46447
 
 
46448
#line 267 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46449
(JoinPoint *tjp)
 
46450
#line 267 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46451
 {
 
46452
#line 46453 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46453
 
 
46454
  typedef typename JoinPoint::That __JP_That;
 
46455
  typedef typename JoinPoint::Target __JP_Target;
 
46456
  typedef typename JoinPoint::Result __JP_Result;
 
46457
 
 
46458
#line 267 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46459
 
 
46460
    if (tjp->that ()->_introducer) {
 
46461
      tjp->that ()->_introducer->trans_unit_end ((Puma::CT_Program*)*tjp->result ());
 
46462
    }
 
46463
  }
 
46464
#line 46465 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46465
 
 
46466
protected:
 
46467
 
 
46468
#line 271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46469
 
 
46470
 
 
46471
public:
 
46472
  typedef AC::TL<bool,AC::TLE > __AttrTypes;
 
46473
  const char *__attr_name (unsigned i) const {
 
46474
    static const char *names[] = { "_enabled" }; return names[i];
 
46475
  }
 
46476
  const void *__attr (unsigned __i) const {
 
46477
    switch (__i) { case 0: return &_enabled; default: return 0; }
 
46478
  }
 
46479
#line 273 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46480
};
 
46481
#line 46482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46482
 
 
46483
namespace AC {
 
46484
  template <class JoinPoint>
 
46485
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a0_before (JoinPoint *tjp) {
 
46486
    ::ExtAC::aspectof()->__a0_before (tjp);
 
46487
  }
 
46488
  template <class JoinPoint>
 
46489
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a1_after (JoinPoint *tjp) {
 
46490
    ::ExtAC::aspectof()->__a1_after (tjp);
 
46491
  }
 
46492
  template <class JoinPoint>
 
46493
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a2_around (JoinPoint *tjp) {
 
46494
    ::ExtAC::aspectof()->__a2_around (tjp);
 
46495
  }
 
46496
  template <class JoinPoint>
 
46497
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a3_around (JoinPoint *tjp) {
 
46498
    ::ExtAC::aspectof()->__a3_around (tjp);
 
46499
  }
 
46500
  template <class JoinPoint>
 
46501
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a4_after (JoinPoint *tjp) {
 
46502
    ::ExtAC::aspectof()->__a4_after (tjp);
 
46503
  }
 
46504
  template <class JoinPoint>
 
46505
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a5_around (JoinPoint *tjp) {
 
46506
    typedef typename JoinPoint::Binding_ExtAC_ExtAC_a5_around::template Arg<0> Arg0;
 
46507
    ::ExtAC::aspectof()->__a5_around (tjp, (bool &)Arg0::val (tjp));
 
46508
  }
 
46509
  template <class JoinPoint>
 
46510
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a6_after (JoinPoint *tjp) {
 
46511
    ::ExtAC::aspectof()->__a6_after (tjp);
 
46512
  }
 
46513
  template <class JoinPoint>
 
46514
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a7_around (JoinPoint *tjp) {
 
46515
    typedef typename JoinPoint::Binding_ExtAC_ExtAC_a7_around::template Arg<0> Arg0;
 
46516
    ::ExtAC::aspectof()->__a7_around (tjp, (bool &)Arg0::val (tjp));
 
46517
  }
 
46518
  template <class JoinPoint>
 
46519
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a8_after (JoinPoint *tjp) {
 
46520
    ::ExtAC::aspectof()->__a8_after (tjp);
 
46521
  }
 
46522
  template <class JoinPoint>
 
46523
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a9_before (JoinPoint *tjp) {
 
46524
    ::ExtAC::aspectof()->__a9_before (tjp);
 
46525
  }
 
46526
  template <class JoinPoint>
 
46527
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a10_after (JoinPoint *tjp) {
 
46528
    ::ExtAC::aspectof()->__a10_after (tjp);
 
46529
  }
 
46530
  template <class JoinPoint>
 
46531
  __attribute((always_inline)) inline void invoke_ExtAC_ExtAC_a11_after (JoinPoint *tjp) {
 
46532
    ::ExtAC::aspectof()->__a11_after (tjp);
 
46533
  }
 
46534
 
46535
 
 
46536
#line 273 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46537
 
 
46538
 
 
46539
 
 
46540
// ***************************
 
46541
// C and CC-Semantic extension
 
46542
// ***************************
 
46543
 
 
46544
 
 
46545
#line 314 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46546
 
 
46547
 
 
46548
 
 
46549
#line 334 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46550
 
 
46551
 
 
46552
 
 
46553
#line 360 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46554
 
 
46555
 
 
46556
 
 
46557
#line 388 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46558
 
 
46559
 
 
46560
 
 
46561
#line 447 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46562
 
 
46563
 
 
46564
 
 
46565
 
 
46566
#line 541 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46567
 
 
46568
 
 
46569
 
 
46570
#line 565 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46571
 
 
46572
 
 
46573
 
 
46574
#line 672 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46575
 
 
46576
 
 
46577
 
 
46578
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46579
 
 
46580
 
 
46581
 
 
46582
#line 708 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46583
 
 
46584
 
 
46585
 
 
46586
 
 
46587
#line 715 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtAC.ah"
 
46588
 
 
46589
 
 
46590
#endif /* __ext_ac_h__ */
 
46591
 
 
46592
#line 8 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDatabase.h"
 
46593
#endif
 
46594
namespace Puma {
 
46595
 
 
46596
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDatabase.h"
 
46597
class CSemDatabase : public Puma :: ACClassDatabase 
 
46598
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDatabase.h"
 
46599
{
 
46600
#line 46601 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46601
  friend class ::CCExprResolve;
 
46602
  friend class ::CExprResolve;
 
46603
  friend class ::WinIfExists;
 
46604
  friend class ::WinImportHandler;
 
46605
  friend class ::WinMacros;
 
46606
  friend class ::WinAsm;
 
46607
  friend class ::WinDeclSpecs;
 
46608
  friend class ::WinMemberExplSpec;
 
46609
  friend class ::WinTypeKeywords;
 
46610
  friend class ::WinFriend;
 
46611
  friend class ::ExtAC;
 
46612
  friend class ::ExtACBuilderCoupling;
 
46613
  friend class ::ExtACSyntaxCoupling;
 
46614
  friend class ::ExtACTree;
 
46615
  friend class ::ExtACKeywords;
 
46616
  friend class ::ExtGnu;
 
46617
  friend class ::PragmaOnceUnitState;
 
46618
  friend class ::PragmaOnce;
 
46619
  friend class ::CMatchSyntax;
 
46620
 
 
46621
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDatabase.h"
 
46622
 
 
46623
  Array<CObjectInfo*> _Classes;    // index of classes
 
46624
  Array<CObjectInfo*> _Unions;     // index of unions
 
46625
  Array<CObjectInfo*> _Enums;      // index of enums
 
46626
  Array<CObjectInfo*> _Typedefs;   // index of typedefs
 
46627
  Array<CObjectInfo*> _Functions;  // index of functions
 
46628
  Array<CObjectInfo*> _Files;      // index of files
 
46629
 
 
46630
  CProject *_Project; // associated project
 
46631
  
 
46632
  multimap<int,CFunctionInfo*> _builtin_ops; // map for built-in operator lookup
 
46633
 
 
46634
public:
 
46635
  /** Constructor. 
 
46636
   *  \param prj The project information.
 
46637
   *  \param size Initial size of the database (not yet used!). */
 
46638
  CSemDatabase (CProject &prj, int size = 997);
 
46639
  /** Destructor. Destroys all semantic information objects in
 
46640
   *  the database. */
 
46641
  virtual ~CSemDatabase ();
 
46642
 
 
46643
  /** Get the number of semantic objects. */
 
46644
  unsigned ObjectInfos () const;
 
46645
  /** Get the number of semantic objects for classes. */
 
46646
  unsigned ClassInfos () const;
 
46647
  /** Get the number of semantic objects for unions. */
 
46648
  unsigned UnionInfos () const;
 
46649
  /** Get the number of semantic objects for enumerations. */
 
46650
  unsigned EnumInfos () const;
 
46651
  /** Get the number of semantic objects for typedefs. */
 
46652
  unsigned TypedefInfos () const;
 
46653
  /** Get the number of semantic objects for functions. */
 
46654
  unsigned FunctionInfos () const;
 
46655
  /** Get the number of semantic objects for translation units (file scope). */
 
46656
  unsigned FileInfos () const;
 
46657
 
 
46658
  /** Get the n-th semantic object.
 
46659
   *  \param n The index of the object.
 
46660
   *  \return The object or NULL if \e n is invalid. */
 
46661
  CObjectInfo *ObjectInfo (unsigned n) const;
 
46662
  /** Get the n-th semantic object for classes.
 
46663
   *  \param n The index of the object.
 
46664
   *  \return The object or NULL if \e n is invalid. */
 
46665
  CClassInfo *ClassInfo (unsigned n) const;
 
46666
  /** Get the n-th semantic object for unions.
 
46667
   *  \param n The index of the object.
 
46668
   *  \return The object or NULL if \e n is invalid. */
 
46669
  CUnionInfo *UnionInfo (unsigned n) const;
 
46670
  /** Get the n-th semantic object for enumerations.
 
46671
   *  \param n The index of the object.
 
46672
   *  \return The object or NULL if \e n is invalid. */
 
46673
  CEnumInfo *EnumInfo (unsigned n) const;
 
46674
  /** Get the n-th semantic object for typedefs.
 
46675
   *  \param n The index of the object.
 
46676
   *  \return The object or NULL if \e n is invalid. */
 
46677
  CTypedefInfo *TypedefInfo (unsigned n) const;
 
46678
  /** Get the n-th semantic object for functions.
 
46679
   *  \param n The index of the object.
 
46680
   *  \return The object or NULL if \e n is invalid. */
 
46681
  CFunctionInfo *FunctionInfo (unsigned n) const;
 
46682
  /** Get the n-th semantic object for translation units (file scope).
 
46683
   *  \param n The index of the object.
 
46684
   *  \return The object or NULL if \e n is invalid. */
 
46685
  CFileInfo *FileInfo (unsigned n) const;
 
46686
 
 
46687
  /** Get the semantic object for the entity at the given
 
46688
   *  source code position (token). 
 
46689
   *  \param pos The token of the entity. 
 
46690
   *  \return The semantic object or NULL. */
 
46691
  CObjectInfo *ObjectInfo (Token *pos) const; 
 
46692
  /** Get the semantic object for the entity at the given
 
46693
   *  source code position (token). 
 
46694
   *  \param pos The token of the entity. 
 
46695
   *  \return The semantic object or NULL. */
 
46696
  CObjectInfo *ObjectInfo (CT_Token *pos) const; 
 
46697
 
 
46698
public:
 
46699
  /** Insert a new semantic object into the database.
 
46700
   *  \param info The semantic object. */
 
46701
  void Insert (CObjectInfo *info);
 
46702
  /** Remove the given semantic object from the database.
 
46703
   *  \param info The semantic object. */
 
46704
  void Remove (CObjectInfo *info);
 
46705
  /** Get the semantic object for the given built-in operator.
 
46706
   *  \param name The operator name/symbol.
 
46707
   *  \param tok The operator token type.
 
46708
   *  \param rtype The result type of the operator.
 
46709
   *  \param t0 Type of the first operand.
 
46710
   *  \param t1 Type of the second operand, or NULL if only one operand. */
 
46711
  CFunctionInfo *BuiltinOperator (const char *name, int tok, CTypeInfo *rtype, CTypeInfo *t0, CTypeInfo *t1);
 
46712
  /** Dump the contents of the database. The dump is indented as
 
46713
   *  tree corresponding to the nesting of the semantic objects.
 
46714
   *  \param out The output stream.
 
46715
   *  \param depth The maximum indentation depth (0 means infinite). */
 
46716
  
 
46717
#line 46718 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46718
public: __attribute__((always_inline)) inline void __exec_old_Dump(::std::ostream & out,int depth) const;
 
46719
 
 
46720
#line 142 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDatabase.h"
 
46721
void Dump (ostream &out, int depth = 0) const;
 
46722
 
 
46723
  /** Get the project information. */
 
46724
  CProject *Project () const;
 
46725
 
 
46726
private:
 
46727
  void CreateParameter (CFunctionInfo *fi, CTypeInfo *type) const;
 
46728
 
 
46729
  void Dump (ostream &, CStructure *, int, int) const;
 
46730
  void DumpType (ostream &, CObjectInfo *, int) const;
 
46731
  void DumpUsing (ostream &, CUsingInfo *, int) const;
 
46732
  void DumpFunction (ostream &, CFunctionInfo *, int, int) const;
 
46733
  void DumpAttribute (ostream &, CAttributeInfo *, int) const;
 
46734
  void DumpNamespace (ostream &, CNamespaceInfo *, int) const;
 
46735
  void DumpQualities (ostream &, CObjectInfo *) const;
 
46736
  void DumpScopeName (ostream &, CStructure *) const;
 
46737
  void DumpLocalScope (ostream &, CObjectInfo *, int) const;
 
46738
  void DumpTemplateParam (ostream &, CTemplateParamInfo *, int) const;
 
46739
  void indent (ostream &, int) const;
 
46740
public:
 
46741
  typedef AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::CProject *,AC::TL<std::multimap< int,Puma::CFunctionInfo * >,AC::TLE > > > > > > > > __AttrTypes;
 
46742
  const char *__attr_name (unsigned i) const {
 
46743
    static const char *names[] = { "_Classes", "_Unions", "_Enums", "_Typedefs", "_Functions", "_Files", "_Project", "_builtin_ops" }; return names[i];
 
46744
  }
 
46745
  const void *__attr (unsigned __i) const {
 
46746
    switch (__i) { case 1: return &_Classes; case 3: return &_Unions; case 5: return &_Enums; case 7: return &_Typedefs; case 9: return &_Functions; case 11: return &_Files; case 12: return &_Project; case 15: return &_builtin_ops; default: return 0; }
 
46747
  }
 
46748
#line 161 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDatabase.h"
 
46749
};
 
46750
 
 
46751
inline CSemDatabase::CSemDatabase (CProject &p, int size) :
 
46752
  _Project (&p)
 
46753
 {}
 
46754
 
 
46755
inline unsigned CSemDatabase::ObjectInfos () const
 
46756
 { return ClassInfos () + UnionInfos () + EnumInfos () + 
 
46757
          TypedefInfos () + FunctionInfos () + FileInfos (); }
 
46758
inline unsigned CSemDatabase::ClassInfos () const
 
46759
 { return _Classes.length (); }
 
46760
inline unsigned CSemDatabase::UnionInfos () const
 
46761
 { return _Unions.length (); }
 
46762
inline unsigned CSemDatabase::EnumInfos () const
 
46763
 { return _Enums.length (); }
 
46764
inline unsigned CSemDatabase::TypedefInfos () const
 
46765
 { return _Typedefs.length (); }
 
46766
inline unsigned CSemDatabase::FunctionInfos () const
 
46767
 { return _Functions.length (); }
 
46768
inline unsigned CSemDatabase::FileInfos () const
 
46769
 { return _Files.length (); }
 
46770
 
 
46771
inline CClassInfo *CSemDatabase::ClassInfo (unsigned i) const
 
46772
 { return (CClassInfo*)_Classes.lookup (i); }
 
46773
inline CUnionInfo *CSemDatabase::UnionInfo (unsigned i) const
 
46774
 { return (CUnionInfo*)_Unions.lookup (i); }
 
46775
inline CEnumInfo *CSemDatabase::EnumInfo (unsigned i) const
 
46776
 { return (CEnumInfo*)_Enums.lookup (i); }
 
46777
inline CTypedefInfo *CSemDatabase::TypedefInfo (unsigned i) const
 
46778
 { return (CTypedefInfo*)_Typedefs.lookup (i); }
 
46779
inline CFunctionInfo *CSemDatabase::FunctionInfo (unsigned i) const
 
46780
 { return (CFunctionInfo*)_Functions.lookup (i); }
 
46781
inline CFileInfo *CSemDatabase::FileInfo (unsigned i) const
 
46782
 { return (CFileInfo*)_Files.lookup (i); }
 
46783
 
 
46784
inline CProject *CSemDatabase::Project () const
 
46785
 { return _Project; }
 
46786
 
 
46787
 
 
46788
} // namespace Puma
 
46789
 
 
46790
#endif /* __CSemDatabase_h__ */
 
46791
 
 
46792
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypedefInfo.h"
 
46793
// This file is part of PUMA.
 
46794
// Copyright (C) 1999-2003  The PUMA developer team.
 
46795
//                                                                
 
46796
// This program is free software;  you can redistribute it and/or 
 
46797
// modify it under the terms of the GNU General Public License as 
 
46798
// published by the Free Software Foundation; either version 2 of 
 
46799
// the License, or (at your option) any later version.            
 
46800
//                                                                
 
46801
// This program is distributed in the hope that it will be useful,
 
46802
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
46803
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
46804
// GNU General Public License for more details.                   
 
46805
//                                                                
 
46806
// You should have received a copy of the GNU General Public      
 
46807
// License along with this program; if not, write to the Free     
 
46808
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
46809
// MA  02111-1307  USA                                            
 
46810
 
 
46811
#ifndef __CTypedefInfo_h__
 
46812
#define __CTypedefInfo_h__
 
46813
 
 
46814
/** \file 
 
46815
 *  Semantic information about a typedef. */
 
46816
 
 
46817
 
 
46818
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypedefInfo.h"
 
46819
namespace Puma {
 
46820
 
 
46821
 
 
46822
/** \class CTypedefInfo CTypedefInfo.h Puma/CTypedefInfo.h
 
46823
 *  Semantic information about a typedef. A typedef is a
 
46824
 *  named type for any underlying type. The type of a typedef  
 
46825
 *  is the underlying type. */
 
46826
 
 
46827
#line 46828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46828
} // closed Puma
 
46829
class CCExprResolve;
 
46830
class CExprResolve;
 
46831
class WinIfExists;
 
46832
class WinImportHandler;
 
46833
class WinMacros;
 
46834
class WinAsm;
 
46835
class WinDeclSpecs;
 
46836
class WinMemberExplSpec;
 
46837
class WinTypeKeywords;
 
46838
class WinFriend;
 
46839
class ExtAC;
 
46840
class ExtACBuilderCoupling;
 
46841
class ExtACSyntaxCoupling;
 
46842
class ExtACTree;
 
46843
class ExtACKeywords;
 
46844
class ExtGnu;
 
46845
class PragmaOnceUnitState;
 
46846
class PragmaOnce;
 
46847
class CMatchSyntax;
 
46848
namespace Puma {
 
46849
 
 
46850
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypedefInfo.h"
 
46851
class CTypedefInfo : public CScopeRequest {
 
46852
#line 46853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46853
  friend class ::CCExprResolve;
 
46854
  friend class ::CExprResolve;
 
46855
  friend class ::WinIfExists;
 
46856
  friend class ::WinImportHandler;
 
46857
  friend class ::WinMacros;
 
46858
  friend class ::WinAsm;
 
46859
  friend class ::WinDeclSpecs;
 
46860
  friend class ::WinMemberExplSpec;
 
46861
  friend class ::WinTypeKeywords;
 
46862
  friend class ::WinFriend;
 
46863
  friend class ::ExtAC;
 
46864
  friend class ::ExtACBuilderCoupling;
 
46865
  friend class ::ExtACSyntaxCoupling;
 
46866
  friend class ::ExtACTree;
 
46867
  friend class ::ExtACKeywords;
 
46868
  friend class ::ExtGnu;
 
46869
  friend class ::PragmaOnceUnitState;
 
46870
  friend class ::PragmaOnce;
 
46871
  friend class ::CMatchSyntax;
 
46872
 
 
46873
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypedefInfo.h"
 
46874
 
 
46875
public: 
 
46876
  /** Constructor. */
 
46877
  CTypedefInfo ();
 
46878
  /** Destructor. If the object type is CObjectInfo::TYPEDEF_INFO, 
 
46879
   *  then CObjectInfo::CleanUp() is called. */
 
46880
  ~CTypedefInfo ();
 
46881
public:
 
46882
  typedef AC::TLE __AttrTypes;
 
46883
  const char *__attr_name (unsigned i) const { return 0; }
 
46884
  const void *__attr (unsigned __i) const { return 0; }
 
46885
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypedefInfo.h"
 
46886
};
 
46887
 
 
46888
inline CTypedefInfo::CTypedefInfo () :
 
46889
  CScopeRequest (CObjectInfo::TYPEDEF_INFO)
 
46890
 {}
 
46891
 
 
46892
 
 
46893
} // namespace Puma
 
46894
 
 
46895
#endif /* __CTypedefInfo_h__ */
 
46896
 
 
46897
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInstance.h"
 
46898
// This file is part of PUMA.
 
46899
// Copyright (C) 1999-2003  The PUMA developer team.
 
46900
//                                                                
 
46901
// This program is free software;  you can redistribute it and/or 
 
46902
// modify it under the terms of the GNU General Public License as 
 
46903
// published by the Free Software Foundation; either version 2 of 
 
46904
// the License, or (at your option) any later version.            
 
46905
//                                                                
 
46906
// This program is distributed in the hope that it will be useful,
 
46907
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
46908
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
46909
// GNU General Public License for more details.                   
 
46910
//                                                                
 
46911
// You should have received a copy of the GNU General Public      
 
46912
// License along with this program; if not, write to the Free     
 
46913
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
46914
// MA  02111-1307  USA                                            
 
46915
 
 
46916
#ifndef __CTemplateInstance_h__
 
46917
#define __CTemplateInstance_h__
 
46918
 
 
46919
/** \file
 
46920
 *  Semantic information about a template instance. */
 
46921
 
 
46922
 
 
46923
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DeducedArgument.h"
 
46924
// This file is part of PUMA.
 
46925
// Copyright (C) 1999-2003  The PUMA developer team.
 
46926
//                                                                
 
46927
// This program is free software;  you can redistribute it and/or 
 
46928
// modify it under the terms of the GNU General Public License as 
 
46929
// published by the Free Software Foundation; either version 2 of 
 
46930
// the License, or (at your option) any later version.            
 
46931
//                                                                
 
46932
// This program is distributed in the hope that it will be useful,
 
46933
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
46934
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
46935
// GNU General Public License for more details.                   
 
46936
//                                                                
 
46937
// You should have received a copy of the GNU General Public      
 
46938
// License along with this program; if not, write to the Free     
 
46939
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
46940
// MA  02111-1307  USA                                            
 
46941
 
 
46942
#ifndef __DeducedArgument__
 
46943
#define __DeducedArgument__
 
46944
 
 
46945
 
 
46946
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CConstant.h"
 
46947
// This file is part of PUMA.
 
46948
// Copyright (C) 1999-2003  The PUMA developer team.
 
46949
//                                                                
 
46950
// This program is free software;  you can redistribute it and/or 
 
46951
// modify it under the terms of the GNU General Public License as 
 
46952
// published by the Free Software Foundation; either version 2 of 
 
46953
// the License, or (at your option) any later version.            
 
46954
//                                                                
 
46955
// This program is distributed in the hope that it will be useful,
 
46956
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
46957
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
46958
// GNU General Public License for more details.                   
 
46959
//                                                                
 
46960
// You should have received a copy of the GNU General Public      
 
46961
// License along with this program; if not, write to the Free     
 
46962
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
46963
// MA  02111-1307  USA                                            
 
46964
 
 
46965
#ifndef __CConstant_h__
 
46966
#define __CConstant_h__
 
46967
 
 
46968
/** \file
 
46969
 *  Semantic information for arithmetic constants. */
 
46970
 
 
46971
 
 
46972
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CConstant.h"
 
46973
namespace Puma {
 
46974
 
 
46975
 
 
46976
/** \class CConstant CConstant.h Puma/CConstant.h
 
46977
 *  Semantic information object for arithmetic constants. */
 
46978
 
 
46979
#line 46980 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
46980
} // closed Puma
 
46981
class CCExprResolve;
 
46982
class CExprResolve;
 
46983
class WinIfExists;
 
46984
class WinImportHandler;
 
46985
class WinMacros;
 
46986
class WinAsm;
 
46987
class WinDeclSpecs;
 
46988
class WinMemberExplSpec;
 
46989
class WinTypeKeywords;
 
46990
class WinFriend;
 
46991
class ExtAC;
 
46992
class ExtACBuilderCoupling;
 
46993
class ExtACSyntaxCoupling;
 
46994
class ExtACTree;
 
46995
class ExtACKeywords;
 
46996
class ExtGnu;
 
46997
class PragmaOnceUnitState;
 
46998
class PragmaOnce;
 
46999
class CMatchSyntax;
 
47000
namespace Puma {
 
47001
 
 
47002
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CConstant.h"
 
47003
class CConstant : public CExprValue {
 
47004
#line 47005 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47005
  friend class ::CCExprResolve;
 
47006
  friend class ::CExprResolve;
 
47007
  friend class ::WinIfExists;
 
47008
  friend class ::WinImportHandler;
 
47009
  friend class ::WinMacros;
 
47010
  friend class ::WinAsm;
 
47011
  friend class ::WinDeclSpecs;
 
47012
  friend class ::WinMemberExplSpec;
 
47013
  friend class ::WinTypeKeywords;
 
47014
  friend class ::WinFriend;
 
47015
  friend class ::ExtAC;
 
47016
  friend class ::ExtACBuilderCoupling;
 
47017
  friend class ::ExtACSyntaxCoupling;
 
47018
  friend class ::ExtACTree;
 
47019
  friend class ::ExtACKeywords;
 
47020
  friend class ::ExtGnu;
 
47021
  friend class ::PragmaOnceUnitState;
 
47022
  friend class ::PragmaOnce;
 
47023
  friend class ::CMatchSyntax;
 
47024
 
 
47025
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CConstant.h"
 
47026
 
 
47027
  union Value {
 
47028
    LONG_LONG    int_val;    // [signed] char|wchar_t|short|int|long|long long
 
47029
    U_LONG_LONG  uint_val;   // bool|unsigned (char|short|int|long|long long)
 
47030
    long double  float_val;  // float|double|long double
 
47031
    Value () { int_val = 0; uint_val = 0; float_val = 0.0; }
 
47032
  public:
 
47033
  typedef AC::TL<long long int,AC::TL<unsigned long long int,AC::TL<long double,AC::TLE > > > __AttrTypes;
 
47034
  const char *__attr_name (unsigned i) const {
 
47035
    static const char *names[] = { "int_val", "uint_val", "float_val" }; return names[i];
 
47036
  }
 
47037
  const void *__attr (unsigned __i) const {
 
47038
    switch (__i) { case 0: return &int_val; case 1: return &uint_val; case 2: return &float_val; default: return 0; }
 
47039
  }
 
47040
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CConstant.h"
 
47041
} value;
 
47042
  
 
47043
  enum {
 
47044
    INT_VAL,
 
47045
    UINT_VAL,
 
47046
    FLOAT_VAL
 
47047
  } value_type;
 
47048
  
 
47049
public:
 
47050
  /** Constructor.
 
47051
   *  \param v The value.
 
47052
   *  \param t The type of the value. */
 
47053
  CConstant (LONG_LONG v, CTypeInfo *t) : CExprValue (t)
 
47054
   { value.int_val = v; value_type = INT_VAL; }
 
47055
  /** Constructor.
 
47056
   *  \param v The value.
 
47057
   *  \param t The type of the value. */
 
47058
  CConstant (U_LONG_LONG v, CTypeInfo *t) : CExprValue (t)
 
47059
   { value.uint_val = v; value_type = UINT_VAL; }
 
47060
  /** Constructor.
 
47061
   *  \param v The value.
 
47062
   *  \param t The type of the value. */
 
47063
  CConstant (long double v, CTypeInfo *t) : CExprValue (t)
 
47064
   { value.float_val = v; value_type = FLOAT_VAL; }
 
47065
  /** Destructor. */
 
47066
  virtual ~CConstant () {}
 
47067
   
 
47068
  /** Cast the value to the given type. 
 
47069
   *  \param t The type to which to cast.
 
47070
   *  \return A new object with the casted value.
 
47071
   *          Has to be destroyed by the caller. */
 
47072
  CConstant *cast_to (CTypeInfo *t) const;
 
47073
 
 
47074
  /** Compute the resulting value when applying the given 
 
47075
   *  unary operator to the value. 
 
47076
   *  \param oper The operator to apply to the value (token type).
 
47077
   *  \return A new object with the computed value.
 
47078
   *          Has to be destroyed by the caller. */
 
47079
  CConstant *compute (int oper) const;
 
47080
  /** Compute the resulting value when applying the given 
 
47081
   *  binary operator to this and the given value. 
 
47082
   *  \param oper The operator to apply to the values (token type).
 
47083
   *  \param v The other operand to the operator.
 
47084
   *  \return A new object with the computed value.
 
47085
   *          Has to be destroyed by the caller. */
 
47086
  CConstant *compute (int oper, const CConstant *v) const;
 
47087
 
 
47088
  /** Convert the value to a signed integer. */
 
47089
  LONG_LONG convert_to_int () const;
 
47090
  /** Convert the value to an unsiged integer. */
 
47091
  U_LONG_LONG convert_to_uint () const;
 
47092
  /** Convert the value to floating point. */
 
47093
  long double convert_to_float () const;
 
47094
 
 
47095
  /** Get this. */
 
47096
  CConstant *Constant () const { return (CConstant*)this; }
 
47097
  /** Duplicate this. 
 
47098
   *  \return A newly allocated duplicate of this.
 
47099
   *          Has to be destroyed by the caller. */ 
 
47100
  CConstant *duplicate () const;
 
47101
 
 
47102
  /** Compare the value of this and the given constant.
 
47103
   *  Does not compare the types.
 
47104
   *  \param c The value to compare to. 
 
47105
   *  \return True if the values are equal. */
 
47106
  bool operator== (const CConstant &c) const;
 
47107
  /** Compare the value of this and the given constant.
 
47108
   *  Does not compare the types.
 
47109
   *  \param c The value to compare to. 
 
47110
   *  \return True if the values are not equal. */
 
47111
  bool operator!= (const CConstant &c) const;
 
47112
 
 
47113
  /** Check if the constant value is 0, regardless of the type. */
 
47114
  bool isNull () const;
 
47115
  /** Check if the value is positive (>= 0). */
 
47116
  bool isPositive () const;
 
47117
  /** Check if the value is negative (< 0). */
 
47118
  bool isNegative () const;
 
47119
  /** Check if the value is signed. */
 
47120
  bool isSigned () const    { return value_type == INT_VAL; }
 
47121
  /** Check if the value is unsigned. */
 
47122
  bool isUnsigned () const  { return value_type == UINT_VAL; }
 
47123
  /** Check is the value is a floating point value. */
 
47124
  bool isFloat () const     { return value_type == FLOAT_VAL; }
 
47125
 
 
47126
  /** Print the value on the given output stream.
 
47127
   *  \param out The output stream. */
 
47128
  virtual void print (ostream &out) const;
 
47129
  
 
47130
private:
 
47131
  LONG_LONG compute (int, LONG_LONG) const;
 
47132
  LONG_LONG compute (LONG_LONG, int, LONG_LONG) const;
 
47133
  U_LONG_LONG compute (int, U_LONG_LONG) const;
 
47134
  U_LONG_LONG compute (U_LONG_LONG, int, U_LONG_LONG) const;
 
47135
  long double compute (int, long double) const;
 
47136
  long double compute (long double, int, long double) const;
 
47137
 
 
47138
  LONG_LONG cast_to_real_type (LONG_LONG, CTypeInfo *) const;
 
47139
  U_LONG_LONG cast_to_real_type (U_LONG_LONG, CTypeInfo *) const;
 
47140
  long double cast_to_real_type (long double, CTypeInfo *) const;
 
47141
public:
 
47142
  typedef AC::TL<Puma::CConstant::Value,AC::TLE > __AttrTypes;
 
47143
  const char *__attr_name (unsigned i) const {
 
47144
    static const char *names[] = { "value" }; return names[i];
 
47145
  }
 
47146
  const void *__attr (unsigned __i) const {
 
47147
    switch (__i) { case 0: return &value; default: return 0; }
 
47148
  }
 
47149
#line 140 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CConstant.h"
 
47150
};
 
47151
 
 
47152
 
 
47153
} // namespace Puma
 
47154
 
 
47155
#endif /* __CConstant_h__ */
 
47156
 
 
47157
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DeducedArgument.h"
 
47158
namespace Puma {
 
47159
 
 
47160
 
 
47161
class CTemplateParamInfo;
 
47162
class CTree;
 
47163
 
 
47164
 
 
47165
#line 47166 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47166
} // closed Puma
 
47167
class CCExprResolve;
 
47168
class CExprResolve;
 
47169
class WinIfExists;
 
47170
class WinImportHandler;
 
47171
class WinMacros;
 
47172
class WinAsm;
 
47173
class WinDeclSpecs;
 
47174
class WinMemberExplSpec;
 
47175
class WinTypeKeywords;
 
47176
class WinFriend;
 
47177
class ExtAC;
 
47178
class ExtACBuilderCoupling;
 
47179
class ExtACSyntaxCoupling;
 
47180
class ExtACTree;
 
47181
class ExtACKeywords;
 
47182
class ExtGnu;
 
47183
class PragmaOnceUnitState;
 
47184
class PragmaOnce;
 
47185
class CMatchSyntax;
 
47186
namespace Puma {
 
47187
 
 
47188
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DeducedArgument.h"
 
47189
struct DeducedArgument {
 
47190
#line 47191 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47191
  friend class ::CCExprResolve;
 
47192
  friend class ::CExprResolve;
 
47193
  friend class ::WinIfExists;
 
47194
  friend class ::WinImportHandler;
 
47195
  friend class ::WinMacros;
 
47196
  friend class ::WinAsm;
 
47197
  friend class ::WinDeclSpecs;
 
47198
  friend class ::WinMemberExplSpec;
 
47199
  friend class ::WinTypeKeywords;
 
47200
  friend class ::WinFriend;
 
47201
  friend class ::ExtAC;
 
47202
  friend class ::ExtACBuilderCoupling;
 
47203
  friend class ::ExtACSyntaxCoupling;
 
47204
  friend class ::ExtACTree;
 
47205
  friend class ::ExtACKeywords;
 
47206
  friend class ::ExtGnu;
 
47207
  friend class ::PragmaOnceUnitState;
 
47208
  friend class ::PragmaOnce;
 
47209
  friend class ::CMatchSyntax;
 
47210
 
 
47211
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DeducedArgument.h"
 
47212
 
 
47213
  CTypeInfo *type;
 
47214
  CConstant *value;
 
47215
  CTemplateParamInfo *param;
 
47216
  CTree *arg;
 
47217
  bool del;
 
47218
  bool default_arg;
 
47219
  
 
47220
public:
 
47221
  DeducedArgument (CTemplateParamInfo *, CTypeInfo *, CTree * = 0, bool = false);
 
47222
  DeducedArgument (CTemplateParamInfo *, CConstant *, CTree * = 0, bool = false);
 
47223
  DeducedArgument (CTemplateParamInfo *, long);
 
47224
  ~DeducedArgument ();
 
47225
    
 
47226
  bool operator ==(const DeducedArgument &);
 
47227
 
 
47228
  CTypeInfo *Type () const;
 
47229
  CConstant *Value () const;
 
47230
  CTemplateParamInfo *TemplateParam () const;
 
47231
  CTree *TemplateArg () const;
 
47232
  bool isDefaultArg () const;
 
47233
public:
 
47234
  typedef AC::TL<Puma::CTypeInfo *,AC::TL<Puma::CConstant *,AC::TL<Puma::CTemplateParamInfo *,AC::TL<Puma::CTree *,AC::TL<bool,AC::TL<bool,AC::TLE > > > > > > __AttrTypes;
 
47235
  const char *__attr_name (unsigned i) const {
 
47236
    static const char *names[] = { "type", "value", "param", "arg", "del", "default_arg" }; return names[i];
 
47237
  }
 
47238
  const void *__attr (unsigned __i) const {
 
47239
    switch (__i) { case 0: return &type; case 1: return &value; case 2: return &param; case 3: return &arg; case 4: return &del; case 5: return &default_arg; default: return 0; }
 
47240
  }
 
47241
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DeducedArgument.h"
 
47242
};
 
47243
  
 
47244
inline CTypeInfo *DeducedArgument::Type () const
 
47245
 { return type; }
 
47246
inline CConstant *DeducedArgument::Value () const
 
47247
 { return value; }
 
47248
inline CTemplateParamInfo *DeducedArgument::TemplateParam () const
 
47249
 { return param; }
 
47250
inline CTree *DeducedArgument::TemplateArg () const
 
47251
 { return arg; }
 
47252
inline bool DeducedArgument::isDefaultArg () const
 
47253
 { return default_arg; }
 
47254
 
 
47255
 
 
47256
} // namespace Puma
 
47257
 
 
47258
#endif /* __DeducedArgument__ */
 
47259
 
 
47260
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInfo.h"
 
47261
// This file is part of PUMA.
 
47262
// Copyright (C) 1999-2003  The PUMA developer team.
 
47263
//                                                                
 
47264
// This program is free software;  you can redistribute it and/or 
 
47265
// modify it under the terms of the GNU General Public License as 
 
47266
// published by the Free Software Foundation; either version 2 of 
 
47267
// the License, or (at your option) any later version.            
 
47268
//                                                                
 
47269
// This program is distributed in the hope that it will be useful,
 
47270
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
47271
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
47272
// GNU General Public License for more details.                   
 
47273
//                                                                
 
47274
// You should have received a copy of the GNU General Public      
 
47275
// License along with this program; if not, write to the Free     
 
47276
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
47277
// MA  02111-1307  USA                                            
 
47278
 
 
47279
#ifndef __CTemplateInfo_h__
 
47280
#define __CTemplateInfo_h__
 
47281
 
 
47282
/** \file
 
47283
 *  Semantic information about a template declaration. */
 
47284
 
 
47285
 
 
47286
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInfo.h"
 
47287
namespace Puma {
 
47288
 
 
47289
 
 
47290
class CT_TemplateDecl;
 
47291
class CTemplateParamInfo;
 
47292
class CT_ExprList;
 
47293
class CT_TemplateName;
 
47294
 
 
47295
 
 
47296
/** \class CTemplateInfo CTemplateInfo.h Puma/CTemplateInfo.h
 
47297
 *  Semantic information about a template declaration.
 
47298
 *  Contains information about the parameters, specializations, 
 
47299
 *  and instances of the template. */
 
47300
 
 
47301
#line 47302 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47302
} // closed Puma
 
47303
class CCExprResolve;
 
47304
class CExprResolve;
 
47305
class WinIfExists;
 
47306
class WinImportHandler;
 
47307
class WinMacros;
 
47308
class WinAsm;
 
47309
class WinDeclSpecs;
 
47310
class WinMemberExplSpec;
 
47311
class WinTypeKeywords;
 
47312
class WinFriend;
 
47313
class ExtAC;
 
47314
class ExtACBuilderCoupling;
 
47315
class ExtACSyntaxCoupling;
 
47316
class ExtACTree;
 
47317
class ExtACKeywords;
 
47318
class ExtGnu;
 
47319
class PragmaOnceUnitState;
 
47320
class PragmaOnce;
 
47321
class CMatchSyntax;
 
47322
namespace Puma {
 
47323
 
 
47324
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInfo.h"
 
47325
class CTemplateInfo : public CStructure {
 
47326
#line 47327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47327
  friend class ::CCExprResolve;
 
47328
  friend class ::CExprResolve;
 
47329
  friend class ::WinIfExists;
 
47330
  friend class ::WinImportHandler;
 
47331
  friend class ::WinMacros;
 
47332
  friend class ::WinAsm;
 
47333
  friend class ::WinDeclSpecs;
 
47334
  friend class ::WinMemberExplSpec;
 
47335
  friend class ::WinTypeKeywords;
 
47336
  friend class ::WinFriend;
 
47337
  friend class ::ExtAC;
 
47338
  friend class ::ExtACBuilderCoupling;
 
47339
  friend class ::ExtACSyntaxCoupling;
 
47340
  friend class ::ExtACTree;
 
47341
  friend class ::ExtACKeywords;
 
47342
  friend class ::ExtGnu;
 
47343
  friend class ::PragmaOnceUnitState;
 
47344
  friend class ::PragmaOnce;
 
47345
  friend class ::CMatchSyntax;
 
47346
 
 
47347
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInfo.h"
 
47348
 
 
47349
  CObjectInfo *_ObjectInfo;
 
47350
  CTemplateInfo *_Base;
 
47351
  bool _isSpecial;
 
47352
  CT_TemplateName *_SpecializationName;
 
47353
  unsigned _Depth;
 
47354
 
 
47355
  Array<CTemplateParamInfo*> _Params;
 
47356
  Array<CObjectInfo*> _Instances;
 
47357
  Array<CObjectInfo*> _PseudoInstances;
 
47358
  Array<CTemplateInfo*> _Specializations;
 
47359
 
 
47360
public: 
 
47361
  /** Constructor. */
 
47362
  CTemplateInfo ();
 
47363
  /** Destructor. Unlinks itself from the specializations
 
47364
   *  and instances of this template. If the object type 
 
47365
   *  is CObjectInfo::TEMPLATE_INFO, CObjectInfo::CleanUp() 
 
47366
   *  is called. */
 
47367
  ~CTemplateInfo ();
 
47368
  
 
47369
  /** Remove all links from other semantic objects to
 
47370
   *  this semantic object. */
 
47371
  void removeLinks ();
 
47372
 
 
47373
  /** Check if this is a function template definition. */
 
47374
  bool isFunction () const;
 
47375
  /** Check if this is a class template definition. */
 
47376
  bool isClass () const;
 
47377
  /** Check if this is the definition of a static 
 
47378
   *  template class date member. */
 
47379
  bool isAttribute () const;
 
47380
  /** Check if this is a base template and not a 
 
47381
   *  specialization of another template. */
 
47382
  bool isBaseTemplate () const;
 
47383
  /** Check if this is a specialization of another template. */
 
47384
  bool isSpecialization () const;
 
47385
  
 
47386
  /** Increase the instantiation depth (for nested template
 
47387
   *  instantiations). */
 
47388
  void increaseDepth ();
 
47389
  /** Decrease the instantiation depth (for nested template
 
47390
   *  instantiations). */
 
47391
  void decreaseDepth ();
 
47392
  /** Get the current instantiation depth (for nested template
 
47393
   *  instantiations). */
 
47394
  unsigned Depth () const;
 
47395
 
 
47396
  /** Get the semantic information for the entity. */
 
47397
  CObjectInfo *ObjectInfo () const;
 
47398
  /** Get the syntax tree node for the template declaration. */
 
47399
  CT_TemplateDecl *Tree () const;
 
47400
  /** Get the base template if this is template specialization. */
 
47401
  CTemplateInfo *BaseTemplate () const;
 
47402
  /** Create a new template parameter.
 
47403
   *  \param add If \e true, add the created parameter to the template. */
 
47404
  CTemplateParamInfo *newTemplateParam (bool add = true);
 
47405
  
 
47406
  /** Get the number of template parameters. */
 
47407
  unsigned Parameters () const;
 
47408
  /** Get the n-th template parameter.
 
47409
   *  \param n The index of the template parameter.
 
47410
   *  \return The template parameter or NULL if \e n is invalid. */
 
47411
  CTemplateParamInfo *Parameter (unsigned n) const;
 
47412
  /** Get the default argument of the n-th template parameter.
 
47413
   *  \param n The index of the template parameter.
 
47414
   *  \return The default argument expression or NULL if 
 
47415
   *          the parameter has no default argument. */
 
47416
  CT_ExprList *DefaultArgument (unsigned n) const;
 
47417
 
 
47418
  /** Get the number of instances of this template. */
 
47419
  unsigned Instances () const;
 
47420
  /** Get the n-th instance of this template.
 
47421
   *  \param n The index of the instance.
 
47422
   *  \return The template instance or NULL if \e n is invalid. */
 
47423
  CObjectInfo *Instance (unsigned n);
 
47424
  /** Add the given instance to the template.
 
47425
   *  \param info The semantic object of the template instance. */
 
47426
  void addInstance (CObjectInfo *info);
 
47427
  /** Add the given pseudo instance to the template.
 
47428
   *  \param info The pseudo template instance. */
 
47429
  void addPseudoInstance (CObjectInfo *info);
 
47430
  /** Remove the given template instance. 
 
47431
   *  \param info The template instance. */
 
47432
  void removeInstance (const CObjectInfo *info);
 
47433
  
 
47434
  /** Get the number of specializations of this template. */
 
47435
  unsigned Specializations () const;
 
47436
  /** Get the n-th specialization of this template.
 
47437
   *  \param n The index of the specialization.
 
47438
   *  \return The specialization or NULL if \e n is invalid. */
 
47439
  CTemplateInfo *Specialization (unsigned n);
 
47440
  /** Add the given specialization of the template.
 
47441
   *  \param info The semantic object of the specialization. */
 
47442
  void addSpecialization (CTemplateInfo *info);
 
47443
  /** Remove the given specialization of the template.
 
47444
   *  \param info The template specialization. */
 
47445
  void removeSpecialization (const CTemplateInfo *info);
 
47446
  /** Set whether this is a specialization of a template.
 
47447
   *  \param v \e true if this is a specialization. */
 
47448
  void isSpecialization (bool v);
 
47449
  /** Set the template specialization name (template id).
 
47450
   *  \param name The template specialization name. */
 
47451
  void SpecializationName (CT_TemplateName *name);
 
47452
  /** Get the template specialization name. 
 
47453
   *  \return The template specialization name or NULL if not a specialization. */
 
47454
  CT_TemplateName *SpecializationName () const;
 
47455
 
 
47456
  /** Remove and destroy the given template parameter.
 
47457
   *  \param p The template parameter. */
 
47458
  void deleteTemplateParam (const CTemplateParamInfo *p); 
 
47459
  /** Set the semantic object of the entity (class, function, etc).
 
47460
   *  \param info The semantic object. */
 
47461
  void ObjectInfo (CObjectInfo *info);
 
47462
  /** Set the base template if this is a template specialization.
 
47463
   *  \param info The base template. */
 
47464
  void BaseTemplate (CTemplateInfo *info);
 
47465
 
 
47466
  /** Check if the given template instances have the 
 
47467
   *  same instantiation arguments. 
 
47468
   *  \param i1 A template instance.
 
47469
   *  \param i2 Another template instance. */
 
47470
  static bool equalArguments (CTemplateInstance *i1, CTemplateInstance *i2);
 
47471
 
 
47472
private:
 
47473
  void linkInstance (CObjectInfo *);
 
47474
  CTemplateInfo *nextTemplate (CTemplateInfo *tinfo) const; 
 
47475
public:
 
47476
  typedef AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CTemplateInfo *,AC::TL<bool,AC::TL<Puma::CT_TemplateName *,AC::TL<unsigned int,AC::TL<Puma::Array< Puma::CTemplateParamInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CTemplateInfo * >,AC::TLE > > > > > > > > > __AttrTypes;
 
47477
  const char *__attr_name (unsigned i) const {
 
47478
    static const char *names[] = { "_ObjectInfo", "_Base", "_isSpecial", "_SpecializationName", "_Depth", "_Params", "_Instances", "_PseudoInstances", "_Specializations" }; return names[i];
 
47479
  }
 
47480
  const void *__attr (unsigned __i) const {
 
47481
    switch (__i) { case 0: return &_ObjectInfo; case 1: return &_Base; case 2: return &_isSpecial; case 3: return &_SpecializationName; case 4: return &_Depth; case 6: return &_Params; case 8: return &_Instances; case 10: return &_PseudoInstances; case 12: return &_Specializations; default: return 0; }
 
47482
  }
 
47483
#line 167 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInfo.h"
 
47484
};
 
47485
 
 
47486
inline CTemplateInfo::CTemplateInfo () :
 
47487
  CStructure (CObjectInfo::TEMPLATE_INFO),
 
47488
  _ObjectInfo ((CObjectInfo*)0),
 
47489
  _Base ((CTemplateInfo*)0),
 
47490
  _isSpecial (false),
 
47491
  _SpecializationName ((CT_TemplateName*)0),
 
47492
  _Depth (0),
 
47493
  _Instances (20, 20) // big enough?
 
47494
 {}
 
47495
 
 
47496
inline void CTemplateInfo::increaseDepth () 
 
47497
 { _Depth++; }
 
47498
inline void CTemplateInfo::decreaseDepth ()
 
47499
 { if (_Depth) _Depth--; }
 
47500
inline unsigned CTemplateInfo::Depth () const
 
47501
 { return _Depth; }
 
47502
 
 
47503
inline unsigned CTemplateInfo::Instances () const
 
47504
 { return _Instances.length (); }
 
47505
inline CObjectInfo *CTemplateInfo::Instance (unsigned i)
 
47506
 { return _Instances.lookup (i); }
 
47507
inline void CTemplateInfo::addInstance (CObjectInfo *inst)
 
47508
 { _Instances.append (inst); linkInstance (inst); }
 
47509
inline void CTemplateInfo::addPseudoInstance (CObjectInfo *inst)
 
47510
 { _PseudoInstances.append (inst); linkInstance (inst); }
 
47511
 
 
47512
inline unsigned CTemplateInfo::Specializations () const
 
47513
 { return _Specializations.length (); }
 
47514
inline CTemplateInfo *CTemplateInfo::Specialization (unsigned i)
 
47515
 { return _Specializations.lookup (i); }
 
47516
inline void CTemplateInfo::isSpecialization (bool v)
 
47517
 { _isSpecial = v; }
 
47518
inline CT_TemplateName *CTemplateInfo::SpecializationName () const 
 
47519
 { return _SpecializationName; }
 
47520
inline void CTemplateInfo::SpecializationName (CT_TemplateName *name)
 
47521
 { _SpecializationName = name; }
 
47522
 
 
47523
inline unsigned CTemplateInfo::Parameters () const
 
47524
 { return _Params.length (); }
 
47525
inline CTemplateParamInfo *CTemplateInfo::Parameter (unsigned i) const
 
47526
 { return _Params.lookup (i); }
 
47527
 
 
47528
inline CObjectInfo *CTemplateInfo::ObjectInfo () const
 
47529
 { return _ObjectInfo; }
 
47530
inline void CTemplateInfo::ObjectInfo (CObjectInfo *info)
 
47531
 { if (info && (void*)info < (void*)0x10) *(int*)info = 0;
 
47532
   _ObjectInfo = info; }
 
47533
inline CTemplateInfo *CTemplateInfo::BaseTemplate () const
 
47534
 { return _Base; }
 
47535
 
 
47536
inline bool CTemplateInfo::isFunction () const
 
47537
 { return ObjectInfo () && ObjectInfo ()->FunctionInfo (); }
 
47538
inline bool CTemplateInfo::isClass () const
 
47539
 { return ObjectInfo () && ObjectInfo ()->ClassInfo (); }
 
47540
inline bool CTemplateInfo::isAttribute () const
 
47541
 { return ObjectInfo () && ObjectInfo ()->AttributeInfo (); }
 
47542
inline bool CTemplateInfo::isBaseTemplate () const
 
47543
 { return ! _isSpecial && ! (_Base); }
 
47544
inline bool CTemplateInfo::isSpecialization () const
 
47545
 { return _Base || _isSpecial; }
 
47546
 
 
47547
inline CT_TemplateDecl *CTemplateInfo::Tree () const 
 
47548
 { return (CT_TemplateDecl*)CObjectInfo::Tree (); }
 
47549
 
 
47550
 
 
47551
} // namespace Puma
 
47552
 
 
47553
#endif /* __CTemplateInfo_h__ */
 
47554
 
 
47555
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTranslationUnit.h"
 
47556
// This file is part of PUMA.
 
47557
// Copyright (C) 1999-2003  The PUMA developer team.
 
47558
//                                                                
 
47559
// This program is free software;  you can redistribute it and/or 
 
47560
// modify it under the terms of the GNU General Public License as 
 
47561
// published by the Free Software Foundation; either version 2 of 
 
47562
// the License, or (at your option) any later version.            
 
47563
//                                                                
 
47564
// This program is distributed in the hope that it will be useful,
 
47565
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
47566
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
47567
// GNU General Public License for more details.                   
 
47568
//                                                                
 
47569
// You should have received a copy of the GNU General Public      
 
47570
// License along with this program; if not, write to the Free     
 
47571
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
47572
// MA  02111-1307  USA                                            
 
47573
 
 
47574
#ifndef __CTranslationUnit__
 
47575
#define __CTranslationUnit__
 
47576
 
 
47577
/** \file
 
47578
 *  Abstraction of a translation unit. */
 
47579
 
 
47580
 
 
47581
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
47582
 
 
47583
#line 47584 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47584
 
 
47585
#ifndef __ac_fwd_PragmaOnceUnitState__
 
47586
#define __ac_fwd_PragmaOnceUnitState__
 
47587
class PragmaOnceUnitState;
 
47588
namespace AC {
 
47589
  template <class JoinPoint>
 
47590
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp);
 
47591
  template <class JoinPoint>
 
47592
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after (JoinPoint *tjp);
 
47593
}
 
47594
#endif
 
47595
 
 
47596
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
47597
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
47598
#endif
 
47599
 
 
47600
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
47601
// This file is part of PUMA.
 
47602
// Copyright (C) 1999-2003  The PUMA developer team.
 
47603
//                                                                
 
47604
// This program is free software;  you can redistribute it and/or 
 
47605
// modify it under the terms of the GNU General Public License as 
 
47606
// published by the Free Software Foundation; either version 2 of 
 
47607
// the License, or (at your option) any later version.            
 
47608
//                                                                
 
47609
// This program is distributed in the hope that it will be useful,
 
47610
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
47611
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
47612
// GNU General Public License for more details.                   
 
47613
//                                                                
 
47614
// You should have received a copy of the GNU General Public      
 
47615
// License along with this program; if not, write to the Free     
 
47616
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
47617
// MA  02111-1307  USA                                            
 
47618
 
 
47619
#ifndef __UnitManager__
 
47620
#define __UnitManager__
 
47621
 
 
47622
// Class UnitManager helps you to have control of all units built.
 
47623
 
 
47624
#include <iostream>
 
47625
#include <list>
 
47626
#include <map>
 
47627
#include <string>
 
47628
using namespace std;
 
47629
#include "Puma/ErrorStream.h"
 
47630
 
 
47631
namespace Puma {
 
47632
 
 
47633
 
 
47634
class Unit;
 
47635
class Source;
 
47636
class Tokenizer;
 
47637
 
 
47638
 
 
47639
#line 47640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47640
} // closed Puma
 
47641
class CCExprResolve;
 
47642
class CExprResolve;
 
47643
class WinIfExists;
 
47644
class WinImportHandler;
 
47645
class WinMacros;
 
47646
class WinAsm;
 
47647
class WinDeclSpecs;
 
47648
class WinMemberExplSpec;
 
47649
class WinTypeKeywords;
 
47650
class WinFriend;
 
47651
class ExtAC;
 
47652
class ExtACBuilderCoupling;
 
47653
class ExtACSyntaxCoupling;
 
47654
class ExtACTree;
 
47655
class ExtACKeywords;
 
47656
class ExtGnu;
 
47657
class PragmaOnceUnitState;
 
47658
class PragmaOnce;
 
47659
class CMatchSyntax;
 
47660
namespace Puma {
 
47661
 
 
47662
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
47663
class UnitManager {
 
47664
#line 47665 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47665
  friend class ::CCExprResolve;
 
47666
  friend class ::CExprResolve;
 
47667
  friend class ::WinIfExists;
 
47668
  friend class ::WinImportHandler;
 
47669
  friend class ::WinMacros;
 
47670
  friend class ::WinAsm;
 
47671
  friend class ::WinDeclSpecs;
 
47672
  friend class ::WinMemberExplSpec;
 
47673
  friend class ::WinTypeKeywords;
 
47674
  friend class ::WinFriend;
 
47675
  friend class ::ExtAC;
 
47676
  friend class ::ExtACBuilderCoupling;
 
47677
  friend class ::ExtACSyntaxCoupling;
 
47678
  friend class ::ExtACTree;
 
47679
  friend class ::ExtACKeywords;
 
47680
  friend class ::ExtGnu;
 
47681
  friend class ::PragmaOnceUnitState;
 
47682
  friend class ::PragmaOnce;
 
47683
  friend class ::CMatchSyntax;
 
47684
 
 
47685
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
47686
 
 
47687
public:
 
47688
  typedef map<string, Unit*> UMap;
 
47689
private:
 
47690
  ErrorStream *_err;        // For error messages.
 
47691
  list<Unit*> _nonames;     // Noname units list.
 
47692
  mutable UMap _umap;       // Named units, map supports fast lookup by name
 
47693
  typedef UMap::value_type UMapPair;
 
47694
  Tokenizer *_tokenizer;    // File scanner.
 
47695
 
 
47696
public:
 
47697
  UnitManager (ErrorStream &err) : _err (&err), _tokenizer (0) {}
 
47698
        
 
47699
  // Destructor: Delete all units.
 
47700
  virtual ~UnitManager ();
 
47701
        
 
47702
  // Get the unit hash table.
 
47703
  UMap &getTable () const { return _umap; }
 
47704
  typedef UMap::iterator UMapIter;
 
47705
        
 
47706
  // Get/Set the file scanner that is used by newUnit
 
47707
  Tokenizer *tokenizer () const { return _tokenizer; }
 
47708
  void tokenizer (Tokenizer *t) { _tokenizer = t; }
 
47709
 
 
47710
  // Add a unit to manager.
 
47711
  void addUnit (Unit *unit);
 
47712
        
 
47713
  // Remove (and destroy) a unit from hash table. If the name
 
47714
  // is NULL remove all (but not the nonames).
 
47715
  void removeUnit (const char *name = (const char*) 0, bool = false, 
 
47716
                   bool destroy = true) const;
 
47717
 
 
47718
  // Empty a unit. Don't remove from hash table.
 
47719
  // Preserve the last save location information.
 
47720
  void closeUnit (const char *name = (const char*) 0, bool = false) const;
 
47721
 
 
47722
  // Build and add a new unit. 
 
47723
  Unit *newUnit (const char *, Source *in = (Source*) 0, bool = false);
 
47724
        
 
47725
  // Get a unit by name. 
 
47726
  Unit *getUnit (const char *name, bool = false) const;
 
47727
                        
 
47728
  // Print given unit to the given outstream. If no
 
47729
  // name is given, print all units.
 
47730
  void print (const char *name = (const char*) 0, bool = false, 
 
47731
              ostream &out = cout) const;
 
47732
 
 
47733
  // Destroy all noname units.
 
47734
  void removeNonames ();
 
47735
      
 
47736
  // Initialize the unit manager and the managed 
 
47737
  // units for the next parse process.
 
47738
  
 
47739
#line 47740 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47740
public: __attribute__((always_inline)) inline void __exec_old_init();
 
47741
 
 
47742
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
47743
void init ();
 
47744
public:
 
47745
  typedef AC::TL<Puma::ErrorStream *,AC::TL<std::list< Puma::Unit * >,AC::TL<std::map< std::basic_string< char >,Puma::Unit * >,AC::TL<Puma::Tokenizer *,AC::TLE > > > > __AttrTypes;
 
47746
  const char *__attr_name (unsigned i) const {
 
47747
    static const char *names[] = { "_err", "_nonames", "_umap", "_tokenizer" }; return names[i];
 
47748
  }
 
47749
  const void *__attr (unsigned __i) const {
 
47750
    switch (__i) { case 2: return &_err; case 4: return &_nonames; case 5: return &_umap; case 6: return &_tokenizer; default: return 0; }
 
47751
  }
 
47752
#line 91 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
47753
};
 
47754
 
 
47755
 
 
47756
} // namespace Puma
 
47757
 
 
47758
#endif /* __UnitManager__ */
 
47759
 
 
47760
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
47761
 
 
47762
#line 47763 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47763
 
 
47764
#ifndef __ac_fwd_ExtACKeywords__
 
47765
#define __ac_fwd_ExtACKeywords__
 
47766
class ExtACKeywords;
 
47767
namespace AC {
 
47768
  template <class JoinPoint>
 
47769
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a0_before (JoinPoint *tjp);
 
47770
  template <class JoinPoint>
 
47771
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a1_before (JoinPoint *tjp);
 
47772
  template <class JoinPoint>
 
47773
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a2_before (JoinPoint *tjp);
 
47774
}
 
47775
#endif
 
47776
 
 
47777
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
47778
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
47779
#endif
 
47780
 
 
47781
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
47782
// This file is part of PUMA.
 
47783
// Copyright (C) 1999-2003  The PUMA developer team.
 
47784
//                                                                
 
47785
// This program is free software;  you can redistribute it and/or 
 
47786
// modify it under the terms of the GNU General Public License as 
 
47787
// published by the Free Software Foundation; either version 2 of 
 
47788
// the License, or (at your option) any later version.            
 
47789
//                                                                
 
47790
// This program is distributed in the hope that it will be useful,
 
47791
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
47792
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
47793
// GNU General Public License for more details.                   
 
47794
//                                                                
 
47795
// You should have received a copy of the GNU General Public      
 
47796
// License along with this program; if not, write to the Free     
 
47797
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
47798
// MA  02111-1307  USA                                            
 
47799
 
 
47800
#ifndef __CProject_h__
 
47801
#define __CProject_h__
 
47802
 
 
47803
// Special project derivation for C++ sources.
 
47804
 
 
47805
#include "Puma/Config.h"
 
47806
#include "Puma/Project.h"
 
47807
#include "Puma/CScanner.h"
 
47808
#include "Puma/ErrorStream.h"
 
47809
 
 
47810
namespace Puma {
 
47811
 
 
47812
 
 
47813
class Source;
 
47814
class CTypeInfo;
 
47815
 
 
47816
 
 
47817
#line 47818 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47818
} // closed Puma
 
47819
class CCExprResolve;
 
47820
class CExprResolve;
 
47821
class WinIfExists;
 
47822
class WinImportHandler;
 
47823
class WinMacros;
 
47824
class WinAsm;
 
47825
class WinDeclSpecs;
 
47826
class WinMemberExplSpec;
 
47827
class WinTypeKeywords;
 
47828
class WinFriend;
 
47829
class ExtAC;
 
47830
class ExtACBuilderCoupling;
 
47831
class ExtACSyntaxCoupling;
 
47832
class ExtACTree;
 
47833
class ExtACKeywords;
 
47834
class ExtGnu;
 
47835
class PragmaOnceUnitState;
 
47836
class PragmaOnce;
 
47837
class CMatchSyntax;
 
47838
namespace Puma {
 
47839
 
 
47840
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
47841
class CProject : public Project {
 
47842
#line 47843 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47843
  friend class ::CCExprResolve;
 
47844
  friend class ::CExprResolve;
 
47845
  friend class ::WinIfExists;
 
47846
  friend class ::WinImportHandler;
 
47847
  friend class ::WinMacros;
 
47848
  friend class ::WinAsm;
 
47849
  friend class ::WinDeclSpecs;
 
47850
  friend class ::WinMemberExplSpec;
 
47851
  friend class ::WinTypeKeywords;
 
47852
  friend class ::WinFriend;
 
47853
  friend class ::ExtAC;
 
47854
  friend class ::ExtACBuilderCoupling;
 
47855
  friend class ::ExtACSyntaxCoupling;
 
47856
  friend class ::ExtACTree;
 
47857
  friend class ::ExtACKeywords;
 
47858
  friend class ::ExtGnu;
 
47859
  friend class ::PragmaOnceUnitState;
 
47860
  friend class ::PragmaOnce;
 
47861
  friend class ::CMatchSyntax;
 
47862
 
 
47863
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
47864
 
 
47865
  Config _config;
 
47866
  CScanner _scanner;
 
47867
 
 
47868
public:
 
47869
  CProject (ErrorStream &e);
 
47870
 
 
47871
  // Constructor: Add some source directories.
 
47872
  CProject (ErrorStream &, const char *defs, 
 
47873
               const char *decls = (const char*)0); 
 
47874
 
 
47875
  // Constructor: Setup preprocessor configuration according to
 
47876
  // command line parameter and the global config file and
 
47877
  // add some source directories.
 
47878
  CProject (ErrorStream &, int &argc, char **&argv, 
 
47879
            const char *defs = (const char*)0, 
 
47880
            const char *decls = (const char*)0);
 
47881
 
 
47882
public: // Project configuration 
 
47883
  // Get the preprocessor configuration.
 
47884
  Config &config ();
 
47885
 
 
47886
  // Configure the project from the command line or a file.
 
47887
  virtual void configure (Config &);
 
47888
 
 
47889
  // Add a new file to the project.
 
47890
  Unit *addFile (Filename file);
 
47891
 
 
47892
public: // Scanner interface
 
47893
  // Get the scanner.
 
47894
  CScanner &scanner ();
 
47895
 
 
47896
  // Scan the file `file' or the source if given. When
 
47897
  // scanning a source the resulting unit gets the name `file'.
 
47898
  
 
47899
#line 47900 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47900
public: __attribute__((always_inline)) inline ::Puma::Unit * __exec_old_scanFile(const char * file,::Puma::Source * ,bool isFile);
 
47901
 
 
47902
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
47903
virtual Unit *scanFile (const char *file, Source * = (Source*)0, 
 
47904
                          bool isFile = true);
 
47905
        
 
47906
  // Scan a string. The resulting unit gets the name `name'.
 
47907
  // (and will not be registered at the unit manager!)
 
47908
  virtual Unit *scanString (const char *str, 
 
47909
                            const char *name = (const char*)0);
 
47910
 
 
47911
public: // Miscellaneous Functions
 
47912
 
 
47913
  // Give the filename needed to include a particular header file
 
47914
  Filename getInclString (Filename filename);
 
47915
 
 
47916
private:
 
47917
  // Map the type string from --size-type and --ptrdiff-type
 
47918
  // to real Puma type.
 
47919
  CTypeInfo *mapType (const char *) const;
 
47920
public:
 
47921
  typedef AC::TL<Puma::Config,AC::TL<Puma::CScanner,AC::TLE > > __AttrTypes;
 
47922
  const char *__attr_name (unsigned i) const {
 
47923
    static const char *names[] = { "_config", "_scanner" }; return names[i];
 
47924
  }
 
47925
  const void *__attr (unsigned __i) const {
 
47926
    switch (__i) { case 0: return &_config; case 1: return &_scanner; default: return 0; }
 
47927
  }
 
47928
#line 86 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
47929
};
 
47930
 
 
47931
inline Config &CProject::config () 
 
47932
 { return _config; }
 
47933
inline CScanner &CProject::scanner () 
 
47934
 { return _scanner; }
 
47935
 
 
47936
 
 
47937
} // namespace Puma
 
47938
 
 
47939
#endif /* __CProject_h__ */
 
47940
 
 
47941
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTranslationUnit.h"
 
47942
namespace Puma {
 
47943
 
 
47944
 
 
47945
class CTree;
 
47946
class PreTree;
 
47947
 
 
47948
 
 
47949
/** \class CTranslationUnit CTranslationUnit.h Puma/CTranslationUnit.h
 
47950
 *  Abstraction of a translation unit. A translation unit is a 
 
47951
 *  single implementation file that a compiler can translate 
 
47952
 *  to an object file. In particular it contains all the code 
 
47953
 *  from included header files. 
 
47954
 *
 
47955
 *  A translation unit is created by the parser (see Puma::Parser).
 
47956
 *  It encapsulates the input file and the parse results (syntax
 
47957
 *  trees, semantic database). When it is destroyed, it also destroys
 
47958
 *  the parse results. */
 
47959
 
 
47960
#line 47961 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47961
} // closed Puma
 
47962
class CCExprResolve;
 
47963
class CExprResolve;
 
47964
class WinIfExists;
 
47965
class WinImportHandler;
 
47966
class WinMacros;
 
47967
class WinAsm;
 
47968
class WinDeclSpecs;
 
47969
class WinMemberExplSpec;
 
47970
class WinTypeKeywords;
 
47971
class WinFriend;
 
47972
class ExtAC;
 
47973
class ExtACBuilderCoupling;
 
47974
class ExtACSyntaxCoupling;
 
47975
class ExtACTree;
 
47976
class ExtACKeywords;
 
47977
class ExtGnu;
 
47978
class PragmaOnceUnitState;
 
47979
class PragmaOnce;
 
47980
class CMatchSyntax;
 
47981
namespace Puma {
 
47982
 
 
47983
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTranslationUnit.h"
 
47984
class CTranslationUnit {
 
47985
#line 47986 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
47986
  friend class ::CCExprResolve;
 
47987
  friend class ::CExprResolve;
 
47988
  friend class ::WinIfExists;
 
47989
  friend class ::WinImportHandler;
 
47990
  friend class ::WinMacros;
 
47991
  friend class ::WinAsm;
 
47992
  friend class ::WinDeclSpecs;
 
47993
  friend class ::WinMemberExplSpec;
 
47994
  friend class ::WinTypeKeywords;
 
47995
  friend class ::WinFriend;
 
47996
  friend class ::ExtAC;
 
47997
  friend class ::ExtACBuilderCoupling;
 
47998
  friend class ::ExtACSyntaxCoupling;
 
47999
  friend class ::ExtACTree;
 
48000
  friend class ::ExtACKeywords;
 
48001
  friend class ::ExtGnu;
 
48002
  friend class ::PragmaOnceUnitState;
 
48003
  friend class ::PragmaOnce;
 
48004
  friend class ::CMatchSyntax;
 
48005
 
 
48006
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTranslationUnit.h"
 
48007
 
 
48008
  Unit *_unit;
 
48009
  CTree *_syntax_tree;
 
48010
  PreTree *_cpp_tree;
 
48011
  CSemDatabase _class_db;
 
48012
  UnitManager _local_units;
 
48013
 
 
48014
public:
 
48015
  /** Constructor.
 
48016
   *  \param u The token unit of the input file. 
 
48017
   *  \param p The project information object. */
 
48018
  CTranslationUnit (Unit &u, CProject &p) :
 
48019
    _unit (&u),
 
48020
    _syntax_tree ((CTree*)0),
 
48021
    _cpp_tree ((PreTree*)0),
 
48022
    _class_db (p),
 
48023
    _local_units (p.err ()) {}
 
48024
  /** Destructor. Destroys the C/C++ syntax tree and the
 
48025
   *  preprocessor syntax tree. The semantic information
 
48026
   *  objects are destroyed when the semantic database 
 
48027
   *  member object is destroyed. */
 
48028
  ~CTranslationUnit () 
 
48029
    { destroy (_syntax_tree); destroy (_cpp_tree); }
 
48030
 
 
48031
  /** Set the C/C++ syntax tree. 
 
48032
   *  \param t The root node of the syntax tree. */
 
48033
  void tree (CTree *t) { _syntax_tree = t; }
 
48034
  /** Set the preprocessor syntax tree.
 
48035
   *  \param t The root node of the syntax tree. */
 
48036
  void cpp_tree (PreTree *t) { _cpp_tree = t; }
 
48037
 
 
48038
  /** Get the C/C++ syntax tree. */
 
48039
  CTree *tree () const { return _syntax_tree; }
 
48040
  /** Get the C preprocessor syntax tree. */
 
48041
  PreTree *cpp_tree () const { return _cpp_tree; }
 
48042
 
 
48043
  /** Get the token unit of the input file. */
 
48044
  Unit *unit () const { return _unit; }
 
48045
  /** Get the semantic information database. */
 
48046
  CSemDatabase &db () const { return (CSemDatabase&)_class_db; }
 
48047
  /** Get the unit manager for local units (macro expansions etc). */
 
48048
  UnitManager &local_units () const { return (UnitManager&)_local_units; }
 
48049
 
 
48050
private:
 
48051
  void destroy (CTree *t) { Builder::destroy(t); }
 
48052
  void destroy (PreTree *);
 
48053
public:
 
48054
  typedef AC::TL<Puma::Unit *,AC::TL<Puma::CTree *,AC::TL<Puma::PreTree *,AC::TL<Puma::CSemDatabase,AC::TL<Puma::UnitManager,AC::TLE > > > > > __AttrTypes;
 
48055
  const char *__attr_name (unsigned i) const {
 
48056
    static const char *names[] = { "_unit", "_syntax_tree", "_cpp_tree", "_class_db", "_local_units" }; return names[i];
 
48057
  }
 
48058
  const void *__attr (unsigned __i) const {
 
48059
    switch (__i) { case 0: return &_unit; case 1: return &_syntax_tree; case 2: return &_cpp_tree; case 3: return &_class_db; case 4: return &_local_units; default: return 0; }
 
48060
  }
 
48061
#line 94 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTranslationUnit.h"
 
48062
};
 
48063
 
 
48064
 
 
48065
} // namespace Puma
 
48066
 
 
48067
#endif /* __CTranslationUnit__ */
 
48068
 
 
48069
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCInstantiation.h"
 
48070
// This file is part of PUMA.
 
48071
// Copyright (C) 1999-2003  The PUMA developer team.
 
48072
//                                                                
 
48073
// This program is free software;  you can redistribute it and/or 
 
48074
// modify it under the terms of the GNU General Public License as 
 
48075
// published by the Free Software Foundation; either version 2 of 
 
48076
// the License, or (at your option) any later version.            
 
48077
//                                                                
 
48078
// This program is distributed in the hope that it will be useful,
 
48079
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
48080
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
48081
// GNU General Public License for more details.                   
 
48082
//                                                                
 
48083
// You should have received a copy of the GNU General Public      
 
48084
// License along with this program; if not, write to the Free     
 
48085
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
48086
// MA  02111-1307  USA                                            
 
48087
 
 
48088
#ifndef __CCInstantiation__
 
48089
#define __CCInstantiation__
 
48090
 
 
48091
 
 
48092
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/InstantiationCandidate.h"
 
48093
// This file is part of PUMA.
 
48094
// Copyright (C) 1999-2003  The PUMA developer team.
 
48095
//                                                                
 
48096
// This program is free software;  you can redistribute it and/or 
 
48097
// modify it under the terms of the GNU General Public License as 
 
48098
// published by the Free Software Foundation; either version 2 of 
 
48099
// the License, or (at your option) any later version.            
 
48100
//                                                                
 
48101
// This program is distributed in the hope that it will be useful,
 
48102
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
48103
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
48104
// GNU General Public License for more details.                   
 
48105
//                                                                
 
48106
// You should have received a copy of the GNU General Public      
 
48107
// License along with this program; if not, write to the Free     
 
48108
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
48109
// MA  02111-1307  USA                                            
 
48110
 
 
48111
#ifndef __InstantiationCandidate__
 
48112
#define __InstantiationCandidate__
 
48113
 
 
48114
 
 
48115
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/InstantiationCandidate.h"
 
48116
namespace Puma {
 
48117
 
 
48118
 
 
48119
class CTree;
 
48120
class CUnit;
 
48121
class CRecord;
 
48122
class CTypeInfo;
 
48123
class CConstant;
 
48124
class CStructure;
 
48125
class CT_ExprList;
 
48126
class CObjectInfo;
 
48127
class CT_SimpleName;
 
48128
class CTemplateInfo;
 
48129
class CTemplateInstance;
 
48130
class CTemplateParamInfo;
 
48131
 
 
48132
 
 
48133
#line 48134 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48134
} // closed Puma
 
48135
class CCExprResolve;
 
48136
class CExprResolve;
 
48137
class WinIfExists;
 
48138
class WinImportHandler;
 
48139
class WinMacros;
 
48140
class WinAsm;
 
48141
class WinDeclSpecs;
 
48142
class WinMemberExplSpec;
 
48143
class WinTypeKeywords;
 
48144
class WinFriend;
 
48145
class ExtAC;
 
48146
class ExtACBuilderCoupling;
 
48147
class ExtACSyntaxCoupling;
 
48148
class ExtACTree;
 
48149
class ExtACKeywords;
 
48150
class ExtGnu;
 
48151
class PragmaOnceUnitState;
 
48152
class PragmaOnce;
 
48153
class CMatchSyntax;
 
48154
namespace Puma {
 
48155
 
 
48156
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/InstantiationCandidate.h"
 
48157
class InstantiationCandidate {
 
48158
#line 48159 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48159
  friend class ::CCExprResolve;
 
48160
  friend class ::CExprResolve;
 
48161
  friend class ::WinIfExists;
 
48162
  friend class ::WinImportHandler;
 
48163
  friend class ::WinMacros;
 
48164
  friend class ::WinAsm;
 
48165
  friend class ::WinDeclSpecs;
 
48166
  friend class ::WinMemberExplSpec;
 
48167
  friend class ::WinTypeKeywords;
 
48168
  friend class ::WinFriend;
 
48169
  friend class ::ExtAC;
 
48170
  friend class ::ExtACBuilderCoupling;
 
48171
  friend class ::ExtACSyntaxCoupling;
 
48172
  friend class ::ExtACTree;
 
48173
  friend class ::ExtACKeywords;
 
48174
  friend class ::ExtGnu;
 
48175
  friend class ::PragmaOnceUnitState;
 
48176
  friend class ::PragmaOnce;
 
48177
  friend class ::CMatchSyntax;
 
48178
 
 
48179
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/InstantiationCandidate.h"
 
48180
 
 
48181
  typedef Array<CTree*> ArgumentList;
 
48182
  typedef Array<DeducedArgument*> DeducedArgumentList;
 
48183
  
 
48184
  ArgumentList         arguments;
 
48185
  DeducedArgumentList  darguments;
 
48186
  CObjectInfo         *obj_info;
 
48187
  CTemplateInfo       *tpl_info;
 
48188
  CTree               *poi;
 
48189
  ErrorSink           *err;
 
48190
  
 
48191
public:
 
48192
  InstantiationCandidate (); 
 
48193
  ~InstantiationCandidate ();
 
48194
  
 
48195
  void reset ();
 
48196
  void initialize (ErrorSink *e);
 
48197
  void initialize (CTree *p, CObjectInfo *o);
 
48198
  void initialize (CTree *p, CObjectInfo *o, CTemplateInfo *t, ErrorSink *e = 0);
 
48199
  void addArgument (CTree *);
 
48200
  void addDeducedArg (DeducedArgument *);
 
48201
  void forgetDeducedArgs ();
 
48202
 
 
48203
  bool deduceArguments (bool real_inst);
 
48204
  bool deduceArgumentsFromFctCall (unsigned skip = 0, bool exact_match = false);
 
48205
  bool match ();
 
48206
  int compare (InstantiationCandidate &);
 
48207
 
 
48208
  CObjectInfo *ObjectInfo () const;
 
48209
  CTemplateInfo *TemplateInfo () const;
 
48210
  CTree *PointOfInstantiation () const;
 
48211
 
 
48212
  unsigned Arguments () const;
 
48213
  unsigned DeducedArgs () const;
 
48214
  CTree *Argument (unsigned) const;
 
48215
  DeducedArgument *DeducedArg (unsigned) const;
 
48216
 
 
48217
  int getPosition (CTemplateParamInfo *) const;
 
48218
 
 
48219
private:
 
48220
  int deduceArguments (CTypeInfo *ftype, CTypeInfo *atype, DeducedArgumentList &dargs, bool exact_match = false);
 
48221
  int deduceFromQualifiedType (CTypeInfo *ftype, CTypeInfo *atype, DeducedArgumentList &dargs, bool exact_match);
 
48222
  int deduceFromArray (CTypeInfo *ftype, CTypeInfo *atype, DeducedArgumentList &dargs, bool exact_match);
 
48223
  int deduceFromFunction (CTypeInfo *ftype, CTypeInfo *atype, DeducedArgumentList &dargs, bool exact_match);
 
48224
  int deduceFromMemberPointer (CTypeInfo *ftype, CTypeInfo *atype, DeducedArgumentList &dargs, bool exact_match);
 
48225
  int deduceFromRecord (CTypeInfo *ftype, CTypeInfo *atype, DeducedArgumentList &dargs, bool exact_match);
 
48226
  int deduceTemplateParam (CTypeInfo *ftype, CTypeInfo *atype, DeducedArgumentList &dargs, bool exact_match);
 
48227
  int deduceArgumentsFromTemplateArgList (CTemplateInstance *fi, CTemplateInstance *ai, DeducedArgumentList &dargs);
 
48228
  bool joinDeducedArguments (DeducedArgumentList &dargs, DeducedArgumentList &curr_dargs, bool &matching_args, bool &ambiguous_type);
 
48229
  void getTemplateInstances(CRecord* c, Array<CTemplateInstance*>& instances);
 
48230
  bool matchArgument (CTree *pexpr, CTree *aexpr);
 
48231
  bool matchArgument (CTypeInfo *ptype, CTypeInfo *atype, CTree *aexpr);
 
48232
  bool sameValue (int pos, CConstant *value);
 
48233
  bool sameType (int pos, CTypeInfo *type);
 
48234
  bool setDeducedArgument (DeducedArgumentList &args, int pos, DeducedArgument *arg);
 
48235
  bool matchingTemplateParameters (CTemplateParamInfo *param, CObjectInfo *ainfo);
 
48236
  CTemplateInfo *getTemplateInfo (CObjectInfo *info);
 
48237
public:
 
48238
  typedef AC::TL<Puma::Array< Puma::CTree * >,AC::TL<Puma::Array< Puma::DeducedArgument * >,AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CTemplateInfo *,AC::TL<Puma::CTree *,AC::TL<Puma::ErrorSink *,AC::TLE > > > > > > __AttrTypes;
 
48239
  const char *__attr_name (unsigned i) const {
 
48240
    static const char *names[] = { "arguments", "darguments", "obj_info", "tpl_info", "poi", "err" }; return names[i];
 
48241
  }
 
48242
  const void *__attr (unsigned __i) const {
 
48243
    switch (__i) { case 2: return &arguments; case 3: return &darguments; case 4: return &obj_info; case 5: return &tpl_info; case 6: return &poi; case 7: return &err; default: return 0; }
 
48244
  }
 
48245
#line 99 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/InstantiationCandidate.h"
 
48246
};
 
48247
 
 
48248
inline CObjectInfo *InstantiationCandidate::ObjectInfo () const
 
48249
 { return obj_info; }
 
48250
inline CTemplateInfo *InstantiationCandidate::TemplateInfo () const
 
48251
 { return tpl_info; }
 
48252
inline CTree *InstantiationCandidate::PointOfInstantiation () const
 
48253
 { return poi; }
 
48254
 
 
48255
inline unsigned InstantiationCandidate::Arguments () const 
 
48256
 { return arguments.length (); }
 
48257
inline unsigned InstantiationCandidate::DeducedArgs () const
 
48258
 { return darguments.length (); }
 
48259
inline CTree *InstantiationCandidate::Argument (unsigned i) const
 
48260
 { return arguments.lookup (i); }
 
48261
inline DeducedArgument *InstantiationCandidate::DeducedArg (unsigned i) const
 
48262
 { return darguments.lookup (i); }
 
48263
 
 
48264
inline void InstantiationCandidate::addArgument (CTree *a)
 
48265
 { arguments.append (a); }
 
48266
inline void InstantiationCandidate::addDeducedArg (DeducedArgument *darg)
 
48267
 { darguments.append (darg); }
 
48268
inline void InstantiationCandidate::forgetDeducedArgs () 
 
48269
 { darguments.reset (); }
 
48270
 
 
48271
 
 
48272
} // namespace Puma
 
48273
 
 
48274
#endif /* __InstantiationCandidate__ */
 
48275
 
 
48276
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCInstantiation.h"
 
48277
namespace Puma {
 
48278
 
 
48279
 
 
48280
class CTree;
 
48281
class CUnit;
 
48282
class CTypeInfo;
 
48283
class CConstant;
 
48284
class CStructure;
 
48285
class CT_ExprList;
 
48286
class CObjectInfo;
 
48287
class CT_SimpleName;
 
48288
class CTemplateInfo;
 
48289
class CTemplateParamInfo;
 
48290
class CTranslationUnit;
 
48291
class CCOverloading;
 
48292
 
 
48293
 
 
48294
#line 48295 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48295
} // closed Puma
 
48296
class CCExprResolve;
 
48297
class CExprResolve;
 
48298
class WinIfExists;
 
48299
class WinImportHandler;
 
48300
class WinMacros;
 
48301
class WinAsm;
 
48302
class WinDeclSpecs;
 
48303
class WinMemberExplSpec;
 
48304
class WinTypeKeywords;
 
48305
class WinFriend;
 
48306
class ExtAC;
 
48307
class ExtACBuilderCoupling;
 
48308
class ExtACSyntaxCoupling;
 
48309
class ExtACTree;
 
48310
class ExtACKeywords;
 
48311
class ExtGnu;
 
48312
class PragmaOnceUnitState;
 
48313
class PragmaOnce;
 
48314
class CMatchSyntax;
 
48315
namespace Puma {
 
48316
 
 
48317
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCInstantiation.h"
 
48318
class CCInstantiation {
 
48319
#line 48320 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48320
  friend class ::CCExprResolve;
 
48321
  friend class ::CExprResolve;
 
48322
  friend class ::WinIfExists;
 
48323
  friend class ::WinImportHandler;
 
48324
  friend class ::WinMacros;
 
48325
  friend class ::WinAsm;
 
48326
  friend class ::WinDeclSpecs;
 
48327
  friend class ::WinMemberExplSpec;
 
48328
  friend class ::WinTypeKeywords;
 
48329
  friend class ::WinFriend;
 
48330
  friend class ::ExtAC;
 
48331
  friend class ::ExtACBuilderCoupling;
 
48332
  friend class ::ExtACSyntaxCoupling;
 
48333
  friend class ::ExtACTree;
 
48334
  friend class ::ExtACKeywords;
 
48335
  friend class ::ExtGnu;
 
48336
  friend class ::PragmaOnceUnitState;
 
48337
  friend class ::PragmaOnce;
 
48338
  friend class ::CMatchSyntax;
 
48339
 
 
48340
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCInstantiation.h"
 
48341
 
 
48342
  typedef Array<InstantiationCandidate*> CandArray;
 
48343
 
 
48344
  ErrorSink               &err;
 
48345
  CObjectInfo             *instance;
 
48346
  CObjectInfo             *last_instance;
 
48347
  bool                     report;
 
48348
  CTranslationUnit        *trans_unit;
 
48349
  CStructure              *current_scope;
 
48350
  CandArray                candidates;
 
48351
  InstantiationCandidate  *base_candidate;
 
48352
 
 
48353
  static unsigned int      m_ScopeNameCounter;
 
48354
 
 
48355
public:
 
48356
  static const unsigned MAX_DEPTH;      // maximal instantiation depth
 
48357
  
 
48358
public:
 
48359
  CCInstantiation (ErrorSink &, bool = true); 
 
48360
  ~CCInstantiation ();
 
48361
  
 
48362
  CObjectInfo *instantiate (CTree *, CObjectInfo *, bool = true, CStructure * = 0);
 
48363
  CObjectInfo *instantiate (CTree *, CObjectInfo *, const CCOverloading &);
 
48364
 
 
48365
  CObjectInfo *Instance () const;
 
48366
  CStructure *Scope () const;
 
48367
  void addArgument (CTree *);
 
48368
  
 
48369
  void insertInstance (CObjectInfo *);
 
48370
  void removeInstance ();
 
48371
 
 
48372
private:
 
48373
  InstantiationCandidate &First ();
 
48374
  CObjectInfo *ObjectInfo ();
 
48375
  CTemplateInfo *TemplateInfo ();
 
48376
  CTree *PointOfInstantiation ();
 
48377
  
 
48378
  unsigned Arguments ();
 
48379
  unsigned DeducedArgs ();
 
48380
  CTree *Argument (unsigned);
 
48381
  DeducedArgument *DeducedArg (unsigned);
 
48382
 
 
48383
  bool deduceArguments (bool);
 
48384
  bool deduceArguments (unsigned);
 
48385
  void deduceArguments (CTypeInfo *, CTypeInfo *, Array<DeducedArgument*> &);
 
48386
 
 
48387
  bool chooseSpecialization ();
 
48388
  bool chooseBestSpecialization ();
 
48389
 
 
48390
  void createInstance ();
 
48391
  void createPseudoInstance ();
 
48392
  bool alreadyInstantiated (bool);
 
48393
 
 
48394
  int getPosition (CTemplateParamInfo *);
 
48395
  void copyTree (CUnit &, CTree *, bool = true, Array<CTree*> *desturbing = 0);
 
48396
  void genArgType (CUnit &, CTree *, CTree *, const char *);
 
48397
  void replaceName (CUnit &, CT_SimpleName *, bool);
 
48398
  void fillUnit (CUnit &);
 
48399
  CStructure *makeScope ();
 
48400
  CT_SimpleName *getSimpleName ();
 
48401
  CT_SimpleName *findPrivateName (CTree *) const;
 
48402
  void listArguments (InstantiationCandidate &, std::ostringstream &);
 
48403
  bool dumpDeducedArg (DeducedArgument *arg, std::ostringstream &out);
 
48404
public:
 
48405
  typedef AC::TL<Puma::ErrorSink &,AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CObjectInfo *,AC::TL<bool,AC::TL<Puma::CTranslationUnit *,AC::TL<Puma::CStructure *,AC::TL<Puma::Array< Puma::InstantiationCandidate * >,AC::TL<Puma::InstantiationCandidate *,AC::TLE > > > > > > > > __AttrTypes;
 
48406
  const char *__attr_name (unsigned i) const {
 
48407
    static const char *names[] = { "err", "instance", "last_instance", "report", "trans_unit", "current_scope", "candidates", "base_candidate" }; return names[i];
 
48408
  }
 
48409
  const void *__attr (unsigned __i) const {
 
48410
    switch (__i) { case 1: return &err; case 2: return &instance; case 3: return &last_instance; case 4: return &report; case 5: return &trans_unit; case 6: return &current_scope; case 7: return &candidates; case 8: return &base_candidate; default: return 0; }
 
48411
  }
 
48412
#line 107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCInstantiation.h"
 
48413
};
 
48414
 
 
48415
inline CObjectInfo *CCInstantiation::Instance () const
 
48416
 { return instance; }
 
48417
inline CStructure *CCInstantiation::Scope () const
 
48418
 { return current_scope; }
 
48419
 
 
48420
inline InstantiationCandidate &CCInstantiation::First () 
 
48421
 { return *candidates.lookup (0); }
 
48422
inline CObjectInfo *CCInstantiation::ObjectInfo ()
 
48423
 { return First ().ObjectInfo (); }
 
48424
inline CTemplateInfo *CCInstantiation::TemplateInfo ()
 
48425
 { return First ().TemplateInfo (); }
 
48426
inline CTree *CCInstantiation::PointOfInstantiation ()
 
48427
 { return First ().PointOfInstantiation (); }
 
48428
 
 
48429
inline unsigned CCInstantiation::Arguments () 
 
48430
 { return First ().Arguments (); }
 
48431
inline unsigned CCInstantiation::DeducedArgs ()
 
48432
 { return First ().DeducedArgs (); }
 
48433
inline CTree *CCInstantiation::Argument (unsigned i)
 
48434
 { return First ().Argument (i); }
 
48435
inline DeducedArgument *CCInstantiation::DeducedArg (unsigned i) 
 
48436
 { return First ().DeducedArg (i); }
 
48437
 
 
48438
inline void CCInstantiation::addArgument (CTree *a)
 
48439
 { First ().addArgument (a); }
 
48440
 
 
48441
 
 
48442
} // namespace Puma
 
48443
 
 
48444
#endif /* __CCInstantiation__ */
 
48445
 
 
48446
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInstance.h"
 
48447
namespace Puma {
 
48448
 
 
48449
 
 
48450
class CT_SimpleName;
 
48451
 
 
48452
 
 
48453
/** \class CTemplateInstance CTemplateInstance.h Puma/CTemplateInstance.h
 
48454
 *  Semantic information about a template instance.
 
48455
 *  Contains the point of instantiation, the instantiated template,
 
48456
 *  the instantiation arguments, and the deduced template arguments. 
 
48457
 *
 
48458
 *  The point of instantiation (POI) is the corresponding template-id. 
 
48459
 *  \code X<int> x;  // X<int> is the POI \endcode 
 
48460
 *
 
48461
 *  The instantiation arguments are the arguments of the template-id
 
48462
 *  at the POI.
 
48463
 *  \code Y<int,1> y;  // 'int' and '1' are the instantiation arguments \endcode 
 
48464
 *
 
48465
 *  The deduced template arguments are calculated from the instantiation
 
48466
 *  arguments and the template default arguments.
 
48467
 *
 
48468
 *  \code 
 
48469
 *  template<class T1, class T2 = float>
 
48470
 *  struct Foo { 
 
48471
 *    template<class T3, class T4>
 
48472
 *    T1 foo(T2,T3,T4*);
 
48473
 *  };
 
48474
 *
 
48475
 *  void bar(bool b, char* s) {
 
48476
 *    Foo<int> f;     // deduced arguments: T1=int,  T2=float
 
48477
 *    f.foo(1,b,s);   // deduced arguments: T3=bool, T4=char
 
48478
 *  }
 
48479
 *  \endcode
 
48480
 *
 
48481
 *  If a template instance is not yet created (maybe because real template
 
48482
 *  instantiation is disabled or due to late template instantiation), then
 
48483
 *  this template instance is called a pseudo instance. */
 
48484
 
 
48485
#line 48486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48486
} // closed Puma
 
48487
class CCExprResolve;
 
48488
class CExprResolve;
 
48489
class WinIfExists;
 
48490
class WinImportHandler;
 
48491
class WinMacros;
 
48492
class WinAsm;
 
48493
class WinDeclSpecs;
 
48494
class WinMemberExplSpec;
 
48495
class WinTypeKeywords;
 
48496
class WinFriend;
 
48497
class ExtAC;
 
48498
class ExtACBuilderCoupling;
 
48499
class ExtACSyntaxCoupling;
 
48500
class ExtACTree;
 
48501
class ExtACKeywords;
 
48502
class ExtGnu;
 
48503
class PragmaOnceUnitState;
 
48504
class PragmaOnce;
 
48505
class CMatchSyntax;
 
48506
namespace Puma {
 
48507
 
 
48508
#line 67 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInstance.h"
 
48509
class CTemplateInstance {
 
48510
#line 48511 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48511
  friend class ::CCExprResolve;
 
48512
  friend class ::CExprResolve;
 
48513
  friend class ::WinIfExists;
 
48514
  friend class ::WinImportHandler;
 
48515
  friend class ::WinMacros;
 
48516
  friend class ::WinAsm;
 
48517
  friend class ::WinDeclSpecs;
 
48518
  friend class ::WinMemberExplSpec;
 
48519
  friend class ::WinTypeKeywords;
 
48520
  friend class ::WinFriend;
 
48521
  friend class ::ExtAC;
 
48522
  friend class ::ExtACBuilderCoupling;
 
48523
  friend class ::ExtACSyntaxCoupling;
 
48524
  friend class ::ExtACTree;
 
48525
  friend class ::ExtACKeywords;
 
48526
  friend class ::ExtGnu;
 
48527
  friend class ::PragmaOnceUnitState;
 
48528
  friend class ::PragmaOnce;
 
48529
  friend class ::CMatchSyntax;
 
48530
 
 
48531
#line 67 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInstance.h"
 
48532
 
 
48533
protected:
 
48534
  /** The semantic information about the template. */
 
48535
  CTemplateInfo           *_TemplateInfo;
 
48536
  /** The point of instantiation. */
 
48537
  CT_SimpleName           *_PointOfInstantiation;
 
48538
  /** The scope in which the template was instantiated. */
 
48539
  CScopeInfo              *_PointOfInstantiationScope;
 
48540
  /** The list of deduced template arguments. */
 
48541
  Array<DeducedArgument*>  _DeducedArgs;
 
48542
  /** The list of instantiation arguments. */
 
48543
  Array<DeducedArgument*>  _InstantiationArgs;
 
48544
  /** The translation unit containing the template instance code. */
 
48545
  CTranslationUnit        *_InstanceSrc;
 
48546
  /** True if this is not a real template instance. */
 
48547
  bool                     _Pseudo;
 
48548
  /** True if the template instance translation unit can be 
 
48549
   *  destroyed in the destructor of this class. */
 
48550
  bool                     _Delete;
 
48551
  /** Pointer to the real instance. */
 
48552
  CObjectInfo             *_Instance;
 
48553
 
 
48554
public:
 
48555
  /** Constructor. */
 
48556
  CTemplateInstance ();
 
48557
  /** Destructor. Destroys the instantiation and deduced arguments.
 
48558
   *  Optionally destroys the translation unit of the instance code. */
 
48559
  ~CTemplateInstance ();
 
48560
 
 
48561
  /** If this is a pseudo instance, instantiate the template and
 
48562
   *  return the instance. Otherwise return this. 
 
48563
   *  \param scope The scope in which to instantiate the template. */
 
48564
  CObjectInfo* getInstance (CStructure *scope);
 
48565
 
 
48566
  /** Get the semantic information about the instantiated template. */
 
48567
  CTemplateInfo *Template () const;
 
48568
  /** Set the semantic information about the instantiated template. 
 
48569
   *  \param info The template that was instantiated. */
 
48570
  void Template (CTemplateInfo *info);
 
48571
 
 
48572
  /** Get the point of instantiation (the template-id). */
 
48573
  CT_SimpleName *PointOfInstantiation () const;
 
48574
  /** Get the scope in which the template was instantiated. */
 
48575
  CScopeInfo *PointOfInstantiationScope () const;
 
48576
  /** Set the point of instantiation (the template-id).
 
48577
   *  \param tplid The template-id used to instantiate the template.
 
48578
   *  \param scope The scope in which the template was instantiated. */
 
48579
  void PointOfInstantiation (CT_SimpleName *tplid, CScopeInfo *scope);
 
48580
  
 
48581
  /** Set the translation unit containing the code 
 
48582
   *  of the template instance.
 
48583
   *  \param tu The translation unit. */
 
48584
  void TranslationUnit (CTranslationUnit *tu);
 
48585
  /** Get the translation unit containing the code
 
48586
   *  of the template instance. */
 
48587
  CTranslationUnit *TranslationUnit () const;
 
48588
  
 
48589
  /** Set that the translation unit containg the code
 
48590
   *  of the template instance can be destroyed in the
 
48591
   *  destructor of the template instance. */
 
48592
  void canDelete ();
 
48593
 
 
48594
  /** Set whether this is a pseudo template instance.
 
48595
   *  \param v True for yes, false for no. */
 
48596
  void isPseudoInstance (bool v);
 
48597
  /** Check if this is a pseudo template instance. */
 
48598
  bool isPseudoInstance () const;
 
48599
  
 
48600
  /** Get the number of instantiation arguments. */
 
48601
  unsigned InstantiationArgs () const;
 
48602
  /** Get the n-th instantiation argument.
 
48603
   *  \param n The index of the instantiation argument. */
 
48604
  DeducedArgument *InstantiationArg (unsigned n) const;
 
48605
  /** Add an instantiation argument. 
 
48606
   *  \param arg The instantiation argument. */
 
48607
  void addInstantiationArg (DeducedArgument *arg);
 
48608
 
 
48609
  /** Get the number of deduced arguments. */
 
48610
  unsigned DeducedArgs () const;
 
48611
  /** Get the n-th deduced template argument.
 
48612
   *  \param n The index of the template argument. */
 
48613
  DeducedArgument *DeducedArg (unsigned n) const;
 
48614
  /** Add a deduced template argument.
 
48615
   *  \param arg The deduced template argument. */
 
48616
  void addDeducedArg (DeducedArgument *arg);
 
48617
  /** Discard the deduced template arguments. */
 
48618
  void clearDeducedArgs ();
 
48619
public:
 
48620
  typedef AC::TL<Puma::CTemplateInfo *,AC::TL<Puma::CT_SimpleName *,AC::TL<Puma::CScopeInfo *,AC::TL<Puma::Array< Puma::DeducedArgument * >,AC::TL<Puma::Array< Puma::DeducedArgument * >,AC::TL<Puma::CTranslationUnit *,AC::TL<bool,AC::TL<bool,AC::TL<Puma::CObjectInfo *,AC::TLE > > > > > > > > > __AttrTypes;
 
48621
  const char *__attr_name (unsigned i) const {
 
48622
    static const char *names[] = { "_TemplateInfo", "_PointOfInstantiation", "_PointOfInstantiationScope", "_DeducedArgs", "_InstantiationArgs", "_InstanceSrc", "_Pseudo", "_Delete", "_Instance" }; return names[i];
 
48623
  }
 
48624
  const void *__attr (unsigned __i) const {
 
48625
    switch (__i) { case 0: return &_TemplateInfo; case 1: return &_PointOfInstantiation; case 2: return &_PointOfInstantiationScope; case 4: return &_DeducedArgs; case 6: return &_InstantiationArgs; case 7: return &_InstanceSrc; case 8: return &_Pseudo; case 9: return &_Delete; case 10: return &_Instance; default: return 0; }
 
48626
  }
 
48627
#line 154 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTemplateInstance.h"
 
48628
};
 
48629
 
 
48630
inline CTemplateInstance::CTemplateInstance () :
 
48631
  _TemplateInfo ((CTemplateInfo*)0),
 
48632
  _PointOfInstantiation ((CT_SimpleName*)0),
 
48633
  _InstanceSrc (0),
 
48634
  _Pseudo (false),
 
48635
  _Delete (false),
 
48636
  _Instance (0)
 
48637
 {}
 
48638
inline CTemplateInstance::~CTemplateInstance ()
 
48639
 { if (_TemplateInfo && _TemplateInfo->isSpecialization ())
 
48640
     for (unsigned i = 0; i < InstantiationArgs (); i++) delete InstantiationArg (i); 
 
48641
   for (unsigned i = 0; i < DeducedArgs (); i++) delete DeducedArg (i); 
 
48642
   if (_Delete && _InstanceSrc) { 
 
48643
     Unit *u = _InstanceSrc->unit (); 
 
48644
     delete _InstanceSrc; 
 
48645
     if (u) delete u;
 
48646
   } 
 
48647
 }
 
48648
 
 
48649
inline CObjectInfo* CTemplateInstance::getInstance (CStructure *scope) 
 
48650
 { /*if (! _Pseudo) return _TemplateInfo->ObjectInfo (); 
 
48651
   if (! _Instance) {
 
48652
     CCInstantiation inst (_TemplateInfo->ClassDB ()->Project ()->err ());
 
48653
     _Instance = inst.instantiate (this, scope);
 
48654
   }*/
 
48655
   return _Instance;
 
48656
 }
 
48657
 
 
48658
inline void CTemplateInstance::TranslationUnit (CTranslationUnit *tu)
 
48659
 { _InstanceSrc = tu; }
 
48660
inline CTranslationUnit *CTemplateInstance::TranslationUnit () const
 
48661
 { return _InstanceSrc; } 
 
48662
 
 
48663
inline void CTemplateInstance::canDelete () 
 
48664
 { _Delete = true; }
 
48665
 
 
48666
inline void CTemplateInstance::isPseudoInstance (bool v)
 
48667
 { _Pseudo = v; }
 
48668
inline bool CTemplateInstance::isPseudoInstance () const
 
48669
 { return _Pseudo; }
 
48670
  
 
48671
inline void CTemplateInstance::addDeducedArg (DeducedArgument *a)
 
48672
 { _DeducedArgs.append (a); }
 
48673
inline DeducedArgument *CTemplateInstance::DeducedArg (unsigned i) const
 
48674
 { return _DeducedArgs.lookup (i); }
 
48675
inline unsigned CTemplateInstance::DeducedArgs () const
 
48676
 { return _DeducedArgs.length (); }
 
48677
inline void CTemplateInstance::addInstantiationArg (DeducedArgument *a)
 
48678
 { _InstantiationArgs.append (a); }
 
48679
inline DeducedArgument *CTemplateInstance::InstantiationArg (unsigned i) const
 
48680
 { return _InstantiationArgs.lookup (i); }
 
48681
inline unsigned CTemplateInstance::InstantiationArgs () const
 
48682
 { return _InstantiationArgs.length (); }
 
48683
inline void CTemplateInstance::clearDeducedArgs () 
 
48684
 { _DeducedArgs.reset (); _InstantiationArgs.reset (); }
 
48685
 
 
48686
inline CTemplateInfo *CTemplateInstance::Template () const
 
48687
 { return _TemplateInfo; }
 
48688
inline void CTemplateInstance::Template (CTemplateInfo *info) 
 
48689
 { _TemplateInfo = info; }
 
48690
 
 
48691
inline CT_SimpleName *CTemplateInstance::PointOfInstantiation () const
 
48692
 { return _PointOfInstantiation; }
 
48693
inline CScopeInfo *CTemplateInstance::PointOfInstantiationScope () const
 
48694
 { return _PointOfInstantiationScope; }
 
48695
inline void CTemplateInstance::PointOfInstantiation (CT_SimpleName *poi, CScopeInfo *pois)
 
48696
 { _PointOfInstantiation = poi;
 
48697
   _PointOfInstantiationScope = pois;
 
48698
 }
 
48699
 
 
48700
 
 
48701
} // namespace Puma
 
48702
 
 
48703
#endif /* __CTemplateInstance_h__ */
 
48704
 
 
48705
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnionInfo.h"
 
48706
// This file is part of PUMA.
 
48707
// Copyright (C) 1999-2003  The PUMA developer team.
 
48708
//                                                                
 
48709
// This program is free software;  you can redistribute it and/or 
 
48710
// modify it under the terms of the GNU General Public License as 
 
48711
// published by the Free Software Foundation; either version 2 of 
 
48712
// the License, or (at your option) any later version.            
 
48713
//                                                                
 
48714
// This program is distributed in the hope that it will be useful,
 
48715
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
48716
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
48717
// GNU General Public License for more details.                   
 
48718
//                                                                
 
48719
// You should have received a copy of the GNU General Public      
 
48720
// License along with this program; if not, write to the Free     
 
48721
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
48722
// MA  02111-1307  USA                                            
 
48723
 
 
48724
#ifndef __CUnionInfo_h__
 
48725
#define __CUnionInfo_h__
 
48726
 
 
48727
/** \file 
 
48728
 *  Semantic information about a union. */
 
48729
 
 
48730
 
 
48731
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnionInfo.h"
 
48732
namespace Puma {
 
48733
 
 
48734
 
 
48735
/** \class CUnionInfo CUnionInfo.h Puma/CUnionInfo.h
 
48736
 *  Semantic information about a union. */
 
48737
 
 
48738
#line 48739 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48739
} // closed Puma
 
48740
class CCExprResolve;
 
48741
class CExprResolve;
 
48742
class WinIfExists;
 
48743
class WinImportHandler;
 
48744
class WinMacros;
 
48745
class WinAsm;
 
48746
class WinDeclSpecs;
 
48747
class WinMemberExplSpec;
 
48748
class WinTypeKeywords;
 
48749
class WinFriend;
 
48750
class ExtAC;
 
48751
class ExtACBuilderCoupling;
 
48752
class ExtACSyntaxCoupling;
 
48753
class ExtACTree;
 
48754
class ExtACKeywords;
 
48755
class ExtGnu;
 
48756
class PragmaOnceUnitState;
 
48757
class PragmaOnce;
 
48758
class CMatchSyntax;
 
48759
namespace Puma {
 
48760
 
 
48761
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnionInfo.h"
 
48762
class CUnionInfo : public CRecord {
 
48763
#line 48764 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48764
  friend class ::CCExprResolve;
 
48765
  friend class ::CExprResolve;
 
48766
  friend class ::WinIfExists;
 
48767
  friend class ::WinImportHandler;
 
48768
  friend class ::WinMacros;
 
48769
  friend class ::WinAsm;
 
48770
  friend class ::WinDeclSpecs;
 
48771
  friend class ::WinMemberExplSpec;
 
48772
  friend class ::WinTypeKeywords;
 
48773
  friend class ::WinFriend;
 
48774
  friend class ::ExtAC;
 
48775
  friend class ::ExtACBuilderCoupling;
 
48776
  friend class ::ExtACSyntaxCoupling;
 
48777
  friend class ::ExtACTree;
 
48778
  friend class ::ExtACKeywords;
 
48779
  friend class ::ExtGnu;
 
48780
  friend class ::PragmaOnceUnitState;
 
48781
  friend class ::PragmaOnce;
 
48782
  friend class ::CMatchSyntax;
 
48783
 
 
48784
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnionInfo.h"
 
48785
 
 
48786
protected:
 
48787
  /** Constructor.
 
48788
   *  \param id The object type. */
 
48789
  CUnionInfo (ObjectId id);
 
48790
 
 
48791
public: 
 
48792
  /** Constructor. */
 
48793
  CUnionInfo ();
 
48794
  /** Destructor. If the object type is CObjectInfo::UNION_INFO, 
 
48795
   *  then CObjectInfo::CleanUp() is called. */
 
48796
  ~CUnionInfo ();
 
48797
 
 
48798
  /** Get the semantic object of the union definition. 
 
48799
   *  \see CObjectInfo::DefObject() */
 
48800
  CUnionInfo *DefObject () const;
 
48801
  /** Get the type information for the union. */
 
48802
  CTypeUnion *TypeInfo () const;
 
48803
//  CT_UnionDef *Tree () const;
 
48804
public:
 
48805
  typedef AC::TLE __AttrTypes;
 
48806
  const char *__attr_name (unsigned i) const { return 0; }
 
48807
  const void *__attr (unsigned __i) const { return 0; }
 
48808
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnionInfo.h"
 
48809
};
 
48810
 
 
48811
inline CUnionInfo::CUnionInfo (ObjectId id) :
 
48812
  CRecord (id)
 
48813
 {}
 
48814
inline CUnionInfo::CUnionInfo () :
 
48815
  CRecord (CObjectInfo::UNION_INFO)
 
48816
 {}
 
48817
inline CUnionInfo::~CUnionInfo () 
 
48818
 { if (Id () == UNION_INFO) CleanUp (); }
 
48819
 
 
48820
inline CTypeUnion *CUnionInfo::TypeInfo () const
 
48821
 { return (CTypeUnion*)CObjectInfo::TypeInfo (); }
 
48822
//inline CT_UnionDef *CUnionInfo::Tree () const
 
48823
// { return (CT_UnionDef*)CObjectInfo::Tree (); }
 
48824
 
 
48825
 
 
48826
} // namespace Puma
 
48827
 
 
48828
#endif /* __CUnionInfo_h__ */
 
48829
 
 
48830
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFileInfo.h"
 
48831
// This file is part of PUMA.
 
48832
// Copyright (C) 1999-2003  The PUMA developer team.
 
48833
//                                                                
 
48834
// This program is free software;  you can redistribute it and/or 
 
48835
// modify it under the terms of the GNU General Public License as 
 
48836
// published by the Free Software Foundation; either version 2 of 
 
48837
// the License, or (at your option) any later version.            
 
48838
//                                                                
 
48839
// This program is distributed in the hope that it will be useful,
 
48840
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
48841
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
48842
// GNU General Public License for more details.                   
 
48843
//                                                                
 
48844
// You should have received a copy of the GNU General Public      
 
48845
// License along with this program; if not, write to the Free     
 
48846
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
48847
// MA  02111-1307  USA                                            
 
48848
 
 
48849
#ifndef __CFileInfo_h__
 
48850
#define __CFileInfo_h__
 
48851
 
 
48852
/** \file 
 
48853
 *  Semantic information about a source file (translation unit). */
 
48854
 
 
48855
 
 
48856
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CNamespaceInfo.h"
 
48857
// This file is part of PUMA.
 
48858
// Copyright (C) 1999-2003  The PUMA developer team.
 
48859
//                                                                
 
48860
// This program is free software;  you can redistribute it and/or 
 
48861
// modify it under the terms of the GNU General Public License as 
 
48862
// published by the Free Software Foundation; either version 2 of 
 
48863
// the License, or (at your option) any later version.            
 
48864
//                                                                
 
48865
// This program is distributed in the hope that it will be useful,
 
48866
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
48867
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
48868
// GNU General Public License for more details.                   
 
48869
//                                                                
 
48870
// You should have received a copy of the GNU General Public      
 
48871
// License along with this program; if not, write to the Free     
 
48872
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
48873
// MA  02111-1307  USA                                            
 
48874
 
 
48875
#ifndef __CNamespaceInfo_h__
 
48876
#define __CNamespaceInfo_h__
 
48877
 
 
48878
/** \file 
 
48879
 *  Semantic information about a namespace. */
 
48880
 
 
48881
 
 
48882
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CNamespaceInfo.h"
 
48883
namespace Puma {
 
48884
 
 
48885
 
 
48886
/** \class CNamespaceInfo CNamespaceInfo.h Puma/CNamespaceInfo.h
 
48887
 *  Semantic information about a user-defined namespace. 
 
48888
 *  There are two kinds of namespaces, original namespaces and 
 
48889
 *  namespace aliases. */
 
48890
 
 
48891
#line 48892 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48892
} // closed Puma
 
48893
class CCExprResolve;
 
48894
class CExprResolve;
 
48895
class WinIfExists;
 
48896
class WinImportHandler;
 
48897
class WinMacros;
 
48898
class WinAsm;
 
48899
class WinDeclSpecs;
 
48900
class WinMemberExplSpec;
 
48901
class WinTypeKeywords;
 
48902
class WinFriend;
 
48903
class ExtAC;
 
48904
class ExtACBuilderCoupling;
 
48905
class ExtACSyntaxCoupling;
 
48906
class ExtACTree;
 
48907
class ExtACKeywords;
 
48908
class ExtGnu;
 
48909
class PragmaOnceUnitState;
 
48910
class PragmaOnce;
 
48911
class CMatchSyntax;
 
48912
namespace Puma {
 
48913
 
 
48914
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CNamespaceInfo.h"
 
48915
class CNamespaceInfo : public CStructure {
 
48916
#line 48917 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
48917
  friend class ::CCExprResolve;
 
48918
  friend class ::CExprResolve;
 
48919
  friend class ::WinIfExists;
 
48920
  friend class ::WinImportHandler;
 
48921
  friend class ::WinMacros;
 
48922
  friend class ::WinAsm;
 
48923
  friend class ::WinDeclSpecs;
 
48924
  friend class ::WinMemberExplSpec;
 
48925
  friend class ::WinTypeKeywords;
 
48926
  friend class ::WinFriend;
 
48927
  friend class ::ExtAC;
 
48928
  friend class ::ExtACBuilderCoupling;
 
48929
  friend class ::ExtACSyntaxCoupling;
 
48930
  friend class ::ExtACTree;
 
48931
  friend class ::ExtACKeywords;
 
48932
  friend class ::ExtGnu;
 
48933
  friend class ::PragmaOnceUnitState;
 
48934
  friend class ::PragmaOnce;
 
48935
  friend class ::CMatchSyntax;
 
48936
 
 
48937
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CNamespaceInfo.h"
 
48938
 
 
48939
  bool _isAlias;
 
48940
  bool _aroundInstantiation;
 
48941
  
 
48942
protected:
 
48943
  /** Constructor.
 
48944
   *  \param id The object type. */
 
48945
  CNamespaceInfo (ObjectId id);
 
48946
 
 
48947
public:
 
48948
  /** Constructor. */
 
48949
  CNamespaceInfo ();
 
48950
  /** Destructor. If the object type is CObjectInfo::NAMESPACE_INFO, 
 
48951
   *  then CObjectInfo::CleanUp() is called. */
 
48952
 ~CNamespaceInfo ();
 
48953
 
 
48954
  /** Check if this is a namespace alias. */
 
48955
  bool isAlias () const; 
 
48956
  /** Set whether this is a namespace alias. 
 
48957
   *  \param v \e true if it is a namespace alias. */
 
48958
  void isAlias (bool v);
 
48959
  
 
48960
  /** Check if this is a special internal namespace
 
48961
   *  around template instantiations. */
 
48962
  bool aroundInstantiation () const;
 
48963
  /** Set whether this is a special internal namespace around
 
48964
   *  template instantiations.
 
48965
   *  \param v \e true if it is such an internal namespace. */
 
48966
  void aroundInstantiation (bool v);
 
48967
public:
 
48968
  typedef AC::TL<bool,AC::TL<bool,AC::TLE > > __AttrTypes;
 
48969
  const char *__attr_name (unsigned i) const {
 
48970
    static const char *names[] = { "_isAlias", "_aroundInstantiation" }; return names[i];
 
48971
  }
 
48972
  const void *__attr (unsigned __i) const {
 
48973
    switch (__i) { case 0: return &_isAlias; case 1: return &_aroundInstantiation; default: return 0; }
 
48974
  }
 
48975
#line 63 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CNamespaceInfo.h"
 
48976
};
 
48977
 
 
48978
inline CNamespaceInfo::CNamespaceInfo (CObjectInfo::ObjectId id) :
 
48979
  CStructure (id),
 
48980
  _isAlias (false),
 
48981
  _aroundInstantiation (false)
 
48982
 {}
 
48983
inline CNamespaceInfo::CNamespaceInfo () :
 
48984
  CStructure (CObjectInfo::NAMESPACE_INFO),
 
48985
  _isAlias (false),
 
48986
  _aroundInstantiation (false)
 
48987
 {}
 
48988
 
 
48989
inline bool CNamespaceInfo::isAlias () const
 
48990
 { return _isAlias; }
 
48991
inline void CNamespaceInfo::isAlias (bool v)
 
48992
 { _isAlias = v; }
 
48993
 
 
48994
inline bool CNamespaceInfo::aroundInstantiation () const
 
48995
 { return _aroundInstantiation; }
 
48996
inline void CNamespaceInfo::aroundInstantiation (bool v)
 
48997
 { _aroundInstantiation = v; }
 
48998
 
 
48999
 
 
49000
} // namespace Puma
 
49001
 
 
49002
#endif /* __CNamespaceInfo_h__ */
 
49003
 
 
49004
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFileInfo.h"
 
49005
namespace Puma {
 
49006
 
 
49007
 
 
49008
class Unit;
 
49009
 
 
49010
/** \class CFileInfo CFileInfo.h Puma/CFileInfo.h
 
49011
 *  Semantic information about a source file (translation unit). 
 
49012
 *  A source file has its own scope, the so-called file scope. */
 
49013
 
 
49014
#line 49015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49015
} // closed Puma
 
49016
class CCExprResolve;
 
49017
class CExprResolve;
 
49018
class WinIfExists;
 
49019
class WinImportHandler;
 
49020
class WinMacros;
 
49021
class WinAsm;
 
49022
class WinDeclSpecs;
 
49023
class WinMemberExplSpec;
 
49024
class WinTypeKeywords;
 
49025
class WinFriend;
 
49026
class ExtAC;
 
49027
class ExtACBuilderCoupling;
 
49028
class ExtACSyntaxCoupling;
 
49029
class ExtACTree;
 
49030
class ExtACKeywords;
 
49031
class ExtGnu;
 
49032
class PragmaOnceUnitState;
 
49033
class PragmaOnce;
 
49034
class CMatchSyntax;
 
49035
namespace Puma {
 
49036
 
 
49037
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFileInfo.h"
 
49038
class CFileInfo : public CNamespaceInfo {
 
49039
#line 49040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49040
  friend class ::CCExprResolve;
 
49041
  friend class ::CExprResolve;
 
49042
  friend class ::WinIfExists;
 
49043
  friend class ::WinImportHandler;
 
49044
  friend class ::WinMacros;
 
49045
  friend class ::WinAsm;
 
49046
  friend class ::WinDeclSpecs;
 
49047
  friend class ::WinMemberExplSpec;
 
49048
  friend class ::WinTypeKeywords;
 
49049
  friend class ::WinFriend;
 
49050
  friend class ::ExtAC;
 
49051
  friend class ::ExtACBuilderCoupling;
 
49052
  friend class ::ExtACSyntaxCoupling;
 
49053
  friend class ::ExtACTree;
 
49054
  friend class ::ExtACKeywords;
 
49055
  friend class ::ExtGnu;
 
49056
  friend class ::PragmaOnceUnitState;
 
49057
  friend class ::PragmaOnce;
 
49058
  friend class ::CMatchSyntax;
 
49059
 
 
49060
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFileInfo.h"
 
49061
 
 
49062
  Unit *_Primary;
 
49063
  bool _haveCBuiltins;
 
49064
  bool _haveCCBuiltins;
 
49065
 
 
49066
public: 
 
49067
  /** Constructor. */
 
49068
  CFileInfo ();
 
49069
  /** Destructor. If the object type is CObjectInfo::FILE_INFO, 
 
49070
   *  then CObjectInfo::CleanUp() is called. */
 
49071
  ~CFileInfo ();
 
49072
 
 
49073
  /** Get the token chain of the source file. */
 
49074
  Unit *Primary () const;
 
49075
  /** Set the token chain of the source file.
 
49076
   *  \param unit The token chain. */
 
49077
  void Primary (Unit *unit);
 
49078
  
 
49079
  /** Check if C compiler build-in functions are defined
 
49080
   *  for the source file. */
 
49081
  bool haveCBuiltins () const;
 
49082
  /** Check if C++ compiler build-in functions are defined 
 
49083
   *  for the source file. */
 
49084
  bool haveCCBuiltins () const;
 
49085
 
 
49086
  /** Set whether C compiler build-in functions are defined 
 
49087
   *  for the source file. 
 
49088
   *  \param v \e true if C build-in functions are defined. */
 
49089
  void haveCBuiltins (bool v);
 
49090
  /** Set whether C++ compiler build-in functions are defined 
 
49091
   *  for the source file. 
 
49092
   *  \param v \e true if C++ build-in functions are defined. */
 
49093
  void haveCCBuiltins (bool v);
 
49094
public:
 
49095
  typedef AC::TL<Puma::Unit *,AC::TL<bool,AC::TL<bool,AC::TLE > > > __AttrTypes;
 
49096
  const char *__attr_name (unsigned i) const {
 
49097
    static const char *names[] = { "_Primary", "_haveCBuiltins", "_haveCCBuiltins" }; return names[i];
 
49098
  }
 
49099
  const void *__attr (unsigned __i) const {
 
49100
    switch (__i) { case 0: return &_Primary; case 1: return &_haveCBuiltins; case 2: return &_haveCCBuiltins; default: return 0; }
 
49101
  }
 
49102
#line 68 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CFileInfo.h"
 
49103
};
 
49104
 
 
49105
inline CFileInfo::CFileInfo () :
 
49106
  CNamespaceInfo (CObjectInfo::FILE_INFO),
 
49107
  _Primary (0), 
 
49108
  _haveCBuiltins (false),
 
49109
  _haveCCBuiltins (false)
 
49110
 {}
 
49111
inline CFileInfo::~CFileInfo ()
 
49112
 { /* if (Id () == FILE_INFO) CleanUp (); */ /* Bug #16 temporary fix */}
 
49113
 
 
49114
inline Unit *CFileInfo::Primary () const 
 
49115
 { return _Primary; }
 
49116
inline void CFileInfo::Primary (Unit *unit) 
 
49117
 { _Primary = unit; }
 
49118
 
 
49119
inline bool CFileInfo::haveCBuiltins () const 
 
49120
 { return _haveCBuiltins; }
 
49121
inline void CFileInfo::haveCBuiltins (bool v) 
 
49122
 { _haveCBuiltins = v; }
 
49123
inline bool CFileInfo::haveCCBuiltins () const 
 
49124
 { return _haveCCBuiltins; }
 
49125
inline void CFileInfo::haveCCBuiltins (bool v) 
 
49126
 { _haveCCBuiltins = v; }
 
49127
 
 
49128
 
 
49129
} // namespace Puma
 
49130
 
 
49131
#endif /* __CFileInfo_h__ */
 
49132
 
 
49133
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumInfo.h"
 
49134
// This file is part of PUMA.
 
49135
// Copyright (C) 1999-2003  The PUMA developer team.
 
49136
//                                                                
 
49137
// This program is free software;  you can redistribute it and/or 
 
49138
// modify it under the terms of the GNU General Public License as 
 
49139
// published by the Free Software Foundation; either version 2 of 
 
49140
// the License, or (at your option) any later version.            
 
49141
//                                                                
 
49142
// This program is distributed in the hope that it will be useful,
 
49143
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
49144
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
49145
// GNU General Public License for more details.                   
 
49146
//                                                                
 
49147
// You should have received a copy of the GNU General Public      
 
49148
// License along with this program; if not, write to the Free     
 
49149
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
49150
// MA  02111-1307  USA                                            
 
49151
 
 
49152
#ifndef __CEnumInfo_h__
 
49153
#define __CEnumInfo_h__
 
49154
 
 
49155
/** \file 
 
49156
 *  Semantic information about an enumeration. */
 
49157
 
 
49158
 
 
49159
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumInfo.h"
 
49160
namespace Puma {
 
49161
 
 
49162
 
 
49163
/** \class CEnumInfo CEnumInfo.h Puma/CEnumInfo.h
 
49164
 *  Semantic information about an enumeration. */
 
49165
 
 
49166
#line 49167 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49167
} // closed Puma
 
49168
class CCExprResolve;
 
49169
class CExprResolve;
 
49170
class WinIfExists;
 
49171
class WinImportHandler;
 
49172
class WinMacros;
 
49173
class WinAsm;
 
49174
class WinDeclSpecs;
 
49175
class WinMemberExplSpec;
 
49176
class WinTypeKeywords;
 
49177
class WinFriend;
 
49178
class ExtAC;
 
49179
class ExtACBuilderCoupling;
 
49180
class ExtACSyntaxCoupling;
 
49181
class ExtACTree;
 
49182
class ExtACKeywords;
 
49183
class ExtGnu;
 
49184
class PragmaOnceUnitState;
 
49185
class PragmaOnce;
 
49186
class CMatchSyntax;
 
49187
namespace Puma {
 
49188
 
 
49189
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumInfo.h"
 
49190
class CEnumInfo : public CScopeRequest {
 
49191
#line 49192 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49192
  friend class ::CCExprResolve;
 
49193
  friend class ::CExprResolve;
 
49194
  friend class ::WinIfExists;
 
49195
  friend class ::WinImportHandler;
 
49196
  friend class ::WinMacros;
 
49197
  friend class ::WinAsm;
 
49198
  friend class ::WinDeclSpecs;
 
49199
  friend class ::WinMemberExplSpec;
 
49200
  friend class ::WinTypeKeywords;
 
49201
  friend class ::WinFriend;
 
49202
  friend class ::ExtAC;
 
49203
  friend class ::ExtACBuilderCoupling;
 
49204
  friend class ::ExtACSyntaxCoupling;
 
49205
  friend class ::ExtACTree;
 
49206
  friend class ::ExtACKeywords;
 
49207
  friend class ::ExtGnu;
 
49208
  friend class ::PragmaOnceUnitState;
 
49209
  friend class ::PragmaOnce;
 
49210
  friend class ::CMatchSyntax;
 
49211
 
 
49212
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumInfo.h"
 
49213
 
 
49214
  Array<CEnumeratorInfo*> _Enumerators;
 
49215
  CTypeInfo *_UnderlyingType;
 
49216
 
 
49217
public: 
 
49218
  /** Constructor. */
 
49219
  CEnumInfo ();
 
49220
  /** Destructor. If the object type is CObjectInfo::ENUM_INFO, 
 
49221
   *  then CObjectInfo::CleanUp() is called. */
 
49222
  ~CEnumInfo ();
 
49223
 
 
49224
  /** Get the number of enumerators in this enumeration. */
 
49225
  unsigned Enumerators () const;
 
49226
  /** Get the n-th enumerator.
 
49227
   *  \param n The index of the enumerator.
 
49228
   *  \return The enumerator or NULL if \e n is invalid. */
 
49229
  CEnumeratorInfo *Enumerator (unsigned n) const;
 
49230
  /** Get the enumerator with the given name. 
 
49231
   *  \param name The name of the enumerator.
 
49232
   *  \return The enumerator or NULL if no enumerator with that name. */
 
49233
  CEnumeratorInfo *Enumerator (const char *name) const;
 
49234
 
 
49235
  /** Get the semantic object of the enumeration definition. 
 
49236
   *  \see CObjectInfo::DefObject() */
 
49237
  CEnumInfo *DefObject () const;
 
49238
  /** Get the type information for the enumeration. */
 
49239
  CTypeEnum *TypeInfo () const;
 
49240
 
 
49241
  /** Add a new enumerator to the enumeration.
 
49242
   *  \param ei The enumerator. */
 
49243
  void addEnumerator (CEnumeratorInfo *ei);
 
49244
  /** Remove the given enumerator from the enumeration.
 
49245
   *  \param ei The enumerator. */
 
49246
  void removeEnumerator (const CEnumeratorInfo *ei);
 
49247
 
 
49248
  /** Create a semantic object for an enumerator. The new 
 
49249
   *  enumerator is added to the enumeration. */
 
49250
  CEnumeratorInfo *newEnumerator ();
 
49251
  /** Destroy the given enumerator. The enumerator is
 
49252
   *  removed from the enumeration.
 
49253
   *  \param ei The enumerator. */
 
49254
  void deleteEnumerator (const CEnumeratorInfo *ei);
 
49255
  
 
49256
  /** Check if the enumeration is defined. */
 
49257
  bool isDefined () const;
 
49258
  /** Check if the enumeration is complete (defined)
 
49259
   *  at the given source code position. The position
 
49260
   *  is specified by the unique number of the CT_Token
 
49261
   *  tree node representing the name of the enumeration.
 
49262
   *  \param pos The source code position. */
 
49263
  bool isComplete (unsigned long pos = 0) const;
 
49264
 
 
49265
  /** Return the underlying data type of the enumeration. 
 
49266
   *  This is implementation-defined and defaults to \e int. */
 
49267
  CTypeInfo *UnderlyingType () const;
 
49268
  /** Set the underlying data type of the enumeration.
 
49269
   *  This is implementation-defined and defaults to \e int.
 
49270
   *  \param type The underlying type. */
 
49271
  void UnderlyingType (CTypeInfo *type);
 
49272
public:
 
49273
  typedef AC::TL<Puma::Array< Puma::CEnumeratorInfo * >,AC::TL<Puma::CTypeInfo *,AC::TLE > > __AttrTypes;
 
49274
  const char *__attr_name (unsigned i) const {
 
49275
    static const char *names[] = { "_Enumerators", "_UnderlyingType" }; return names[i];
 
49276
  }
 
49277
  const void *__attr (unsigned __i) const {
 
49278
    switch (__i) { case 1: return &_Enumerators; case 2: return &_UnderlyingType; default: return 0; }
 
49279
  }
 
49280
#line 94 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CEnumInfo.h"
 
49281
};
 
49282
 
 
49283
inline CEnumInfo::CEnumInfo () :
 
49284
  CScopeRequest (CObjectInfo::ENUM_INFO),
 
49285
  _UnderlyingType (&CTYPE_INT)
 
49286
 {}
 
49287
 
 
49288
inline unsigned CEnumInfo::Enumerators () const
 
49289
 { return _Enumerators.length (); }
 
49290
inline CEnumeratorInfo *CEnumInfo::Enumerator (unsigned n) const
 
49291
 { return _Enumerators.lookup (n); }
 
49292
 
 
49293
inline CTypeEnum *CEnumInfo::TypeInfo () const
 
49294
 { return (CTypeEnum*)CObjectInfo::TypeInfo (); }
 
49295
//inline CT_EnumSpec *CEnumInfo::Tree () const
 
49296
// { return (CT_EnumSpec*)CObjectInfo::Tree (); }
 
49297
 
 
49298
inline CTypeInfo *CEnumInfo::UnderlyingType () const
 
49299
 { return (CTypeInfo*)_UnderlyingType; }
 
49300
inline void CEnumInfo::UnderlyingType (CTypeInfo *type)
 
49301
 { _UnderlyingType = type; }
 
49302
 
 
49303
 
 
49304
} // namespace Puma
 
49305
 
 
49306
#endif /* __CEnumInfo_h__ */
 
49307
 
 
49308
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUsingInfo.h"
 
49309
// This file is part of PUMA.
 
49310
// Copyright (C) 1999-2003  The PUMA developer team.
 
49311
//                                                                
 
49312
// This program is free software;  you can redistribute it and/or 
 
49313
// modify it under the terms of the GNU General Public License as 
 
49314
// published by the Free Software Foundation; either version 2 of 
 
49315
// the License, or (at your option) any later version.            
 
49316
//                                                                
 
49317
// This program is distributed in the hope that it will be useful,
 
49318
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
49319
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
49320
// GNU General Public License for more details.                   
 
49321
//                                                                
 
49322
// You should have received a copy of the GNU General Public      
 
49323
// License along with this program; if not, write to the Free     
 
49324
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
49325
// MA  02111-1307  USA                                            
 
49326
 
 
49327
#ifndef __CUsingInfo_h__
 
49328
#define __CUsingInfo_h__
 
49329
 
 
49330
/** \file
 
49331
 *  Semantic information about a using-directive. */
 
49332
 
 
49333
 
 
49334
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUsingInfo.h"
 
49335
namespace Puma {
 
49336
 
 
49337
 
 
49338
class CNamespaceInfo;
 
49339
 
 
49340
 
 
49341
/** \class CUsingInfo CUsingInfo.h Puma/CUsingInfo.h
 
49342
 *  Semantic information about a using-directive. 
 
49343
 *  The using-directive makes names from a namespace 
 
49344
 *  visible in another namespace or scope.
 
49345
 *
 
49346
 *  Example:
 
49347
 *  \code
 
49348
 * namespace A {
 
49349
 *   class X {};
 
49350
 * }
 
49351
 * using namespace A;  // make A::X visible in global scope
 
49352
 * X x;                // resolves to A::X
 
49353
 *  \endcode */
 
49354
 
 
49355
#line 49356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49356
} // closed Puma
 
49357
class CCExprResolve;
 
49358
class CExprResolve;
 
49359
class WinIfExists;
 
49360
class WinImportHandler;
 
49361
class WinMacros;
 
49362
class WinAsm;
 
49363
class WinDeclSpecs;
 
49364
class WinMemberExplSpec;
 
49365
class WinTypeKeywords;
 
49366
class WinFriend;
 
49367
class ExtAC;
 
49368
class ExtACBuilderCoupling;
 
49369
class ExtACSyntaxCoupling;
 
49370
class ExtACTree;
 
49371
class ExtACKeywords;
 
49372
class ExtGnu;
 
49373
class PragmaOnceUnitState;
 
49374
class PragmaOnce;
 
49375
class CMatchSyntax;
 
49376
namespace Puma {
 
49377
 
 
49378
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUsingInfo.h"
 
49379
class CUsingInfo : public CScopeRequest {
 
49380
#line 49381 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49381
  friend class ::CCExprResolve;
 
49382
  friend class ::CExprResolve;
 
49383
  friend class ::WinIfExists;
 
49384
  friend class ::WinImportHandler;
 
49385
  friend class ::WinMacros;
 
49386
  friend class ::WinAsm;
 
49387
  friend class ::WinDeclSpecs;
 
49388
  friend class ::WinMemberExplSpec;
 
49389
  friend class ::WinTypeKeywords;
 
49390
  friend class ::WinFriend;
 
49391
  friend class ::ExtAC;
 
49392
  friend class ::ExtACBuilderCoupling;
 
49393
  friend class ::ExtACSyntaxCoupling;
 
49394
  friend class ::ExtACTree;
 
49395
  friend class ::ExtACKeywords;
 
49396
  friend class ::ExtGnu;
 
49397
  friend class ::PragmaOnceUnitState;
 
49398
  friend class ::PragmaOnce;
 
49399
  friend class ::CMatchSyntax;
 
49400
 
 
49401
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUsingInfo.h"
 
49402
 
 
49403
  CNamespaceInfo *_Namespace;
 
49404
 
 
49405
public:
 
49406
  /** Constructor. */
 
49407
  CUsingInfo ();
 
49408
  /** Destructor. If the object type is CObjectInfo::USING_INFO, 
 
49409
   *  then CObjectInfo::CleanUp() is called. */
 
49410
  ~CUsingInfo ();
 
49411
 
 
49412
  /** Get the semantic information for the namespace whose
 
49413
   *  names are made visible. */
 
49414
  CNamespaceInfo *Namespace () const;
 
49415
  /** Set the semantic information for the namespace whose
 
49416
   *  names are made visible. 
 
49417
   *  \param info The namespace. */
 
49418
  void Namespace (CNamespaceInfo *info);
 
49419
public:
 
49420
  typedef AC::TL<Puma::CNamespaceInfo *,AC::TLE > __AttrTypes;
 
49421
  const char *__attr_name (unsigned i) const {
 
49422
    static const char *names[] = { "_Namespace" }; return names[i];
 
49423
  }
 
49424
  const void *__attr (unsigned __i) const {
 
49425
    switch (__i) { case 0: return &_Namespace; default: return 0; }
 
49426
  }
 
49427
#line 63 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUsingInfo.h"
 
49428
};
 
49429
 
 
49430
inline CUsingInfo::CUsingInfo () :
 
49431
  CScopeRequest (CObjectInfo::USING_INFO),
 
49432
  _Namespace (0)
 
49433
 {}
 
49434
 
 
49435
inline CNamespaceInfo *CUsingInfo::Namespace () const 
 
49436
 { return _Namespace; }
 
49437
inline void CUsingInfo::Namespace (CNamespaceInfo *nsinfo)
 
49438
 { _Namespace = nsinfo; }
 
49439
 
 
49440
 
 
49441
} // namespace Puma
 
49442
 
 
49443
#endif /* __CUsingInfo_h__ */
 
49444
 
 
49445
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
49446
 
 
49447
#line 49448 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49448
 
 
49449
#ifndef __ac_fwd_ExtACKeywords__
 
49450
#define __ac_fwd_ExtACKeywords__
 
49451
class ExtACKeywords;
 
49452
namespace AC {
 
49453
  template <class JoinPoint>
 
49454
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a0_before (JoinPoint *tjp);
 
49455
  template <class JoinPoint>
 
49456
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a1_before (JoinPoint *tjp);
 
49457
  template <class JoinPoint>
 
49458
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a2_before (JoinPoint *tjp);
 
49459
}
 
49460
#endif
 
49461
 
 
49462
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
49463
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
49464
#endif
 
49465
 
 
49466
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
49467
// This file is part of PUMA.
 
49468
// Copyright (C) 1999-2003  The PUMA developer team.
 
49469
//                                                                
 
49470
// This program is free software;  you can redistribute it and/or 
 
49471
// modify it under the terms of the GNU General Public License as 
 
49472
// published by the Free Software Foundation; either version 2 of 
 
49473
// the License, or (at your option) any later version.            
 
49474
//                                                                
 
49475
// This program is distributed in the hope that it will be useful,
 
49476
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
49477
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
49478
// GNU General Public License for more details.                   
 
49479
//                                                                
 
49480
// You should have received a copy of the GNU General Public      
 
49481
// License along with this program; if not, write to the Free     
 
49482
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
49483
// MA  02111-1307  USA                                            
 
49484
 
 
49485
#ifndef __CProject_h__
 
49486
#define __CProject_h__
 
49487
 
 
49488
// Special project derivation for C++ sources.
 
49489
 
 
49490
#include "Puma/Config.h"
 
49491
#include "Puma/Project.h"
 
49492
#include "Puma/CScanner.h"
 
49493
#include "Puma/ErrorStream.h"
 
49494
 
 
49495
namespace Puma {
 
49496
 
 
49497
 
 
49498
class Source;
 
49499
class CTypeInfo;
 
49500
 
 
49501
 
 
49502
#line 49503 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49503
} // closed Puma
 
49504
class CCExprResolve;
 
49505
class CExprResolve;
 
49506
class WinIfExists;
 
49507
class WinImportHandler;
 
49508
class WinMacros;
 
49509
class WinAsm;
 
49510
class WinDeclSpecs;
 
49511
class WinMemberExplSpec;
 
49512
class WinTypeKeywords;
 
49513
class WinFriend;
 
49514
class ExtAC;
 
49515
class ExtACBuilderCoupling;
 
49516
class ExtACSyntaxCoupling;
 
49517
class ExtACTree;
 
49518
class ExtACKeywords;
 
49519
class ExtGnu;
 
49520
class PragmaOnceUnitState;
 
49521
class PragmaOnce;
 
49522
class CMatchSyntax;
 
49523
namespace Puma {
 
49524
 
 
49525
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
49526
class CProject : public Project {
 
49527
#line 49528 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49528
  friend class ::CCExprResolve;
 
49529
  friend class ::CExprResolve;
 
49530
  friend class ::WinIfExists;
 
49531
  friend class ::WinImportHandler;
 
49532
  friend class ::WinMacros;
 
49533
  friend class ::WinAsm;
 
49534
  friend class ::WinDeclSpecs;
 
49535
  friend class ::WinMemberExplSpec;
 
49536
  friend class ::WinTypeKeywords;
 
49537
  friend class ::WinFriend;
 
49538
  friend class ::ExtAC;
 
49539
  friend class ::ExtACBuilderCoupling;
 
49540
  friend class ::ExtACSyntaxCoupling;
 
49541
  friend class ::ExtACTree;
 
49542
  friend class ::ExtACKeywords;
 
49543
  friend class ::ExtGnu;
 
49544
  friend class ::PragmaOnceUnitState;
 
49545
  friend class ::PragmaOnce;
 
49546
  friend class ::CMatchSyntax;
 
49547
 
 
49548
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
49549
 
 
49550
  Config _config;
 
49551
  CScanner _scanner;
 
49552
 
 
49553
public:
 
49554
  CProject (ErrorStream &e);
 
49555
 
 
49556
  // Constructor: Add some source directories.
 
49557
  CProject (ErrorStream &, const char *defs, 
 
49558
               const char *decls = (const char*)0); 
 
49559
 
 
49560
  // Constructor: Setup preprocessor configuration according to
 
49561
  // command line parameter and the global config file and
 
49562
  // add some source directories.
 
49563
  CProject (ErrorStream &, int &argc, char **&argv, 
 
49564
            const char *defs = (const char*)0, 
 
49565
            const char *decls = (const char*)0);
 
49566
 
 
49567
public: // Project configuration 
 
49568
  // Get the preprocessor configuration.
 
49569
  Config &config ();
 
49570
 
 
49571
  // Configure the project from the command line or a file.
 
49572
  virtual void configure (Config &);
 
49573
 
 
49574
  // Add a new file to the project.
 
49575
  Unit *addFile (Filename file);
 
49576
 
 
49577
public: // Scanner interface
 
49578
  // Get the scanner.
 
49579
  CScanner &scanner ();
 
49580
 
 
49581
  // Scan the file `file' or the source if given. When
 
49582
  // scanning a source the resulting unit gets the name `file'.
 
49583
  
 
49584
#line 49585 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49585
public: __attribute__((always_inline)) inline ::Puma::Unit * __exec_old_scanFile(const char * file,::Puma::Source * ,bool isFile);
 
49586
 
 
49587
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
49588
virtual Unit *scanFile (const char *file, Source * = (Source*)0, 
 
49589
                          bool isFile = true);
 
49590
        
 
49591
  // Scan a string. The resulting unit gets the name `name'.
 
49592
  // (and will not be registered at the unit manager!)
 
49593
  virtual Unit *scanString (const char *str, 
 
49594
                            const char *name = (const char*)0);
 
49595
 
 
49596
public: // Miscellaneous Functions
 
49597
 
 
49598
  // Give the filename needed to include a particular header file
 
49599
  Filename getInclString (Filename filename);
 
49600
 
 
49601
private:
 
49602
  // Map the type string from --size-type and --ptrdiff-type
 
49603
  // to real Puma type.
 
49604
  CTypeInfo *mapType (const char *) const;
 
49605
public:
 
49606
  typedef AC::TL<Puma::Config,AC::TL<Puma::CScanner,AC::TLE > > __AttrTypes;
 
49607
  const char *__attr_name (unsigned i) const {
 
49608
    static const char *names[] = { "_config", "_scanner" }; return names[i];
 
49609
  }
 
49610
  const void *__attr (unsigned __i) const {
 
49611
    switch (__i) { case 0: return &_config; case 1: return &_scanner; default: return 0; }
 
49612
  }
 
49613
#line 86 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
49614
};
 
49615
 
 
49616
inline Config &CProject::config () 
 
49617
 { return _config; }
 
49618
inline CScanner &CProject::scanner () 
 
49619
 { return _scanner; }
 
49620
 
 
49621
 
 
49622
} // namespace Puma
 
49623
 
 
49624
#endif /* __CProject_h__ */
 
49625
 
 
49626
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
49627
#include <stdio.h>
 
49628
using namespace std;
 
49629
 
 
49630
namespace Puma {
 
49631
 
 
49632
 
 
49633
CSemDatabase::~CSemDatabase () {
 
49634
  for (int i = 0; i < _Files.length (); i++)
 
49635
    delete (CFileInfo*)_Files[i];
 
49636
  // delete functions infos of built-in operators
 
49637
  multimap<int,CFunctionInfo*>::iterator iter;
 
49638
  for (iter = _builtin_ops.begin (); iter != _builtin_ops.end (); ++iter)
 
49639
    delete iter->second;
 
49640
}
 
49641
 
 
49642
void CSemDatabase::Insert (CObjectInfo *info) {
 
49643
  if (! info || ! info->Name ()) return;
 
49644
 
 
49645
  if (info->ClassInfo ())
 
49646
    _Classes.append (info);
 
49647
  else if (info->UnionInfo ())
 
49648
    _Unions.append (info);
 
49649
  else if (info->EnumInfo ())
 
49650
    _Enums.append (info);
 
49651
  else if (info->TypedefInfo ())
 
49652
    _Typedefs.append (info);
 
49653
  else if (info->FunctionInfo ())
 
49654
    _Functions.append (info);
 
49655
  else if (info->FileInfo ())
 
49656
    _Files.append (info);
 
49657
  else
 
49658
    return; // Unknown!
 
49659
 
 
49660
  info->SemDB (this);
 
49661
}
 
49662
  
 
49663
void CSemDatabase::Remove (CObjectInfo *info) {
 
49664
  if (! info) return;
 
49665
  if (info->ClassInfo ()) {
 
49666
    for (long i = ClassInfos (); i > 0; i--)
 
49667
      if (_Classes.fetch (i-1) == info)
 
49668
        _Classes.remove (i-1);
 
49669
  } else if (info->UnionInfo ()) {
 
49670
    for (long i = UnionInfos (); i > 0; i--)
 
49671
      if (_Unions.fetch (i-1) == info)
 
49672
        _Unions.remove (i-1);
 
49673
  } else if (info->EnumInfo ()) {
 
49674
    for (long i = EnumInfos (); i > 0; i--)
 
49675
      if (_Enums.fetch (i-1) == info)
 
49676
        _Enums.remove (i-1);
 
49677
  } else if (info->TypedefInfo ()) {
 
49678
    for (long i = TypedefInfos (); i > 0; i--)
 
49679
      if (_Typedefs.fetch (i-1) == info)
 
49680
        _Typedefs.remove (i-1);
 
49681
  } else if (info->FunctionInfo ()) {
 
49682
    for (long i = FunctionInfos (); i > 0; i--)
 
49683
      if (_Functions.fetch (i-1) == info)
 
49684
        _Functions.remove (i-1);
 
49685
  } else if (info->FileInfo ()) {
 
49686
    for (long i = FileInfos (); i > 0; i--)
 
49687
      if (_Files.fetch (i-1) == info)
 
49688
        _Files.remove (i-1);
 
49689
  } else 
 
49690
    return; // Unknown!
 
49691
}
 
49692
 
 
49693
CFunctionInfo *CSemDatabase::BuiltinOperator (const char *name, int tok,
 
49694
  CTypeInfo *rtype, CTypeInfo *t0, CTypeInfo *t1) {
 
49695
  CFunctionInfo *info;
 
49696
  CTypeList *args;
 
49697
  CTypeInfo *type;
 
49698
    
 
49699
  // first check if this built-in operator already exists ...
 
49700
  multimap<int,CFunctionInfo*>::iterator iter, lower, upper;
 
49701
  lower = _builtin_ops.lower_bound (tok);
 
49702
  upper = _builtin_ops.upper_bound (tok);
 
49703
  // check all exisiting operators with the right token type
 
49704
  for (iter = lower; iter != upper; ++iter) {
 
49705
    info = iter->second;
 
49706
    args = info->TypeInfo ()->ArgTypes ();
 
49707
    // same number of arguments?
 
49708
    if (args->Entries () == (unsigned)((t0?1:0) + (t1?1:0))) {
 
49709
      // same parameter type list
 
49710
      if ((t0 ? *t0 == *args->Entry (0) : true) &&
 
49711
          (t1 ? *t1 == *args->Entry (1) : true)) {
 
49712
        if (t0) CTypeInfo::Destroy (t0);
 
49713
        if (t1) CTypeInfo::Destroy (t1);
 
49714
        if (rtype) CTypeInfo::Destroy (rtype);
 
49715
        return info; // operator already exists
 
49716
      }
 
49717
    }
 
49718
  }
 
49719
  
 
49720
  // the operator object has to be created ...
 
49721
    // return type
 
49722
  if (! rtype)
 
49723
    rtype = &CTYPE_UNDEFINED;
 
49724
 
 
49725
  // parameter type list
 
49726
  args = new CTypeList ((t0?1:0)+(t1?1:0));
 
49727
  if (t0) args->AddEntry (t0);
 
49728
  if (t1) args->AddEntry (t1);
 
49729
  
 
49730
  // operator function type
 
49731
  type = new CTypeFunction (rtype, args, true);
 
49732
 
 
49733
  // operator function
 
49734
  info = new CFunctionInfo;
 
49735
  info->Name (name);
 
49736
  info->isOperator (true);
 
49737
  info->ObjectInfo ()->TypeInfo (type);
 
49738
  type->VirtualType ()->TypeFunction ()->FunctionInfo (info);
 
49739
 
 
49740
  // create function parameters
 
49741
  if (t0) CreateParameter (info, t0);
 
49742
  if (t1) CreateParameter (info, t1);
 
49743
  
 
49744
  // insert the object as a regular object into the class database
 
49745
  Insert (info);
 
49746
  
 
49747
  // insert the object into the map
 
49748
  _builtin_ops.insert (multimap<int,CFunctionInfo*>::value_type (tok, info));
 
49749
  
 
49750
  return info;
 
49751
}
 
49752
 
 
49753
void CSemDatabase::CreateParameter (CFunctionInfo *fi, CTypeInfo *type) const {
 
49754
  CArgumentInfo *info;
 
49755
  info = fi->newArgument ();
 
49756
  info->Name ("<noname>");
 
49757
  info->Storage (CStorage::CLASS_AUTOMATIC);
 
49758
  info->TypeInfo (type->Duplicate ());
 
49759
}
 
49760
 
 
49761
CObjectInfo *CSemDatabase::ObjectInfo (Token *token) const {
 
49762
  unsigned infos = ObjectInfos ();
 
49763
  for (unsigned i = 0; i < infos; i++) {
 
49764
    CObjectInfo *info = ObjectInfo (i);
 
49765
    if (! info->FileInfo ())
 
49766
      if (*info->SourceInfo () == token)
 
49767
        return info;  
 
49768
  }
 
49769
  return (CObjectInfo*)0;
 
49770
}
 
49771
 
 
49772
CObjectInfo *CSemDatabase::ObjectInfo (CT_Token *token) const {
 
49773
  unsigned infos = ObjectInfos ();
 
49774
  for (unsigned i = 0; i < infos; i++) {
 
49775
    CObjectInfo *info = ObjectInfo (i);
 
49776
    if (! info->FileInfo ())
 
49777
      if (*info->SourceInfo () == token)
 
49778
        return info;  
 
49779
  }
 
49780
  return (CObjectInfo*)0;
 
49781
}
 
49782
 
 
49783
CObjectInfo *CSemDatabase::ObjectInfo (unsigned i) const { 
 
49784
  if (i < ClassInfos ()) return ClassInfo (i);
 
49785
  else i = i - ClassInfos ();
 
49786
  if (i < UnionInfos ()) return UnionInfo (i);
 
49787
  else i = i - UnionInfos ();
 
49788
  if (i < EnumInfos ()) return EnumInfo (i);
 
49789
  else i = i - EnumInfos ();
 
49790
  if (i < TypedefInfos ()) return TypedefInfo (i);
 
49791
  else i = i - TypedefInfos ();
 
49792
  if (i < FunctionInfos ()) return FunctionInfo (i);
 
49793
  else i = i - FunctionInfos ();
 
49794
  if (i < FileInfos ()) return FileInfo (i);
 
49795
  return (CObjectInfo*)0; 
 
49796
}
 
49797
 
 
49798
 
 
49799
 
 
49800
#line 49801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49801
 
 
49802
 
 
49803
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZNK4Puma12CSemDatabase4DumpERN3stdE13basic_ostreamIcEi_0 {
 
49804
  typedef TJP__ZNK4Puma12CSemDatabase4DumpERN3stdE13basic_ostreamIcEi_0 __TJP;
 
49805
  typedef TResult Result;
 
49806
  typedef TThat   That;
 
49807
  typedef TTarget Target;
 
49808
  enum { ARGS = TArgs::ARGS };
 
49809
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
49810
  static const int JPID = 5090;
 
49811
  static const AC::JPType JPTYPE = (AC::JPType)8;
 
49812
  struct Res {
 
49813
    typedef TResult Type;
 
49814
    typedef TResult ReferredType;
 
49815
  };
 
49816
 
 
49817
  void *_args[ARGS];
 
49818
  That *_that;
 
49819
 
 
49820
  inline void *arg (int n) {return _args[n];}
 
49821
  template <int I> typename Arg<I>::ReferredType *arg () {
 
49822
    return (typename Arg<I>::ReferredType*)arg (I);
 
49823
  }
 
49824
  inline That *that() {return (That*)_that;}
 
49825
 
 
49826
};
 
49827
 
 
49828
 
 
49829
#line 215 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
49830
void CSemDatabase::Dump (ostream & arg0, int  arg1) const 
 
49831
#line 49832 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
49832
{
 
49833
  typedef TJP__ZNK4Puma12CSemDatabase4DumpERN3stdE13basic_ostreamIcEi_0< void, const ::Puma::CSemDatabase , ::Puma::CSemDatabase ,  AC::TL< ::std::ostream & , AC::TL< int , AC::TLE > > > __TJP;
 
49834
    __TJP tjp;
 
49835
  tjp._args[0] = (void*)&arg0;
 
49836
  tjp._args[1] = (void*)&arg1;
 
49837
  tjp._that =  (__TJP::That*)this;
 
49838
  AC::invoke_ExtAC_ExtAC_a0_before<__TJP> (&tjp);
 
49839
    this->__exec_old_Dump(arg0, arg1);
 
49840
  
 
49841
}
 
49842
__attribute__((always_inline)) inline void Puma::CSemDatabase::__exec_old_Dump(::std::ostream & out,int level) const
 
49843
#line 215 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
49844
{
 
49845
  unsigned files = FileInfos ();
 
49846
  CStructure *file;
 
49847
  int count = 0;
 
49848
  
 
49849
  for (unsigned i = 0; i < files; i++) {
 
49850
    file = FileInfo (i);
 
49851
    out << "file " << count++ << " : " << file->Name () << endl;
 
49852
    Dump (out, file, 0, level);
 
49853
  }
 
49854
}
 
49855
 
 
49856
void CSemDatabase::Dump (ostream &out, CStructure *scope, int ind, int level) const {
 
49857
  unsigned num;
 
49858
  
 
49859
  if (! scope || (ind / 4) > level) 
 
49860
    return; 
 
49861
  
 
49862
  // Template parameter (print on template scope only)
 
49863
  num = scope->TemplateParams ();
 
49864
  if (num && scope->TemplateInfo ()) {
 
49865
    indent (out, ind+2); out << num << " template parameters:" << endl;
 
49866
    for (unsigned j = 0; j < num; j++)
 
49867
      DumpTemplateParam (out, scope->TemplateParam (j), ind);
 
49868
  }
 
49869
    
 
49870
  // Types
 
49871
  num = scope->Types ();
 
49872
  if (num) {
 
49873
    indent (out, ind+2); out << num << " types:" << endl;
 
49874
    for (unsigned j = 0; j < num; j++)
 
49875
      DumpType (out, scope->Type (j), ind);
 
49876
  }
 
49877
    
 
49878
  // Namespaces
 
49879
  num = scope->Namespaces ();
 
49880
  if (num) {
 
49881
    indent (out, ind+2); out << num << " namespaces:" << endl;
 
49882
    for (unsigned j = 0; j < num; j++) 
 
49883
      DumpNamespace (out, scope->Namespace (j), ind);
 
49884
  }
 
49885
 
 
49886
  // Usings
 
49887
  num = scope->Usings ();
 
49888
  if (num) {
 
49889
    indent (out, ind+2); out << num << " usings:" << endl;
 
49890
    for (unsigned j = 0; j < num; j++) 
 
49891
      DumpUsing (out, scope->Using (j), ind);
 
49892
  }
 
49893
 
 
49894
  // Attributes
 
49895
  num = scope->Attributes ();
 
49896
  if (num) {
 
49897
    indent (out, ind+2); out << num << " attributes: " << endl;
 
49898
    for (unsigned j = 0; j < num; j++)
 
49899
      DumpAttribute (out, scope->Attribute (j), ind);
 
49900
  }
 
49901
 
 
49902
  // Functions
 
49903
  num = scope->Functions ();
 
49904
  if (num) {
 
49905
    indent (out, ind+2); out << num << " functions:" << endl;
 
49906
    for (unsigned j = 0; j < num; j++)
 
49907
      DumpFunction (out, scope->Function (j), ind, level);
 
49908
  }
 
49909
  
 
49910
  // Local scopes
 
49911
  num = scope->Children ();
 
49912
  if (num) {
 
49913
    indent (out, ind+2); out << num << " scopes:" << endl;
 
49914
    for (unsigned j = 0; j < num; j++) {
 
49915
      CStructure *info = scope->Child (j)->Structure ();
 
49916
//      if (info && info->Objects () &&
 
49917
//          ! (info->FunctionInfo () && ! info->FunctionInfo ()->isFctDef ())) {
 
49918
        DumpLocalScope (out, info, ind);
 
49919
        Dump (out, info, ind+4, level);
 
49920
//      }
 
49921
    }
 
49922
  }
 
49923
}
 
49924
 
 
49925
void CSemDatabase::DumpLocalScope (ostream &out, CObjectInfo *info, int ind) const {
 
49926
  indent (out, ind+4); 
 
49927
  if (info->Record () || info->NamespaceInfo () || 
 
49928
      info->FunctionInfo () || info->TemplateInfo ()) {
 
49929
    if (info->UnionInfo ()) 
 
49930
      out << "union";
 
49931
    else if (info->ClassInfo ()) 
 
49932
      out << (info->ClassInfo ()->isStruct () ? "struct" : "class");
 
49933
    else if (info->NamespaceInfo ())
 
49934
      out << "namespace";
 
49935
    else if (info->FunctionInfo ())
 
49936
      out << "function";
 
49937
    else if (info->TemplateInfo ())
 
49938
      out << "template";
 
49939
    out << " : " << info->Name ();
 
49940
  } else 
 
49941
    out << "block";
 
49942
  out << "\t";
 
49943
  if (info->ClassInfo ()) {
 
49944
    unsigned base_classes = info->ClassInfo ()->BaseClasses ();
 
49945
    if (base_classes) {
 
49946
      out << "[base classes: ";
 
49947
      for (unsigned i = 0; i < base_classes; i++) {
 
49948
        CClassInfo *cinfo = info->ClassInfo ()->BaseClass (i)->Class ();
 
49949
        if (cinfo && cinfo->TypeInfo ()) {
 
49950
          cinfo->TypeInfo ()->TypeText (out);
 
49951
          if (i+1 < base_classes)
 
49952
            out << ",";
 
49953
        }
 
49954
      }
 
49955
      out << "] ";
 
49956
    }
 
49957
  }
 
49958
  DumpQualities (out, info);
 
49959
  out << endl;
 
49960
}
 
49961
 
 
49962
void CSemDatabase::DumpFunction (ostream &out, CFunctionInfo *info, int ind, int level) const {
 
49963
//  CArgumentInfo* arg;
 
49964
//  unsigned num;
 
49965
  
 
49966
  indent (out, ind+4); 
 
49967
  out << info->Name () << "\t (type: ";
 
49968
  info->TypeInfo ()->TypeText (out);
 
49969
  out << ") ";
 
49970
 
 
49971
  if (info->ObjectInfo()->QualifiedScope () && info->ObjectInfo()->QualifiedScope () != info->Scope ()) {
 
49972
    out << " [member of ";
 
49973
    DumpScopeName (out, info->ObjectInfo()->QualifiedScope ());
 
49974
    out << "]";
 
49975
  }
 
49976
  if (info->isDestructor ()) 
 
49977
    out << " [destructor]";
 
49978
  else if (info->isConstructor ()) 
 
49979
    out << " [constructor]";
 
49980
  if (! info->isDefined () && ! info->isBuiltin ())
 
49981
    out << " [undefined]";
 
49982
  if (info->isOperator () || info->isConversion ())
 
49983
    out << " [operator]";
 
49984
 
 
49985
  DumpQualities (out, info);
 
49986
  out << endl;
 
49987
 
 
49988
  if (level == 0) 
 
49989
    return;
 
49990
  
 
49991
  // dump function arguments
 
49992
//  num = info->Arguments ();
 
49993
//  if (num) {
 
49994
//    indent (out, ind+6); out << num << " arguments:" << endl;
 
49995
//    for (unsigned i = 0; i < num; i++) {
 
49996
//      arg = info->Argument (i);
 
49997
//      indent (out, ind+8); out << arg->Name () << "\t (type: ";
 
49998
//      arg->TypeInfo ()->TypeText (out);
 
49999
//      out << ") ";
 
50000
//      DumpQualities (out, arg);
 
50001
//      out << endl;
 
50002
//    }
 
50003
//  }
 
50004
}
 
50005
 
 
50006
void CSemDatabase::DumpAttribute (ostream &out, CAttributeInfo *info, int ind) const {
 
50007
  indent (out, ind+4); 
 
50008
  out << info->Name () << "\t (type: ";
 
50009
  info->TypeInfo ()->TypeText (out);
 
50010
  out << ") ";
 
50011
 
 
50012
  if (info->ObjectInfo()->QualifiedScope () && info->ObjectInfo()->QualifiedScope () != info->Scope ()) {
 
50013
    out << " [member of ";
 
50014
    DumpScopeName (out, info->ObjectInfo()->QualifiedScope ());
 
50015
    out << "]";
 
50016
  }
 
50017
  if (info->TypeInfo ()->isVarArray ()) 
 
50018
    out << " [dim: variable]";
 
50019
  else if ((info->TypeInfo ()->isArray () || info->TypeInfo ()->isBitField ()) && 
 
50020
           info->TypeInfo ()->Dimension () != -1) 
 
50021
    out << " [dim: " << info->TypeInfo ()->Dimension () << "]";
 
50022
  else if (info->EnumeratorInfo ()) 
 
50023
    out << " [value: " << info->EnumeratorInfo ()->Value () << "]";
 
50024
 
 
50025
  DumpQualities (out, info);
 
50026
  out << endl;
 
50027
}
 
50028
 
 
50029
void CSemDatabase::DumpType (ostream &out, CObjectInfo *info, int ind) const {
 
50030
  indent (out, ind+4); 
 
50031
  if (info->TypedefInfo ()) 
 
50032
    out << "typedef ";
 
50033
  else if (info->UnionInfo ()) 
 
50034
    out << "union ";
 
50035
  else if (info->EnumInfo ()) 
 
50036
    out << "enum ";
 
50037
  else if (info->ClassInfo ())
 
50038
    out << (info->ClassInfo ()->isStruct () ? "struct " : "class ");
 
50039
  out << ": " << info->Name () << "\t";
 
50040
  if (info->EnumInfo ()) {
 
50041
    out << " (underlying type: ";
 
50042
    info->EnumInfo ()->TypeInfo ()->UnderlyingType ()->TypeText (out);
 
50043
    out << ") ";
 
50044
  } else if (info->TypedefInfo ()) {
 
50045
    out << " (type: ";
 
50046
    info->TypeInfo ()->TypeText (out);
 
50047
    out << ") ";
 
50048
  } else if (info->ClassInfo ()) {
 
50049
    unsigned base_classes = info->ClassInfo ()->BaseClasses ();
 
50050
    if (base_classes) {
 
50051
      out << "[base classes: ";
 
50052
      for (unsigned i = 0; i < base_classes; i++) {
 
50053
        CClassInfo *cinfo = info->ClassInfo ()->BaseClass (i)->Class ();
 
50054
        if (cinfo && cinfo->TypeInfo ()) {
 
50055
          cinfo->TypeInfo ()->TypeText (out);
 
50056
          if (i+1 < base_classes)
 
50057
            out << ",";
 
50058
        }
 
50059
      }
 
50060
      out << "] ";
 
50061
    }
 
50062
  }
 
50063
  DumpQualities (out, info);
 
50064
  out << endl;
 
50065
}
 
50066
 
 
50067
void CSemDatabase::DumpTemplateParam (ostream &out, CTemplateParamInfo *info, int ind) const {
 
50068
  indent (out, ind+4); 
 
50069
  out << info->Name () << "\t";
 
50070
  if (info->isTemplate ()) 
 
50071
    out << " [template] ";
 
50072
  else if (info->isTypeParam ()) 
 
50073
    out << " [type] ";
 
50074
  else 
 
50075
    out << " [non-type] ";
 
50076
  out << endl;
 
50077
}
 
50078
 
 
50079
void CSemDatabase::DumpNamespace (ostream &out, CNamespaceInfo *info, int ind) const {
 
50080
  CNamespaceInfo *nsinfo;
 
50081
  indent (out, ind+4); 
 
50082
  out << "namespace : " << info->Name () << "\t";
 
50083
  if (info->isAlias ()) {
 
50084
    nsinfo = info;
 
50085
    while (nsinfo->isAlias ()) {
 
50086
      nsinfo = (CNamespaceInfo*)nsinfo->NextObject ();
 
50087
      if (nsinfo == info) // should never be true
 
50088
        break;
 
50089
    }
 
50090
    out << " [alias of ";
 
50091
    DumpScopeName (out, nsinfo);
 
50092
    out << "]";
 
50093
  }
 
50094
  DumpQualities (out, info);
 
50095
  out << endl;
 
50096
}
 
50097
 
 
50098
void CSemDatabase::DumpUsing (ostream &out, CUsingInfo *info, int ind) const {
 
50099
  CNamespaceInfo *nsinfo = info->Namespace ();
 
50100
  indent (out, ind+4); 
 
50101
  out << "using namespace " << ": ";
 
50102
  DumpScopeName (out, nsinfo);
 
50103
  out << endl;
 
50104
}
 
50105
 
 
50106
void CSemDatabase::DumpQualities (ostream &out, CObjectInfo *info) const {
 
50107
  if (info->isTemplate ())
 
50108
    out << " [template]";
 
50109
  if (info->TemplateInfo () && ! info->TemplateInfo ()->isBaseTemplate ())
 
50110
    out << " [specialization of " << (void*)info->TemplateInfo ()->BaseTemplate () << "]";
 
50111
  if (info->NamespaceInfo () && info->Name () && *info->Name ().c_str() == '%')
 
50112
    out << " [instance scope]";
 
50113
  if (info->isTemplateInstance ()) {
 
50114
    if (info->TemplateInstance ()->isPseudoInstance ())
 
50115
      out << " [pseudo instance]";
 
50116
    else
 
50117
      out << " [instance of " 
 
50118
          << (void*)info->TemplateInstance ()->Template () << "]";
 
50119
  }
 
50120
 
 
50121
  // dump member access level
 
50122
  if (info->Protection () == CProtection::PROT_PROTECTED) 
 
50123
    out << " [protected]";
 
50124
  else if (info->Protection () == CProtection::PROT_PRIVATE) 
 
50125
    out << " [private]";
 
50126
//  else if (info->Protection () == CProtection::PROT_PUBLIC) 
 
50127
//    out << " [public]";
 
50128
 
 
50129
  // dump linkage 
 
50130
  if (! (info->Language () == CLanguage::LANG_UNDEFINED)) 
 
50131
    out << " [language: " << info->Language ().Text () << "]";
 
50132
 
 
50133
  // dump type qualities
 
50134
  if (info->TypeInfo () && info->TypeInfo ()->isVolatile ()) 
 
50135
    out << " [volatile]";
 
50136
  if (info->TypeInfo () && info->TypeInfo ()->isConst ()) 
 
50137
    out << " [const]";
 
50138
 
 
50139
  if (info->isBuiltin ())
 
50140
    out << " [builtin]";
 
50141
  if (info->isInline ()) 
 
50142
    out << " [inline]";
 
50143
  if (info->isAnonymous ()) 
 
50144
    out << " [anonymous]";
 
50145
 
 
50146
  if (info->isVirtual ()) 
 
50147
    out << " [virtual]";
 
50148
  if (info->isStatic ()) 
 
50149
    out << " [static]";
 
50150
  if (info->isExtern ()) 
 
50151
    out << " [extern]";
 
50152
  if (info->isMutable ()) 
 
50153
    out << " [mutable]";
 
50154
  if (info->isRegister ()) 
 
50155
    out << " [register]";
 
50156
 
 
50157
  // dump storage class
 
50158
  if (info->Storage () == CStorage::CLASS_DYNAMIC) 
 
50159
    out << " [dynamic]";
 
50160
//  else if (info->Storage () == CStorage::CLASS_STATIC) 
 
50161
//    out << " [static]";
 
50162
//  else if (info->Storage () == CStorage::CLASS_AUTOMATIC) 
 
50163
//    out << " [automatic]";
 
50164
 
 
50165
  // dump address
 
50166
  out << " [" << (void*)info << "]";
 
50167
  // dump next linked object
 
50168
  if (info->NextObject () != info)
 
50169
    out << " [next: " << (void*)info->NextObject () << "]";
 
50170
}
 
50171
 
 
50172
void CSemDatabase::DumpScopeName (ostream &out, CStructure *scope) const {
 
50173
  if (scope->FileInfo ())
 
50174
    return;
 
50175
 
 
50176
  CStructure *parent = scope->Parent ()->Structure ();
 
50177
  if (parent->isRecord () || parent->isNamespace ()) {
 
50178
    DumpScopeName (out, parent);
 
50179
    out << "::" << scope->Name ();
 
50180
  } else
 
50181
    out << scope->Name ();
 
50182
}
 
50183
 
 
50184
void CSemDatabase::indent (ostream &out, int ind) const {
 
50185
  for (int i = 0; i < ind; i++)
 
50186
    out << " ";
 
50187
}
 
50188
 
 
50189
} // namespace Puma
 
50190
 
 
50191
#line 50192 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50192
 
 
50193
#ifdef __ac_FIRST_FILE__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_src_CSemDatabase_cc__
 
50194
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
 
50195
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
 
50196
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
 
50197
#include "CCExprResolveCC.ah"
 
50198
#endif
 
50199
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50200
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50201
#include "ExtACTree.ah"
 
50202
#endif
 
50203
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
50204
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
50205
#include "ExtGnu.ah"
 
50206
#endif
 
50207
#endif
 
50208
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50209
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50210
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50211
#include "CCExprResolveH.ah"
 
50212
#endif
 
50213
#endif
 
50214
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
 
50215
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
 
50216
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
 
50217
#include "CExprResolveCC.ah"
 
50218
#endif
 
50219
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50220
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50221
#include "ExtACTree.ah"
 
50222
#endif
 
50223
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
50224
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
50225
#include "ExtGnu.ah"
 
50226
#endif
 
50227
#endif
 
50228
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50229
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50230
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50231
#include "CExprResolveH.ah"
 
50232
#endif
 
50233
#endif
 
50234
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
50235
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
50236
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
50237
#include "WinIfExists.ah"
 
50238
#endif
 
50239
#endif
 
50240
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
50241
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
50242
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
50243
#include "WinImportHandler.ah"
 
50244
#endif
 
50245
#endif
 
50246
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMacros_ah__
 
50247
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMacros_ah__
 
50248
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMacros_ah__
 
50249
#include "WinMacros.ah"
 
50250
#endif
 
50251
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
50252
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
50253
#include "PragmaOnceUnitState.ah"
 
50254
#endif
 
50255
#endif
 
50256
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinAsm_ah__
 
50257
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinAsm_ah__
 
50258
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinAsm_ah__
 
50259
#include "WinAsm.ah"
 
50260
#endif
 
50261
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50262
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50263
#include "ExtACTree.ah"
 
50264
#endif
 
50265
#endif
 
50266
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
50267
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
50268
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
50269
#include "WinDeclSpecs.ah"
 
50270
#endif
 
50271
#endif
 
50272
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
50273
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
50274
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
50275
#include "WinMemberExplSpec.ah"
 
50276
#endif
 
50277
#endif
 
50278
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
50279
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
50280
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
50281
#include "WinTypeKeywords.ah"
 
50282
#endif
 
50283
#endif
 
50284
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinFriend_ah__
 
50285
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinFriend_ah__
 
50286
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinFriend_ah__
 
50287
#include "WinFriend.ah"
 
50288
#endif
 
50289
#endif
 
50290
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
 
50291
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
 
50292
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
 
50293
 
 
50294
#line 103 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
50295
#endif
 
50296
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50297
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50298
 
 
50299
#line 107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
50300
#endif
 
50301
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
50302
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
50303
 
 
50304
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50305
// This file is part of PUMA.
 
50306
// Copyright (C) 1999-2003  The PUMA developer team.
 
50307
//                                                                
 
50308
// This program is free software;  you can redistribute it and/or 
 
50309
// modify it under the terms of the GNU General Public License as 
 
50310
// published by the Free Software Foundation; either version 2 of 
 
50311
// the License, or (at your option) any later version.            
 
50312
//                                                                
 
50313
// This program is distributed in the hope that it will be useful,
 
50314
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
50315
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
50316
// GNU General Public License for more details.                   
 
50317
//                                                                
 
50318
// You should have received a copy of the GNU General Public      
 
50319
// License along with this program; if not, write to the Free     
 
50320
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
50321
// MA  02111-1307  USA                                            
 
50322
 
 
50323
#ifndef __ext_ac_keywords_ah__
 
50324
#define __ext_ac_keywords_ah__
 
50325
 
 
50326
 
 
50327
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
50328
 
 
50329
#line 50330 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50330
 
 
50331
#ifndef __ac_fwd_ExtACKeywords__
 
50332
#define __ac_fwd_ExtACKeywords__
 
50333
class ExtACKeywords;
 
50334
namespace AC {
 
50335
  template <class JoinPoint>
 
50336
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a0_before (JoinPoint *tjp);
 
50337
  template <class JoinPoint>
 
50338
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a1_before (JoinPoint *tjp);
 
50339
  template <class JoinPoint>
 
50340
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a2_before (JoinPoint *tjp);
 
50341
}
 
50342
#endif
 
50343
 
 
50344
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
50345
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
50346
#endif
 
50347
 
 
50348
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
50349
// This file is part of PUMA.
 
50350
// Copyright (C) 1999-2003  The PUMA developer team.
 
50351
//                                                                
 
50352
// This program is free software;  you can redistribute it and/or 
 
50353
// modify it under the terms of the GNU General Public License as 
 
50354
// published by the Free Software Foundation; either version 2 of 
 
50355
// the License, or (at your option) any later version.            
 
50356
//                                                                
 
50357
// This program is distributed in the hope that it will be useful,
 
50358
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
50359
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
50360
// GNU General Public License for more details.                   
 
50361
//                                                                
 
50362
// You should have received a copy of the GNU General Public      
 
50363
// License along with this program; if not, write to the Free     
 
50364
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
50365
// MA  02111-1307  USA                                            
 
50366
 
 
50367
#ifndef __CProject_h__
 
50368
#define __CProject_h__
 
50369
 
 
50370
// Special project derivation for C++ sources.
 
50371
 
 
50372
#include "Puma/Config.h"
 
50373
#include "Puma/Project.h"
 
50374
#include "Puma/CScanner.h"
 
50375
#include "Puma/ErrorStream.h"
 
50376
 
 
50377
namespace Puma {
 
50378
 
 
50379
 
 
50380
class Source;
 
50381
class CTypeInfo;
 
50382
 
 
50383
 
 
50384
#line 50385 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50385
} // closed Puma
 
50386
class CCExprResolve;
 
50387
class CExprResolve;
 
50388
class WinIfExists;
 
50389
class WinImportHandler;
 
50390
class WinMacros;
 
50391
class WinAsm;
 
50392
class WinDeclSpecs;
 
50393
class WinMemberExplSpec;
 
50394
class WinTypeKeywords;
 
50395
class WinFriend;
 
50396
class ExtAC;
 
50397
class ExtACBuilderCoupling;
 
50398
class ExtACSyntaxCoupling;
 
50399
class ExtACTree;
 
50400
class ExtACKeywords;
 
50401
class ExtGnu;
 
50402
class PragmaOnceUnitState;
 
50403
class PragmaOnce;
 
50404
class CMatchSyntax;
 
50405
namespace Puma {
 
50406
 
 
50407
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
50408
class CProject : public Project {
 
50409
#line 50410 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50410
  friend class ::CCExprResolve;
 
50411
  friend class ::CExprResolve;
 
50412
  friend class ::WinIfExists;
 
50413
  friend class ::WinImportHandler;
 
50414
  friend class ::WinMacros;
 
50415
  friend class ::WinAsm;
 
50416
  friend class ::WinDeclSpecs;
 
50417
  friend class ::WinMemberExplSpec;
 
50418
  friend class ::WinTypeKeywords;
 
50419
  friend class ::WinFriend;
 
50420
  friend class ::ExtAC;
 
50421
  friend class ::ExtACBuilderCoupling;
 
50422
  friend class ::ExtACSyntaxCoupling;
 
50423
  friend class ::ExtACTree;
 
50424
  friend class ::ExtACKeywords;
 
50425
  friend class ::ExtGnu;
 
50426
  friend class ::PragmaOnceUnitState;
 
50427
  friend class ::PragmaOnce;
 
50428
  friend class ::CMatchSyntax;
 
50429
 
 
50430
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
50431
 
 
50432
  Config _config;
 
50433
  CScanner _scanner;
 
50434
 
 
50435
public:
 
50436
  CProject (ErrorStream &e);
 
50437
 
 
50438
  // Constructor: Add some source directories.
 
50439
  CProject (ErrorStream &, const char *defs, 
 
50440
               const char *decls = (const char*)0); 
 
50441
 
 
50442
  // Constructor: Setup preprocessor configuration according to
 
50443
  // command line parameter and the global config file and
 
50444
  // add some source directories.
 
50445
  CProject (ErrorStream &, int &argc, char **&argv, 
 
50446
            const char *defs = (const char*)0, 
 
50447
            const char *decls = (const char*)0);
 
50448
 
 
50449
public: // Project configuration 
 
50450
  // Get the preprocessor configuration.
 
50451
  Config &config ();
 
50452
 
 
50453
  // Configure the project from the command line or a file.
 
50454
  virtual void configure (Config &);
 
50455
 
 
50456
  // Add a new file to the project.
 
50457
  Unit *addFile (Filename file);
 
50458
 
 
50459
public: // Scanner interface
 
50460
  // Get the scanner.
 
50461
  CScanner &scanner ();
 
50462
 
 
50463
  // Scan the file `file' or the source if given. When
 
50464
  // scanning a source the resulting unit gets the name `file'.
 
50465
  
 
50466
#line 50467 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50467
public: __attribute__((always_inline)) inline ::Puma::Unit * __exec_old_scanFile(const char * file,::Puma::Source * ,bool isFile);
 
50468
 
 
50469
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
50470
virtual Unit *scanFile (const char *file, Source * = (Source*)0, 
 
50471
                          bool isFile = true);
 
50472
        
 
50473
  // Scan a string. The resulting unit gets the name `name'.
 
50474
  // (and will not be registered at the unit manager!)
 
50475
  virtual Unit *scanString (const char *str, 
 
50476
                            const char *name = (const char*)0);
 
50477
 
 
50478
public: // Miscellaneous Functions
 
50479
 
 
50480
  // Give the filename needed to include a particular header file
 
50481
  Filename getInclString (Filename filename);
 
50482
 
 
50483
private:
 
50484
  // Map the type string from --size-type and --ptrdiff-type
 
50485
  // to real Puma type.
 
50486
  CTypeInfo *mapType (const char *) const;
 
50487
public:
 
50488
  typedef AC::TL<Puma::Config,AC::TL<Puma::CScanner,AC::TLE > > __AttrTypes;
 
50489
  const char *__attr_name (unsigned i) const {
 
50490
    static const char *names[] = { "_config", "_scanner" }; return names[i];
 
50491
  }
 
50492
  const void *__attr (unsigned __i) const {
 
50493
    switch (__i) { case 0: return &_config; case 1: return &_scanner; default: return 0; }
 
50494
  }
 
50495
#line 86 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
50496
};
 
50497
 
 
50498
inline Config &CProject::config () 
 
50499
 { return _config; }
 
50500
inline CScanner &CProject::scanner () 
 
50501
 { return _scanner; }
 
50502
 
 
50503
 
 
50504
} // namespace Puma
 
50505
 
 
50506
#endif /* __CProject_h__ */
 
50507
 
 
50508
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
50509
// This file is part of PUMA.
 
50510
// Copyright (C) 1999-2003  The PUMA developer team.
 
50511
//                                                                
 
50512
// This program is free software;  you can redistribute it and/or 
 
50513
// modify it under the terms of the GNU General Public License as 
 
50514
// published by the Free Software Foundation; either version 2 of 
 
50515
// the License, or (at your option) any later version.            
 
50516
//                                                                
 
50517
// This program is distributed in the hope that it will be useful,
 
50518
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
50519
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
50520
// GNU General Public License for more details.                   
 
50521
//                                                                
 
50522
// You should have received a copy of the GNU General Public      
 
50523
// License along with this program; if not, write to the Free     
 
50524
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
50525
// MA  02111-1307  USA                                            
 
50526
 
 
50527
#ifndef __FileUnit__
 
50528
#define __FileUnit__
 
50529
 
 
50530
// Special Unit for files. Knows its last save location and the
 
50531
// absolute path of the corresponding file.
 
50532
 
 
50533
 
 
50534
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
50535
namespace Puma {
 
50536
 
 
50537
 
 
50538
class Project;
 
50539
 
 
50540
 
 
50541
#line 50542 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50542
} // closed Puma
 
50543
class CCExprResolve;
 
50544
class CExprResolve;
 
50545
class WinIfExists;
 
50546
class WinImportHandler;
 
50547
class WinMacros;
 
50548
class WinAsm;
 
50549
class WinDeclSpecs;
 
50550
class WinMemberExplSpec;
 
50551
class WinTypeKeywords;
 
50552
class WinFriend;
 
50553
class ExtAC;
 
50554
class ExtACBuilderCoupling;
 
50555
class ExtACSyntaxCoupling;
 
50556
class ExtACTree;
 
50557
class ExtACKeywords;
 
50558
class ExtGnu;
 
50559
class PragmaOnceUnitState;
 
50560
class PragmaOnce;
 
50561
class CMatchSyntax;
 
50562
namespace Puma {
 
50563
 
 
50564
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
50565
class FileUnit : public Unit {
 
50566
#line 50567 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50567
  friend class ::CCExprResolve;
 
50568
  friend class ::CExprResolve;
 
50569
  friend class ::WinIfExists;
 
50570
  friend class ::WinImportHandler;
 
50571
  friend class ::WinMacros;
 
50572
  friend class ::WinAsm;
 
50573
  friend class ::WinDeclSpecs;
 
50574
  friend class ::WinMemberExplSpec;
 
50575
  friend class ::WinTypeKeywords;
 
50576
  friend class ::WinFriend;
 
50577
  friend class ::ExtAC;
 
50578
  friend class ::ExtACBuilderCoupling;
 
50579
  friend class ::ExtACSyntaxCoupling;
 
50580
  friend class ::ExtACTree;
 
50581
  friend class ::ExtACKeywords;
 
50582
  friend class ::ExtGnu;
 
50583
  friend class ::PragmaOnceUnitState;
 
50584
  friend class ::PragmaOnce;
 
50585
  friend class ::CMatchSyntax;
 
50586
 
 
50587
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
50588
 
 
50589
  char *_lastLocation; 
 
50590
  char *_absolutePath;
 
50591
  
 
50592
  Project *_project;
 
50593
  bool _isBelow;
 
50594
 
 
50595
public:
 
50596
  FileUnit ();
 
50597
  FileUnit (Unit &);
 
50598
  FileUnit (const List &);
 
50599
  virtual ~FileUnit ();
 
50600
            
 
50601
  virtual void name (const char *);        
 
50602
  void setLocation (const char *);    
 
50603
        
 
50604
  char *lastLocation () const;
 
50605
  char *absolutePath () const;
 
50606
  bool isFile () const;
 
50607
  
 
50608
  // Generates the absolute pathname to the file.
 
50609
  static char *absolutePath (const char *);
 
50610
  static char *resolvePath (const char *);
 
50611
  
 
50612
  // File belongs to given project?
 
50613
  bool belongsTo (Project &);
 
50614
public:
 
50615
  typedef AC::TL<char *,AC::TL<char *,AC::TL<Puma::Project *,AC::TL<bool,AC::TLE > > > > __AttrTypes;
 
50616
  const char *__attr_name (unsigned i) const {
 
50617
    static const char *names[] = { "_lastLocation", "_absolutePath", "_project", "_isBelow" }; return names[i];
 
50618
  }
 
50619
  const void *__attr (unsigned __i) const {
 
50620
    switch (__i) { case 0: return &_lastLocation; case 1: return &_absolutePath; case 2: return &_project; case 3: return &_isBelow; default: return 0; }
 
50621
  }
 
50622
#line 58 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
50623
};
 
50624
 
 
50625
inline FileUnit::FileUnit () : 
 
50626
  Unit (), 
 
50627
  _lastLocation ((char*)0), 
 
50628
  _absolutePath ((char*)0),
 
50629
  _project (0),
 
50630
  _isBelow (false)
 
50631
 {}
 
50632
inline FileUnit::FileUnit (Unit &unit) : 
 
50633
  Unit (unit), 
 
50634
  _lastLocation ((char*)0), 
 
50635
  _absolutePath ((char*)0),
 
50636
  _project (0),
 
50637
  _isBelow (false)
 
50638
 {}
 
50639
inline FileUnit::FileUnit (const List &list) : 
 
50640
  Unit (list), 
 
50641
  _lastLocation ((char*)0), 
 
50642
  _absolutePath ((char*)0),
 
50643
  _project (0),
 
50644
  _isBelow (false)  
 
50645
 {}
 
50646
inline FileUnit::~FileUnit () 
 
50647
 { if (_lastLocation) delete[] _lastLocation; 
 
50648
   if (_absolutePath) delete[] _absolutePath; }
 
50649
            
 
50650
inline char *FileUnit::lastLocation () const 
 
50651
 { return _lastLocation; }
 
50652
inline char *FileUnit::absolutePath () const 
 
50653
 { return _absolutePath; }
 
50654
inline bool FileUnit::isFile () const 
 
50655
 { return true; }
 
50656
 
 
50657
 
 
50658
} // namespace Puma
 
50659
 
 
50660
#endif /* __FileUnit__ */
 
50661
 
 
50662
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50663
// *****************************************
 
50664
// AspectC++ keyword handling in the scanner
 
50665
// *****************************************
 
50666
 
 
50667
#line 50668 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50668
class CCExprResolve;
 
50669
class CExprResolve;
 
50670
class WinIfExists;
 
50671
class WinImportHandler;
 
50672
class WinMacros;
 
50673
class WinAsm;
 
50674
class WinDeclSpecs;
 
50675
class WinMemberExplSpec;
 
50676
class WinTypeKeywords;
 
50677
class WinFriend;
 
50678
class ExtAC;
 
50679
class ExtACBuilderCoupling;
 
50680
class ExtACSyntaxCoupling;
 
50681
class ExtACTree;
 
50682
class ExtGnu;
 
50683
class PragmaOnceUnitState;
 
50684
class PragmaOnce;
 
50685
class CMatchSyntax;
 
50686
 
 
50687
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50688
class ExtACKeywords {
 
50689
#line 50690 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50690
 
 
50691
public:
 
50692
  static ExtACKeywords *aspectof () {
 
50693
    static ExtACKeywords __instance;
 
50694
    return &__instance;
 
50695
  }
 
50696
  static ExtACKeywords *aspectOf () {
 
50697
    return aspectof ();
 
50698
  }
 
50699
private:
 
50700
 
 
50701
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50702
 
 
50703
#line 50704 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50704
  friend class ::CCExprResolve;
 
50705
  friend class ::CExprResolve;
 
50706
  friend class ::WinIfExists;
 
50707
  friend class ::WinImportHandler;
 
50708
  friend class ::WinMacros;
 
50709
  friend class ::WinAsm;
 
50710
  friend class ::WinDeclSpecs;
 
50711
  friend class ::WinMemberExplSpec;
 
50712
  friend class ::WinTypeKeywords;
 
50713
  friend class ::WinFriend;
 
50714
  friend class ::ExtAC;
 
50715
  friend class ::ExtACBuilderCoupling;
 
50716
  friend class ::ExtACSyntaxCoupling;
 
50717
  friend class ::ExtACTree;
 
50718
  friend class ::ExtGnu;
 
50719
  friend class ::PragmaOnceUnitState;
 
50720
  friend class ::PragmaOnce;
 
50721
  friend class ::CMatchSyntax;
 
50722
 
 
50723
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50724
 
 
50725
 
 
50726
  bool _prj_keywords;
 
50727
  Puma::CProject *_project; // active project
 
50728
  
 
50729
protected:
 
50730
  ExtACKeywords () : _prj_keywords (false) {}
 
50731
  
 
50732
public:
 
50733
  // allow/forbid AspectC++ keywords in normal project files
 
50734
  void prj_keywords (bool kw) { _prj_keywords = kw; }
 
50735
  
 
50736
  
 
50737
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50738
 
 
50739
public: void __a0_before 
 
50740
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50741
 
 
50742
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50743
(Puma::CProject &project)
 
50744
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50745
 {
 
50746
    _project = &project;
 
50747
  }
 
50748
  
 
50749
  
 
50750
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50751
 
 
50752
public: template<class JoinPoint> void __a1_before 
 
50753
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50754
 
 
50755
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50756
(JoinPoint *tjp, Puma::Unit &unit)
 
50757
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50758
 {
 
50759
#line 50760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50760
 
 
50761
  typedef typename JoinPoint::That __JP_That;
 
50762
  typedef typename JoinPoint::Target __JP_Target;
 
50763
  typedef typename JoinPoint::Result __JP_Result;
 
50764
 
 
50765
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50766
 
 
50767
    if (!unit.isFile ())
 
50768
      return;
 
50769
      
 
50770
    bool ac_kw = _prj_keywords;
 
50771
    // in external files the AspectC++ keywords are always identifiers
 
50772
    if (!((Puma::FileUnit*)&unit)->belongsTo (*_project)) {
 
50773
      ac_kw = false;
 
50774
    }
 
50775
    // in aspect headers keywords are keywords
 
50776
    else if (unit.name () &&
 
50777
      strcmp (unit.name () + strlen (unit.name ()) - 3, ".ah") == 0) {
 
50778
      ac_kw = true;
 
50779
    }
 
50780
    // finally the right flag
 
50781
    tjp->that ()->allow_aspectc (ac_kw);
 
50782
  }
 
50783
  
 
50784
  
 
50785
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50786
 
 
50787
public: template<class JoinPoint> void __a2_before 
 
50788
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50789
 
 
50790
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50791
(JoinPoint *tjp)
 
50792
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50793
 {
 
50794
#line 50795 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50795
 
 
50796
  typedef typename JoinPoint::That __JP_That;
 
50797
  typedef typename JoinPoint::Target __JP_Target;
 
50798
  typedef typename JoinPoint::Result __JP_Result;
 
50799
 
 
50800
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50801
 
 
50802
    _project = tjp->that ();
 
50803
  }
 
50804
public:
 
50805
  typedef AC::TL<bool,AC::TL<Puma::CProject *,AC::TLE > > __AttrTypes;
 
50806
  const char *__attr_name (unsigned i) const {
 
50807
    static const char *names[] = { "_prj_keywords", "_project" }; return names[i];
 
50808
  }
 
50809
  const void *__attr (unsigned __i) const {
 
50810
    switch (__i) { case 0: return &_prj_keywords; case 1: return &_project; default: return 0; }
 
50811
  }
 
50812
#line 72 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50813
};
 
50814
#line 50815 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50815
 
 
50816
namespace AC {
 
50817
  template <class JoinPoint>
 
50818
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a0_before (JoinPoint *tjp) {
 
50819
    typedef typename JoinPoint::Binding_ExtACKeywords_ExtACKeywords_a0_before::template Arg<0> Arg0;
 
50820
    ::ExtACKeywords::aspectof()->__a0_before ((Puma::CProject &)Arg0::val (tjp));
 
50821
  }
 
50822
  template <class JoinPoint>
 
50823
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a1_before (JoinPoint *tjp) {
 
50824
    typedef typename JoinPoint::Binding_ExtACKeywords_ExtACKeywords_a1_before::template Arg<0> Arg0;
 
50825
    ::ExtACKeywords::aspectof()->__a1_before (tjp, (Puma::Unit &)Arg0::val (tjp));
 
50826
  }
 
50827
  template <class JoinPoint>
 
50828
  __attribute((always_inline)) inline void invoke_ExtACKeywords_ExtACKeywords_a2_before (JoinPoint *tjp) {
 
50829
    ::ExtACKeywords::aspectof()->__a2_before (tjp);
 
50830
  }
 
50831
 
50832
 
 
50833
#line 72 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
50834
  
 
50835
 
 
50836
#endif /* __ext_ac_keywords_ah__ */
 
50837
 
 
50838
#line 111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
50839
#endif
 
50840
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
50841
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
50842
 
 
50843
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
50844
// This file is part of PUMA.
 
50845
// Copyright (C) 1999-2003  The PUMA developer team.
 
50846
//                                                                
 
50847
// This program is free software;  you can redistribute it and/or 
 
50848
// modify it under the terms of the GNU General Public License as 
 
50849
// published by the Free Software Foundation; either version 2 of 
 
50850
// the License, or (at your option) any later version.            
 
50851
//                                                                
 
50852
// This program is distributed in the hope that it will be useful,
 
50853
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
50854
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
50855
// GNU General Public License for more details.                   
 
50856
//                                                                
 
50857
// You should have received a copy of the GNU General Public      
 
50858
// License along with this program; if not, write to the Free     
 
50859
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
50860
// MA  02111-1307  USA                                            
 
50861
 
 
50862
#ifndef __ext_gnu_h__
 
50863
#define __ext_gnu_h__
 
50864
 
 
50865
 
 
50866
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
50867
// This file is part of PUMA.
 
50868
// Copyright (C) 1999-2003  The PUMA developer team.
 
50869
//                                                                
 
50870
// This program is free software;  you can redistribute it and/or 
 
50871
// modify it under the terms of the GNU General Public License as 
 
50872
// published by the Free Software Foundation; either version 2 of 
 
50873
// the License, or (at your option) any later version.            
 
50874
//                                                                
 
50875
// This program is distributed in the hope that it will be useful,
 
50876
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
50877
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
50878
// GNU General Public License for more details.                   
 
50879
//                                                                
 
50880
// You should have received a copy of the GNU General Public      
 
50881
// License along with this program; if not, write to the Free     
 
50882
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
50883
// MA  02111-1307  USA                                            
 
50884
 
 
50885
#ifndef __gnu_c_tree_h__
 
50886
#define __gnu_c_tree_h__
 
50887
 
 
50888
/** \file
 
50889
 *  GNU C/C++ specific syntax tree classes. */
 
50890
 
 
50891
namespace Puma {
 
50892
 
 
50893
// Syntax tree node hierarchy:
 
50894
class   CT_GnuAsmSpec;       // derived from CTree
 
50895
class   CT_GnuAsmDef;        // derived from CT_AsmDef
 
50896
class   CT_GnuAsmOperand;    // derived from CTree
 
50897
class     CT_GnuAsmOperands; // derived from CT_List
 
50898
class     CT_GnuAsmClobbers; // derived from CT_List
 
50899
class   CT_GnuStatementExpr; // derived from CT_Expression
 
50900
class   CT_GnuTypeof;        // derived from CT_DeclSpec
 
50901
 
 
50902
} // namespace Puma
 
50903
 
 
50904
 
 
50905
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50906
 
 
50907
#line 50908 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
50908
 
 
50909
#ifndef __ac_fwd_ExtACTree__
 
50910
#define __ac_fwd_ExtACTree__
 
50911
class ExtACTree;
 
50912
namespace AC {
 
50913
  template <class JoinPoint>
 
50914
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp);
 
50915
  template <class JoinPoint>
 
50916
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp);
 
50917
}
 
50918
#endif
 
50919
 
 
50920
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50921
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
50922
#endif
 
50923
 
 
50924
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50925
// This file is part of PUMA.
 
50926
// Copyright (C) 1999-2003  The PUMA developer team.
 
50927
//                                                                
 
50928
// This program is free software;  you can redistribute it and/or 
 
50929
// modify it under the terms of the GNU General Public License as 
 
50930
// published by the Free Software Foundation; either version 2 of 
 
50931
// the License, or (at your option) any later version.            
 
50932
//                                                                
 
50933
// This program is distributed in the hope that it will be useful,
 
50934
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
50935
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
50936
// GNU General Public License for more details.                   
 
50937
//                                                                
 
50938
// You should have received a copy of the GNU General Public      
 
50939
// License along with this program; if not, write to the Free     
 
50940
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
50941
// MA  02111-1307  USA                                            
 
50942
 
 
50943
#ifndef __CTree_h__
 
50944
#define __CTree_h__
 
50945
 
 
50946
/** \file 
 
50947
 *  C/C++ syntax tree classes. */
 
50948
 
 
50949
namespace Puma {
 
50950
 
 
50951
 
 
50952
// Syntax tree node hierarchy:
 
50953
class CTree;
 
50954
class   CT_Statement;          
 
50955
class     CT_LabelStmt;
 
50956
class     CT_IfStmt;
 
50957
class     CT_IfElseStmt;
 
50958
class     CT_SwitchStmt;
 
50959
class     CT_BreakStmt;
 
50960
class     CT_ExprStmt;
 
50961
class     CT_WhileStmt;
 
50962
class     CT_DoStmt;
 
50963
class     CT_ForStmt;
 
50964
class     CT_ContinueStmt;
 
50965
class     CT_ReturnStmt;
 
50966
class     CT_GotoStmt;
 
50967
class     CT_DeclStmt;
 
50968
class     CT_CaseStmt;
 
50969
class     CT_DefaultStmt;
 
50970
class     CT_TryStmt;
 
50971
class   CT_Expression;
 
50972
class     CT_Call;
 
50973
class       CT_CallExpr;
 
50974
class       CT_ImplicitCall;
 
50975
class     CT_ThrowExpr;
 
50976
class     CT_NewExpr;
 
50977
class     CT_DeleteExpr;
 
50978
class     CT_ConstructExpr;
 
50979
class     CT_Integer;
 
50980
class     CT_Character;
 
50981
class       CT_WideCharacter;
 
50982
class     CT_Float;
 
50983
class     CT_Bool;
 
50984
class     CT_BracedExpr;
 
50985
class     CT_BinaryExpr;
 
50986
class       CT_MembPtrExpr;
 
50987
class         CT_MembRefExpr;
 
50988
class     CT_UnaryExpr;
 
50989
class       CT_PostfixExpr;
 
50990
class       CT_AddrExpr;
 
50991
class       CT_DerefExpr;
 
50992
class     CT_IfThenExpr;
 
50993
class     CT_CmpdLiteral;
 
50994
class     CT_IndexExpr;
 
50995
class     CT_CastExpr;
 
50996
class     CT_StaticCast;
 
50997
class       CT_ConstCast;
 
50998
class       CT_ReintCast;
 
50999
class       CT_DynamicCast;
 
51000
class     CT_TypeidExpr;
 
51001
class     CT_SizeofExpr;
 
51002
class     CT_MembDesignator;
 
51003
class     CT_IndexDesignator;
 
51004
class     CT_ImplicitCast;
 
51005
class     CT_MembInit;
 
51006
class   CT_DeclSpec;
 
51007
class     CT_PrimDeclSpec;
 
51008
class     CT_NamedType;
 
51009
class     CT_ClassSpec;
 
51010
class       CT_UnionSpec;
 
51011
class       CT_EnumSpec;
 
51012
class     CT_ExceptionSpec;
 
51013
class   CT_Declarator;
 
51014
class     CT_InitDeclarator;
 
51015
class     CT_BracedDeclarator;
 
51016
class     CT_ArrayDeclarator;
 
51017
class     CT_FctDeclarator;
 
51018
class     CT_RefDeclarator;
 
51019
class     CT_PtrDeclarator;
 
51020
class     CT_MembPtrDeclarator;
 
51021
class     CT_BitFieldDeclarator;
 
51022
class   CT_Decl;
 
51023
class     CT_ObjDecl;
 
51024
class     CT_ArgDecl;
 
51025
class     CT_AccessDecl;
 
51026
class       CT_UsingDecl;
 
51027
class     CT_FctDef;
 
51028
class     CT_AsmDef;
 
51029
class     CT_EnumDef;
 
51030
class     CT_ClassDef;
 
51031
class       CT_UnionDef;
 
51032
class     CT_Enumerator;
 
51033
class     CT_LinkageSpec;
 
51034
class     CT_Handler;
 
51035
class     CT_TemplateDecl;
 
51036
class     CT_TemplateParamDecl;
 
51037
class       CT_TypeParamDecl;
 
51038
class       CT_NonTypeParamDecl;
 
51039
class     CT_NamespaceDef;
 
51040
class     CT_NamespaceAliasDef;
 
51041
class     CT_UsingDirective;
 
51042
class     CT_Condition;
 
51043
class   CT_List;
 
51044
class     CT_CmpdStmt;
 
51045
class     CT_DeclSpecSeq;
 
51046
class     CT_HandlerSeq;
 
51047
class     CT_DesignatorSeq;
 
51048
class     CT_DeclList;
 
51049
class       CT_Program;
 
51050
class       CT_ArgDeclList;
 
51051
class         CT_ArgNameList;
 
51052
class       CT_ArgDeclSeq;
 
51053
class       CT_MembList;
 
51054
class     CT_ExprList;
 
51055
class     CT_DeclaratorList;
 
51056
class     CT_BaseSpecList;
 
51057
class     CT_MembInitList;
 
51058
class     CT_SimpleName;
 
51059
class       CT_SpecialName;
 
51060
class         CT_PrivateName;
 
51061
class         CT_OperatorName;
 
51062
class         CT_DestructorName;
 
51063
class         CT_ConversionName;
 
51064
class         CT_TemplateName;
 
51065
class       CT_QualName;
 
51066
class         CT_RootQualName;
 
51067
class     CT_String;
 
51068
class       CT_WideString;
 
51069
class     CT_TemplateParamList;
 
51070
class     CT_TemplateArgList;
 
51071
class   CT_Token;
 
51072
class   CT_Error;
 
51073
class   CT_BaseSpec;
 
51074
class   CT_AccessSpec;
 
51075
class   CT_ArrayDelimiter;
 
51076
class   CT_Any;
 
51077
class   CT_AnyList;
 
51078
class   CT_AnyExtension;
 
51079
class   CT_AnyCondition;
 
51080
 
 
51081
 
 
51082
} // namespace Puma
 
51083
 
 
51084
#include "Puma/ErrorSeverity.h"
 
51085
#include "Puma/CSemObject.h"
 
51086
#include "Puma/CSemScope.h"
 
51087
#include "Puma/CSemValue.h"
 
51088
#include "Puma/CExprValue.h"
 
51089
#include "Puma/CStrLiteral.h"
 
51090
#include "Puma/CTypeInfo.h"
 
51091
#include "Puma/Printable.h"
 
51092
#include "Puma/CTokens.h"
 
51093
#include "Puma/Token.h"
 
51094
 
 
51095
#include <iostream>
 
51096
#include <string.h>
 
51097
using namespace std;
 
51098
 
 
51099
namespace Puma {
 
51100
 
 
51101
 
 
51102
class ErrorStream;
 
51103
class CObjectInfo;
 
51104
class CStructure;
 
51105
 
 
51106
/*****************************************************************************/
 
51107
/*                                                                           */
 
51108
/*                    S y n t a x  t r e e  n o d e s                        */
 
51109
/*                                                                           */
 
51110
/*****************************************************************************/
 
51111
 
 
51112
/** \class CTree CTree.h Puma/CTree.h
 
51113
 *  Base class for all C/C++ syntax tree classes. 
 
51114
 *
 
51115
 *  The syntax tree is the result of the syntactic analysis of the input source 
 
51116
 *  code representing its syntactic structure according to the accepted grammar
 
51117
 *  (see class Syntax). 
 
51118
 *
 
51119
 *  Objects of this class and classes derived from this class are created by 
 
51120
 *  the tree builder component of %Puma during the parse process. A syntax tree 
 
51121
 *  shall be destroyed using the tree builder that has created it by calling its 
 
51122
 *  method Builder::destroy(CTree*) with the root node of the syntax tree as its 
 
51123
 *  argument.
 
51124
 *  
 
51125
 *  The navigation in the syntax tree is done using the methods CTree::Parent(), 
 
51126
 *  CTree::Sons(), and CTree::Son(int) const. In a syntax tree "sons" are 
 
51127
 *  understood as the syntactic child nodes of a syntax tree node, whereas 
 
51128
 *  "daughters" are understood are their semantic child nodes. 
 
51129
 *
 
51130
 *  Another way to traverse a syntax tree is to implement an own tree visitor 
 
51131
 *  based on class Puma::CVisitor. This is recommended especially for larger 
 
51132
 *  syntax trees.
 
51133
 *
 
51134
 *  A syntax tree node can be identified by comparing its node name with the node 
 
51135
 *  identifier of the expected syntax tree node:
 
51136
 *  \code if (node->NodeName() == Puma::CT_BinaryExpr::NodeId()) ... \endcode
 
51137
 *  
 
51138
 *  Based on the syntax tree further semantic analyses can be performed. Semantic 
 
51139
 *  information, like scope, value, type, and object information, is linked into 
 
51140
 *  the syntax tree. It can be accessed using the methods CTree::SemScope(), 
 
51141
 *  CTree::SemValue(), and CTree::SemObject(). Some nodes provide short-cuts to
 
51142
 *  the semantic type and value information by implementing the methods 
 
51143
 *  CTree::Type() and CTree::Value().
 
51144
 *
 
51145
 *  The information of the syntax tree can be used to perform high-level 
 
51146
 *  transformations of the source code (see class ManipCommander). */
 
51147
 
 
51148
#line 51149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51149
} // closed Puma
 
51150
class CCExprResolve;
 
51151
class CExprResolve;
 
51152
class WinIfExists;
 
51153
class WinImportHandler;
 
51154
class WinMacros;
 
51155
class WinAsm;
 
51156
class WinDeclSpecs;
 
51157
class WinMemberExplSpec;
 
51158
class WinTypeKeywords;
 
51159
class WinFriend;
 
51160
class ExtAC;
 
51161
class ExtACBuilderCoupling;
 
51162
class ExtACSyntaxCoupling;
 
51163
class ExtACTree;
 
51164
class ExtACKeywords;
 
51165
class ExtGnu;
 
51166
class PragmaOnceUnitState;
 
51167
class PragmaOnce;
 
51168
class CMatchSyntax;
 
51169
namespace Puma {
 
51170
 
 
51171
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51172
 
 
51173
#line 51174 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51174
} // closed Puma
 
51175
 
 
51176
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51177
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51178
#include "CCExprResolveH.ah"
 
51179
#endif
 
51180
namespace Puma {
 
51181
 
 
51182
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51183
 
 
51184
#line 51185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51185
} // closed Puma
 
51186
 
 
51187
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51188
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51189
#include "CExprResolveH.ah"
 
51190
#endif
 
51191
namespace Puma {
 
51192
 
 
51193
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51194
class CTree {
 
51195
#line 51196 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51196
  friend class ::CCExprResolve;
 
51197
  friend class ::CExprResolve;
 
51198
  friend class ::WinIfExists;
 
51199
  friend class ::WinImportHandler;
 
51200
  friend class ::WinMacros;
 
51201
  friend class ::WinAsm;
 
51202
  friend class ::WinDeclSpecs;
 
51203
  friend class ::WinMemberExplSpec;
 
51204
  friend class ::WinTypeKeywords;
 
51205
  friend class ::WinFriend;
 
51206
  friend class ::ExtAC;
 
51207
  friend class ::ExtACBuilderCoupling;
 
51208
  friend class ::ExtACSyntaxCoupling;
 
51209
  friend class ::ExtACTree;
 
51210
  friend class ::ExtACKeywords;
 
51211
  friend class ::ExtGnu;
 
51212
  friend class ::PragmaOnceUnitState;
 
51213
  friend class ::PragmaOnce;
 
51214
  friend class ::CMatchSyntax;
 
51215
 
 
51216
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51217
 
 
51218
  CTree * _parent;
 
51219
 
 
51220
public:
 
51221
  /*DEBUG*/static int alloc;
 
51222
  /*DEBUG*/static int release;
 
51223
 
 
51224
protected:
 
51225
  /** Get the n-th son from given sons array. Skips empty (NULL) array items.
 
51226
   *  \param sons The sons array.
 
51227
   *  \param len Length of the sons array.
 
51228
   *  \param n Index of the son.
 
51229
   *  \return The n-th son or NULL. */
 
51230
  CTree *Son (CTree * const *sons, int len, int n) const;
 
51231
  /** Get the number of sons in the given sons array. Skips empty (NULL) array items.
 
51232
   *  \param sons The sons array.
 
51233
   *  \param len Length of the sons array. */
 
51234
  int Sons (CTree * const *sons, int len) const;
 
51235
  /** Replace a son.
 
51236
   *  \param sons The sons array.
 
51237
   *  \param len Length of the sons array.
 
51238
   *  \param old_son The son to replace.
 
51239
   *  \param new_son The new son. */
 
51240
  void ReplaceSon (CTree **sons, int len, CTree *old_son, CTree *new_son);
 
51241
  /** Replace a son if it equals the given son.
 
51242
   *  \param son The actual son.
 
51243
   *  \param old_son The son to replace, must match the actual son.
 
51244
   *  \param new_son The new son, overwrites the actual son. */
 
51245
  void ReplaceSon (CTree *&son, CTree *old_son, CTree *new_son);
 
51246
  /** Add a new son.
 
51247
   *  \param son The actual son.
 
51248
   *  \param new_son The new son, overwrites the actual son. */
 
51249
  void AddSon (CTree *&son, CTree *new_son);
 
51250
  /** Set the parent tree node.
 
51251
   *  \param parent The new parent tree node. */
 
51252
  void SetParent (const CTree *parent) { _parent = (CTree*)parent; }
 
51253
  /** Set the parent tree node of the given tree node.
 
51254
   *  \param node The tree node.
 
51255
   *  \param parent The new parent. */
 
51256
  void SetParent (CTree *node, const CTree *parent) { node->_parent = (CTree*)parent; }
 
51257
  
 
51258
protected:
 
51259
  /** Default constructor. */
 
51260
  CTree () : _parent(0) { /*DEBUG*/alloc++; }
 
51261
 
 
51262
public:
 
51263
  /** Destructor. */
 
51264
  virtual ~CTree () { /*DEBUG*/release++; }
 
51265
  /** Get the number of sons. */
 
51266
  virtual int Sons () const = 0;
 
51267
  /** Get the n-th son.
 
51268
   *  \param n The index of the son.
 
51269
   *  \return The n-th son or NULL. */
 
51270
  virtual CTree *Son (int n) const { return (CTree*)0; }
 
51271
  /** Get the node name (node identifier). */
 
51272
  virtual const char *NodeName () const = 0;
 
51273
  /** Get the first token of the syntactic construct represented by this sub-tree.
 
51274
   *  \return The token or NULL. */
 
51275
  virtual Token *token () const;
 
51276
  /** Get the last token of the syntactic construct represented by this sub-tree.
 
51277
   *  \return The token or NULL. */
 
51278
  virtual Token *end_token () const;
 
51279
  /** Get the CT_Token node of the first token of the syntactic construct represented by this sub-tree.
 
51280
   *  \return The token node or NULL. */
 
51281
  virtual CT_Token *token_node () const;
 
51282
  /** Get the CT_Token node of the last token of the syntactic construct represented by this sub-tree.
 
51283
   *  \return The token node or NULL. */
 
51284
  virtual CT_Token *end_token_node () const;
 
51285
  /** Replace a son.
 
51286
   *  \param old_son The son to replace.
 
51287
   *  \param new_son The son with which to replace. */
 
51288
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {}
 
51289
  /** Get the parent node.
 
51290
   *  \return The parent node or NULL. */
 
51291
  virtual CTree *Parent () const { return (CTree*)_parent; }
 
51292
 
 
51293
public: // semantic information
 
51294
  /** Get the semantic type of the node.
 
51295
   *  \return The type object or NULL. */
 
51296
  virtual CTypeInfo *Type () const { return (CTypeInfo*)0; }
 
51297
  /** Get the calculated value of the expression.
 
51298
   *  \return The value object or NULL. */
 
51299
  virtual CExprValue *Value () const { return (CExprValue*)0; }
 
51300
  
 
51301
  /** Get the scope opened by the node.
 
51302
   *  \return The scope object or NULL. */
 
51303
  virtual CSemScope *SemScope () const { return (CSemScope*)0; }
 
51304
  /** Get the semantic value of the node.
 
51305
   *  \return The value object or NULL. */
 
51306
  virtual CSemValue *SemValue () const { return (CSemValue*)0; }
 
51307
  /** Get the semantic information of the node.
 
51308
   *  \return The semantic object or NULL. */
 
51309
  virtual CSemObject *SemObject () const { return (CSemObject*)0; }
 
51310
  
 
51311
public: // node classification function
 
51312
  /** Get a pointer to CT_SimpleName if the current node represents a name.
 
51313
   *  \return The CT_SimpleName node or NULL. */
 
51314
  virtual CT_SimpleName *IsSimpleName () { return 0; }
 
51315
  /** Get a pointer to CT_String if the current node represents a string.
 
51316
   *  \return The CT_String node or NULL. */
 
51317
  virtual CT_String *IsString () { return 0; }
 
51318
  /** Get a pointer to CT_Declarator if the current node represents a declarator.
 
51319
   *  \return The CT_Declarator pointer or NULL. */
 
51320
  virtual CT_Declarator *IsDeclarator () { return 0; }
 
51321
  /** Get a pointer to CT_Statement if the current node represents a statement.
 
51322
   *  \return The CT_Statement pointer or NULL. */
 
51323
  virtual CT_Statement *IsStatement () { return 0; }
 
51324
  /** Get a pointer to CT_Expression if the current node represents a expression.
 
51325
   *  \return The CT_Expression pointer or NULL. */
 
51326
  virtual CT_Expression *IsExpression () { return 0; }
 
51327
  /** Get a pointer to CT_Decl if the current node represents a declaration.
 
51328
   *  \return The CT_Decl pointer or NULL. */
 
51329
  virtual CT_Decl *IsDeclaration () { return 0; }
 
51330
  /** Get a pointer to CT_Call if the current node represents a call expression.
 
51331
   *  \return The CT_Call pointer or NULL. */
 
51332
  virtual CT_Call *IsCall () { return 0; }
 
51333
   private:
 
51334
  typedef CTree CCExprResolveCTree;
 
51335
 
 
51336
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
51337
 public :
 
51338
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
51339
  typedef CTree CExprResolveCTree;
 
51340
 
 
51341
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
51342
 public :
 
51343
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
51344
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
51345
  const char *__attr_name (unsigned i) const {
 
51346
    static const char *names[] = { "_parent" }; return names[i];
 
51347
  }
 
51348
  const void *__attr (unsigned __i) const {
 
51349
    switch (__i) { case 0: return &_parent; default: return 0; }
 
51350
  }
 
51351
#line 339 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51352
};
 
51353
 
 
51354
/** \class CT_Error CTree.h Puma/CTree.h
 
51355
 *  Error tree node that is inserted into the tree for syntactic constructs
 
51356
 *  that could not be parsed. */
 
51357
 
 
51358
#line 51359 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51359
} // closed Puma
 
51360
class CCExprResolve;
 
51361
class CExprResolve;
 
51362
class WinIfExists;
 
51363
class WinImportHandler;
 
51364
class WinMacros;
 
51365
class WinAsm;
 
51366
class WinDeclSpecs;
 
51367
class WinMemberExplSpec;
 
51368
class WinTypeKeywords;
 
51369
class WinFriend;
 
51370
class ExtAC;
 
51371
class ExtACBuilderCoupling;
 
51372
class ExtACSyntaxCoupling;
 
51373
class ExtACTree;
 
51374
class ExtACKeywords;
 
51375
class ExtGnu;
 
51376
class PragmaOnceUnitState;
 
51377
class PragmaOnce;
 
51378
class CMatchSyntax;
 
51379
namespace Puma {
 
51380
 
 
51381
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51382
class CT_Error : public CTree {
 
51383
#line 51384 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51384
  friend class ::CCExprResolve;
 
51385
  friend class ::CExprResolve;
 
51386
  friend class ::WinIfExists;
 
51387
  friend class ::WinImportHandler;
 
51388
  friend class ::WinMacros;
 
51389
  friend class ::WinAsm;
 
51390
  friend class ::WinDeclSpecs;
 
51391
  friend class ::WinMemberExplSpec;
 
51392
  friend class ::WinTypeKeywords;
 
51393
  friend class ::WinFriend;
 
51394
  friend class ::ExtAC;
 
51395
  friend class ::ExtACBuilderCoupling;
 
51396
  friend class ::ExtACSyntaxCoupling;
 
51397
  friend class ::ExtACTree;
 
51398
  friend class ::ExtACKeywords;
 
51399
  friend class ::ExtGnu;
 
51400
  friend class ::PragmaOnceUnitState;
 
51401
  friend class ::PragmaOnce;
 
51402
  friend class ::CMatchSyntax;
 
51403
 
 
51404
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51405
 
 
51406
public:
 
51407
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51408
  static const char *NodeId ();
 
51409
  /** Get the name of the node. Can be compared with NodeId(). */
 
51410
  const char *NodeName () const { return NodeId (); }
 
51411
  /** Get the number of sons. */
 
51412
  int Sons () const { return 0; }
 
51413
public:
 
51414
  typedef AC::TLE __AttrTypes;
 
51415
  const char *__attr_name (unsigned i) const { return 0; }
 
51416
  const void *__attr (unsigned __i) const { return 0; }
 
51417
#line 352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51418
};
 
51419
 
 
51420
/** \class CT_Token CTree.h Puma/CTree.h
 
51421
 *  Tree node representing a single token in the source code. */
 
51422
 
 
51423
#line 51424 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51424
} // closed Puma
 
51425
class CCExprResolve;
 
51426
class CExprResolve;
 
51427
class WinIfExists;
 
51428
class WinImportHandler;
 
51429
class WinMacros;
 
51430
class WinAsm;
 
51431
class WinDeclSpecs;
 
51432
class WinMemberExplSpec;
 
51433
class WinTypeKeywords;
 
51434
class WinFriend;
 
51435
class ExtAC;
 
51436
class ExtACBuilderCoupling;
 
51437
class ExtACSyntaxCoupling;
 
51438
class ExtACTree;
 
51439
class ExtACKeywords;
 
51440
class ExtGnu;
 
51441
class PragmaOnceUnitState;
 
51442
class PragmaOnce;
 
51443
class CMatchSyntax;
 
51444
namespace Puma {
 
51445
 
 
51446
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51447
class CT_Token : public CTree {
 
51448
#line 51449 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51449
  friend class ::CCExprResolve;
 
51450
  friend class ::CExprResolve;
 
51451
  friend class ::WinIfExists;
 
51452
  friend class ::WinImportHandler;
 
51453
  friend class ::WinMacros;
 
51454
  friend class ::WinAsm;
 
51455
  friend class ::WinDeclSpecs;
 
51456
  friend class ::WinMemberExplSpec;
 
51457
  friend class ::WinTypeKeywords;
 
51458
  friend class ::WinFriend;
 
51459
  friend class ::ExtAC;
 
51460
  friend class ::ExtACBuilderCoupling;
 
51461
  friend class ::ExtACSyntaxCoupling;
 
51462
  friend class ::ExtACTree;
 
51463
  friend class ::ExtACKeywords;
 
51464
  friend class ::ExtGnu;
 
51465
  friend class ::PragmaOnceUnitState;
 
51466
  friend class ::PragmaOnce;
 
51467
  friend class ::CMatchSyntax;
 
51468
 
 
51469
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51470
 
 
51471
  Token *_token;
 
51472
  unsigned long int _number;
 
51473
  
 
51474
public:
 
51475
  /** Constructor. 
 
51476
   *  \param token The represented token.
 
51477
   *  \param number The token number (a consecutive number). */
 
51478
  CT_Token (Token *token, unsigned long int number = 0) : 
 
51479
    _token (token), _number (number) {}
 
51480
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51481
  static const char *NodeId ();
 
51482
  /** Get the name of the node. Can be compared with NodeId(). */
 
51483
  const char *NodeName () const { return NodeId (); }
 
51484
  /** Get the number of sons. */
 
51485
  int Sons () const { return 0; }
 
51486
  /** Get the represented token. */
 
51487
  Token *token () const { return _token; }
 
51488
  /** Get the represented token. */
 
51489
  Token *end_token () const { return _token; }
 
51490
  /** Get this. */
 
51491
  CT_Token *token_node () const { return (CT_Token*)this; }
 
51492
  /** Get this. */
 
51493
  CT_Token *end_token_node () const { return (CT_Token*)this; }
 
51494
  /** Set the token number. 
 
51495
   *  \param number The token number. */ 
 
51496
  void Number (unsigned long int number) { _number = number; }
 
51497
  /** Get the token number. Can be used to indentify this token. */
 
51498
  unsigned long int Number () const { return _number; }
 
51499
  
 
51500
public:
 
51501
  /** Own new operator reusing memory. */
 
51502
  void *operator new (size_t);
 
51503
  /** Own delete operator. */
 
51504
  void operator delete (void *);
 
51505
public:
 
51506
  typedef AC::TL<Puma::Token *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
51507
  const char *__attr_name (unsigned i) const {
 
51508
    static const char *names[] = { "_token", "_number" }; return names[i];
 
51509
  }
 
51510
  const void *__attr (unsigned __i) const {
 
51511
    switch (__i) { case 0: return &_token; case 1: return &_number; default: return 0; }
 
51512
  }
 
51513
#line 391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51514
};
 
51515
 
 
51516
/*****************************************************************************/
 
51517
/*                                                                           */
 
51518
/*                              List nodes                                   */
 
51519
/*                                                                           */
 
51520
/*****************************************************************************/
 
51521
 
 
51522
/** \class CT_List CTree.h Puma/CTree.h
 
51523
 *  Base class for tree nodes representing lists. */
 
51524
 
 
51525
#line 51526 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51526
} // closed Puma
 
51527
class CCExprResolve;
 
51528
class CExprResolve;
 
51529
class WinIfExists;
 
51530
class WinImportHandler;
 
51531
class WinMacros;
 
51532
class WinAsm;
 
51533
class WinDeclSpecs;
 
51534
class WinMemberExplSpec;
 
51535
class WinTypeKeywords;
 
51536
class WinFriend;
 
51537
class ExtAC;
 
51538
class ExtACBuilderCoupling;
 
51539
class ExtACSyntaxCoupling;
 
51540
class ExtACTree;
 
51541
class ExtACKeywords;
 
51542
class ExtGnu;
 
51543
class PragmaOnceUnitState;
 
51544
class PragmaOnce;
 
51545
class CMatchSyntax;
 
51546
namespace Puma {
 
51547
 
 
51548
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51549
class CT_List : public CTree {
 
51550
#line 51551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51551
  friend class ::CCExprResolve;
 
51552
  friend class ::CExprResolve;
 
51553
  friend class ::WinIfExists;
 
51554
  friend class ::WinImportHandler;
 
51555
  friend class ::WinMacros;
 
51556
  friend class ::WinAsm;
 
51557
  friend class ::WinDeclSpecs;
 
51558
  friend class ::WinMemberExplSpec;
 
51559
  friend class ::WinTypeKeywords;
 
51560
  friend class ::WinFriend;
 
51561
  friend class ::ExtAC;
 
51562
  friend class ::ExtACBuilderCoupling;
 
51563
  friend class ::ExtACSyntaxCoupling;
 
51564
  friend class ::ExtACTree;
 
51565
  friend class ::ExtACKeywords;
 
51566
  friend class ::ExtGnu;
 
51567
  friend class ::PragmaOnceUnitState;
 
51568
  friend class ::PragmaOnce;
 
51569
  friend class ::CMatchSyntax;
 
51570
 
 
51571
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51572
 
 
51573
  Array<CTree*> _sons;
 
51574
  int _properties;
 
51575
 
 
51576
protected:
 
51577
  /** Constructor.
 
51578
   *  \param size The initial list size.
 
51579
   *  \param incr The initial increment count. 
 
51580
   *  \param props The list properties (bit array). */
 
51581
  CT_List(int size = 5, int incr = 5, int props = 0) : 
 
51582
    _sons (size, incr), _properties (props) {}
 
51583
 
 
51584
public:
 
51585
  /** %List properties. */
 
51586
  enum {
 
51587
    /** %List has a start token, like ':' in ":a(1),b(2)" */
 
51588
    OPEN = 1,         
 
51589
    /** %List has an end token */
 
51590
    CLOSE = 2,        
 
51591
    /** %List has opening and closing delimiters, like '(' and ')' */
 
51592
    OPEN_CLOSE = 3,   
 
51593
    /** %List has separators, like ',' */
 
51594
    SEPARATORS = 4,   
 
51595
    /** %List pretend to be empty, like for "(void)" */
 
51596
    FORCE_EMPTY = 8,  
 
51597
    /** %List has trailing separator, like "a,b,c," */
 
51598
    END_SEP = 16,     
 
51599
    /** %List has no separator before last element, like "(a,b...)" */
 
51600
    NO_LAST_SEP = 32, 
 
51601
    /** %List has an introduction chararacter, like "=" in "={a,b}" */
 
51602
    INTRO = 64        
 
51603
  };
 
51604
 
 
51605
  /** Get the number of list entries. */
 
51606
  int Entries () const;
 
51607
  /** Get the n-th list entry.
 
51608
   *  \param n The index of the entry. 
 
51609
   *  \return The list entry or NULL. */
 
51610
  CTree *Entry (int n) const;
 
51611
  /** Get the number of sons. */
 
51612
  int Sons () const { return _sons.length (); }
 
51613
  /** Get the n-th son.
 
51614
   *  \param n The index of the son. 
 
51615
   *  \return The n-th son or NULL. */
 
51616
  CTree *Son (int n) const { return _sons.lookup (n); }
 
51617
  /** Get the list properties. */
 
51618
  int GetProperties () const { return _properties; }
 
51619
  /** Add a list property.
 
51620
   *  \param p The property to add. */
 
51621
  void AddProperties (int p) { _properties |= p; }
 
51622
  /** Add a son.
 
51623
   *  \param s The son to add. */
 
51624
  void AddSon (CTree *s) { if (s) { _sons.append (s); SetParent (s, this); } }
 
51625
  /** Prepend a son.
 
51626
   *  \param s The son to prepend. */
 
51627
  void PrefixSon (CTree *s) { if (s) { _sons.prepend (s); SetParent (s, this); } }
 
51628
  /** Insert a son before another son.
 
51629
   *  \param before The son to insert the new son before.
 
51630
   *  \param son The son to insert. */
 
51631
  void InsertSon (CTree *before, CTree *son); 
 
51632
  /** Replace a son.
 
51633
   *  \param old_son The son to replace.
 
51634
   *  \param new_son The new son. */
 
51635
  void ReplaceSon (CTree *old_son, CTree *new_son);
 
51636
  /** Remove a son.
 
51637
   *  \param son The son to remove. */
 
51638
  void RemoveSon (CTree *son);
 
51639
  /** Insert a son at the given index. 
 
51640
   *  \param idx The index at which to insert.
 
51641
   *  \param s The son to insert. */
 
51642
  void InsertSon (int idx, CTree *s)
 
51643
   { if (s && idx <= Sons ()) { _sons.insert (idx, s); SetParent (s, this); } }
 
51644
  /** Replace the son at the given index.
 
51645
   *  \param idx The index of the son to replace.
 
51646
   *  \param s The new son. */
 
51647
  void ReplaceSon (int idx, CTree *s) 
 
51648
   { if (s && idx < Sons ()) { SetParent (_sons[idx], 0); _sons[idx] = s; SetParent (s, this); } }
 
51649
  /** Remove the son at the given index. 
 
51650
   *  \param idx The index of the son to remove. */
 
51651
  void RemoveSon (int idx) 
 
51652
   { if (idx < Sons ()) { SetParent (_sons[idx], 0); _sons.remove (idx); } }
 
51653
public:
 
51654
  typedef AC::TL<Puma::Array< Puma::CTree * >,AC::TL<int,AC::TLE > > __AttrTypes;
 
51655
  const char *__attr_name (unsigned i) const {
 
51656
    static const char *names[] = { "_sons", "_properties" }; return names[i];
 
51657
  }
 
51658
  const void *__attr (unsigned __i) const {
 
51659
    switch (__i) { case 1: return &_sons; case 2: return &_properties; default: return 0; }
 
51660
  }
 
51661
#line 482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51662
};
 
51663
 
 
51664
/** \class CT_ExprList CTree.h Puma/CTree.h
 
51665
 *  Tree node representing an expression list. */
 
51666
 
 
51667
#line 51668 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51668
} // closed Puma
 
51669
class CCExprResolve;
 
51670
class CExprResolve;
 
51671
class WinIfExists;
 
51672
class WinImportHandler;
 
51673
class WinMacros;
 
51674
class WinAsm;
 
51675
class WinDeclSpecs;
 
51676
class WinMemberExplSpec;
 
51677
class WinTypeKeywords;
 
51678
class WinFriend;
 
51679
class ExtAC;
 
51680
class ExtACBuilderCoupling;
 
51681
class ExtACSyntaxCoupling;
 
51682
class ExtACTree;
 
51683
class ExtACKeywords;
 
51684
class ExtGnu;
 
51685
class PragmaOnceUnitState;
 
51686
class PragmaOnce;
 
51687
class CMatchSyntax;
 
51688
namespace Puma {
 
51689
 
 
51690
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51691
class CT_ExprList : public CT_List, public CSemValue, public CSemObject {
 
51692
#line 51693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51693
  friend class ::CCExprResolve;
 
51694
  friend class ::CExprResolve;
 
51695
  friend class ::WinIfExists;
 
51696
  friend class ::WinImportHandler;
 
51697
  friend class ::WinMacros;
 
51698
  friend class ::WinAsm;
 
51699
  friend class ::WinDeclSpecs;
 
51700
  friend class ::WinMemberExplSpec;
 
51701
  friend class ::WinTypeKeywords;
 
51702
  friend class ::WinFriend;
 
51703
  friend class ::ExtAC;
 
51704
  friend class ::ExtACBuilderCoupling;
 
51705
  friend class ::ExtACSyntaxCoupling;
 
51706
  friend class ::ExtACTree;
 
51707
  friend class ::ExtACKeywords;
 
51708
  friend class ::ExtGnu;
 
51709
  friend class ::PragmaOnceUnitState;
 
51710
  friend class ::PragmaOnce;
 
51711
  friend class ::CMatchSyntax;
 
51712
 
 
51713
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51714
 
 
51715
public:
 
51716
  /** Constructor. */
 
51717
  CT_ExprList () { AddProperties (SEPARATORS); }
 
51718
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51719
  static const char *NodeId ();
 
51720
  /** Get the name of the node. Can be compared with NodeId(). */
 
51721
  const char *NodeName () const { return NodeId (); }
 
51722
 
 
51723
  /** Get the type of the last expression in the expression list.
 
51724
   *  \return The type or NULL. */
 
51725
  CTypeInfo *Type () const { return type; }
 
51726
  /** Get the value of the last expression in the expression list.
 
51727
   *  \return The value of NULL. */
 
51728
  CExprValue *Value () const { return value; }
 
51729
  /** Get the semantic value of the node. */
 
51730
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
51731
  /** Get the semantic information about the node. */
 
51732
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
51733
public:
 
51734
  typedef AC::TLE __AttrTypes;
 
51735
  const char *__attr_name (unsigned i) const { return 0; }
 
51736
  const void *__attr (unsigned __i) const { return 0; }
 
51737
#line 505 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51738
};
 
51739
 
 
51740
/** \class CT_DeclaratorList CTree.h Puma/CTree.h
 
51741
 *  Tree node representing a list of declarators. */
 
51742
 
 
51743
#line 51744 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51744
} // closed Puma
 
51745
class CCExprResolve;
 
51746
class CExprResolve;
 
51747
class WinIfExists;
 
51748
class WinImportHandler;
 
51749
class WinMacros;
 
51750
class WinAsm;
 
51751
class WinDeclSpecs;
 
51752
class WinMemberExplSpec;
 
51753
class WinTypeKeywords;
 
51754
class WinFriend;
 
51755
class ExtAC;
 
51756
class ExtACBuilderCoupling;
 
51757
class ExtACSyntaxCoupling;
 
51758
class ExtACTree;
 
51759
class ExtACKeywords;
 
51760
class ExtGnu;
 
51761
class PragmaOnceUnitState;
 
51762
class PragmaOnce;
 
51763
class CMatchSyntax;
 
51764
namespace Puma {
 
51765
 
 
51766
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51767
class CT_DeclaratorList : public CT_List {
 
51768
#line 51769 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51769
  friend class ::CCExprResolve;
 
51770
  friend class ::CExprResolve;
 
51771
  friend class ::WinIfExists;
 
51772
  friend class ::WinImportHandler;
 
51773
  friend class ::WinMacros;
 
51774
  friend class ::WinAsm;
 
51775
  friend class ::WinDeclSpecs;
 
51776
  friend class ::WinMemberExplSpec;
 
51777
  friend class ::WinTypeKeywords;
 
51778
  friend class ::WinFriend;
 
51779
  friend class ::ExtAC;
 
51780
  friend class ::ExtACBuilderCoupling;
 
51781
  friend class ::ExtACSyntaxCoupling;
 
51782
  friend class ::ExtACTree;
 
51783
  friend class ::ExtACKeywords;
 
51784
  friend class ::ExtGnu;
 
51785
  friend class ::PragmaOnceUnitState;
 
51786
  friend class ::PragmaOnce;
 
51787
  friend class ::CMatchSyntax;
 
51788
 
 
51789
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51790
 
 
51791
public:
 
51792
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51793
  static const char *NodeId ();
 
51794
  /** Get the name of the node. Can be compared with NodeId(). */
 
51795
  const char *NodeName () const { return NodeId (); }
 
51796
public:
 
51797
  typedef AC::TLE __AttrTypes;
 
51798
  const char *__attr_name (unsigned i) const { return 0; }
 
51799
  const void *__attr (unsigned __i) const { return 0; }
 
51800
#line 515 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51801
};
 
51802
 
 
51803
/** \class CT_EnumeratorList CTree.h Puma/CTree.h
 
51804
 *  Tree node representing a list of enumerator constants. */
 
51805
 
 
51806
#line 51807 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51807
} // closed Puma
 
51808
class CCExprResolve;
 
51809
class CExprResolve;
 
51810
class WinIfExists;
 
51811
class WinImportHandler;
 
51812
class WinMacros;
 
51813
class WinAsm;
 
51814
class WinDeclSpecs;
 
51815
class WinMemberExplSpec;
 
51816
class WinTypeKeywords;
 
51817
class WinFriend;
 
51818
class ExtAC;
 
51819
class ExtACBuilderCoupling;
 
51820
class ExtACSyntaxCoupling;
 
51821
class ExtACTree;
 
51822
class ExtACKeywords;
 
51823
class ExtGnu;
 
51824
class PragmaOnceUnitState;
 
51825
class PragmaOnce;
 
51826
class CMatchSyntax;
 
51827
namespace Puma {
 
51828
 
 
51829
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51830
class CT_EnumeratorList : public CT_List {
 
51831
#line 51832 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51832
  friend class ::CCExprResolve;
 
51833
  friend class ::CExprResolve;
 
51834
  friend class ::WinIfExists;
 
51835
  friend class ::WinImportHandler;
 
51836
  friend class ::WinMacros;
 
51837
  friend class ::WinAsm;
 
51838
  friend class ::WinDeclSpecs;
 
51839
  friend class ::WinMemberExplSpec;
 
51840
  friend class ::WinTypeKeywords;
 
51841
  friend class ::WinFriend;
 
51842
  friend class ::ExtAC;
 
51843
  friend class ::ExtACBuilderCoupling;
 
51844
  friend class ::ExtACSyntaxCoupling;
 
51845
  friend class ::ExtACTree;
 
51846
  friend class ::ExtACKeywords;
 
51847
  friend class ::ExtGnu;
 
51848
  friend class ::PragmaOnceUnitState;
 
51849
  friend class ::PragmaOnce;
 
51850
  friend class ::CMatchSyntax;
 
51851
 
 
51852
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51853
 
 
51854
public:
 
51855
  /** Constructor. */
 
51856
  CT_EnumeratorList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
51857
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51858
  static const char *NodeId ();
 
51859
  /** Get the name of the node. Can be compared with NodeId(). */
 
51860
  const char *NodeName () const { return NodeId (); }
 
51861
public:
 
51862
  typedef AC::TLE __AttrTypes;
 
51863
  const char *__attr_name (unsigned i) const { return 0; }
 
51864
  const void *__attr (unsigned __i) const { return 0; }
 
51865
#line 527 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51866
};
 
51867
   
 
51868
/** \class CT_DeclList CTree.h Puma/CTree.h
 
51869
 *  Tree node representing a list of declarations. */
 
51870
 
 
51871
#line 51872 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51872
} // closed Puma
 
51873
class CCExprResolve;
 
51874
class CExprResolve;
 
51875
class WinIfExists;
 
51876
class WinImportHandler;
 
51877
class WinMacros;
 
51878
class WinAsm;
 
51879
class WinDeclSpecs;
 
51880
class WinMemberExplSpec;
 
51881
class WinTypeKeywords;
 
51882
class WinFriend;
 
51883
class ExtAC;
 
51884
class ExtACBuilderCoupling;
 
51885
class ExtACSyntaxCoupling;
 
51886
class ExtACTree;
 
51887
class ExtACKeywords;
 
51888
class ExtGnu;
 
51889
class PragmaOnceUnitState;
 
51890
class PragmaOnce;
 
51891
class CMatchSyntax;
 
51892
namespace Puma {
 
51893
 
 
51894
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51895
class CT_DeclList : public CT_List {
 
51896
#line 51897 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51897
  friend class ::CCExprResolve;
 
51898
  friend class ::CExprResolve;
 
51899
  friend class ::WinIfExists;
 
51900
  friend class ::WinImportHandler;
 
51901
  friend class ::WinMacros;
 
51902
  friend class ::WinAsm;
 
51903
  friend class ::WinDeclSpecs;
 
51904
  friend class ::WinMemberExplSpec;
 
51905
  friend class ::WinTypeKeywords;
 
51906
  friend class ::WinFriend;
 
51907
  friend class ::ExtAC;
 
51908
  friend class ::ExtACBuilderCoupling;
 
51909
  friend class ::ExtACSyntaxCoupling;
 
51910
  friend class ::ExtACTree;
 
51911
  friend class ::ExtACKeywords;
 
51912
  friend class ::ExtGnu;
 
51913
  friend class ::PragmaOnceUnitState;
 
51914
  friend class ::PragmaOnce;
 
51915
  friend class ::CMatchSyntax;
 
51916
 
 
51917
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51918
 
 
51919
public:
 
51920
  /** Constructor. 
 
51921
   *  \param size The initial size of the list.
 
51922
   *  \param incr The initial increment count of the list. */
 
51923
  CT_DeclList (int size = 20, int incr = 20) : CT_List (size, incr) {}
 
51924
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51925
  static const char *NodeId ();
 
51926
  /** Get the name of the node. Can be compared with NodeId(). */
 
51927
  const char *NodeName () const { return NodeId (); }
 
51928
  /** Set the linkage specifiers to each declaration in the list.
 
51929
   *  \param l The linkage specifiers node. */
 
51930
  void Linkage (CT_LinkageSpec *l);
 
51931
public:
 
51932
  typedef AC::TLE __AttrTypes;
 
51933
  const char *__attr_name (unsigned i) const { return 0; }
 
51934
  const void *__attr (unsigned __i) const { return 0; }
 
51935
#line 544 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51936
};
 
51937
 
 
51938
/** \class CT_DeclSpecSeq CTree.h Puma/CTree.h
 
51939
 *  Tree node representing a sequence of declaration specifiers. */
 
51940
 
 
51941
#line 51942 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51942
} // closed Puma
 
51943
class CCExprResolve;
 
51944
class CExprResolve;
 
51945
class WinIfExists;
 
51946
class WinImportHandler;
 
51947
class WinMacros;
 
51948
class WinAsm;
 
51949
class WinDeclSpecs;
 
51950
class WinMemberExplSpec;
 
51951
class WinTypeKeywords;
 
51952
class WinFriend;
 
51953
class ExtAC;
 
51954
class ExtACBuilderCoupling;
 
51955
class ExtACSyntaxCoupling;
 
51956
class ExtACTree;
 
51957
class ExtACKeywords;
 
51958
class ExtGnu;
 
51959
class PragmaOnceUnitState;
 
51960
class PragmaOnce;
 
51961
class CMatchSyntax;
 
51962
namespace Puma {
 
51963
 
 
51964
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51965
class CT_DeclSpecSeq : public CT_List {
 
51966
#line 51967 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
51967
  friend class ::CCExprResolve;
 
51968
  friend class ::CExprResolve;
 
51969
  friend class ::WinIfExists;
 
51970
  friend class ::WinImportHandler;
 
51971
  friend class ::WinMacros;
 
51972
  friend class ::WinAsm;
 
51973
  friend class ::WinDeclSpecs;
 
51974
  friend class ::WinMemberExplSpec;
 
51975
  friend class ::WinTypeKeywords;
 
51976
  friend class ::WinFriend;
 
51977
  friend class ::ExtAC;
 
51978
  friend class ::ExtACBuilderCoupling;
 
51979
  friend class ::ExtACSyntaxCoupling;
 
51980
  friend class ::ExtACTree;
 
51981
  friend class ::ExtACKeywords;
 
51982
  friend class ::ExtGnu;
 
51983
  friend class ::PragmaOnceUnitState;
 
51984
  friend class ::PragmaOnce;
 
51985
  friend class ::CMatchSyntax;
 
51986
 
 
51987
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51988
 
 
51989
public:
 
51990
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51991
  static const char *NodeId ();
 
51992
  /** Get the name of the node. Can be compared with NodeId(). */
 
51993
  const char *NodeName () const { return NodeId (); }
 
51994
public:
 
51995
  typedef AC::TLE __AttrTypes;
 
51996
  const char *__attr_name (unsigned i) const { return 0; }
 
51997
  const void *__attr (unsigned __i) const { return 0; }
 
51998
#line 554 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51999
};
 
52000
 
 
52001
/** \class CT_CmpdStmt CTree.h Puma/CTree.h
 
52002
 *  Tree node representing a compound statement. */
 
52003
 
 
52004
#line 52005 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52005
} // closed Puma
 
52006
class CCExprResolve;
 
52007
class CExprResolve;
 
52008
class WinIfExists;
 
52009
class WinImportHandler;
 
52010
class WinMacros;
 
52011
class WinAsm;
 
52012
class WinDeclSpecs;
 
52013
class WinMemberExplSpec;
 
52014
class WinTypeKeywords;
 
52015
class WinFriend;
 
52016
class ExtAC;
 
52017
class ExtACBuilderCoupling;
 
52018
class ExtACSyntaxCoupling;
 
52019
class ExtACTree;
 
52020
class ExtACKeywords;
 
52021
class ExtGnu;
 
52022
class PragmaOnceUnitState;
 
52023
class PragmaOnce;
 
52024
class CMatchSyntax;
 
52025
namespace Puma {
 
52026
 
 
52027
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52028
class CT_CmpdStmt : public CT_List, public CSemScope {
 
52029
#line 52030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52030
  friend class ::CCExprResolve;
 
52031
  friend class ::CExprResolve;
 
52032
  friend class ::WinIfExists;
 
52033
  friend class ::WinImportHandler;
 
52034
  friend class ::WinMacros;
 
52035
  friend class ::WinAsm;
 
52036
  friend class ::WinDeclSpecs;
 
52037
  friend class ::WinMemberExplSpec;
 
52038
  friend class ::WinTypeKeywords;
 
52039
  friend class ::WinFriend;
 
52040
  friend class ::ExtAC;
 
52041
  friend class ::ExtACBuilderCoupling;
 
52042
  friend class ::ExtACSyntaxCoupling;
 
52043
  friend class ::ExtACTree;
 
52044
  friend class ::ExtACKeywords;
 
52045
  friend class ::ExtGnu;
 
52046
  friend class ::PragmaOnceUnitState;
 
52047
  friend class ::PragmaOnce;
 
52048
  friend class ::CMatchSyntax;
 
52049
 
 
52050
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52051
 
 
52052
public:
 
52053
  /* Constructor. */
 
52054
  CT_CmpdStmt () { AddProperties (OPEN_CLOSE); }
 
52055
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52056
  static const char *NodeId ();
 
52057
  /** Get the name of the node. Can be compared with NodeId(). */
 
52058
  const char *NodeName () const { return NodeId (); }
 
52059
  /** Get the scope opened by the compound statement. */
 
52060
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
52061
public:
 
52062
  typedef AC::TLE __AttrTypes;
 
52063
  const char *__attr_name (unsigned i) const { return 0; }
 
52064
  const void *__attr (unsigned __i) const { return 0; }
 
52065
#line 568 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52066
};
 
52067
 
 
52068
/** \class CT_HandlerSeq CTree.h Puma/CTree.h
 
52069
 *  Tree node representing an exception handler sequence. */
 
52070
 
 
52071
#line 52072 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52072
} // closed Puma
 
52073
class CCExprResolve;
 
52074
class CExprResolve;
 
52075
class WinIfExists;
 
52076
class WinImportHandler;
 
52077
class WinMacros;
 
52078
class WinAsm;
 
52079
class WinDeclSpecs;
 
52080
class WinMemberExplSpec;
 
52081
class WinTypeKeywords;
 
52082
class WinFriend;
 
52083
class ExtAC;
 
52084
class ExtACBuilderCoupling;
 
52085
class ExtACSyntaxCoupling;
 
52086
class ExtACTree;
 
52087
class ExtACKeywords;
 
52088
class ExtGnu;
 
52089
class PragmaOnceUnitState;
 
52090
class PragmaOnce;
 
52091
class CMatchSyntax;
 
52092
namespace Puma {
 
52093
 
 
52094
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52095
class CT_HandlerSeq : public CT_List {
 
52096
#line 52097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52097
  friend class ::CCExprResolve;
 
52098
  friend class ::CExprResolve;
 
52099
  friend class ::WinIfExists;
 
52100
  friend class ::WinImportHandler;
 
52101
  friend class ::WinMacros;
 
52102
  friend class ::WinAsm;
 
52103
  friend class ::WinDeclSpecs;
 
52104
  friend class ::WinMemberExplSpec;
 
52105
  friend class ::WinTypeKeywords;
 
52106
  friend class ::WinFriend;
 
52107
  friend class ::ExtAC;
 
52108
  friend class ::ExtACBuilderCoupling;
 
52109
  friend class ::ExtACSyntaxCoupling;
 
52110
  friend class ::ExtACTree;
 
52111
  friend class ::ExtACKeywords;
 
52112
  friend class ::ExtGnu;
 
52113
  friend class ::PragmaOnceUnitState;
 
52114
  friend class ::PragmaOnce;
 
52115
  friend class ::CMatchSyntax;
 
52116
 
 
52117
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52118
 
 
52119
public:
 
52120
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52121
  static const char *NodeId ();
 
52122
  /** Get the name of the node. Can be compared with NodeId(). */
 
52123
  const char *NodeName () const { return NodeId (); }
 
52124
public:
 
52125
  typedef AC::TLE __AttrTypes;
 
52126
  const char *__attr_name (unsigned i) const { return 0; }
 
52127
  const void *__attr (unsigned __i) const { return 0; }
 
52128
#line 578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52129
};
 
52130
 
 
52131
/** \class CT_TemplateParamList CTree.h Puma/CTree.h
 
52132
 *  Tree node representing a template parameter list. */
 
52133
 
 
52134
#line 52135 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52135
} // closed Puma
 
52136
class CCExprResolve;
 
52137
class CExprResolve;
 
52138
class WinIfExists;
 
52139
class WinImportHandler;
 
52140
class WinMacros;
 
52141
class WinAsm;
 
52142
class WinDeclSpecs;
 
52143
class WinMemberExplSpec;
 
52144
class WinTypeKeywords;
 
52145
class WinFriend;
 
52146
class ExtAC;
 
52147
class ExtACBuilderCoupling;
 
52148
class ExtACSyntaxCoupling;
 
52149
class ExtACTree;
 
52150
class ExtACKeywords;
 
52151
class ExtGnu;
 
52152
class PragmaOnceUnitState;
 
52153
class PragmaOnce;
 
52154
class CMatchSyntax;
 
52155
namespace Puma {
 
52156
 
 
52157
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52158
class CT_TemplateParamList : public CT_List, public CSemScope {
 
52159
#line 52160 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52160
  friend class ::CCExprResolve;
 
52161
  friend class ::CExprResolve;
 
52162
  friend class ::WinIfExists;
 
52163
  friend class ::WinImportHandler;
 
52164
  friend class ::WinMacros;
 
52165
  friend class ::WinAsm;
 
52166
  friend class ::WinDeclSpecs;
 
52167
  friend class ::WinMemberExplSpec;
 
52168
  friend class ::WinTypeKeywords;
 
52169
  friend class ::WinFriend;
 
52170
  friend class ::ExtAC;
 
52171
  friend class ::ExtACBuilderCoupling;
 
52172
  friend class ::ExtACSyntaxCoupling;
 
52173
  friend class ::ExtACTree;
 
52174
  friend class ::ExtACKeywords;
 
52175
  friend class ::ExtGnu;
 
52176
  friend class ::PragmaOnceUnitState;
 
52177
  friend class ::PragmaOnce;
 
52178
  friend class ::CMatchSyntax;
 
52179
 
 
52180
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52181
 
 
52182
public:
 
52183
  CT_TemplateParamList () { AddProperties (INTRO | SEPARATORS | OPEN_CLOSE); }
 
52184
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52185
  static const char *NodeId ();
 
52186
  /** Get the name of the node. Can be compared with NodeId(). */
 
52187
  const char *NodeName () const { return NodeId (); }
 
52188
  /** Get the scope opened by the template parameter list. */
 
52189
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
52190
public:
 
52191
  typedef AC::TLE __AttrTypes;
 
52192
  const char *__attr_name (unsigned i) const { return 0; }
 
52193
  const void *__attr (unsigned __i) const { return 0; }
 
52194
#line 591 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52195
};
 
52196
 
 
52197
/** \class CT_TemplateArgList CTree.h Puma/CTree.h
 
52198
 *  Tree node representing a template argument list. */
 
52199
 
 
52200
#line 52201 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52201
} // closed Puma
 
52202
class CCExprResolve;
 
52203
class CExprResolve;
 
52204
class WinIfExists;
 
52205
class WinImportHandler;
 
52206
class WinMacros;
 
52207
class WinAsm;
 
52208
class WinDeclSpecs;
 
52209
class WinMemberExplSpec;
 
52210
class WinTypeKeywords;
 
52211
class WinFriend;
 
52212
class ExtAC;
 
52213
class ExtACBuilderCoupling;
 
52214
class ExtACSyntaxCoupling;
 
52215
class ExtACTree;
 
52216
class ExtACKeywords;
 
52217
class ExtGnu;
 
52218
class PragmaOnceUnitState;
 
52219
class PragmaOnce;
 
52220
class CMatchSyntax;
 
52221
namespace Puma {
 
52222
 
 
52223
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52224
class CT_TemplateArgList : public CT_List {
 
52225
#line 52226 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52226
  friend class ::CCExprResolve;
 
52227
  friend class ::CExprResolve;
 
52228
  friend class ::WinIfExists;
 
52229
  friend class ::WinImportHandler;
 
52230
  friend class ::WinMacros;
 
52231
  friend class ::WinAsm;
 
52232
  friend class ::WinDeclSpecs;
 
52233
  friend class ::WinMemberExplSpec;
 
52234
  friend class ::WinTypeKeywords;
 
52235
  friend class ::WinFriend;
 
52236
  friend class ::ExtAC;
 
52237
  friend class ::ExtACBuilderCoupling;
 
52238
  friend class ::ExtACSyntaxCoupling;
 
52239
  friend class ::ExtACTree;
 
52240
  friend class ::ExtACKeywords;
 
52241
  friend class ::ExtGnu;
 
52242
  friend class ::PragmaOnceUnitState;
 
52243
  friend class ::PragmaOnce;
 
52244
  friend class ::CMatchSyntax;
 
52245
 
 
52246
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52247
 
 
52248
public:
 
52249
  /** Constructor. */
 
52250
  CT_TemplateArgList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
52251
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52252
  static const char *NodeId ();
 
52253
  /** Get the name of the node. Can be compared with NodeId(). */
 
52254
  const char *NodeName () const { return NodeId (); }
 
52255
public:
 
52256
  typedef AC::TLE __AttrTypes;
 
52257
  const char *__attr_name (unsigned i) const { return 0; }
 
52258
  const void *__attr (unsigned __i) const { return 0; }
 
52259
#line 603 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52260
};
 
52261
 
 
52262
/*****************************************************************************/
 
52263
/*                                                                           */
 
52264
/*                              Expressions                                  */
 
52265
/*                                                                           */
 
52266
/*****************************************************************************/
 
52267
 
 
52268
/** \class CT_Expression CTree.h Puma/CTree.h
 
52269
 *  Base class for all expression tree nodes. */
 
52270
 
 
52271
#line 52272 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52272
} // closed Puma
 
52273
class CCExprResolve;
 
52274
class CExprResolve;
 
52275
class WinIfExists;
 
52276
class WinImportHandler;
 
52277
class WinMacros;
 
52278
class WinAsm;
 
52279
class WinDeclSpecs;
 
52280
class WinMemberExplSpec;
 
52281
class WinTypeKeywords;
 
52282
class WinFriend;
 
52283
class ExtAC;
 
52284
class ExtACBuilderCoupling;
 
52285
class ExtACSyntaxCoupling;
 
52286
class ExtACTree;
 
52287
class ExtACKeywords;
 
52288
class ExtGnu;
 
52289
class PragmaOnceUnitState;
 
52290
class PragmaOnce;
 
52291
class CMatchSyntax;
 
52292
namespace Puma {
 
52293
 
 
52294
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52295
 
 
52296
#line 52297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52297
} // closed Puma
 
52298
 
 
52299
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52300
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52301
#include "CCExprResolveH.ah"
 
52302
#endif
 
52303
namespace Puma {
 
52304
 
 
52305
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52306
 
 
52307
#line 52308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52308
} // closed Puma
 
52309
 
 
52310
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52311
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52312
#include "CExprResolveH.ah"
 
52313
#endif
 
52314
namespace Puma {
 
52315
 
 
52316
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52317
class CT_Expression : public CTree, public CSemValue {
 
52318
#line 52319 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52319
  friend class ::CCExprResolve;
 
52320
  friend class ::CExprResolve;
 
52321
  friend class ::WinIfExists;
 
52322
  friend class ::WinImportHandler;
 
52323
  friend class ::WinMacros;
 
52324
  friend class ::WinAsm;
 
52325
  friend class ::WinDeclSpecs;
 
52326
  friend class ::WinMemberExplSpec;
 
52327
  friend class ::WinTypeKeywords;
 
52328
  friend class ::WinFriend;
 
52329
  friend class ::ExtAC;
 
52330
  friend class ::ExtACBuilderCoupling;
 
52331
  friend class ::ExtACSyntaxCoupling;
 
52332
  friend class ::ExtACTree;
 
52333
  friend class ::ExtACKeywords;
 
52334
  friend class ::ExtGnu;
 
52335
  friend class ::PragmaOnceUnitState;
 
52336
  friend class ::PragmaOnce;
 
52337
  friend class ::CMatchSyntax;
 
52338
 
 
52339
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52340
 
 
52341
protected:
 
52342
  /** Constructor. */
 
52343
  CT_Expression () {}
 
52344
 
 
52345
public:
 
52346
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52347
  static const char *NodeId ();
 
52348
  /** Get the name of the node. Can be compared with NodeId(). */
 
52349
  const char *NodeName () const { return NodeId (); }
 
52350
  /** Get the type of the expression.
 
52351
   *  \return The type information object or NULL. */
 
52352
  CTypeInfo *Type () const { return type; }
 
52353
  /** Get the value of the expression.
 
52354
   *  \return The value object or NULL. */
 
52355
  CExprValue *Value () const { return value; }
 
52356
  /** Get the semantic value information of the expression.
 
52357
   *  \return The value object or NULL. */
 
52358
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
52359
  /** Get this. */
 
52360
  virtual CT_Expression *IsExpression () { return this; }
 
52361
   private:
 
52362
  typedef CT_Expression CCExprResolveExpr;
 
52363
 
 
52364
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52365
 public :
 
52366
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52367
  typedef CT_Expression CExprResolveExpr;
 
52368
 
 
52369
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52370
 public :
 
52371
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52372
  typedef AC::TLE __AttrTypes;
 
52373
  const char *__attr_name (unsigned i) const { return 0; }
 
52374
  const void *__attr (unsigned __i) const { return 0; }
 
52375
#line 634 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52376
};
 
52377
 
 
52378
/** \class CT_Call CTree.h Puma/CTree.h
 
52379
 *  Tree node representing explicit or implicit function calls 
 
52380
 *  including built-in or user-defined functions and overloaded
 
52381
 *  operators. */
 
52382
 
 
52383
#line 52384 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52384
} // closed Puma
 
52385
class CCExprResolve;
 
52386
class CExprResolve;
 
52387
class WinIfExists;
 
52388
class WinImportHandler;
 
52389
class WinMacros;
 
52390
class WinAsm;
 
52391
class WinDeclSpecs;
 
52392
class WinMemberExplSpec;
 
52393
class WinTypeKeywords;
 
52394
class WinFriend;
 
52395
class ExtAC;
 
52396
class ExtACBuilderCoupling;
 
52397
class ExtACSyntaxCoupling;
 
52398
class ExtACTree;
 
52399
class ExtACKeywords;
 
52400
class ExtGnu;
 
52401
class PragmaOnceUnitState;
 
52402
class PragmaOnce;
 
52403
class CMatchSyntax;
 
52404
namespace Puma {
 
52405
 
 
52406
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52407
 
 
52408
#line 52409 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52409
} // closed Puma
 
52410
 
 
52411
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52412
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52413
#include "CCExprResolveH.ah"
 
52414
#endif
 
52415
namespace Puma {
 
52416
 
 
52417
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52418
 
 
52419
#line 52420 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52420
} // closed Puma
 
52421
 
 
52422
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52423
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52424
#include "CExprResolveH.ah"
 
52425
#endif
 
52426
namespace Puma {
 
52427
 
 
52428
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52429
class CT_Call : public CT_Expression, public CSemObject {
 
52430
#line 52431 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52431
  friend class ::CCExprResolve;
 
52432
  friend class ::CExprResolve;
 
52433
  friend class ::WinIfExists;
 
52434
  friend class ::WinImportHandler;
 
52435
  friend class ::WinMacros;
 
52436
  friend class ::WinAsm;
 
52437
  friend class ::WinDeclSpecs;
 
52438
  friend class ::WinMemberExplSpec;
 
52439
  friend class ::WinTypeKeywords;
 
52440
  friend class ::WinFriend;
 
52441
  friend class ::ExtAC;
 
52442
  friend class ::ExtACBuilderCoupling;
 
52443
  friend class ::ExtACSyntaxCoupling;
 
52444
  friend class ::ExtACTree;
 
52445
  friend class ::ExtACKeywords;
 
52446
  friend class ::ExtGnu;
 
52447
  friend class ::PragmaOnceUnitState;
 
52448
  friend class ::PragmaOnce;
 
52449
  friend class ::CMatchSyntax;
 
52450
 
 
52451
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52452
 
 
52453
protected:
 
52454
  /** Constructor. */
 
52455
  CT_Call () {}
 
52456
  
 
52457
public:
 
52458
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52459
  static const char *NodeId ();
 
52460
  /** Get the name of the node. Can be compared with NodeId(). */
 
52461
  const char *NodeName () const { return NodeId (); }
 
52462
  /** Get the semantic information of the call. */
 
52463
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
52464
  /** Get this. */
 
52465
  CT_Call *IsCall () { return this; }
 
52466
   private:
 
52467
  typedef CT_Call CCExprResolveExpr;
 
52468
 
 
52469
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52470
 public :
 
52471
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52472
  typedef CT_Call CExprResolveExpr;
 
52473
 
 
52474
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52475
 public :
 
52476
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52477
  typedef AC::TLE __AttrTypes;
 
52478
  const char *__attr_name (unsigned i) const { return 0; }
 
52479
  const void *__attr (unsigned __i) const { return 0; }
 
52480
#line 654 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52481
};
 
52482
 
 
52483
/** \class CT_ImplicitCall CTree.h Puma/CTree.h
 
52484
 *  Tree node representing implicit function calls detected by
 
52485
 *  the semantic analysis. 
 
52486
 *  Example:
 
52487
 *  \code
 
52488
 * class Number {
 
52489
 *   int _n;
 
52490
 * public:
 
52491
 *   Number(int n) : _n(n) {}
 
52492
 *   int operator+(const Number& n) { return n._n + _n; }
 
52493
 * };
 
52494
 *     
 
52495
 * Number one(1), two(2);
 
52496
 * one + two;  // implicitely calls one.operator+(two)
 
52497
 *  \endcode */
 
52498
 
 
52499
#line 52500 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52500
} // closed Puma
 
52501
class CCExprResolve;
 
52502
class CExprResolve;
 
52503
class WinIfExists;
 
52504
class WinImportHandler;
 
52505
class WinMacros;
 
52506
class WinAsm;
 
52507
class WinDeclSpecs;
 
52508
class WinMemberExplSpec;
 
52509
class WinTypeKeywords;
 
52510
class WinFriend;
 
52511
class ExtAC;
 
52512
class ExtACBuilderCoupling;
 
52513
class ExtACSyntaxCoupling;
 
52514
class ExtACTree;
 
52515
class ExtACKeywords;
 
52516
class ExtGnu;
 
52517
class PragmaOnceUnitState;
 
52518
class PragmaOnce;
 
52519
class CMatchSyntax;
 
52520
namespace Puma {
 
52521
 
 
52522
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52523
 
 
52524
#line 52525 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52525
} // closed Puma
 
52526
 
 
52527
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52528
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52529
#include "CCExprResolveH.ah"
 
52530
#endif
 
52531
namespace Puma {
 
52532
 
 
52533
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52534
 
 
52535
#line 52536 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52536
} // closed Puma
 
52537
 
 
52538
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52539
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52540
#include "CExprResolveH.ah"
 
52541
#endif
 
52542
namespace Puma {
 
52543
 
 
52544
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52545
class CT_ImplicitCall : public CT_Call {
 
52546
#line 52547 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52547
  friend class ::CCExprResolve;
 
52548
  friend class ::CExprResolve;
 
52549
  friend class ::WinIfExists;
 
52550
  friend class ::WinImportHandler;
 
52551
  friend class ::WinMacros;
 
52552
  friend class ::WinAsm;
 
52553
  friend class ::WinDeclSpecs;
 
52554
  friend class ::WinMemberExplSpec;
 
52555
  friend class ::WinTypeKeywords;
 
52556
  friend class ::WinFriend;
 
52557
  friend class ::ExtAC;
 
52558
  friend class ::ExtACBuilderCoupling;
 
52559
  friend class ::ExtACSyntaxCoupling;
 
52560
  friend class ::ExtACTree;
 
52561
  friend class ::ExtACKeywords;
 
52562
  friend class ::ExtGnu;
 
52563
  friend class ::PragmaOnceUnitState;
 
52564
  friend class ::PragmaOnce;
 
52565
  friend class ::CMatchSyntax;
 
52566
 
 
52567
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52568
 
 
52569
  CTree *_arg;
 
52570
 
 
52571
public:
 
52572
  /** Constructor.
 
52573
   *  \param arg The call argument. */
 
52574
  CT_ImplicitCall (CTree *arg) { AddSon (_arg, arg); }
 
52575
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52576
  static const char *NodeId ();
 
52577
  /** Get the name of the node. Can be compared with NodeId(). */
 
52578
  const char *NodeName () const { return NodeId (); }
 
52579
  /** Get the number of sons. */
 
52580
  int Sons () const { return 1; }
 
52581
  /** Get the n-th son.
 
52582
   *  \param n The index of the son.
 
52583
   *  \return The n-th son or NULL. */
 
52584
  CTree *Son (int n) const { return (n == 0) ? _arg : (CTree*)0; }
 
52585
  /** Replace a son.
 
52586
   *  \param old_son The son to replace.
 
52587
   *  \param new_son The new son. */
 
52588
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
52589
   { CTree::ReplaceSon (_arg, old_son, new_son); }
 
52590
   private:
 
52591
  typedef CT_ImplicitCall CCExprResolveExpr;
 
52592
 
 
52593
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52594
 public :
 
52595
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52596
  typedef CT_ImplicitCall CExprResolveExpr;
 
52597
 
 
52598
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52599
 public :
 
52600
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52601
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
52602
  const char *__attr_name (unsigned i) const {
 
52603
    static const char *names[] = { "_arg" }; return names[i];
 
52604
  }
 
52605
  const void *__attr (unsigned __i) const {
 
52606
    switch (__i) { case 0: return &_arg; default: return 0; }
 
52607
  }
 
52608
#line 693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52609
};
 
52610
 
 
52611
/** \class CT_String CTree.h Puma/CTree.h
 
52612
 *  Tree node representing a string literal. 
 
52613
 *  Example: \code "abc" \endcode */
 
52614
 
 
52615
#line 52616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52616
} // closed Puma
 
52617
class CCExprResolve;
 
52618
class CExprResolve;
 
52619
class WinIfExists;
 
52620
class WinImportHandler;
 
52621
class WinMacros;
 
52622
class WinAsm;
 
52623
class WinDeclSpecs;
 
52624
class WinMemberExplSpec;
 
52625
class WinTypeKeywords;
 
52626
class WinFriend;
 
52627
class ExtAC;
 
52628
class ExtACBuilderCoupling;
 
52629
class ExtACSyntaxCoupling;
 
52630
class ExtACTree;
 
52631
class ExtACKeywords;
 
52632
class ExtGnu;
 
52633
class PragmaOnceUnitState;
 
52634
class PragmaOnce;
 
52635
class CMatchSyntax;
 
52636
namespace Puma {
 
52637
 
 
52638
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52639
 
 
52640
#line 52641 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52641
} // closed Puma
 
52642
 
 
52643
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52644
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52645
#include "CCExprResolveH.ah"
 
52646
#endif
 
52647
namespace Puma {
 
52648
 
 
52649
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52650
 
 
52651
#line 52652 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52652
} // closed Puma
 
52653
 
 
52654
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52655
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52656
#include "CExprResolveH.ah"
 
52657
#endif
 
52658
namespace Puma {
 
52659
 
 
52660
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52661
class CT_String : public CT_List, public CSemValue {
 
52662
#line 52663 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52663
  friend class ::CCExprResolve;
 
52664
  friend class ::CExprResolve;
 
52665
  friend class ::WinIfExists;
 
52666
  friend class ::WinImportHandler;
 
52667
  friend class ::WinMacros;
 
52668
  friend class ::WinAsm;
 
52669
  friend class ::WinDeclSpecs;
 
52670
  friend class ::WinMemberExplSpec;
 
52671
  friend class ::WinTypeKeywords;
 
52672
  friend class ::WinFriend;
 
52673
  friend class ::ExtAC;
 
52674
  friend class ::ExtACBuilderCoupling;
 
52675
  friend class ::ExtACSyntaxCoupling;
 
52676
  friend class ::ExtACTree;
 
52677
  friend class ::ExtACKeywords;
 
52678
  friend class ::ExtGnu;
 
52679
  friend class ::PragmaOnceUnitState;
 
52680
  friend class ::PragmaOnce;
 
52681
  friend class ::CMatchSyntax;
 
52682
 
 
52683
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52684
 
 
52685
public:
 
52686
  /** Constructor. 
 
52687
   *  \param size The number of sub-strings. */
 
52688
  CT_String (int size) : CT_List (size, 1) {}
 
52689
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52690
  static const char *NodeId ();
 
52691
  /** Get the name of the node. Can be compared with NodeId(). */
 
52692
  const char *NodeName () const { return NodeId (); }
 
52693
 
 
52694
  /** Get the type of the string. 
 
52695
   *  \return The type or NULL. */
 
52696
  CTypeInfo *Type () const { return type; }
 
52697
  /** Get the string value.
 
52698
   *  \return The value or NULL. */
 
52699
  CExprValue *Value () const { return value; }
 
52700
  /** Get the semantic value info object.
 
52701
   *  \return The semantic value object or NULL. */
 
52702
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
52703
  /** Get this. */
 
52704
  virtual CT_String *IsString () { return this; }
 
52705
   private:
 
52706
  typedef CT_String CCExprResolveExpr;
 
52707
 
 
52708
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52709
 public :
 
52710
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52711
  typedef CT_String CExprResolveExpr;
 
52712
 
 
52713
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52714
 public :
 
52715
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52716
  typedef AC::TLE __AttrTypes;
 
52717
  const char *__attr_name (unsigned i) const { return 0; }
 
52718
  const void *__attr (unsigned __i) const { return 0; }
 
52719
#line 719 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52720
};
 
52721
 
 
52722
/** \class CT_WideString CTree.h Puma/CTree.h
 
52723
 *  Tree node representing a wide string literal. 
 
52724
 *  Example: \code L"abc" \endcode */
 
52725
 
 
52726
#line 52727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52727
} // closed Puma
 
52728
class CCExprResolve;
 
52729
class CExprResolve;
 
52730
class WinIfExists;
 
52731
class WinImportHandler;
 
52732
class WinMacros;
 
52733
class WinAsm;
 
52734
class WinDeclSpecs;
 
52735
class WinMemberExplSpec;
 
52736
class WinTypeKeywords;
 
52737
class WinFriend;
 
52738
class ExtAC;
 
52739
class ExtACBuilderCoupling;
 
52740
class ExtACSyntaxCoupling;
 
52741
class ExtACTree;
 
52742
class ExtACKeywords;
 
52743
class ExtGnu;
 
52744
class PragmaOnceUnitState;
 
52745
class PragmaOnce;
 
52746
class CMatchSyntax;
 
52747
namespace Puma {
 
52748
 
 
52749
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52750
 
 
52751
#line 52752 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52752
} // closed Puma
 
52753
 
 
52754
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52755
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52756
#include "CCExprResolveH.ah"
 
52757
#endif
 
52758
namespace Puma {
 
52759
 
 
52760
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52761
 
 
52762
#line 52763 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52763
} // closed Puma
 
52764
 
 
52765
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52766
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52767
#include "CExprResolveH.ah"
 
52768
#endif
 
52769
namespace Puma {
 
52770
 
 
52771
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52772
class CT_WideString : public CT_String {
 
52773
#line 52774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52774
  friend class ::CCExprResolve;
 
52775
  friend class ::CExprResolve;
 
52776
  friend class ::WinIfExists;
 
52777
  friend class ::WinImportHandler;
 
52778
  friend class ::WinMacros;
 
52779
  friend class ::WinAsm;
 
52780
  friend class ::WinDeclSpecs;
 
52781
  friend class ::WinMemberExplSpec;
 
52782
  friend class ::WinTypeKeywords;
 
52783
  friend class ::WinFriend;
 
52784
  friend class ::ExtAC;
 
52785
  friend class ::ExtACBuilderCoupling;
 
52786
  friend class ::ExtACSyntaxCoupling;
 
52787
  friend class ::ExtACTree;
 
52788
  friend class ::ExtACKeywords;
 
52789
  friend class ::ExtGnu;
 
52790
  friend class ::PragmaOnceUnitState;
 
52791
  friend class ::PragmaOnce;
 
52792
  friend class ::CMatchSyntax;
 
52793
 
 
52794
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52795
 
 
52796
public:
 
52797
  /** Constructor.
 
52798
   *  \param size The number of sub-strings. */
 
52799
  CT_WideString (int size) : CT_String (size) {}
 
52800
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52801
  static const char *NodeId ();
 
52802
  /** Get the name of the node. Can be compared with NodeId(). */
 
52803
  const char *NodeName () const { return NodeId (); }
 
52804
   private:
 
52805
  typedef CT_WideString CCExprResolveExpr;
 
52806
 
 
52807
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52808
 public :
 
52809
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52810
  typedef CT_WideString CExprResolveExpr;
 
52811
 
 
52812
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52813
 public :
 
52814
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52815
  typedef AC::TLE __AttrTypes;
 
52816
  const char *__attr_name (unsigned i) const { return 0; }
 
52817
  const void *__attr (unsigned __i) const { return 0; }
 
52818
#line 733 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52819
};
 
52820
 
 
52821
/** \class CT_Integer CTree.h Puma/CTree.h
 
52822
 *  Tree node representing an integer constant. 
 
52823
 *  Example: \code 1234 \endcode */
 
52824
 
 
52825
#line 52826 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52826
} // closed Puma
 
52827
class CCExprResolve;
 
52828
class CExprResolve;
 
52829
class WinIfExists;
 
52830
class WinImportHandler;
 
52831
class WinMacros;
 
52832
class WinAsm;
 
52833
class WinDeclSpecs;
 
52834
class WinMemberExplSpec;
 
52835
class WinTypeKeywords;
 
52836
class WinFriend;
 
52837
class ExtAC;
 
52838
class ExtACBuilderCoupling;
 
52839
class ExtACSyntaxCoupling;
 
52840
class ExtACTree;
 
52841
class ExtACKeywords;
 
52842
class ExtGnu;
 
52843
class PragmaOnceUnitState;
 
52844
class PragmaOnce;
 
52845
class CMatchSyntax;
 
52846
namespace Puma {
 
52847
 
 
52848
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52849
 
 
52850
#line 52851 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52851
} // closed Puma
 
52852
 
 
52853
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52854
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52855
#include "CCExprResolveH.ah"
 
52856
#endif
 
52857
namespace Puma {
 
52858
 
 
52859
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52860
 
 
52861
#line 52862 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52862
} // closed Puma
 
52863
 
 
52864
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52865
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52866
#include "CExprResolveH.ah"
 
52867
#endif
 
52868
namespace Puma {
 
52869
 
 
52870
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52871
class CT_Integer : public CT_Expression {
 
52872
#line 52873 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52873
  friend class ::CCExprResolve;
 
52874
  friend class ::CExprResolve;
 
52875
  friend class ::WinIfExists;
 
52876
  friend class ::WinImportHandler;
 
52877
  friend class ::WinMacros;
 
52878
  friend class ::WinAsm;
 
52879
  friend class ::WinDeclSpecs;
 
52880
  friend class ::WinMemberExplSpec;
 
52881
  friend class ::WinTypeKeywords;
 
52882
  friend class ::WinFriend;
 
52883
  friend class ::ExtAC;
 
52884
  friend class ::ExtACBuilderCoupling;
 
52885
  friend class ::ExtACSyntaxCoupling;
 
52886
  friend class ::ExtACTree;
 
52887
  friend class ::ExtACKeywords;
 
52888
  friend class ::ExtGnu;
 
52889
  friend class ::PragmaOnceUnitState;
 
52890
  friend class ::PragmaOnce;
 
52891
  friend class ::CMatchSyntax;
 
52892
 
 
52893
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52894
 
 
52895
  CTree *_value;  // CT_Token
 
52896
 
 
52897
public:
 
52898
  /** Constructor.
 
52899
   *  \param token The token containing the integer value. */
 
52900
  CT_Integer (CTree *token) { AddSon (_value, token); }
 
52901
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52902
  static const char *NodeId ();
 
52903
  /** Get the name of the node. Can be compared with NodeId(). */
 
52904
  const char *NodeName () const { return NodeId (); }
 
52905
  /** Get the number of sons. */
 
52906
  int Sons () const { return _value ? 1 : 0; }
 
52907
  /** Get the n-th son.
 
52908
   *  \param n The index of the son.
 
52909
   *  \return The n-th son or NULL. */
 
52910
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
52911
  /** Replace a son.
 
52912
   *  \param old_son The son to replace.
 
52913
   *  \param new_son The new son. */
 
52914
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
52915
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
52916
   private:
 
52917
  typedef CT_Integer CCExprResolveExpr;
 
52918
 
 
52919
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52920
 public :
 
52921
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52922
  typedef CT_Integer CExprResolveExpr;
 
52923
 
 
52924
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52925
 public :
 
52926
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52927
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
52928
  const char *__attr_name (unsigned i) const {
 
52929
    static const char *names[] = { "_value" }; return names[i];
 
52930
  }
 
52931
  const void *__attr (unsigned __i) const {
 
52932
    switch (__i) { case 0: return &_value; default: return 0; }
 
52933
  }
 
52934
#line 760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52935
};
 
52936
 
 
52937
/** \class CT_Character CTree.h Puma/CTree.h
 
52938
 *  Tree node representing a single character constant. 
 
52939
 *  Example: \code 'a' \endcode */
 
52940
 
 
52941
#line 52942 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52942
} // closed Puma
 
52943
class CCExprResolve;
 
52944
class CExprResolve;
 
52945
class WinIfExists;
 
52946
class WinImportHandler;
 
52947
class WinMacros;
 
52948
class WinAsm;
 
52949
class WinDeclSpecs;
 
52950
class WinMemberExplSpec;
 
52951
class WinTypeKeywords;
 
52952
class WinFriend;
 
52953
class ExtAC;
 
52954
class ExtACBuilderCoupling;
 
52955
class ExtACSyntaxCoupling;
 
52956
class ExtACTree;
 
52957
class ExtACKeywords;
 
52958
class ExtGnu;
 
52959
class PragmaOnceUnitState;
 
52960
class PragmaOnce;
 
52961
class CMatchSyntax;
 
52962
namespace Puma {
 
52963
 
 
52964
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52965
 
 
52966
#line 52967 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52967
} // closed Puma
 
52968
 
 
52969
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52970
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52971
#include "CCExprResolveH.ah"
 
52972
#endif
 
52973
namespace Puma {
 
52974
 
 
52975
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52976
 
 
52977
#line 52978 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52978
} // closed Puma
 
52979
 
 
52980
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52981
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52982
#include "CExprResolveH.ah"
 
52983
#endif
 
52984
namespace Puma {
 
52985
 
 
52986
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52987
class CT_Character : public CT_Expression {
 
52988
#line 52989 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
52989
  friend class ::CCExprResolve;
 
52990
  friend class ::CExprResolve;
 
52991
  friend class ::WinIfExists;
 
52992
  friend class ::WinImportHandler;
 
52993
  friend class ::WinMacros;
 
52994
  friend class ::WinAsm;
 
52995
  friend class ::WinDeclSpecs;
 
52996
  friend class ::WinMemberExplSpec;
 
52997
  friend class ::WinTypeKeywords;
 
52998
  friend class ::WinFriend;
 
52999
  friend class ::ExtAC;
 
53000
  friend class ::ExtACBuilderCoupling;
 
53001
  friend class ::ExtACSyntaxCoupling;
 
53002
  friend class ::ExtACTree;
 
53003
  friend class ::ExtACKeywords;
 
53004
  friend class ::ExtGnu;
 
53005
  friend class ::PragmaOnceUnitState;
 
53006
  friend class ::PragmaOnce;
 
53007
  friend class ::CMatchSyntax;
 
53008
 
 
53009
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53010
 
 
53011
  CTree *_value;  // CT_Token
 
53012
 
 
53013
public:
 
53014
  /** Constructor.
 
53015
   *  \param token The token containing the character value. */
 
53016
  CT_Character (CTree *token) { AddSon (_value, token); }
 
53017
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53018
  static const char *NodeId ();
 
53019
  /** Get the name of the node. Can be compared with NodeId(). */
 
53020
  const char *NodeName () const { return NodeId (); }
 
53021
  /** Get the number of sons. */
 
53022
  int Sons () const { return 1; }
 
53023
  /** Get the n-th son.
 
53024
   *  \param n The index of the son.
 
53025
   *  \return The n-th son or NULL. */
 
53026
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
53027
  /** Replace a son.
 
53028
   *  \param old_son The son to replace.
 
53029
   *  \param new_son The new son. */
 
53030
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
53031
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
53032
   private:
 
53033
  typedef CT_Character CCExprResolveExpr;
 
53034
 
 
53035
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53036
 public :
 
53037
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53038
  typedef CT_Character CExprResolveExpr;
 
53039
 
 
53040
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53041
 public :
 
53042
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53043
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
53044
  const char *__attr_name (unsigned i) const {
 
53045
    static const char *names[] = { "_value" }; return names[i];
 
53046
  }
 
53047
  const void *__attr (unsigned __i) const {
 
53048
    switch (__i) { case 0: return &_value; default: return 0; }
 
53049
  }
 
53050
#line 787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53051
};
 
53052
 
 
53053
/** \class CT_WideCharacter CTree.h Puma/CTree.h
 
53054
 *  Tree node representing a wide character constant. 
 
53055
 *  Example: \code L'a' \endcode */
 
53056
 
 
53057
#line 53058 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53058
} // closed Puma
 
53059
class CCExprResolve;
 
53060
class CExprResolve;
 
53061
class WinIfExists;
 
53062
class WinImportHandler;
 
53063
class WinMacros;
 
53064
class WinAsm;
 
53065
class WinDeclSpecs;
 
53066
class WinMemberExplSpec;
 
53067
class WinTypeKeywords;
 
53068
class WinFriend;
 
53069
class ExtAC;
 
53070
class ExtACBuilderCoupling;
 
53071
class ExtACSyntaxCoupling;
 
53072
class ExtACTree;
 
53073
class ExtACKeywords;
 
53074
class ExtGnu;
 
53075
class PragmaOnceUnitState;
 
53076
class PragmaOnce;
 
53077
class CMatchSyntax;
 
53078
namespace Puma {
 
53079
 
 
53080
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53081
 
 
53082
#line 53083 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53083
} // closed Puma
 
53084
 
 
53085
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53086
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53087
#include "CCExprResolveH.ah"
 
53088
#endif
 
53089
namespace Puma {
 
53090
 
 
53091
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53092
 
 
53093
#line 53094 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53094
} // closed Puma
 
53095
 
 
53096
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53097
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53098
#include "CExprResolveH.ah"
 
53099
#endif
 
53100
namespace Puma {
 
53101
 
 
53102
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53103
class CT_WideCharacter : public CT_Character {
 
53104
#line 53105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53105
  friend class ::CCExprResolve;
 
53106
  friend class ::CExprResolve;
 
53107
  friend class ::WinIfExists;
 
53108
  friend class ::WinImportHandler;
 
53109
  friend class ::WinMacros;
 
53110
  friend class ::WinAsm;
 
53111
  friend class ::WinDeclSpecs;
 
53112
  friend class ::WinMemberExplSpec;
 
53113
  friend class ::WinTypeKeywords;
 
53114
  friend class ::WinFriend;
 
53115
  friend class ::ExtAC;
 
53116
  friend class ::ExtACBuilderCoupling;
 
53117
  friend class ::ExtACSyntaxCoupling;
 
53118
  friend class ::ExtACTree;
 
53119
  friend class ::ExtACKeywords;
 
53120
  friend class ::ExtGnu;
 
53121
  friend class ::PragmaOnceUnitState;
 
53122
  friend class ::PragmaOnce;
 
53123
  friend class ::CMatchSyntax;
 
53124
 
 
53125
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53126
 
 
53127
public:
 
53128
  /** Constructor.
 
53129
   *  \param token The token containing the wide character value. */
 
53130
  CT_WideCharacter (CTree *token) : CT_Character (token) {}
 
53131
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53132
  static const char *NodeId ();
 
53133
  /** Get the name of the node. Can be compared with NodeId(). */
 
53134
  const char *NodeName () const { return NodeId (); }
 
53135
   private:
 
53136
  typedef CT_WideCharacter CCExprResolveExpr;
 
53137
 
 
53138
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53139
 public :
 
53140
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53141
  typedef CT_WideCharacter CExprResolveExpr;
 
53142
 
 
53143
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53144
 public :
 
53145
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53146
  typedef AC::TLE __AttrTypes;
 
53147
  const char *__attr_name (unsigned i) const { return 0; }
 
53148
  const void *__attr (unsigned __i) const { return 0; }
 
53149
#line 801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53150
};
 
53151
 
 
53152
/** \class CT_Float CTree.h Puma/CTree.h
 
53153
 *  Tree node representing a floating point constant. 
 
53154
 *  Example: \code 12.34 \endcode */
 
53155
 
 
53156
#line 53157 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53157
} // closed Puma
 
53158
class CCExprResolve;
 
53159
class CExprResolve;
 
53160
class WinIfExists;
 
53161
class WinImportHandler;
 
53162
class WinMacros;
 
53163
class WinAsm;
 
53164
class WinDeclSpecs;
 
53165
class WinMemberExplSpec;
 
53166
class WinTypeKeywords;
 
53167
class WinFriend;
 
53168
class ExtAC;
 
53169
class ExtACBuilderCoupling;
 
53170
class ExtACSyntaxCoupling;
 
53171
class ExtACTree;
 
53172
class ExtACKeywords;
 
53173
class ExtGnu;
 
53174
class PragmaOnceUnitState;
 
53175
class PragmaOnce;
 
53176
class CMatchSyntax;
 
53177
namespace Puma {
 
53178
 
 
53179
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53180
 
 
53181
#line 53182 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53182
} // closed Puma
 
53183
 
 
53184
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53185
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53186
#include "CCExprResolveH.ah"
 
53187
#endif
 
53188
namespace Puma {
 
53189
 
 
53190
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53191
 
 
53192
#line 53193 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53193
} // closed Puma
 
53194
 
 
53195
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53196
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53197
#include "CExprResolveH.ah"
 
53198
#endif
 
53199
namespace Puma {
 
53200
 
 
53201
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53202
class CT_Float : public CT_Expression {
 
53203
#line 53204 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53204
  friend class ::CCExprResolve;
 
53205
  friend class ::CExprResolve;
 
53206
  friend class ::WinIfExists;
 
53207
  friend class ::WinImportHandler;
 
53208
  friend class ::WinMacros;
 
53209
  friend class ::WinAsm;
 
53210
  friend class ::WinDeclSpecs;
 
53211
  friend class ::WinMemberExplSpec;
 
53212
  friend class ::WinTypeKeywords;
 
53213
  friend class ::WinFriend;
 
53214
  friend class ::ExtAC;
 
53215
  friend class ::ExtACBuilderCoupling;
 
53216
  friend class ::ExtACSyntaxCoupling;
 
53217
  friend class ::ExtACTree;
 
53218
  friend class ::ExtACKeywords;
 
53219
  friend class ::ExtGnu;
 
53220
  friend class ::PragmaOnceUnitState;
 
53221
  friend class ::PragmaOnce;
 
53222
  friend class ::CMatchSyntax;
 
53223
 
 
53224
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53225
 
 
53226
  CTree *_value;  // CT_Token
 
53227
 
 
53228
public:
 
53229
  /** Constructor.
 
53230
   *  \param token The token containing the floating point value. */
 
53231
  CT_Float (CTree *token) { AddSon (_value, token); }
 
53232
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53233
  static const char *NodeId ();
 
53234
  /** Get the name of the node. Can be compared with NodeId(). */
 
53235
  const char *NodeName () const { return NodeId (); }
 
53236
  /** Get the number of sons. */
 
53237
  int Sons () const { return 1; }
 
53238
  /** Get the n-th son.
 
53239
   *  \param n The index of the son.
 
53240
   *  \return The n-th son or NULL. */
 
53241
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
53242
  /** Replace a son.
 
53243
   *  \param old_son The son to replace.
 
53244
   *  \param new_son The new son. */
 
53245
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
53246
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
53247
   private:
 
53248
  typedef CT_Float CCExprResolveExpr;
 
53249
 
 
53250
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53251
 public :
 
53252
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53253
  typedef CT_Float CExprResolveExpr;
 
53254
 
 
53255
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53256
 public :
 
53257
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53258
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
53259
  const char *__attr_name (unsigned i) const {
 
53260
    static const char *names[] = { "_value" }; return names[i];
 
53261
  }
 
53262
  const void *__attr (unsigned __i) const {
 
53263
    switch (__i) { case 0: return &_value; default: return 0; }
 
53264
  }
 
53265
#line 828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53266
};
 
53267
 
 
53268
/** \class CT_Bool CTree.h Puma/CTree.h
 
53269
 *  Tree node representing a boolean literal. 
 
53270
 *  Examples: 
 
53271
 *  \code 
 
53272
 * true
 
53273
 * false
 
53274
 *  \endcode */
 
53275
 
 
53276
#line 53277 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53277
} // closed Puma
 
53278
class CCExprResolve;
 
53279
class CExprResolve;
 
53280
class WinIfExists;
 
53281
class WinImportHandler;
 
53282
class WinMacros;
 
53283
class WinAsm;
 
53284
class WinDeclSpecs;
 
53285
class WinMemberExplSpec;
 
53286
class WinTypeKeywords;
 
53287
class WinFriend;
 
53288
class ExtAC;
 
53289
class ExtACBuilderCoupling;
 
53290
class ExtACSyntaxCoupling;
 
53291
class ExtACTree;
 
53292
class ExtACKeywords;
 
53293
class ExtGnu;
 
53294
class PragmaOnceUnitState;
 
53295
class PragmaOnce;
 
53296
class CMatchSyntax;
 
53297
namespace Puma {
 
53298
 
 
53299
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53300
 
 
53301
#line 53302 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53302
} // closed Puma
 
53303
 
 
53304
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53305
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53306
#include "CCExprResolveH.ah"
 
53307
#endif
 
53308
namespace Puma {
 
53309
 
 
53310
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53311
 
 
53312
#line 53313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53313
} // closed Puma
 
53314
 
 
53315
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53316
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53317
#include "CExprResolveH.ah"
 
53318
#endif
 
53319
namespace Puma {
 
53320
 
 
53321
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53322
class CT_Bool : public CT_Expression {
 
53323
#line 53324 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53324
  friend class ::CCExprResolve;
 
53325
  friend class ::CExprResolve;
 
53326
  friend class ::WinIfExists;
 
53327
  friend class ::WinImportHandler;
 
53328
  friend class ::WinMacros;
 
53329
  friend class ::WinAsm;
 
53330
  friend class ::WinDeclSpecs;
 
53331
  friend class ::WinMemberExplSpec;
 
53332
  friend class ::WinTypeKeywords;
 
53333
  friend class ::WinFriend;
 
53334
  friend class ::ExtAC;
 
53335
  friend class ::ExtACBuilderCoupling;
 
53336
  friend class ::ExtACSyntaxCoupling;
 
53337
  friend class ::ExtACTree;
 
53338
  friend class ::ExtACKeywords;
 
53339
  friend class ::ExtGnu;
 
53340
  friend class ::PragmaOnceUnitState;
 
53341
  friend class ::PragmaOnce;
 
53342
  friend class ::CMatchSyntax;
 
53343
 
 
53344
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53345
 
 
53346
  CTree *_value;  // CT_Token
 
53347
 
 
53348
public:
 
53349
  /** Constructor.
 
53350
   *  \param token The token containing the boolean value. */
 
53351
  CT_Bool (CTree *token) { AddSon (_value, token); }
 
53352
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53353
  static const char *NodeId ();
 
53354
  /** Get the name of the node. Can be compared with NodeId(). */
 
53355
  const char *NodeName () const { return NodeId (); }
 
53356
  /** Get the number of sons. */
 
53357
  int Sons () const { return 1; }
 
53358
  /** Get the n-th son.
 
53359
   *  \param n The index of the son.
 
53360
   *  \return The n-th son or NULL. */
 
53361
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
53362
  /** Replace a son.
 
53363
   *  \param old_son The son to replace.
 
53364
   *  \param new_son The new son. */
 
53365
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
53366
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
53367
   private:
 
53368
  typedef CT_Bool CCExprResolveExpr;
 
53369
 
 
53370
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53371
 public :
 
53372
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53373
  typedef CT_Bool CExprResolveExpr;
 
53374
 
 
53375
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53376
 public :
 
53377
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53378
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
53379
  const char *__attr_name (unsigned i) const {
 
53380
    static const char *names[] = { "_value" }; return names[i];
 
53381
  }
 
53382
  const void *__attr (unsigned __i) const {
 
53383
    switch (__i) { case 0: return &_value; default: return 0; }
 
53384
  }
 
53385
#line 859 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53386
};
 
53387
 
 
53388
/** \class CT_BracedExpr CTree.h Puma/CTree.h
 
53389
 *  Tree node representing a braced expression.
 
53390
 *  Example: \code (a+b) \endcode */
 
53391
 
 
53392
#line 53393 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53393
} // closed Puma
 
53394
class CCExprResolve;
 
53395
class CExprResolve;
 
53396
class WinIfExists;
 
53397
class WinImportHandler;
 
53398
class WinMacros;
 
53399
class WinAsm;
 
53400
class WinDeclSpecs;
 
53401
class WinMemberExplSpec;
 
53402
class WinTypeKeywords;
 
53403
class WinFriend;
 
53404
class ExtAC;
 
53405
class ExtACBuilderCoupling;
 
53406
class ExtACSyntaxCoupling;
 
53407
class ExtACTree;
 
53408
class ExtACKeywords;
 
53409
class ExtGnu;
 
53410
class PragmaOnceUnitState;
 
53411
class PragmaOnce;
 
53412
class CMatchSyntax;
 
53413
namespace Puma {
 
53414
 
 
53415
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53416
 
 
53417
#line 53418 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53418
} // closed Puma
 
53419
 
 
53420
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53421
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53422
#include "CCExprResolveH.ah"
 
53423
#endif
 
53424
namespace Puma {
 
53425
 
 
53426
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53427
 
 
53428
#line 53429 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53429
} // closed Puma
 
53430
 
 
53431
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53432
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53433
#include "CExprResolveH.ah"
 
53434
#endif
 
53435
namespace Puma {
 
53436
 
 
53437
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53438
class CT_BracedExpr : public CT_Expression {
 
53439
#line 53440 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53440
  friend class ::CCExprResolve;
 
53441
  friend class ::CExprResolve;
 
53442
  friend class ::WinIfExists;
 
53443
  friend class ::WinImportHandler;
 
53444
  friend class ::WinMacros;
 
53445
  friend class ::WinAsm;
 
53446
  friend class ::WinDeclSpecs;
 
53447
  friend class ::WinMemberExplSpec;
 
53448
  friend class ::WinTypeKeywords;
 
53449
  friend class ::WinFriend;
 
53450
  friend class ::ExtAC;
 
53451
  friend class ::ExtACBuilderCoupling;
 
53452
  friend class ::ExtACSyntaxCoupling;
 
53453
  friend class ::ExtACTree;
 
53454
  friend class ::ExtACKeywords;
 
53455
  friend class ::ExtGnu;
 
53456
  friend class ::PragmaOnceUnitState;
 
53457
  friend class ::PragmaOnce;
 
53458
  friend class ::CMatchSyntax;
 
53459
 
 
53460
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53461
 
 
53462
  CTree *sons[3]; // open, expr, close
 
53463
 
 
53464
public:
 
53465
  /** Constructor.
 
53466
   *  \param o The opening brace.
 
53467
   *  \param e The enclosed expression.
 
53468
   *  \param c The closing brace. */
 
53469
  CT_BracedExpr (CTree *o, CTree *e, CTree *c) { 
 
53470
    AddSon (sons[0], o); AddSon (sons[1], e); AddSon (sons[2], c); 
 
53471
  }
 
53472
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53473
  static const char *NodeId ();
 
53474
  /** Get the name of the node. Can be compared with NodeId(). */
 
53475
  const char *NodeName () const { return NodeId (); }
 
53476
  /** Get the number of sons. */
 
53477
  int Sons () const { return 3; }
 
53478
  /** Get the n-th son.
 
53479
   *  \param n The index of the son.
 
53480
   *  \return The n-th son or NULL. */
 
53481
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
53482
  /** Get the enclosed expression. */
 
53483
  CTree *Expr () const { return sons[1]; }
 
53484
  /** Get the type of the enclosed expression. */
 
53485
  CTypeInfo *Type () const { return Expr ()->Type (); }
 
53486
  /** Get the value of the enclosed expression. */
 
53487
  CExprValue *Value () const { return Expr ()->Value (); }
 
53488
  /** Get the semantic value of the expression. */
 
53489
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
53490
  /** Replace a son.
 
53491
   *  \param old_son The son to replace.
 
53492
   *  \param new_son The new son. */
 
53493
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
53494
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
53495
  }
 
53496
   private:
 
53497
  typedef CT_BracedExpr CCExprResolveExpr;
 
53498
 
 
53499
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53500
 public :
 
53501
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53502
  typedef CT_BracedExpr CExprResolveExpr;
 
53503
 
 
53504
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53505
 public :
 
53506
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53507
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
53508
  const char *__attr_name (unsigned i) const {
 
53509
    static const char *names[] = { "sons" }; return names[i];
 
53510
  }
 
53511
  const void *__attr (unsigned __i) const {
 
53512
    switch (__i) { case 0: return &sons; default: return 0; }
 
53513
  }
 
53514
#line 899 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53515
};
 
53516
 
 
53517
/** \class CT_SimpleName CTree.h Puma/CTree.h
 
53518
 *  Base class for all tree nodes representing a name. 
 
53519
 *  Example: \code a \endcode */
 
53520
 
 
53521
#line 53522 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53522
} // closed Puma
 
53523
class CCExprResolve;
 
53524
class CExprResolve;
 
53525
class WinIfExists;
 
53526
class WinImportHandler;
 
53527
class WinMacros;
 
53528
class WinAsm;
 
53529
class WinDeclSpecs;
 
53530
class WinMemberExplSpec;
 
53531
class WinTypeKeywords;
 
53532
class WinFriend;
 
53533
class ExtAC;
 
53534
class ExtACBuilderCoupling;
 
53535
class ExtACSyntaxCoupling;
 
53536
class ExtACTree;
 
53537
class ExtACKeywords;
 
53538
class ExtGnu;
 
53539
class PragmaOnceUnitState;
 
53540
class PragmaOnce;
 
53541
class CMatchSyntax;
 
53542
namespace Puma {
 
53543
 
 
53544
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53545
 
 
53546
#line 53547 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53547
} // closed Puma
 
53548
 
 
53549
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53550
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53551
#include "CCExprResolveH.ah"
 
53552
#endif
 
53553
namespace Puma {
 
53554
 
 
53555
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53556
 
 
53557
#line 53558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53558
} // closed Puma
 
53559
 
 
53560
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53561
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53562
#include "CExprResolveH.ah"
 
53563
#endif
 
53564
namespace Puma {
 
53565
 
 
53566
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53567
class CT_SimpleName : public CT_List, public Printable, 
 
53568
                      public CSemValue, public CSemObject {
 
53569
#line 53570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53570
  friend class ::CCExprResolve;
 
53571
  friend class ::CExprResolve;
 
53572
  friend class ::WinIfExists;
 
53573
  friend class ::WinImportHandler;
 
53574
  friend class ::WinMacros;
 
53575
  friend class ::WinAsm;
 
53576
  friend class ::WinDeclSpecs;
 
53577
  friend class ::WinMemberExplSpec;
 
53578
  friend class ::WinTypeKeywords;
 
53579
  friend class ::WinFriend;
 
53580
  friend class ::ExtAC;
 
53581
  friend class ::ExtACBuilderCoupling;
 
53582
  friend class ::ExtACSyntaxCoupling;
 
53583
  friend class ::ExtACTree;
 
53584
  friend class ::ExtACKeywords;
 
53585
  friend class ::ExtGnu;
 
53586
  friend class ::PragmaOnceUnitState;
 
53587
  friend class ::PragmaOnce;
 
53588
  friend class ::CMatchSyntax;
 
53589
 
 
53590
#line 905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53591
 
 
53592
protected:
 
53593
  /** Constructor.
 
53594
   *  \param size The number of sub-names (for qualified names). */
 
53595
  CT_SimpleName (int size) : CT_List (size, 1) {}
 
53596
  /** Constructor.
 
53597
   *  \param size The number of sub-names (for qualified names). 
 
53598
   *  \param properties Additional name list properties (for root qualified names). */
 
53599
  CT_SimpleName (int size, int properties) : 
 
53600
    CT_List (size, 2, properties) {}
 
53601
  
 
53602
public:
 
53603
  /** Constructor.
 
53604
   *  \param n The sub-tree containing the name. */
 
53605
  CT_SimpleName (CTree *n) : CT_List (1, 1) { AddSon (n); }
 
53606
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53607
  static const char *NodeId ();
 
53608
  /** Get the name of the node. Can be compared with NodeId(). */
 
53609
  const char *NodeName () const { return NodeId (); }
 
53610
  /** Get the string containing the name. */
 
53611
  virtual const char *Text () const 
 
53612
   { return Son (Sons ()-1)->token ()->text (); }
 
53613
  /** Print the name on the given stream. 
 
53614
   *  \param os The output stream. */
 
53615
  virtual void print (ostream &os) const { os << Text (); }
 
53616
  /** Get this. */
 
53617
  virtual CT_SimpleName *Name () const { return (CT_SimpleName*)this; }
 
53618
  /** Get the type of the entity represented by the name. */
 
53619
  CTypeInfo *Type () const { return type; }
 
53620
  /** Get the value of the entity represented by the name. */ 
 
53621
  CExprValue *Value () const { return value; }
 
53622
  /** Get the sematic value information of the name. */
 
53623
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
53624
  /** Get the sematic information about the name. */
 
53625
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
53626
  /** Get this. */
 
53627
  virtual CT_SimpleName *IsSimpleName () { return this; }  
 
53628
 
 
53629
public:
 
53630
  /** Own new operator reusing memory. */
 
53631
  void *operator new (size_t);
 
53632
  /** Own delete operator. */
 
53633
  void operator delete (void *);
 
53634
   private:
 
53635
  typedef CT_SimpleName CCExprResolveExpr;
 
53636
 
 
53637
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53638
 public :
 
53639
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53640
  typedef CT_SimpleName CExprResolveExpr;
 
53641
 
 
53642
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53643
 public :
 
53644
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53645
  typedef AC::TLE __AttrTypes;
 
53646
  const char *__attr_name (unsigned i) const { return 0; }
 
53647
  const void *__attr (unsigned __i) const { return 0; }
 
53648
#line 948 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53649
};
 
53650
 
 
53651
/** \class CT_SpecialName CTree.h Puma/CTree.h
 
53652
 *  Base class for tree nodes representing a special name, like destructor names. */
 
53653
 
 
53654
#line 53655 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53655
} // closed Puma
 
53656
class CCExprResolve;
 
53657
class CExprResolve;
 
53658
class WinIfExists;
 
53659
class WinImportHandler;
 
53660
class WinMacros;
 
53661
class WinAsm;
 
53662
class WinDeclSpecs;
 
53663
class WinMemberExplSpec;
 
53664
class WinTypeKeywords;
 
53665
class WinFriend;
 
53666
class ExtAC;
 
53667
class ExtACBuilderCoupling;
 
53668
class ExtACSyntaxCoupling;
 
53669
class ExtACTree;
 
53670
class ExtACKeywords;
 
53671
class ExtGnu;
 
53672
class PragmaOnceUnitState;
 
53673
class PragmaOnce;
 
53674
class CMatchSyntax;
 
53675
namespace Puma {
 
53676
 
 
53677
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53678
 
 
53679
#line 53680 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53680
} // closed Puma
 
53681
 
 
53682
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53683
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53684
#include "CCExprResolveH.ah"
 
53685
#endif
 
53686
namespace Puma {
 
53687
 
 
53688
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53689
 
 
53690
#line 53691 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53691
} // closed Puma
 
53692
 
 
53693
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53694
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53695
#include "CExprResolveH.ah"
 
53696
#endif
 
53697
namespace Puma {
 
53698
 
 
53699
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53700
class CT_SpecialName : public CT_SimpleName {
 
53701
#line 53702 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53702
  friend class ::CCExprResolve;
 
53703
  friend class ::CExprResolve;
 
53704
  friend class ::WinIfExists;
 
53705
  friend class ::WinImportHandler;
 
53706
  friend class ::WinMacros;
 
53707
  friend class ::WinAsm;
 
53708
  friend class ::WinDeclSpecs;
 
53709
  friend class ::WinMemberExplSpec;
 
53710
  friend class ::WinTypeKeywords;
 
53711
  friend class ::WinFriend;
 
53712
  friend class ::ExtAC;
 
53713
  friend class ::ExtACBuilderCoupling;
 
53714
  friend class ::ExtACSyntaxCoupling;
 
53715
  friend class ::ExtACTree;
 
53716
  friend class ::ExtACKeywords;
 
53717
  friend class ::ExtGnu;
 
53718
  friend class ::PragmaOnceUnitState;
 
53719
  friend class ::PragmaOnce;
 
53720
  friend class ::CMatchSyntax;
 
53721
 
 
53722
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53723
 
 
53724
  char *_name;
 
53725
  
 
53726
protected:
 
53727
  /** Constructor.
 
53728
   *  \param size The number of sub-names (for qualified names). */
 
53729
  CT_SpecialName (int size = 1) : CT_SimpleName (size), _name (0) {}
 
53730
  
 
53731
public:
 
53732
  /** Destructor. Deletes the name string. */
 
53733
  ~CT_SpecialName () { if (_name) delete[] _name; }
 
53734
  /** Get the string containing the name. */
 
53735
  const char *Text () const { return _name; }
 
53736
  /** Set the name. The name is copied.
 
53737
   *  \param n The name. */
 
53738
  void Name (const char *n) { 
 
53739
    if (n) { 
 
53740
      _name = new char[strlen(n) + 1];
 
53741
      strcpy (_name,n);
 
53742
    }
 
53743
  }
 
53744
 
 
53745
public:
 
53746
  /** Own new operator reusing memory. */
 
53747
  void *operator new (size_t);
 
53748
  /** Own delete operator. */
 
53749
  void operator delete (void *);
 
53750
   private:
 
53751
  typedef CT_SpecialName CCExprResolveExpr;
 
53752
 
 
53753
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53754
 public :
 
53755
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53756
  typedef CT_SpecialName CExprResolveExpr;
 
53757
 
 
53758
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53759
 public :
 
53760
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53761
  typedef AC::TL<char *,AC::TLE > __AttrTypes;
 
53762
  const char *__attr_name (unsigned i) const {
 
53763
    static const char *names[] = { "_name" }; return names[i];
 
53764
  }
 
53765
  const void *__attr (unsigned __i) const {
 
53766
    switch (__i) { case 0: return &_name; default: return 0; }
 
53767
  }
 
53768
#line 979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53769
};
 
53770
 
 
53771
/** \class CT_PrivateName CTree.h Puma/CTree.h
 
53772
 *  Tree node representing a private name. Private names 
 
53773
 *  are generated names for instance for abstract declarators.
 
53774
 *  Example: 
 
53775
 *  \code 
 
53776
 * void foo(int*);  // first parameter of foo has private name
 
53777
 *  \endcode */
 
53778
 
 
53779
#line 53780 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53780
} // closed Puma
 
53781
class CCExprResolve;
 
53782
class CExprResolve;
 
53783
class WinIfExists;
 
53784
class WinImportHandler;
 
53785
class WinMacros;
 
53786
class WinAsm;
 
53787
class WinDeclSpecs;
 
53788
class WinMemberExplSpec;
 
53789
class WinTypeKeywords;
 
53790
class WinFriend;
 
53791
class ExtAC;
 
53792
class ExtACBuilderCoupling;
 
53793
class ExtACSyntaxCoupling;
 
53794
class ExtACTree;
 
53795
class ExtACKeywords;
 
53796
class ExtGnu;
 
53797
class PragmaOnceUnitState;
 
53798
class PragmaOnce;
 
53799
class CMatchSyntax;
 
53800
namespace Puma {
 
53801
 
 
53802
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53803
 
 
53804
#line 53805 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53805
} // closed Puma
 
53806
 
 
53807
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53808
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53809
#include "CCExprResolveH.ah"
 
53810
#endif
 
53811
namespace Puma {
 
53812
 
 
53813
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53814
 
 
53815
#line 53816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53816
} // closed Puma
 
53817
 
 
53818
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53819
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53820
#include "CExprResolveH.ah"
 
53821
#endif
 
53822
namespace Puma {
 
53823
 
 
53824
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53825
class CT_PrivateName : public CT_SpecialName {
 
53826
#line 53827 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53827
  friend class ::CCExprResolve;
 
53828
  friend class ::CExprResolve;
 
53829
  friend class ::WinIfExists;
 
53830
  friend class ::WinImportHandler;
 
53831
  friend class ::WinMacros;
 
53832
  friend class ::WinAsm;
 
53833
  friend class ::WinDeclSpecs;
 
53834
  friend class ::WinMemberExplSpec;
 
53835
  friend class ::WinTypeKeywords;
 
53836
  friend class ::WinFriend;
 
53837
  friend class ::ExtAC;
 
53838
  friend class ::ExtACBuilderCoupling;
 
53839
  friend class ::ExtACSyntaxCoupling;
 
53840
  friend class ::ExtACTree;
 
53841
  friend class ::ExtACKeywords;
 
53842
  friend class ::ExtGnu;
 
53843
  friend class ::PragmaOnceUnitState;
 
53844
  friend class ::PragmaOnce;
 
53845
  friend class ::CMatchSyntax;
 
53846
 
 
53847
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53848
 
 
53849
public:
 
53850
  /** Constructor.
 
53851
   *  \param n The private (generated) name. */
 
53852
  CT_PrivateName (const char *n) { Name (n); }
 
53853
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53854
  static const char *NodeId ();
 
53855
  /** Get the name of the node. Can be compared with NodeId(). */
 
53856
  const char *NodeName () const { return NodeId (); }
 
53857
  /** Get the number of sons. */
 
53858
  int Sons () const { return 0; }
 
53859
  /** Get the n-th son.
 
53860
   *  \param n The index of the son.
 
53861
   *  \return The n-th son or NULL. */
 
53862
  CTree *Son (int n) const { return (CTree*)0; }
 
53863
 
 
53864
public:
 
53865
  /** Own new operator reusing memory. */
 
53866
  void *operator new (size_t);
 
53867
  /** Own delete operator. */
 
53868
  void operator delete (void *);
 
53869
   private:
 
53870
  typedef CT_PrivateName CCExprResolveExpr;
 
53871
 
 
53872
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53873
 public :
 
53874
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53875
  typedef CT_PrivateName CExprResolveExpr;
 
53876
 
 
53877
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53878
 public :
 
53879
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53880
  typedef AC::TLE __AttrTypes;
 
53881
  const char *__attr_name (unsigned i) const { return 0; }
 
53882
  const void *__attr (unsigned __i) const { return 0; }
 
53883
#line 1009 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53884
};
 
53885
 
 
53886
/** \class CT_DestructorName CTree.h Puma/CTree.h
 
53887
 *  Tree node representing a destructor name.
 
53888
 *  Example: \code ~X \endcode */
 
53889
 
 
53890
#line 53891 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53891
} // closed Puma
 
53892
class CCExprResolve;
 
53893
class CExprResolve;
 
53894
class WinIfExists;
 
53895
class WinImportHandler;
 
53896
class WinMacros;
 
53897
class WinAsm;
 
53898
class WinDeclSpecs;
 
53899
class WinMemberExplSpec;
 
53900
class WinTypeKeywords;
 
53901
class WinFriend;
 
53902
class ExtAC;
 
53903
class ExtACBuilderCoupling;
 
53904
class ExtACSyntaxCoupling;
 
53905
class ExtACTree;
 
53906
class ExtACKeywords;
 
53907
class ExtGnu;
 
53908
class PragmaOnceUnitState;
 
53909
class PragmaOnce;
 
53910
class CMatchSyntax;
 
53911
namespace Puma {
 
53912
 
 
53913
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53914
 
 
53915
#line 53916 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53916
} // closed Puma
 
53917
 
 
53918
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53919
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53920
#include "CCExprResolveH.ah"
 
53921
#endif
 
53922
namespace Puma {
 
53923
 
 
53924
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53925
 
 
53926
#line 53927 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53927
} // closed Puma
 
53928
 
 
53929
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53930
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53931
#include "CExprResolveH.ah"
 
53932
#endif
 
53933
namespace Puma {
 
53934
 
 
53935
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53936
class CT_DestructorName : public CT_SpecialName {
 
53937
#line 53938 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53938
  friend class ::CCExprResolve;
 
53939
  friend class ::CExprResolve;
 
53940
  friend class ::WinIfExists;
 
53941
  friend class ::WinImportHandler;
 
53942
  friend class ::WinMacros;
 
53943
  friend class ::WinAsm;
 
53944
  friend class ::WinDeclSpecs;
 
53945
  friend class ::WinMemberExplSpec;
 
53946
  friend class ::WinTypeKeywords;
 
53947
  friend class ::WinFriend;
 
53948
  friend class ::ExtAC;
 
53949
  friend class ::ExtACBuilderCoupling;
 
53950
  friend class ::ExtACSyntaxCoupling;
 
53951
  friend class ::ExtACTree;
 
53952
  friend class ::ExtACKeywords;
 
53953
  friend class ::ExtGnu;
 
53954
  friend class ::PragmaOnceUnitState;
 
53955
  friend class ::PragmaOnce;
 
53956
  friend class ::CMatchSyntax;
 
53957
 
 
53958
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53959
 
 
53960
public:
 
53961
  /** Constructor.
 
53962
   *  \param t The tilde operator.
 
53963
   *  \param n The class name. */
 
53964
  CT_DestructorName (CTree *t, CTree *n);
 
53965
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53966
  static const char *NodeId ();
 
53967
  /** Get the name of the node. Can be compared with NodeId(). */
 
53968
  const char *NodeName () const { return NodeId (); }
 
53969
 
 
53970
public:
 
53971
  /** Own new operator reusing memory. */
 
53972
  void *operator new (size_t);
 
53973
  /** Own delete operator. */
 
53974
  void operator delete (void *);
 
53975
   private:
 
53976
  typedef CT_DestructorName CCExprResolveExpr;
 
53977
 
 
53978
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53979
 public :
 
53980
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53981
  typedef CT_DestructorName CExprResolveExpr;
 
53982
 
 
53983
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53984
 public :
 
53985
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53986
  typedef AC::TLE __AttrTypes;
 
53987
  const char *__attr_name (unsigned i) const { return 0; }
 
53988
  const void *__attr (unsigned __i) const { return 0; }
 
53989
#line 1030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53990
};
 
53991
 
 
53992
/** \class CT_TemplateName CTree.h Puma/CTree.h
 
53993
 *  Tree node representing a template name.
 
53994
 *  Example: \code X<T> \endcode */
 
53995
 
 
53996
#line 53997 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
53997
} // closed Puma
 
53998
class CCExprResolve;
 
53999
class CExprResolve;
 
54000
class WinIfExists;
 
54001
class WinImportHandler;
 
54002
class WinMacros;
 
54003
class WinAsm;
 
54004
class WinDeclSpecs;
 
54005
class WinMemberExplSpec;
 
54006
class WinTypeKeywords;
 
54007
class WinFriend;
 
54008
class ExtAC;
 
54009
class ExtACBuilderCoupling;
 
54010
class ExtACSyntaxCoupling;
 
54011
class ExtACTree;
 
54012
class ExtACKeywords;
 
54013
class ExtGnu;
 
54014
class PragmaOnceUnitState;
 
54015
class PragmaOnce;
 
54016
class CMatchSyntax;
 
54017
namespace Puma {
 
54018
 
 
54019
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54020
 
 
54021
#line 54022 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54022
} // closed Puma
 
54023
 
 
54024
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54025
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54026
#include "CCExprResolveH.ah"
 
54027
#endif
 
54028
namespace Puma {
 
54029
 
 
54030
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54031
 
 
54032
#line 54033 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54033
} // closed Puma
 
54034
 
 
54035
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54036
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54037
#include "CExprResolveH.ah"
 
54038
#endif
 
54039
namespace Puma {
 
54040
 
 
54041
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54042
class CT_TemplateName : public CT_SpecialName {
 
54043
#line 54044 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54044
  friend class ::CCExprResolve;
 
54045
  friend class ::CExprResolve;
 
54046
  friend class ::WinIfExists;
 
54047
  friend class ::WinImportHandler;
 
54048
  friend class ::WinMacros;
 
54049
  friend class ::WinAsm;
 
54050
  friend class ::WinDeclSpecs;
 
54051
  friend class ::WinMemberExplSpec;
 
54052
  friend class ::WinTypeKeywords;
 
54053
  friend class ::WinFriend;
 
54054
  friend class ::ExtAC;
 
54055
  friend class ::ExtACBuilderCoupling;
 
54056
  friend class ::ExtACSyntaxCoupling;
 
54057
  friend class ::ExtACTree;
 
54058
  friend class ::ExtACKeywords;
 
54059
  friend class ::ExtGnu;
 
54060
  friend class ::PragmaOnceUnitState;
 
54061
  friend class ::PragmaOnce;
 
54062
  friend class ::CMatchSyntax;
 
54063
 
 
54064
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54065
 
 
54066
public:
 
54067
  /** Constructor.
 
54068
   *  \param n The template class or function name.
 
54069
   *  \param a The template argument list. */
 
54070
  CT_TemplateName (CTree *n, CTree *a) 
 
54071
   { AddSon (n); AddSon (a); }
 
54072
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54073
  static const char *NodeId ();
 
54074
  /** Get the name of the node. Can be compared with NodeId(). */
 
54075
  const char *NodeName () const { return NodeId (); }
 
54076
  /** Get the template argument list. */
 
54077
  CT_TemplateArgList *Arguments () const 
 
54078
   { return (CT_TemplateArgList*)Son (Sons ()-1); }
 
54079
  /** Get the template class or function name. */
 
54080
  CT_SimpleName *TemplateName () const 
 
54081
   { return (CT_SimpleName*)Son (Sons ()-2); }
 
54082
  // may change in the future
 
54083
  const char *Text () const { return TemplateName ()->Text (); }
 
54084
 
 
54085
public:
 
54086
  /** Own new operator reusing memory. */
 
54087
  void *operator new (size_t);
 
54088
  /** Own delete operator. */
 
54089
  void operator delete (void *);
 
54090
   private:
 
54091
  typedef CT_TemplateName CCExprResolveExpr;
 
54092
 
 
54093
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
54094
 public :
 
54095
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
54096
  typedef CT_TemplateName CExprResolveExpr;
 
54097
 
 
54098
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
54099
 public :
 
54100
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
54101
  typedef AC::TLE __AttrTypes;
 
54102
  const char *__attr_name (unsigned i) const { return 0; }
 
54103
  const void *__attr (unsigned __i) const { return 0; }
 
54104
#line 1060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54105
};
 
54106
 
 
54107
/** \class CT_OperatorName CTree.h Puma/CTree.h
 
54108
 *  Tree node representing the name of an overloaded operator. 
 
54109
 *  Example: \code operator== \endcode */
 
54110
 
 
54111
#line 54112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54112
} // closed Puma
 
54113
class CCExprResolve;
 
54114
class CExprResolve;
 
54115
class WinIfExists;
 
54116
class WinImportHandler;
 
54117
class WinMacros;
 
54118
class WinAsm;
 
54119
class WinDeclSpecs;
 
54120
class WinMemberExplSpec;
 
54121
class WinTypeKeywords;
 
54122
class WinFriend;
 
54123
class ExtAC;
 
54124
class ExtACBuilderCoupling;
 
54125
class ExtACSyntaxCoupling;
 
54126
class ExtACTree;
 
54127
class ExtACKeywords;
 
54128
class ExtGnu;
 
54129
class PragmaOnceUnitState;
 
54130
class PragmaOnce;
 
54131
class CMatchSyntax;
 
54132
namespace Puma {
 
54133
 
 
54134
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54135
 
 
54136
#line 54137 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54137
} // closed Puma
 
54138
 
 
54139
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54140
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54141
#include "CCExprResolveH.ah"
 
54142
#endif
 
54143
namespace Puma {
 
54144
 
 
54145
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54146
 
 
54147
#line 54148 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54148
} // closed Puma
 
54149
 
 
54150
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54151
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54152
#include "CExprResolveH.ah"
 
54153
#endif
 
54154
namespace Puma {
 
54155
 
 
54156
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54157
class CT_OperatorName : public CT_SpecialName {
 
54158
#line 54159 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54159
  friend class ::CCExprResolve;
 
54160
  friend class ::CExprResolve;
 
54161
  friend class ::WinIfExists;
 
54162
  friend class ::WinImportHandler;
 
54163
  friend class ::WinMacros;
 
54164
  friend class ::WinAsm;
 
54165
  friend class ::WinDeclSpecs;
 
54166
  friend class ::WinMemberExplSpec;
 
54167
  friend class ::WinTypeKeywords;
 
54168
  friend class ::WinFriend;
 
54169
  friend class ::ExtAC;
 
54170
  friend class ::ExtACBuilderCoupling;
 
54171
  friend class ::ExtACSyntaxCoupling;
 
54172
  friend class ::ExtACTree;
 
54173
  friend class ::ExtACKeywords;
 
54174
  friend class ::ExtGnu;
 
54175
  friend class ::PragmaOnceUnitState;
 
54176
  friend class ::PragmaOnce;
 
54177
  friend class ::CMatchSyntax;
 
54178
 
 
54179
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54180
 
 
54181
  int _oper;
 
54182
 
 
54183
public:
 
54184
  /** Complex operator types. */
 
54185
  enum { 
 
54186
    FCT_CALL = -100,  /** Function call operator, i.e. (). */
 
54187
    SUBSCRIPT,        /** Array subscript operator, i.e. []. */
 
54188
    NEW_ARRAY,        /** New array operator, i.e. new[]. */
 
54189
    DEL_ARRAY         /** Delete array operator, i.e. delete[]. */
 
54190
  };
 
54191
 
 
54192
public:
 
54193
  /** Constructor.
 
54194
   *  \param op The token containing the operator. */
 
54195
  CT_OperatorName (CTree *op);
 
54196
  /** Constructor.
 
54197
   *  \param f The operator function keyword 'operator'.
 
54198
   *  \param op The token containing the operator. 
 
54199
   *  \param o The token of '[' or '('.
 
54200
   *  \param c The token of ']' or ')'. */
 
54201
  CT_OperatorName (CTree *f, CTree *op, CTree *o, CTree *c);
 
54202
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54203
  static const char *NodeId ();
 
54204
  /** Get the name of the node. Can be compared with NodeId(). */
 
54205
  const char *NodeName () const { return NodeId (); }
 
54206
  /** Get the operator type (either the token type or one of 
 
54207
   *  the complex operator types). */
 
54208
  int Operator () const { return _oper; }
 
54209
 
 
54210
public:
 
54211
  /** Own new operator reusing memory. */
 
54212
  void *operator new (size_t);
 
54213
  /** Own delete operator. */
 
54214
  void operator delete (void *);
 
54215
   private:
 
54216
  typedef CT_OperatorName CCExprResolveExpr;
 
54217
 
 
54218
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
54219
 public :
 
54220
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
54221
  typedef CT_OperatorName CExprResolveExpr;
 
54222
 
 
54223
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
54224
 public :
 
54225
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
54226
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
54227
  const char *__attr_name (unsigned i) const {
 
54228
    static const char *names[] = { "_oper" }; return names[i];
 
54229
  }
 
54230
  const void *__attr (unsigned __i) const {
 
54231
    switch (__i) { case 0: return &_oper; default: return 0; }
 
54232
  }
 
54233
#line 1100 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54234
};
 
54235
 
 
54236
/** \class CT_ConversionName CTree.h Puma/CTree.h
 
54237
 *  Tree node representing the name of a conversion function.
 
54238
 *  Example: \code operator int* \endcode */
 
54239
 
 
54240
#line 54241 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54241
} // closed Puma
 
54242
class CCExprResolve;
 
54243
class CExprResolve;
 
54244
class WinIfExists;
 
54245
class WinImportHandler;
 
54246
class WinMacros;
 
54247
class WinAsm;
 
54248
class WinDeclSpecs;
 
54249
class WinMemberExplSpec;
 
54250
class WinTypeKeywords;
 
54251
class WinFriend;
 
54252
class ExtAC;
 
54253
class ExtACBuilderCoupling;
 
54254
class ExtACSyntaxCoupling;
 
54255
class ExtACTree;
 
54256
class ExtACKeywords;
 
54257
class ExtGnu;
 
54258
class PragmaOnceUnitState;
 
54259
class PragmaOnce;
 
54260
class CMatchSyntax;
 
54261
namespace Puma {
 
54262
 
 
54263
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54264
 
 
54265
#line 54266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54266
} // closed Puma
 
54267
 
 
54268
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54269
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54270
#include "CCExprResolveH.ah"
 
54271
#endif
 
54272
namespace Puma {
 
54273
 
 
54274
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54275
 
 
54276
#line 54277 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54277
} // closed Puma
 
54278
 
 
54279
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54280
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54281
#include "CExprResolveH.ah"
 
54282
#endif
 
54283
namespace Puma {
 
54284
 
 
54285
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54286
class CT_ConversionName : public CT_SpecialName {
 
54287
#line 54288 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54288
  friend class ::CCExprResolve;
 
54289
  friend class ::CExprResolve;
 
54290
  friend class ::WinIfExists;
 
54291
  friend class ::WinImportHandler;
 
54292
  friend class ::WinMacros;
 
54293
  friend class ::WinAsm;
 
54294
  friend class ::WinDeclSpecs;
 
54295
  friend class ::WinMemberExplSpec;
 
54296
  friend class ::WinTypeKeywords;
 
54297
  friend class ::WinFriend;
 
54298
  friend class ::ExtAC;
 
54299
  friend class ::ExtACBuilderCoupling;
 
54300
  friend class ::ExtACSyntaxCoupling;
 
54301
  friend class ::ExtACTree;
 
54302
  friend class ::ExtACKeywords;
 
54303
  friend class ::ExtGnu;
 
54304
  friend class ::PragmaOnceUnitState;
 
54305
  friend class ::PragmaOnce;
 
54306
  friend class ::CMatchSyntax;
 
54307
 
 
54308
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54309
 
 
54310
public:
 
54311
  /** Constructor.
 
54312
   *  \param f The operator function keyword 'operator'.
 
54313
   *  \param t The sub-tree containing the conversion type. */
 
54314
  CT_ConversionName (CTree *f, CTree *t);
 
54315
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54316
  static const char *NodeId ();
 
54317
  /** Get the name of the node. Can be compared with NodeId(). */
 
54318
  const char *NodeName () const { return NodeId (); }
 
54319
  /** Get the conversion type. */
 
54320
  CT_NamedType *TypeName () const { return (CT_NamedType*)Son (Sons ()-1); }
 
54321
 
 
54322
public:
 
54323
  /** Own new operator reusing memory. */
 
54324
  void *operator new (size_t);
 
54325
  /** Own delete operator. */
 
54326
  void operator delete (void *);
 
54327
   private:
 
54328
  typedef CT_ConversionName CCExprResolveExpr;
 
54329
 
 
54330
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
54331
 public :
 
54332
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
54333
  typedef CT_ConversionName CExprResolveExpr;
 
54334
 
 
54335
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
54336
 public :
 
54337
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
54338
  typedef AC::TLE __AttrTypes;
 
54339
  const char *__attr_name (unsigned i) const { return 0; }
 
54340
  const void *__attr (unsigned __i) const { return 0; }
 
54341
#line 1123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54342
};
 
54343
 
 
54344
/** \class CT_QualName CTree.h Puma/CTree.h
 
54345
 *  Tree node representing a qualified name.
 
54346
 *  Example: \code X::Y::Z \endcode */
 
54347
 
 
54348
#line 54349 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54349
} // closed Puma
 
54350
class CCExprResolve;
 
54351
class CExprResolve;
 
54352
class WinIfExists;
 
54353
class WinImportHandler;
 
54354
class WinMacros;
 
54355
class WinAsm;
 
54356
class WinDeclSpecs;
 
54357
class WinMemberExplSpec;
 
54358
class WinTypeKeywords;
 
54359
class WinFriend;
 
54360
class ExtAC;
 
54361
class ExtACBuilderCoupling;
 
54362
class ExtACSyntaxCoupling;
 
54363
class ExtACTree;
 
54364
class ExtACKeywords;
 
54365
class ExtGnu;
 
54366
class PragmaOnceUnitState;
 
54367
class PragmaOnce;
 
54368
class CMatchSyntax;
 
54369
namespace Puma {
 
54370
 
 
54371
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54372
 
 
54373
#line 54374 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54374
} // closed Puma
 
54375
 
 
54376
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54377
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54378
#include "CCExprResolveH.ah"
 
54379
#endif
 
54380
namespace Puma {
 
54381
 
 
54382
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54383
 
 
54384
#line 54385 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54385
} // closed Puma
 
54386
 
 
54387
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54388
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54389
#include "CExprResolveH.ah"
 
54390
#endif
 
54391
namespace Puma {
 
54392
 
 
54393
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54394
class CT_QualName : public CT_SimpleName {
 
54395
#line 54396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54396
  friend class ::CCExprResolve;
 
54397
  friend class ::CExprResolve;
 
54398
  friend class ::WinIfExists;
 
54399
  friend class ::WinImportHandler;
 
54400
  friend class ::WinMacros;
 
54401
  friend class ::WinAsm;
 
54402
  friend class ::WinDeclSpecs;
 
54403
  friend class ::WinMemberExplSpec;
 
54404
  friend class ::WinTypeKeywords;
 
54405
  friend class ::WinFriend;
 
54406
  friend class ::ExtAC;
 
54407
  friend class ::ExtACBuilderCoupling;
 
54408
  friend class ::ExtACSyntaxCoupling;
 
54409
  friend class ::ExtACTree;
 
54410
  friend class ::ExtACKeywords;
 
54411
  friend class ::ExtGnu;
 
54412
  friend class ::PragmaOnceUnitState;
 
54413
  friend class ::PragmaOnce;
 
54414
  friend class ::CMatchSyntax;
 
54415
 
 
54416
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54417
 
 
54418
public:
 
54419
  /** Constructor.
 
54420
   *  \param size The initial number sub-names plus separators. */
 
54421
  CT_QualName (int size = 3) : 
 
54422
    CT_SimpleName (size, CT_List::SEPARATORS) {}
 
54423
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54424
  static const char *NodeId ();
 
54425
  /** Get the name of the node. Can be compared with NodeId(). */
 
54426
  const char *NodeName () const { return NodeId (); }
 
54427
  /** Print the qualified name on the given stream. 
 
54428
   *  \param os The output stream. */
 
54429
  void print (ostream &os) const;
 
54430
  /** Get the last name of the qualified name, e.g. Z of qualified name X::Y::Z. */
 
54431
  CT_SimpleName *Name () const { return (CT_SimpleName*)Son (Sons ()-1); }
 
54432
  /** Get the string containing the last name of the qualified name. */
 
54433
  const char *Text () const { return Name ()->Text (); }
 
54434
  /** Get the type of the last name. */
 
54435
  CTypeInfo *Type () const { return Name ()->Type (); }
 
54436
  /** Get the value of the last name. */
 
54437
  CExprValue *Value () const { return Name ()->Value (); }
 
54438
  /** Get the semantic value object of the last name. */
 
54439
  CSemValue *SemValue () const { return Name ()->SemValue (); }
 
54440
  /** Get the semantic information of the last name. */
 
54441
  CSemObject *SemObject () const { return Name ()->SemObject (); }
 
54442
 
 
54443
public:
 
54444
  /** Own new operator reusing memory. */
 
54445
  void *operator new (size_t);
 
54446
  /** Own delete operator. */
 
54447
  void operator delete (void *);
 
54448
   private:
 
54449
  typedef CT_QualName CCExprResolveExpr;
 
54450
 
 
54451
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
54452
 public :
 
54453
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
54454
  typedef CT_QualName CExprResolveExpr;
 
54455
 
 
54456
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
54457
 public :
 
54458
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
54459
  typedef AC::TLE __AttrTypes;
 
54460
  const char *__attr_name (unsigned i) const { return 0; }
 
54461
  const void *__attr (unsigned __i) const { return 0; }
 
54462
#line 1159 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54463
};
 
54464
 
 
54465
/** \class CT_RootQualName CTree.h Puma/CTree.h
 
54466
 *  Tree node representing a qualified name with introducing name separator.
 
54467
 *  Example: \code ::X::Y::Z \endcode */
 
54468
 
 
54469
#line 54470 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54470
} // closed Puma
 
54471
class CCExprResolve;
 
54472
class CExprResolve;
 
54473
class WinIfExists;
 
54474
class WinImportHandler;
 
54475
class WinMacros;
 
54476
class WinAsm;
 
54477
class WinDeclSpecs;
 
54478
class WinMemberExplSpec;
 
54479
class WinTypeKeywords;
 
54480
class WinFriend;
 
54481
class ExtAC;
 
54482
class ExtACBuilderCoupling;
 
54483
class ExtACSyntaxCoupling;
 
54484
class ExtACTree;
 
54485
class ExtACKeywords;
 
54486
class ExtGnu;
 
54487
class PragmaOnceUnitState;
 
54488
class PragmaOnce;
 
54489
class CMatchSyntax;
 
54490
namespace Puma {
 
54491
 
 
54492
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54493
 
 
54494
#line 54495 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54495
} // closed Puma
 
54496
 
 
54497
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54498
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54499
#include "CCExprResolveH.ah"
 
54500
#endif
 
54501
namespace Puma {
 
54502
 
 
54503
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54504
 
 
54505
#line 54506 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54506
} // closed Puma
 
54507
 
 
54508
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54509
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54510
#include "CExprResolveH.ah"
 
54511
#endif
 
54512
namespace Puma {
 
54513
 
 
54514
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54515
class CT_RootQualName : public CT_QualName {
 
54516
#line 54517 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54517
  friend class ::CCExprResolve;
 
54518
  friend class ::CExprResolve;
 
54519
  friend class ::WinIfExists;
 
54520
  friend class ::WinImportHandler;
 
54521
  friend class ::WinMacros;
 
54522
  friend class ::WinAsm;
 
54523
  friend class ::WinDeclSpecs;
 
54524
  friend class ::WinMemberExplSpec;
 
54525
  friend class ::WinTypeKeywords;
 
54526
  friend class ::WinFriend;
 
54527
  friend class ::ExtAC;
 
54528
  friend class ::ExtACBuilderCoupling;
 
54529
  friend class ::ExtACSyntaxCoupling;
 
54530
  friend class ::ExtACTree;
 
54531
  friend class ::ExtACKeywords;
 
54532
  friend class ::ExtGnu;
 
54533
  friend class ::PragmaOnceUnitState;
 
54534
  friend class ::PragmaOnce;
 
54535
  friend class ::CMatchSyntax;
 
54536
 
 
54537
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54538
 
 
54539
public:
 
54540
  /** Constructor.
 
54541
   *  \param size Initial number of sub-name plus separator. */
 
54542
  CT_RootQualName (int size = 2) : 
 
54543
    CT_QualName (size) { AddProperties (INTRO); }
 
54544
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54545
  static const char *NodeId ();
 
54546
  /** Get the name of the node. Can be compared with NodeId(). */
 
54547
  const char *NodeName () const { return NodeId (); }
 
54548
 
 
54549
public:
 
54550
  /** Own new operator reusing memory. */
 
54551
  void *operator new (size_t);
 
54552
  /** Own delete operator. */
 
54553
  void operator delete (void *);
 
54554
   private:
 
54555
  typedef CT_RootQualName CCExprResolveExpr;
 
54556
 
 
54557
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
54558
 public :
 
54559
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
54560
  typedef CT_RootQualName CExprResolveExpr;
 
54561
 
 
54562
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
54563
 public :
 
54564
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
54565
  typedef AC::TLE __AttrTypes;
 
54566
  const char *__attr_name (unsigned i) const { return 0; }
 
54567
  const void *__attr (unsigned __i) const { return 0; }
 
54568
#line 1180 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54569
};
 
54570
 
 
54571
/** \class CT_BinaryExpr CTree.h Puma/CTree.h
 
54572
 *  Tree node representing a binary expression.
 
54573
 *  Example: \code a+b \endcode */
 
54574
 
 
54575
#line 54576 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54576
} // closed Puma
 
54577
class CCExprResolve;
 
54578
class CExprResolve;
 
54579
class WinIfExists;
 
54580
class WinImportHandler;
 
54581
class WinMacros;
 
54582
class WinAsm;
 
54583
class WinDeclSpecs;
 
54584
class WinMemberExplSpec;
 
54585
class WinTypeKeywords;
 
54586
class WinFriend;
 
54587
class ExtAC;
 
54588
class ExtACBuilderCoupling;
 
54589
class ExtACSyntaxCoupling;
 
54590
class ExtACTree;
 
54591
class ExtACKeywords;
 
54592
class ExtGnu;
 
54593
class PragmaOnceUnitState;
 
54594
class PragmaOnce;
 
54595
class CMatchSyntax;
 
54596
namespace Puma {
 
54597
 
 
54598
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54599
 
 
54600
#line 54601 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54601
} // closed Puma
 
54602
 
 
54603
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54604
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54605
#include "CCExprResolveH.ah"
 
54606
#endif
 
54607
namespace Puma {
 
54608
 
 
54609
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54610
 
 
54611
#line 54612 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54612
} // closed Puma
 
54613
 
 
54614
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54615
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54616
#include "CExprResolveH.ah"
 
54617
#endif
 
54618
namespace Puma {
 
54619
 
 
54620
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54621
class CT_BinaryExpr : public CT_Call {
 
54622
#line 54623 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54623
  friend class ::CCExprResolve;
 
54624
  friend class ::CExprResolve;
 
54625
  friend class ::WinIfExists;
 
54626
  friend class ::WinImportHandler;
 
54627
  friend class ::WinMacros;
 
54628
  friend class ::WinAsm;
 
54629
  friend class ::WinDeclSpecs;
 
54630
  friend class ::WinMemberExplSpec;
 
54631
  friend class ::WinTypeKeywords;
 
54632
  friend class ::WinFriend;
 
54633
  friend class ::ExtAC;
 
54634
  friend class ::ExtACBuilderCoupling;
 
54635
  friend class ::ExtACSyntaxCoupling;
 
54636
  friend class ::ExtACTree;
 
54637
  friend class ::ExtACKeywords;
 
54638
  friend class ::ExtGnu;
 
54639
  friend class ::PragmaOnceUnitState;
 
54640
  friend class ::PragmaOnce;
 
54641
  friend class ::CMatchSyntax;
 
54642
 
 
54643
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54644
 
 
54645
  CTree *sons[3]; // expr, oper, expr
 
54646
 
 
54647
public:
 
54648
  /** Constructor. 
 
54649
   *  \param l Left hand side of the expression. 
 
54650
   *  \param o The operator token. 
 
54651
   *  \param r Right hand side of the expression. */
 
54652
  CT_BinaryExpr (CTree *l, CTree *o, CTree *r) {
 
54653
    AddSon (sons[0], l); AddSon (sons[1], o); AddSon (sons[2], r);
 
54654
  }
 
54655
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54656
  static const char *NodeId ();
 
54657
  /** Get the name of the node. Can be compared with NodeId(). */
 
54658
  const char *NodeName () const { return NodeId (); }
 
54659
  /** Get the number of sons. */
 
54660
  int Sons () const { return 3; }
 
54661
  /** Get the n-th son.
 
54662
   *  \param n The index of the son.
 
54663
   *  \return The n-th son or NULL. */
 
54664
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
54665
  /** Replace a son.
 
54666
   *  \param old_son The son to replace.
 
54667
   *  \param new_son The new son. */
 
54668
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54669
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
54670
  }
 
54671
   private:
 
54672
  typedef CT_BinaryExpr CCExprResolveExpr;
 
54673
 
 
54674
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
54675
 public :
 
54676
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
54677
  typedef CT_BinaryExpr CExprResolveExpr;
 
54678
 
 
54679
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
54680
 public :
 
54681
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
54682
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
54683
  const char *__attr_name (unsigned i) const {
 
54684
    static const char *names[] = { "sons" }; return names[i];
 
54685
  }
 
54686
  const void *__attr (unsigned __i) const {
 
54687
    switch (__i) { case 0: return &sons; default: return 0; }
 
54688
  }
 
54689
#line 1212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54690
};
 
54691
 
 
54692
/** \class CT_MembPtrExpr CTree.h Puma/CTree.h
 
54693
 *  Tree node representing a member pointer expression.
 
54694
 *  Example: \code a->b \endcode */
 
54695
 
 
54696
#line 54697 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54697
} // closed Puma
 
54698
class CCExprResolve;
 
54699
class CExprResolve;
 
54700
class WinIfExists;
 
54701
class WinImportHandler;
 
54702
class WinMacros;
 
54703
class WinAsm;
 
54704
class WinDeclSpecs;
 
54705
class WinMemberExplSpec;
 
54706
class WinTypeKeywords;
 
54707
class WinFriend;
 
54708
class ExtAC;
 
54709
class ExtACBuilderCoupling;
 
54710
class ExtACSyntaxCoupling;
 
54711
class ExtACTree;
 
54712
class ExtACKeywords;
 
54713
class ExtGnu;
 
54714
class PragmaOnceUnitState;
 
54715
class PragmaOnce;
 
54716
class CMatchSyntax;
 
54717
namespace Puma {
 
54718
 
 
54719
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54720
 
 
54721
#line 54722 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54722
} // closed Puma
 
54723
 
 
54724
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54725
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54726
#include "CCExprResolveH.ah"
 
54727
#endif
 
54728
namespace Puma {
 
54729
 
 
54730
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54731
 
 
54732
#line 54733 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54733
} // closed Puma
 
54734
 
 
54735
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54736
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54737
#include "CExprResolveH.ah"
 
54738
#endif
 
54739
namespace Puma {
 
54740
 
 
54741
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54742
class CT_MembPtrExpr : public CT_Expression, public CSemObject {
 
54743
#line 54744 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54744
  friend class ::CCExprResolve;
 
54745
  friend class ::CExprResolve;
 
54746
  friend class ::WinIfExists;
 
54747
  friend class ::WinImportHandler;
 
54748
  friend class ::WinMacros;
 
54749
  friend class ::WinAsm;
 
54750
  friend class ::WinDeclSpecs;
 
54751
  friend class ::WinMemberExplSpec;
 
54752
  friend class ::WinTypeKeywords;
 
54753
  friend class ::WinFriend;
 
54754
  friend class ::ExtAC;
 
54755
  friend class ::ExtACBuilderCoupling;
 
54756
  friend class ::ExtACSyntaxCoupling;
 
54757
  friend class ::ExtACTree;
 
54758
  friend class ::ExtACKeywords;
 
54759
  friend class ::ExtGnu;
 
54760
  friend class ::PragmaOnceUnitState;
 
54761
  friend class ::PragmaOnce;
 
54762
  friend class ::CMatchSyntax;
 
54763
 
 
54764
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54765
 
 
54766
  CTree *sons[3]; // expr, oper, expr
 
54767
  
 
54768
public:
 
54769
  /** Constructor.
 
54770
   *  \param e Expression on which to call the member.
 
54771
   *  \param o The arrow operator token.
 
54772
   *  \param i The member name. */
 
54773
  CT_MembPtrExpr (CTree *e, CTree *o, CTree *i) {
 
54774
    AddSon (sons[0], e); AddSon (sons[1], o); AddSon (sons[2], i);
 
54775
  }
 
54776
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54777
  static const char *NodeId ();
 
54778
  /** Get the name of the node. Can be compared with NodeId(). */
 
54779
  const char *NodeName () const { return NodeId (); }
 
54780
  /** Get the number of sons. */
 
54781
  int Sons () const { return 3; }
 
54782
  /** Get the n-th son.
 
54783
   *  \param n The index of the son.
 
54784
   *  \return The n-th son or NULL. */
 
54785
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
54786
  /** Replace a son.
 
54787
   *  \param old_son The son to replace.
 
54788
   *  \param new_son The new son. */
 
54789
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54790
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
54791
  }
 
54792
   private:
 
54793
  typedef CT_MembPtrExpr CCExprResolveExpr;
 
54794
 
 
54795
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
54796
 public :
 
54797
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
54798
  typedef CT_MembPtrExpr CExprResolveExpr;
 
54799
 
 
54800
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
54801
 public :
 
54802
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
54803
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
54804
  const char *__attr_name (unsigned i) const {
 
54805
    static const char *names[] = { "sons" }; return names[i];
 
54806
  }
 
54807
  const void *__attr (unsigned __i) const {
 
54808
    switch (__i) { case 0: return &sons; default: return 0; }
 
54809
  }
 
54810
#line 1244 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54811
};
 
54812
 
 
54813
/** \class CT_MembRefExpr CTree.h Puma/CTree.h
 
54814
 *  Tree node representing a member reference expression.
 
54815
 *  Example: \code a.b \endcode */
 
54816
 
 
54817
#line 54818 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54818
} // closed Puma
 
54819
class CCExprResolve;
 
54820
class CExprResolve;
 
54821
class WinIfExists;
 
54822
class WinImportHandler;
 
54823
class WinMacros;
 
54824
class WinAsm;
 
54825
class WinDeclSpecs;
 
54826
class WinMemberExplSpec;
 
54827
class WinTypeKeywords;
 
54828
class WinFriend;
 
54829
class ExtAC;
 
54830
class ExtACBuilderCoupling;
 
54831
class ExtACSyntaxCoupling;
 
54832
class ExtACTree;
 
54833
class ExtACKeywords;
 
54834
class ExtGnu;
 
54835
class PragmaOnceUnitState;
 
54836
class PragmaOnce;
 
54837
class CMatchSyntax;
 
54838
namespace Puma {
 
54839
 
 
54840
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54841
 
 
54842
#line 54843 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54843
} // closed Puma
 
54844
 
 
54845
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54846
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54847
#include "CCExprResolveH.ah"
 
54848
#endif
 
54849
namespace Puma {
 
54850
 
 
54851
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54852
 
 
54853
#line 54854 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54854
} // closed Puma
 
54855
 
 
54856
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54857
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54858
#include "CExprResolveH.ah"
 
54859
#endif
 
54860
namespace Puma {
 
54861
 
 
54862
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54863
class CT_MembRefExpr : public CT_MembPtrExpr {
 
54864
#line 54865 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54865
  friend class ::CCExprResolve;
 
54866
  friend class ::CExprResolve;
 
54867
  friend class ::WinIfExists;
 
54868
  friend class ::WinImportHandler;
 
54869
  friend class ::WinMacros;
 
54870
  friend class ::WinAsm;
 
54871
  friend class ::WinDeclSpecs;
 
54872
  friend class ::WinMemberExplSpec;
 
54873
  friend class ::WinTypeKeywords;
 
54874
  friend class ::WinFriend;
 
54875
  friend class ::ExtAC;
 
54876
  friend class ::ExtACBuilderCoupling;
 
54877
  friend class ::ExtACSyntaxCoupling;
 
54878
  friend class ::ExtACTree;
 
54879
  friend class ::ExtACKeywords;
 
54880
  friend class ::ExtGnu;
 
54881
  friend class ::PragmaOnceUnitState;
 
54882
  friend class ::PragmaOnce;
 
54883
  friend class ::CMatchSyntax;
 
54884
 
 
54885
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54886
 
 
54887
public:
 
54888
  /** Constructor.
 
54889
   *  \param e Expression on which to call the member.
 
54890
   *  \param o The dot operator.
 
54891
   *  \param i The member name. */
 
54892
  CT_MembRefExpr (CTree *e, CTree *o, CTree *i) :
 
54893
    CT_MembPtrExpr (e, o, i) {}
 
54894
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54895
  static const char *NodeId ();
 
54896
  /** Get the name of the node. Can be compared with NodeId(). */
 
54897
  const char *NodeName () const { return NodeId (); }
 
54898
   private:
 
54899
  typedef CT_MembRefExpr CCExprResolveExpr;
 
54900
 
 
54901
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
54902
 public :
 
54903
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
54904
  typedef CT_MembRefExpr CExprResolveExpr;
 
54905
 
 
54906
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
54907
 public :
 
54908
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
54909
  typedef AC::TLE __AttrTypes;
 
54910
  const char *__attr_name (unsigned i) const { return 0; }
 
54911
  const void *__attr (unsigned __i) const { return 0; }
 
54912
#line 1261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54913
};
 
54914
 
 
54915
/** \class CT_UnaryExpr CTree.h Puma/CTree.h
 
54916
 *  Base class for tree nodes representing unary expressions. 
 
54917
 *  Example: \code !a \endcode */
 
54918
 
 
54919
#line 54920 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54920
} // closed Puma
 
54921
class CCExprResolve;
 
54922
class CExprResolve;
 
54923
class WinIfExists;
 
54924
class WinImportHandler;
 
54925
class WinMacros;
 
54926
class WinAsm;
 
54927
class WinDeclSpecs;
 
54928
class WinMemberExplSpec;
 
54929
class WinTypeKeywords;
 
54930
class WinFriend;
 
54931
class ExtAC;
 
54932
class ExtACBuilderCoupling;
 
54933
class ExtACSyntaxCoupling;
 
54934
class ExtACTree;
 
54935
class ExtACKeywords;
 
54936
class ExtGnu;
 
54937
class PragmaOnceUnitState;
 
54938
class PragmaOnce;
 
54939
class CMatchSyntax;
 
54940
namespace Puma {
 
54941
 
 
54942
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54943
 
 
54944
#line 54945 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54945
} // closed Puma
 
54946
 
 
54947
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54948
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
54949
#include "CCExprResolveH.ah"
 
54950
#endif
 
54951
namespace Puma {
 
54952
 
 
54953
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54954
 
 
54955
#line 54956 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54956
} // closed Puma
 
54957
 
 
54958
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54959
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
54960
#include "CExprResolveH.ah"
 
54961
#endif
 
54962
namespace Puma {
 
54963
 
 
54964
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54965
class CT_UnaryExpr : public CT_Call {
 
54966
#line 54967 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
54967
  friend class ::CCExprResolve;
 
54968
  friend class ::CExprResolve;
 
54969
  friend class ::WinIfExists;
 
54970
  friend class ::WinImportHandler;
 
54971
  friend class ::WinMacros;
 
54972
  friend class ::WinAsm;
 
54973
  friend class ::WinDeclSpecs;
 
54974
  friend class ::WinMemberExplSpec;
 
54975
  friend class ::WinTypeKeywords;
 
54976
  friend class ::WinFriend;
 
54977
  friend class ::ExtAC;
 
54978
  friend class ::ExtACBuilderCoupling;
 
54979
  friend class ::ExtACSyntaxCoupling;
 
54980
  friend class ::ExtACTree;
 
54981
  friend class ::ExtACKeywords;
 
54982
  friend class ::ExtGnu;
 
54983
  friend class ::PragmaOnceUnitState;
 
54984
  friend class ::PragmaOnce;
 
54985
  friend class ::CMatchSyntax;
 
54986
 
 
54987
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54988
 
 
54989
  CTree *sons[2]; // oper, expr
 
54990
 
 
54991
public:
 
54992
  /** Constructor.
 
54993
   *  \param o The unary operator.
 
54994
   *  \param e The expression on which the operator is invoked. */
 
54995
  CT_UnaryExpr (CTree *o, CTree *e) { AddSon (sons[0], o); AddSon (sons[1], e); }
 
54996
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54997
  static const char *NodeId ();
 
54998
  /** Get the name of the node. Can be compared with NodeId(). */
 
54999
  const char *NodeName () const { return NodeId (); }
 
55000
  /** Get the number of sons. */
 
55001
  int Sons () const { return 2; }
 
55002
  /** Get the n-th son.
 
55003
   *  \param n The index of the son.
 
55004
   *  \return The n-th son or NULL. */
 
55005
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
55006
  /** Replace a son.
 
55007
   *  \param old_son The son to replace.
 
55008
   *  \param new_son The new son. */
 
55009
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55010
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
55011
  }
 
55012
  /** Get the expression node. */
 
55013
  CTree *Expr () const { return sons[1]; }
 
55014
   private:
 
55015
  typedef CT_UnaryExpr CCExprResolveExpr;
 
55016
 
 
55017
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
55018
 public :
 
55019
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
55020
  typedef CT_UnaryExpr CExprResolveExpr;
 
55021
 
 
55022
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
55023
 public :
 
55024
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
55025
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
55026
  const char *__attr_name (unsigned i) const {
 
55027
    static const char *names[] = { "sons" }; return names[i];
 
55028
  }
 
55029
  const void *__attr (unsigned __i) const {
 
55030
    switch (__i) { case 0: return &sons; default: return 0; }
 
55031
  }
 
55032
#line 1292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55033
};
 
55034
 
 
55035
/** \class CT_PostfixExpr CTree.h Puma/CTree.h
 
55036
 *  Tree node representing a postfix expression.
 
55037
 *  Example: \code a++ \endcode */
 
55038
 
 
55039
#line 55040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55040
} // closed Puma
 
55041
class CCExprResolve;
 
55042
class CExprResolve;
 
55043
class WinIfExists;
 
55044
class WinImportHandler;
 
55045
class WinMacros;
 
55046
class WinAsm;
 
55047
class WinDeclSpecs;
 
55048
class WinMemberExplSpec;
 
55049
class WinTypeKeywords;
 
55050
class WinFriend;
 
55051
class ExtAC;
 
55052
class ExtACBuilderCoupling;
 
55053
class ExtACSyntaxCoupling;
 
55054
class ExtACTree;
 
55055
class ExtACKeywords;
 
55056
class ExtGnu;
 
55057
class PragmaOnceUnitState;
 
55058
class PragmaOnce;
 
55059
class CMatchSyntax;
 
55060
namespace Puma {
 
55061
 
 
55062
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55063
 
 
55064
#line 55065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55065
} // closed Puma
 
55066
 
 
55067
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55068
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55069
#include "CCExprResolveH.ah"
 
55070
#endif
 
55071
namespace Puma {
 
55072
 
 
55073
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55074
 
 
55075
#line 55076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55076
} // closed Puma
 
55077
 
 
55078
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55079
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55080
#include "CExprResolveH.ah"
 
55081
#endif
 
55082
namespace Puma {
 
55083
 
 
55084
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55085
class CT_PostfixExpr : public CT_UnaryExpr {
 
55086
#line 55087 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55087
  friend class ::CCExprResolve;
 
55088
  friend class ::CExprResolve;
 
55089
  friend class ::WinIfExists;
 
55090
  friend class ::WinImportHandler;
 
55091
  friend class ::WinMacros;
 
55092
  friend class ::WinAsm;
 
55093
  friend class ::WinDeclSpecs;
 
55094
  friend class ::WinMemberExplSpec;
 
55095
  friend class ::WinTypeKeywords;
 
55096
  friend class ::WinFriend;
 
55097
  friend class ::ExtAC;
 
55098
  friend class ::ExtACBuilderCoupling;
 
55099
  friend class ::ExtACSyntaxCoupling;
 
55100
  friend class ::ExtACTree;
 
55101
  friend class ::ExtACKeywords;
 
55102
  friend class ::ExtGnu;
 
55103
  friend class ::PragmaOnceUnitState;
 
55104
  friend class ::PragmaOnce;
 
55105
  friend class ::CMatchSyntax;
 
55106
 
 
55107
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55108
 
 
55109
public:
 
55110
  /** Constructor.
 
55111
   *  \param e The expression on which to invoke the operator. 
 
55112
   *  \param o The postfix operator. */
 
55113
  CT_PostfixExpr (CTree *e, CTree *o) :
 
55114
    CT_UnaryExpr (e, o) {}
 
55115
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55116
  static const char *NodeId ();
 
55117
  /** Get the name of the node. Can be compared with NodeId(). */
 
55118
  const char *NodeName () const { return NodeId (); }
 
55119
   private:
 
55120
  typedef CT_PostfixExpr CCExprResolveExpr;
 
55121
 
 
55122
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
55123
 public :
 
55124
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
55125
  typedef CT_PostfixExpr CExprResolveExpr;
 
55126
 
 
55127
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
55128
 public :
 
55129
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
55130
  typedef AC::TLE __AttrTypes;
 
55131
  const char *__attr_name (unsigned i) const { return 0; }
 
55132
  const void *__attr (unsigned __i) const { return 0; }
 
55133
#line 1308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55134
};
 
55135
 
 
55136
/** \class CT_AddrExpr CTree.h Puma/CTree.h
 
55137
 *  Tree node representing an address expression.
 
55138
 *  Example: \code &a \endcode */
 
55139
 
 
55140
#line 55141 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55141
} // closed Puma
 
55142
class CCExprResolve;
 
55143
class CExprResolve;
 
55144
class WinIfExists;
 
55145
class WinImportHandler;
 
55146
class WinMacros;
 
55147
class WinAsm;
 
55148
class WinDeclSpecs;
 
55149
class WinMemberExplSpec;
 
55150
class WinTypeKeywords;
 
55151
class WinFriend;
 
55152
class ExtAC;
 
55153
class ExtACBuilderCoupling;
 
55154
class ExtACSyntaxCoupling;
 
55155
class ExtACTree;
 
55156
class ExtACKeywords;
 
55157
class ExtGnu;
 
55158
class PragmaOnceUnitState;
 
55159
class PragmaOnce;
 
55160
class CMatchSyntax;
 
55161
namespace Puma {
 
55162
 
 
55163
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55164
 
 
55165
#line 55166 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55166
} // closed Puma
 
55167
 
 
55168
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55169
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55170
#include "CCExprResolveH.ah"
 
55171
#endif
 
55172
namespace Puma {
 
55173
 
 
55174
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55175
 
 
55176
#line 55177 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55177
} // closed Puma
 
55178
 
 
55179
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55180
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55181
#include "CExprResolveH.ah"
 
55182
#endif
 
55183
namespace Puma {
 
55184
 
 
55185
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55186
class CT_AddrExpr : public CT_UnaryExpr {
 
55187
#line 55188 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55188
  friend class ::CCExprResolve;
 
55189
  friend class ::CExprResolve;
 
55190
  friend class ::WinIfExists;
 
55191
  friend class ::WinImportHandler;
 
55192
  friend class ::WinMacros;
 
55193
  friend class ::WinAsm;
 
55194
  friend class ::WinDeclSpecs;
 
55195
  friend class ::WinMemberExplSpec;
 
55196
  friend class ::WinTypeKeywords;
 
55197
  friend class ::WinFriend;
 
55198
  friend class ::ExtAC;
 
55199
  friend class ::ExtACBuilderCoupling;
 
55200
  friend class ::ExtACSyntaxCoupling;
 
55201
  friend class ::ExtACTree;
 
55202
  friend class ::ExtACKeywords;
 
55203
  friend class ::ExtGnu;
 
55204
  friend class ::PragmaOnceUnitState;
 
55205
  friend class ::PragmaOnce;
 
55206
  friend class ::CMatchSyntax;
 
55207
 
 
55208
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55209
 
 
55210
public:
 
55211
  /** Constructor.
 
55212
   *  \param o The address operator, i.e. '&'.
 
55213
   *  \param e The expression from which to take the address. */
 
55214
  CT_AddrExpr (CTree *o, CTree *e) :
 
55215
    CT_UnaryExpr (o, e) {}
 
55216
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55217
  static const char *NodeId ();
 
55218
  /** Get the name of the node. Can be compared with NodeId(). */
 
55219
  const char *NodeName () const { return NodeId (); }
 
55220
   private:
 
55221
  typedef CT_AddrExpr CCExprResolveExpr;
 
55222
 
 
55223
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
55224
 public :
 
55225
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
55226
  typedef CT_AddrExpr CExprResolveExpr;
 
55227
 
 
55228
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
55229
 public :
 
55230
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
55231
  typedef AC::TLE __AttrTypes;
 
55232
  const char *__attr_name (unsigned i) const { return 0; }
 
55233
  const void *__attr (unsigned __i) const { return 0; }
 
55234
#line 1324 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55235
};
 
55236
 
 
55237
/** \class CT_DerefExpr CTree.h Puma/CTree.h
 
55238
 *  Tree node representing a pointer dereferencing expression.
 
55239
 *  Example: \code *a \endcode */
 
55240
 
 
55241
#line 55242 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55242
} // closed Puma
 
55243
class CCExprResolve;
 
55244
class CExprResolve;
 
55245
class WinIfExists;
 
55246
class WinImportHandler;
 
55247
class WinMacros;
 
55248
class WinAsm;
 
55249
class WinDeclSpecs;
 
55250
class WinMemberExplSpec;
 
55251
class WinTypeKeywords;
 
55252
class WinFriend;
 
55253
class ExtAC;
 
55254
class ExtACBuilderCoupling;
 
55255
class ExtACSyntaxCoupling;
 
55256
class ExtACTree;
 
55257
class ExtACKeywords;
 
55258
class ExtGnu;
 
55259
class PragmaOnceUnitState;
 
55260
class PragmaOnce;
 
55261
class CMatchSyntax;
 
55262
namespace Puma {
 
55263
 
 
55264
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55265
 
 
55266
#line 55267 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55267
} // closed Puma
 
55268
 
 
55269
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55270
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55271
#include "CCExprResolveH.ah"
 
55272
#endif
 
55273
namespace Puma {
 
55274
 
 
55275
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55276
 
 
55277
#line 55278 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55278
} // closed Puma
 
55279
 
 
55280
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55281
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55282
#include "CExprResolveH.ah"
 
55283
#endif
 
55284
namespace Puma {
 
55285
 
 
55286
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55287
class CT_DerefExpr : public CT_UnaryExpr {
 
55288
#line 55289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55289
  friend class ::CCExprResolve;
 
55290
  friend class ::CExprResolve;
 
55291
  friend class ::WinIfExists;
 
55292
  friend class ::WinImportHandler;
 
55293
  friend class ::WinMacros;
 
55294
  friend class ::WinAsm;
 
55295
  friend class ::WinDeclSpecs;
 
55296
  friend class ::WinMemberExplSpec;
 
55297
  friend class ::WinTypeKeywords;
 
55298
  friend class ::WinFriend;
 
55299
  friend class ::ExtAC;
 
55300
  friend class ::ExtACBuilderCoupling;
 
55301
  friend class ::ExtACSyntaxCoupling;
 
55302
  friend class ::ExtACTree;
 
55303
  friend class ::ExtACKeywords;
 
55304
  friend class ::ExtGnu;
 
55305
  friend class ::PragmaOnceUnitState;
 
55306
  friend class ::PragmaOnce;
 
55307
  friend class ::CMatchSyntax;
 
55308
 
 
55309
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55310
 
 
55311
public:
 
55312
  /** Constructor.
 
55313
   *  \param o The dereferencing operator, i.e. '*'.
 
55314
   *  \param e The expression to dereference. */
 
55315
  CT_DerefExpr (CTree *o, CTree *e) :
 
55316
    CT_UnaryExpr (o, e) {}
 
55317
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55318
  static const char *NodeId ();
 
55319
  /** Get the name of the node. Can be compared with NodeId(). */
 
55320
  const char *NodeName () const { return NodeId (); }
 
55321
   private:
 
55322
  typedef CT_DerefExpr CCExprResolveExpr;
 
55323
 
 
55324
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
55325
 public :
 
55326
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
55327
  typedef CT_DerefExpr CExprResolveExpr;
 
55328
 
 
55329
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
55330
 public :
 
55331
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
55332
  typedef AC::TLE __AttrTypes;
 
55333
  const char *__attr_name (unsigned i) const { return 0; }
 
55334
  const void *__attr (unsigned __i) const { return 0; }
 
55335
#line 1340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55336
};
 
55337
 
 
55338
/** \class CT_DeleteExpr CTree.h Puma/CTree.h
 
55339
 *  Tree node representing a delete expression.
 
55340
 *  Example: \code delete a \endcode */
 
55341
 
 
55342
#line 55343 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55343
} // closed Puma
 
55344
class CCExprResolve;
 
55345
class CExprResolve;
 
55346
class WinIfExists;
 
55347
class WinImportHandler;
 
55348
class WinMacros;
 
55349
class WinAsm;
 
55350
class WinDeclSpecs;
 
55351
class WinMemberExplSpec;
 
55352
class WinTypeKeywords;
 
55353
class WinFriend;
 
55354
class ExtAC;
 
55355
class ExtACBuilderCoupling;
 
55356
class ExtACSyntaxCoupling;
 
55357
class ExtACTree;
 
55358
class ExtACKeywords;
 
55359
class ExtGnu;
 
55360
class PragmaOnceUnitState;
 
55361
class PragmaOnce;
 
55362
class CMatchSyntax;
 
55363
namespace Puma {
 
55364
 
 
55365
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55366
 
 
55367
#line 55368 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55368
} // closed Puma
 
55369
 
 
55370
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55371
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55372
#include "CCExprResolveH.ah"
 
55373
#endif
 
55374
namespace Puma {
 
55375
 
 
55376
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55377
 
 
55378
#line 55379 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55379
} // closed Puma
 
55380
 
 
55381
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55382
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55383
#include "CExprResolveH.ah"
 
55384
#endif
 
55385
namespace Puma {
 
55386
 
 
55387
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55388
class CT_DeleteExpr : public CT_Expression, public CSemObject {
 
55389
#line 55390 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55390
  friend class ::CCExprResolve;
 
55391
  friend class ::CExprResolve;
 
55392
  friend class ::WinIfExists;
 
55393
  friend class ::WinImportHandler;
 
55394
  friend class ::WinMacros;
 
55395
  friend class ::WinAsm;
 
55396
  friend class ::WinDeclSpecs;
 
55397
  friend class ::WinMemberExplSpec;
 
55398
  friend class ::WinTypeKeywords;
 
55399
  friend class ::WinFriend;
 
55400
  friend class ::ExtAC;
 
55401
  friend class ::ExtACBuilderCoupling;
 
55402
  friend class ::ExtACSyntaxCoupling;
 
55403
  friend class ::ExtACTree;
 
55404
  friend class ::ExtACKeywords;
 
55405
  friend class ::ExtGnu;
 
55406
  friend class ::PragmaOnceUnitState;
 
55407
  friend class ::PragmaOnce;
 
55408
  friend class ::CMatchSyntax;
 
55409
 
 
55410
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55411
 
 
55412
  CTree *sons[2]; // oper, expr
 
55413
 
 
55414
public:
 
55415
  /** Constructor.
 
55416
   *  \param op The delete operator.
 
55417
   *  \param e The expression representing the object to delete. */
 
55418
  CT_DeleteExpr (CTree *op, CTree *e) { AddSon (sons[0], op); AddSon (sons[1], e); }
 
55419
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55420
  static const char *NodeId ();
 
55421
  /** Get the name of the node. Can be compared with NodeId(). */
 
55422
  const char *NodeName () const { return NodeId (); }
 
55423
  /** Get the number of sons. */
 
55424
  int Sons () const { return 2; }
 
55425
  /** Get the n-th son.
 
55426
   *  \param n The index of the son.
 
55427
   *  \return The n-th son or NULL. */
 
55428
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
55429
  /** Replace a son.
 
55430
   *  \param old_son The son to replace.
 
55431
   *  \param new_son The new son. */
 
55432
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55433
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
55434
  }
 
55435
  /** Get the expression. */
 
55436
  CTree *Expr () const { return sons[1]; }
 
55437
  /** Get the operator name, i.e. 'delete' or 'delete[]'. */
 
55438
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
55439
  /** Get the semantic information. */
 
55440
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
55441
   private:
 
55442
  typedef CT_DeleteExpr CCExprResolveExpr;
 
55443
 
 
55444
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
55445
 public :
 
55446
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
55447
  typedef CT_DeleteExpr CExprResolveExpr;
 
55448
 
 
55449
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
55450
 public :
 
55451
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
55452
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
55453
  const char *__attr_name (unsigned i) const {
 
55454
    static const char *names[] = { "sons" }; return names[i];
 
55455
  }
 
55456
  const void *__attr (unsigned __i) const {
 
55457
    switch (__i) { case 0: return &sons; default: return 0; }
 
55458
  }
 
55459
#line 1375 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55460
};
 
55461
 
 
55462
/** \class CT_NewExpr CTree.h Puma/CTree.h
 
55463
 *  Tree node representing a new expression.
 
55464
 *  Example: \code new A() \endcode */
 
55465
 
 
55466
#line 55467 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55467
} // closed Puma
 
55468
class CCExprResolve;
 
55469
class CExprResolve;
 
55470
class WinIfExists;
 
55471
class WinImportHandler;
 
55472
class WinMacros;
 
55473
class WinAsm;
 
55474
class WinDeclSpecs;
 
55475
class WinMemberExplSpec;
 
55476
class WinTypeKeywords;
 
55477
class WinFriend;
 
55478
class ExtAC;
 
55479
class ExtACBuilderCoupling;
 
55480
class ExtACSyntaxCoupling;
 
55481
class ExtACTree;
 
55482
class ExtACKeywords;
 
55483
class ExtGnu;
 
55484
class PragmaOnceUnitState;
 
55485
class PragmaOnce;
 
55486
class CMatchSyntax;
 
55487
namespace Puma {
 
55488
 
 
55489
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55490
 
 
55491
#line 55492 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55492
} // closed Puma
 
55493
 
 
55494
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55495
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55496
#include "CCExprResolveH.ah"
 
55497
#endif
 
55498
namespace Puma {
 
55499
 
 
55500
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55501
 
 
55502
#line 55503 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55503
} // closed Puma
 
55504
 
 
55505
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55506
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55507
#include "CExprResolveH.ah"
 
55508
#endif
 
55509
namespace Puma {
 
55510
 
 
55511
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55512
class CT_NewExpr : public CT_Expression, public CSemObject {
 
55513
#line 55514 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55514
  friend class ::CCExprResolve;
 
55515
  friend class ::CExprResolve;
 
55516
  friend class ::WinIfExists;
 
55517
  friend class ::WinImportHandler;
 
55518
  friend class ::WinMacros;
 
55519
  friend class ::WinAsm;
 
55520
  friend class ::WinDeclSpecs;
 
55521
  friend class ::WinMemberExplSpec;
 
55522
  friend class ::WinTypeKeywords;
 
55523
  friend class ::WinFriend;
 
55524
  friend class ::ExtAC;
 
55525
  friend class ::ExtACBuilderCoupling;
 
55526
  friend class ::ExtACSyntaxCoupling;
 
55527
  friend class ::ExtACTree;
 
55528
  friend class ::ExtACKeywords;
 
55529
  friend class ::ExtGnu;
 
55530
  friend class ::PragmaOnceUnitState;
 
55531
  friend class ::PragmaOnce;
 
55532
  friend class ::CMatchSyntax;
 
55533
 
 
55534
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55535
 
 
55536
  CTree *sons[6]; // oper, placement, open, type, close, init
 
55537
 
 
55538
public:
 
55539
  /** Constructor.
 
55540
   *  \param op The new operator.
 
55541
   *  \param p The optional placement expression.
 
55542
   *  \param o The optional left parenthesis around the type identifier.
 
55543
   *  \param t The type identifier specifying the type of the object to create.
 
55544
   *  \param c The optional right parenthesis around the type identifier.
 
55545
   *  \param i The optional initializer. */
 
55546
  CT_NewExpr (CTree *op, CTree *p, CTree *o, CTree *t, CTree *c, CTree *i) {
 
55547
    AddSon (sons[0], op); AddSon (sons[1], p); AddSon (sons[2], o); 
 
55548
    AddSon (sons[3], t); AddSon (sons[4], c); AddSon (sons[5], i); 
 
55549
  }
 
55550
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55551
  static const char *NodeId ();
 
55552
  /** Get the name of the node. Can be compared with NodeId(). */
 
55553
  const char *NodeName () const { return NodeId (); }
 
55554
  /** Get the number of sons. */
 
55555
  int Sons () const { return CTree::Sons (sons, 6); }
 
55556
  /** Get the n-th son.
 
55557
   *  \param n The index of the son.
 
55558
   *  \return The n-th son or NULL. */
 
55559
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
55560
  /** Replace a son.
 
55561
   *  \param old_son The son to replace.
 
55562
   *  \param new_son The new son. */
 
55563
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55564
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
55565
  }
 
55566
  /** Get the operator name. */
 
55567
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
55568
  /** Get the placement expression. */
 
55569
  CT_ExprList *Placement () const { return (CT_ExprList*)sons[1];; }
 
55570
  /** Get the initializer. */
 
55571
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[5]; }
 
55572
  /** Get the type of the object to create. */
 
55573
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[3]; }
 
55574
  /** Get the semantic information. */
 
55575
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
55576
   private:
 
55577
  typedef CT_NewExpr CCExprResolveExpr;
 
55578
 
 
55579
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
55580
 public :
 
55581
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
55582
  typedef CT_NewExpr CExprResolveExpr;
 
55583
 
 
55584
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
55585
 public :
 
55586
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
55587
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
55588
  const char *__attr_name (unsigned i) const {
 
55589
    static const char *names[] = { "sons" }; return names[i];
 
55590
  }
 
55591
  const void *__attr (unsigned __i) const {
 
55592
    switch (__i) { case 0: return &sons; default: return 0; }
 
55593
  }
 
55594
#line 1421 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55595
};
 
55596
 
 
55597
/** \class CT_IfThenExpr CTree.h Puma/CTree.h
 
55598
 *  Tree node representing an if-then expression.
 
55599
 *  Example: \code a>0?a:b \endcode or \code a?:b \endcode */
 
55600
 
 
55601
#line 55602 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55602
} // closed Puma
 
55603
class CCExprResolve;
 
55604
class CExprResolve;
 
55605
class WinIfExists;
 
55606
class WinImportHandler;
 
55607
class WinMacros;
 
55608
class WinAsm;
 
55609
class WinDeclSpecs;
 
55610
class WinMemberExplSpec;
 
55611
class WinTypeKeywords;
 
55612
class WinFriend;
 
55613
class ExtAC;
 
55614
class ExtACBuilderCoupling;
 
55615
class ExtACSyntaxCoupling;
 
55616
class ExtACTree;
 
55617
class ExtACKeywords;
 
55618
class ExtGnu;
 
55619
class PragmaOnceUnitState;
 
55620
class PragmaOnce;
 
55621
class CMatchSyntax;
 
55622
namespace Puma {
 
55623
 
 
55624
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55625
 
 
55626
#line 55627 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55627
} // closed Puma
 
55628
 
 
55629
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55630
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55631
#include "CCExprResolveH.ah"
 
55632
#endif
 
55633
namespace Puma {
 
55634
 
 
55635
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55636
 
 
55637
#line 55638 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55638
} // closed Puma
 
55639
 
 
55640
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55641
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55642
#include "CExprResolveH.ah"
 
55643
#endif
 
55644
namespace Puma {
 
55645
 
 
55646
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55647
class CT_IfThenExpr : public CT_Expression {
 
55648
#line 55649 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55649
  friend class ::CCExprResolve;
 
55650
  friend class ::CExprResolve;
 
55651
  friend class ::WinIfExists;
 
55652
  friend class ::WinImportHandler;
 
55653
  friend class ::WinMacros;
 
55654
  friend class ::WinAsm;
 
55655
  friend class ::WinDeclSpecs;
 
55656
  friend class ::WinMemberExplSpec;
 
55657
  friend class ::WinTypeKeywords;
 
55658
  friend class ::WinFriend;
 
55659
  friend class ::ExtAC;
 
55660
  friend class ::ExtACBuilderCoupling;
 
55661
  friend class ::ExtACSyntaxCoupling;
 
55662
  friend class ::ExtACTree;
 
55663
  friend class ::ExtACKeywords;
 
55664
  friend class ::ExtGnu;
 
55665
  friend class ::PragmaOnceUnitState;
 
55666
  friend class ::PragmaOnce;
 
55667
  friend class ::CMatchSyntax;
 
55668
 
 
55669
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55670
 
 
55671
  CTree *sons[5]; // cond, oper, left, colon, right
 
55672
 
 
55673
public:
 
55674
  /** Constructor.
 
55675
   *  \param c1 The condition expression.
 
55676
   *  \param o The question mark operator. 
 
55677
   *  \param l The expression to the left of the colon.
 
55678
   *  \param c2 The colon operator.
 
55679
   *  \param r The expression to the right of the colon. */ 
 
55680
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *l, CTree *c2, CTree *r) {
 
55681
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], l); 
 
55682
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
55683
  }
 
55684
  /** Constructor.
 
55685
   *  \param c1 The condition expression.
 
55686
   *  \param o The question mark operator. 
 
55687
   *  \param c2 The colon operator.
 
55688
   *  \param r The expression to the right of the colon. */ 
 
55689
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *c2, CTree *r) {
 
55690
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], 0); 
 
55691
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
55692
  }
 
55693
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55694
  static const char *NodeId ();
 
55695
  /** Get the name of the node. Can be compared with NodeId(). */
 
55696
  const char *NodeName () const { return NodeId (); }
 
55697
  /** Get the number of sons. */
 
55698
  int Sons () const { return CTree::Sons (sons, 5); }
 
55699
  /** Get the n-th son.
 
55700
   *  \param n The index of the son.
 
55701
   *  \return The n-th son or NULL. */
 
55702
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
55703
  /** Get the condition expression. */
 
55704
  CTree *Condition () const { return sons[0]; }
 
55705
  /** Get the left expression (condition=true). */
 
55706
  CTree *LeftOperand () const { return sons[2]; }
 
55707
  /** Get the right expression (condition=false). */
 
55708
  CTree *RightOperand () const { return sons[4]; }
 
55709
  /** Replace a son.
 
55710
   *  \param old_son The son to replace.
 
55711
   *  \param new_son The new son. */
 
55712
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55713
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
55714
  }
 
55715
   private:
 
55716
  typedef CT_IfThenExpr CCExprResolveExpr;
 
55717
 
 
55718
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
55719
 public :
 
55720
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
55721
  typedef CT_IfThenExpr CExprResolveExpr;
 
55722
 
 
55723
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
55724
 public :
 
55725
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
55726
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
55727
  const char *__attr_name (unsigned i) const {
 
55728
    static const char *names[] = { "sons" }; return names[i];
 
55729
  }
 
55730
  const void *__attr (unsigned __i) const {
 
55731
    switch (__i) { case 0: return &sons; default: return 0; }
 
55732
  }
 
55733
#line 1471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55734
};
 
55735
 
 
55736
/** \class CT_CmpdLiteral CTree.h Puma/CTree.h
 
55737
 *  Tree node representing a compound literal.
 
55738
 *  Example: \code (int[]){1,2,3) \endcode */
 
55739
 
 
55740
#line 55741 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55741
} // closed Puma
 
55742
class CCExprResolve;
 
55743
class CExprResolve;
 
55744
class WinIfExists;
 
55745
class WinImportHandler;
 
55746
class WinMacros;
 
55747
class WinAsm;
 
55748
class WinDeclSpecs;
 
55749
class WinMemberExplSpec;
 
55750
class WinTypeKeywords;
 
55751
class WinFriend;
 
55752
class ExtAC;
 
55753
class ExtACBuilderCoupling;
 
55754
class ExtACSyntaxCoupling;
 
55755
class ExtACTree;
 
55756
class ExtACKeywords;
 
55757
class ExtGnu;
 
55758
class PragmaOnceUnitState;
 
55759
class PragmaOnce;
 
55760
class CMatchSyntax;
 
55761
namespace Puma {
 
55762
 
 
55763
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55764
 
 
55765
#line 55766 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55766
} // closed Puma
 
55767
 
 
55768
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55769
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55770
#include "CCExprResolveH.ah"
 
55771
#endif
 
55772
namespace Puma {
 
55773
 
 
55774
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55775
 
 
55776
#line 55777 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55777
} // closed Puma
 
55778
 
 
55779
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55780
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55781
#include "CExprResolveH.ah"
 
55782
#endif
 
55783
namespace Puma {
 
55784
 
 
55785
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55786
class CT_CmpdLiteral : public CT_Expression, public CSemObject {
 
55787
#line 55788 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55788
  friend class ::CCExprResolve;
 
55789
  friend class ::CExprResolve;
 
55790
  friend class ::WinIfExists;
 
55791
  friend class ::WinImportHandler;
 
55792
  friend class ::WinMacros;
 
55793
  friend class ::WinAsm;
 
55794
  friend class ::WinDeclSpecs;
 
55795
  friend class ::WinMemberExplSpec;
 
55796
  friend class ::WinTypeKeywords;
 
55797
  friend class ::WinFriend;
 
55798
  friend class ::ExtAC;
 
55799
  friend class ::ExtACBuilderCoupling;
 
55800
  friend class ::ExtACSyntaxCoupling;
 
55801
  friend class ::ExtACTree;
 
55802
  friend class ::ExtACKeywords;
 
55803
  friend class ::ExtGnu;
 
55804
  friend class ::PragmaOnceUnitState;
 
55805
  friend class ::PragmaOnce;
 
55806
  friend class ::CMatchSyntax;
 
55807
 
 
55808
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55809
 
 
55810
  CTree *sons[4]; // open, type, close, init
 
55811
 
 
55812
public:
 
55813
  /** Constructor.
 
55814
   *  \param r Left parenthesis of the type name.
 
55815
   *  \param t The type name.
 
55816
   *  \param cr Right parenthesis of the type name.
 
55817
   *  \param i The initializer list. */
 
55818
  CT_CmpdLiteral (CTree *r, CTree *t, CTree *cr, CTree *i) {
 
55819
    AddSon (sons[0], r); AddSon (sons[1], t); 
 
55820
    AddSon (sons[2], cr); AddSon (sons[3], i);
 
55821
  }
 
55822
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55823
  static const char *NodeId ();
 
55824
  /** Get the name of the node. Can be compared with NodeId(). */
 
55825
  const char *NodeName () const { return NodeId (); }
 
55826
  /** Get the number of sons. */
 
55827
  int Sons () const { return 4; }
 
55828
  /** Get the n-th son.
 
55829
   *  \param n The index of the son.
 
55830
   *  \return The n-th son or NULL. */
 
55831
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
55832
  /** Replace a son.
 
55833
   *  \param old_son The son to replace.
 
55834
   *  \param new_son The new son. */
 
55835
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55836
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
55837
  }
 
55838
  /** Get the type name. */
 
55839
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
55840
  /** Get the initializer list. */
 
55841
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[3]; }
 
55842
  /** Get the semantic information about the created object. */
 
55843
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
55844
   private:
 
55845
  typedef CT_CmpdLiteral CCExprResolveExpr;
 
55846
 
 
55847
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
55848
 public :
 
55849
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
55850
  typedef CT_CmpdLiteral CExprResolveExpr;
 
55851
 
 
55852
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
55853
 public :
 
55854
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
55855
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
55856
  const char *__attr_name (unsigned i) const {
 
55857
    static const char *names[] = { "sons" }; return names[i];
 
55858
  }
 
55859
  const void *__attr (unsigned __i) const {
 
55860
    switch (__i) { case 0: return &sons; default: return 0; }
 
55861
  }
 
55862
#line 1511 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55863
};
 
55864
 
 
55865
/** \class CT_ConstructExpr CTree.h Puma/CTree.h
 
55866
 *  Tree node representing a construct expression.
 
55867
 *  Example: \code std::string("abc") \endcode */
 
55868
 
 
55869
#line 55870 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55870
} // closed Puma
 
55871
class CCExprResolve;
 
55872
class CExprResolve;
 
55873
class WinIfExists;
 
55874
class WinImportHandler;
 
55875
class WinMacros;
 
55876
class WinAsm;
 
55877
class WinDeclSpecs;
 
55878
class WinMemberExplSpec;
 
55879
class WinTypeKeywords;
 
55880
class WinFriend;
 
55881
class ExtAC;
 
55882
class ExtACBuilderCoupling;
 
55883
class ExtACSyntaxCoupling;
 
55884
class ExtACTree;
 
55885
class ExtACKeywords;
 
55886
class ExtGnu;
 
55887
class PragmaOnceUnitState;
 
55888
class PragmaOnce;
 
55889
class CMatchSyntax;
 
55890
namespace Puma {
 
55891
 
 
55892
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55893
 
 
55894
#line 55895 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55895
} // closed Puma
 
55896
 
 
55897
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55898
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
55899
#include "CCExprResolveH.ah"
 
55900
#endif
 
55901
namespace Puma {
 
55902
 
 
55903
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55904
 
 
55905
#line 55906 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55906
} // closed Puma
 
55907
 
 
55908
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55909
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
55910
#include "CExprResolveH.ah"
 
55911
#endif
 
55912
namespace Puma {
 
55913
 
 
55914
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55915
class CT_ConstructExpr : public CT_Expression, public CSemObject {
 
55916
#line 55917 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55917
  friend class ::CCExprResolve;
 
55918
  friend class ::CExprResolve;
 
55919
  friend class ::WinIfExists;
 
55920
  friend class ::WinImportHandler;
 
55921
  friend class ::WinMacros;
 
55922
  friend class ::WinAsm;
 
55923
  friend class ::WinDeclSpecs;
 
55924
  friend class ::WinMemberExplSpec;
 
55925
  friend class ::WinTypeKeywords;
 
55926
  friend class ::WinFriend;
 
55927
  friend class ::ExtAC;
 
55928
  friend class ::ExtACBuilderCoupling;
 
55929
  friend class ::ExtACSyntaxCoupling;
 
55930
  friend class ::ExtACTree;
 
55931
  friend class ::ExtACKeywords;
 
55932
  friend class ::ExtGnu;
 
55933
  friend class ::PragmaOnceUnitState;
 
55934
  friend class ::PragmaOnce;
 
55935
  friend class ::CMatchSyntax;
 
55936
 
 
55937
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55938
 
 
55939
  CTree *sons[2]; // type, init
 
55940
 
 
55941
public:
 
55942
  /** Constructor.
 
55943
   *  \param t The type name.
 
55944
   *  \param i The initializer list. */
 
55945
  CT_ConstructExpr (CTree *t, CTree *i) { AddSon (sons[0], t); AddSon (sons[1], i); }
 
55946
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55947
  static const char *NodeId ();
 
55948
  /** Get the name of the node. Can be compared with NodeId(). */
 
55949
  const char *NodeName () const { return NodeId (); }
 
55950
  /** Get the number of sons. */
 
55951
  int Sons () const { return 2; }
 
55952
  /** Get the n-th son.
 
55953
   *  \param n The index of the son.
 
55954
   *  \return The n-th son or NULL. */
 
55955
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
55956
  /** Replace a son.
 
55957
   *  \param old_son The son to replace.
 
55958
   *  \param new_son The new son. */
 
55959
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55960
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
55961
  }
 
55962
  /** Get the type name. */
 
55963
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[0]; }
 
55964
  /** Get the initializer. */
 
55965
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
55966
  /** Get the semantic information about the created object. */
 
55967
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
55968
   private:
 
55969
  typedef CT_ConstructExpr CCExprResolveExpr;
 
55970
 
 
55971
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
55972
 public :
 
55973
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
55974
  typedef CT_ConstructExpr CExprResolveExpr;
 
55975
 
 
55976
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
55977
 public :
 
55978
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
55979
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
55980
  const char *__attr_name (unsigned i) const {
 
55981
    static const char *names[] = { "sons" }; return names[i];
 
55982
  }
 
55983
  const void *__attr (unsigned __i) const {
 
55984
    switch (__i) { case 0: return &sons; default: return 0; }
 
55985
  }
 
55986
#line 1546 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55987
};
 
55988
 
 
55989
/** \class CT_ThrowExpr CTree.h Puma/CTree.h
 
55990
 *  Tree node representing a throw expression.
 
55991
 *  Example: \code throw std::exception() \endcode */
 
55992
 
 
55993
#line 55994 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
55994
} // closed Puma
 
55995
class CCExprResolve;
 
55996
class CExprResolve;
 
55997
class WinIfExists;
 
55998
class WinImportHandler;
 
55999
class WinMacros;
 
56000
class WinAsm;
 
56001
class WinDeclSpecs;
 
56002
class WinMemberExplSpec;
 
56003
class WinTypeKeywords;
 
56004
class WinFriend;
 
56005
class ExtAC;
 
56006
class ExtACBuilderCoupling;
 
56007
class ExtACSyntaxCoupling;
 
56008
class ExtACTree;
 
56009
class ExtACKeywords;
 
56010
class ExtGnu;
 
56011
class PragmaOnceUnitState;
 
56012
class PragmaOnce;
 
56013
class CMatchSyntax;
 
56014
namespace Puma {
 
56015
 
 
56016
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56017
 
 
56018
#line 56019 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56019
} // closed Puma
 
56020
 
 
56021
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56022
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56023
#include "CCExprResolveH.ah"
 
56024
#endif
 
56025
namespace Puma {
 
56026
 
 
56027
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56028
 
 
56029
#line 56030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56030
} // closed Puma
 
56031
 
 
56032
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56033
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56034
#include "CExprResolveH.ah"
 
56035
#endif
 
56036
namespace Puma {
 
56037
 
 
56038
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56039
class CT_ThrowExpr : public CT_Expression {
 
56040
#line 56041 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56041
  friend class ::CCExprResolve;
 
56042
  friend class ::CExprResolve;
 
56043
  friend class ::WinIfExists;
 
56044
  friend class ::WinImportHandler;
 
56045
  friend class ::WinMacros;
 
56046
  friend class ::WinAsm;
 
56047
  friend class ::WinDeclSpecs;
 
56048
  friend class ::WinMemberExplSpec;
 
56049
  friend class ::WinTypeKeywords;
 
56050
  friend class ::WinFriend;
 
56051
  friend class ::ExtAC;
 
56052
  friend class ::ExtACBuilderCoupling;
 
56053
  friend class ::ExtACSyntaxCoupling;
 
56054
  friend class ::ExtACTree;
 
56055
  friend class ::ExtACKeywords;
 
56056
  friend class ::ExtGnu;
 
56057
  friend class ::PragmaOnceUnitState;
 
56058
  friend class ::PragmaOnce;
 
56059
  friend class ::CMatchSyntax;
 
56060
 
 
56061
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56062
 
 
56063
  CTree *sons[2]; // throw, expr
 
56064
 
 
56065
public:
 
56066
  /** Constructor.
 
56067
   *  \param t The 'throw' keyword.
 
56068
   *  \param e The expression. */
 
56069
  CT_ThrowExpr (CTree *t, CTree *e = (CTree*)0) { AddSon (sons[0], t); AddSon (sons[1], e); }
 
56070
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56071
  static const char *NodeId ();
 
56072
  /** Get the name of the node. Can be compared with NodeId(). */
 
56073
  const char *NodeName () const { return NodeId (); }
 
56074
  /** Get the number of sons. */
 
56075
  int Sons () const { return CTree::Sons (sons, 2); }
 
56076
  /** Get the n-th son.
 
56077
   *  \param n The index of the son.
 
56078
   *  \return The n-th son or NULL. */
 
56079
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
56080
  /** Replace a son.
 
56081
   *  \param old_son The son to replace.
 
56082
   *  \param new_son The new son. */
 
56083
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56084
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
56085
  }
 
56086
  /** Get the expression. */
 
56087
  CTree *Expr () const { return sons[1]; }
 
56088
   private:
 
56089
  typedef CT_ThrowExpr CCExprResolveExpr;
 
56090
 
 
56091
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
56092
 public :
 
56093
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
56094
  typedef CT_ThrowExpr CExprResolveExpr;
 
56095
 
 
56096
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
56097
 public :
 
56098
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
56099
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
56100
  const char *__attr_name (unsigned i) const {
 
56101
    static const char *names[] = { "sons" }; return names[i];
 
56102
  }
 
56103
  const void *__attr (unsigned __i) const {
 
56104
    switch (__i) { case 0: return &sons; default: return 0; }
 
56105
  }
 
56106
#line 1577 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56107
};
 
56108
 
 
56109
/** \class CT_IndexExpr CTree.h Puma/CTree.h
 
56110
 *  Tree node representing an index expression. 
 
56111
 *  Example: \code a[1] \endcode */
 
56112
 
 
56113
#line 56114 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56114
} // closed Puma
 
56115
class CCExprResolve;
 
56116
class CExprResolve;
 
56117
class WinIfExists;
 
56118
class WinImportHandler;
 
56119
class WinMacros;
 
56120
class WinAsm;
 
56121
class WinDeclSpecs;
 
56122
class WinMemberExplSpec;
 
56123
class WinTypeKeywords;
 
56124
class WinFriend;
 
56125
class ExtAC;
 
56126
class ExtACBuilderCoupling;
 
56127
class ExtACSyntaxCoupling;
 
56128
class ExtACTree;
 
56129
class ExtACKeywords;
 
56130
class ExtGnu;
 
56131
class PragmaOnceUnitState;
 
56132
class PragmaOnce;
 
56133
class CMatchSyntax;
 
56134
namespace Puma {
 
56135
 
 
56136
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56137
 
 
56138
#line 56139 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56139
} // closed Puma
 
56140
 
 
56141
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56142
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56143
#include "CCExprResolveH.ah"
 
56144
#endif
 
56145
namespace Puma {
 
56146
 
 
56147
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56148
 
 
56149
#line 56150 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56150
} // closed Puma
 
56151
 
 
56152
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56153
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56154
#include "CExprResolveH.ah"
 
56155
#endif
 
56156
namespace Puma {
 
56157
 
 
56158
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56159
class CT_IndexExpr : public CT_Call {
 
56160
#line 56161 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56161
  friend class ::CCExprResolve;
 
56162
  friend class ::CExprResolve;
 
56163
  friend class ::WinIfExists;
 
56164
  friend class ::WinImportHandler;
 
56165
  friend class ::WinMacros;
 
56166
  friend class ::WinAsm;
 
56167
  friend class ::WinDeclSpecs;
 
56168
  friend class ::WinMemberExplSpec;
 
56169
  friend class ::WinTypeKeywords;
 
56170
  friend class ::WinFriend;
 
56171
  friend class ::ExtAC;
 
56172
  friend class ::ExtACBuilderCoupling;
 
56173
  friend class ::ExtACSyntaxCoupling;
 
56174
  friend class ::ExtACTree;
 
56175
  friend class ::ExtACKeywords;
 
56176
  friend class ::ExtGnu;
 
56177
  friend class ::PragmaOnceUnitState;
 
56178
  friend class ::PragmaOnce;
 
56179
  friend class ::CMatchSyntax;
 
56180
 
 
56181
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56182
 
 
56183
  CTree *sons[4]; // expr, open, index, close
 
56184
 
 
56185
public:
 
56186
  /** Constructor.
 
56187
   *  \param e The expression on which to invoke the index operator.
 
56188
   *  \param o Left parenthesis of the index expression.
 
56189
   *  \param i The index expression. 
 
56190
   *  \param c Right parenthesis of the index expression. */
 
56191
  CT_IndexExpr (CTree *e, CTree *o, CTree *i, CTree *c) {
 
56192
    AddSon (sons[0], e); AddSon (sons[1], o); 
 
56193
    AddSon (sons[2], i); AddSon (sons[3], c);
 
56194
  }
 
56195
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56196
  static const char *NodeId ();
 
56197
  /** Get the name of the node. Can be compared with NodeId(). */
 
56198
  const char *NodeName () const { return NodeId (); }
 
56199
  /** Get the number of sons. */
 
56200
  int Sons () const { return 4; }
 
56201
  /** Get the n-th son.
 
56202
   *  \param n The index of the son.
 
56203
   *  \return The n-th son or NULL. */
 
56204
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
56205
  /** Replace a son.
 
56206
   *  \param old_son The son to replace.
 
56207
   *  \param new_son The new son. */
 
56208
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56209
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
56210
  }
 
56211
   private:
 
56212
  typedef CT_IndexExpr CCExprResolveExpr;
 
56213
 
 
56214
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
56215
 public :
 
56216
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
56217
  typedef CT_IndexExpr CExprResolveExpr;
 
56218
 
 
56219
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
56220
 public :
 
56221
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
56222
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
56223
  const char *__attr_name (unsigned i) const {
 
56224
    static const char *names[] = { "sons" }; return names[i];
 
56225
  }
 
56226
  const void *__attr (unsigned __i) const {
 
56227
    switch (__i) { case 0: return &sons; default: return 0; }
 
56228
  }
 
56229
#line 1611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56230
};
 
56231
 
 
56232
/** \class CT_CallExpr CTree.h Puma/CTree.h
 
56233
 *  Tree node representing a function call expression.
 
56234
 *  Example: \code f(i) \endcode */
 
56235
 
 
56236
#line 56237 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56237
} // closed Puma
 
56238
class CCExprResolve;
 
56239
class CExprResolve;
 
56240
class WinIfExists;
 
56241
class WinImportHandler;
 
56242
class WinMacros;
 
56243
class WinAsm;
 
56244
class WinDeclSpecs;
 
56245
class WinMemberExplSpec;
 
56246
class WinTypeKeywords;
 
56247
class WinFriend;
 
56248
class ExtAC;
 
56249
class ExtACBuilderCoupling;
 
56250
class ExtACSyntaxCoupling;
 
56251
class ExtACTree;
 
56252
class ExtACKeywords;
 
56253
class ExtGnu;
 
56254
class PragmaOnceUnitState;
 
56255
class PragmaOnce;
 
56256
class CMatchSyntax;
 
56257
namespace Puma {
 
56258
 
 
56259
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56260
 
 
56261
#line 56262 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56262
} // closed Puma
 
56263
 
 
56264
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56265
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56266
#include "CCExprResolveH.ah"
 
56267
#endif
 
56268
namespace Puma {
 
56269
 
 
56270
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56271
 
 
56272
#line 56273 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56273
} // closed Puma
 
56274
 
 
56275
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56276
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56277
#include "CExprResolveH.ah"
 
56278
#endif
 
56279
namespace Puma {
 
56280
 
 
56281
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56282
class CT_CallExpr : public CT_Call {
 
56283
#line 56284 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56284
  friend class ::CCExprResolve;
 
56285
  friend class ::CExprResolve;
 
56286
  friend class ::WinIfExists;
 
56287
  friend class ::WinImportHandler;
 
56288
  friend class ::WinMacros;
 
56289
  friend class ::WinAsm;
 
56290
  friend class ::WinDeclSpecs;
 
56291
  friend class ::WinMemberExplSpec;
 
56292
  friend class ::WinTypeKeywords;
 
56293
  friend class ::WinFriend;
 
56294
  friend class ::ExtAC;
 
56295
  friend class ::ExtACBuilderCoupling;
 
56296
  friend class ::ExtACSyntaxCoupling;
 
56297
  friend class ::ExtACTree;
 
56298
  friend class ::ExtACKeywords;
 
56299
  friend class ::ExtGnu;
 
56300
  friend class ::PragmaOnceUnitState;
 
56301
  friend class ::PragmaOnce;
 
56302
  friend class ::CMatchSyntax;
 
56303
 
 
56304
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56305
 
 
56306
  CTree *sons[2]; // expr, args
 
56307
 
 
56308
public:
 
56309
  /** Constructor.
 
56310
   *  \param e The expression on which the call is invoked. */
 
56311
  CT_CallExpr (CTree *e) { AddSon (sons[0], e); AddSon (sons[1], 0); }
 
56312
  /** Constructor.
 
56313
   *  \param e The expression on which the call is invoked.
 
56314
   *  \param l The argument list of the call. */
 
56315
  CT_CallExpr (CTree *e, CTree *l) { AddSon (sons[0], e); AddSon (sons[1], l); }
 
56316
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56317
  static const char *NodeId ();
 
56318
  /** Get the name of the node. Can be compared with NodeId(). */
 
56319
  const char *NodeName () const { return NodeId (); }
 
56320
  /** Get the number of sons. */
 
56321
  int Sons () const { return CTree::Sons (sons, 2); }
 
56322
  /** Get the n-th son.
 
56323
   *  \param n The index of the son.
 
56324
   *  \return The n-th son or NULL. */
 
56325
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
56326
  /** Replace a son.
 
56327
   *  \param old_son The son to replace.
 
56328
   *  \param new_son The new son. */
 
56329
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56330
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
56331
  }
 
56332
  CTree *Expr () const { return sons[0]; }
 
56333
  CT_ExprList *Arguments () const { return (CT_ExprList*)sons[1]; }
 
56334
   private:
 
56335
  typedef CT_CallExpr CCExprResolveExpr;
 
56336
 
 
56337
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
56338
 public :
 
56339
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
56340
  typedef CT_CallExpr CExprResolveExpr;
 
56341
 
 
56342
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
56343
 public :
 
56344
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
56345
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
56346
  const char *__attr_name (unsigned i) const {
 
56347
    static const char *names[] = { "sons" }; return names[i];
 
56348
  }
 
56349
  const void *__attr (unsigned __i) const {
 
56350
    switch (__i) { case 0: return &sons; default: return 0; }
 
56351
  }
 
56352
#line 1645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56353
};
 
56354
 
 
56355
/** \class CT_CastExpr CTree.h Puma/CTree.h
 
56356
 *  Tree node representing a cast expression.
 
56357
 *  Example: \code (int)a \endcode */
 
56358
 
 
56359
#line 56360 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56360
} // closed Puma
 
56361
class CCExprResolve;
 
56362
class CExprResolve;
 
56363
class WinIfExists;
 
56364
class WinImportHandler;
 
56365
class WinMacros;
 
56366
class WinAsm;
 
56367
class WinDeclSpecs;
 
56368
class WinMemberExplSpec;
 
56369
class WinTypeKeywords;
 
56370
class WinFriend;
 
56371
class ExtAC;
 
56372
class ExtACBuilderCoupling;
 
56373
class ExtACSyntaxCoupling;
 
56374
class ExtACTree;
 
56375
class ExtACKeywords;
 
56376
class ExtGnu;
 
56377
class PragmaOnceUnitState;
 
56378
class PragmaOnce;
 
56379
class CMatchSyntax;
 
56380
namespace Puma {
 
56381
 
 
56382
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56383
 
 
56384
#line 56385 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56385
} // closed Puma
 
56386
 
 
56387
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56388
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56389
#include "CCExprResolveH.ah"
 
56390
#endif
 
56391
namespace Puma {
 
56392
 
 
56393
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56394
 
 
56395
#line 56396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56396
} // closed Puma
 
56397
 
 
56398
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56399
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56400
#include "CExprResolveH.ah"
 
56401
#endif
 
56402
namespace Puma {
 
56403
 
 
56404
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56405
class CT_CastExpr : public CT_Expression {
 
56406
#line 56407 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56407
  friend class ::CCExprResolve;
 
56408
  friend class ::CExprResolve;
 
56409
  friend class ::WinIfExists;
 
56410
  friend class ::WinImportHandler;
 
56411
  friend class ::WinMacros;
 
56412
  friend class ::WinAsm;
 
56413
  friend class ::WinDeclSpecs;
 
56414
  friend class ::WinMemberExplSpec;
 
56415
  friend class ::WinTypeKeywords;
 
56416
  friend class ::WinFriend;
 
56417
  friend class ::ExtAC;
 
56418
  friend class ::ExtACBuilderCoupling;
 
56419
  friend class ::ExtACSyntaxCoupling;
 
56420
  friend class ::ExtACTree;
 
56421
  friend class ::ExtACKeywords;
 
56422
  friend class ::ExtGnu;
 
56423
  friend class ::PragmaOnceUnitState;
 
56424
  friend class ::PragmaOnce;
 
56425
  friend class ::CMatchSyntax;
 
56426
 
 
56427
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56428
 
 
56429
  CTree *sons[4]; // open, type, close, expr
 
56430
 
 
56431
public:
 
56432
  /** Constructor.
 
56433
   *  \param o Left parenthesis of the type name.
 
56434
   *  \param t The type to cast to.
 
56435
   *  \param c Right parenthesis of the type name. 
 
56436
   *  \param e The expression to cast. */
 
56437
  CT_CastExpr (CTree *o, CTree *t, CTree *c, CTree *e) {
 
56438
    AddSon (sons[0], o); AddSon (sons[1], t); 
 
56439
    AddSon (sons[2], c); AddSon (sons[3], e);
 
56440
  }
 
56441
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56442
  static const char *NodeId ();
 
56443
  /** Get the name of the node. Can be compared with NodeId(). */
 
56444
  const char *NodeName () const { return NodeId (); }
 
56445
  /** Get the number of sons. */
 
56446
  int Sons () const { return 4; }
 
56447
  /** Get the n-th son.
 
56448
   *  \param n The index of the son.
 
56449
   *  \return The n-th son or NULL. */
 
56450
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
56451
  /** Replace a son.
 
56452
   *  \param old_son The son to replace.
 
56453
   *  \param new_son The new son. */
 
56454
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56455
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
56456
  }
 
56457
  /** Get the casted expression. */
 
56458
  CTree *Expr () const { return sons[3]; }
 
56459
  /** Get the type to cast to. */
 
56460
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
56461
   private:
 
56462
  typedef CT_CastExpr CCExprResolveExpr;
 
56463
 
 
56464
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
56465
 public :
 
56466
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
56467
  typedef CT_CastExpr CExprResolveExpr;
 
56468
 
 
56469
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
56470
 public :
 
56471
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
56472
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
56473
  const char *__attr_name (unsigned i) const {
 
56474
    static const char *names[] = { "sons" }; return names[i];
 
56475
  }
 
56476
  const void *__attr (unsigned __i) const {
 
56477
    switch (__i) { case 0: return &sons; default: return 0; }
 
56478
  }
 
56479
#line 1683 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56480
};
 
56481
 
 
56482
/** \class CT_StaticCast CTree.h Puma/CTree.h
 
56483
 *  Tree node representing a static cast.
 
56484
 *  Example: \code static_cast<int>(a) \endcode */
 
56485
 
 
56486
#line 56487 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56487
} // closed Puma
 
56488
class CCExprResolve;
 
56489
class CExprResolve;
 
56490
class WinIfExists;
 
56491
class WinImportHandler;
 
56492
class WinMacros;
 
56493
class WinAsm;
 
56494
class WinDeclSpecs;
 
56495
class WinMemberExplSpec;
 
56496
class WinTypeKeywords;
 
56497
class WinFriend;
 
56498
class ExtAC;
 
56499
class ExtACBuilderCoupling;
 
56500
class ExtACSyntaxCoupling;
 
56501
class ExtACTree;
 
56502
class ExtACKeywords;
 
56503
class ExtGnu;
 
56504
class PragmaOnceUnitState;
 
56505
class PragmaOnce;
 
56506
class CMatchSyntax;
 
56507
namespace Puma {
 
56508
 
 
56509
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56510
 
 
56511
#line 56512 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56512
} // closed Puma
 
56513
 
 
56514
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56515
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56516
#include "CCExprResolveH.ah"
 
56517
#endif
 
56518
namespace Puma {
 
56519
 
 
56520
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56521
 
 
56522
#line 56523 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56523
} // closed Puma
 
56524
 
 
56525
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56526
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56527
#include "CExprResolveH.ah"
 
56528
#endif
 
56529
namespace Puma {
 
56530
 
 
56531
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56532
class CT_StaticCast : public CT_Expression {
 
56533
#line 56534 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56534
  friend class ::CCExprResolve;
 
56535
  friend class ::CExprResolve;
 
56536
  friend class ::WinIfExists;
 
56537
  friend class ::WinImportHandler;
 
56538
  friend class ::WinMacros;
 
56539
  friend class ::WinAsm;
 
56540
  friend class ::WinDeclSpecs;
 
56541
  friend class ::WinMemberExplSpec;
 
56542
  friend class ::WinTypeKeywords;
 
56543
  friend class ::WinFriend;
 
56544
  friend class ::ExtAC;
 
56545
  friend class ::ExtACBuilderCoupling;
 
56546
  friend class ::ExtACSyntaxCoupling;
 
56547
  friend class ::ExtACTree;
 
56548
  friend class ::ExtACKeywords;
 
56549
  friend class ::ExtGnu;
 
56550
  friend class ::PragmaOnceUnitState;
 
56551
  friend class ::PragmaOnce;
 
56552
  friend class ::CMatchSyntax;
 
56553
 
 
56554
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56555
 
 
56556
  CTree *sons[5]; // cast, open, type, close, expr
 
56557
 
 
56558
public:
 
56559
  /** Constructor.
 
56560
   *  \param cst The cast operator, i.e. 'static_cast'.
 
56561
   *  \param o Left arrow bracket of the type name.
 
56562
   *  \param t The type to cast to.
 
56563
   *  \param c Right array bracket of the type name.
 
56564
   *  \param e The expression to cast. */
 
56565
  CT_StaticCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) {
 
56566
    AddSon (sons[0], cst); AddSon (sons[1], o); AddSon (sons[2], t); 
 
56567
    AddSon (sons[3], c); AddSon (sons[4], e);
 
56568
  }
 
56569
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56570
  static const char *NodeId ();
 
56571
  /** Get the name of the node. Can be compared with NodeId(). */
 
56572
  const char *NodeName () const { return NodeId (); }
 
56573
  /** Get the number of sons. */
 
56574
  int Sons () const { return 5; }
 
56575
  /** Get the n-th son.
 
56576
   *  \param n The index of the son.
 
56577
   *  \return The n-th son or NULL. */
 
56578
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
56579
  /** Replace a son.
 
56580
   *  \param old_son The son to replace.
 
56581
   *  \param new_son The new son. */
 
56582
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56583
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
56584
  }
 
56585
  /** Get the casted expression. */
 
56586
  CTree *Expr () const { return sons[4]; }
 
56587
  /** Get the type to cast to. */
 
56588
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
56589
   private:
 
56590
  typedef CT_StaticCast CCExprResolveExpr;
 
56591
 
 
56592
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
56593
 public :
 
56594
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
56595
  typedef CT_StaticCast CExprResolveExpr;
 
56596
 
 
56597
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
56598
 public :
 
56599
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
56600
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
56601
  const char *__attr_name (unsigned i) const {
 
56602
    static const char *names[] = { "sons" }; return names[i];
 
56603
  }
 
56604
  const void *__attr (unsigned __i) const {
 
56605
    switch (__i) { case 0: return &sons; default: return 0; }
 
56606
  }
 
56607
#line 1722 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56608
};
 
56609
 
 
56610
/** \class CT_ConstCast CTree.h Puma/CTree.h
 
56611
 *  Tree node representing a const cast.
 
56612
 *  Example: \code const_cast<int>(a) \endcode */
 
56613
 
 
56614
#line 56615 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56615
} // closed Puma
 
56616
class CCExprResolve;
 
56617
class CExprResolve;
 
56618
class WinIfExists;
 
56619
class WinImportHandler;
 
56620
class WinMacros;
 
56621
class WinAsm;
 
56622
class WinDeclSpecs;
 
56623
class WinMemberExplSpec;
 
56624
class WinTypeKeywords;
 
56625
class WinFriend;
 
56626
class ExtAC;
 
56627
class ExtACBuilderCoupling;
 
56628
class ExtACSyntaxCoupling;
 
56629
class ExtACTree;
 
56630
class ExtACKeywords;
 
56631
class ExtGnu;
 
56632
class PragmaOnceUnitState;
 
56633
class PragmaOnce;
 
56634
class CMatchSyntax;
 
56635
namespace Puma {
 
56636
 
 
56637
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56638
 
 
56639
#line 56640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56640
} // closed Puma
 
56641
 
 
56642
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56643
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56644
#include "CCExprResolveH.ah"
 
56645
#endif
 
56646
namespace Puma {
 
56647
 
 
56648
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56649
 
 
56650
#line 56651 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56651
} // closed Puma
 
56652
 
 
56653
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56654
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56655
#include "CExprResolveH.ah"
 
56656
#endif
 
56657
namespace Puma {
 
56658
 
 
56659
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56660
class CT_ConstCast : public CT_StaticCast {
 
56661
#line 56662 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56662
  friend class ::CCExprResolve;
 
56663
  friend class ::CExprResolve;
 
56664
  friend class ::WinIfExists;
 
56665
  friend class ::WinImportHandler;
 
56666
  friend class ::WinMacros;
 
56667
  friend class ::WinAsm;
 
56668
  friend class ::WinDeclSpecs;
 
56669
  friend class ::WinMemberExplSpec;
 
56670
  friend class ::WinTypeKeywords;
 
56671
  friend class ::WinFriend;
 
56672
  friend class ::ExtAC;
 
56673
  friend class ::ExtACBuilderCoupling;
 
56674
  friend class ::ExtACSyntaxCoupling;
 
56675
  friend class ::ExtACTree;
 
56676
  friend class ::ExtACKeywords;
 
56677
  friend class ::ExtGnu;
 
56678
  friend class ::PragmaOnceUnitState;
 
56679
  friend class ::PragmaOnce;
 
56680
  friend class ::CMatchSyntax;
 
56681
 
 
56682
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56683
 
 
56684
public:
 
56685
  /** Constructor.
 
56686
   *  \param cst The cast operator, i.e. 'const_cast'.
 
56687
   *  \param o Left arrow bracket of the type name.
 
56688
   *  \param t The type to cast to.
 
56689
   *  \param c Right array bracket of the type name.
 
56690
   *  \param e The expression to cast. */
 
56691
  CT_ConstCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
56692
    CT_StaticCast (cst, o, t, c, e) {}
 
56693
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56694
  static const char *NodeId ();
 
56695
  /** Get the name of the node. Can be compared with NodeId(). */
 
56696
  const char *NodeName () const { return NodeId (); }
 
56697
   private:
 
56698
  typedef CT_ConstCast CCExprResolveExpr;
 
56699
 
 
56700
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
56701
 public :
 
56702
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
56703
  typedef CT_ConstCast CExprResolveExpr;
 
56704
 
 
56705
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
56706
 public :
 
56707
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
56708
  typedef AC::TLE __AttrTypes;
 
56709
  const char *__attr_name (unsigned i) const { return 0; }
 
56710
  const void *__attr (unsigned __i) const { return 0; }
 
56711
#line 1741 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56712
};
 
56713
 
 
56714
/** \class CT_ReintCast CTree.h Puma/CTree.h
 
56715
 *  Tree node representing a reinterpret cast.
 
56716
 *  Example: \code reinterpret_cast<int>(a) \endcode */
 
56717
 
 
56718
#line 56719 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56719
} // closed Puma
 
56720
class CCExprResolve;
 
56721
class CExprResolve;
 
56722
class WinIfExists;
 
56723
class WinImportHandler;
 
56724
class WinMacros;
 
56725
class WinAsm;
 
56726
class WinDeclSpecs;
 
56727
class WinMemberExplSpec;
 
56728
class WinTypeKeywords;
 
56729
class WinFriend;
 
56730
class ExtAC;
 
56731
class ExtACBuilderCoupling;
 
56732
class ExtACSyntaxCoupling;
 
56733
class ExtACTree;
 
56734
class ExtACKeywords;
 
56735
class ExtGnu;
 
56736
class PragmaOnceUnitState;
 
56737
class PragmaOnce;
 
56738
class CMatchSyntax;
 
56739
namespace Puma {
 
56740
 
 
56741
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56742
 
 
56743
#line 56744 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56744
} // closed Puma
 
56745
 
 
56746
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56747
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56748
#include "CCExprResolveH.ah"
 
56749
#endif
 
56750
namespace Puma {
 
56751
 
 
56752
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56753
 
 
56754
#line 56755 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56755
} // closed Puma
 
56756
 
 
56757
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56758
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56759
#include "CExprResolveH.ah"
 
56760
#endif
 
56761
namespace Puma {
 
56762
 
 
56763
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56764
class CT_ReintCast : public CT_StaticCast {
 
56765
#line 56766 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56766
  friend class ::CCExprResolve;
 
56767
  friend class ::CExprResolve;
 
56768
  friend class ::WinIfExists;
 
56769
  friend class ::WinImportHandler;
 
56770
  friend class ::WinMacros;
 
56771
  friend class ::WinAsm;
 
56772
  friend class ::WinDeclSpecs;
 
56773
  friend class ::WinMemberExplSpec;
 
56774
  friend class ::WinTypeKeywords;
 
56775
  friend class ::WinFriend;
 
56776
  friend class ::ExtAC;
 
56777
  friend class ::ExtACBuilderCoupling;
 
56778
  friend class ::ExtACSyntaxCoupling;
 
56779
  friend class ::ExtACTree;
 
56780
  friend class ::ExtACKeywords;
 
56781
  friend class ::ExtGnu;
 
56782
  friend class ::PragmaOnceUnitState;
 
56783
  friend class ::PragmaOnce;
 
56784
  friend class ::CMatchSyntax;
 
56785
 
 
56786
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56787
 
 
56788
public:
 
56789
  /** Constructor.
 
56790
   *  \param cst The cast operator, i.e. 'reinterpret_cast'.
 
56791
   *  \param o Left arrow bracket of the type name.
 
56792
   *  \param t The type to cast to.
 
56793
   *  \param c Right array bracket of the type name.
 
56794
   *  \param e The expression to cast. */
 
56795
  CT_ReintCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
56796
    CT_StaticCast (cst, o, t, c, e) {}
 
56797
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56798
  static const char *NodeId ();
 
56799
  /** Get the name of the node. Can be compared with NodeId(). */
 
56800
  const char *NodeName () const { return NodeId (); }
 
56801
   private:
 
56802
  typedef CT_ReintCast CCExprResolveExpr;
 
56803
 
 
56804
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
56805
 public :
 
56806
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
56807
  typedef CT_ReintCast CExprResolveExpr;
 
56808
 
 
56809
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
56810
 public :
 
56811
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
56812
  typedef AC::TLE __AttrTypes;
 
56813
  const char *__attr_name (unsigned i) const { return 0; }
 
56814
  const void *__attr (unsigned __i) const { return 0; }
 
56815
#line 1760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56816
};
 
56817
 
 
56818
/** \class CT_DynamicCast CTree.h Puma/CTree.h
 
56819
 *  Tree node representing a dynamic cast.
 
56820
 *  Example: \code dynamic_cast<int>(a) \endcode */
 
56821
 
 
56822
#line 56823 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56823
} // closed Puma
 
56824
class CCExprResolve;
 
56825
class CExprResolve;
 
56826
class WinIfExists;
 
56827
class WinImportHandler;
 
56828
class WinMacros;
 
56829
class WinAsm;
 
56830
class WinDeclSpecs;
 
56831
class WinMemberExplSpec;
 
56832
class WinTypeKeywords;
 
56833
class WinFriend;
 
56834
class ExtAC;
 
56835
class ExtACBuilderCoupling;
 
56836
class ExtACSyntaxCoupling;
 
56837
class ExtACTree;
 
56838
class ExtACKeywords;
 
56839
class ExtGnu;
 
56840
class PragmaOnceUnitState;
 
56841
class PragmaOnce;
 
56842
class CMatchSyntax;
 
56843
namespace Puma {
 
56844
 
 
56845
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56846
 
 
56847
#line 56848 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56848
} // closed Puma
 
56849
 
 
56850
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56851
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56852
#include "CCExprResolveH.ah"
 
56853
#endif
 
56854
namespace Puma {
 
56855
 
 
56856
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56857
 
 
56858
#line 56859 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56859
} // closed Puma
 
56860
 
 
56861
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56862
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56863
#include "CExprResolveH.ah"
 
56864
#endif
 
56865
namespace Puma {
 
56866
 
 
56867
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56868
class CT_DynamicCast : public CT_StaticCast {
 
56869
#line 56870 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56870
  friend class ::CCExprResolve;
 
56871
  friend class ::CExprResolve;
 
56872
  friend class ::WinIfExists;
 
56873
  friend class ::WinImportHandler;
 
56874
  friend class ::WinMacros;
 
56875
  friend class ::WinAsm;
 
56876
  friend class ::WinDeclSpecs;
 
56877
  friend class ::WinMemberExplSpec;
 
56878
  friend class ::WinTypeKeywords;
 
56879
  friend class ::WinFriend;
 
56880
  friend class ::ExtAC;
 
56881
  friend class ::ExtACBuilderCoupling;
 
56882
  friend class ::ExtACSyntaxCoupling;
 
56883
  friend class ::ExtACTree;
 
56884
  friend class ::ExtACKeywords;
 
56885
  friend class ::ExtGnu;
 
56886
  friend class ::PragmaOnceUnitState;
 
56887
  friend class ::PragmaOnce;
 
56888
  friend class ::CMatchSyntax;
 
56889
 
 
56890
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56891
 
 
56892
public:
 
56893
  /** Constructor.
 
56894
   *  \param cst The cast operator, i.e. 'dynamic_cast'.
 
56895
   *  \param o Left arrow bracket of the type name.
 
56896
   *  \param t The type to cast to.
 
56897
   *  \param c Right array bracket of the type name.
 
56898
   *  \param e The expression to cast. */
 
56899
  CT_DynamicCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
56900
    CT_StaticCast (cst, o, t, c, e) {}
 
56901
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56902
  static const char *NodeId ();
 
56903
  /** Get the name of the node. Can be compared with NodeId(). */
 
56904
  const char *NodeName () const { return NodeId (); }
 
56905
   private:
 
56906
  typedef CT_DynamicCast CCExprResolveExpr;
 
56907
 
 
56908
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
56909
 public :
 
56910
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
56911
  typedef CT_DynamicCast CExprResolveExpr;
 
56912
 
 
56913
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
56914
 public :
 
56915
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
56916
  typedef AC::TLE __AttrTypes;
 
56917
  const char *__attr_name (unsigned i) const { return 0; }
 
56918
  const void *__attr (unsigned __i) const { return 0; }
 
56919
#line 1779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56920
};
 
56921
 
 
56922
/** \class CT_ImplicitCast CTree.h Puma/CTree.h
 
56923
 *  Tree node representing an implicit cast.
 
56924
 *  Example: 
 
56925
 *  \code 
 
56926
 * int i = 1.2;  // implicit cast from float to int 
 
56927
 *  \endcode */
 
56928
 
 
56929
#line 56930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56930
} // closed Puma
 
56931
class CCExprResolve;
 
56932
class CExprResolve;
 
56933
class WinIfExists;
 
56934
class WinImportHandler;
 
56935
class WinMacros;
 
56936
class WinAsm;
 
56937
class WinDeclSpecs;
 
56938
class WinMemberExplSpec;
 
56939
class WinTypeKeywords;
 
56940
class WinFriend;
 
56941
class ExtAC;
 
56942
class ExtACBuilderCoupling;
 
56943
class ExtACSyntaxCoupling;
 
56944
class ExtACTree;
 
56945
class ExtACKeywords;
 
56946
class ExtGnu;
 
56947
class PragmaOnceUnitState;
 
56948
class PragmaOnce;
 
56949
class CMatchSyntax;
 
56950
namespace Puma {
 
56951
 
 
56952
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56953
 
 
56954
#line 56955 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56955
} // closed Puma
 
56956
 
 
56957
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56958
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
56959
#include "CCExprResolveH.ah"
 
56960
#endif
 
56961
namespace Puma {
 
56962
 
 
56963
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56964
 
 
56965
#line 56966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56966
} // closed Puma
 
56967
 
 
56968
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56969
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
56970
#include "CExprResolveH.ah"
 
56971
#endif
 
56972
namespace Puma {
 
56973
 
 
56974
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56975
class CT_ImplicitCast : public CT_Expression {
 
56976
#line 56977 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
56977
  friend class ::CCExprResolve;
 
56978
  friend class ::CExprResolve;
 
56979
  friend class ::WinIfExists;
 
56980
  friend class ::WinImportHandler;
 
56981
  friend class ::WinMacros;
 
56982
  friend class ::WinAsm;
 
56983
  friend class ::WinDeclSpecs;
 
56984
  friend class ::WinMemberExplSpec;
 
56985
  friend class ::WinTypeKeywords;
 
56986
  friend class ::WinFriend;
 
56987
  friend class ::ExtAC;
 
56988
  friend class ::ExtACBuilderCoupling;
 
56989
  friend class ::ExtACSyntaxCoupling;
 
56990
  friend class ::ExtACTree;
 
56991
  friend class ::ExtACKeywords;
 
56992
  friend class ::ExtGnu;
 
56993
  friend class ::PragmaOnceUnitState;
 
56994
  friend class ::PragmaOnce;
 
56995
  friend class ::CMatchSyntax;
 
56996
 
 
56997
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56998
 
 
56999
  CTree *_expr; // casted expression
 
57000
 
 
57001
public:
 
57002
  /** Constructor.
 
57003
   *  \param e The expression that is implicitely casted. */
 
57004
  CT_ImplicitCast (CTree *e) { AddSon (_expr, e); }
 
57005
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57006
  static const char *NodeId ();
 
57007
  /** Get the name of the node. Can be compared with NodeId(). */
 
57008
  const char *NodeName () const { return NodeId (); }
 
57009
  /** Get the number of sons. */
 
57010
  int Sons () const { return 1; }
 
57011
  /** Get the n-th son.
 
57012
   *  \param n The index of the son.
 
57013
   *  \return The n-th son or NULL. */
 
57014
  CTree *Son (int n) const { return n == 0 ? _expr : (CTree*)0; }
 
57015
  /** Get the casted expression. */
 
57016
  CTree *Expr () const { return _expr; }
 
57017
  /** Replace a son.
 
57018
   *  \param old_son The son to replace.
 
57019
   *  \param new_son The new son. */
 
57020
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
57021
   { CTree::ReplaceSon (_expr, old_son, new_son); }
 
57022
   private:
 
57023
  typedef CT_ImplicitCast CCExprResolveExpr;
 
57024
 
 
57025
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
57026
 public :
 
57027
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
57028
  typedef CT_ImplicitCast CExprResolveExpr;
 
57029
 
 
57030
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
57031
 public :
 
57032
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
57033
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
57034
  const char *__attr_name (unsigned i) const {
 
57035
    static const char *names[] = { "_expr" }; return names[i];
 
57036
  }
 
57037
  const void *__attr (unsigned __i) const {
 
57038
    switch (__i) { case 0: return &_expr; default: return 0; }
 
57039
  }
 
57040
#line 1811 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57041
};
 
57042
 
 
57043
/** \class CT_TypeidExpr CTree.h Puma/CTree.h
 
57044
 *  Tree node representing a typeid expression.
 
57045
 *  Example: \code typeid(X) \endcode */
 
57046
 
 
57047
#line 57048 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57048
} // closed Puma
 
57049
class CCExprResolve;
 
57050
class CExprResolve;
 
57051
class WinIfExists;
 
57052
class WinImportHandler;
 
57053
class WinMacros;
 
57054
class WinAsm;
 
57055
class WinDeclSpecs;
 
57056
class WinMemberExplSpec;
 
57057
class WinTypeKeywords;
 
57058
class WinFriend;
 
57059
class ExtAC;
 
57060
class ExtACBuilderCoupling;
 
57061
class ExtACSyntaxCoupling;
 
57062
class ExtACTree;
 
57063
class ExtACKeywords;
 
57064
class ExtGnu;
 
57065
class PragmaOnceUnitState;
 
57066
class PragmaOnce;
 
57067
class CMatchSyntax;
 
57068
namespace Puma {
 
57069
 
 
57070
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57071
 
 
57072
#line 57073 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57073
} // closed Puma
 
57074
 
 
57075
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
57076
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
57077
#include "CCExprResolveH.ah"
 
57078
#endif
 
57079
namespace Puma {
 
57080
 
 
57081
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57082
 
 
57083
#line 57084 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57084
} // closed Puma
 
57085
 
 
57086
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
57087
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
57088
#include "CExprResolveH.ah"
 
57089
#endif
 
57090
namespace Puma {
 
57091
 
 
57092
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57093
class CT_TypeidExpr : public CT_Expression {
 
57094
#line 57095 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57095
  friend class ::CCExprResolve;
 
57096
  friend class ::CExprResolve;
 
57097
  friend class ::WinIfExists;
 
57098
  friend class ::WinImportHandler;
 
57099
  friend class ::WinMacros;
 
57100
  friend class ::WinAsm;
 
57101
  friend class ::WinDeclSpecs;
 
57102
  friend class ::WinMemberExplSpec;
 
57103
  friend class ::WinTypeKeywords;
 
57104
  friend class ::WinFriend;
 
57105
  friend class ::ExtAC;
 
57106
  friend class ::ExtACBuilderCoupling;
 
57107
  friend class ::ExtACSyntaxCoupling;
 
57108
  friend class ::ExtACTree;
 
57109
  friend class ::ExtACKeywords;
 
57110
  friend class ::ExtGnu;
 
57111
  friend class ::PragmaOnceUnitState;
 
57112
  friend class ::PragmaOnce;
 
57113
  friend class ::CMatchSyntax;
 
57114
 
 
57115
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57116
 
 
57117
  CTree *sons[4]; // typeid, open, type_id/expr, close
 
57118
 
 
57119
public:
 
57120
  /** Constructor.
 
57121
   *  \param tid The 'typeid' operator.
 
57122
   *  \param o The left parenthesis of the type name or expression.
 
57123
   *  \param e The expression or type name for which to get the type identifier.
 
57124
   *  \param c The right parenthesis of the type name or expression. */
 
57125
  CT_TypeidExpr (CTree *tid, CTree *o, CTree *e, CTree *c) {
 
57126
    AddSon (sons[0], tid); AddSon (sons[1], o); 
 
57127
    AddSon (sons[2], e); AddSon (sons[3], c);
 
57128
  }
 
57129
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57130
  static const char *NodeId ();
 
57131
  /** Get the name of the node. Can be compared with NodeId(). */
 
57132
  const char *NodeName () const { return NodeId (); }
 
57133
  /** Get the number of sons. */
 
57134
  int Sons () const { return 4; }
 
57135
  /** Get the n-th son.
 
57136
   *  \param n The index of the son.
 
57137
   *  \return The n-th son or NULL. */
 
57138
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
57139
  /** Replace a son.
 
57140
   *  \param old_son The son to replace.
 
57141
   *  \param new_son The new son. */
 
57142
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57143
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
57144
  }
 
57145
  /** Get the typeid argument, i.e. the expression or type name for
 
57146
   *  which to get the type identifier. */
 
57147
  CTree *Arg () const { return sons[2]; }
 
57148
   private:
 
57149
  typedef CT_TypeidExpr CCExprResolveExpr;
 
57150
 
 
57151
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
57152
 public :
 
57153
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
57154
  typedef CT_TypeidExpr CExprResolveExpr;
 
57155
 
 
57156
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
57157
 public :
 
57158
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
57159
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
57160
  const char *__attr_name (unsigned i) const {
 
57161
    static const char *names[] = { "sons" }; return names[i];
 
57162
  }
 
57163
  const void *__attr (unsigned __i) const {
 
57164
    switch (__i) { case 0: return &sons; default: return 0; }
 
57165
  }
 
57166
#line 1848 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57167
};
 
57168
 
 
57169
/** \class CT_SizeofExpr CTree.h Puma/CTree.h
 
57170
 *  Tree node representing a sizeof expression.
 
57171
 *  Example: \code sizeof(int*) \endcode */
 
57172
 
 
57173
#line 57174 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57174
} // closed Puma
 
57175
class CCExprResolve;
 
57176
class CExprResolve;
 
57177
class WinIfExists;
 
57178
class WinImportHandler;
 
57179
class WinMacros;
 
57180
class WinAsm;
 
57181
class WinDeclSpecs;
 
57182
class WinMemberExplSpec;
 
57183
class WinTypeKeywords;
 
57184
class WinFriend;
 
57185
class ExtAC;
 
57186
class ExtACBuilderCoupling;
 
57187
class ExtACSyntaxCoupling;
 
57188
class ExtACTree;
 
57189
class ExtACKeywords;
 
57190
class ExtGnu;
 
57191
class PragmaOnceUnitState;
 
57192
class PragmaOnce;
 
57193
class CMatchSyntax;
 
57194
namespace Puma {
 
57195
 
 
57196
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57197
 
 
57198
#line 57199 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57199
} // closed Puma
 
57200
 
 
57201
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
57202
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
57203
#include "CCExprResolveH.ah"
 
57204
#endif
 
57205
namespace Puma {
 
57206
 
 
57207
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57208
 
 
57209
#line 57210 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57210
} // closed Puma
 
57211
 
 
57212
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
57213
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
57214
#include "CExprResolveH.ah"
 
57215
#endif
 
57216
namespace Puma {
 
57217
 
 
57218
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57219
class CT_SizeofExpr : public CT_Expression {
 
57220
#line 57221 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57221
  friend class ::CCExprResolve;
 
57222
  friend class ::CExprResolve;
 
57223
  friend class ::WinIfExists;
 
57224
  friend class ::WinImportHandler;
 
57225
  friend class ::WinMacros;
 
57226
  friend class ::WinAsm;
 
57227
  friend class ::WinDeclSpecs;
 
57228
  friend class ::WinMemberExplSpec;
 
57229
  friend class ::WinTypeKeywords;
 
57230
  friend class ::WinFriend;
 
57231
  friend class ::ExtAC;
 
57232
  friend class ::ExtACBuilderCoupling;
 
57233
  friend class ::ExtACSyntaxCoupling;
 
57234
  friend class ::ExtACTree;
 
57235
  friend class ::ExtACKeywords;
 
57236
  friend class ::ExtGnu;
 
57237
  friend class ::PragmaOnceUnitState;
 
57238
  friend class ::PragmaOnce;
 
57239
  friend class ::CMatchSyntax;
 
57240
 
 
57241
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57242
 
 
57243
  CTree *sons[5]; // key, open, type, close, expr
 
57244
 
 
57245
public:
 
57246
  /** Constructor.
 
57247
   *  \param k The 'sizeof' keyword.
 
57248
   *  \param o Left parenthesis around the type name.
 
57249
   *  \param t The type from which to get the size.
 
57250
   *  \param c Right parenthesis around the type name. */
 
57251
  CT_SizeofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
57252
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
57253
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
57254
  }
 
57255
  /** Constructor.
 
57256
   *  \param k The 'sizeof' keyword.
 
57257
   *  \param e The expression from which to get the size. */
 
57258
  CT_SizeofExpr (CTree *k, CTree *e) {
 
57259
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
57260
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
57261
  }
 
57262
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57263
  static const char *NodeId ();
 
57264
  /** Get the name of the node. Can be compared with NodeId(). */
 
57265
  const char *NodeName () const { return NodeId (); }
 
57266
  /** Get the number of sons. */
 
57267
  int Sons () const { return CTree::Sons (sons, 5); }
 
57268
  /** Get the n-th son.
 
57269
   *  \param n The index of the son.
 
57270
   *  \return The n-th son or NULL. */
 
57271
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
57272
  /** Replace a son.
 
57273
   *  \param old_son The son to replace.
 
57274
   *  \param new_son The new son. */
 
57275
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57276
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
57277
  }
 
57278
  /** Get the expression. */
 
57279
  CTree *Expr () const { return sons[4]; }
 
57280
  /** Get the type name. */
 
57281
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
57282
   private:
 
57283
  typedef CT_SizeofExpr CCExprResolveExpr;
 
57284
 
 
57285
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
57286
 public :
 
57287
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
57288
  typedef CT_SizeofExpr CExprResolveExpr;
 
57289
 
 
57290
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
57291
 public :
 
57292
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
57293
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
57294
  const char *__attr_name (unsigned i) const {
 
57295
    static const char *names[] = { "sons" }; return names[i];
 
57296
  }
 
57297
  const void *__attr (unsigned __i) const {
 
57298
    switch (__i) { case 0: return &sons; default: return 0; }
 
57299
  }
 
57300
#line 1893 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57301
};
 
57302
 
 
57303
/** \class CT_IndexDesignator CTree.h Puma/CTree.h
 
57304
 *  Tree node representing an index designator.
 
57305
 *  Example: \code [1] \endcode */
 
57306
 
 
57307
#line 57308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57308
} // closed Puma
 
57309
class CCExprResolve;
 
57310
class CExprResolve;
 
57311
class WinIfExists;
 
57312
class WinImportHandler;
 
57313
class WinMacros;
 
57314
class WinAsm;
 
57315
class WinDeclSpecs;
 
57316
class WinMemberExplSpec;
 
57317
class WinTypeKeywords;
 
57318
class WinFriend;
 
57319
class ExtAC;
 
57320
class ExtACBuilderCoupling;
 
57321
class ExtACSyntaxCoupling;
 
57322
class ExtACTree;
 
57323
class ExtACKeywords;
 
57324
class ExtGnu;
 
57325
class PragmaOnceUnitState;
 
57326
class PragmaOnce;
 
57327
class CMatchSyntax;
 
57328
namespace Puma {
 
57329
 
 
57330
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57331
 
 
57332
#line 57333 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57333
} // closed Puma
 
57334
 
 
57335
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
57336
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
57337
#include "CCExprResolveH.ah"
 
57338
#endif
 
57339
namespace Puma {
 
57340
 
 
57341
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57342
 
 
57343
#line 57344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57344
} // closed Puma
 
57345
 
 
57346
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
57347
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
57348
#include "CExprResolveH.ah"
 
57349
#endif
 
57350
namespace Puma {
 
57351
 
 
57352
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57353
class CT_IndexDesignator : public CT_Expression {
 
57354
#line 57355 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57355
  friend class ::CCExprResolve;
 
57356
  friend class ::CExprResolve;
 
57357
  friend class ::WinIfExists;
 
57358
  friend class ::WinImportHandler;
 
57359
  friend class ::WinMacros;
 
57360
  friend class ::WinAsm;
 
57361
  friend class ::WinDeclSpecs;
 
57362
  friend class ::WinMemberExplSpec;
 
57363
  friend class ::WinTypeKeywords;
 
57364
  friend class ::WinFriend;
 
57365
  friend class ::ExtAC;
 
57366
  friend class ::ExtACBuilderCoupling;
 
57367
  friend class ::ExtACSyntaxCoupling;
 
57368
  friend class ::ExtACTree;
 
57369
  friend class ::ExtACKeywords;
 
57370
  friend class ::ExtGnu;
 
57371
  friend class ::PragmaOnceUnitState;
 
57372
  friend class ::PragmaOnce;
 
57373
  friend class ::CMatchSyntax;
 
57374
 
 
57375
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57376
 
 
57377
  CTree *sons[3]; // open, index, close
 
57378
 
 
57379
public:
 
57380
  /** Constructor.
 
57381
   *  \param o Left bracket of the index designator.
 
57382
   *  \param i The index expression.
 
57383
   *  \param c Right bracket of the index designator. */
 
57384
  CT_IndexDesignator (CTree *o, CTree *i, CTree *c) {
 
57385
    AddSon (sons[0], o); AddSon (sons[1], i); AddSon (sons[2], c);
 
57386
  }
 
57387
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57388
  static const char *NodeId ();
 
57389
  /** Get the name of the node. Can be compared with NodeId(). */
 
57390
  const char *NodeName () const { return NodeId (); }
 
57391
  /** Get the number of sons. */
 
57392
  int Sons () const { return 3; }
 
57393
  /** Get the n-th son.
 
57394
   *  \param n The index of the son.
 
57395
   *  \return The n-th son or NULL. */
 
57396
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
57397
  /** Replace a son.
 
57398
   *  \param old_son The son to replace.
 
57399
   *  \param new_son The new son. */
 
57400
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57401
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
57402
  }
 
57403
   private:
 
57404
  typedef CT_IndexDesignator CCExprResolveExpr;
 
57405
 
 
57406
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
57407
 public :
 
57408
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
57409
  typedef CT_IndexDesignator CExprResolveExpr;
 
57410
 
 
57411
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
57412
 public :
 
57413
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
57414
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
57415
  const char *__attr_name (unsigned i) const {
 
57416
    static const char *names[] = { "sons" }; return names[i];
 
57417
  }
 
57418
  const void *__attr (unsigned __i) const {
 
57419
    switch (__i) { case 0: return &sons; default: return 0; }
 
57420
  }
 
57421
#line 1925 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57422
};
 
57423
 
 
57424
/** \class CT_MembDesignator CTree.h Puma/CTree.h
 
57425
 *  Tree node representing a member designator.
 
57426
 *  Example: \code .a \endcode */
 
57427
 
 
57428
#line 57429 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57429
} // closed Puma
 
57430
class CCExprResolve;
 
57431
class CExprResolve;
 
57432
class WinIfExists;
 
57433
class WinImportHandler;
 
57434
class WinMacros;
 
57435
class WinAsm;
 
57436
class WinDeclSpecs;
 
57437
class WinMemberExplSpec;
 
57438
class WinTypeKeywords;
 
57439
class WinFriend;
 
57440
class ExtAC;
 
57441
class ExtACBuilderCoupling;
 
57442
class ExtACSyntaxCoupling;
 
57443
class ExtACTree;
 
57444
class ExtACKeywords;
 
57445
class ExtGnu;
 
57446
class PragmaOnceUnitState;
 
57447
class PragmaOnce;
 
57448
class CMatchSyntax;
 
57449
namespace Puma {
 
57450
 
 
57451
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57452
 
 
57453
#line 57454 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57454
} // closed Puma
 
57455
 
 
57456
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
57457
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
57458
#include "CCExprResolveH.ah"
 
57459
#endif
 
57460
namespace Puma {
 
57461
 
 
57462
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57463
 
 
57464
#line 57465 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57465
} // closed Puma
 
57466
 
 
57467
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
57468
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
57469
#include "CExprResolveH.ah"
 
57470
#endif
 
57471
namespace Puma {
 
57472
 
 
57473
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57474
class CT_MembDesignator : public CT_Expression {
 
57475
#line 57476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57476
  friend class ::CCExprResolve;
 
57477
  friend class ::CExprResolve;
 
57478
  friend class ::WinIfExists;
 
57479
  friend class ::WinImportHandler;
 
57480
  friend class ::WinMacros;
 
57481
  friend class ::WinAsm;
 
57482
  friend class ::WinDeclSpecs;
 
57483
  friend class ::WinMemberExplSpec;
 
57484
  friend class ::WinTypeKeywords;
 
57485
  friend class ::WinFriend;
 
57486
  friend class ::ExtAC;
 
57487
  friend class ::ExtACBuilderCoupling;
 
57488
  friend class ::ExtACSyntaxCoupling;
 
57489
  friend class ::ExtACTree;
 
57490
  friend class ::ExtACKeywords;
 
57491
  friend class ::ExtGnu;
 
57492
  friend class ::PragmaOnceUnitState;
 
57493
  friend class ::PragmaOnce;
 
57494
  friend class ::CMatchSyntax;
 
57495
 
 
57496
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57497
 
 
57498
  CTree *sons[2]; // dot, member
 
57499
 
 
57500
public:
 
57501
  /** Constructor.
 
57502
   *  \param d The dot before the member name.
 
57503
   *  \param m The member name. */
 
57504
  CT_MembDesignator (CTree *d, CTree *m) { AddSon (sons[0], d); AddSon (sons[1], m); }
 
57505
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57506
  static const char *NodeId ();
 
57507
  /** Get the name of the node. Can be compared with NodeId(). */
 
57508
  const char *NodeName () const { return NodeId (); }
 
57509
  /** Get the number of sons. */
 
57510
  int Sons () const { return 2; }
 
57511
  /** Get the n-th son.
 
57512
   *  \param n The index of the son.
 
57513
   *  \return The n-th son or NULL. */
 
57514
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
57515
  /** Replace a son.
 
57516
   *  \param old_son The son to replace.
 
57517
   *  \param new_son The new son. */
 
57518
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57519
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
57520
  }
 
57521
   private:
 
57522
  typedef CT_MembDesignator CCExprResolveExpr;
 
57523
 
 
57524
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
57525
 public :
 
57526
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
57527
  typedef CT_MembDesignator CExprResolveExpr;
 
57528
 
 
57529
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
57530
 public :
 
57531
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
57532
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
57533
  const char *__attr_name (unsigned i) const {
 
57534
    static const char *names[] = { "sons" }; return names[i];
 
57535
  }
 
57536
  const void *__attr (unsigned __i) const {
 
57537
    switch (__i) { case 0: return &sons; default: return 0; }
 
57538
  }
 
57539
#line 1954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57540
};
 
57541
 
 
57542
/** \class CT_DesignatorSeq CTree.h Puma/CTree.h
 
57543
 *  Tree node representing a designator sequence.
 
57544
 *  Example: \code .a.b.c \endcode */
 
57545
 
 
57546
#line 57547 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57547
} // closed Puma
 
57548
class CCExprResolve;
 
57549
class CExprResolve;
 
57550
class WinIfExists;
 
57551
class WinImportHandler;
 
57552
class WinMacros;
 
57553
class WinAsm;
 
57554
class WinDeclSpecs;
 
57555
class WinMemberExplSpec;
 
57556
class WinTypeKeywords;
 
57557
class WinFriend;
 
57558
class ExtAC;
 
57559
class ExtACBuilderCoupling;
 
57560
class ExtACSyntaxCoupling;
 
57561
class ExtACTree;
 
57562
class ExtACKeywords;
 
57563
class ExtGnu;
 
57564
class PragmaOnceUnitState;
 
57565
class PragmaOnce;
 
57566
class CMatchSyntax;
 
57567
namespace Puma {
 
57568
 
 
57569
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57570
class CT_DesignatorSeq : public CT_List, public CSemValue {
 
57571
#line 57572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57572
  friend class ::CCExprResolve;
 
57573
  friend class ::CExprResolve;
 
57574
  friend class ::WinIfExists;
 
57575
  friend class ::WinImportHandler;
 
57576
  friend class ::WinMacros;
 
57577
  friend class ::WinAsm;
 
57578
  friend class ::WinDeclSpecs;
 
57579
  friend class ::WinMemberExplSpec;
 
57580
  friend class ::WinTypeKeywords;
 
57581
  friend class ::WinFriend;
 
57582
  friend class ::ExtAC;
 
57583
  friend class ::ExtACBuilderCoupling;
 
57584
  friend class ::ExtACSyntaxCoupling;
 
57585
  friend class ::ExtACTree;
 
57586
  friend class ::ExtACKeywords;
 
57587
  friend class ::ExtGnu;
 
57588
  friend class ::PragmaOnceUnitState;
 
57589
  friend class ::PragmaOnce;
 
57590
  friend class ::CMatchSyntax;
 
57591
 
 
57592
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57593
 
 
57594
public:
 
57595
  /** Constructor.
 
57596
   *  \param size Initial number of designators. */
 
57597
  CT_DesignatorSeq (int size = 1) : CT_List (size, 2) {}
 
57598
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57599
  static const char *NodeId ();
 
57600
  /** Get the name of the node. Can be compared with NodeId(). */
 
57601
  const char *NodeName () const { return NodeId (); }
 
57602
 
 
57603
  /** Get the type of the entity to initialize. */
 
57604
  CTypeInfo *Type () const { return type; }
 
57605
  /** Get the value of the entity to initialize. */
 
57606
  CExprValue *Value () const { return value; }
 
57607
  /** Get the semantic value object. */
 
57608
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
57609
public:
 
57610
  typedef AC::TLE __AttrTypes;
 
57611
  const char *__attr_name (unsigned i) const { return 0; }
 
57612
  const void *__attr (unsigned __i) const { return 0; }
 
57613
#line 1975 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57614
};
 
57615
 
 
57616
/*****************************************************************************/
 
57617
/*                                                                           */
 
57618
/*                         Declaration specifiers                            */
 
57619
/*                                                                           */
 
57620
/*****************************************************************************/
 
57621
 
 
57622
/** \class CT_DeclSpec CTree.h Puma/CTree.h
 
57623
 *  Base class for all tree nodes representing declaration specifiers. */
 
57624
 
 
57625
#line 57626 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57626
} // closed Puma
 
57627
class CCExprResolve;
 
57628
class CExprResolve;
 
57629
class WinIfExists;
 
57630
class WinImportHandler;
 
57631
class WinMacros;
 
57632
class WinAsm;
 
57633
class WinDeclSpecs;
 
57634
class WinMemberExplSpec;
 
57635
class WinTypeKeywords;
 
57636
class WinFriend;
 
57637
class ExtAC;
 
57638
class ExtACBuilderCoupling;
 
57639
class ExtACSyntaxCoupling;
 
57640
class ExtACTree;
 
57641
class ExtACKeywords;
 
57642
class ExtGnu;
 
57643
class PragmaOnceUnitState;
 
57644
class PragmaOnce;
 
57645
class CMatchSyntax;
 
57646
namespace Puma {
 
57647
 
 
57648
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57649
class CT_DeclSpec : public CTree {
 
57650
#line 57651 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57651
  friend class ::CCExprResolve;
 
57652
  friend class ::CExprResolve;
 
57653
  friend class ::WinIfExists;
 
57654
  friend class ::WinImportHandler;
 
57655
  friend class ::WinMacros;
 
57656
  friend class ::WinAsm;
 
57657
  friend class ::WinDeclSpecs;
 
57658
  friend class ::WinMemberExplSpec;
 
57659
  friend class ::WinTypeKeywords;
 
57660
  friend class ::WinFriend;
 
57661
  friend class ::ExtAC;
 
57662
  friend class ::ExtACBuilderCoupling;
 
57663
  friend class ::ExtACSyntaxCoupling;
 
57664
  friend class ::ExtACTree;
 
57665
  friend class ::ExtACKeywords;
 
57666
  friend class ::ExtGnu;
 
57667
  friend class ::PragmaOnceUnitState;
 
57668
  friend class ::PragmaOnce;
 
57669
  friend class ::CMatchSyntax;
 
57670
 
 
57671
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57672
 
 
57673
protected:
 
57674
  /** Constructor. */
 
57675
  CT_DeclSpec () {}
 
57676
public:
 
57677
  typedef AC::TLE __AttrTypes;
 
57678
  const char *__attr_name (unsigned i) const { return 0; }
 
57679
  const void *__attr (unsigned __i) const { return 0; }
 
57680
#line 1989 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57681
};
 
57682
 
 
57683
/** \class CT_PrimDeclSpec CTree.h Puma/CTree.h
 
57684
 *  Tree node representing a primitive declaration specifier. */
 
57685
 
 
57686
#line 57687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57687
} // closed Puma
 
57688
class CCExprResolve;
 
57689
class CExprResolve;
 
57690
class WinIfExists;
 
57691
class WinImportHandler;
 
57692
class WinMacros;
 
57693
class WinAsm;
 
57694
class WinDeclSpecs;
 
57695
class WinMemberExplSpec;
 
57696
class WinTypeKeywords;
 
57697
class WinFriend;
 
57698
class ExtAC;
 
57699
class ExtACBuilderCoupling;
 
57700
class ExtACSyntaxCoupling;
 
57701
class ExtACTree;
 
57702
class ExtACKeywords;
 
57703
class ExtGnu;
 
57704
class PragmaOnceUnitState;
 
57705
class PragmaOnce;
 
57706
class CMatchSyntax;
 
57707
namespace Puma {
 
57708
 
 
57709
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57710
class CT_PrimDeclSpec : public CT_DeclSpec {
 
57711
#line 57712 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57712
  friend class ::CCExprResolve;
 
57713
  friend class ::CExprResolve;
 
57714
  friend class ::WinIfExists;
 
57715
  friend class ::WinImportHandler;
 
57716
  friend class ::WinMacros;
 
57717
  friend class ::WinAsm;
 
57718
  friend class ::WinDeclSpecs;
 
57719
  friend class ::WinMemberExplSpec;
 
57720
  friend class ::WinTypeKeywords;
 
57721
  friend class ::WinFriend;
 
57722
  friend class ::ExtAC;
 
57723
  friend class ::ExtACBuilderCoupling;
 
57724
  friend class ::ExtACSyntaxCoupling;
 
57725
  friend class ::ExtACTree;
 
57726
  friend class ::ExtACKeywords;
 
57727
  friend class ::ExtGnu;
 
57728
  friend class ::PragmaOnceUnitState;
 
57729
  friend class ::PragmaOnce;
 
57730
  friend class ::CMatchSyntax;
 
57731
 
 
57732
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57733
 
 
57734
public:
 
57735
  /** Declaration specifier types. */
 
57736
  enum Type { 
 
57737
    PDS_FRIEND,    /** friend */
 
57738
    PDS_TYPEDEF,   /** typedef */
 
57739
    PDS_AUTO,      /** auto */
 
57740
    PDS_REGISTER,  /** register */
 
57741
    PDS_STATIC,    /** static */
 
57742
    PDS_EXTERN,    /** extern */
 
57743
    PDS_MUTABLE,   /** mutable */
 
57744
    PDS_INLINE,    /** inline */
 
57745
    PDS_VIRTUAL,   /** virtual */
 
57746
    PDS_EXPLICIT,  /** explicit */
 
57747
    PDS_CONST,     /** const */
 
57748
    PDS_VOLATILE,  /** volatile */
 
57749
    PDS_RESTRICT,  /** restrict */
 
57750
    PDS_CHAR,      /** char */
 
57751
    PDS_WCHAR_T,   /** wchar_t */
 
57752
    PDS_BOOL,      /** bool */
 
57753
    PDS_SHORT,     /** short */
 
57754
    PDS_INT,       /** int */
 
57755
    PDS_LONG,      /** long */
 
57756
    PDS_SIGNED,    /** signed */
 
57757
    PDS_UNSIGNED,  /** unsigned */
 
57758
    PDS_FLOAT,     /** float */
 
57759
    PDS_DOUBLE,    /** double */
 
57760
    PDS_VOID,      /** void */
 
57761
    // AspectC++ specific type specifier
 
57762
    PDS_UNKNOWN_T, /** unknown_t */
 
57763
    // Win specific declaration specifiers
 
57764
    PDS_CDECL,     /** __cdecl */
 
57765
    PDS_STDCALL,   /** __stdcall */
 
57766
    PDS_FASTCALL,  /** __fastcall */
 
57767
    PDS_INT64,     /** __int64 */
 
57768
    PDS_UNKNOWN,   /** Unknown declaration specifier. */
 
57769
    PDS_NUM        /** Number of declaration specifier types. */
 
57770
  };
 
57771
 
 
57772
private:
 
57773
  Type _type;
 
57774
  CTree *_token; // has to be a CT_Token
 
57775
 
 
57776
  void determine_type ();
 
57777
 
 
57778
public:
 
57779
  /** Constructor.
 
57780
   *  \param t The token containing the declaration specifier. */
 
57781
  CT_PrimDeclSpec (CT_Token *t) { AddSon (_token, (CTree*)t); determine_type (); }
 
57782
  /** Constructor.
 
57783
   *  \param t The declaration specifier type. */
 
57784
  CT_PrimDeclSpec (Type t) : _token (0) { _type = t; }
 
57785
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57786
  static const char *NodeId ();
 
57787
  /** Get the name of the node. Can be compared with NodeId(). */
 
57788
  const char *NodeName () const { return NodeId (); }
 
57789
  /** Get the number of sons. */
 
57790
  int Sons () const { return _token ? 1 : 0; }
 
57791
  /** Get the n-th son.
 
57792
   *  \param n The index of the son.
 
57793
   *  \return The n-th son or NULL. */
 
57794
  CTree *Son (int n) const 
 
57795
   { return (n == 0) ? _token : (CTree*)0; }
 
57796
  /** Get the textual representation of the declaration specifier.
 
57797
   *  \return The string representation or " ". */
 
57798
  const char *SpecText () const 
 
57799
   { return _token ? _token->token ()->text () : " "; }
 
57800
  /** Get the declaration specifier type. */
 
57801
  Type SpecType () const { return _type; }
 
57802
  /** Number of declaration specifier types. */
 
57803
  static const int NumTypes = PDS_NUM;
 
57804
  /** Replace a son.
 
57805
   *  \param old_son The son to replace.
 
57806
   *  \param new_son The new son. */
 
57807
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57808
    CTree::ReplaceSon (_token, (CTree*)old_son, (CTree*)new_son);
 
57809
    determine_type ();
 
57810
  }
 
57811
public:
 
57812
  typedef AC::TL<Puma::CT_PrimDeclSpec::Type,AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
57813
  const char *__attr_name (unsigned i) const {
 
57814
    static const char *names[] = { "_type", "_token" }; return names[i];
 
57815
  }
 
57816
  const void *__attr (unsigned __i) const {
 
57817
    switch (__i) { case 31: return &_type; case 32: return &_token; default: return 0; }
 
57818
  }
 
57819
#line 2071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57820
};
 
57821
 
 
57822
/** \class CT_NamedType CTree.h Puma/CTree.h
 
57823
 *  Tree node representing a named type.
 
57824
 *  Example: \code (int*)a \endcode where int* is a 
 
57825
 *  type with a generated name. */
 
57826
 
 
57827
#line 57828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57828
} // closed Puma
 
57829
class CCExprResolve;
 
57830
class CExprResolve;
 
57831
class WinIfExists;
 
57832
class WinImportHandler;
 
57833
class WinMacros;
 
57834
class WinAsm;
 
57835
class WinDeclSpecs;
 
57836
class WinMemberExplSpec;
 
57837
class WinTypeKeywords;
 
57838
class WinFriend;
 
57839
class ExtAC;
 
57840
class ExtACBuilderCoupling;
 
57841
class ExtACSyntaxCoupling;
 
57842
class ExtACTree;
 
57843
class ExtACKeywords;
 
57844
class ExtGnu;
 
57845
class PragmaOnceUnitState;
 
57846
class PragmaOnce;
 
57847
class CMatchSyntax;
 
57848
namespace Puma {
 
57849
 
 
57850
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57851
class CT_NamedType : public CT_DeclSpec, public CSemObject {
 
57852
#line 57853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57853
  friend class ::CCExprResolve;
 
57854
  friend class ::CExprResolve;
 
57855
  friend class ::WinIfExists;
 
57856
  friend class ::WinImportHandler;
 
57857
  friend class ::WinMacros;
 
57858
  friend class ::WinAsm;
 
57859
  friend class ::WinDeclSpecs;
 
57860
  friend class ::WinMemberExplSpec;
 
57861
  friend class ::WinTypeKeywords;
 
57862
  friend class ::WinFriend;
 
57863
  friend class ::ExtAC;
 
57864
  friend class ::ExtACBuilderCoupling;
 
57865
  friend class ::ExtACSyntaxCoupling;
 
57866
  friend class ::ExtACTree;
 
57867
  friend class ::ExtACKeywords;
 
57868
  friend class ::ExtGnu;
 
57869
  friend class ::PragmaOnceUnitState;
 
57870
  friend class ::PragmaOnce;
 
57871
  friend class ::CMatchSyntax;
 
57872
 
 
57873
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57874
 
 
57875
  CTree *sons[2]; // declspecs, declarator
 
57876
 
 
57877
public:
 
57878
  /** Constructor.
 
57879
   *  \param dss The declaration specifier sequence of the type.
 
57880
   *  \param d The type declarator. */
 
57881
  CT_NamedType (CTree *dss, CTree *d) { AddSon (sons[0], dss); AddSon (sons[1], d); }
 
57882
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57883
  static const char *NodeId ();
 
57884
  /** Get the name of the node. Can be compared with NodeId(). */
 
57885
  const char *NodeName () const { return NodeId (); }
 
57886
  /** Get the number of sons. */
 
57887
  int Sons () const { return CTree::Sons (sons, 2); }
 
57888
  /** Get the n-th son.
 
57889
   *  \param n The index of the son.
 
57890
   *  \return The n-th son or NULL. */
 
57891
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
57892
  /** Get the declarator. */
 
57893
  CTree *Declarator () const { return sons[1]; }
 
57894
  /** Replace a son.
 
57895
   *  \param old_son The son to replace.
 
57896
   *  \param new_son The new son. */
 
57897
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57898
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
57899
  }
 
57900
  /** Get the semantic information about the created temporary object. */
 
57901
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
57902
public:
 
57903
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
57904
  const char *__attr_name (unsigned i) const {
 
57905
    static const char *names[] = { "sons" }; return names[i];
 
57906
  }
 
57907
  const void *__attr (unsigned __i) const {
 
57908
    switch (__i) { case 0: return &sons; default: return 0; }
 
57909
  }
 
57910
#line 2105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57911
};
 
57912
      
 
57913
/** \class CT_ClassSpec CTree.h Puma/CTree.h
 
57914
 *  Tree node representing a class specifier.
 
57915
 *  Example: \code class X \endcode */
 
57916
 
 
57917
#line 57918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57918
} // closed Puma
 
57919
class CCExprResolve;
 
57920
class CExprResolve;
 
57921
class WinIfExists;
 
57922
class WinImportHandler;
 
57923
class WinMacros;
 
57924
class WinAsm;
 
57925
class WinDeclSpecs;
 
57926
class WinMemberExplSpec;
 
57927
class WinTypeKeywords;
 
57928
class WinFriend;
 
57929
class ExtAC;
 
57930
class ExtACBuilderCoupling;
 
57931
class ExtACSyntaxCoupling;
 
57932
class ExtACTree;
 
57933
class ExtACKeywords;
 
57934
class ExtGnu;
 
57935
class PragmaOnceUnitState;
 
57936
class PragmaOnce;
 
57937
class CMatchSyntax;
 
57938
namespace Puma {
 
57939
 
 
57940
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57941
class CT_ClassSpec : public CT_DeclSpec, public CSemObject {
 
57942
#line 57943 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
57943
  friend class ::CCExprResolve;
 
57944
  friend class ::CExprResolve;
 
57945
  friend class ::WinIfExists;
 
57946
  friend class ::WinImportHandler;
 
57947
  friend class ::WinMacros;
 
57948
  friend class ::WinAsm;
 
57949
  friend class ::WinDeclSpecs;
 
57950
  friend class ::WinMemberExplSpec;
 
57951
  friend class ::WinTypeKeywords;
 
57952
  friend class ::WinFriend;
 
57953
  friend class ::ExtAC;
 
57954
  friend class ::ExtACBuilderCoupling;
 
57955
  friend class ::ExtACSyntaxCoupling;
 
57956
  friend class ::ExtACTree;
 
57957
  friend class ::ExtACKeywords;
 
57958
  friend class ::ExtGnu;
 
57959
  friend class ::PragmaOnceUnitState;
 
57960
  friend class ::PragmaOnce;
 
57961
  friend class ::CMatchSyntax;
 
57962
 
 
57963
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57964
 
 
57965
  CTree *sons[2]; // key, name
 
57966
  
 
57967
public:
 
57968
  /** Constructor.
 
57969
   *  \param k The 'class' or 'struct' keyword.
 
57970
   *  \param n The class name. */
 
57971
  CT_ClassSpec (CTree *k, CTree *n) { AddSon (sons[0], k); AddSon (sons[1], n); }
 
57972
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57973
  static const char *NodeId ();
 
57974
  /** Get the name of the node. Can be compared with NodeId(). */
 
57975
  const char *NodeName () const { return NodeId (); }
 
57976
  /** Get the number of sons. */
 
57977
  int Sons () const { return 2; }
 
57978
  /** Get the n-th son.
 
57979
   *  \param n The index of the son.
 
57980
   *  \return The n-th son or NULL. */
 
57981
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
57982
  /** Get the class name. */
 
57983
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
57984
  /** Get the semantic information about the class. */
 
57985
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
57986
  /** Replace a son.
 
57987
   *  \param old_son The son to replace.
 
57988
   *  \param new_son The new son. */
 
57989
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57990
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
57991
  }
 
57992
public:
 
57993
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
57994
  const char *__attr_name (unsigned i) const {
 
57995
    static const char *names[] = { "sons" }; return names[i];
 
57996
  }
 
57997
  const void *__attr (unsigned __i) const {
 
57998
    switch (__i) { case 0: return &sons; default: return 0; }
 
57999
  }
 
58000
#line 2138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58001
};
 
58002
 
 
58003
/** \class CT_UnionSpec CTree.h Puma/CTree.h
 
58004
 *  Tree node representing a union specifier.
 
58005
 *  Example: \code union X \endcode */
 
58006
 
 
58007
#line 58008 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58008
} // closed Puma
 
58009
class CCExprResolve;
 
58010
class CExprResolve;
 
58011
class WinIfExists;
 
58012
class WinImportHandler;
 
58013
class WinMacros;
 
58014
class WinAsm;
 
58015
class WinDeclSpecs;
 
58016
class WinMemberExplSpec;
 
58017
class WinTypeKeywords;
 
58018
class WinFriend;
 
58019
class ExtAC;
 
58020
class ExtACBuilderCoupling;
 
58021
class ExtACSyntaxCoupling;
 
58022
class ExtACTree;
 
58023
class ExtACKeywords;
 
58024
class ExtGnu;
 
58025
class PragmaOnceUnitState;
 
58026
class PragmaOnce;
 
58027
class CMatchSyntax;
 
58028
namespace Puma {
 
58029
 
 
58030
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58031
class CT_UnionSpec : public CT_ClassSpec {
 
58032
#line 58033 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58033
  friend class ::CCExprResolve;
 
58034
  friend class ::CExprResolve;
 
58035
  friend class ::WinIfExists;
 
58036
  friend class ::WinImportHandler;
 
58037
  friend class ::WinMacros;
 
58038
  friend class ::WinAsm;
 
58039
  friend class ::WinDeclSpecs;
 
58040
  friend class ::WinMemberExplSpec;
 
58041
  friend class ::WinTypeKeywords;
 
58042
  friend class ::WinFriend;
 
58043
  friend class ::ExtAC;
 
58044
  friend class ::ExtACBuilderCoupling;
 
58045
  friend class ::ExtACSyntaxCoupling;
 
58046
  friend class ::ExtACTree;
 
58047
  friend class ::ExtACKeywords;
 
58048
  friend class ::ExtGnu;
 
58049
  friend class ::PragmaOnceUnitState;
 
58050
  friend class ::PragmaOnce;
 
58051
  friend class ::CMatchSyntax;
 
58052
 
 
58053
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58054
 
 
58055
public:
 
58056
  /** Constructor.
 
58057
   *  \param k The 'union' keyword.
 
58058
   *  \param n The name of the union. */
 
58059
  CT_UnionSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
58060
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58061
  static const char *NodeId ();
 
58062
  /** Get the name of the node. Can be compared with NodeId(). */
 
58063
  const char *NodeName () const { return NodeId (); }
 
58064
public:
 
58065
  typedef AC::TLE __AttrTypes;
 
58066
  const char *__attr_name (unsigned i) const { return 0; }
 
58067
  const void *__attr (unsigned __i) const { return 0; }
 
58068
#line 2153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58069
};
 
58070
 
 
58071
/** \class CT_EnumSpec CTree.h Puma/CTree.h
 
58072
 *  Tree node representing an enumeration specifier.
 
58073
 *  Example: \code enum X \endcode */
 
58074
 
 
58075
#line 58076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58076
} // closed Puma
 
58077
class CCExprResolve;
 
58078
class CExprResolve;
 
58079
class WinIfExists;
 
58080
class WinImportHandler;
 
58081
class WinMacros;
 
58082
class WinAsm;
 
58083
class WinDeclSpecs;
 
58084
class WinMemberExplSpec;
 
58085
class WinTypeKeywords;
 
58086
class WinFriend;
 
58087
class ExtAC;
 
58088
class ExtACBuilderCoupling;
 
58089
class ExtACSyntaxCoupling;
 
58090
class ExtACTree;
 
58091
class ExtACKeywords;
 
58092
class ExtGnu;
 
58093
class PragmaOnceUnitState;
 
58094
class PragmaOnce;
 
58095
class CMatchSyntax;
 
58096
namespace Puma {
 
58097
 
 
58098
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58099
class CT_EnumSpec : public CT_ClassSpec {
 
58100
#line 58101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58101
  friend class ::CCExprResolve;
 
58102
  friend class ::CExprResolve;
 
58103
  friend class ::WinIfExists;
 
58104
  friend class ::WinImportHandler;
 
58105
  friend class ::WinMacros;
 
58106
  friend class ::WinAsm;
 
58107
  friend class ::WinDeclSpecs;
 
58108
  friend class ::WinMemberExplSpec;
 
58109
  friend class ::WinTypeKeywords;
 
58110
  friend class ::WinFriend;
 
58111
  friend class ::ExtAC;
 
58112
  friend class ::ExtACBuilderCoupling;
 
58113
  friend class ::ExtACSyntaxCoupling;
 
58114
  friend class ::ExtACTree;
 
58115
  friend class ::ExtACKeywords;
 
58116
  friend class ::ExtGnu;
 
58117
  friend class ::PragmaOnceUnitState;
 
58118
  friend class ::PragmaOnce;
 
58119
  friend class ::CMatchSyntax;
 
58120
 
 
58121
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58122
 
 
58123
public:
 
58124
  /** Constructor.
 
58125
   *  \param k The 'enum' keyword. 
 
58126
   *  \param n The name of the enumeration. */
 
58127
  CT_EnumSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
58128
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58129
  static const char *NodeId ();
 
58130
  /** Get the name of the node. Can be compared with NodeId(). */
 
58131
  const char *NodeName () const { return NodeId (); }
 
58132
public:
 
58133
  typedef AC::TLE __AttrTypes;
 
58134
  const char *__attr_name (unsigned i) const { return 0; }
 
58135
  const void *__attr (unsigned __i) const { return 0; }
 
58136
#line 2168 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58137
};
 
58138
 
 
58139
/** \class CT_ExceptionSpec CTree.h Puma/CTree.h
 
58140
 *  Tree node representing an exception specifier.
 
58141
 *  Example: \code throw(std::exception) \endcode */
 
58142
 
 
58143
#line 58144 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58144
} // closed Puma
 
58145
class CCExprResolve;
 
58146
class CExprResolve;
 
58147
class WinIfExists;
 
58148
class WinImportHandler;
 
58149
class WinMacros;
 
58150
class WinAsm;
 
58151
class WinDeclSpecs;
 
58152
class WinMemberExplSpec;
 
58153
class WinTypeKeywords;
 
58154
class WinFriend;
 
58155
class ExtAC;
 
58156
class ExtACBuilderCoupling;
 
58157
class ExtACSyntaxCoupling;
 
58158
class ExtACTree;
 
58159
class ExtACKeywords;
 
58160
class ExtGnu;
 
58161
class PragmaOnceUnitState;
 
58162
class PragmaOnce;
 
58163
class CMatchSyntax;
 
58164
namespace Puma {
 
58165
 
 
58166
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58167
class CT_ExceptionSpec : public CT_DeclSpec {
 
58168
#line 58169 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58169
  friend class ::CCExprResolve;
 
58170
  friend class ::CExprResolve;
 
58171
  friend class ::WinIfExists;
 
58172
  friend class ::WinImportHandler;
 
58173
  friend class ::WinMacros;
 
58174
  friend class ::WinAsm;
 
58175
  friend class ::WinDeclSpecs;
 
58176
  friend class ::WinMemberExplSpec;
 
58177
  friend class ::WinTypeKeywords;
 
58178
  friend class ::WinFriend;
 
58179
  friend class ::ExtAC;
 
58180
  friend class ::ExtACBuilderCoupling;
 
58181
  friend class ::ExtACSyntaxCoupling;
 
58182
  friend class ::ExtACTree;
 
58183
  friend class ::ExtACKeywords;
 
58184
  friend class ::ExtGnu;
 
58185
  friend class ::PragmaOnceUnitState;
 
58186
  friend class ::PragmaOnce;
 
58187
  friend class ::CMatchSyntax;
 
58188
 
 
58189
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58190
 
 
58191
  CTree *sons[2]; // throw, type_id_list
 
58192
  
 
58193
public:
 
58194
  /** Constructor.
 
58195
   *  \param k The 'throw' keyword.
 
58196
   *  \param l The type list for the exception type to throw. */
 
58197
  CT_ExceptionSpec (CTree *k, CTree *l) { AddSon (sons[0], k); AddSon (sons[1], l); }
 
58198
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58199
  static const char *NodeId ();
 
58200
  /** Get the name of the node. Can be compared with NodeId(). */
 
58201
  const char *NodeName () const { return NodeId (); }
 
58202
  /** Get the number of sons. */
 
58203
  int Sons () const { return 2; }
 
58204
  /** Get the n-th son.
 
58205
   *  \param n The index of the son.
 
58206
   *  \return The n-th son or NULL. */
 
58207
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
58208
  /** Get the exception type list. */
 
58209
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
58210
  /** Replace a son.
 
58211
   *  \param old_son The son to replace.
 
58212
   *  \param new_son The new son. */
 
58213
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58214
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
58215
  }
 
58216
public:
 
58217
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
58218
  const char *__attr_name (unsigned i) const {
 
58219
    static const char *names[] = { "sons" }; return names[i];
 
58220
  }
 
58221
  const void *__attr (unsigned __i) const {
 
58222
    switch (__i) { case 0: return &sons; default: return 0; }
 
58223
  }
 
58224
#line 2199 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58225
};
 
58226
 
 
58227
/*****************************************************************************/
 
58228
/*                                                                           */
 
58229
/*                              Declarations                                 */
 
58230
/*                                                                           */
 
58231
/*****************************************************************************/
 
58232
 
 
58233
/** \class CT_Decl CTree.h Puma/CTree.h
 
58234
 *  Base class for all tree nodes representing declarations. */
 
58235
 
 
58236
#line 58237 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58237
} // closed Puma
 
58238
class CCExprResolve;
 
58239
class CExprResolve;
 
58240
class WinIfExists;
 
58241
class WinImportHandler;
 
58242
class WinMacros;
 
58243
class WinAsm;
 
58244
class WinDeclSpecs;
 
58245
class WinMemberExplSpec;
 
58246
class WinTypeKeywords;
 
58247
class WinFriend;
 
58248
class ExtAC;
 
58249
class ExtACBuilderCoupling;
 
58250
class ExtACSyntaxCoupling;
 
58251
class ExtACTree;
 
58252
class ExtACKeywords;
 
58253
class ExtGnu;
 
58254
class PragmaOnceUnitState;
 
58255
class PragmaOnce;
 
58256
class CMatchSyntax;
 
58257
namespace Puma {
 
58258
 
 
58259
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58260
class CT_Decl : public CTree {
 
58261
#line 58262 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58262
  friend class ::CCExprResolve;
 
58263
  friend class ::CExprResolve;
 
58264
  friend class ::WinIfExists;
 
58265
  friend class ::WinImportHandler;
 
58266
  friend class ::WinMacros;
 
58267
  friend class ::WinAsm;
 
58268
  friend class ::WinDeclSpecs;
 
58269
  friend class ::WinMemberExplSpec;
 
58270
  friend class ::WinTypeKeywords;
 
58271
  friend class ::WinFriend;
 
58272
  friend class ::ExtAC;
 
58273
  friend class ::ExtACBuilderCoupling;
 
58274
  friend class ::ExtACSyntaxCoupling;
 
58275
  friend class ::ExtACTree;
 
58276
  friend class ::ExtACKeywords;
 
58277
  friend class ::ExtGnu;
 
58278
  friend class ::PragmaOnceUnitState;
 
58279
  friend class ::PragmaOnce;
 
58280
  friend class ::CMatchSyntax;
 
58281
 
 
58282
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58283
 
 
58284
  CT_LinkageSpec *_linkage;
 
58285
  
 
58286
protected:
 
58287
  /** Constructor. */
 
58288
  CT_Decl () : _linkage (0) {}
 
58289
  
 
58290
public:
 
58291
  /** Set the linkage of the declared entity.
 
58292
   *  \param l The linkage specifiers. */
 
58293
  void Linkage (CT_LinkageSpec *l) { _linkage = l; }
 
58294
  /** Get the linkage specifiers. */
 
58295
  CT_LinkageSpec *Linkage () const { return _linkage; }
 
58296
  /** Get this. */
 
58297
  virtual CT_Decl *IsDeclaration () { return this; }
 
58298
public:
 
58299
  typedef AC::TL<Puma::CT_LinkageSpec *,AC::TLE > __AttrTypes;
 
58300
  const char *__attr_name (unsigned i) const {
 
58301
    static const char *names[] = { "_linkage" }; return names[i];
 
58302
  }
 
58303
  const void *__attr (unsigned __i) const {
 
58304
    switch (__i) { case 0: return &_linkage; default: return 0; }
 
58305
  }
 
58306
#line 2224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58307
};
 
58308
 
 
58309
/** \class CT_Program CTree.h Puma/CTree.h
 
58310
 *  Root node of C/C++ syntax trees. */
 
58311
 
 
58312
#line 58313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58313
} // closed Puma
 
58314
class CCExprResolve;
 
58315
class CExprResolve;
 
58316
class WinIfExists;
 
58317
class WinImportHandler;
 
58318
class WinMacros;
 
58319
class WinAsm;
 
58320
class WinDeclSpecs;
 
58321
class WinMemberExplSpec;
 
58322
class WinTypeKeywords;
 
58323
class WinFriend;
 
58324
class ExtAC;
 
58325
class ExtACBuilderCoupling;
 
58326
class ExtACSyntaxCoupling;
 
58327
class ExtACTree;
 
58328
class ExtACKeywords;
 
58329
class ExtGnu;
 
58330
class PragmaOnceUnitState;
 
58331
class PragmaOnce;
 
58332
class CMatchSyntax;
 
58333
namespace Puma {
 
58334
 
 
58335
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58336
class CT_Program : public CT_DeclList, public CSemScope {
 
58337
#line 58338 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58338
  friend class ::CCExprResolve;
 
58339
  friend class ::CExprResolve;
 
58340
  friend class ::WinIfExists;
 
58341
  friend class ::WinImportHandler;
 
58342
  friend class ::WinMacros;
 
58343
  friend class ::WinAsm;
 
58344
  friend class ::WinDeclSpecs;
 
58345
  friend class ::WinMemberExplSpec;
 
58346
  friend class ::WinTypeKeywords;
 
58347
  friend class ::WinFriend;
 
58348
  friend class ::ExtAC;
 
58349
  friend class ::ExtACBuilderCoupling;
 
58350
  friend class ::ExtACSyntaxCoupling;
 
58351
  friend class ::ExtACTree;
 
58352
  friend class ::ExtACKeywords;
 
58353
  friend class ::ExtGnu;
 
58354
  friend class ::PragmaOnceUnitState;
 
58355
  friend class ::PragmaOnce;
 
58356
  friend class ::CMatchSyntax;
 
58357
 
 
58358
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58359
 
 
58360
public:
 
58361
  /** Constructor.
 
58362
   *  \param size The initial number of declarations in the program.
 
58363
   *  \param incr The initial increment count. */
 
58364
  CT_Program (int size = 20, int incr = 20) : CT_DeclList (size, incr) {}
 
58365
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58366
  static const char *NodeId ();
 
58367
  /** Get the name of the node. Can be compared with NodeId(). */
 
58368
  const char *NodeName () const { return NodeId (); }
 
58369
  /** Get the top scope. */
 
58370
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
58371
public:
 
58372
  typedef AC::TLE __AttrTypes;
 
58373
  const char *__attr_name (unsigned i) const { return 0; }
 
58374
  const void *__attr (unsigned __i) const { return 0; }
 
58375
#line 2240 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58376
};
 
58377
   
 
58378
/** \class CT_ObjDecl CTree.h Puma/CTree.h
 
58379
 *  Tree node representing an object declaration.
 
58380
 *  Example: \code int *i \endcode */
 
58381
 
 
58382
#line 58383 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58383
} // closed Puma
 
58384
class CCExprResolve;
 
58385
class CExprResolve;
 
58386
class WinIfExists;
 
58387
class WinImportHandler;
 
58388
class WinMacros;
 
58389
class WinAsm;
 
58390
class WinDeclSpecs;
 
58391
class WinMemberExplSpec;
 
58392
class WinTypeKeywords;
 
58393
class WinFriend;
 
58394
class ExtAC;
 
58395
class ExtACBuilderCoupling;
 
58396
class ExtACSyntaxCoupling;
 
58397
class ExtACTree;
 
58398
class ExtACKeywords;
 
58399
class ExtGnu;
 
58400
class PragmaOnceUnitState;
 
58401
class PragmaOnce;
 
58402
class CMatchSyntax;
 
58403
namespace Puma {
 
58404
 
 
58405
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58406
class CT_ObjDecl : public CT_Decl {
 
58407
#line 58408 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58408
  friend class ::CCExprResolve;
 
58409
  friend class ::CExprResolve;
 
58410
  friend class ::WinIfExists;
 
58411
  friend class ::WinImportHandler;
 
58412
  friend class ::WinMacros;
 
58413
  friend class ::WinAsm;
 
58414
  friend class ::WinDeclSpecs;
 
58415
  friend class ::WinMemberExplSpec;
 
58416
  friend class ::WinTypeKeywords;
 
58417
  friend class ::WinFriend;
 
58418
  friend class ::ExtAC;
 
58419
  friend class ::ExtACBuilderCoupling;
 
58420
  friend class ::ExtACSyntaxCoupling;
 
58421
  friend class ::ExtACTree;
 
58422
  friend class ::ExtACKeywords;
 
58423
  friend class ::ExtGnu;
 
58424
  friend class ::PragmaOnceUnitState;
 
58425
  friend class ::PragmaOnce;
 
58426
  friend class ::CMatchSyntax;
 
58427
 
 
58428
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58429
 
 
58430
  CTree *sons[3]; // declspecs, declarators, colon
 
58431
 
 
58432
public:
 
58433
  /** Constructor.
 
58434
   *  \param dsl The declaration specifier sequence.
 
58435
   *  \param dl The declarator list.
 
58436
   *  \param c Optional colon. */
 
58437
  CT_ObjDecl (CTree *dsl, CTree *dl, CTree *c) {
 
58438
    AddSon (sons[0], dsl); AddSon (sons[1], dl); AddSon (sons[2], c);
 
58439
  }
 
58440
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58441
  static const char *NodeId ();
 
58442
  /** Get the name of the node. Can be compared with NodeId(). */
 
58443
  const char *NodeName () const { return NodeId (); }
 
58444
  /** Get the number of sons. */
 
58445
  int Sons () const { return 3; }
 
58446
  /** Get the n-th son.
 
58447
   *  \param n The index of the son.
 
58448
   *  \return The n-th son or NULL. */
 
58449
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
58450
  /** Get the declaration specifier sequence. */
 
58451
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
58452
  /** Get the declarator list. */
 
58453
  CT_DeclaratorList *Declarators () const { return (CT_DeclaratorList*)sons[1]; }
 
58454
  /** Replace a son.
 
58455
   *  \param old_son The son to replace.
 
58456
   *  \param new_son The new son. */
 
58457
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58458
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
58459
  }
 
58460
public:
 
58461
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
58462
  const char *__attr_name (unsigned i) const {
 
58463
    static const char *names[] = { "sons" }; return names[i];
 
58464
  }
 
58465
  const void *__attr (unsigned __i) const {
 
58466
    switch (__i) { case 0: return &sons; default: return 0; }
 
58467
  }
 
58468
#line 2276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58469
};
 
58470
 
 
58471
/** \class CT_TemplateDecl CTree.h Puma/CTree.h
 
58472
 *  Tree node representing a template declaration. */
 
58473
 
 
58474
#line 58475 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58475
} // closed Puma
 
58476
class CCExprResolve;
 
58477
class CExprResolve;
 
58478
class WinIfExists;
 
58479
class WinImportHandler;
 
58480
class WinMacros;
 
58481
class WinAsm;
 
58482
class WinDeclSpecs;
 
58483
class WinMemberExplSpec;
 
58484
class WinTypeKeywords;
 
58485
class WinFriend;
 
58486
class ExtAC;
 
58487
class ExtACBuilderCoupling;
 
58488
class ExtACSyntaxCoupling;
 
58489
class ExtACTree;
 
58490
class ExtACKeywords;
 
58491
class ExtGnu;
 
58492
class PragmaOnceUnitState;
 
58493
class PragmaOnce;
 
58494
class CMatchSyntax;
 
58495
namespace Puma {
 
58496
 
 
58497
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58498
class CT_TemplateDecl : public CT_Decl, public CSemScope {
 
58499
#line 58500 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58500
  friend class ::CCExprResolve;
 
58501
  friend class ::CExprResolve;
 
58502
  friend class ::WinIfExists;
 
58503
  friend class ::WinImportHandler;
 
58504
  friend class ::WinMacros;
 
58505
  friend class ::WinAsm;
 
58506
  friend class ::WinDeclSpecs;
 
58507
  friend class ::WinMemberExplSpec;
 
58508
  friend class ::WinTypeKeywords;
 
58509
  friend class ::WinFriend;
 
58510
  friend class ::ExtAC;
 
58511
  friend class ::ExtACBuilderCoupling;
 
58512
  friend class ::ExtACSyntaxCoupling;
 
58513
  friend class ::ExtACTree;
 
58514
  friend class ::ExtACKeywords;
 
58515
  friend class ::ExtGnu;
 
58516
  friend class ::PragmaOnceUnitState;
 
58517
  friend class ::PragmaOnce;
 
58518
  friend class ::CMatchSyntax;
 
58519
 
 
58520
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58521
 
 
58522
  CTree *sons[3]; // export, param_list, decl
 
58523
 
 
58524
public:
 
58525
  /** Constructor.
 
58526
   *  \param e Optional 'export' keyword. 
 
58527
   *  \param p The template parameter list.
 
58528
   *  \param d The class or function declaration. */
 
58529
  CT_TemplateDecl (CTree *e, CTree *p, CTree *d) {
 
58530
    AddSon (sons[0], e); AddSon (sons[1], p); AddSon (sons[2], d);
 
58531
  }
 
58532
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58533
  static const char *NodeId ();
 
58534
  /** Get the name of the node. Can be compared with NodeId(). */
 
58535
  const char *NodeName () const { return NodeId (); }
 
58536
  /** Get the number of sons. */
 
58537
  int Sons () const { return CTree::Sons (sons, 3); }
 
58538
  /** Get the n-th son.
 
58539
   *  \param n The index of the son.
 
58540
   *  \return The n-th son or NULL. */
 
58541
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
58542
  /** Replace a son.
 
58543
   *  \param old_son The son to replace.
 
58544
   *  \param new_son The new son. */
 
58545
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58546
    CTree::ReplaceSon (sons, 3, old_son, new_son); 
 
58547
  }
 
58548
  /** Get the 'export' keyword. */
 
58549
  CTree *Export () const { return sons[0]; }
 
58550
  /** Get the template parameter list. */
 
58551
  CT_TemplateParamList *Parameters () const { 
 
58552
    return (CT_TemplateParamList*)sons[1]; 
 
58553
  }
 
58554
  /** Get the class or function declaration. */
 
58555
  CTree *Declaration () const { return sons[2]; }
 
58556
  /** Get the scope opened by the template declaration. */
 
58557
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
58558
public:
 
58559
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
58560
  const char *__attr_name (unsigned i) const {
 
58561
    static const char *names[] = { "sons" }; return names[i];
 
58562
  }
 
58563
  const void *__attr (unsigned __i) const {
 
58564
    switch (__i) { case 0: return &sons; default: return 0; }
 
58565
  }
 
58566
#line 2317 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58567
};
 
58568
 
 
58569
/** \class CT_TemplateParamDecl CTree.h Puma/CTree.h
 
58570
 *  Base class for all tree nodesrepresenting a template parameter declaration. */
 
58571
 
 
58572
#line 58573 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58573
} // closed Puma
 
58574
class CCExprResolve;
 
58575
class CExprResolve;
 
58576
class WinIfExists;
 
58577
class WinImportHandler;
 
58578
class WinMacros;
 
58579
class WinAsm;
 
58580
class WinDeclSpecs;
 
58581
class WinMemberExplSpec;
 
58582
class WinTypeKeywords;
 
58583
class WinFriend;
 
58584
class ExtAC;
 
58585
class ExtACBuilderCoupling;
 
58586
class ExtACSyntaxCoupling;
 
58587
class ExtACTree;
 
58588
class ExtACKeywords;
 
58589
class ExtGnu;
 
58590
class PragmaOnceUnitState;
 
58591
class PragmaOnce;
 
58592
class CMatchSyntax;
 
58593
namespace Puma {
 
58594
 
 
58595
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58596
class CT_TemplateParamDecl : public CT_Decl, public CSemObject {
 
58597
#line 58598 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58598
  friend class ::CCExprResolve;
 
58599
  friend class ::CExprResolve;
 
58600
  friend class ::WinIfExists;
 
58601
  friend class ::WinImportHandler;
 
58602
  friend class ::WinMacros;
 
58603
  friend class ::WinAsm;
 
58604
  friend class ::WinDeclSpecs;
 
58605
  friend class ::WinMemberExplSpec;
 
58606
  friend class ::WinTypeKeywords;
 
58607
  friend class ::WinFriend;
 
58608
  friend class ::ExtAC;
 
58609
  friend class ::ExtACBuilderCoupling;
 
58610
  friend class ::ExtACSyntaxCoupling;
 
58611
  friend class ::ExtACTree;
 
58612
  friend class ::ExtACKeywords;
 
58613
  friend class ::ExtGnu;
 
58614
  friend class ::PragmaOnceUnitState;
 
58615
  friend class ::PragmaOnce;
 
58616
  friend class ::CMatchSyntax;
 
58617
 
 
58618
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58619
 
 
58620
protected:
 
58621
  /** Constructor. */
 
58622
  CT_TemplateParamDecl () {}
 
58623
  
 
58624
public:
 
58625
  /** Get the template default argument. */
 
58626
  virtual CT_ExprList *DefaultArgument () const = 0;
 
58627
  /** Get the semantic information about the template parameter. */
 
58628
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
58629
public:
 
58630
  typedef AC::TLE __AttrTypes;
 
58631
  const char *__attr_name (unsigned i) const { return 0; }
 
58632
  const void *__attr (unsigned __i) const { return 0; }
 
58633
#line 2331 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58634
};
 
58635
 
 
58636
/** \class CT_NonTypeParamDecl CTree.h Puma/CTree.h
 
58637
 *  Tree node representing a template non-type parameter declaration. */
 
58638
 
 
58639
#line 58640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58640
} // closed Puma
 
58641
class CCExprResolve;
 
58642
class CExprResolve;
 
58643
class WinIfExists;
 
58644
class WinImportHandler;
 
58645
class WinMacros;
 
58646
class WinAsm;
 
58647
class WinDeclSpecs;
 
58648
class WinMemberExplSpec;
 
58649
class WinTypeKeywords;
 
58650
class WinFriend;
 
58651
class ExtAC;
 
58652
class ExtACBuilderCoupling;
 
58653
class ExtACSyntaxCoupling;
 
58654
class ExtACTree;
 
58655
class ExtACKeywords;
 
58656
class ExtGnu;
 
58657
class PragmaOnceUnitState;
 
58658
class PragmaOnce;
 
58659
class CMatchSyntax;
 
58660
namespace Puma {
 
58661
 
 
58662
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58663
class CT_NonTypeParamDecl : public CT_TemplateParamDecl {
 
58664
#line 58665 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58665
  friend class ::CCExprResolve;
 
58666
  friend class ::CExprResolve;
 
58667
  friend class ::WinIfExists;
 
58668
  friend class ::WinImportHandler;
 
58669
  friend class ::WinMacros;
 
58670
  friend class ::WinAsm;
 
58671
  friend class ::WinDeclSpecs;
 
58672
  friend class ::WinMemberExplSpec;
 
58673
  friend class ::WinTypeKeywords;
 
58674
  friend class ::WinFriend;
 
58675
  friend class ::ExtAC;
 
58676
  friend class ::ExtACBuilderCoupling;
 
58677
  friend class ::ExtACSyntaxCoupling;
 
58678
  friend class ::ExtACTree;
 
58679
  friend class ::ExtACKeywords;
 
58680
  friend class ::ExtGnu;
 
58681
  friend class ::PragmaOnceUnitState;
 
58682
  friend class ::PragmaOnce;
 
58683
  friend class ::CMatchSyntax;
 
58684
 
 
58685
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58686
 
 
58687
  CTree *sons[3]; // declspecs, declarator, init
 
58688
 
 
58689
public:
 
58690
  /** Constructor.
 
58691
   *  \param dsl The declaration specifier sequence.
 
58692
   *  \param d The parameter declarator.
 
58693
   *  \param i The default template argument. */
 
58694
  CT_NonTypeParamDecl (CTree *dsl, CTree *d, CTree *i = (CTree*)0) {
 
58695
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], i);
 
58696
  }
 
58697
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58698
  static const char *NodeId ();
 
58699
  /** Get the name of the node. Can be compared with NodeId(). */
 
58700
  const char *NodeName () const { return NodeId (); }
 
58701
  /** Get the number of sons. */
 
58702
  int Sons () const { return CTree::Sons (sons, 3); }
 
58703
  /** Get the n-th son.
 
58704
   *  \param n The index of the son.
 
58705
   *  \return The n-th son or NULL. */
 
58706
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
58707
  /** Get the declaration specifier sequence. */
 
58708
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
58709
  /** Get the parameter declarator. */
 
58710
  CTree *Declarator () const { return sons[1]; }
 
58711
  /** Get the default template argument. */
 
58712
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[2]; }
 
58713
  /** Get the semantic information about the template parameter. */
 
58714
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
58715
  /** Set the default template argument. 
 
58716
   *  \param i The default argument. */
 
58717
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
58718
  /** Replace a son.
 
58719
   *  \param old_son The son to replace.
 
58720
   *  \param new_son The new son. */
 
58721
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58722
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
58723
  }
 
58724
public:
 
58725
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
58726
  const char *__attr_name (unsigned i) const {
 
58727
    static const char *names[] = { "sons" }; return names[i];
 
58728
  }
 
58729
  const void *__attr (unsigned __i) const {
 
58730
    switch (__i) { case 0: return &sons; default: return 0; }
 
58731
  }
 
58732
#line 2373 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58733
};
 
58734
 
 
58735
/** \class CT_TypeParamDecl CTree.h Puma/CTree.h
 
58736
 *  Tree node representing a template type parameter declaration. */
 
58737
 
 
58738
#line 58739 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58739
} // closed Puma
 
58740
class CCExprResolve;
 
58741
class CExprResolve;
 
58742
class WinIfExists;
 
58743
class WinImportHandler;
 
58744
class WinMacros;
 
58745
class WinAsm;
 
58746
class WinDeclSpecs;
 
58747
class WinMemberExplSpec;
 
58748
class WinTypeKeywords;
 
58749
class WinFriend;
 
58750
class ExtAC;
 
58751
class ExtACBuilderCoupling;
 
58752
class ExtACSyntaxCoupling;
 
58753
class ExtACTree;
 
58754
class ExtACKeywords;
 
58755
class ExtGnu;
 
58756
class PragmaOnceUnitState;
 
58757
class PragmaOnce;
 
58758
class CMatchSyntax;
 
58759
namespace Puma {
 
58760
 
 
58761
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58762
class CT_TypeParamDecl : public CT_TemplateParamDecl {
 
58763
#line 58764 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58764
  friend class ::CCExprResolve;
 
58765
  friend class ::CExprResolve;
 
58766
  friend class ::WinIfExists;
 
58767
  friend class ::WinImportHandler;
 
58768
  friend class ::WinMacros;
 
58769
  friend class ::WinAsm;
 
58770
  friend class ::WinDeclSpecs;
 
58771
  friend class ::WinMemberExplSpec;
 
58772
  friend class ::WinTypeKeywords;
 
58773
  friend class ::WinFriend;
 
58774
  friend class ::ExtAC;
 
58775
  friend class ::ExtACBuilderCoupling;
 
58776
  friend class ::ExtACSyntaxCoupling;
 
58777
  friend class ::ExtACTree;
 
58778
  friend class ::ExtACKeywords;
 
58779
  friend class ::ExtGnu;
 
58780
  friend class ::PragmaOnceUnitState;
 
58781
  friend class ::PragmaOnce;
 
58782
  friend class ::CMatchSyntax;
 
58783
 
 
58784
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58785
 
 
58786
  CTree *sons[4]; // params, key, id, init
 
58787
 
 
58788
public:
 
58789
  /** Constructor.
 
58790
   *  \param pl The template parameter list of an template template parameter.
 
58791
   *  \param k The type keyword, i.e. 'class' or 'typename'.
 
58792
   *  \param id The parameter identifier.
 
58793
   *  \param i The default template argument. */
 
58794
  CT_TypeParamDecl (CTree *pl, CTree *k, CTree *id, CTree *i = (CTree*)0) { 
 
58795
    AddSon (sons[0], pl); AddSon (sons[1], k); 
 
58796
    AddSon (sons[2], id); AddSon (sons[3], i);
 
58797
  }
 
58798
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58799
  static const char *NodeId ();
 
58800
  /** Get the name of the node. Can be compared with NodeId(). */
 
58801
  const char *NodeName () const { return NodeId (); }
 
58802
  /** Get the number of sons. */
 
58803
  int Sons () const { return CTree::Sons (sons, 4); }
 
58804
  /** Get the n-th son.
 
58805
   *  \param n The index of the son.
 
58806
   *  \return The n-th son or NULL. */
 
58807
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
58808
  /** Get the template parameter list of a template template parameter. */
 
58809
  CT_TemplateParamList *Parameters () const { 
 
58810
    return (CT_TemplateParamList*)sons[0]; 
 
58811
  }
 
58812
  /** Get the templare parameter name. */
 
58813
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
58814
  /** Get the template default argument. */
 
58815
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[3]; }
 
58816
  /** Set the template default argument.
 
58817
   *  \param i The default argument. */
 
58818
  void Initializer (CTree *i) { AddSon (sons[3], i); }
 
58819
  /** Replace a son.
 
58820
   *  \param old_son The son to replace.
 
58821
   *  \param new_son The new son. */
 
58822
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58823
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
58824
  }
 
58825
public:
 
58826
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
58827
  const char *__attr_name (unsigned i) const {
 
58828
    static const char *names[] = { "sons" }; return names[i];
 
58829
  }
 
58830
  const void *__attr (unsigned __i) const {
 
58831
    switch (__i) { case 0: return &sons; default: return 0; }
 
58832
  }
 
58833
#line 2417 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58834
};
 
58835
 
 
58836
/** \class CT_EnumDef CTree.h Puma/CTree.h
 
58837
 *  Tree node representing the definition of an enumeration. 
 
58838
 *  Example: \code enum E { A, B, C } \endcode */
 
58839
 
 
58840
#line 58841 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58841
} // closed Puma
 
58842
class CCExprResolve;
 
58843
class CExprResolve;
 
58844
class WinIfExists;
 
58845
class WinImportHandler;
 
58846
class WinMacros;
 
58847
class WinAsm;
 
58848
class WinDeclSpecs;
 
58849
class WinMemberExplSpec;
 
58850
class WinTypeKeywords;
 
58851
class WinFriend;
 
58852
class ExtAC;
 
58853
class ExtACBuilderCoupling;
 
58854
class ExtACSyntaxCoupling;
 
58855
class ExtACTree;
 
58856
class ExtACKeywords;
 
58857
class ExtGnu;
 
58858
class PragmaOnceUnitState;
 
58859
class PragmaOnce;
 
58860
class CMatchSyntax;
 
58861
namespace Puma {
 
58862
 
 
58863
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58864
class CT_EnumDef : public CT_Decl, public CSemObject {
 
58865
#line 58866 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58866
  friend class ::CCExprResolve;
 
58867
  friend class ::CExprResolve;
 
58868
  friend class ::WinIfExists;
 
58869
  friend class ::WinImportHandler;
 
58870
  friend class ::WinMacros;
 
58871
  friend class ::WinAsm;
 
58872
  friend class ::WinDeclSpecs;
 
58873
  friend class ::WinMemberExplSpec;
 
58874
  friend class ::WinTypeKeywords;
 
58875
  friend class ::WinFriend;
 
58876
  friend class ::ExtAC;
 
58877
  friend class ::ExtACBuilderCoupling;
 
58878
  friend class ::ExtACSyntaxCoupling;
 
58879
  friend class ::ExtACTree;
 
58880
  friend class ::ExtACKeywords;
 
58881
  friend class ::ExtGnu;
 
58882
  friend class ::PragmaOnceUnitState;
 
58883
  friend class ::PragmaOnce;
 
58884
  friend class ::CMatchSyntax;
 
58885
 
 
58886
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58887
 
 
58888
  CTree *sons[3]; // key, name, enumerators
 
58889
 
 
58890
public:
 
58891
  /** Constructor.
 
58892
   *  \param k The keyword 'enum'.
 
58893
   *  \param n The name of the enumeration. */
 
58894
  CT_EnumDef (CTree *k, CTree *n) {
 
58895
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], 0); 
 
58896
  }
 
58897
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58898
  static const char *NodeId ();
 
58899
  /** Get the name of the node. Can be compared with NodeId(). */
 
58900
  const char *NodeName () const { return NodeId (); }
 
58901
  /** Get the number of sons. */
 
58902
  int Sons () const { return CTree::Sons (sons, 3); }
 
58903
  /** Get the n-th son.
 
58904
   *  \param n The index of the son.
 
58905
   *  \return The n-th son or NULL. */
 
58906
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
58907
  /** Get the name of the enumeration. */
 
58908
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
58909
  /** Set the list of enumeration constants.
 
58910
   *  \param el The enumerator list. */
 
58911
  void Enumerators (CTree *el) { AddSon (sons[2], el); }
 
58912
  /** Get the list of enumeration constants. */
 
58913
  CT_EnumeratorList *Enumerators () const { return (CT_EnumeratorList*)sons[2]; }
 
58914
  /** Replace a son.
 
58915
   *  \param old_son The son to replace.
 
58916
   *  \param new_son The new son. */
 
58917
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58918
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
58919
  }
 
58920
  /** Get the semantic information about the enumeration. */
 
58921
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
58922
public:
 
58923
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
58924
  const char *__attr_name (unsigned i) const {
 
58925
    static const char *names[] = { "sons" }; return names[i];
 
58926
  }
 
58927
  const void *__attr (unsigned __i) const {
 
58928
    switch (__i) { case 0: return &sons; default: return 0; }
 
58929
  }
 
58930
#line 2457 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58931
};
 
58932
 
 
58933
/** \class CT_Enumerator CTree.h Puma/CTree.h
 
58934
 *  Tree node representing a single enumeration constant. */
 
58935
 
 
58936
#line 58937 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58937
} // closed Puma
 
58938
class CCExprResolve;
 
58939
class CExprResolve;
 
58940
class WinIfExists;
 
58941
class WinImportHandler;
 
58942
class WinMacros;
 
58943
class WinAsm;
 
58944
class WinDeclSpecs;
 
58945
class WinMemberExplSpec;
 
58946
class WinTypeKeywords;
 
58947
class WinFriend;
 
58948
class ExtAC;
 
58949
class ExtACBuilderCoupling;
 
58950
class ExtACSyntaxCoupling;
 
58951
class ExtACTree;
 
58952
class ExtACKeywords;
 
58953
class ExtGnu;
 
58954
class PragmaOnceUnitState;
 
58955
class PragmaOnce;
 
58956
class CMatchSyntax;
 
58957
namespace Puma {
 
58958
 
 
58959
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58960
class CT_Enumerator : public CT_Decl, public CSemObject {
 
58961
#line 58962 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
58962
  friend class ::CCExprResolve;
 
58963
  friend class ::CExprResolve;
 
58964
  friend class ::WinIfExists;
 
58965
  friend class ::WinImportHandler;
 
58966
  friend class ::WinMacros;
 
58967
  friend class ::WinAsm;
 
58968
  friend class ::WinDeclSpecs;
 
58969
  friend class ::WinMemberExplSpec;
 
58970
  friend class ::WinTypeKeywords;
 
58971
  friend class ::WinFriend;
 
58972
  friend class ::ExtAC;
 
58973
  friend class ::ExtACBuilderCoupling;
 
58974
  friend class ::ExtACSyntaxCoupling;
 
58975
  friend class ::ExtACTree;
 
58976
  friend class ::ExtACKeywords;
 
58977
  friend class ::ExtGnu;
 
58978
  friend class ::PragmaOnceUnitState;
 
58979
  friend class ::PragmaOnce;
 
58980
  friend class ::CMatchSyntax;
 
58981
 
 
58982
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58983
 
 
58984
  CTree *sons[2]; // name, init
 
58985
 
 
58986
public:
 
58987
  /** Constructor.
 
58988
   *  \param n The name of the enumerator. */
 
58989
  CT_Enumerator (CTree *n) { AddSon (sons[0], n); AddSon (sons[1], 0); }
 
58990
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58991
  static const char *NodeId ();
 
58992
  /** Get the name of the node. Can be compared with NodeId(). */
 
58993
  const char *NodeName () const { return NodeId (); }
 
58994
  /** Get the number of sons. */
 
58995
  int Sons () const { return CTree::Sons (sons, 2); }
 
58996
  /** Get the n-th son.
 
58997
   *  \param n The index of the son.
 
58998
   *  \return The n-th son or NULL. */
 
58999
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
59000
  /** Get the name of the enumerator. */
 
59001
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
59002
  /** Set the initializer expression of the enumerator. */
 
59003
  void Initializer (CTree *i) { AddSon (sons[1], i); }
 
59004
  /** Get the initializer expression of the enumerator. */
 
59005
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
59006
  /** Replace a son.
 
59007
   *  \param old_son The son to replace.
 
59008
   *  \param new_son The new son. */
 
59009
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59010
    CTree::ReplaceSon (sons, 2, old_son, new_son); 
 
59011
  }
 
59012
  /** Get the semantic information about the enumerator. */
 
59013
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
59014
public:
 
59015
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
59016
  const char *__attr_name (unsigned i) const {
 
59017
    static const char *names[] = { "sons" }; return names[i];
 
59018
  }
 
59019
  const void *__attr (unsigned __i) const {
 
59020
    switch (__i) { case 0: return &sons; default: return 0; }
 
59021
  }
 
59022
#line 2492 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59023
};
 
59024
 
 
59025
/** \class CT_FctDef CTree.h Puma/CTree.h
 
59026
 *  Tree node representing a function definition. 
 
59027
 *  Example:
 
59028
 *  \code
 
59029
 * int mul(int x, int y) {
 
59030
 *   return x*y;
 
59031
 * }
 
59032
 *  \endcode */
 
59033
 
 
59034
#line 59035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59035
} // closed Puma
 
59036
class CCExprResolve;
 
59037
class CExprResolve;
 
59038
class WinIfExists;
 
59039
class WinImportHandler;
 
59040
class WinMacros;
 
59041
class WinAsm;
 
59042
class WinDeclSpecs;
 
59043
class WinMemberExplSpec;
 
59044
class WinTypeKeywords;
 
59045
class WinFriend;
 
59046
class ExtAC;
 
59047
class ExtACBuilderCoupling;
 
59048
class ExtACSyntaxCoupling;
 
59049
class ExtACTree;
 
59050
class ExtACKeywords;
 
59051
class ExtGnu;
 
59052
class PragmaOnceUnitState;
 
59053
class PragmaOnce;
 
59054
class CMatchSyntax;
 
59055
namespace Puma {
 
59056
 
 
59057
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59058
class CT_FctDef : public CT_Decl, public CSemObject {
 
59059
#line 59060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59060
  friend class ::CCExprResolve;
 
59061
  friend class ::CExprResolve;
 
59062
  friend class ::WinIfExists;
 
59063
  friend class ::WinImportHandler;
 
59064
  friend class ::WinMacros;
 
59065
  friend class ::WinAsm;
 
59066
  friend class ::WinDeclSpecs;
 
59067
  friend class ::WinMemberExplSpec;
 
59068
  friend class ::WinTypeKeywords;
 
59069
  friend class ::WinFriend;
 
59070
  friend class ::ExtAC;
 
59071
  friend class ::ExtACBuilderCoupling;
 
59072
  friend class ::ExtACSyntaxCoupling;
 
59073
  friend class ::ExtACTree;
 
59074
  friend class ::ExtACKeywords;
 
59075
  friend class ::ExtGnu;
 
59076
  friend class ::PragmaOnceUnitState;
 
59077
  friend class ::PragmaOnce;
 
59078
  friend class ::CMatchSyntax;
 
59079
 
 
59080
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59081
 
 
59082
  CTree *sons[7]; // declspecs, declarator, try, ctor_init, args, body, handlers
 
59083
 
 
59084
public:
 
59085
  /** Constructor.
 
59086
   *  \param dss The declaration specifier sequence. 
 
59087
   *  \param d The function declarator.
 
59088
   *  \param t Optional keyword 'try' for a function try-block.
 
59089
   *  \param ci Optional constructor initializer list.
 
59090
   *  \param as Optional K&R argument declaration list.
 
59091
   *  \param b The function body.
 
59092
   *  \param hs Exception handler sequence for a function try-block. */
 
59093
  CT_FctDef (CTree *dss, CTree *d, CTree *t, CTree *ci, CTree *as, 
 
59094
             CTree *b, CTree *hs) {
 
59095
    AddSon (sons[0], dss); AddSon (sons[1], d); AddSon (sons[2], t); 
 
59096
    AddSon (sons[3], ci); AddSon (sons[4], as); AddSon (sons[5], b); 
 
59097
    AddSon (sons[6], hs); 
 
59098
  }
 
59099
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59100
  static const char *NodeId ();
 
59101
  /** Get the name of the node. Can be compared with NodeId(). */
 
59102
  const char *NodeName () const { return NodeId (); }
 
59103
  /** Get the number of sons. */
 
59104
  int Sons () const { return CTree::Sons (sons, 7); }
 
59105
  /** Get the n-th son.
 
59106
   *  \param n The index of the son.
 
59107
   *  \return The n-th son or NULL. */
 
59108
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
59109
  /** Get the declaration specifier sequence. */
 
59110
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
59111
  /** Get the function declarator. */
 
59112
  CTree *Declarator () const { return sons[1]; }
 
59113
  /** Get the 'try' keyword of the function try-block. */
 
59114
  CT_Token *TryKey () const { return (CT_Token*)sons[2]; }
 
59115
  /** Get the constructor initializer list. */
 
59116
  CTree *CtorInit () const { return sons[3]; }
 
59117
  /** Get the K&R argument declaration sequence. */
 
59118
  CT_ArgDeclSeq *ArgDeclSeq () const { return (CT_ArgDeclSeq*)sons[4]; }
 
59119
  /** Get the function body. */
 
59120
  CT_CmpdStmt *Body () const { return (CT_CmpdStmt*)sons[5]; }
 
59121
  /** Get the exception handler sequence of a function try-block. */
 
59122
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[6]; }
 
59123
  /** Get the semantic information about the function. */
 
59124
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
59125
  /** Set the constructor initializer list. 
 
59126
   *  \param i The initializer list. */
 
59127
  void CtorInit (CTree *i) { AddSon (sons[3], i); }
 
59128
  /** Set the function body.
 
59129
   *  \param b The function body. */
 
59130
  void Body (CTree *b) { AddSon (sons[5], b); }
 
59131
  /** Set the function try-block.
 
59132
   *  \param t The keyword 'try'.
 
59133
   *  \param c Optional constructor initializer list.
 
59134
   *  \param b The function body.
 
59135
   *  \param h The exception handler sequence. */
 
59136
  void FctTryBlock (CTree *t, CTree *c, CTree *b, CTree *h) { 
 
59137
    AddSon (sons[2], t); AddSon (sons[3], c); 
 
59138
    AddSon (sons[5], b); AddSon (sons[6], h);
 
59139
  }
 
59140
  /** Replace a son.
 
59141
   *  \param old_son The son to replace.
 
59142
   *  \param new_son The new son. */
 
59143
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59144
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
59145
  }
 
59146
public:
 
59147
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
59148
  const char *__attr_name (unsigned i) const {
 
59149
    static const char *names[] = { "sons" }; return names[i];
 
59150
  }
 
59151
  const void *__attr (unsigned __i) const {
 
59152
    switch (__i) { case 0: return &sons; default: return 0; }
 
59153
  }
 
59154
#line 2567 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59155
};
 
59156
 
 
59157
/** \class CT_AsmDef CTree.h Puma/CTree.h
 
59158
 *  Tree node representing an inline assembly definition. 
 
59159
 *  Example: \code asm("movl %ecx %eax"); \endcode */
 
59160
 
 
59161
#line 59162 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59162
} // closed Puma
 
59163
class CCExprResolve;
 
59164
class CExprResolve;
 
59165
class WinIfExists;
 
59166
class WinImportHandler;
 
59167
class WinMacros;
 
59168
class WinAsm;
 
59169
class WinDeclSpecs;
 
59170
class WinMemberExplSpec;
 
59171
class WinTypeKeywords;
 
59172
class WinFriend;
 
59173
class ExtAC;
 
59174
class ExtACBuilderCoupling;
 
59175
class ExtACSyntaxCoupling;
 
59176
class ExtACTree;
 
59177
class ExtACKeywords;
 
59178
class ExtGnu;
 
59179
class PragmaOnceUnitState;
 
59180
class PragmaOnce;
 
59181
class CMatchSyntax;
 
59182
namespace Puma {
 
59183
 
 
59184
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59185
class CT_AsmDef : public CT_Decl {
 
59186
#line 59187 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59187
  friend class ::CCExprResolve;
 
59188
  friend class ::CExprResolve;
 
59189
  friend class ::WinIfExists;
 
59190
  friend class ::WinImportHandler;
 
59191
  friend class ::WinMacros;
 
59192
  friend class ::WinAsm;
 
59193
  friend class ::WinDeclSpecs;
 
59194
  friend class ::WinMemberExplSpec;
 
59195
  friend class ::WinTypeKeywords;
 
59196
  friend class ::WinFriend;
 
59197
  friend class ::ExtAC;
 
59198
  friend class ::ExtACBuilderCoupling;
 
59199
  friend class ::ExtACSyntaxCoupling;
 
59200
  friend class ::ExtACTree;
 
59201
  friend class ::ExtACKeywords;
 
59202
  friend class ::ExtGnu;
 
59203
  friend class ::PragmaOnceUnitState;
 
59204
  friend class ::PragmaOnce;
 
59205
  friend class ::CMatchSyntax;
 
59206
 
 
59207
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59208
 
 
59209
  CTree *sons[5]; // asm, open, str, close, semi_colon
 
59210
 
 
59211
public:
 
59212
  /** Constructor.
 
59213
   *  \param a The keyword 'asm'.
 
59214
   *  \param o Left parenthesis around the assembler code string. 
 
59215
   *  \param s The assembler code.
 
59216
   *  \param c Right parenthesis around the assembler code string.
 
59217
   *  \param sc Trailing semi-colon. */
 
59218
  CT_AsmDef (CTree *a, CTree *o, CTree *s, CTree *c, CTree *sc) {
 
59219
    AddSon (sons[0], a); AddSon (sons[1], o); AddSon (sons[2], s); 
 
59220
    AddSon (sons[3], c); AddSon (sons[4], sc); 
 
59221
  }
 
59222
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59223
  static const char *NodeId ();
 
59224
  /** Get the name of the node. Can be compared with NodeId(). */
 
59225
  const char *NodeName () const { return NodeId (); }
 
59226
  /** Get the number of sons. */
 
59227
  int Sons () const { return 5; }
 
59228
  /** Get the n-th son.
 
59229
   *  \param n The index of the son.
 
59230
   *  \return The n-th son or NULL. */
 
59231
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
59232
  /** Get the assembler code. */
 
59233
  CT_String *Instructions () const { return (CT_String*)sons[2]; }
 
59234
  /** Replace a son.
 
59235
   *  \param old_son The son to replace.
 
59236
   *  \param new_son The new son. */
 
59237
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59238
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
59239
  }
 
59240
public:
 
59241
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
59242
  const char *__attr_name (unsigned i) const {
 
59243
    static const char *names[] = { "sons" }; return names[i];
 
59244
  }
 
59245
  const void *__attr (unsigned __i) const {
 
59246
    switch (__i) { case 0: return &sons; default: return 0; }
 
59247
  }
 
59248
#line 2604 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59249
};
 
59250
 
 
59251
/** \class CT_Handler CTree.h Puma/CTree.h
 
59252
 *  Tree node representing an exception handler. */
 
59253
 
 
59254
#line 59255 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59255
} // closed Puma
 
59256
class CCExprResolve;
 
59257
class CExprResolve;
 
59258
class WinIfExists;
 
59259
class WinImportHandler;
 
59260
class WinMacros;
 
59261
class WinAsm;
 
59262
class WinDeclSpecs;
 
59263
class WinMemberExplSpec;
 
59264
class WinTypeKeywords;
 
59265
class WinFriend;
 
59266
class ExtAC;
 
59267
class ExtACBuilderCoupling;
 
59268
class ExtACSyntaxCoupling;
 
59269
class ExtACTree;
 
59270
class ExtACKeywords;
 
59271
class ExtGnu;
 
59272
class PragmaOnceUnitState;
 
59273
class PragmaOnce;
 
59274
class CMatchSyntax;
 
59275
namespace Puma {
 
59276
 
 
59277
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59278
class CT_Handler : public CT_Decl, public CSemScope {
 
59279
#line 59280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59280
  friend class ::CCExprResolve;
 
59281
  friend class ::CExprResolve;
 
59282
  friend class ::WinIfExists;
 
59283
  friend class ::WinImportHandler;
 
59284
  friend class ::WinMacros;
 
59285
  friend class ::WinAsm;
 
59286
  friend class ::WinDeclSpecs;
 
59287
  friend class ::WinMemberExplSpec;
 
59288
  friend class ::WinTypeKeywords;
 
59289
  friend class ::WinFriend;
 
59290
  friend class ::ExtAC;
 
59291
  friend class ::ExtACBuilderCoupling;
 
59292
  friend class ::ExtACSyntaxCoupling;
 
59293
  friend class ::ExtACTree;
 
59294
  friend class ::ExtACKeywords;
 
59295
  friend class ::ExtGnu;
 
59296
  friend class ::PragmaOnceUnitState;
 
59297
  friend class ::PragmaOnce;
 
59298
  friend class ::CMatchSyntax;
 
59299
 
 
59300
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59301
 
 
59302
  CTree *sons[3]; // catch, exception_decl, stmt
 
59303
 
 
59304
public:
 
59305
  /** Constructor.
 
59306
   *  \param c The keyword 'catch'.
 
59307
   *  \param e The exception object declaration.
 
59308
   *  \param s The exception handling statement. */
 
59309
  CT_Handler (CTree *c, CTree *e, CTree *s) {
 
59310
    AddSon (sons[0], c); AddSon (sons[1], e); AddSon (sons[2], s);
 
59311
  }
 
59312
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59313
  static const char *NodeId ();
 
59314
  /** Get the name of the node. Can be compared with NodeId(). */
 
59315
  const char *NodeName () const { return NodeId (); }
 
59316
  /** Get the number of sons. */
 
59317
  int Sons () const { return 3; }
 
59318
  /** Get the n-th son.
 
59319
   *  \param n The index of the son.
 
59320
   *  \return The n-th son or NULL. */
 
59321
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
59322
  /** Get the exception object declaration. */
 
59323
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
59324
  /** Get the exception handling statement. */
 
59325
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
59326
  /** Replace a son.
 
59327
   *  \param old_son The son to replace.
 
59328
   *  \param new_son The new son. */
 
59329
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59330
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
59331
  }
 
59332
  /** Get the scope opened by the handler. */
 
59333
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
59334
public:
 
59335
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
59336
  const char *__attr_name (unsigned i) const {
 
59337
    static const char *names[] = { "sons" }; return names[i];
 
59338
  }
 
59339
  const void *__attr (unsigned __i) const {
 
59340
    switch (__i) { case 0: return &sons; default: return 0; }
 
59341
  }
 
59342
#line 2641 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59343
};
 
59344
 
 
59345
/** \class CT_LinkageSpec CTree.h Puma/CTree.h
 
59346
 *  Tree node representing a list of declaration with a specific linkage. */
 
59347
 
 
59348
#line 59349 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59349
} // closed Puma
 
59350
class CCExprResolve;
 
59351
class CExprResolve;
 
59352
class WinIfExists;
 
59353
class WinImportHandler;
 
59354
class WinMacros;
 
59355
class WinAsm;
 
59356
class WinDeclSpecs;
 
59357
class WinMemberExplSpec;
 
59358
class WinTypeKeywords;
 
59359
class WinFriend;
 
59360
class ExtAC;
 
59361
class ExtACBuilderCoupling;
 
59362
class ExtACSyntaxCoupling;
 
59363
class ExtACTree;
 
59364
class ExtACKeywords;
 
59365
class ExtGnu;
 
59366
class PragmaOnceUnitState;
 
59367
class PragmaOnce;
 
59368
class CMatchSyntax;
 
59369
namespace Puma {
 
59370
 
 
59371
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59372
class CT_LinkageSpec : public CT_Decl {
 
59373
#line 59374 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59374
  friend class ::CCExprResolve;
 
59375
  friend class ::CExprResolve;
 
59376
  friend class ::WinIfExists;
 
59377
  friend class ::WinImportHandler;
 
59378
  friend class ::WinMacros;
 
59379
  friend class ::WinAsm;
 
59380
  friend class ::WinDeclSpecs;
 
59381
  friend class ::WinMemberExplSpec;
 
59382
  friend class ::WinTypeKeywords;
 
59383
  friend class ::WinFriend;
 
59384
  friend class ::ExtAC;
 
59385
  friend class ::ExtACBuilderCoupling;
 
59386
  friend class ::ExtACSyntaxCoupling;
 
59387
  friend class ::ExtACTree;
 
59388
  friend class ::ExtACKeywords;
 
59389
  friend class ::ExtGnu;
 
59390
  friend class ::PragmaOnceUnitState;
 
59391
  friend class ::PragmaOnce;
 
59392
  friend class ::CMatchSyntax;
 
59393
 
 
59394
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59395
 
 
59396
  CTree *sons[5]; // extern, str, open, decls, close
 
59397
 
 
59398
public:
 
59399
  /** Constructor.
 
59400
   *  \param e The keyword 'extern'.
 
59401
   *  \param s The linkage identifier, e.g. "C".
 
59402
   *  \param o Left parenthesis around the declaration list.
 
59403
   *  \param d The list of declarations.
 
59404
   *  \param c Right parenthesis around the declaration list. */
 
59405
  CT_LinkageSpec (CTree *e, CTree *s, CTree *o, CTree *d, CTree *c) {
 
59406
    AddSon (sons[0], e); AddSon (sons[1], s); AddSon (sons[2], o); 
 
59407
    AddSon (sons[3], d); AddSon (sons[4], c);
 
59408
    if (isList ())
 
59409
      ((CT_DeclList*)Decls ())->Linkage (this);
 
59410
    else
 
59411
      ((CT_Decl*)Decls ())->Linkage (this);
 
59412
  }
 
59413
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59414
  static const char *NodeId ();
 
59415
  /** Get the name of the node. Can be compared with NodeId(). */
 
59416
  const char *NodeName () const { return NodeId (); }
 
59417
  /** Get the number of sons. */
 
59418
  int Sons () const { return CTree::Sons (sons, 5); }
 
59419
  /** Get the n-th son.
 
59420
   *  \param n The index of the son.
 
59421
   *  \return The n-th son or NULL. */
 
59422
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
59423
  /** Get the linkage identifier. */
 
59424
  CT_String *Linkage () const { return (CT_String*)sons[1]; }
 
59425
  /** Get the list declarations. */
 
59426
  CTree *Decls () const { return sons[3]; }
 
59427
  /** Check if there is more than one enclosed declaration. 
 
59428
   *  In this case the node returned by Decls() is a CT_DeclList
 
59429
   *  node. */
 
59430
  bool isList () const {
 
59431
    return Decls ()->NodeName () == CT_DeclList::NodeId ();
 
59432
  }
 
59433
  /** Replace a son.
 
59434
   *  \param old_son The son to replace.
 
59435
   *  \param new_son The new son. */
 
59436
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59437
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
59438
  }
 
59439
public:
 
59440
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
59441
  const char *__attr_name (unsigned i) const {
 
59442
    static const char *names[] = { "sons" }; return names[i];
 
59443
  }
 
59444
  const void *__attr (unsigned __i) const {
 
59445
    switch (__i) { case 0: return &sons; default: return 0; }
 
59446
  }
 
59447
#line 2689 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59448
};
 
59449
 
 
59450
/** \class CT_ArgDecl CTree.h Puma/CTree.h
 
59451
 *  Tree node representing the declaration of a function parameter. */
 
59452
 
 
59453
#line 59454 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59454
} // closed Puma
 
59455
class CCExprResolve;
 
59456
class CExprResolve;
 
59457
class WinIfExists;
 
59458
class WinImportHandler;
 
59459
class WinMacros;
 
59460
class WinAsm;
 
59461
class WinDeclSpecs;
 
59462
class WinMemberExplSpec;
 
59463
class WinTypeKeywords;
 
59464
class WinFriend;
 
59465
class ExtAC;
 
59466
class ExtACBuilderCoupling;
 
59467
class ExtACSyntaxCoupling;
 
59468
class ExtACTree;
 
59469
class ExtACKeywords;
 
59470
class ExtGnu;
 
59471
class PragmaOnceUnitState;
 
59472
class PragmaOnce;
 
59473
class CMatchSyntax;
 
59474
namespace Puma {
 
59475
 
 
59476
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59477
class CT_ArgDecl : public CT_Decl, public CSemObject {
 
59478
#line 59479 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59479
  friend class ::CCExprResolve;
 
59480
  friend class ::CExprResolve;
 
59481
  friend class ::WinIfExists;
 
59482
  friend class ::WinImportHandler;
 
59483
  friend class ::WinMacros;
 
59484
  friend class ::WinAsm;
 
59485
  friend class ::WinDeclSpecs;
 
59486
  friend class ::WinMemberExplSpec;
 
59487
  friend class ::WinTypeKeywords;
 
59488
  friend class ::WinFriend;
 
59489
  friend class ::ExtAC;
 
59490
  friend class ::ExtACBuilderCoupling;
 
59491
  friend class ::ExtACSyntaxCoupling;
 
59492
  friend class ::ExtACTree;
 
59493
  friend class ::ExtACKeywords;
 
59494
  friend class ::ExtGnu;
 
59495
  friend class ::PragmaOnceUnitState;
 
59496
  friend class ::PragmaOnce;
 
59497
  friend class ::CMatchSyntax;
 
59498
 
 
59499
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59500
 
 
59501
  CTree *sons[4]; // declspecs, declarator, init, ellipsis
 
59502
 
 
59503
public:
 
59504
  /** Constructor.
 
59505
   *  \param dsl The declaration specifier sequence.
 
59506
   *  \param d The parameter declarator. */
 
59507
  CT_ArgDecl (CTree *dsl, CTree *d) {
 
59508
    AddSon (sons[0], dsl); AddSon (sons[1], d); 
 
59509
    AddSon (sons[2], 0); AddSon (sons[3], 0); 
 
59510
  }
 
59511
  /** Constructor.
 
59512
   *  \param ellipsis The variable argument list operator "...". */
 
59513
  CT_ArgDecl (CTree *ellipsis) {
 
59514
    AddSon (sons[0], 0); AddSon (sons[1], 0); 
 
59515
    AddSon (sons[2], 0); AddSon (sons[3], ellipsis); 
 
59516
  }
 
59517
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59518
  static const char *NodeId ();
 
59519
  /** Get the name of the node. Can be compared with NodeId(). */
 
59520
  const char *NodeName () const { return NodeId (); }
 
59521
  /** Get the number of sons. */
 
59522
  int Sons () const { return CTree::Sons (sons, 4); }
 
59523
  /** Get the n-th son.
 
59524
   *  \param n The index of the son.
 
59525
   *  \return The n-th son or NULL. */
 
59526
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
59527
  /** Get the declaration specifier sequence. */
 
59528
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
59529
  /** Get the function parameter declarator. */
 
59530
  CTree *Declarator () const { return sons[1]; }
 
59531
  /** Get the default argument. */
 
59532
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
59533
  /** Get the variable argument list operator. */
 
59534
  CT_Token *Ellipsis () const { return (CT_Token*)sons[3]; }
 
59535
  /** Get the semantic information about the function parameter. */
 
59536
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
59537
  /** Set the default argument. */
 
59538
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
59539
  /** Replace a son.
 
59540
   *  \param old_son The son to replace.
 
59541
   *  \param new_son The new son. */
 
59542
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59543
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
59544
  }
 
59545
public:
 
59546
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
59547
  const char *__attr_name (unsigned i) const {
 
59548
    static const char *names[] = { "sons" }; return names[i];
 
59549
  }
 
59550
  const void *__attr (unsigned __i) const {
 
59551
    switch (__i) { case 0: return &sons; default: return 0; }
 
59552
  }
 
59553
#line 2738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59554
};
 
59555
 
 
59556
/** \class CT_ArgDeclList CTree.h Puma/CTree.h
 
59557
 *  Tree node representing a function parameter list. */
 
59558
 
 
59559
#line 59560 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59560
} // closed Puma
 
59561
class CCExprResolve;
 
59562
class CExprResolve;
 
59563
class WinIfExists;
 
59564
class WinImportHandler;
 
59565
class WinMacros;
 
59566
class WinAsm;
 
59567
class WinDeclSpecs;
 
59568
class WinMemberExplSpec;
 
59569
class WinTypeKeywords;
 
59570
class WinFriend;
 
59571
class ExtAC;
 
59572
class ExtACBuilderCoupling;
 
59573
class ExtACSyntaxCoupling;
 
59574
class ExtACTree;
 
59575
class ExtACKeywords;
 
59576
class ExtGnu;
 
59577
class PragmaOnceUnitState;
 
59578
class PragmaOnce;
 
59579
class CMatchSyntax;
 
59580
namespace Puma {
 
59581
 
 
59582
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59583
class CT_ArgDeclList : public CT_DeclList, public CSemScope {
 
59584
#line 59585 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59585
  friend class ::CCExprResolve;
 
59586
  friend class ::CExprResolve;
 
59587
  friend class ::WinIfExists;
 
59588
  friend class ::WinImportHandler;
 
59589
  friend class ::WinMacros;
 
59590
  friend class ::WinAsm;
 
59591
  friend class ::WinDeclSpecs;
 
59592
  friend class ::WinMemberExplSpec;
 
59593
  friend class ::WinTypeKeywords;
 
59594
  friend class ::WinFriend;
 
59595
  friend class ::ExtAC;
 
59596
  friend class ::ExtACBuilderCoupling;
 
59597
  friend class ::ExtACSyntaxCoupling;
 
59598
  friend class ::ExtACTree;
 
59599
  friend class ::ExtACKeywords;
 
59600
  friend class ::ExtGnu;
 
59601
  friend class ::PragmaOnceUnitState;
 
59602
  friend class ::PragmaOnce;
 
59603
  friend class ::CMatchSyntax;
 
59604
 
 
59605
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59606
 
 
59607
public:
 
59608
  /** Constructor.
 
59609
   *  \param size The initial size of the list.
 
59610
   *  \param props The list properties. */
 
59611
  CT_ArgDeclList (int size = 2, int props = SEPARATORS | OPEN_CLOSE) : 
 
59612
   CT_DeclList (size, 2) { AddProperties (props); }
 
59613
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59614
  static const char *NodeId ();
 
59615
  /** Get the name of the node. Can be compared with NodeId(). */
 
59616
  const char *NodeName () const { return NodeId (); }
 
59617
  /** Get the scope opened by the parameter list. */
 
59618
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
59619
public:
 
59620
  typedef AC::TLE __AttrTypes;
 
59621
  const char *__attr_name (unsigned i) const { return 0; }
 
59622
  const void *__attr (unsigned __i) const { return 0; }
 
59623
#line 2755 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59624
};
 
59625
 
 
59626
/** \class CT_ArgDeclSeq CTree.h Puma/CTree.h
 
59627
 *  Tree node representing a K&R function parameter declarations list. */
 
59628
 
 
59629
#line 59630 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59630
} // closed Puma
 
59631
class CCExprResolve;
 
59632
class CExprResolve;
 
59633
class WinIfExists;
 
59634
class WinImportHandler;
 
59635
class WinMacros;
 
59636
class WinAsm;
 
59637
class WinDeclSpecs;
 
59638
class WinMemberExplSpec;
 
59639
class WinTypeKeywords;
 
59640
class WinFriend;
 
59641
class ExtAC;
 
59642
class ExtACBuilderCoupling;
 
59643
class ExtACSyntaxCoupling;
 
59644
class ExtACTree;
 
59645
class ExtACKeywords;
 
59646
class ExtGnu;
 
59647
class PragmaOnceUnitState;
 
59648
class PragmaOnce;
 
59649
class CMatchSyntax;
 
59650
namespace Puma {
 
59651
 
 
59652
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59653
class CT_ArgDeclSeq : public CT_DeclList, public CSemScope {
 
59654
#line 59655 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59655
  friend class ::CCExprResolve;
 
59656
  friend class ::CExprResolve;
 
59657
  friend class ::WinIfExists;
 
59658
  friend class ::WinImportHandler;
 
59659
  friend class ::WinMacros;
 
59660
  friend class ::WinAsm;
 
59661
  friend class ::WinDeclSpecs;
 
59662
  friend class ::WinMemberExplSpec;
 
59663
  friend class ::WinTypeKeywords;
 
59664
  friend class ::WinFriend;
 
59665
  friend class ::ExtAC;
 
59666
  friend class ::ExtACBuilderCoupling;
 
59667
  friend class ::ExtACSyntaxCoupling;
 
59668
  friend class ::ExtACTree;
 
59669
  friend class ::ExtACKeywords;
 
59670
  friend class ::ExtGnu;
 
59671
  friend class ::PragmaOnceUnitState;
 
59672
  friend class ::PragmaOnce;
 
59673
  friend class ::CMatchSyntax;
 
59674
 
 
59675
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59676
 
 
59677
public:
 
59678
  /** Constructor.
 
59679
   *  \param size The initial size of the list. */
 
59680
  CT_ArgDeclSeq (int size = 2) : CT_DeclList (size, 2) {}
 
59681
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59682
  static const char *NodeId ();
 
59683
  /** Get the name of the node. Can be compared with NodeId(). */
 
59684
  const char *NodeName () const { return NodeId (); }
 
59685
  /** Get the scope opened by the parameter declarations list. */
 
59686
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
59687
public:
 
59688
  typedef AC::TLE __AttrTypes;
 
59689
  const char *__attr_name (unsigned i) const { return 0; }
 
59690
  const void *__attr (unsigned __i) const { return 0; }
 
59691
#line 2770 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59692
};
 
59693
 
 
59694
/** \class CT_ArgNameList CTree.h Puma/CTree.h
 
59695
 *  Tree node representing a K&R function parameter name list. */
 
59696
 
 
59697
#line 59698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59698
} // closed Puma
 
59699
class CCExprResolve;
 
59700
class CExprResolve;
 
59701
class WinIfExists;
 
59702
class WinImportHandler;
 
59703
class WinMacros;
 
59704
class WinAsm;
 
59705
class WinDeclSpecs;
 
59706
class WinMemberExplSpec;
 
59707
class WinTypeKeywords;
 
59708
class WinFriend;
 
59709
class ExtAC;
 
59710
class ExtACBuilderCoupling;
 
59711
class ExtACSyntaxCoupling;
 
59712
class ExtACTree;
 
59713
class ExtACKeywords;
 
59714
class ExtGnu;
 
59715
class PragmaOnceUnitState;
 
59716
class PragmaOnce;
 
59717
class CMatchSyntax;
 
59718
namespace Puma {
 
59719
 
 
59720
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59721
class CT_ArgNameList : public CT_ArgDeclList {
 
59722
#line 59723 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59723
  friend class ::CCExprResolve;
 
59724
  friend class ::CExprResolve;
 
59725
  friend class ::WinIfExists;
 
59726
  friend class ::WinImportHandler;
 
59727
  friend class ::WinMacros;
 
59728
  friend class ::WinAsm;
 
59729
  friend class ::WinDeclSpecs;
 
59730
  friend class ::WinMemberExplSpec;
 
59731
  friend class ::WinTypeKeywords;
 
59732
  friend class ::WinFriend;
 
59733
  friend class ::ExtAC;
 
59734
  friend class ::ExtACBuilderCoupling;
 
59735
  friend class ::ExtACSyntaxCoupling;
 
59736
  friend class ::ExtACTree;
 
59737
  friend class ::ExtACKeywords;
 
59738
  friend class ::ExtGnu;
 
59739
  friend class ::PragmaOnceUnitState;
 
59740
  friend class ::PragmaOnce;
 
59741
  friend class ::CMatchSyntax;
 
59742
 
 
59743
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59744
 
 
59745
public:
 
59746
  /** Constructor. */
 
59747
  CT_ArgNameList () : CT_ArgDeclList () {}
 
59748
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59749
  static const char *NodeId ();
 
59750
  /** Get the name of the node. Can be compared with NodeId(). */
 
59751
  const char *NodeName () const { return NodeId (); }
 
59752
public:
 
59753
  typedef AC::TLE __AttrTypes;
 
59754
  const char *__attr_name (unsigned i) const { return 0; }
 
59755
  const void *__attr (unsigned __i) const { return 0; }
 
59756
#line 2782 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59757
};
 
59758
 
 
59759
/** \class CT_NamespaceDef CTree.h Puma/CTree.h
 
59760
 *  Tree node representing a namespace definition.
 
59761
 *  Example: \code namespace a {} \endcode */
 
59762
 
 
59763
#line 59764 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59764
} // closed Puma
 
59765
class CCExprResolve;
 
59766
class CExprResolve;
 
59767
class WinIfExists;
 
59768
class WinImportHandler;
 
59769
class WinMacros;
 
59770
class WinAsm;
 
59771
class WinDeclSpecs;
 
59772
class WinMemberExplSpec;
 
59773
class WinTypeKeywords;
 
59774
class WinFriend;
 
59775
class ExtAC;
 
59776
class ExtACBuilderCoupling;
 
59777
class ExtACSyntaxCoupling;
 
59778
class ExtACTree;
 
59779
class ExtACKeywords;
 
59780
class ExtGnu;
 
59781
class PragmaOnceUnitState;
 
59782
class PragmaOnce;
 
59783
class CMatchSyntax;
 
59784
namespace Puma {
 
59785
 
 
59786
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59787
class CT_NamespaceDef : public CT_Decl, public CSemObject {
 
59788
#line 59789 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59789
  friend class ::CCExprResolve;
 
59790
  friend class ::CExprResolve;
 
59791
  friend class ::WinIfExists;
 
59792
  friend class ::WinImportHandler;
 
59793
  friend class ::WinMacros;
 
59794
  friend class ::WinAsm;
 
59795
  friend class ::WinDeclSpecs;
 
59796
  friend class ::WinMemberExplSpec;
 
59797
  friend class ::WinTypeKeywords;
 
59798
  friend class ::WinFriend;
 
59799
  friend class ::ExtAC;
 
59800
  friend class ::ExtACBuilderCoupling;
 
59801
  friend class ::ExtACSyntaxCoupling;
 
59802
  friend class ::ExtACTree;
 
59803
  friend class ::ExtACKeywords;
 
59804
  friend class ::ExtGnu;
 
59805
  friend class ::PragmaOnceUnitState;
 
59806
  friend class ::PragmaOnce;
 
59807
  friend class ::CMatchSyntax;
 
59808
 
 
59809
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59810
 
 
59811
  CTree *sons[3]; // ns, name, members
 
59812
 
 
59813
public:
 
59814
  /** Constructor.
 
59815
   *  \param n The keyword 'namespace'.
 
59816
   *  \param nm The name of the namespace. */
 
59817
  CT_NamespaceDef (CTree *n, CTree *nm) {
 
59818
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], 0); 
 
59819
  }
 
59820
  /** Constructor.
 
59821
   *  \param n The keyword 'namespace'.
 
59822
   *  \param nm The name of the namespace. 
 
59823
   *  \param m The namespace member declarations list. */
 
59824
  CT_NamespaceDef (CTree *n, CTree *nm, CTree *m) {
 
59825
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], m); 
 
59826
  }
 
59827
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59828
  static const char *NodeId ();
 
59829
  /** Get the name of the node. Can be compared with NodeId(). */
 
59830
  const char *NodeName () const { return NodeId (); }
 
59831
  /** Get the number of sons. */
 
59832
  int Sons () const { return CTree::Sons (sons, 3); }
 
59833
  /** Get the n-th son.
 
59834
   *  \param n The index of the son.
 
59835
   *  \return The n-th son or NULL. */
 
59836
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
59837
  /** Set the namespace member declarations list. */
 
59838
  void Members (CTree *m) { AddSon (sons[2], m); }
 
59839
  /** Get the namespace member declarations list. */
 
59840
  CT_MembList *Members () const { return (CT_MembList*)sons[2]; }
 
59841
  /** Get the name of the namespace. */
 
59842
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
59843
  /** Get the semantic information about the namespace. */
 
59844
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
59845
  /** Replace a son.
 
59846
   *  \param old_son The son to replace.
 
59847
   *  \param new_son The new son. */
 
59848
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59849
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
59850
  }
 
59851
public:
 
59852
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
59853
  const char *__attr_name (unsigned i) const {
 
59854
    static const char *names[] = { "sons" }; return names[i];
 
59855
  }
 
59856
  const void *__attr (unsigned __i) const {
 
59857
    switch (__i) { case 0: return &sons; default: return 0; }
 
59858
  }
 
59859
#line 2828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59860
};
 
59861
 
 
59862
/** \class CT_NamespaceAliasDef CTree.h Puma/CTree.h
 
59863
 *  Tree node representing a namespace alias definition.
 
59864
 *  Example: \code namespace b = a; \endcode */
 
59865
 
 
59866
#line 59867 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59867
} // closed Puma
 
59868
class CCExprResolve;
 
59869
class CExprResolve;
 
59870
class WinIfExists;
 
59871
class WinImportHandler;
 
59872
class WinMacros;
 
59873
class WinAsm;
 
59874
class WinDeclSpecs;
 
59875
class WinMemberExplSpec;
 
59876
class WinTypeKeywords;
 
59877
class WinFriend;
 
59878
class ExtAC;
 
59879
class ExtACBuilderCoupling;
 
59880
class ExtACSyntaxCoupling;
 
59881
class ExtACTree;
 
59882
class ExtACKeywords;
 
59883
class ExtGnu;
 
59884
class PragmaOnceUnitState;
 
59885
class PragmaOnce;
 
59886
class CMatchSyntax;
 
59887
namespace Puma {
 
59888
 
 
59889
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59890
class CT_NamespaceAliasDef : public CT_Decl, public CSemObject {
 
59891
#line 59892 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59892
  friend class ::CCExprResolve;
 
59893
  friend class ::CExprResolve;
 
59894
  friend class ::WinIfExists;
 
59895
  friend class ::WinImportHandler;
 
59896
  friend class ::WinMacros;
 
59897
  friend class ::WinAsm;
 
59898
  friend class ::WinDeclSpecs;
 
59899
  friend class ::WinMemberExplSpec;
 
59900
  friend class ::WinTypeKeywords;
 
59901
  friend class ::WinFriend;
 
59902
  friend class ::ExtAC;
 
59903
  friend class ::ExtACBuilderCoupling;
 
59904
  friend class ::ExtACSyntaxCoupling;
 
59905
  friend class ::ExtACTree;
 
59906
  friend class ::ExtACKeywords;
 
59907
  friend class ::ExtGnu;
 
59908
  friend class ::PragmaOnceUnitState;
 
59909
  friend class ::PragmaOnce;
 
59910
  friend class ::CMatchSyntax;
 
59911
 
 
59912
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59913
 
 
59914
  CTree *sons[5]; // ns, alias, assign, name, semi_colon
 
59915
 
 
59916
public:
 
59917
  /** Constructor.
 
59918
   *  \param n The keyword 'namespace'.
 
59919
   *  \param a The name of the namespace alias.
 
59920
   *  \param as The assignment operator '='.
 
59921
   *  \param nm The name of the original namespace.
 
59922
   *  \param s The trailing semi-colon. */
 
59923
  CT_NamespaceAliasDef (CTree *n, CTree *a, CTree *as, CTree *nm, CTree *s) {
 
59924
    AddSon (sons[0], n); AddSon (sons[1], a); AddSon (sons[2], as); 
 
59925
    AddSon (sons[3], nm); AddSon (sons[4], s); 
 
59926
  }
 
59927
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59928
  static const char *NodeId ();
 
59929
  /** Get the name of the node. Can be compared with NodeId(). */
 
59930
  const char *NodeName () const { return NodeId (); }
 
59931
  /** Get the number of sons. */
 
59932
  int Sons () const { return 5; }
 
59933
  /** Get the n-th son.
 
59934
   *  \param n The index of the son.
 
59935
   *  \return The n-th son or NULL. */
 
59936
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
59937
  /** Get the name of the original namespace. */
 
59938
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[3]; }
 
59939
  /** Get the name of the namespace alias. */
 
59940
  CT_SimpleName *Alias () const { return (CT_SimpleName*)sons[1]; }
 
59941
  /** Get the semantic information about the namespace alias. */
 
59942
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
59943
  /** Replace a son.
 
59944
   *  \param old_son The son to replace.
 
59945
   *  \param new_son The new son. */
 
59946
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59947
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
59948
  }
 
59949
public:
 
59950
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
59951
  const char *__attr_name (unsigned i) const {
 
59952
    static const char *names[] = { "sons" }; return names[i];
 
59953
  }
 
59954
  const void *__attr (unsigned __i) const {
 
59955
    switch (__i) { case 0: return &sons; default: return 0; }
 
59956
  }
 
59957
#line 2869 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59958
};
 
59959
 
 
59960
/** \class CT_UsingDirective CTree.h Puma/CTree.h
 
59961
 *  Tree node representing a namespace using directive.
 
59962
 *  Example: \code using namespace std; \endcode */
 
59963
 
 
59964
#line 59965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59965
} // closed Puma
 
59966
class CCExprResolve;
 
59967
class CExprResolve;
 
59968
class WinIfExists;
 
59969
class WinImportHandler;
 
59970
class WinMacros;
 
59971
class WinAsm;
 
59972
class WinDeclSpecs;
 
59973
class WinMemberExplSpec;
 
59974
class WinTypeKeywords;
 
59975
class WinFriend;
 
59976
class ExtAC;
 
59977
class ExtACBuilderCoupling;
 
59978
class ExtACSyntaxCoupling;
 
59979
class ExtACTree;
 
59980
class ExtACKeywords;
 
59981
class ExtGnu;
 
59982
class PragmaOnceUnitState;
 
59983
class PragmaOnce;
 
59984
class CMatchSyntax;
 
59985
namespace Puma {
 
59986
 
 
59987
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59988
class CT_UsingDirective : public CT_Decl {
 
59989
#line 59990 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
59990
  friend class ::CCExprResolve;
 
59991
  friend class ::CExprResolve;
 
59992
  friend class ::WinIfExists;
 
59993
  friend class ::WinImportHandler;
 
59994
  friend class ::WinMacros;
 
59995
  friend class ::WinAsm;
 
59996
  friend class ::WinDeclSpecs;
 
59997
  friend class ::WinMemberExplSpec;
 
59998
  friend class ::WinTypeKeywords;
 
59999
  friend class ::WinFriend;
 
60000
  friend class ::ExtAC;
 
60001
  friend class ::ExtACBuilderCoupling;
 
60002
  friend class ::ExtACSyntaxCoupling;
 
60003
  friend class ::ExtACTree;
 
60004
  friend class ::ExtACKeywords;
 
60005
  friend class ::ExtGnu;
 
60006
  friend class ::PragmaOnceUnitState;
 
60007
  friend class ::PragmaOnce;
 
60008
  friend class ::CMatchSyntax;
 
60009
 
 
60010
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60011
 
 
60012
  CTree *sons[4]; // using, ns, name, semi_colon
 
60013
 
 
60014
public:
 
60015
  /** Constructor. 
 
60016
   *  \param u The keyword 'using'.
 
60017
   *  \param ns The keyword 'namespace'. 
 
60018
   *  \param n The name of the namespace.
 
60019
   *  \param s The trailing semi-colon. */
 
60020
  CT_UsingDirective (CTree *u, CTree *ns, CTree *n, CTree *s) {
 
60021
    AddSon (sons[0], u); AddSon (sons[1], ns); AddSon (sons[2], n); 
 
60022
    AddSon (sons[3], s); 
 
60023
  }
 
60024
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60025
  static const char *NodeId ();
 
60026
  /** Get the name of the node. Can be compared with NodeId(). */
 
60027
  const char *NodeName () const { return NodeId (); }
 
60028
  /** Get the number of sons. */
 
60029
  int Sons () const { return 4; }
 
60030
  /** Get the n-th son.
 
60031
   *  \param n The index of the son.
 
60032
   *  \return The n-th son or NULL. */
 
60033
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
60034
  /** Get the name of the namespace. */
 
60035
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
60036
  /** Replace a son.
 
60037
   *  \param old_son The son to replace.
 
60038
   *  \param new_son The new son. */
 
60039
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
60040
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
60041
  }
 
60042
public:
 
60043
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
60044
  const char *__attr_name (unsigned i) const {
 
60045
    static const char *names[] = { "sons" }; return names[i];
 
60046
  }
 
60047
  const void *__attr (unsigned __i) const {
 
60048
    switch (__i) { case 0: return &sons; default: return 0; }
 
60049
  }
 
60050
#line 2905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60051
};
 
60052
 
 
60053
/*****************************************************************************/
 
60054
/*                                                                           */
 
60055
/*                              Declarators                                  */
 
60056
/*                                                                           */
 
60057
/*****************************************************************************/
 
60058
 
 
60059
/** \class CT_Declarator CTree.h Puma/CTree.h
 
60060
 *  Base class for all tree nodes representing declarators. */
 
60061
 
 
60062
#line 60063 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60063
} // closed Puma
 
60064
class CCExprResolve;
 
60065
class CExprResolve;
 
60066
class WinIfExists;
 
60067
class WinImportHandler;
 
60068
class WinMacros;
 
60069
class WinAsm;
 
60070
class WinDeclSpecs;
 
60071
class WinMemberExplSpec;
 
60072
class WinTypeKeywords;
 
60073
class WinFriend;
 
60074
class ExtAC;
 
60075
class ExtACBuilderCoupling;
 
60076
class ExtACSyntaxCoupling;
 
60077
class ExtACTree;
 
60078
class ExtACKeywords;
 
60079
class ExtGnu;
 
60080
class PragmaOnceUnitState;
 
60081
class PragmaOnce;
 
60082
class CMatchSyntax;
 
60083
namespace Puma {
 
60084
 
 
60085
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60086
class CT_Declarator : public CTree {
 
60087
#line 60088 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60088
  friend class ::CCExprResolve;
 
60089
  friend class ::CExprResolve;
 
60090
  friend class ::WinIfExists;
 
60091
  friend class ::WinImportHandler;
 
60092
  friend class ::WinMacros;
 
60093
  friend class ::WinAsm;
 
60094
  friend class ::WinDeclSpecs;
 
60095
  friend class ::WinMemberExplSpec;
 
60096
  friend class ::WinTypeKeywords;
 
60097
  friend class ::WinFriend;
 
60098
  friend class ::ExtAC;
 
60099
  friend class ::ExtACBuilderCoupling;
 
60100
  friend class ::ExtACSyntaxCoupling;
 
60101
  friend class ::ExtACTree;
 
60102
  friend class ::ExtACKeywords;
 
60103
  friend class ::ExtGnu;
 
60104
  friend class ::PragmaOnceUnitState;
 
60105
  friend class ::PragmaOnce;
 
60106
  friend class ::CMatchSyntax;
 
60107
 
 
60108
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60109
 
 
60110
protected:
 
60111
  /** Constructor. */
 
60112
  CT_Declarator () {}
 
60113
 
 
60114
public:
 
60115
  /** Get the declarator. */
 
60116
  virtual CTree *Declarator () const = 0;
 
60117
  /** Get this. */
 
60118
  virtual CT_Declarator *IsDeclarator () { return this; }
 
60119
  /** Get the declared name. */
 
60120
  CT_SimpleName *Name ();
 
60121
  /** Get the declared name and set last_declarator to 
 
60122
   *  the declarator containing the name. 
 
60123
   *  \param last_declarator To be set to the declarator containing the name. */
 
60124
  CT_SimpleName *Name (CT_Declarator *&last_declarator);
 
60125
public:
 
60126
  typedef AC::TLE __AttrTypes;
 
60127
  const char *__attr_name (unsigned i) const { return 0; }
 
60128
  const void *__attr (unsigned __i) const { return 0; }
 
60129
#line 2931 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60130
};
 
60131
 
 
60132
/** \class CT_InitDeclarator CTree.h Puma/CTree.h
 
60133
 *  Tree node representing a declarator with initializer.
 
60134
 *  Example: \code int *i = 0; \endcode */
 
60135
 
 
60136
#line 60137 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60137
} // closed Puma
 
60138
class CCExprResolve;
 
60139
class CExprResolve;
 
60140
class WinIfExists;
 
60141
class WinImportHandler;
 
60142
class WinMacros;
 
60143
class WinAsm;
 
60144
class WinDeclSpecs;
 
60145
class WinMemberExplSpec;
 
60146
class WinTypeKeywords;
 
60147
class WinFriend;
 
60148
class ExtAC;
 
60149
class ExtACBuilderCoupling;
 
60150
class ExtACSyntaxCoupling;
 
60151
class ExtACTree;
 
60152
class ExtACKeywords;
 
60153
class ExtGnu;
 
60154
class PragmaOnceUnitState;
 
60155
class PragmaOnce;
 
60156
class CMatchSyntax;
 
60157
namespace Puma {
 
60158
 
 
60159
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60160
class CT_InitDeclarator : public CT_Declarator, public CSemObject {
 
60161
#line 60162 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60162
  friend class ::CCExprResolve;
 
60163
  friend class ::CExprResolve;
 
60164
  friend class ::WinIfExists;
 
60165
  friend class ::WinImportHandler;
 
60166
  friend class ::WinMacros;
 
60167
  friend class ::WinAsm;
 
60168
  friend class ::WinDeclSpecs;
 
60169
  friend class ::WinMemberExplSpec;
 
60170
  friend class ::WinTypeKeywords;
 
60171
  friend class ::WinFriend;
 
60172
  friend class ::ExtAC;
 
60173
  friend class ::ExtACBuilderCoupling;
 
60174
  friend class ::ExtACSyntaxCoupling;
 
60175
  friend class ::ExtACTree;
 
60176
  friend class ::ExtACKeywords;
 
60177
  friend class ::ExtGnu;
 
60178
  friend class ::PragmaOnceUnitState;
 
60179
  friend class ::PragmaOnce;
 
60180
  friend class ::CMatchSyntax;
 
60181
 
 
60182
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60183
 
 
60184
  CTree *sons[3]; // declarator, ext, init
 
60185
  CTree *obj_decl;
 
60186
 
 
60187
public:
 
60188
  /** Constructor.
 
60189
   *  \param d The declarator.
 
60190
   *  \param e Optional extension list.
 
60191
   *  \param i The initializer. */
 
60192
  CT_InitDeclarator (CTree *d, CTree *e = 0, CTree *i = 0) {
 
60193
    AddSon (sons[0], d); AddSon (sons[1], e); AddSon (sons[2], i);
 
60194
    AddSon (obj_decl, 0); 
 
60195
  }
 
60196
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60197
  static const char *NodeId ();
 
60198
  /** Get the name of the node. Can be compared with NodeId(). */
 
60199
  const char *NodeName () const { return NodeId (); }
 
60200
  /** Get the number of sons. */
 
60201
  int Sons () const { return CTree::Sons (sons, 3); }
 
60202
  /** Get the n-th son.
 
60203
   *  \param n The index of the son.
 
60204
   *  \return The n-th son or NULL. */
 
60205
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
60206
  /** Get the declarator. */
 
60207
  CTree *Declarator () const { return sons[0]; }
 
60208
  /** Get the extensions list. */
 
60209
  CTree *Extension () const { return sons[1]; }
 
60210
  /** Get the initializer. */
 
60211
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
60212
  /** Get the semantic information about the declared object. */
 
60213
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
60214
  /** Get the object declaration node containing the declarator. */
 
60215
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
60216
  /** Set the initializer. */
 
60217
  void Initializer (CTree* i) { AddSon (sons[2], i); }
 
60218
  /** Set the extensions list. */
 
60219
  void Extension (CTree* e) { AddSon (sons[1], e); }
 
60220
  /** Set the object declaration node containing the declarator. 
 
60221
   *  \param od The object declaration node. */
 
60222
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
60223
  /** Replace a son.
 
60224
   *  \param old_son The son to replace.
 
60225
   *  \param new_son The new son. */
 
60226
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
60227
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
60228
  }
 
60229
public:
 
60230
  typedef AC::TL<Puma::CTree * [3],AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
60231
  const char *__attr_name (unsigned i) const {
 
60232
    static const char *names[] = { "sons", "obj_decl" }; return names[i];
 
60233
  }
 
60234
  const void *__attr (unsigned __i) const {
 
60235
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; default: return 0; }
 
60236
  }
 
60237
#line 2982 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60238
};
 
60239
 
 
60240
/** \class CT_BracedDeclarator CTree.h Puma/CTree.h
 
60241
 *  Tree node representing a braced declarator.
 
60242
 *  Example: \code int (i); \endcode */
 
60243
 
 
60244
#line 60245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60245
} // closed Puma
 
60246
class CCExprResolve;
 
60247
class CExprResolve;
 
60248
class WinIfExists;
 
60249
class WinImportHandler;
 
60250
class WinMacros;
 
60251
class WinAsm;
 
60252
class WinDeclSpecs;
 
60253
class WinMemberExplSpec;
 
60254
class WinTypeKeywords;
 
60255
class WinFriend;
 
60256
class ExtAC;
 
60257
class ExtACBuilderCoupling;
 
60258
class ExtACSyntaxCoupling;
 
60259
class ExtACTree;
 
60260
class ExtACKeywords;
 
60261
class ExtGnu;
 
60262
class PragmaOnceUnitState;
 
60263
class PragmaOnce;
 
60264
class CMatchSyntax;
 
60265
namespace Puma {
 
60266
 
 
60267
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60268
class CT_BracedDeclarator : public CT_Declarator {
 
60269
#line 60270 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60270
  friend class ::CCExprResolve;
 
60271
  friend class ::CExprResolve;
 
60272
  friend class ::WinIfExists;
 
60273
  friend class ::WinImportHandler;
 
60274
  friend class ::WinMacros;
 
60275
  friend class ::WinAsm;
 
60276
  friend class ::WinDeclSpecs;
 
60277
  friend class ::WinMemberExplSpec;
 
60278
  friend class ::WinTypeKeywords;
 
60279
  friend class ::WinFriend;
 
60280
  friend class ::ExtAC;
 
60281
  friend class ::ExtACBuilderCoupling;
 
60282
  friend class ::ExtACSyntaxCoupling;
 
60283
  friend class ::ExtACTree;
 
60284
  friend class ::ExtACKeywords;
 
60285
  friend class ::ExtGnu;
 
60286
  friend class ::PragmaOnceUnitState;
 
60287
  friend class ::PragmaOnce;
 
60288
  friend class ::CMatchSyntax;
 
60289
 
 
60290
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60291
 
 
60292
  CTree *sons[4]; // open, win_specs, declarator, close
 
60293
 
 
60294
public:
 
60295
  /** Constructor.
 
60296
   *  \param o Left parenthesis around the declarator.
 
60297
   *  \param d The declarator.
 
60298
   *  \param c Right parenthesis around the declarator. */
 
60299
  CT_BracedDeclarator (CTree *o, CTree *d, CTree *c) {
 
60300
    AddSon (sons[0], o); AddSon (sons[1], 0); 
 
60301
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
60302
  }
 
60303
  /** Constructor.
 
60304
   *  \param o Left parenthesis around the declarator.
 
60305
   *  \param ws Declaration specifiers.
 
60306
   *  \param d The declarator.
 
60307
   *  \param c Right parenthesis around the declarator. */
 
60308
  CT_BracedDeclarator (CTree *o, CTree *ws, CTree *d, CTree *c) {
 
60309
    AddSon (sons[0], o); AddSon (sons[1], ws); 
 
60310
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
60311
  }
 
60312
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60313
  static const char *NodeId ();
 
60314
  /** Get the name of the node. Can be compared with NodeId(). */
 
60315
  const char *NodeName () const { return NodeId (); }
 
60316
  /** Get the number of sons. */
 
60317
  int Sons () const { return CTree::Sons (sons, 4); }
 
60318
  /** Get the n-th son.
 
60319
   *  \param n The index of the son.
 
60320
   *  \return The n-th son or NULL. */
 
60321
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
60322
  /** Get the declarator. */
 
60323
  CTree *Declarator () const { return sons[2]; }
 
60324
  /** Replace a son.
 
60325
   *  \param old_son The son to replace.
 
60326
   *  \param new_son The new son. */
 
60327
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
60328
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
60329
  }
 
60330
public:
 
60331
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
60332
  const char *__attr_name (unsigned i) const {
 
60333
    static const char *names[] = { "sons" }; return names[i];
 
60334
  }
 
60335
  const void *__attr (unsigned __i) const {
 
60336
    switch (__i) { case 0: return &sons; default: return 0; }
 
60337
  }
 
60338
#line 3026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60339
};
 
60340
 
 
60341
/** \class CT_ArrayDelimiter CTree.h Puma/CTree.h
 
60342
 *  Tree node representing an array delimiter.
 
60343
 *  Example: \code [10] \endcode or \code [*] \endcode */
 
60344
 
 
60345
#line 60346 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60346
} // closed Puma
 
60347
class CCExprResolve;
 
60348
class CExprResolve;
 
60349
class WinIfExists;
 
60350
class WinImportHandler;
 
60351
class WinMacros;
 
60352
class WinAsm;
 
60353
class WinDeclSpecs;
 
60354
class WinMemberExplSpec;
 
60355
class WinTypeKeywords;
 
60356
class WinFriend;
 
60357
class ExtAC;
 
60358
class ExtACBuilderCoupling;
 
60359
class ExtACSyntaxCoupling;
 
60360
class ExtACTree;
 
60361
class ExtACKeywords;
 
60362
class ExtGnu;
 
60363
class PragmaOnceUnitState;
 
60364
class PragmaOnce;
 
60365
class CMatchSyntax;
 
60366
namespace Puma {
 
60367
 
 
60368
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60369
class CT_ArrayDelimiter : public CTree {
 
60370
#line 60371 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60371
  friend class ::CCExprResolve;
 
60372
  friend class ::CExprResolve;
 
60373
  friend class ::WinIfExists;
 
60374
  friend class ::WinImportHandler;
 
60375
  friend class ::WinMacros;
 
60376
  friend class ::WinAsm;
 
60377
  friend class ::WinDeclSpecs;
 
60378
  friend class ::WinMemberExplSpec;
 
60379
  friend class ::WinTypeKeywords;
 
60380
  friend class ::WinFriend;
 
60381
  friend class ::ExtAC;
 
60382
  friend class ::ExtACBuilderCoupling;
 
60383
  friend class ::ExtACSyntaxCoupling;
 
60384
  friend class ::ExtACTree;
 
60385
  friend class ::ExtACKeywords;
 
60386
  friend class ::ExtGnu;
 
60387
  friend class ::PragmaOnceUnitState;
 
60388
  friend class ::PragmaOnce;
 
60389
  friend class ::CMatchSyntax;
 
60390
 
 
60391
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60392
 
 
60393
  CTree *sons[4]; // star, static, quals, expr
 
60394
  bool pos0;
 
60395
 
 
60396
public:
 
60397
  /** Constructor.
 
60398
   *  \param m The operator '*'.
 
60399
   *  \param s The keyword 'static'.
 
60400
   *  \param q The const/volatile qualifier sequence. 
 
60401
   *  \param e The array size expression. 
 
60402
   *  \param p Position of keyword 'static', true means before the
 
60403
   *           qualifier sequence and false means behind it. */
 
60404
  CT_ArrayDelimiter (CTree *m, CTree *s, CTree *q, CTree *e, bool p = false) {
 
60405
    AddSon (sons[0], m); AddSon (sons[1], s); 
 
60406
    AddSon (sons[2], q); AddSon (sons[3], e); pos0 = p;
 
60407
  }
 
60408
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60409
  static const char *NodeId ();
 
60410
  /** Get the name of the node. Can be compared with NodeId(). */
 
60411
  const char *NodeName () const { return NodeId (); }
 
60412
  /** Get the number of sons. */
 
60413
  int Sons () const { return CTree::Sons (sons, 4); }
 
60414
  /** Get the n-th son.
 
60415
   *  \param n The index of the son.
 
60416
   *  \return The n-th son or NULL. */
 
60417
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
60418
  /** Get the operator '*'. */
 
60419
  CT_Token *Star () const { return (CT_Token*)sons[0]; }
 
60420
  /** Get the keyword 'static'. */
 
60421
  CT_Token *Static () const { return (CT_Token*)sons[pos0?2:1]; }
 
60422
  /** Get the const/volatile qualifier sequence. */
 
60423
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[pos0?1:2]; }
 
60424
  /** Get the array size expression. */
 
60425
  CTree *Expr () const { return sons[3]; }
 
60426
  /** Replace a son.
 
60427
   *  \param old_son The son to replace.
 
60428
   *  \param new_son The new son. */
 
60429
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
60430
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
60431
  }
 
60432
public:
 
60433
  typedef AC::TL<Puma::CTree * [4],AC::TL<bool,AC::TLE > > __AttrTypes;
 
60434
  const char *__attr_name (unsigned i) const {
 
60435
    static const char *names[] = { "sons", "pos0" }; return names[i];
 
60436
  }
 
60437
  const void *__attr (unsigned __i) const {
 
60438
    switch (__i) { case 0: return &sons; case 1: return &pos0; default: return 0; }
 
60439
  }
 
60440
#line 3071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60441
};
 
60442
 
 
60443
/** \class CT_ArrayDeclarator CTree.h Puma/CTree.h
 
60444
 *  Tree node representing an array declarator.
 
60445
 *  Example: \code a[10] \endcode */
 
60446
 
 
60447
#line 60448 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60448
} // closed Puma
 
60449
class CCExprResolve;
 
60450
class CExprResolve;
 
60451
class WinIfExists;
 
60452
class WinImportHandler;
 
60453
class WinMacros;
 
60454
class WinAsm;
 
60455
class WinDeclSpecs;
 
60456
class WinMemberExplSpec;
 
60457
class WinTypeKeywords;
 
60458
class WinFriend;
 
60459
class ExtAC;
 
60460
class ExtACBuilderCoupling;
 
60461
class ExtACSyntaxCoupling;
 
60462
class ExtACTree;
 
60463
class ExtACKeywords;
 
60464
class ExtGnu;
 
60465
class PragmaOnceUnitState;
 
60466
class PragmaOnce;
 
60467
class CMatchSyntax;
 
60468
namespace Puma {
 
60469
 
 
60470
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60471
class CT_ArrayDeclarator : public CT_Declarator, public CSemValue {
 
60472
#line 60473 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60473
  friend class ::CCExprResolve;
 
60474
  friend class ::CExprResolve;
 
60475
  friend class ::WinIfExists;
 
60476
  friend class ::WinImportHandler;
 
60477
  friend class ::WinMacros;
 
60478
  friend class ::WinAsm;
 
60479
  friend class ::WinDeclSpecs;
 
60480
  friend class ::WinMemberExplSpec;
 
60481
  friend class ::WinTypeKeywords;
 
60482
  friend class ::WinFriend;
 
60483
  friend class ::ExtAC;
 
60484
  friend class ::ExtACBuilderCoupling;
 
60485
  friend class ::ExtACSyntaxCoupling;
 
60486
  friend class ::ExtACTree;
 
60487
  friend class ::ExtACKeywords;
 
60488
  friend class ::ExtGnu;
 
60489
  friend class ::PragmaOnceUnitState;
 
60490
  friend class ::PragmaOnce;
 
60491
  friend class ::CMatchSyntax;
 
60492
 
 
60493
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60494
 
 
60495
  CTree *sons[4]; // declarator, open, delim, close
 
60496
 
 
60497
public:
 
60498
  /** Constructor.
 
60499
   *  \param d The array declarator.
 
60500
   *  \param o Left bracket around the delimiter.
 
60501
   *  \param ad The array delimiter.
 
60502
   *  \param c Right bracket around the delimiter. */
 
60503
  CT_ArrayDeclarator (CTree *d, CTree *o, CTree *ad, CTree *c) {
 
60504
    AddSon (sons[0], d); AddSon (sons[1], o); 
 
60505
    AddSon (sons[2], ad); AddSon (sons[3], c); 
 
60506
  }
 
60507
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60508
  static const char *NodeId ();
 
60509
  /** Get the name of the node. Can be compared with NodeId(). */
 
60510
  const char *NodeName () const { return NodeId (); }
 
60511
  /** Get the number of sons. */
 
60512
  int Sons () const { return 4; }
 
60513
  /** Get the n-th son.
 
60514
   *  \param n The index of the son.
 
60515
   *  \return The n-th son or NULL. */
 
60516
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
60517
  /** Get the array declarator. */
 
60518
  CTree *Declarator () const { return sons[0]; }
 
60519
  /** Get the array delimiter. */
 
60520
  CT_ArrayDelimiter *Delimiter () const 
 
60521
   { return (CT_ArrayDelimiter*)sons[2]; }
 
60522
  /** Replace a son.
 
60523
   *  \param old_son The son to replace.
 
60524
   *  \param new_son The new son. */
 
60525
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
60526
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
60527
  }
 
60528
  /** Get the semantic information for the type of the declared array. */
 
60529
  CTypeInfo *Type () const { return type; }
 
60530
  /** Get the semantic information for the value of the declared array. */
 
60531
  CExprValue *Value () const { return value; }
 
60532
  /** Get the semantic information object. */
 
60533
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
60534
public:
 
60535
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
60536
  const char *__attr_name (unsigned i) const {
 
60537
    static const char *names[] = { "sons" }; return names[i];
 
60538
  }
 
60539
  const void *__attr (unsigned __i) const {
 
60540
    switch (__i) { case 0: return &sons; default: return 0; }
 
60541
  }
 
60542
#line 3116 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60543
};
 
60544
 
 
60545
/** \class CT_FctDeclarator CTree.h Puma/CTree.h
 
60546
 *  Tree node representing a function declarator.
 
60547
 *  Example: \code f(int a) const \endcode */
 
60548
 
 
60549
#line 60550 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60550
} // closed Puma
 
60551
class CCExprResolve;
 
60552
class CExprResolve;
 
60553
class WinIfExists;
 
60554
class WinImportHandler;
 
60555
class WinMacros;
 
60556
class WinAsm;
 
60557
class WinDeclSpecs;
 
60558
class WinMemberExplSpec;
 
60559
class WinTypeKeywords;
 
60560
class WinFriend;
 
60561
class ExtAC;
 
60562
class ExtACBuilderCoupling;
 
60563
class ExtACSyntaxCoupling;
 
60564
class ExtACTree;
 
60565
class ExtACKeywords;
 
60566
class ExtGnu;
 
60567
class PragmaOnceUnitState;
 
60568
class PragmaOnce;
 
60569
class CMatchSyntax;
 
60570
namespace Puma {
 
60571
 
 
60572
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60573
class CT_FctDeclarator : public CT_Declarator {
 
60574
#line 60575 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60575
  friend class ::CCExprResolve;
 
60576
  friend class ::CExprResolve;
 
60577
  friend class ::WinIfExists;
 
60578
  friend class ::WinImportHandler;
 
60579
  friend class ::WinMacros;
 
60580
  friend class ::WinAsm;
 
60581
  friend class ::WinDeclSpecs;
 
60582
  friend class ::WinMemberExplSpec;
 
60583
  friend class ::WinTypeKeywords;
 
60584
  friend class ::WinFriend;
 
60585
  friend class ::ExtAC;
 
60586
  friend class ::ExtACBuilderCoupling;
 
60587
  friend class ::ExtACSyntaxCoupling;
 
60588
  friend class ::ExtACTree;
 
60589
  friend class ::ExtACKeywords;
 
60590
  friend class ::ExtGnu;
 
60591
  friend class ::PragmaOnceUnitState;
 
60592
  friend class ::PragmaOnce;
 
60593
  friend class ::CMatchSyntax;
 
60594
 
 
60595
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60596
 
 
60597
  CTree *sons[4]; // declarator, args, cv_quals, exception_specs
 
60598
 
 
60599
public:
 
60600
  /** Constructor.
 
60601
   *  \param d The function declarator.
 
60602
   *  \param args The function parameter list.
 
60603
   *  \param cv The function qualifiers.
 
60604
   *  \param es The exception specifier. */
 
60605
  CT_FctDeclarator (CTree *d, CTree *args, CTree *cv, CTree *es) {
 
60606
    AddSon (sons[0], d); AddSon (sons[1], args); 
 
60607
    AddSon (sons[2], cv); AddSon (sons[3], es); 
 
60608
  }
 
60609
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60610
  static const char *NodeId ();
 
60611
  /** Get the name of the node. Can be compared with NodeId(). */
 
60612
  const char *NodeName () const { return NodeId (); }
 
60613
  /** Get the number of sons. */
 
60614
  int Sons () const { return CTree::Sons (sons, 4); }
 
60615
  /** Get the n-th son.
 
60616
   *  \param n The index of the son.
 
60617
   *  \return The n-th son or NULL. */
 
60618
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
60619
  /** Get the function declarator. */
 
60620
  CTree *Declarator () const { return sons[0]; }
 
60621
  /** Get the function parameter list. */
 
60622
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
60623
  /** Get the function qualifier list. */
 
60624
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[2]; }
 
60625
  /** Get the exception specifier. */
 
60626
  CT_ExceptionSpec *ExceptionSpecs () const { return (CT_ExceptionSpec*)sons[3]; }
 
60627
  /** Replace a son.
 
60628
   *  \param old_son The son to replace.
 
60629
   *  \param new_son The new son. */
 
60630
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
60631
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
60632
  }
 
60633
public:
 
60634
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
60635
  const char *__attr_name (unsigned i) const {
 
60636
    static const char *names[] = { "sons" }; return names[i];
 
60637
  }
 
60638
  const void *__attr (unsigned __i) const {
 
60639
    switch (__i) { case 0: return &sons; default: return 0; }
 
60640
  }
 
60641
#line 3158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60642
};
 
60643
 
 
60644
/** \class CT_RefDeclarator CTree.h Puma/CTree.h
 
60645
 *  Tree node representing a reference declarator.
 
60646
 *  Example: \code &a \endcode */
 
60647
 
 
60648
#line 60649 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60649
} // closed Puma
 
60650
class CCExprResolve;
 
60651
class CExprResolve;
 
60652
class WinIfExists;
 
60653
class WinImportHandler;
 
60654
class WinMacros;
 
60655
class WinAsm;
 
60656
class WinDeclSpecs;
 
60657
class WinMemberExplSpec;
 
60658
class WinTypeKeywords;
 
60659
class WinFriend;
 
60660
class ExtAC;
 
60661
class ExtACBuilderCoupling;
 
60662
class ExtACSyntaxCoupling;
 
60663
class ExtACTree;
 
60664
class ExtACKeywords;
 
60665
class ExtGnu;
 
60666
class PragmaOnceUnitState;
 
60667
class PragmaOnce;
 
60668
class CMatchSyntax;
 
60669
namespace Puma {
 
60670
 
 
60671
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60672
class CT_RefDeclarator : public CT_Declarator {
 
60673
#line 60674 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60674
  friend class ::CCExprResolve;
 
60675
  friend class ::CExprResolve;
 
60676
  friend class ::WinIfExists;
 
60677
  friend class ::WinImportHandler;
 
60678
  friend class ::WinMacros;
 
60679
  friend class ::WinAsm;
 
60680
  friend class ::WinDeclSpecs;
 
60681
  friend class ::WinMemberExplSpec;
 
60682
  friend class ::WinTypeKeywords;
 
60683
  friend class ::WinFriend;
 
60684
  friend class ::ExtAC;
 
60685
  friend class ::ExtACBuilderCoupling;
 
60686
  friend class ::ExtACSyntaxCoupling;
 
60687
  friend class ::ExtACTree;
 
60688
  friend class ::ExtACKeywords;
 
60689
  friend class ::ExtGnu;
 
60690
  friend class ::PragmaOnceUnitState;
 
60691
  friend class ::PragmaOnce;
 
60692
  friend class ::CMatchSyntax;
 
60693
 
 
60694
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60695
 
 
60696
  CTree *sons[2]; // ref, declarator
 
60697
 
 
60698
public:
 
60699
  /** Constructor.
 
60700
   *  \param r The reference operator '&'.
 
60701
   *  \param d The declarator. */
 
60702
  CT_RefDeclarator (CTree *r, CTree *d) { AddSon (sons[0], r); AddSon (sons[1], d); }
 
60703
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60704
  static const char *NodeId ();
 
60705
  /** Get the name of the node. Can be compared with NodeId(). */
 
60706
  const char *NodeName () const { return NodeId (); }
 
60707
  /** Get the number of sons. */
 
60708
  int Sons () const { return 2; }
 
60709
  /** Get the n-th son.
 
60710
   *  \param n The index of the son.
 
60711
   *  \return The n-th son or NULL. */
 
60712
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
60713
  /** Get the declarator. */
 
60714
  CTree *Declarator () const { return sons[1]; }
 
60715
  /** Replace a son.
 
60716
   *  \param old_son The son to replace.
 
60717
   *  \param new_son The new son. */
 
60718
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
60719
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
60720
  }
 
60721
public:
 
60722
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
60723
  const char *__attr_name (unsigned i) const {
 
60724
    static const char *names[] = { "sons" }; return names[i];
 
60725
  }
 
60726
  const void *__attr (unsigned __i) const {
 
60727
    switch (__i) { case 0: return &sons; default: return 0; }
 
60728
  }
 
60729
#line 3189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60730
};
 
60731
 
 
60732
/** \class CT_PtrDeclarator CTree.h Puma/CTree.h
 
60733
 *  Tree node representing a pointer declarator.
 
60734
 *  Example: \code *a \endcode */
 
60735
 
 
60736
#line 60737 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60737
} // closed Puma
 
60738
class CCExprResolve;
 
60739
class CExprResolve;
 
60740
class WinIfExists;
 
60741
class WinImportHandler;
 
60742
class WinMacros;
 
60743
class WinAsm;
 
60744
class WinDeclSpecs;
 
60745
class WinMemberExplSpec;
 
60746
class WinTypeKeywords;
 
60747
class WinFriend;
 
60748
class ExtAC;
 
60749
class ExtACBuilderCoupling;
 
60750
class ExtACSyntaxCoupling;
 
60751
class ExtACTree;
 
60752
class ExtACKeywords;
 
60753
class ExtGnu;
 
60754
class PragmaOnceUnitState;
 
60755
class PragmaOnce;
 
60756
class CMatchSyntax;
 
60757
namespace Puma {
 
60758
 
 
60759
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60760
class CT_PtrDeclarator : public CT_Declarator {
 
60761
#line 60762 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60762
  friend class ::CCExprResolve;
 
60763
  friend class ::CExprResolve;
 
60764
  friend class ::WinIfExists;
 
60765
  friend class ::WinImportHandler;
 
60766
  friend class ::WinMacros;
 
60767
  friend class ::WinAsm;
 
60768
  friend class ::WinDeclSpecs;
 
60769
  friend class ::WinMemberExplSpec;
 
60770
  friend class ::WinTypeKeywords;
 
60771
  friend class ::WinFriend;
 
60772
  friend class ::ExtAC;
 
60773
  friend class ::ExtACBuilderCoupling;
 
60774
  friend class ::ExtACSyntaxCoupling;
 
60775
  friend class ::ExtACTree;
 
60776
  friend class ::ExtACKeywords;
 
60777
  friend class ::ExtGnu;
 
60778
  friend class ::PragmaOnceUnitState;
 
60779
  friend class ::PragmaOnce;
 
60780
  friend class ::CMatchSyntax;
 
60781
 
 
60782
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60783
 
 
60784
  CTree *sons[3]; // ptr, cv_quals, declarator
 
60785
 
 
60786
public:
 
60787
  /** Constructor.
 
60788
   *  \param p The pointer operator '*'.
 
60789
   *  \param c The const/volatile pointer qualifier sequence.
 
60790
   *  \param d The declarator. */
 
60791
  CT_PtrDeclarator (CTree *p, CTree *c, CTree *d) {
 
60792
    AddSon (sons[0], p); AddSon (sons[1], c); AddSon (sons[2], d); 
 
60793
  }
 
60794
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60795
  static const char *NodeId ();
 
60796
  /** Get the name of the node. Can be compared with NodeId(). */
 
60797
  const char *NodeName () const { return NodeId (); }
 
60798
  /** Get the number of sons. */
 
60799
  int Sons () const { return CTree::Sons (sons, 3); }
 
60800
  /** Get the n-th son.
 
60801
   *  \param n The index of the son.
 
60802
   *  \return The n-th son or NULL. */
 
60803
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
60804
  /** Get the declarator. */
 
60805
  CTree *Declarator () const { return sons[2]; }
 
60806
  /** Get the const/volatile qualifier sequence. */
 
60807
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[1]; }
 
60808
  /** Replace a son.
 
60809
   *  \param old_son The son to replace.
 
60810
   *  \param new_son The new son. */
 
60811
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
60812
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
60813
  }
 
60814
public:
 
60815
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
60816
  const char *__attr_name (unsigned i) const {
 
60817
    static const char *names[] = { "sons" }; return names[i];
 
60818
  }
 
60819
  const void *__attr (unsigned __i) const {
 
60820
    switch (__i) { case 0: return &sons; default: return 0; }
 
60821
  }
 
60822
#line 3225 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60823
};
 
60824
 
 
60825
/** \class CT_MembPtrDeclarator CTree.h Puma/CTree.h
 
60826
 *  Tree node representing a member pointer declarator.
 
60827
 *  Example: \code *X::a \endcode */
 
60828
 
 
60829
#line 60830 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60830
} // closed Puma
 
60831
class CCExprResolve;
 
60832
class CExprResolve;
 
60833
class WinIfExists;
 
60834
class WinImportHandler;
 
60835
class WinMacros;
 
60836
class WinAsm;
 
60837
class WinDeclSpecs;
 
60838
class WinMemberExplSpec;
 
60839
class WinTypeKeywords;
 
60840
class WinFriend;
 
60841
class ExtAC;
 
60842
class ExtACBuilderCoupling;
 
60843
class ExtACSyntaxCoupling;
 
60844
class ExtACTree;
 
60845
class ExtACKeywords;
 
60846
class ExtGnu;
 
60847
class PragmaOnceUnitState;
 
60848
class PragmaOnce;
 
60849
class CMatchSyntax;
 
60850
namespace Puma {
 
60851
 
 
60852
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60853
class CT_MembPtrDeclarator : public CT_Declarator {
 
60854
#line 60855 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60855
  friend class ::CCExprResolve;
 
60856
  friend class ::CExprResolve;
 
60857
  friend class ::WinIfExists;
 
60858
  friend class ::WinImportHandler;
 
60859
  friend class ::WinMacros;
 
60860
  friend class ::WinAsm;
 
60861
  friend class ::WinDeclSpecs;
 
60862
  friend class ::WinMemberExplSpec;
 
60863
  friend class ::WinTypeKeywords;
 
60864
  friend class ::WinFriend;
 
60865
  friend class ::ExtAC;
 
60866
  friend class ::ExtACBuilderCoupling;
 
60867
  friend class ::ExtACSyntaxCoupling;
 
60868
  friend class ::ExtACTree;
 
60869
  friend class ::ExtACKeywords;
 
60870
  friend class ::ExtGnu;
 
60871
  friend class ::PragmaOnceUnitState;
 
60872
  friend class ::PragmaOnce;
 
60873
  friend class ::CMatchSyntax;
 
60874
 
 
60875
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60876
 
 
60877
  CTree *sons[5]; // class, colon, ptr, cv_quals, declarator
 
60878
 
 
60879
public:
 
60880
  /** Constructor.
 
60881
   *  \param c The class name.
 
60882
   *  \param cc The scope operator '::'.
 
60883
   *  \param p The name of the pointer.
 
60884
   *  \param q The const/volatile pointer qualifier sequence.
 
60885
   *  \param d The declarator. */
 
60886
  CT_MembPtrDeclarator (CTree *c, CTree *cc, CTree *p, CTree *q, CTree *d) {
 
60887
    AddSon (sons[0], c); AddSon (sons[1], cc); AddSon (sons[2], p); 
 
60888
    AddSon (sons[3], q); AddSon (sons[4], d); 
 
60889
  }
 
60890
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60891
  static const char *NodeId ();
 
60892
  /** Get the name of the node. Can be compared with NodeId(). */
 
60893
  const char *NodeName () const { return NodeId (); }
 
60894
  /** Get the number of sons. */
 
60895
  int Sons () const { return CTree::Sons (sons, 5); }
 
60896
  /** Get the n-th son.
 
60897
   *  \param n The index of the son.
 
60898
   *  \return The n-th son or NULL. */
 
60899
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
60900
  /** Get the name of the declared pointer. */
 
60901
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
60902
  /** Get the declarator. */
 
60903
  CTree *Declarator () const { return sons[4]; }
 
60904
  /** Get the const/volatile qualifier sequence. */
 
60905
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[3]; }
 
60906
  /** Replace a son.
 
60907
   *  \param old_son The son to replace.
 
60908
   *  \param new_son The new son. */
 
60909
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
60910
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
60911
  }
 
60912
public:
 
60913
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
60914
  const char *__attr_name (unsigned i) const {
 
60915
    static const char *names[] = { "sons" }; return names[i];
 
60916
  }
 
60917
  const void *__attr (unsigned __i) const {
 
60918
    switch (__i) { case 0: return &sons; default: return 0; }
 
60919
  }
 
60920
#line 3266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60921
};
 
60922
 
 
60923
/** \class CT_BitFieldDeclarator CTree.h Puma/CTree.h
 
60924
 *  Tree node representing a bit-field declarator.
 
60925
 *  Example: \code a : 2 \endcode */
 
60926
 
 
60927
#line 60928 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60928
} // closed Puma
 
60929
class CCExprResolve;
 
60930
class CExprResolve;
 
60931
class WinIfExists;
 
60932
class WinImportHandler;
 
60933
class WinMacros;
 
60934
class WinAsm;
 
60935
class WinDeclSpecs;
 
60936
class WinMemberExplSpec;
 
60937
class WinTypeKeywords;
 
60938
class WinFriend;
 
60939
class ExtAC;
 
60940
class ExtACBuilderCoupling;
 
60941
class ExtACSyntaxCoupling;
 
60942
class ExtACTree;
 
60943
class ExtACKeywords;
 
60944
class ExtGnu;
 
60945
class PragmaOnceUnitState;
 
60946
class PragmaOnce;
 
60947
class CMatchSyntax;
 
60948
namespace Puma {
 
60949
 
 
60950
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60951
class CT_BitFieldDeclarator : public CT_Declarator, public CSemObject {
 
60952
#line 60953 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
60953
  friend class ::CCExprResolve;
 
60954
  friend class ::CExprResolve;
 
60955
  friend class ::WinIfExists;
 
60956
  friend class ::WinImportHandler;
 
60957
  friend class ::WinMacros;
 
60958
  friend class ::WinAsm;
 
60959
  friend class ::WinDeclSpecs;
 
60960
  friend class ::WinMemberExplSpec;
 
60961
  friend class ::WinTypeKeywords;
 
60962
  friend class ::WinFriend;
 
60963
  friend class ::ExtAC;
 
60964
  friend class ::ExtACBuilderCoupling;
 
60965
  friend class ::ExtACSyntaxCoupling;
 
60966
  friend class ::ExtACTree;
 
60967
  friend class ::ExtACKeywords;
 
60968
  friend class ::ExtGnu;
 
60969
  friend class ::PragmaOnceUnitState;
 
60970
  friend class ::PragmaOnce;
 
60971
  friend class ::CMatchSyntax;
 
60972
 
 
60973
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
60974
 
 
60975
  CTree *sons[3]; // declarator, colon, expr
 
60976
 
 
60977
public:
 
60978
  /** Constructor.
 
60979
   *  \param d The declarator.
 
60980
   *  \param c The colon between the declarator and the bit count.
 
60981
   *  \param e The expression specifying the number of bits. */
 
60982
  CT_BitFieldDeclarator (CTree *d, CTree *c, CTree *e = 0) {
 
60983
    AddSon (sons[0], d); AddSon (sons[1], c); AddSon (sons[2], e); 
 
60984
  }
 
60985
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
60986
  static const char *NodeId ();
 
60987
  /** Get the name of the node. Can be compared with NodeId(). */
 
60988
  const char *NodeName () const { return NodeId (); }
 
60989
  /** Get the number of sons. */
 
60990
  int Sons () const { return CTree::Sons (sons, 3); }
 
60991
  /** Get the n-th son.
 
60992
   *  \param n The index of the son.
 
60993
   *  \return The n-th son or NULL. */
 
60994
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
60995
  /** Get the declarator. */
 
60996
  CTree *Declarator () const { return sons[0]; }
 
60997
  /** Get the expression specifying the number of bits. */
 
60998
  CTree *Expr () const { return sons[2]; }
 
60999
  /** Set the expression specifying the number of bits. */
 
61000
  void FieldSize (CTree *s) { AddSon (sons[2], s); }
 
61001
  /** Get the semantic information about the declared bit-field. */
 
61002
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
61003
  /** Replace a son.
 
61004
   *  \param old_son The son to replace.
 
61005
   *  \param new_son The new son. */
 
61006
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
61007
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
61008
  }
 
61009
public:
 
61010
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
61011
  const char *__attr_name (unsigned i) const {
 
61012
    static const char *names[] = { "sons" }; return names[i];
 
61013
  }
 
61014
  const void *__attr (unsigned __i) const {
 
61015
    switch (__i) { case 0: return &sons; default: return 0; }
 
61016
  }
 
61017
#line 3306 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61018
};
 
61019
 
 
61020
/*****************************************************************************/
 
61021
/*                                                                           */
 
61022
/*                              Statements                                   */
 
61023
/*                                                                           */
 
61024
/*****************************************************************************/
 
61025
 
 
61026
/** \class CT_Statement CTree.h Puma/CTree.h
 
61027
 *  Base class for all tree nodes representing statements. */
 
61028
 
 
61029
#line 61030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61030
} // closed Puma
 
61031
class CCExprResolve;
 
61032
class CExprResolve;
 
61033
class WinIfExists;
 
61034
class WinImportHandler;
 
61035
class WinMacros;
 
61036
class WinAsm;
 
61037
class WinDeclSpecs;
 
61038
class WinMemberExplSpec;
 
61039
class WinTypeKeywords;
 
61040
class WinFriend;
 
61041
class ExtAC;
 
61042
class ExtACBuilderCoupling;
 
61043
class ExtACSyntaxCoupling;
 
61044
class ExtACTree;
 
61045
class ExtACKeywords;
 
61046
class ExtGnu;
 
61047
class PragmaOnceUnitState;
 
61048
class PragmaOnce;
 
61049
class CMatchSyntax;
 
61050
namespace Puma {
 
61051
 
 
61052
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61053
class CT_Statement : public CTree {
 
61054
#line 61055 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61055
  friend class ::CCExprResolve;
 
61056
  friend class ::CExprResolve;
 
61057
  friend class ::WinIfExists;
 
61058
  friend class ::WinImportHandler;
 
61059
  friend class ::WinMacros;
 
61060
  friend class ::WinAsm;
 
61061
  friend class ::WinDeclSpecs;
 
61062
  friend class ::WinMemberExplSpec;
 
61063
  friend class ::WinTypeKeywords;
 
61064
  friend class ::WinFriend;
 
61065
  friend class ::ExtAC;
 
61066
  friend class ::ExtACBuilderCoupling;
 
61067
  friend class ::ExtACSyntaxCoupling;
 
61068
  friend class ::ExtACTree;
 
61069
  friend class ::ExtACKeywords;
 
61070
  friend class ::ExtGnu;
 
61071
  friend class ::PragmaOnceUnitState;
 
61072
  friend class ::PragmaOnce;
 
61073
  friend class ::CMatchSyntax;
 
61074
 
 
61075
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61076
 
 
61077
protected:
 
61078
  /** Constructor. */
 
61079
  CT_Statement () {}
 
61080
  /** Get this. */
 
61081
  virtual CT_Statement *IsStatement () { return this; }
 
61082
public:
 
61083
  typedef AC::TLE __AttrTypes;
 
61084
  const char *__attr_name (unsigned i) const { return 0; }
 
61085
  const void *__attr (unsigned __i) const { return 0; }
 
61086
#line 3322 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61087
};
 
61088
 
 
61089
/** \class CT_LabelStmt CTree.h Puma/CTree.h
 
61090
 *  Tree node representing a label statement.
 
61091
 *  Example: \code incr_a: a++; \endcode */
 
61092
 
 
61093
#line 61094 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61094
} // closed Puma
 
61095
class CCExprResolve;
 
61096
class CExprResolve;
 
61097
class WinIfExists;
 
61098
class WinImportHandler;
 
61099
class WinMacros;
 
61100
class WinAsm;
 
61101
class WinDeclSpecs;
 
61102
class WinMemberExplSpec;
 
61103
class WinTypeKeywords;
 
61104
class WinFriend;
 
61105
class ExtAC;
 
61106
class ExtACBuilderCoupling;
 
61107
class ExtACSyntaxCoupling;
 
61108
class ExtACTree;
 
61109
class ExtACKeywords;
 
61110
class ExtGnu;
 
61111
class PragmaOnceUnitState;
 
61112
class PragmaOnce;
 
61113
class CMatchSyntax;
 
61114
namespace Puma {
 
61115
 
 
61116
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61117
class CT_LabelStmt : public CT_Statement {
 
61118
#line 61119 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61119
  friend class ::CCExprResolve;
 
61120
  friend class ::CExprResolve;
 
61121
  friend class ::WinIfExists;
 
61122
  friend class ::WinImportHandler;
 
61123
  friend class ::WinMacros;
 
61124
  friend class ::WinAsm;
 
61125
  friend class ::WinDeclSpecs;
 
61126
  friend class ::WinMemberExplSpec;
 
61127
  friend class ::WinTypeKeywords;
 
61128
  friend class ::WinFriend;
 
61129
  friend class ::ExtAC;
 
61130
  friend class ::ExtACBuilderCoupling;
 
61131
  friend class ::ExtACSyntaxCoupling;
 
61132
  friend class ::ExtACTree;
 
61133
  friend class ::ExtACKeywords;
 
61134
  friend class ::ExtGnu;
 
61135
  friend class ::PragmaOnceUnitState;
 
61136
  friend class ::PragmaOnce;
 
61137
  friend class ::CMatchSyntax;
 
61138
 
 
61139
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61140
 
 
61141
  CTree *sons[3]; // id, colon, stmt
 
61142
 
 
61143
public:
 
61144
  /** Constructor.
 
61145
   *  \param id The name of the label.
 
61146
   *  \param c The colon behind the label.
 
61147
   *  \param stmt The statement following the label. */
 
61148
  CT_LabelStmt (CTree *id, CTree *c, CTree *stmt) {
 
61149
    AddSon (sons[0], id); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
61150
  }
 
61151
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61152
  static const char *NodeId ();
 
61153
  /** Get the name of the node. Can be compared with NodeId(). */
 
61154
  const char *NodeName () const { return NodeId (); }
 
61155
  /** Get the number of sons. */
 
61156
  int Sons () const { return 3; }
 
61157
  /** Get the n-th son.
 
61158
   *  \param n The index of the son.
 
61159
   *  \return The n-th son or NULL. */
 
61160
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
61161
  /** Get the statement. */
 
61162
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
61163
  /** Get the name of the label. */
 
61164
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[0]; }
 
61165
  /** Replace a son.
 
61166
   *  \param old_son The son to replace.
 
61167
   *  \param new_son The new son. */
 
61168
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
61169
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
61170
  }
 
61171
public:
 
61172
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
61173
  const char *__attr_name (unsigned i) const {
 
61174
    static const char *names[] = { "sons" }; return names[i];
 
61175
  }
 
61176
  const void *__attr (unsigned __i) const {
 
61177
    switch (__i) { case 0: return &sons; default: return 0; }
 
61178
  }
 
61179
#line 3358 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61180
};
 
61181
 
 
61182
/** \class CT_DefaultStmt CTree.h Puma/CTree.h
 
61183
 *  Tree node representing a default statement of a switch statement.
 
61184
 *  Example: \code default: break; \endcode */
 
61185
 
 
61186
#line 61187 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61187
} // closed Puma
 
61188
class CCExprResolve;
 
61189
class CExprResolve;
 
61190
class WinIfExists;
 
61191
class WinImportHandler;
 
61192
class WinMacros;
 
61193
class WinAsm;
 
61194
class WinDeclSpecs;
 
61195
class WinMemberExplSpec;
 
61196
class WinTypeKeywords;
 
61197
class WinFriend;
 
61198
class ExtAC;
 
61199
class ExtACBuilderCoupling;
 
61200
class ExtACSyntaxCoupling;
 
61201
class ExtACTree;
 
61202
class ExtACKeywords;
 
61203
class ExtGnu;
 
61204
class PragmaOnceUnitState;
 
61205
class PragmaOnce;
 
61206
class CMatchSyntax;
 
61207
namespace Puma {
 
61208
 
 
61209
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61210
class CT_DefaultStmt : public CT_Statement {
 
61211
#line 61212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61212
  friend class ::CCExprResolve;
 
61213
  friend class ::CExprResolve;
 
61214
  friend class ::WinIfExists;
 
61215
  friend class ::WinImportHandler;
 
61216
  friend class ::WinMacros;
 
61217
  friend class ::WinAsm;
 
61218
  friend class ::WinDeclSpecs;
 
61219
  friend class ::WinMemberExplSpec;
 
61220
  friend class ::WinTypeKeywords;
 
61221
  friend class ::WinFriend;
 
61222
  friend class ::ExtAC;
 
61223
  friend class ::ExtACBuilderCoupling;
 
61224
  friend class ::ExtACSyntaxCoupling;
 
61225
  friend class ::ExtACTree;
 
61226
  friend class ::ExtACKeywords;
 
61227
  friend class ::ExtGnu;
 
61228
  friend class ::PragmaOnceUnitState;
 
61229
  friend class ::PragmaOnce;
 
61230
  friend class ::CMatchSyntax;
 
61231
 
 
61232
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61233
 
 
61234
  CTree *sons[3]; // keyword, colon, stmt
 
61235
 
 
61236
public:
 
61237
  /** Constructor.
 
61238
   *  \param kw The keyword 'default'.
 
61239
   *  \param c The colon behind the keyword.
 
61240
   *  \param stmt The statement of the default case. */
 
61241
  CT_DefaultStmt (CTree *kw, CTree *c, CTree *stmt) {
 
61242
    AddSon (sons[0], kw); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
61243
  }
 
61244
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61245
  static const char *NodeId ();
 
61246
  /** Get the name of the node. Can be compared with NodeId(). */
 
61247
  const char *NodeName () const { return NodeId (); }
 
61248
  /** Get the number of sons. */
 
61249
  int Sons () const { return 3; }
 
61250
  /** Get the n-th son.
 
61251
   *  \param n The index of the son.
 
61252
   *  \return The n-th son or NULL. */
 
61253
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
61254
  /** Get the statement. */
 
61255
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
61256
  /** Replace a son.
 
61257
   *  \param old_son The son to replace.
 
61258
   *  \param new_son The new son. */
 
61259
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
61260
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
61261
  }
 
61262
public:
 
61263
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
61264
  const char *__attr_name (unsigned i) const {
 
61265
    static const char *names[] = { "sons" }; return names[i];
 
61266
  }
 
61267
  const void *__attr (unsigned __i) const {
 
61268
    switch (__i) { case 0: return &sons; default: return 0; }
 
61269
  }
 
61270
#line 3392 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61271
};
 
61272
 
 
61273
/** \class CT_TryStmt CTree.h Puma/CTree.h
 
61274
 *  Tree node representing a try-catch statement.
 
61275
 *  Example: \code try { f(); } catch (...) {} \endcode */
 
61276
 
 
61277
#line 61278 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61278
} // closed Puma
 
61279
class CCExprResolve;
 
61280
class CExprResolve;
 
61281
class WinIfExists;
 
61282
class WinImportHandler;
 
61283
class WinMacros;
 
61284
class WinAsm;
 
61285
class WinDeclSpecs;
 
61286
class WinMemberExplSpec;
 
61287
class WinTypeKeywords;
 
61288
class WinFriend;
 
61289
class ExtAC;
 
61290
class ExtACBuilderCoupling;
 
61291
class ExtACSyntaxCoupling;
 
61292
class ExtACTree;
 
61293
class ExtACKeywords;
 
61294
class ExtGnu;
 
61295
class PragmaOnceUnitState;
 
61296
class PragmaOnce;
 
61297
class CMatchSyntax;
 
61298
namespace Puma {
 
61299
 
 
61300
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61301
class CT_TryStmt : public CT_Statement {
 
61302
#line 61303 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61303
  friend class ::CCExprResolve;
 
61304
  friend class ::CExprResolve;
 
61305
  friend class ::WinIfExists;
 
61306
  friend class ::WinImportHandler;
 
61307
  friend class ::WinMacros;
 
61308
  friend class ::WinAsm;
 
61309
  friend class ::WinDeclSpecs;
 
61310
  friend class ::WinMemberExplSpec;
 
61311
  friend class ::WinTypeKeywords;
 
61312
  friend class ::WinFriend;
 
61313
  friend class ::ExtAC;
 
61314
  friend class ::ExtACBuilderCoupling;
 
61315
  friend class ::ExtACSyntaxCoupling;
 
61316
  friend class ::ExtACTree;
 
61317
  friend class ::ExtACKeywords;
 
61318
  friend class ::ExtGnu;
 
61319
  friend class ::PragmaOnceUnitState;
 
61320
  friend class ::PragmaOnce;
 
61321
  friend class ::CMatchSyntax;
 
61322
 
 
61323
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61324
 
 
61325
  CTree *sons[3]; // try, stmt, handlers
 
61326
 
 
61327
public:
 
61328
  /** Constructor.
 
61329
   *  \param t The keyword 'try'.
 
61330
   *  \param s The statement enclosed in the try-catch block.
 
61331
   *  \param h The exception handler sequence. */
 
61332
  CT_TryStmt (CTree *t, CTree *s, CTree *h) {
 
61333
    AddSon (sons[0], t); AddSon (sons[1], s); AddSon (sons[2], h); 
 
61334
  }
 
61335
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61336
  static const char *NodeId ();
 
61337
  /** Get the name of the node. Can be compared with NodeId(). */
 
61338
  const char *NodeName () const { return NodeId (); }
 
61339
  /** Get the number of sons. */
 
61340
  int Sons () const { return 3; }
 
61341
  /** Get the n-th son.
 
61342
   *  \param n The index of the son.
 
61343
   *  \return The n-th son or NULL. */
 
61344
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
61345
  /** Get the enclosed statement. */
 
61346
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
61347
  /** Get the exception handler sequence. */
 
61348
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[2]; }
 
61349
  /** Replace a son.
 
61350
   *  \param old_son The son to replace.
 
61351
   *  \param new_son The new son. */
 
61352
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
61353
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
61354
  }
 
61355
public:
 
61356
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
61357
  const char *__attr_name (unsigned i) const {
 
61358
    static const char *names[] = { "sons" }; return names[i];
 
61359
  }
 
61360
  const void *__attr (unsigned __i) const {
 
61361
    switch (__i) { case 0: return &sons; default: return 0; }
 
61362
  }
 
61363
#line 3428 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61364
};
 
61365
 
 
61366
/** \class CT_CaseStmt CTree.h Puma/CTree.h
 
61367
 *  Tree node representing a case statement.
 
61368
 *  Example: \code case 42: a=42; \endcode */
 
61369
 
 
61370
#line 61371 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61371
} // closed Puma
 
61372
class CCExprResolve;
 
61373
class CExprResolve;
 
61374
class WinIfExists;
 
61375
class WinImportHandler;
 
61376
class WinMacros;
 
61377
class WinAsm;
 
61378
class WinDeclSpecs;
 
61379
class WinMemberExplSpec;
 
61380
class WinTypeKeywords;
 
61381
class WinFriend;
 
61382
class ExtAC;
 
61383
class ExtACBuilderCoupling;
 
61384
class ExtACSyntaxCoupling;
 
61385
class ExtACTree;
 
61386
class ExtACKeywords;
 
61387
class ExtGnu;
 
61388
class PragmaOnceUnitState;
 
61389
class PragmaOnce;
 
61390
class CMatchSyntax;
 
61391
namespace Puma {
 
61392
 
 
61393
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61394
class CT_CaseStmt : public CT_Statement {
 
61395
#line 61396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61396
  friend class ::CCExprResolve;
 
61397
  friend class ::CExprResolve;
 
61398
  friend class ::WinIfExists;
 
61399
  friend class ::WinImportHandler;
 
61400
  friend class ::WinMacros;
 
61401
  friend class ::WinAsm;
 
61402
  friend class ::WinDeclSpecs;
 
61403
  friend class ::WinMemberExplSpec;
 
61404
  friend class ::WinTypeKeywords;
 
61405
  friend class ::WinFriend;
 
61406
  friend class ::ExtAC;
 
61407
  friend class ::ExtACBuilderCoupling;
 
61408
  friend class ::ExtACSyntaxCoupling;
 
61409
  friend class ::ExtACTree;
 
61410
  friend class ::ExtACKeywords;
 
61411
  friend class ::ExtGnu;
 
61412
  friend class ::PragmaOnceUnitState;
 
61413
  friend class ::PragmaOnce;
 
61414
  friend class ::CMatchSyntax;
 
61415
 
 
61416
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61417
 
 
61418
  CTree *sons[4]; // keyword, expr, colon, stmt
 
61419
 
 
61420
public:
 
61421
  /** Constructor.
 
61422
   *  \param kw The keyword 'case'.
 
61423
   *  \param expr The constant expression specifying the case value.
 
61424
   *  \param c The colon.
 
61425
   *  \param stmt The statement of the case. */
 
61426
  CT_CaseStmt (CTree *kw, CTree *expr, CTree *c, CTree *stmt) {
 
61427
    AddSon (sons[0], kw); AddSon (sons[1], expr); 
 
61428
    AddSon (sons[2], c); AddSon (sons[3], stmt); 
 
61429
  }
 
61430
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61431
  static const char *NodeId ();
 
61432
  /** Get the name of the node. Can be compared with NodeId(). */
 
61433
  const char *NodeName () const { return NodeId (); }
 
61434
  /** Get the number of sons. */
 
61435
  int Sons () const { return 4; }
 
61436
  /** Get the n-th son.
 
61437
   *  \param n The index of the son.
 
61438
   *  \return The n-th son or NULL. */
 
61439
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
61440
  /** Get the statement. */
 
61441
  CT_Statement *Statement () const { return (CT_Statement*)sons[3]; }
 
61442
  /** Get the expression specifying the case value. */
 
61443
  CTree *Expr () const { return sons[1]; }
 
61444
  /** Replace a son.
 
61445
   *  \param old_son The son to replace.
 
61446
   *  \param new_son The new son. */
 
61447
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
61448
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
61449
  }
 
61450
public:
 
61451
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
61452
  const char *__attr_name (unsigned i) const {
 
61453
    static const char *names[] = { "sons" }; return names[i];
 
61454
  }
 
61455
  const void *__attr (unsigned __i) const {
 
61456
    switch (__i) { case 0: return &sons; default: return 0; }
 
61457
  }
 
61458
#line 3466 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61459
};
 
61460
 
 
61461
/** \class CT_ExprStmt CTree.h Puma/CTree.h
 
61462
 *  Tree node representing an expression statement.
 
61463
 *  Example: \code a+b; \endcode */
 
61464
 
 
61465
#line 61466 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61466
} // closed Puma
 
61467
class CCExprResolve;
 
61468
class CExprResolve;
 
61469
class WinIfExists;
 
61470
class WinImportHandler;
 
61471
class WinMacros;
 
61472
class WinAsm;
 
61473
class WinDeclSpecs;
 
61474
class WinMemberExplSpec;
 
61475
class WinTypeKeywords;
 
61476
class WinFriend;
 
61477
class ExtAC;
 
61478
class ExtACBuilderCoupling;
 
61479
class ExtACSyntaxCoupling;
 
61480
class ExtACTree;
 
61481
class ExtACKeywords;
 
61482
class ExtGnu;
 
61483
class PragmaOnceUnitState;
 
61484
class PragmaOnce;
 
61485
class CMatchSyntax;
 
61486
namespace Puma {
 
61487
 
 
61488
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61489
class CT_ExprStmt : public CT_Statement {
 
61490
#line 61491 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61491
  friend class ::CCExprResolve;
 
61492
  friend class ::CExprResolve;
 
61493
  friend class ::WinIfExists;
 
61494
  friend class ::WinImportHandler;
 
61495
  friend class ::WinMacros;
 
61496
  friend class ::WinAsm;
 
61497
  friend class ::WinDeclSpecs;
 
61498
  friend class ::WinMemberExplSpec;
 
61499
  friend class ::WinTypeKeywords;
 
61500
  friend class ::WinFriend;
 
61501
  friend class ::ExtAC;
 
61502
  friend class ::ExtACBuilderCoupling;
 
61503
  friend class ::ExtACSyntaxCoupling;
 
61504
  friend class ::ExtACTree;
 
61505
  friend class ::ExtACKeywords;
 
61506
  friend class ::ExtGnu;
 
61507
  friend class ::PragmaOnceUnitState;
 
61508
  friend class ::PragmaOnce;
 
61509
  friend class ::CMatchSyntax;
 
61510
 
 
61511
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61512
 
 
61513
  CTree *sons[2]; // expr, semi_colon
 
61514
 
 
61515
public:
 
61516
  /** Constructor.
 
61517
   *  \param expr The expression.
 
61518
   *  \param sc The trailing semi-colon. */
 
61519
  CT_ExprStmt (CTree *expr, CTree *sc) { AddSon (sons[0], expr); AddSon (sons[1], sc); }
 
61520
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61521
  static const char *NodeId ();
 
61522
  /** Get the name of the node. Can be compared with NodeId(). */
 
61523
  const char *NodeName () const { return NodeId (); }
 
61524
  /** Get the number of sons. */
 
61525
  int Sons () const { return CTree::Sons (sons, 2); }
 
61526
  /** Get the n-th son.
 
61527
   *  \param n The index of the son.
 
61528
   *  \return The n-th son or NULL. */
 
61529
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
61530
  /** Get the expression. */
 
61531
  CTree *Expr () const { return sons[0]; }
 
61532
  /** Replace a son.
 
61533
   *  \param old_son The son to replace.
 
61534
   *  \param new_son The new son. */
 
61535
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
61536
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
61537
  }
 
61538
public:
 
61539
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
61540
  const char *__attr_name (unsigned i) const {
 
61541
    static const char *names[] = { "sons" }; return names[i];
 
61542
  }
 
61543
  const void *__attr (unsigned __i) const {
 
61544
    switch (__i) { case 0: return &sons; default: return 0; }
 
61545
  }
 
61546
#line 3497 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61547
};
 
61548
 
 
61549
/** \class CT_DeclStmt CTree.h Puma/CTree.h
 
61550
 *  Tree node representing a declaration statement.
 
61551
 *  Example: \code int i = 0; \endcode */
 
61552
 
 
61553
#line 61554 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61554
} // closed Puma
 
61555
class CCExprResolve;
 
61556
class CExprResolve;
 
61557
class WinIfExists;
 
61558
class WinImportHandler;
 
61559
class WinMacros;
 
61560
class WinAsm;
 
61561
class WinDeclSpecs;
 
61562
class WinMemberExplSpec;
 
61563
class WinTypeKeywords;
 
61564
class WinFriend;
 
61565
class ExtAC;
 
61566
class ExtACBuilderCoupling;
 
61567
class ExtACSyntaxCoupling;
 
61568
class ExtACTree;
 
61569
class ExtACKeywords;
 
61570
class ExtGnu;
 
61571
class PragmaOnceUnitState;
 
61572
class PragmaOnce;
 
61573
class CMatchSyntax;
 
61574
namespace Puma {
 
61575
 
 
61576
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61577
class CT_DeclStmt : public CT_Statement {
 
61578
#line 61579 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61579
  friend class ::CCExprResolve;
 
61580
  friend class ::CExprResolve;
 
61581
  friend class ::WinIfExists;
 
61582
  friend class ::WinImportHandler;
 
61583
  friend class ::WinMacros;
 
61584
  friend class ::WinAsm;
 
61585
  friend class ::WinDeclSpecs;
 
61586
  friend class ::WinMemberExplSpec;
 
61587
  friend class ::WinTypeKeywords;
 
61588
  friend class ::WinFriend;
 
61589
  friend class ::ExtAC;
 
61590
  friend class ::ExtACBuilderCoupling;
 
61591
  friend class ::ExtACSyntaxCoupling;
 
61592
  friend class ::ExtACTree;
 
61593
  friend class ::ExtACKeywords;
 
61594
  friend class ::ExtGnu;
 
61595
  friend class ::PragmaOnceUnitState;
 
61596
  friend class ::PragmaOnce;
 
61597
  friend class ::CMatchSyntax;
 
61598
 
 
61599
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61600
 
 
61601
  CTree *_decl;
 
61602
 
 
61603
public:
 
61604
  /** Constructor.
 
61605
   *  \param decl The declaration. */
 
61606
  CT_DeclStmt (CTree *decl) { AddSon (_decl, decl); }
 
61607
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61608
  static const char *NodeId ();
 
61609
  /** Get the name of the node. Can be compared with NodeId(). */
 
61610
  const char *NodeName () const { return NodeId (); }
 
61611
  /** Get the number of sons. */
 
61612
  int Sons () const { return 1; }
 
61613
  /** Get the n-th son.
 
61614
   *  \param n The index of the son.
 
61615
   *  \return The n-th son or NULL. */
 
61616
  CTree *Son (int n) const { return n == 0 ? _decl : (CTree*)0; }
 
61617
  /** Replace a son.
 
61618
   *  \param old_son The son to replace.
 
61619
   *  \param new_son The new son. */
 
61620
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
61621
   { CTree::ReplaceSon (_decl, old_son, new_son); }
 
61622
public:
 
61623
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
61624
  const char *__attr_name (unsigned i) const {
 
61625
    static const char *names[] = { "_decl" }; return names[i];
 
61626
  }
 
61627
  const void *__attr (unsigned __i) const {
 
61628
    switch (__i) { case 0: return &_decl; default: return 0; }
 
61629
  }
 
61630
#line 3524 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61631
};
 
61632
 
 
61633
/** \class CT_SwitchStmt CTree.h Puma/CTree.h
 
61634
 *  Tree node representing a switch statement.
 
61635
 *  Example: \code switch(a) { case 0: a++; } \endcode */
 
61636
 
 
61637
#line 61638 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61638
} // closed Puma
 
61639
class CCExprResolve;
 
61640
class CExprResolve;
 
61641
class WinIfExists;
 
61642
class WinImportHandler;
 
61643
class WinMacros;
 
61644
class WinAsm;
 
61645
class WinDeclSpecs;
 
61646
class WinMemberExplSpec;
 
61647
class WinTypeKeywords;
 
61648
class WinFriend;
 
61649
class ExtAC;
 
61650
class ExtACBuilderCoupling;
 
61651
class ExtACSyntaxCoupling;
 
61652
class ExtACTree;
 
61653
class ExtACKeywords;
 
61654
class ExtGnu;
 
61655
class PragmaOnceUnitState;
 
61656
class PragmaOnce;
 
61657
class CMatchSyntax;
 
61658
namespace Puma {
 
61659
 
 
61660
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61661
class CT_SwitchStmt : public CT_Statement, public CSemScope {
 
61662
#line 61663 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61663
  friend class ::CCExprResolve;
 
61664
  friend class ::CExprResolve;
 
61665
  friend class ::WinIfExists;
 
61666
  friend class ::WinImportHandler;
 
61667
  friend class ::WinMacros;
 
61668
  friend class ::WinAsm;
 
61669
  friend class ::WinDeclSpecs;
 
61670
  friend class ::WinMemberExplSpec;
 
61671
  friend class ::WinTypeKeywords;
 
61672
  friend class ::WinFriend;
 
61673
  friend class ::ExtAC;
 
61674
  friend class ::ExtACBuilderCoupling;
 
61675
  friend class ::ExtACSyntaxCoupling;
 
61676
  friend class ::ExtACTree;
 
61677
  friend class ::ExtACKeywords;
 
61678
  friend class ::ExtGnu;
 
61679
  friend class ::PragmaOnceUnitState;
 
61680
  friend class ::PragmaOnce;
 
61681
  friend class ::CMatchSyntax;
 
61682
 
 
61683
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61684
 
 
61685
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
61686
 
 
61687
public:
 
61688
  /** Constructor.
 
61689
   *  \param kw The keyword 'switch'.
 
61690
   *  \param o Left parenthesis before the condition.
 
61691
   *  \param cond The switch-expression. 
 
61692
   *  \param c Right parenthesis behind the condition. 
 
61693
   *  \param stmt The cases of the switch-statement. */
 
61694
  CT_SwitchStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
61695
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
61696
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
61697
  }
 
61698
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61699
  static const char *NodeId ();
 
61700
  /** Get the name of the node. Can be compared with NodeId(). */
 
61701
  const char *NodeName () const { return NodeId (); }
 
61702
  /** Get the number of sons. */
 
61703
  int Sons () const { return 5; }
 
61704
  /** Get the n-th son.
 
61705
   *  \param n The index of the son.
 
61706
   *  \return The n-th son or NULL. */
 
61707
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
61708
  /** Get the cases. */
 
61709
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
61710
  /** Get the switch-expression. */
 
61711
  CTree *Condition () const { return sons[2]; }
 
61712
  /** Replace a son.
 
61713
   *  \param old_son The son to replace.
 
61714
   *  \param new_son The new son. */
 
61715
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
61716
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
61717
  }
 
61718
  /** Get the scope opened by the switch-statement. */
 
61719
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
61720
public:
 
61721
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
61722
  const char *__attr_name (unsigned i) const {
 
61723
    static const char *names[] = { "sons" }; return names[i];
 
61724
  }
 
61725
  const void *__attr (unsigned __i) const {
 
61726
    switch (__i) { case 0: return &sons; default: return 0; }
 
61727
  }
 
61728
#line 3565 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61729
};
 
61730
 
 
61731
/** \class CT_IfStmt CTree.h Puma/CTree.h
 
61732
 *  Tree node representing a if-statement.
 
61733
 *  Example: \code if(a==0) a++; \endcode */
 
61734
 
 
61735
#line 61736 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61736
} // closed Puma
 
61737
class CCExprResolve;
 
61738
class CExprResolve;
 
61739
class WinIfExists;
 
61740
class WinImportHandler;
 
61741
class WinMacros;
 
61742
class WinAsm;
 
61743
class WinDeclSpecs;
 
61744
class WinMemberExplSpec;
 
61745
class WinTypeKeywords;
 
61746
class WinFriend;
 
61747
class ExtAC;
 
61748
class ExtACBuilderCoupling;
 
61749
class ExtACSyntaxCoupling;
 
61750
class ExtACTree;
 
61751
class ExtACKeywords;
 
61752
class ExtGnu;
 
61753
class PragmaOnceUnitState;
 
61754
class PragmaOnce;
 
61755
class CMatchSyntax;
 
61756
namespace Puma {
 
61757
 
 
61758
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61759
class CT_IfStmt : public CT_Statement, public CSemScope {
 
61760
#line 61761 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61761
  friend class ::CCExprResolve;
 
61762
  friend class ::CExprResolve;
 
61763
  friend class ::WinIfExists;
 
61764
  friend class ::WinImportHandler;
 
61765
  friend class ::WinMacros;
 
61766
  friend class ::WinAsm;
 
61767
  friend class ::WinDeclSpecs;
 
61768
  friend class ::WinMemberExplSpec;
 
61769
  friend class ::WinTypeKeywords;
 
61770
  friend class ::WinFriend;
 
61771
  friend class ::ExtAC;
 
61772
  friend class ::ExtACBuilderCoupling;
 
61773
  friend class ::ExtACSyntaxCoupling;
 
61774
  friend class ::ExtACTree;
 
61775
  friend class ::ExtACKeywords;
 
61776
  friend class ::ExtGnu;
 
61777
  friend class ::PragmaOnceUnitState;
 
61778
  friend class ::PragmaOnce;
 
61779
  friend class ::CMatchSyntax;
 
61780
 
 
61781
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61782
 
 
61783
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
61784
 
 
61785
public:
 
61786
  /** Constructor.
 
61787
   *  \param kw The keyword 'if'.
 
61788
   *  \param o Left parenthesis before the condition.
 
61789
   *  \param cond The condition.
 
61790
   *  \param c Right parenthesis behind the condition.
 
61791
   *  \param stmt The controlled statement. */
 
61792
  CT_IfStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
61793
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
61794
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
61795
  }
 
61796
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61797
  static const char *NodeId ();
 
61798
  /** Get the name of the node. Can be compared with NodeId(). */
 
61799
  const char *NodeName () const { return NodeId (); }
 
61800
  /** Get the number of sons. */
 
61801
  int Sons () const { return 5; }
 
61802
  /** Get the n-th son.
 
61803
   *  \param n The index of the son.
 
61804
   *  \return The n-th son or NULL. */
 
61805
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
61806
  /** Get the controlled statement. */
 
61807
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
61808
  /** Get the condition. */
 
61809
  CTree *Condition () const { return sons[2]; }
 
61810
  /** Replace a son.
 
61811
   *  \param old_son The son to replace.
 
61812
   *  \param new_son The new son. */
 
61813
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
61814
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
61815
  }
 
61816
  /** Get the scope opened by the if-statement. */
 
61817
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
61818
public:
 
61819
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
61820
  const char *__attr_name (unsigned i) const {
 
61821
    static const char *names[] = { "sons" }; return names[i];
 
61822
  }
 
61823
  const void *__attr (unsigned __i) const {
 
61824
    switch (__i) { case 0: return &sons; default: return 0; }
 
61825
  }
 
61826
#line 3606 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61827
};
 
61828
 
 
61829
/** \class CT_IfElseStmt CTree.h Puma/CTree.h
 
61830
 *  Tree node representing a if-else-statement.
 
61831
 *  Example: \code if(a==0) a++; else a=0; \endcode */
 
61832
 
 
61833
#line 61834 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61834
} // closed Puma
 
61835
class CCExprResolve;
 
61836
class CExprResolve;
 
61837
class WinIfExists;
 
61838
class WinImportHandler;
 
61839
class WinMacros;
 
61840
class WinAsm;
 
61841
class WinDeclSpecs;
 
61842
class WinMemberExplSpec;
 
61843
class WinTypeKeywords;
 
61844
class WinFriend;
 
61845
class ExtAC;
 
61846
class ExtACBuilderCoupling;
 
61847
class ExtACSyntaxCoupling;
 
61848
class ExtACTree;
 
61849
class ExtACKeywords;
 
61850
class ExtGnu;
 
61851
class PragmaOnceUnitState;
 
61852
class PragmaOnce;
 
61853
class CMatchSyntax;
 
61854
namespace Puma {
 
61855
 
 
61856
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61857
class CT_IfElseStmt : public CT_Statement, public CSemScope {
 
61858
#line 61859 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61859
  friend class ::CCExprResolve;
 
61860
  friend class ::CExprResolve;
 
61861
  friend class ::WinIfExists;
 
61862
  friend class ::WinImportHandler;
 
61863
  friend class ::WinMacros;
 
61864
  friend class ::WinAsm;
 
61865
  friend class ::WinDeclSpecs;
 
61866
  friend class ::WinMemberExplSpec;
 
61867
  friend class ::WinTypeKeywords;
 
61868
  friend class ::WinFriend;
 
61869
  friend class ::ExtAC;
 
61870
  friend class ::ExtACBuilderCoupling;
 
61871
  friend class ::ExtACSyntaxCoupling;
 
61872
  friend class ::ExtACTree;
 
61873
  friend class ::ExtACKeywords;
 
61874
  friend class ::ExtGnu;
 
61875
  friend class ::PragmaOnceUnitState;
 
61876
  friend class ::PragmaOnce;
 
61877
  friend class ::CMatchSyntax;
 
61878
 
 
61879
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61880
 
 
61881
  CTree *sons[7]; // if, open, cond, close, if_stmt, else, else_stmt
 
61882
 
 
61883
public:
 
61884
  /** Constructor.
 
61885
   *  \param i The keyword 'if'.
 
61886
   *  \param o Left parenthesis before the condition.
 
61887
   *  \param cond The condition.
 
61888
   *  \param c Right parenthesis behind the condition.
 
61889
   *  \param is The statement controlled by the if-branch.
 
61890
   *  \param e The keyword 'else'.
 
61891
   *  \param es The statement controlled by the else-branch. */
 
61892
  CT_IfElseStmt (CTree *i, CTree *o, CTree *cond, CTree *c, 
 
61893
                 CTree *is, CTree *e, CTree *es) {
 
61894
    AddSon (sons[0], i); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
61895
    AddSon (sons[3], c); AddSon (sons[4], is); AddSon (sons[5], e); 
 
61896
    AddSon (sons[6], es); 
 
61897
  }
 
61898
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61899
  static const char *NodeId ();
 
61900
  /** Get the name of the node. Can be compared with NodeId(). */
 
61901
  const char *NodeName () const { return NodeId (); }
 
61902
  /** Get the number of sons. */
 
61903
  int Sons () const { return 7; }
 
61904
  /** Get the n-th son.
 
61905
   *  \param n The index of the son.
 
61906
   *  \return The n-th son or NULL. */
 
61907
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
61908
  /** Get the condition. */
 
61909
  CTree *Condition () const { return sons[2]; }
 
61910
  /** Get the statement controlled by the if-branch. */
 
61911
  CT_Statement *IfPart () const { return (CT_Statement*)sons[4]; }
 
61912
  /** Get the statement controlled by the else-branch. */
 
61913
  CT_Statement *ElsePart () const { return (CT_Statement*)sons[6]; }
 
61914
  /** Replace a son.
 
61915
   *  \param old_son The son to replace.
 
61916
   *  \param new_son The new son. */
 
61917
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
61918
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
61919
  }
 
61920
  /** Get the scope opened by the if-statement. */
 
61921
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
61922
public:
 
61923
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
61924
  const char *__attr_name (unsigned i) const {
 
61925
    static const char *names[] = { "sons" }; return names[i];
 
61926
  }
 
61927
  const void *__attr (unsigned __i) const {
 
61928
    switch (__i) { case 0: return &sons; default: return 0; }
 
61929
  }
 
61930
#line 3653 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61931
};
 
61932
 
 
61933
/** \class CT_BreakStmt CTree.h Puma/CTree.h
 
61934
 *  Tree node representing a break-statement.
 
61935
 *  Example: \code break; \endcode */
 
61936
 
 
61937
#line 61938 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61938
} // closed Puma
 
61939
class CCExprResolve;
 
61940
class CExprResolve;
 
61941
class WinIfExists;
 
61942
class WinImportHandler;
 
61943
class WinMacros;
 
61944
class WinAsm;
 
61945
class WinDeclSpecs;
 
61946
class WinMemberExplSpec;
 
61947
class WinTypeKeywords;
 
61948
class WinFriend;
 
61949
class ExtAC;
 
61950
class ExtACBuilderCoupling;
 
61951
class ExtACSyntaxCoupling;
 
61952
class ExtACTree;
 
61953
class ExtACKeywords;
 
61954
class ExtGnu;
 
61955
class PragmaOnceUnitState;
 
61956
class PragmaOnce;
 
61957
class CMatchSyntax;
 
61958
namespace Puma {
 
61959
 
 
61960
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61961
class CT_BreakStmt : public CT_Statement {
 
61962
#line 61963 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
61963
  friend class ::CCExprResolve;
 
61964
  friend class ::CExprResolve;
 
61965
  friend class ::WinIfExists;
 
61966
  friend class ::WinImportHandler;
 
61967
  friend class ::WinMacros;
 
61968
  friend class ::WinAsm;
 
61969
  friend class ::WinDeclSpecs;
 
61970
  friend class ::WinMemberExplSpec;
 
61971
  friend class ::WinTypeKeywords;
 
61972
  friend class ::WinFriend;
 
61973
  friend class ::ExtAC;
 
61974
  friend class ::ExtACBuilderCoupling;
 
61975
  friend class ::ExtACSyntaxCoupling;
 
61976
  friend class ::ExtACTree;
 
61977
  friend class ::ExtACKeywords;
 
61978
  friend class ::ExtGnu;
 
61979
  friend class ::PragmaOnceUnitState;
 
61980
  friend class ::PragmaOnce;
 
61981
  friend class ::CMatchSyntax;
 
61982
 
 
61983
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
61984
 
 
61985
  CTree *sons[2]; // key, semi_colon
 
61986
 
 
61987
public:
 
61988
  /** Constructor.
 
61989
   *  \param key The keyword 'break'.
 
61990
   *  \param sc The trailing semi-colon. */
 
61991
  CT_BreakStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
61992
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
61993
  static const char *NodeId ();
 
61994
  /** Get the name of the node. Can be compared with NodeId(). */
 
61995
  const char *NodeName () const { return NodeId (); }
 
61996
  /** Get the number of sons. */
 
61997
  int Sons () const { return 2; }
 
61998
  /** Get the n-th son.
 
61999
   *  \param n The index of the son.
 
62000
   *  \return The n-th son or NULL. */
 
62001
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
62002
  /** Replace a son.
 
62003
   *  \param old_son The son to replace.
 
62004
   *  \param new_son The new son. */
 
62005
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
62006
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
62007
  }
 
62008
public:
 
62009
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
62010
  const char *__attr_name (unsigned i) const {
 
62011
    static const char *names[] = { "sons" }; return names[i];
 
62012
  }
 
62013
  const void *__attr (unsigned __i) const {
 
62014
    switch (__i) { case 0: return &sons; default: return 0; }
 
62015
  }
 
62016
#line 3682 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62017
};
 
62018
 
 
62019
/** \class CT_ContinueStmt CTree.h Puma/CTree.h
 
62020
 *  Tree node representing a continue-statement.
 
62021
 *  Example: \code continue; \endcode */
 
62022
 
 
62023
#line 62024 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62024
} // closed Puma
 
62025
class CCExprResolve;
 
62026
class CExprResolve;
 
62027
class WinIfExists;
 
62028
class WinImportHandler;
 
62029
class WinMacros;
 
62030
class WinAsm;
 
62031
class WinDeclSpecs;
 
62032
class WinMemberExplSpec;
 
62033
class WinTypeKeywords;
 
62034
class WinFriend;
 
62035
class ExtAC;
 
62036
class ExtACBuilderCoupling;
 
62037
class ExtACSyntaxCoupling;
 
62038
class ExtACTree;
 
62039
class ExtACKeywords;
 
62040
class ExtGnu;
 
62041
class PragmaOnceUnitState;
 
62042
class PragmaOnce;
 
62043
class CMatchSyntax;
 
62044
namespace Puma {
 
62045
 
 
62046
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62047
class CT_ContinueStmt : public CT_Statement {
 
62048
#line 62049 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62049
  friend class ::CCExprResolve;
 
62050
  friend class ::CExprResolve;
 
62051
  friend class ::WinIfExists;
 
62052
  friend class ::WinImportHandler;
 
62053
  friend class ::WinMacros;
 
62054
  friend class ::WinAsm;
 
62055
  friend class ::WinDeclSpecs;
 
62056
  friend class ::WinMemberExplSpec;
 
62057
  friend class ::WinTypeKeywords;
 
62058
  friend class ::WinFriend;
 
62059
  friend class ::ExtAC;
 
62060
  friend class ::ExtACBuilderCoupling;
 
62061
  friend class ::ExtACSyntaxCoupling;
 
62062
  friend class ::ExtACTree;
 
62063
  friend class ::ExtACKeywords;
 
62064
  friend class ::ExtGnu;
 
62065
  friend class ::PragmaOnceUnitState;
 
62066
  friend class ::PragmaOnce;
 
62067
  friend class ::CMatchSyntax;
 
62068
 
 
62069
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62070
 
 
62071
  CTree *sons[2]; // key, semi_colon
 
62072
 
 
62073
public:
 
62074
  /** Constructor.
 
62075
   *  \param key The keyword 'continue'.
 
62076
   *  \param sc The trailing semi-colon. */
 
62077
  CT_ContinueStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
62078
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
62079
  static const char *NodeId ();
 
62080
  /** Get the name of the node. Can be compared with NodeId(). */
 
62081
  const char *NodeName () const { return NodeId (); }
 
62082
  /** Get the number of sons. */
 
62083
  int Sons () const { return 2; }
 
62084
  /** Get the n-th son.
 
62085
   *  \param n The index of the son.
 
62086
   *  \return The n-th son or NULL. */
 
62087
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
62088
  /** Replace a son.
 
62089
   *  \param old_son The son to replace.
 
62090
   *  \param new_son The new son. */
 
62091
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
62092
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
62093
  }
 
62094
public:
 
62095
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
62096
  const char *__attr_name (unsigned i) const {
 
62097
    static const char *names[] = { "sons" }; return names[i];
 
62098
  }
 
62099
  const void *__attr (unsigned __i) const {
 
62100
    switch (__i) { case 0: return &sons; default: return 0; }
 
62101
  }
 
62102
#line 3711 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62103
};
 
62104
 
 
62105
/** \class CT_GotoStmt CTree.h Puma/CTree.h
 
62106
 *  Tree node representing a goto-stmt.
 
62107
 *  Example: \code goto incr_a; \endcode */
 
62108
 
 
62109
#line 62110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62110
} // closed Puma
 
62111
class CCExprResolve;
 
62112
class CExprResolve;
 
62113
class WinIfExists;
 
62114
class WinImportHandler;
 
62115
class WinMacros;
 
62116
class WinAsm;
 
62117
class WinDeclSpecs;
 
62118
class WinMemberExplSpec;
 
62119
class WinTypeKeywords;
 
62120
class WinFriend;
 
62121
class ExtAC;
 
62122
class ExtACBuilderCoupling;
 
62123
class ExtACSyntaxCoupling;
 
62124
class ExtACTree;
 
62125
class ExtACKeywords;
 
62126
class ExtGnu;
 
62127
class PragmaOnceUnitState;
 
62128
class PragmaOnce;
 
62129
class CMatchSyntax;
 
62130
namespace Puma {
 
62131
 
 
62132
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62133
class CT_GotoStmt : public CT_Statement {
 
62134
#line 62135 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62135
  friend class ::CCExprResolve;
 
62136
  friend class ::CExprResolve;
 
62137
  friend class ::WinIfExists;
 
62138
  friend class ::WinImportHandler;
 
62139
  friend class ::WinMacros;
 
62140
  friend class ::WinAsm;
 
62141
  friend class ::WinDeclSpecs;
 
62142
  friend class ::WinMemberExplSpec;
 
62143
  friend class ::WinTypeKeywords;
 
62144
  friend class ::WinFriend;
 
62145
  friend class ::ExtAC;
 
62146
  friend class ::ExtACBuilderCoupling;
 
62147
  friend class ::ExtACSyntaxCoupling;
 
62148
  friend class ::ExtACTree;
 
62149
  friend class ::ExtACKeywords;
 
62150
  friend class ::ExtGnu;
 
62151
  friend class ::PragmaOnceUnitState;
 
62152
  friend class ::PragmaOnce;
 
62153
  friend class ::CMatchSyntax;
 
62154
 
 
62155
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62156
 
 
62157
  CTree *sons[3]; // key, label, semi_colon
 
62158
 
 
62159
public:
 
62160
  /** Constructor.
 
62161
   *  \param key The keyword 'goto'.
 
62162
   *  \param l The name of the jump label.
 
62163
   *  \param sc The trailing semi-colon. */
 
62164
  CT_GotoStmt (CTree *key, CTree *l, CTree *sc) {
 
62165
    AddSon (sons[0], key); AddSon (sons[1], l); AddSon (sons[2], sc); 
 
62166
  }
 
62167
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
62168
  static const char *NodeId ();
 
62169
  /** Get the name of the node. Can be compared with NodeId(). */
 
62170
  const char *NodeName () const { return NodeId (); }
 
62171
  /** Get the number of sons. */
 
62172
  int Sons () const { return 3; }
 
62173
  /** Get the n-th son.
 
62174
   *  \param n The index of the son.
 
62175
   *  \return The n-th son or NULL. */
 
62176
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
62177
  /** Get the name of the jump label. */
 
62178
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[1]; }
 
62179
  /** Replace a son.
 
62180
   *  \param old_son The son to replace.
 
62181
   *  \param new_son The new son. */
 
62182
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
62183
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
62184
  }
 
62185
public:
 
62186
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
62187
  const char *__attr_name (unsigned i) const {
 
62188
    static const char *names[] = { "sons" }; return names[i];
 
62189
  }
 
62190
  const void *__attr (unsigned __i) const {
 
62191
    switch (__i) { case 0: return &sons; default: return 0; }
 
62192
  }
 
62193
#line 3745 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62194
};
 
62195
 
 
62196
/** \class CT_ReturnStmt CTree.h Puma/CTree.h
 
62197
 *  Tree node representing a return-statement.
 
62198
 *  Example: \code return 1; \endcode */
 
62199
 
 
62200
#line 62201 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62201
} // closed Puma
 
62202
class CCExprResolve;
 
62203
class CExprResolve;
 
62204
class WinIfExists;
 
62205
class WinImportHandler;
 
62206
class WinMacros;
 
62207
class WinAsm;
 
62208
class WinDeclSpecs;
 
62209
class WinMemberExplSpec;
 
62210
class WinTypeKeywords;
 
62211
class WinFriend;
 
62212
class ExtAC;
 
62213
class ExtACBuilderCoupling;
 
62214
class ExtACSyntaxCoupling;
 
62215
class ExtACTree;
 
62216
class ExtACKeywords;
 
62217
class ExtGnu;
 
62218
class PragmaOnceUnitState;
 
62219
class PragmaOnce;
 
62220
class CMatchSyntax;
 
62221
namespace Puma {
 
62222
 
 
62223
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62224
class CT_ReturnStmt : public CT_Statement {
 
62225
#line 62226 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62226
  friend class ::CCExprResolve;
 
62227
  friend class ::CExprResolve;
 
62228
  friend class ::WinIfExists;
 
62229
  friend class ::WinImportHandler;
 
62230
  friend class ::WinMacros;
 
62231
  friend class ::WinAsm;
 
62232
  friend class ::WinDeclSpecs;
 
62233
  friend class ::WinMemberExplSpec;
 
62234
  friend class ::WinTypeKeywords;
 
62235
  friend class ::WinFriend;
 
62236
  friend class ::ExtAC;
 
62237
  friend class ::ExtACBuilderCoupling;
 
62238
  friend class ::ExtACSyntaxCoupling;
 
62239
  friend class ::ExtACTree;
 
62240
  friend class ::ExtACKeywords;
 
62241
  friend class ::ExtGnu;
 
62242
  friend class ::PragmaOnceUnitState;
 
62243
  friend class ::PragmaOnce;
 
62244
  friend class ::CMatchSyntax;
 
62245
 
 
62246
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62247
 
 
62248
  CTree *sons[3]; // key, expr, semi_colon
 
62249
 
 
62250
public:
 
62251
  /** Constructor.
 
62252
   *  \param key The keyword 'return'.
 
62253
   *  \param e The expression specifying the return value. 
 
62254
   *  \param sc The trailing semi-colon. */
 
62255
  CT_ReturnStmt (CTree *key, CTree *e, CTree *sc) {
 
62256
    AddSon (sons[0], key); AddSon (sons[1], e); AddSon (sons[2], sc); 
 
62257
  }
 
62258
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
62259
  static const char *NodeId ();
 
62260
  /** Get the name of the node. Can be compared with NodeId(). */
 
62261
  const char *NodeName () const { return NodeId (); }
 
62262
  /** Get the number of sons. */
 
62263
  int Sons () const { return CTree::Sons (sons, 3); }
 
62264
  /** Get the n-th son.
 
62265
   *  \param n The index of the son.
 
62266
   *  \return The n-th son or NULL. */
 
62267
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
62268
  /** Get the expression specifying the return value. */
 
62269
  CTree *Expr () const { return sons[1]; }
 
62270
  /** Replace a son.
 
62271
   *  \param old_son The son to replace.
 
62272
   *  \param new_son The new son. */
 
62273
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
62274
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
62275
  }
 
62276
public:
 
62277
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
62278
  const char *__attr_name (unsigned i) const {
 
62279
    static const char *names[] = { "sons" }; return names[i];
 
62280
  }
 
62281
  const void *__attr (unsigned __i) const {
 
62282
    switch (__i) { case 0: return &sons; default: return 0; }
 
62283
  }
 
62284
#line 3779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62285
};
 
62286
 
 
62287
/** \class CT_WhileStmt CTree.h Puma/CTree.h
 
62288
 *  Tree node representing a while-statement.
 
62289
 *  Example: \code while(a>0) a--; \endcode */
 
62290
 
 
62291
#line 62292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62292
} // closed Puma
 
62293
class CCExprResolve;
 
62294
class CExprResolve;
 
62295
class WinIfExists;
 
62296
class WinImportHandler;
 
62297
class WinMacros;
 
62298
class WinAsm;
 
62299
class WinDeclSpecs;
 
62300
class WinMemberExplSpec;
 
62301
class WinTypeKeywords;
 
62302
class WinFriend;
 
62303
class ExtAC;
 
62304
class ExtACBuilderCoupling;
 
62305
class ExtACSyntaxCoupling;
 
62306
class ExtACTree;
 
62307
class ExtACKeywords;
 
62308
class ExtGnu;
 
62309
class PragmaOnceUnitState;
 
62310
class PragmaOnce;
 
62311
class CMatchSyntax;
 
62312
namespace Puma {
 
62313
 
 
62314
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62315
class CT_WhileStmt : public CT_Statement, public CSemScope {
 
62316
#line 62317 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62317
  friend class ::CCExprResolve;
 
62318
  friend class ::CExprResolve;
 
62319
  friend class ::WinIfExists;
 
62320
  friend class ::WinImportHandler;
 
62321
  friend class ::WinMacros;
 
62322
  friend class ::WinAsm;
 
62323
  friend class ::WinDeclSpecs;
 
62324
  friend class ::WinMemberExplSpec;
 
62325
  friend class ::WinTypeKeywords;
 
62326
  friend class ::WinFriend;
 
62327
  friend class ::ExtAC;
 
62328
  friend class ::ExtACBuilderCoupling;
 
62329
  friend class ::ExtACSyntaxCoupling;
 
62330
  friend class ::ExtACTree;
 
62331
  friend class ::ExtACKeywords;
 
62332
  friend class ::ExtGnu;
 
62333
  friend class ::PragmaOnceUnitState;
 
62334
  friend class ::PragmaOnce;
 
62335
  friend class ::CMatchSyntax;
 
62336
 
 
62337
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62338
 
 
62339
  CTree *sons[5]; // key, open, cond, close, stmt
 
62340
 
 
62341
public:
 
62342
  /** Constructor.
 
62343
   *  \param kw The keyword 'while'.
 
62344
   *  \param o Left parenthesis before the condition.
 
62345
   *  \param cond The loop condition. 
 
62346
   *  \param c Right parenthesis behind the condition. 
 
62347
   *  \param stmt The controlled statement. */
 
62348
  CT_WhileStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
62349
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
62350
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
62351
  }
 
62352
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
62353
  static const char *NodeId ();
 
62354
  /** Get the name of the node. Can be compared with NodeId(). */
 
62355
  const char *NodeName () const { return NodeId (); }
 
62356
  /** Get the number of sons. */
 
62357
  int Sons () const { return 5; }
 
62358
  /** Get the n-th son.
 
62359
   *  \param n The index of the son.
 
62360
   *  \return The n-th son or NULL. */
 
62361
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
62362
  /** Get the controlled statement. */
 
62363
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
62364
  /** Get the loop condition. */
 
62365
  CTree *Condition () const { return sons[2]; }
 
62366
  /** Replace a son.
 
62367
   *  \param old_son The son to replace.
 
62368
   *  \param new_son The new son. */
 
62369
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
62370
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
62371
  }
 
62372
  /** Get the scope opened by the while-statement. */
 
62373
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
62374
public:
 
62375
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
62376
  const char *__attr_name (unsigned i) const {
 
62377
    static const char *names[] = { "sons" }; return names[i];
 
62378
  }
 
62379
  const void *__attr (unsigned __i) const {
 
62380
    switch (__i) { case 0: return &sons; default: return 0; }
 
62381
  }
 
62382
#line 3820 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62383
};
 
62384
 
 
62385
/** \class CT_DoStmt CTree.h Puma/CTree.h
 
62386
 *  Tree node representing a do-while-statement.
 
62387
 *  Example: \code do a--; while(a>0); \endcode */
 
62388
 
 
62389
#line 62390 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62390
} // closed Puma
 
62391
class CCExprResolve;
 
62392
class CExprResolve;
 
62393
class WinIfExists;
 
62394
class WinImportHandler;
 
62395
class WinMacros;
 
62396
class WinAsm;
 
62397
class WinDeclSpecs;
 
62398
class WinMemberExplSpec;
 
62399
class WinTypeKeywords;
 
62400
class WinFriend;
 
62401
class ExtAC;
 
62402
class ExtACBuilderCoupling;
 
62403
class ExtACSyntaxCoupling;
 
62404
class ExtACTree;
 
62405
class ExtACKeywords;
 
62406
class ExtGnu;
 
62407
class PragmaOnceUnitState;
 
62408
class PragmaOnce;
 
62409
class CMatchSyntax;
 
62410
namespace Puma {
 
62411
 
 
62412
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62413
class CT_DoStmt : public CT_Statement {
 
62414
#line 62415 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62415
  friend class ::CCExprResolve;
 
62416
  friend class ::CExprResolve;
 
62417
  friend class ::WinIfExists;
 
62418
  friend class ::WinImportHandler;
 
62419
  friend class ::WinMacros;
 
62420
  friend class ::WinAsm;
 
62421
  friend class ::WinDeclSpecs;
 
62422
  friend class ::WinMemberExplSpec;
 
62423
  friend class ::WinTypeKeywords;
 
62424
  friend class ::WinFriend;
 
62425
  friend class ::ExtAC;
 
62426
  friend class ::ExtACBuilderCoupling;
 
62427
  friend class ::ExtACSyntaxCoupling;
 
62428
  friend class ::ExtACTree;
 
62429
  friend class ::ExtACKeywords;
 
62430
  friend class ::ExtGnu;
 
62431
  friend class ::PragmaOnceUnitState;
 
62432
  friend class ::PragmaOnce;
 
62433
  friend class ::CMatchSyntax;
 
62434
 
 
62435
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62436
 
 
62437
  CTree *sons[7]; // do, stmt, while, open, expr, close, semi_colon
 
62438
 
 
62439
public:
 
62440
  /** Constructor.
 
62441
   *  \param d The keyword 'do'.
 
62442
   *  \param stmt The controlled statement.
 
62443
   *  \param w The keyword 'while'.
 
62444
   *  \param o Left parenthesis before the loop condition.
 
62445
   *  \param e The loop condition.
 
62446
   *  \param c Right parenthesis behind the loop condition.
 
62447
   *  \param sc The trailing semi-colon. */
 
62448
  CT_DoStmt (CTree *d, CTree *stmt, CTree *w, CTree *o, CTree *e, 
 
62449
             CTree *c, CTree *sc) {
 
62450
    AddSon (sons[0], d); AddSon (sons[1], stmt); AddSon (sons[2], w); 
 
62451
    AddSon (sons[3], o); AddSon (sons[4], e); AddSon (sons[5], c); 
 
62452
    AddSon (sons[6], sc); 
 
62453
  }
 
62454
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
62455
  static const char *NodeId ();
 
62456
  /** Get the name of the node. Can be compared with NodeId(). */
 
62457
  const char *NodeName () const { return NodeId (); }
 
62458
  /** Get the number of sons. */
 
62459
  int Sons () const { return 7; }
 
62460
  /** Get the n-th son.
 
62461
   *  \param n The index of the son.
 
62462
   *  \return The n-th son or NULL. */
 
62463
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
62464
  /** Get the controlled statement. */
 
62465
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
62466
  /** Get the loop condition. */
 
62467
  CTree *Expr () const { return sons[4]; }
 
62468
  /** Replace a son.
 
62469
   *  \param old_son The son to replace.
 
62470
   *  \param new_son The new son. */
 
62471
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
62472
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
62473
  }
 
62474
public:
 
62475
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
62476
  const char *__attr_name (unsigned i) const {
 
62477
    static const char *names[] = { "sons" }; return names[i];
 
62478
  }
 
62479
  const void *__attr (unsigned __i) const {
 
62480
    switch (__i) { case 0: return &sons; default: return 0; }
 
62481
  }
 
62482
#line 3863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62483
};
 
62484
 
 
62485
/** \class CT_ForStmt CTree.h Puma/CTree.h
 
62486
 *  Tree node representing a for-statement.
 
62487
 *  Example: \code for(int i=0; i<10; i++) f(i); \endcode */
 
62488
 
 
62489
#line 62490 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62490
} // closed Puma
 
62491
class CCExprResolve;
 
62492
class CExprResolve;
 
62493
class WinIfExists;
 
62494
class WinImportHandler;
 
62495
class WinMacros;
 
62496
class WinAsm;
 
62497
class WinDeclSpecs;
 
62498
class WinMemberExplSpec;
 
62499
class WinTypeKeywords;
 
62500
class WinFriend;
 
62501
class ExtAC;
 
62502
class ExtACBuilderCoupling;
 
62503
class ExtACSyntaxCoupling;
 
62504
class ExtACTree;
 
62505
class ExtACKeywords;
 
62506
class ExtGnu;
 
62507
class PragmaOnceUnitState;
 
62508
class PragmaOnce;
 
62509
class CMatchSyntax;
 
62510
namespace Puma {
 
62511
 
 
62512
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62513
class CT_ForStmt : public CT_Statement, public CSemScope {
 
62514
#line 62515 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62515
  friend class ::CCExprResolve;
 
62516
  friend class ::CExprResolve;
 
62517
  friend class ::WinIfExists;
 
62518
  friend class ::WinImportHandler;
 
62519
  friend class ::WinMacros;
 
62520
  friend class ::WinAsm;
 
62521
  friend class ::WinDeclSpecs;
 
62522
  friend class ::WinMemberExplSpec;
 
62523
  friend class ::WinTypeKeywords;
 
62524
  friend class ::WinFriend;
 
62525
  friend class ::ExtAC;
 
62526
  friend class ::ExtACBuilderCoupling;
 
62527
  friend class ::ExtACSyntaxCoupling;
 
62528
  friend class ::ExtACTree;
 
62529
  friend class ::ExtACKeywords;
 
62530
  friend class ::ExtGnu;
 
62531
  friend class ::PragmaOnceUnitState;
 
62532
  friend class ::PragmaOnce;
 
62533
  friend class ::CMatchSyntax;
 
62534
 
 
62535
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62536
 
 
62537
  CTree *sons[8]; // key, open, init, cond, semi_colon, expr, close, stmt
 
62538
 
 
62539
public:
 
62540
  /** Constructor.
 
62541
   *  \param k The keyword 'for'.
 
62542
   *  \param o Left parenthesis.
 
62543
   *  \param i The loop initializer statement.
 
62544
   *  \param co The loop condition.
 
62545
   *  \param sc The semi-colon behind the loop condition.
 
62546
   *  \param e The loop counter expression.
 
62547
   *  \param c Right parenthesis.
 
62548
   *  \param stmt The controlled statement. */
 
62549
  CT_ForStmt (CTree *k, CTree *o, CTree *i, CTree *co, CTree *sc,
 
62550
              CTree *e, CTree *c, CTree *stmt) {
 
62551
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], i); 
 
62552
    AddSon (sons[3], co); AddSon (sons[4], sc); AddSon (sons[5], e); 
 
62553
    AddSon (sons[6], c); AddSon (sons[7], stmt); 
 
62554
  }
 
62555
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
62556
  static const char *NodeId ();
 
62557
  /** Get the name of the node. Can be compared with NodeId(). */
 
62558
  const char *NodeName () const { return NodeId (); }
 
62559
  /** Get the number of sons. */
 
62560
  int Sons () const { return CTree::Sons (sons, 8); }
 
62561
  /** Get the n-th son.
 
62562
   *  \param n The index of the son.
 
62563
   *  \return The n-th son or NULL. */
 
62564
  CTree *Son (int n) const { return CTree::Son (sons, 8, n); }
 
62565
  /** Get the loop initializer. */
 
62566
  CTree *InitStmt () const { return sons[2]; }
 
62567
  /** Get the loop condition. */
 
62568
  CTree *Condition () const { return sons[3]; }
 
62569
  /** Get the loop counter expression. */
 
62570
  CTree *Expr () const { return sons[5]; }
 
62571
  /** Get the controlled statement. */
 
62572
  CT_Statement *Statement () const { return (CT_Statement*)sons[7]; }
 
62573
  /** Replace a son.
 
62574
   *  \param old_son The son to replace.
 
62575
   *  \param new_son The new son. */
 
62576
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
62577
    CTree::ReplaceSon (sons, 8, old_son, new_son);
 
62578
  }
 
62579
  /** Get the scope opened by the for-statement. */
 
62580
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
62581
public:
 
62582
  typedef AC::TL<Puma::CTree * [8],AC::TLE > __AttrTypes;
 
62583
  const char *__attr_name (unsigned i) const {
 
62584
    static const char *names[] = { "sons" }; return names[i];
 
62585
  }
 
62586
  const void *__attr (unsigned __i) const {
 
62587
    switch (__i) { case 0: return &sons; default: return 0; }
 
62588
  }
 
62589
#line 3913 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62590
};
 
62591
 
 
62592
/** \class CT_Condition CTree.h Puma/CTree.h
 
62593
 *  Tree node representing a control-statement condition.
 
62594
 *  Example: \code int i = 0 \endcode */
 
62595
 
 
62596
#line 62597 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62597
} // closed Puma
 
62598
class CCExprResolve;
 
62599
class CExprResolve;
 
62600
class WinIfExists;
 
62601
class WinImportHandler;
 
62602
class WinMacros;
 
62603
class WinAsm;
 
62604
class WinDeclSpecs;
 
62605
class WinMemberExplSpec;
 
62606
class WinTypeKeywords;
 
62607
class WinFriend;
 
62608
class ExtAC;
 
62609
class ExtACBuilderCoupling;
 
62610
class ExtACSyntaxCoupling;
 
62611
class ExtACTree;
 
62612
class ExtACKeywords;
 
62613
class ExtGnu;
 
62614
class PragmaOnceUnitState;
 
62615
class PragmaOnce;
 
62616
class CMatchSyntax;
 
62617
namespace Puma {
 
62618
 
 
62619
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62620
class CT_Condition : public CT_Decl, public CSemObject {
 
62621
#line 62622 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62622
  friend class ::CCExprResolve;
 
62623
  friend class ::CExprResolve;
 
62624
  friend class ::WinIfExists;
 
62625
  friend class ::WinImportHandler;
 
62626
  friend class ::WinMacros;
 
62627
  friend class ::WinAsm;
 
62628
  friend class ::WinDeclSpecs;
 
62629
  friend class ::WinMemberExplSpec;
 
62630
  friend class ::WinTypeKeywords;
 
62631
  friend class ::WinFriend;
 
62632
  friend class ::ExtAC;
 
62633
  friend class ::ExtACBuilderCoupling;
 
62634
  friend class ::ExtACSyntaxCoupling;
 
62635
  friend class ::ExtACTree;
 
62636
  friend class ::ExtACKeywords;
 
62637
  friend class ::ExtGnu;
 
62638
  friend class ::PragmaOnceUnitState;
 
62639
  friend class ::PragmaOnce;
 
62640
  friend class ::CMatchSyntax;
 
62641
 
 
62642
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62643
 
 
62644
  CTree *sons[3]; // declspecs, declarator, init
 
62645
 
 
62646
public:
 
62647
  /** Constructor.
 
62648
   *  \param dsl The declaration specifier sequence. 
 
62649
   *  \param d The variable declarator. */
 
62650
  CT_Condition (CTree *dsl, CTree *d) {
 
62651
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], 0);
 
62652
  }
 
62653
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
62654
  static const char *NodeId ();
 
62655
  /** Get the name of the node. Can be compared with NodeId(). */
 
62656
  const char *NodeName () const { return NodeId (); }
 
62657
  /** Get the number of sons. */
 
62658
  int Sons () const { return CTree::Sons (sons, 3); }
 
62659
  /** Get the n-th son.
 
62660
   *  \param n The index of the son.
 
62661
   *  \return The n-th son or NULL. */
 
62662
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
62663
  /** Get the declaration specifier sequence. */
 
62664
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
62665
  /** Get the declarator. */
 
62666
  CTree *Declarator () const { return sons[1]; }
 
62667
  /** Get the initializer of the declaration. */
 
62668
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
62669
  /** Get the semantic information of the declared object. */
 
62670
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
62671
  /** Set the initializer. */
 
62672
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
62673
  /** Replace a son.
 
62674
   *  \param old_son The son to replace.
 
62675
   *  \param new_son The new son. */
 
62676
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
62677
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
62678
  }
 
62679
public:
 
62680
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
62681
  const char *__attr_name (unsigned i) const {
 
62682
    static const char *names[] = { "sons" }; return names[i];
 
62683
  }
 
62684
  const void *__attr (unsigned __i) const {
 
62685
    switch (__i) { case 0: return &sons; default: return 0; }
 
62686
  }
 
62687
#line 3954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62688
};
 
62689
 
 
62690
/*****************************************************************************/
 
62691
/*                                                                           */
 
62692
/*                              Classes                                      */
 
62693
/*                                                                           */
 
62694
/*****************************************************************************/
 
62695
 
 
62696
/** \class CT_ClassDef CTree.h Puma/CTree.h
 
62697
 *  Tree node representing a class definition.
 
62698
 *  Example: \code class X : Y { int x; } \endcode */
 
62699
 
 
62700
#line 62701 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62701
} // closed Puma
 
62702
class CCExprResolve;
 
62703
class CExprResolve;
 
62704
class WinIfExists;
 
62705
class WinImportHandler;
 
62706
class WinMacros;
 
62707
class WinAsm;
 
62708
class WinDeclSpecs;
 
62709
class WinMemberExplSpec;
 
62710
class WinTypeKeywords;
 
62711
class WinFriend;
 
62712
class ExtAC;
 
62713
class ExtACBuilderCoupling;
 
62714
class ExtACSyntaxCoupling;
 
62715
class ExtACTree;
 
62716
class ExtACKeywords;
 
62717
class ExtGnu;
 
62718
class PragmaOnceUnitState;
 
62719
class PragmaOnce;
 
62720
class CMatchSyntax;
 
62721
namespace Puma {
 
62722
 
 
62723
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62724
 
 
62725
#line 62726 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62726
} // closed Puma
 
62727
 
 
62728
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
62729
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
62730
#include "ExtACTree.ah"
 
62731
#endif
 
62732
namespace Puma {
 
62733
 
 
62734
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62735
class CT_ClassDef : public CT_Decl, public CSemObject {
 
62736
#line 62737 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62737
  friend class ::CCExprResolve;
 
62738
  friend class ::CExprResolve;
 
62739
  friend class ::WinIfExists;
 
62740
  friend class ::WinImportHandler;
 
62741
  friend class ::WinMacros;
 
62742
  friend class ::WinAsm;
 
62743
  friend class ::WinDeclSpecs;
 
62744
  friend class ::WinMemberExplSpec;
 
62745
  friend class ::WinTypeKeywords;
 
62746
  friend class ::WinFriend;
 
62747
  friend class ::ExtAC;
 
62748
  friend class ::ExtACBuilderCoupling;
 
62749
  friend class ::ExtACSyntaxCoupling;
 
62750
  friend class ::ExtACTree;
 
62751
  friend class ::ExtACKeywords;
 
62752
  friend class ::ExtGnu;
 
62753
  friend class ::PragmaOnceUnitState;
 
62754
  friend class ::PragmaOnce;
 
62755
  friend class ::CMatchSyntax;
 
62756
 
 
62757
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62758
 
 
62759
   
 
62760
#line 62761 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62761
 
 
62762
  struct __ac_wrapper_sons {
 
62763
    typedef ::Puma::CTree * E; typedef E A[4]; A _data;
 
62764
    operator A& () { return _data; }
 
62765
    operator A& () const { return (A&)*(::Puma::CTree * *)_data; }
 
62766
    operator const A& () { return _data; }
 
62767
    operator const A& () const { return _data; }
 
62768
    operator void* () { return _data; }
 
62769
    operator void* () const { return (void*)_data; }
 
62770
    operator const void* () { return _data; }
 
62771
    operator const void* () const { return _data; }
 
62772
    template <typename I> E& operator [] (I i) { return _data[i]; } // for VC++ 2003
 
62773
    template <typename I> const E& operator [] (I i) const { return _data[i]; } // for VC++ 2003
 
62774
  } sons
 
62775
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62776
 
 
62777
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62778
; // key, name, bases, members
 
62779
  CTree *obj_decl;
 
62780
 
 
62781
public:
 
62782
  /** Constructor.
 
62783
   *  \param k The keyword 'class' or 'struct'.
 
62784
   *  \param n The name of the class.
 
62785
   *  \param b The base class list. */
 
62786
  
 
62787
#line 62788 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62788
 
 
62789
 
 
62790
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 {
 
62791
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 __TJP;
 
62792
  typedef TResult Result;
 
62793
  typedef TThat   That;
 
62794
  typedef TTarget Target;
 
62795
  enum { ARGS = TArgs::ARGS };
 
62796
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
62797
  static const int JPID = 55;
 
62798
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
62799
  struct Res {
 
62800
    typedef void Type;
 
62801
    typedef void ReferredType;
 
62802
  };
 
62803
 
 
62804
  That *_that;
 
62805
 
 
62806
  inline That *that() {return (That*)_that;}
 
62807
 
 
62808
};
 
62809
 
 
62810
 
 
62811
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62812
CT_ClassDef (CTree * arg0, CTree * arg1, CTree * arg2 = (CTree*)0) 
 
62813
#line 62814 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62814
{
 
62815
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TLE > > > > __TJP;
 
62816
    __TJP tjp;
 
62817
  tjp._that =  (__TJP::That*)this;
 
62818
    this->__exec_old_C1(arg0, arg1, arg2);
 
62819
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
62820
  
 
62821
}
 
62822
__attribute__((always_inline)) inline void __exec_old_C1(::Puma::CTree * k,::Puma::CTree * n,::Puma::CTree * b)
 
62823
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62824
{
 
62825
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], b); 
 
62826
    AddSon (sons[3], 0); AddSon (obj_decl, 0); 
 
62827
  }
 
62828
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
62829
  static const char *NodeId ();
 
62830
  /** Get the name of the node. Can be compared with NodeId(). */
 
62831
  const char *NodeName () const { return NodeId (); }
 
62832
  /** Get the number of sons. */
 
62833
  int Sons () const { return CTree::Sons (sons, 4); }
 
62834
  /** Get the n-th son.
 
62835
   *  \param n The index of the son.
 
62836
   *  \return The n-th son or NULL. */
 
62837
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
62838
  /** Get the name of the class. */
 
62839
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
62840
  /** Get the member declarations list. */
 
62841
  CT_MembList *Members () const { return (CT_MembList*)sons[3]; }
 
62842
  /** Get the base class specifiers list. */
 
62843
  CT_BaseSpecList *BaseClasses () const { return (CT_BaseSpecList*)sons[2]; }
 
62844
  /** Get the object declaration node containing the class definition. */
 
62845
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
62846
  /** Get the semantic information about the declared class. */
 
62847
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
62848
  /** Set the member declarations list. */
 
62849
  void Members (CTree *m) { AddSon (sons[3], m); }
 
62850
  /** Set the base class specifiers list. */
 
62851
  void BaseClasses (CTree *bc) { AddSon (sons[2], bc); }
 
62852
  /** Set the object declaration containing the class definition. */
 
62853
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
62854
  /** Replace a son.
 
62855
   *  \param old_son The son to replace.
 
62856
   *  \param new_son The new son. */
 
62857
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
62858
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
62859
  }
 
62860
   private:
 
62861
 
 
62862
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
62863
 Puma :: CTree * _intro_members ;
 
62864
Puma :: CTree * _base_intros ;
 
62865
public :
 
62866
Puma :: CTree * IntroMembers ( ) const { return _intro_members ; }
 
62867
void IntroMembers ( Puma :: CTree * members ) { _intro_members = members ; }
 
62868
Puma :: CTree * BaseIntros ( ) const { return _base_intros ; }
 
62869
void BaseIntros ( Puma :: CTree * bases ) { _base_intros = bases ; }public:
 
62870
  typedef AC::TL<Puma::CTree * [4],AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
62871
  const char *__attr_name (unsigned i) const {
 
62872
    static const char *names[] = { "sons", "obj_decl", "_intro_members", "_base_intros" }; return names[i];
 
62873
  }
 
62874
  const void *__attr (unsigned __i) const {
 
62875
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; case 2: return &_intro_members; case 3: return &_base_intros; default: return 0; }
 
62876
  }
 
62877
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62878
 
 
62879
#line 62880 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62880
 
 
62881
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 {
 
62882
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 __TJP;
 
62883
  typedef TResult Result;
 
62884
  typedef TThat   That;
 
62885
  typedef TTarget Target;
 
62886
  enum { ARGS = TArgs::ARGS };
 
62887
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
62888
  static const int JPID = 7557;
 
62889
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
62890
  struct Res {
 
62891
    typedef void Type;
 
62892
    typedef void ReferredType;
 
62893
  };
 
62894
 
 
62895
  That *_that;
 
62896
 
 
62897
  inline That *that() {return (That*)_that;}
 
62898
 
 
62899
};
 
62900
 
 
62901
 
 
62902
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62903
 
 
62904
#line 62905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62905
 
 
62906
public:
 
62907
inline CT_ClassDef (const Puma::CT_ClassDef & arg0) : Puma::CT_Decl (arg0), Puma::CSemObject (arg0), sons (arg0.sons), obj_decl (arg0.obj_decl), _intro_members (arg0._intro_members), _base_intros (arg0._base_intros) {
 
62908
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< const ::Puma::CT_ClassDef & , AC::TLE > > __TJP;
 
62909
  __TJP tjp;
 
62910
  tjp._that =  (__TJP::That*)this;
 
62911
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
62912
 
 
62913
}
 
62914
 
 
62915
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62916
 
 
62917
#line 62918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62918
 
 
62919
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefD1Ev_0 {
 
62920
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0 __TJP;
 
62921
  typedef TResult Result;
 
62922
  typedef TThat   That;
 
62923
  typedef TTarget Target;
 
62924
  enum { ARGS = TArgs::ARGS };
 
62925
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
62926
  static const int JPID = 7555;
 
62927
  static const AC::JPType JPTYPE = (AC::JPType)32;
 
62928
  struct Res {
 
62929
    typedef void Type;
 
62930
    typedef void ReferredType;
 
62931
  };
 
62932
 
 
62933
  That *_that;
 
62934
 
 
62935
  inline That *that() {return (That*)_that;}
 
62936
 
 
62937
};
 
62938
 
 
62939
 
 
62940
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62941
 
 
62942
#line 62943 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62943
 
 
62944
public:
 
62945
inline ~CT_ClassDef () {
 
62946
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TLE > __TJP;
 
62947
  __TJP tjp;
 
62948
  tjp._that =  (__TJP::That*)this;
 
62949
  AC::invoke_ExtACTree_ExtACTree_a1_before<__TJP> (&tjp);
 
62950
 
 
62951
}
 
62952
 
 
62953
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62954
};
 
62955
      
 
62956
/** \class CT_UnionDef CTree.h Puma/CTree.h
 
62957
 *  Tree node representing the definition of a union.
 
62958
 *  Example: \code union U { int i; } \endcode */
 
62959
 
 
62960
#line 62961 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62961
} // closed Puma
 
62962
class CCExprResolve;
 
62963
class CExprResolve;
 
62964
class WinIfExists;
 
62965
class WinImportHandler;
 
62966
class WinMacros;
 
62967
class WinAsm;
 
62968
class WinDeclSpecs;
 
62969
class WinMemberExplSpec;
 
62970
class WinTypeKeywords;
 
62971
class WinFriend;
 
62972
class ExtAC;
 
62973
class ExtACBuilderCoupling;
 
62974
class ExtACSyntaxCoupling;
 
62975
class ExtACTree;
 
62976
class ExtACKeywords;
 
62977
class ExtGnu;
 
62978
class PragmaOnceUnitState;
 
62979
class PragmaOnce;
 
62980
class CMatchSyntax;
 
62981
namespace Puma {
 
62982
 
 
62983
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
62984
class CT_UnionDef : public CT_ClassDef {
 
62985
#line 62986 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
62986
  friend class ::CCExprResolve;
 
62987
  friend class ::CExprResolve;
 
62988
  friend class ::WinIfExists;
 
62989
  friend class ::WinImportHandler;
 
62990
  friend class ::WinMacros;
 
62991
  friend class ::WinAsm;
 
62992
  friend class ::WinDeclSpecs;
 
62993
  friend class ::WinMemberExplSpec;
 
62994
  friend class ::WinTypeKeywords;
 
62995
  friend class ::WinFriend;
 
62996
  friend class ::ExtAC;
 
62997
  friend class ::ExtACBuilderCoupling;
 
62998
  friend class ::ExtACSyntaxCoupling;
 
62999
  friend class ::ExtACTree;
 
63000
  friend class ::ExtACKeywords;
 
63001
  friend class ::ExtGnu;
 
63002
  friend class ::PragmaOnceUnitState;
 
63003
  friend class ::PragmaOnce;
 
63004
  friend class ::CMatchSyntax;
 
63005
 
 
63006
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63007
 
 
63008
public:
 
63009
  /** Constructor.
 
63010
   *  \param k The keyword 'union'.
 
63011
   *  \param n The name of the union.
 
63012
   *  \param b The base union list. */
 
63013
  CT_UnionDef (CTree *k, CTree *n, CTree *b = 0) : CT_ClassDef (k, n, b) {}
 
63014
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63015
  static const char *NodeId ();
 
63016
  /** Get the name of the node. Can be compared with NodeId(). */
 
63017
  const char *NodeName () const { return NodeId (); }
 
63018
public:
 
63019
  typedef AC::TLE __AttrTypes;
 
63020
  const char *__attr_name (unsigned i) const { return 0; }
 
63021
  const void *__attr (unsigned __i) const { return 0; }
 
63022
#line 4026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63023
};
 
63024
      
 
63025
/** \class CT_MembList CTree.h Puma/CTree.h
 
63026
 *  Tree node representing a member declarations list. */ 
 
63027
 
 
63028
#line 63029 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63029
} // closed Puma
 
63030
class CCExprResolve;
 
63031
class CExprResolve;
 
63032
class WinIfExists;
 
63033
class WinImportHandler;
 
63034
class WinMacros;
 
63035
class WinAsm;
 
63036
class WinDeclSpecs;
 
63037
class WinMemberExplSpec;
 
63038
class WinTypeKeywords;
 
63039
class WinFriend;
 
63040
class ExtAC;
 
63041
class ExtACBuilderCoupling;
 
63042
class ExtACSyntaxCoupling;
 
63043
class ExtACTree;
 
63044
class ExtACKeywords;
 
63045
class ExtGnu;
 
63046
class PragmaOnceUnitState;
 
63047
class PragmaOnce;
 
63048
class CMatchSyntax;
 
63049
namespace Puma {
 
63050
 
 
63051
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63052
class CT_MembList : public CT_DeclList, public CSemScope {
 
63053
#line 63054 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63054
  friend class ::CCExprResolve;
 
63055
  friend class ::CExprResolve;
 
63056
  friend class ::WinIfExists;
 
63057
  friend class ::WinImportHandler;
 
63058
  friend class ::WinMacros;
 
63059
  friend class ::WinAsm;
 
63060
  friend class ::WinDeclSpecs;
 
63061
  friend class ::WinMemberExplSpec;
 
63062
  friend class ::WinTypeKeywords;
 
63063
  friend class ::WinFriend;
 
63064
  friend class ::ExtAC;
 
63065
  friend class ::ExtACBuilderCoupling;
 
63066
  friend class ::ExtACSyntaxCoupling;
 
63067
  friend class ::ExtACTree;
 
63068
  friend class ::ExtACKeywords;
 
63069
  friend class ::ExtGnu;
 
63070
  friend class ::PragmaOnceUnitState;
 
63071
  friend class ::PragmaOnce;
 
63072
  friend class ::CMatchSyntax;
 
63073
 
 
63074
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63075
 
 
63076
public:
 
63077
  CT_MembList (int size = 10, int incr = 10) : 
 
63078
    CT_DeclList (size, incr) {}
 
63079
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63080
  static const char *NodeId ();
 
63081
  /** Get the name of the node. Can be compared with NodeId(). */
 
63082
  const char *NodeName () const { return NodeId (); }
 
63083
  /** Get the scope opened by the member declarations list. */
 
63084
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
63085
public:
 
63086
  typedef AC::TLE __AttrTypes;
 
63087
  const char *__attr_name (unsigned i) const { return 0; }
 
63088
  const void *__attr (unsigned __i) const { return 0; }
 
63089
#line 4040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63090
};
 
63091
 
 
63092
/** \class CT_MembInitList CTree.h Puma/CTree.h
 
63093
 *  Tree node representing a constructor initializer list.
 
63094
 *  Example: \code : Base(), m_Member(0) \endcode */
 
63095
 
 
63096
#line 63097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63097
} // closed Puma
 
63098
class CCExprResolve;
 
63099
class CExprResolve;
 
63100
class WinIfExists;
 
63101
class WinImportHandler;
 
63102
class WinMacros;
 
63103
class WinAsm;
 
63104
class WinDeclSpecs;
 
63105
class WinMemberExplSpec;
 
63106
class WinTypeKeywords;
 
63107
class WinFriend;
 
63108
class ExtAC;
 
63109
class ExtACBuilderCoupling;
 
63110
class ExtACSyntaxCoupling;
 
63111
class ExtACTree;
 
63112
class ExtACKeywords;
 
63113
class ExtGnu;
 
63114
class PragmaOnceUnitState;
 
63115
class PragmaOnce;
 
63116
class CMatchSyntax;
 
63117
namespace Puma {
 
63118
 
 
63119
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63120
class CT_MembInitList : public CT_List, public CSemScope {
 
63121
#line 63122 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63122
  friend class ::CCExprResolve;
 
63123
  friend class ::CExprResolve;
 
63124
  friend class ::WinIfExists;
 
63125
  friend class ::WinImportHandler;
 
63126
  friend class ::WinMacros;
 
63127
  friend class ::WinAsm;
 
63128
  friend class ::WinDeclSpecs;
 
63129
  friend class ::WinMemberExplSpec;
 
63130
  friend class ::WinTypeKeywords;
 
63131
  friend class ::WinFriend;
 
63132
  friend class ::ExtAC;
 
63133
  friend class ::ExtACBuilderCoupling;
 
63134
  friend class ::ExtACSyntaxCoupling;
 
63135
  friend class ::ExtACTree;
 
63136
  friend class ::ExtACKeywords;
 
63137
  friend class ::ExtGnu;
 
63138
  friend class ::PragmaOnceUnitState;
 
63139
  friend class ::PragmaOnce;
 
63140
  friend class ::CMatchSyntax;
 
63141
 
 
63142
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63143
 
 
63144
public:
 
63145
  /** Constructor.
 
63146
   *  \param size The initial size of the list. */
 
63147
  CT_MembInitList (int size = 2) : 
 
63148
    CT_List (size, 2, CT_List::OPEN) {}
 
63149
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63150
  static const char *NodeId ();
 
63151
  /** Get the name of the node. Can be compared with NodeId(). */
 
63152
  const char *NodeName () const { return NodeId (); }
 
63153
  /** Get the scope opened by the member initializer list. */
 
63154
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
63155
public:
 
63156
  typedef AC::TLE __AttrTypes;
 
63157
  const char *__attr_name (unsigned i) const { return 0; }
 
63158
  const void *__attr (unsigned __i) const { return 0; }
 
63159
#line 4057 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63160
};
 
63161
 
 
63162
/** \class CT_MembInit CTree.h Puma/CTree.h
 
63163
 *  Tree node representing a member initializer.
 
63164
 *  Example: \code m_Member(0) \endcode */
 
63165
 
 
63166
#line 63167 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63167
} // closed Puma
 
63168
class CCExprResolve;
 
63169
class CExprResolve;
 
63170
class WinIfExists;
 
63171
class WinImportHandler;
 
63172
class WinMacros;
 
63173
class WinAsm;
 
63174
class WinDeclSpecs;
 
63175
class WinMemberExplSpec;
 
63176
class WinTypeKeywords;
 
63177
class WinFriend;
 
63178
class ExtAC;
 
63179
class ExtACBuilderCoupling;
 
63180
class ExtACSyntaxCoupling;
 
63181
class ExtACTree;
 
63182
class ExtACKeywords;
 
63183
class ExtGnu;
 
63184
class PragmaOnceUnitState;
 
63185
class PragmaOnce;
 
63186
class CMatchSyntax;
 
63187
namespace Puma {
 
63188
 
 
63189
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63190
 
 
63191
#line 63192 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63192
} // closed Puma
 
63193
 
 
63194
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
63195
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
63196
#include "CCExprResolveH.ah"
 
63197
#endif
 
63198
namespace Puma {
 
63199
 
 
63200
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63201
 
 
63202
#line 63203 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63203
} // closed Puma
 
63204
 
 
63205
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
63206
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
63207
#include "CExprResolveH.ah"
 
63208
#endif
 
63209
namespace Puma {
 
63210
 
 
63211
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63212
class CT_MembInit : public CT_Expression, public CSemObject {
 
63213
#line 63214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63214
  friend class ::CCExprResolve;
 
63215
  friend class ::CExprResolve;
 
63216
  friend class ::WinIfExists;
 
63217
  friend class ::WinImportHandler;
 
63218
  friend class ::WinMacros;
 
63219
  friend class ::WinAsm;
 
63220
  friend class ::WinDeclSpecs;
 
63221
  friend class ::WinMemberExplSpec;
 
63222
  friend class ::WinTypeKeywords;
 
63223
  friend class ::WinFriend;
 
63224
  friend class ::ExtAC;
 
63225
  friend class ::ExtACBuilderCoupling;
 
63226
  friend class ::ExtACSyntaxCoupling;
 
63227
  friend class ::ExtACTree;
 
63228
  friend class ::ExtACKeywords;
 
63229
  friend class ::ExtGnu;
 
63230
  friend class ::PragmaOnceUnitState;
 
63231
  friend class ::PragmaOnce;
 
63232
  friend class ::CMatchSyntax;
 
63233
 
 
63234
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63235
 
 
63236
  CTree *sons[2]; // name, init
 
63237
 
 
63238
public:
 
63239
  /** Constructor.
 
63240
   *  \param n The name of the member.
 
63241
   *  \param i The member initializer. */
 
63242
  CT_MembInit (CTree *n, CTree *i) { AddSon (sons[0], n); AddSon (sons[1], i); }
 
63243
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63244
  static const char *NodeId ();
 
63245
  /** Get the name of the node. Can be compared with NodeId(). */
 
63246
  const char *NodeName () const { return NodeId (); }
 
63247
  /** Get the number of sons. */
 
63248
  int Sons () const { return 2; }
 
63249
  /** Get the n-th son.
 
63250
   *  \param n The index of the son.
 
63251
   *  \return The n-th son or NULL. */
 
63252
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
63253
  /** Replace a son.
 
63254
   *  \param old_son The son to replace.
 
63255
   *  \param new_son The new son. */
 
63256
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
63257
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
63258
  }
 
63259
  /** Get the name of the member. */
 
63260
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
63261
  /** Get the initializer. */
 
63262
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
63263
  /** Get the semantic information about the initialized member. */
 
63264
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
63265
   private:
 
63266
  typedef CT_MembInit CCExprResolveExpr;
 
63267
 
 
63268
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
63269
 public :
 
63270
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
63271
  typedef CT_MembInit CExprResolveExpr;
 
63272
 
 
63273
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
63274
 public :
 
63275
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
63276
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
63277
  const char *__attr_name (unsigned i) const {
 
63278
    static const char *names[] = { "sons" }; return names[i];
 
63279
  }
 
63280
  const void *__attr (unsigned __i) const {
 
63281
    switch (__i) { case 0: return &sons; default: return 0; }
 
63282
  }
 
63283
#line 4092 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63284
};
 
63285
 
 
63286
/** \class CT_BaseSpecList CTree.h Puma/CTree.h
 
63287
 *  Tree node representing a base specifier list.
 
63288
 *  Example: \code : X, Y, Z \endcode */
 
63289
 
 
63290
#line 63291 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63291
} // closed Puma
 
63292
class CCExprResolve;
 
63293
class CExprResolve;
 
63294
class WinIfExists;
 
63295
class WinImportHandler;
 
63296
class WinMacros;
 
63297
class WinAsm;
 
63298
class WinDeclSpecs;
 
63299
class WinMemberExplSpec;
 
63300
class WinTypeKeywords;
 
63301
class WinFriend;
 
63302
class ExtAC;
 
63303
class ExtACBuilderCoupling;
 
63304
class ExtACSyntaxCoupling;
 
63305
class ExtACTree;
 
63306
class ExtACKeywords;
 
63307
class ExtGnu;
 
63308
class PragmaOnceUnitState;
 
63309
class PragmaOnce;
 
63310
class CMatchSyntax;
 
63311
namespace Puma {
 
63312
 
 
63313
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63314
class CT_BaseSpecList : public CT_List {
 
63315
#line 63316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63316
  friend class ::CCExprResolve;
 
63317
  friend class ::CExprResolve;
 
63318
  friend class ::WinIfExists;
 
63319
  friend class ::WinImportHandler;
 
63320
  friend class ::WinMacros;
 
63321
  friend class ::WinAsm;
 
63322
  friend class ::WinDeclSpecs;
 
63323
  friend class ::WinMemberExplSpec;
 
63324
  friend class ::WinTypeKeywords;
 
63325
  friend class ::WinFriend;
 
63326
  friend class ::ExtAC;
 
63327
  friend class ::ExtACBuilderCoupling;
 
63328
  friend class ::ExtACSyntaxCoupling;
 
63329
  friend class ::ExtACTree;
 
63330
  friend class ::ExtACKeywords;
 
63331
  friend class ::ExtGnu;
 
63332
  friend class ::PragmaOnceUnitState;
 
63333
  friend class ::PragmaOnce;
 
63334
  friend class ::CMatchSyntax;
 
63335
 
 
63336
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63337
 
 
63338
public:
 
63339
  /** Constructor.
 
63340
   *  \param size The initial size of the list. */
 
63341
  CT_BaseSpecList (int size = 2) : 
 
63342
    CT_List (size, 2, CT_List::OPEN|CT_List::SEPARATORS) {}
 
63343
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63344
  static const char *NodeId ();
 
63345
  /** Get the name of the node. Can be compared with NodeId(). */
 
63346
  const char *NodeName () const { return NodeId (); }
 
63347
public:
 
63348
  typedef AC::TLE __AttrTypes;
 
63349
  const char *__attr_name (unsigned i) const { return 0; }
 
63350
  const void *__attr (unsigned __i) const { return 0; }
 
63351
#line 4107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63352
};
 
63353
 
 
63354
/** \class CT_AccessSpec CTree.h Puma/CTree.h
 
63355
 *  Tree node representing an access specifier.
 
63356
 *  Example: \code public: \endcode */
 
63357
 
 
63358
#line 63359 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63359
} // closed Puma
 
63360
class CCExprResolve;
 
63361
class CExprResolve;
 
63362
class WinIfExists;
 
63363
class WinImportHandler;
 
63364
class WinMacros;
 
63365
class WinAsm;
 
63366
class WinDeclSpecs;
 
63367
class WinMemberExplSpec;
 
63368
class WinTypeKeywords;
 
63369
class WinFriend;
 
63370
class ExtAC;
 
63371
class ExtACBuilderCoupling;
 
63372
class ExtACSyntaxCoupling;
 
63373
class ExtACTree;
 
63374
class ExtACKeywords;
 
63375
class ExtGnu;
 
63376
class PragmaOnceUnitState;
 
63377
class PragmaOnce;
 
63378
class CMatchSyntax;
 
63379
namespace Puma {
 
63380
 
 
63381
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63382
class CT_AccessSpec : public CTree {
 
63383
#line 63384 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63384
  friend class ::CCExprResolve;
 
63385
  friend class ::CExprResolve;
 
63386
  friend class ::WinIfExists;
 
63387
  friend class ::WinImportHandler;
 
63388
  friend class ::WinMacros;
 
63389
  friend class ::WinAsm;
 
63390
  friend class ::WinDeclSpecs;
 
63391
  friend class ::WinMemberExplSpec;
 
63392
  friend class ::WinTypeKeywords;
 
63393
  friend class ::WinFriend;
 
63394
  friend class ::ExtAC;
 
63395
  friend class ::ExtACBuilderCoupling;
 
63396
  friend class ::ExtACSyntaxCoupling;
 
63397
  friend class ::ExtACTree;
 
63398
  friend class ::ExtACKeywords;
 
63399
  friend class ::ExtGnu;
 
63400
  friend class ::PragmaOnceUnitState;
 
63401
  friend class ::PragmaOnce;
 
63402
  friend class ::CMatchSyntax;
 
63403
 
 
63404
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63405
 
 
63406
  CTree *sons[2]; // access, colon
 
63407
 
 
63408
public:
 
63409
  /** Constructor.
 
63410
   *  \param a The access specifier, i.e. 'public', 'private', or 'protected'.
 
63411
   *  \param c The trailing colon. */
 
63412
  CT_AccessSpec (CTree *a, CTree *c) { AddSon (sons[0], a); AddSon (sons[1], c); }
 
63413
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63414
  static const char *NodeId ();
 
63415
  /** Get the name of the node. Can be compared with NodeId(). */
 
63416
  const char *NodeName () const { return NodeId (); }
 
63417
  /** Get the number of sons. */
 
63418
  int Sons () const { return 2; }
 
63419
  /** Get the n-th son.
 
63420
   *  \param n The index of the son.
 
63421
   *  \return The n-th son or NULL. */
 
63422
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
63423
  /** Get the access specifier type (token type). */
 
63424
  int Access () const { return sons[0]->token ()->type (); }
 
63425
  /** Replace a son.
 
63426
   *  \param old_son The son to replace.
 
63427
   *  \param new_son The new son. */
 
63428
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
63429
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
63430
  }
 
63431
public:
 
63432
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
63433
  const char *__attr_name (unsigned i) const {
 
63434
    static const char *names[] = { "sons" }; return names[i];
 
63435
  }
 
63436
  const void *__attr (unsigned __i) const {
 
63437
    switch (__i) { case 0: return &sons; default: return 0; }
 
63438
  }
 
63439
#line 4138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63440
};
 
63441
 
 
63442
/** \class CT_BaseSpec CTree.h Puma/CTree.h
 
63443
 *  Tree node representing a base class specifier.
 
63444
 *  Example: \code public X \endcode */
 
63445
 
 
63446
#line 63447 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63447
} // closed Puma
 
63448
class CCExprResolve;
 
63449
class CExprResolve;
 
63450
class WinIfExists;
 
63451
class WinImportHandler;
 
63452
class WinMacros;
 
63453
class WinAsm;
 
63454
class WinDeclSpecs;
 
63455
class WinMemberExplSpec;
 
63456
class WinTypeKeywords;
 
63457
class WinFriend;
 
63458
class ExtAC;
 
63459
class ExtACBuilderCoupling;
 
63460
class ExtACSyntaxCoupling;
 
63461
class ExtACTree;
 
63462
class ExtACKeywords;
 
63463
class ExtGnu;
 
63464
class PragmaOnceUnitState;
 
63465
class PragmaOnce;
 
63466
class CMatchSyntax;
 
63467
namespace Puma {
 
63468
 
 
63469
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63470
class CT_BaseSpec : public CTree {
 
63471
#line 63472 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63472
  friend class ::CCExprResolve;
 
63473
  friend class ::CExprResolve;
 
63474
  friend class ::WinIfExists;
 
63475
  friend class ::WinImportHandler;
 
63476
  friend class ::WinMacros;
 
63477
  friend class ::WinAsm;
 
63478
  friend class ::WinDeclSpecs;
 
63479
  friend class ::WinMemberExplSpec;
 
63480
  friend class ::WinTypeKeywords;
 
63481
  friend class ::WinFriend;
 
63482
  friend class ::ExtAC;
 
63483
  friend class ::ExtACBuilderCoupling;
 
63484
  friend class ::ExtACSyntaxCoupling;
 
63485
  friend class ::ExtACTree;
 
63486
  friend class ::ExtACKeywords;
 
63487
  friend class ::ExtGnu;
 
63488
  friend class ::PragmaOnceUnitState;
 
63489
  friend class ::PragmaOnce;
 
63490
  friend class ::CMatchSyntax;
 
63491
 
 
63492
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63493
 
 
63494
  CTree *sons[3]; // virtual, access, name
 
63495
 
 
63496
public:
 
63497
  /** Constructor.
 
63498
   *  \param v Optional keyword 'virtual'.
 
63499
   *  \param a The optional access specifier.
 
63500
   *  \param n The name of the base class. */
 
63501
  CT_BaseSpec (CTree *v, CTree *a, CTree *n) {
 
63502
    AddSon (sons[0], v); AddSon (sons[1], a); AddSon (sons[2], n); 
 
63503
  }
 
63504
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63505
  static const char *NodeId ();
 
63506
  /** Get the name of the node. Can be compared with NodeId(). */
 
63507
  const char *NodeName () const { return NodeId (); }
 
63508
  /** Get the number of sons. */
 
63509
  int Sons () const { return CTree::Sons (sons, 3); }
 
63510
  /** Get the n-th son.
 
63511
   *  \param n The index of the son.
 
63512
   *  \return The n-th son or NULL. */
 
63513
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
63514
  /** Get the type of the access specifier (token type). */
 
63515
  int Access () const { return sons[1]->token ()->type (); }
 
63516
  /** The access specifier. */
 
63517
  CTree *AccessSpec () const { return sons[1]; }
 
63518
  /** Get the keyword 'virtual'. */
 
63519
  CTree *Virtual () const { return sons[0]; }
 
63520
  /** Get the name of the base class. */
 
63521
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
63522
  /** Replace a son.
 
63523
   *  \param old_son The son to replace.
 
63524
   *  \param new_son The new son. */
 
63525
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
63526
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
63527
  }
 
63528
public:
 
63529
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
63530
  const char *__attr_name (unsigned i) const {
 
63531
    static const char *names[] = { "sons" }; return names[i];
 
63532
  }
 
63533
  const void *__attr (unsigned __i) const {
 
63534
    switch (__i) { case 0: return &sons; default: return 0; }
 
63535
  }
 
63536
#line 4178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63537
};
 
63538
 
 
63539
/** \class CT_AccessDecl CTree.h Puma/CTree.h
 
63540
 *  Tree node representing a member access declaration.
 
63541
 *  Example: \code m_BaseClassMember; \endcode */
 
63542
 
 
63543
#line 63544 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63544
} // closed Puma
 
63545
class CCExprResolve;
 
63546
class CExprResolve;
 
63547
class WinIfExists;
 
63548
class WinImportHandler;
 
63549
class WinMacros;
 
63550
class WinAsm;
 
63551
class WinDeclSpecs;
 
63552
class WinMemberExplSpec;
 
63553
class WinTypeKeywords;
 
63554
class WinFriend;
 
63555
class ExtAC;
 
63556
class ExtACBuilderCoupling;
 
63557
class ExtACSyntaxCoupling;
 
63558
class ExtACTree;
 
63559
class ExtACKeywords;
 
63560
class ExtGnu;
 
63561
class PragmaOnceUnitState;
 
63562
class PragmaOnce;
 
63563
class CMatchSyntax;
 
63564
namespace Puma {
 
63565
 
 
63566
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63567
class CT_AccessDecl : public CT_Decl {
 
63568
#line 63569 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63569
  friend class ::CCExprResolve;
 
63570
  friend class ::CExprResolve;
 
63571
  friend class ::WinIfExists;
 
63572
  friend class ::WinImportHandler;
 
63573
  friend class ::WinMacros;
 
63574
  friend class ::WinAsm;
 
63575
  friend class ::WinDeclSpecs;
 
63576
  friend class ::WinMemberExplSpec;
 
63577
  friend class ::WinTypeKeywords;
 
63578
  friend class ::WinFriend;
 
63579
  friend class ::ExtAC;
 
63580
  friend class ::ExtACBuilderCoupling;
 
63581
  friend class ::ExtACSyntaxCoupling;
 
63582
  friend class ::ExtACTree;
 
63583
  friend class ::ExtACKeywords;
 
63584
  friend class ::ExtGnu;
 
63585
  friend class ::PragmaOnceUnitState;
 
63586
  friend class ::PragmaOnce;
 
63587
  friend class ::CMatchSyntax;
 
63588
 
 
63589
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63590
 
 
63591
  CTree *sons[2]; // name, semi_colon
 
63592
 
 
63593
public:
 
63594
  /** Constructor.
 
63595
   *  \param n The name of the base class member.
 
63596
   *  \param s The trailing semi-colon. */
 
63597
  CT_AccessDecl (CTree *n, CTree *s) { AddSon (sons[0], n); AddSon (sons[1], s); }
 
63598
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63599
  static const char *NodeId ();
 
63600
  /** Get the name of the node. Can be compared with NodeId(). */
 
63601
  const char *NodeName () const { return NodeId (); }
 
63602
  /** Get the number of sons. */
 
63603
  int Sons () const { return 2; }
 
63604
  /** Get the n-th son.
 
63605
   *  \param n The index of the son.
 
63606
   *  \return The n-th son or NULL. */
 
63607
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
63608
  /** Get the name of the base class member. */
 
63609
  CT_QualName *Member () const { return (CT_QualName*)sons[0]; }
 
63610
  /** Replace a son.
 
63611
   *  \param old_son The son to replace.
 
63612
   *  \param new_son The new son. */
 
63613
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
63614
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
63615
  }
 
63616
public:
 
63617
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
63618
  const char *__attr_name (unsigned i) const {
 
63619
    static const char *names[] = { "sons" }; return names[i];
 
63620
  }
 
63621
  const void *__attr (unsigned __i) const {
 
63622
    switch (__i) { case 0: return &sons; default: return 0; }
 
63623
  }
 
63624
#line 4209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63625
};
 
63626
 
 
63627
/** \class CT_UsingDecl CTree.h Puma/CTree.h
 
63628
 *  Tree node representing a using declaration.
 
63629
 *  Example: \code using Base::m_Member; \endcode */
 
63630
 
 
63631
#line 63632 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63632
} // closed Puma
 
63633
class CCExprResolve;
 
63634
class CExprResolve;
 
63635
class WinIfExists;
 
63636
class WinImportHandler;
 
63637
class WinMacros;
 
63638
class WinAsm;
 
63639
class WinDeclSpecs;
 
63640
class WinMemberExplSpec;
 
63641
class WinTypeKeywords;
 
63642
class WinFriend;
 
63643
class ExtAC;
 
63644
class ExtACBuilderCoupling;
 
63645
class ExtACSyntaxCoupling;
 
63646
class ExtACTree;
 
63647
class ExtACKeywords;
 
63648
class ExtGnu;
 
63649
class PragmaOnceUnitState;
 
63650
class PragmaOnce;
 
63651
class CMatchSyntax;
 
63652
namespace Puma {
 
63653
 
 
63654
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63655
class CT_UsingDecl : public CT_AccessDecl {
 
63656
#line 63657 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63657
  friend class ::CCExprResolve;
 
63658
  friend class ::CExprResolve;
 
63659
  friend class ::WinIfExists;
 
63660
  friend class ::WinImportHandler;
 
63661
  friend class ::WinMacros;
 
63662
  friend class ::WinAsm;
 
63663
  friend class ::WinDeclSpecs;
 
63664
  friend class ::WinMemberExplSpec;
 
63665
  friend class ::WinTypeKeywords;
 
63666
  friend class ::WinFriend;
 
63667
  friend class ::ExtAC;
 
63668
  friend class ::ExtACBuilderCoupling;
 
63669
  friend class ::ExtACSyntaxCoupling;
 
63670
  friend class ::ExtACTree;
 
63671
  friend class ::ExtACKeywords;
 
63672
  friend class ::ExtGnu;
 
63673
  friend class ::PragmaOnceUnitState;
 
63674
  friend class ::PragmaOnce;
 
63675
  friend class ::CMatchSyntax;
 
63676
 
 
63677
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63678
 
 
63679
  CTree *sons[2]; // using, typename
 
63680
 
 
63681
public:
 
63682
  /** Constructor.
 
63683
   *  \param u The keyword 'using'.
 
63684
   *  \param n The name of the entity.
 
63685
   *  \param s The trailing semi-colon. */
 
63686
  CT_UsingDecl (CTree *u, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
63687
    AddSon (sons[0], u); AddSon (sons[1], 0); 
 
63688
  }
 
63689
  /** Constructor.
 
63690
   *  \param u The keyword 'using'.
 
63691
   *  \param t The keyword 'typename'.
 
63692
   *  \param n The name of the entity.
 
63693
   *  \param s The trailing semi-colon. */
 
63694
  CT_UsingDecl (CTree *u, CTree *t, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
63695
    AddSon (sons[0], u); AddSon (sons[1], t); 
 
63696
  }
 
63697
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63698
  static const char *NodeId ();
 
63699
  /** Get the name of the node. Can be compared with NodeId(). */
 
63700
  const char *NodeName () const { return NodeId (); }
 
63701
  /** Get the number of sons. */
 
63702
  int Sons () const { return CTree::Sons (sons, 2) + CT_AccessDecl::Sons (); }
 
63703
  /** Get the n-th son.
 
63704
   *  \param n The index of the son.
 
63705
   *  \return The n-th son or NULL. */
 
63706
  CTree *Son (int n) const {
 
63707
    int num = CTree::Sons (sons, 2);
 
63708
    CTree *result = CTree::Son (sons, 2, n);
 
63709
    return result ? result : CT_AccessDecl::Son (n-num);
 
63710
  }
 
63711
  /** Get the keyword 'typename'. */
 
63712
  CTree *Typename () const { return sons[1]; }
 
63713
  /** Replace a son.
 
63714
   *  \param old_son The son to replace.
 
63715
   *  \param new_son The new son. */
 
63716
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
63717
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
63718
    CT_AccessDecl::ReplaceSon (old_son, new_son);
 
63719
  }
 
63720
public:
 
63721
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
63722
  const char *__attr_name (unsigned i) const {
 
63723
    static const char *names[] = { "sons" }; return names[i];
 
63724
  }
 
63725
  const void *__attr (unsigned __i) const {
 
63726
    switch (__i) { case 0: return &sons; default: return 0; }
 
63727
  }
 
63728
#line 4256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63729
};
 
63730
 
 
63731
/*****************************************************************************/
 
63732
/*                                                                           */
 
63733
/*                              Wildcards                                    */
 
63734
/*                                                                           */
 
63735
/*****************************************************************************/
 
63736
 
 
63737
/** \class CT_Any CTree.h Puma/CTree.h
 
63738
 *  Tree node representing a wildcard. */
 
63739
 
 
63740
#line 63741 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63741
} // closed Puma
 
63742
class CCExprResolve;
 
63743
class CExprResolve;
 
63744
class WinIfExists;
 
63745
class WinImportHandler;
 
63746
class WinMacros;
 
63747
class WinAsm;
 
63748
class WinDeclSpecs;
 
63749
class WinMemberExplSpec;
 
63750
class WinTypeKeywords;
 
63751
class WinFriend;
 
63752
class ExtAC;
 
63753
class ExtACBuilderCoupling;
 
63754
class ExtACSyntaxCoupling;
 
63755
class ExtACTree;
 
63756
class ExtACKeywords;
 
63757
class ExtGnu;
 
63758
class PragmaOnceUnitState;
 
63759
class PragmaOnce;
 
63760
class CMatchSyntax;
 
63761
namespace Puma {
 
63762
 
 
63763
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63764
class CT_Any : public CTree {
 
63765
#line 63766 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63766
  friend class ::CCExprResolve;
 
63767
  friend class ::CExprResolve;
 
63768
  friend class ::WinIfExists;
 
63769
  friend class ::WinImportHandler;
 
63770
  friend class ::WinMacros;
 
63771
  friend class ::WinAsm;
 
63772
  friend class ::WinDeclSpecs;
 
63773
  friend class ::WinMemberExplSpec;
 
63774
  friend class ::WinTypeKeywords;
 
63775
  friend class ::WinFriend;
 
63776
  friend class ::ExtAC;
 
63777
  friend class ::ExtACBuilderCoupling;
 
63778
  friend class ::ExtACSyntaxCoupling;
 
63779
  friend class ::ExtACTree;
 
63780
  friend class ::ExtACKeywords;
 
63781
  friend class ::ExtGnu;
 
63782
  friend class ::PragmaOnceUnitState;
 
63783
  friend class ::PragmaOnce;
 
63784
  friend class ::CMatchSyntax;
 
63785
 
 
63786
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63787
 
 
63788
  CTree *sons[2]; // keyword, extension
 
63789
 
 
63790
public:
 
63791
  /** Constructor.
 
63792
   *  \param k The wildcard keyword.
 
63793
   *  \param e The extension. */
 
63794
  CT_Any (CTree *k, CTree *e = (CTree*)0) { AddSon (sons[0], k); AddSon (sons[1], e); }
 
63795
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63796
  static const char *NodeId ();
 
63797
  /** Get the name of the node. Can be compared with NodeId(). */
 
63798
  const char *NodeName () const { return NodeId (); }
 
63799
  /** Get the number of sons. */
 
63800
  int Sons () const { return CTree::Sons (sons, 2); }
 
63801
  /** Get the n-th son.
 
63802
   *  \param n The index of the son.
 
63803
   *  \return The n-th son or NULL. */
 
63804
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
63805
  /** Replace a son.
 
63806
   *  \param old_son The son to replace.
 
63807
   *  \param new_son The new son. */
 
63808
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
63809
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
63810
  }
 
63811
  /** Get the type of the wildcard (token type). */
 
63812
  int AnyType () const { return sons[0]->token ()->type (); }
 
63813
  /** Get the extension. */
 
63814
  CT_AnyExtension *Extension () const { return (CT_AnyExtension*)sons[1]; }
 
63815
public:
 
63816
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
63817
  const char *__attr_name (unsigned i) const {
 
63818
    static const char *names[] = { "sons" }; return names[i];
 
63819
  }
 
63820
  const void *__attr (unsigned __i) const {
 
63821
    switch (__i) { case 0: return &sons; default: return 0; }
 
63822
  }
 
63823
#line 4294 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63824
};
 
63825
 
 
63826
/** \class CT_AnyList CTree.h Puma/CTree.h
 
63827
 *  Tree node representing a list wildcard. */
 
63828
 
 
63829
#line 63830 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63830
} // closed Puma
 
63831
class CCExprResolve;
 
63832
class CExprResolve;
 
63833
class WinIfExists;
 
63834
class WinImportHandler;
 
63835
class WinMacros;
 
63836
class WinAsm;
 
63837
class WinDeclSpecs;
 
63838
class WinMemberExplSpec;
 
63839
class WinTypeKeywords;
 
63840
class WinFriend;
 
63841
class ExtAC;
 
63842
class ExtACBuilderCoupling;
 
63843
class ExtACSyntaxCoupling;
 
63844
class ExtACTree;
 
63845
class ExtACKeywords;
 
63846
class ExtGnu;
 
63847
class PragmaOnceUnitState;
 
63848
class PragmaOnce;
 
63849
class CMatchSyntax;
 
63850
namespace Puma {
 
63851
 
 
63852
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63853
class CT_AnyList : public CT_Any {
 
63854
#line 63855 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63855
  friend class ::CCExprResolve;
 
63856
  friend class ::CExprResolve;
 
63857
  friend class ::WinIfExists;
 
63858
  friend class ::WinImportHandler;
 
63859
  friend class ::WinMacros;
 
63860
  friend class ::WinAsm;
 
63861
  friend class ::WinDeclSpecs;
 
63862
  friend class ::WinMemberExplSpec;
 
63863
  friend class ::WinTypeKeywords;
 
63864
  friend class ::WinFriend;
 
63865
  friend class ::ExtAC;
 
63866
  friend class ::ExtACBuilderCoupling;
 
63867
  friend class ::ExtACSyntaxCoupling;
 
63868
  friend class ::ExtACTree;
 
63869
  friend class ::ExtACKeywords;
 
63870
  friend class ::ExtGnu;
 
63871
  friend class ::PragmaOnceUnitState;
 
63872
  friend class ::PragmaOnce;
 
63873
  friend class ::CMatchSyntax;
 
63874
 
 
63875
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63876
 
 
63877
public:
 
63878
  /** Constructor.
 
63879
   *  \param k The wildcard keyword.
 
63880
   *  \param e The extension. */
 
63881
  CT_AnyList (CTree *k, CTree *e = (CTree*)0) : CT_Any (k, e) {}
 
63882
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63883
  static const char *NodeId ();
 
63884
  /** Get the name of the node. Can be compared with NodeId(). */
 
63885
  const char *NodeName () const { return NodeId (); }
 
63886
public:
 
63887
  typedef AC::TLE __AttrTypes;
 
63888
  const char *__attr_name (unsigned i) const { return 0; }
 
63889
  const void *__attr (unsigned __i) const { return 0; }
 
63890
#line 4308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63891
};
 
63892
 
 
63893
/** \class CT_AnyExtension CTree.h Puma/CTree.h
 
63894
 *  Tree node representing a wildcard extension. */
 
63895
 
 
63896
#line 63897 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63897
} // closed Puma
 
63898
class CCExprResolve;
 
63899
class CExprResolve;
 
63900
class WinIfExists;
 
63901
class WinImportHandler;
 
63902
class WinMacros;
 
63903
class WinAsm;
 
63904
class WinDeclSpecs;
 
63905
class WinMemberExplSpec;
 
63906
class WinTypeKeywords;
 
63907
class WinFriend;
 
63908
class ExtAC;
 
63909
class ExtACBuilderCoupling;
 
63910
class ExtACSyntaxCoupling;
 
63911
class ExtACTree;
 
63912
class ExtACKeywords;
 
63913
class ExtGnu;
 
63914
class PragmaOnceUnitState;
 
63915
class PragmaOnce;
 
63916
class CMatchSyntax;
 
63917
namespace Puma {
 
63918
 
 
63919
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63920
class CT_AnyExtension : public CTree, public CSemValue {
 
63921
#line 63922 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63922
  friend class ::CCExprResolve;
 
63923
  friend class ::CExprResolve;
 
63924
  friend class ::WinIfExists;
 
63925
  friend class ::WinImportHandler;
 
63926
  friend class ::WinMacros;
 
63927
  friend class ::WinAsm;
 
63928
  friend class ::WinDeclSpecs;
 
63929
  friend class ::WinMemberExplSpec;
 
63930
  friend class ::WinTypeKeywords;
 
63931
  friend class ::WinFriend;
 
63932
  friend class ::ExtAC;
 
63933
  friend class ::ExtACBuilderCoupling;
 
63934
  friend class ::ExtACSyntaxCoupling;
 
63935
  friend class ::ExtACTree;
 
63936
  friend class ::ExtACKeywords;
 
63937
  friend class ::ExtGnu;
 
63938
  friend class ::PragmaOnceUnitState;
 
63939
  friend class ::PragmaOnce;
 
63940
  friend class ::CMatchSyntax;
 
63941
 
 
63942
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63943
 
 
63944
  CTree *sons[5]; // open, string, comma, cond, close
 
63945
 
 
63946
public:
 
63947
  /** Constructor.
 
63948
   *  \param o Left parenthesis before the extension. 
 
63949
   *  \param n The name of the extension.
 
63950
   *  \param co The comma between the name and the condition. 
 
63951
   *  \param c The condition.
 
63952
   *  \param cr Right parenthesis behind the extension. */
 
63953
  CT_AnyExtension (CTree *o, CTree *n, CTree *co, CTree *c, CTree *cr) {
 
63954
    AddSon (sons[0], o); AddSon (sons[1], n); AddSon (sons[2], co); 
 
63955
    AddSon (sons[3], c); AddSon (sons[4], cr); 
 
63956
  }
 
63957
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
63958
  static const char *NodeId ();
 
63959
  /** Get the name of the node. Can be compared with NodeId(). */
 
63960
  const char *NodeName () const { return NodeId (); }
 
63961
  /** Get the number of sons. */
 
63962
  int Sons () const { return CTree::Sons (sons, 5); }
 
63963
  /** Get the n-th son.
 
63964
   *  \param n The index of the son.
 
63965
   *  \return The n-th son or NULL. */
 
63966
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
63967
  /** Replace a son.
 
63968
   *  \param old_son The son to replace.
 
63969
   *  \param new_son The new son. */
 
63970
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
63971
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
63972
  }
 
63973
  /** Get the condition. */
 
63974
  CTree *Condition () const { return sons[3]; }
 
63975
  /** Get the name string. */
 
63976
  CT_Token *String () const { return (CT_Token*)sons[1]; }
 
63977
  /** Get the extension name. */
 
63978
  const char *Name () const { return value ? value->StrLiteral ()->String () : (const char*)0; }
 
63979
  /** Get the value of the extension (the name). */
 
63980
  CExprValue *Value () const { return value; }
 
63981
  /** Get the semantic value information object. */
 
63982
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
63983
public:
 
63984
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
63985
  const char *__attr_name (unsigned i) const {
 
63986
    static const char *names[] = { "sons" }; return names[i];
 
63987
  }
 
63988
  const void *__attr (unsigned __i) const {
 
63989
    switch (__i) { case 0: return &sons; default: return 0; }
 
63990
  }
 
63991
#line 4352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
63992
};
 
63993
 
 
63994
/** \class CT_AnyCondition CTree.h Puma/CTree.h
 
63995
 *  Tree node representing the condition of a wildcard. */
 
63996
 
 
63997
#line 63998 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
63998
} // closed Puma
 
63999
class CCExprResolve;
 
64000
class CExprResolve;
 
64001
class WinIfExists;
 
64002
class WinImportHandler;
 
64003
class WinMacros;
 
64004
class WinAsm;
 
64005
class WinDeclSpecs;
 
64006
class WinMemberExplSpec;
 
64007
class WinTypeKeywords;
 
64008
class WinFriend;
 
64009
class ExtAC;
 
64010
class ExtACBuilderCoupling;
 
64011
class ExtACSyntaxCoupling;
 
64012
class ExtACTree;
 
64013
class ExtACKeywords;
 
64014
class ExtGnu;
 
64015
class PragmaOnceUnitState;
 
64016
class PragmaOnce;
 
64017
class CMatchSyntax;
 
64018
namespace Puma {
 
64019
 
 
64020
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
64021
class CT_AnyCondition : public CTree {
 
64022
#line 64023 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64023
  friend class ::CCExprResolve;
 
64024
  friend class ::CExprResolve;
 
64025
  friend class ::WinIfExists;
 
64026
  friend class ::WinImportHandler;
 
64027
  friend class ::WinMacros;
 
64028
  friend class ::WinAsm;
 
64029
  friend class ::WinDeclSpecs;
 
64030
  friend class ::WinMemberExplSpec;
 
64031
  friend class ::WinTypeKeywords;
 
64032
  friend class ::WinFriend;
 
64033
  friend class ::ExtAC;
 
64034
  friend class ::ExtACBuilderCoupling;
 
64035
  friend class ::ExtACSyntaxCoupling;
 
64036
  friend class ::ExtACTree;
 
64037
  friend class ::ExtACKeywords;
 
64038
  friend class ::ExtGnu;
 
64039
  friend class ::PragmaOnceUnitState;
 
64040
  friend class ::PragmaOnce;
 
64041
  friend class ::CMatchSyntax;
 
64042
 
 
64043
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
64044
 
 
64045
  CTree *sons[3]; // arg1, arg2, arg3
 
64046
 
 
64047
public:
 
64048
  /** Constructor.
 
64049
   *  \param a1 The first argument.
 
64050
   *  \param a2 The optional second argument.
 
64051
   *  \param a3 The optional third argument. */
 
64052
  CT_AnyCondition (CTree *a1, CTree *a2 = (CTree*)0, CTree *a3 = (CTree*)0) {
 
64053
    AddSon (sons[0], a1); AddSon (sons[1], a2); AddSon (sons[2], a3); 
 
64054
  }
 
64055
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
64056
  static const char *NodeId ();
 
64057
  /** Get the name of the node. Can be compared with NodeId(). */
 
64058
  const char *NodeName () const { return NodeId (); }
 
64059
  /** Get the number of sons. */
 
64060
  int Sons () const { return CTree::Sons (sons, 3); }
 
64061
  /** Get the n-th son.
 
64062
   *  \param n The index of the son.
 
64063
   *  \return The n-th son or NULL. */
 
64064
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
64065
  /** Replace a son.
 
64066
   *  \param old_son The son to replace.
 
64067
   *  \param new_son The new son. */
 
64068
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
64069
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
64070
  }
 
64071
public:
 
64072
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
64073
  const char *__attr_name (unsigned i) const {
 
64074
    static const char *names[] = { "sons" }; return names[i];
 
64075
  }
 
64076
  const void *__attr (unsigned __i) const {
 
64077
    switch (__i) { case 0: return &sons; default: return 0; }
 
64078
  }
 
64079
#line 4383 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
64080
};
 
64081
 
 
64082
 
 
64083
} // namespace Puma
 
64084
 
 
64085
#endif /* __CTree_h__ */
 
64086
 
 
64087
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64088
namespace Puma {
 
64089
 
 
64090
 
 
64091
/** \class CT_GnuAsmSpec GnuCTree.h Puma/GnuCTree.h
 
64092
 *  Tree node representing an extended inline assembly specifier. 
 
64093
 *  Example: \code asm("r0") \endcode */
 
64094
 
 
64095
#line 64096 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64096
} // closed Puma
 
64097
class CCExprResolve;
 
64098
class CExprResolve;
 
64099
class WinIfExists;
 
64100
class WinImportHandler;
 
64101
class WinMacros;
 
64102
class WinAsm;
 
64103
class WinDeclSpecs;
 
64104
class WinMemberExplSpec;
 
64105
class WinTypeKeywords;
 
64106
class WinFriend;
 
64107
class ExtAC;
 
64108
class ExtACBuilderCoupling;
 
64109
class ExtACSyntaxCoupling;
 
64110
class ExtACTree;
 
64111
class ExtACKeywords;
 
64112
class ExtGnu;
 
64113
class PragmaOnceUnitState;
 
64114
class PragmaOnce;
 
64115
class CMatchSyntax;
 
64116
namespace Puma {
 
64117
 
 
64118
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64119
class CT_GnuAsmSpec : public CTree {
 
64120
#line 64121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64121
  friend class ::CCExprResolve;
 
64122
  friend class ::CExprResolve;
 
64123
  friend class ::WinIfExists;
 
64124
  friend class ::WinImportHandler;
 
64125
  friend class ::WinMacros;
 
64126
  friend class ::WinAsm;
 
64127
  friend class ::WinDeclSpecs;
 
64128
  friend class ::WinMemberExplSpec;
 
64129
  friend class ::WinTypeKeywords;
 
64130
  friend class ::WinFriend;
 
64131
  friend class ::ExtAC;
 
64132
  friend class ::ExtACBuilderCoupling;
 
64133
  friend class ::ExtACSyntaxCoupling;
 
64134
  friend class ::ExtACTree;
 
64135
  friend class ::ExtACKeywords;
 
64136
  friend class ::ExtGnu;
 
64137
  friend class ::PragmaOnceUnitState;
 
64138
  friend class ::PragmaOnce;
 
64139
  friend class ::CMatchSyntax;
 
64140
 
 
64141
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64142
 
 
64143
  CTree *_key_asm;    // CT_Token
 
64144
  CTree *_open;   // CT_Token
 
64145
  CTree *_expr;
 
64146
  CTree *_close;  // CT_Token
 
64147
 
 
64148
public:
 
64149
  /** Constructor.
 
64150
   *  \param a The keyword 'asm'.
 
64151
   *  \param o Left parenthesis before the assembly.
 
64152
   *  \param e The assembly instructions.
 
64153
   *  \param c Right parenthesis behind the assembly. */
 
64154
  CT_GnuAsmSpec (CTree *a, CTree *o, CTree *e, CTree *c) :
 
64155
    _key_asm (a), _open (o), _expr (e), _close (c) {}
 
64156
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
64157
  static const char *NodeId ();
 
64158
  /** Get the name of the node. Can be compared with NodeId(). */
 
64159
  const char *NodeName () const { return NodeId (); } 
 
64160
  /** Get the number of sons. */
 
64161
  int Sons () const { return 4; }
 
64162
  /** Get the n-th son.
 
64163
   *  \param n The index of the son.
 
64164
   *  \return The n-th son or NULL. */
 
64165
  CTree *Son (int n) const {
 
64166
    switch (n) {
 
64167
      case 0: return _key_asm;
 
64168
      case 1: return _open;
 
64169
      case 2: return _expr;
 
64170
      case 3: return _close;
 
64171
      default: return (CTree*)0;
 
64172
    }
 
64173
  }
 
64174
  /** Get the assembly instructions. */
 
64175
  CT_Expression *Expr () const { return (CT_Expression*)_expr; }
 
64176
  /** Replace a son.
 
64177
   *  \param old_son The son to replace.
 
64178
   *  \param new_son The new son. */
 
64179
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
64180
    if (old_son == _expr) _expr = new_son;
 
64181
    else if (old_son == _key_asm) _key_asm = new_son;
 
64182
    else if (old_son == _open) _open = new_son;
 
64183
    else if (old_son == _close) _close = new_son;
 
64184
  }
 
64185
public:
 
64186
  typedef AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
64187
  const char *__attr_name (unsigned i) const {
 
64188
    static const char *names[] = { "_key_asm", "_open", "_expr", "_close" }; return names[i];
 
64189
  }
 
64190
  const void *__attr (unsigned __i) const {
 
64191
    switch (__i) { case 0: return &_key_asm; case 1: return &_open; case 2: return &_expr; case 3: return &_close; default: return 0; }
 
64192
  }
 
64193
#line 89 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64194
};
 
64195
 
 
64196
/** \class CT_GnuAsmDef GnuCTree.h Puma/GnuCTree.h
 
64197
 *  Tree node representing an extended inline assembly definition. 
 
64198
 *  Example: \code asm("fsinx %1,%0" : "=f" (result) : "f" (angle)); \endcode */
 
64199
 
 
64200
#line 64201 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64201
} // closed Puma
 
64202
class CCExprResolve;
 
64203
class CExprResolve;
 
64204
class WinIfExists;
 
64205
class WinImportHandler;
 
64206
class WinMacros;
 
64207
class WinAsm;
 
64208
class WinDeclSpecs;
 
64209
class WinMemberExplSpec;
 
64210
class WinTypeKeywords;
 
64211
class WinFriend;
 
64212
class ExtAC;
 
64213
class ExtACBuilderCoupling;
 
64214
class ExtACSyntaxCoupling;
 
64215
class ExtACTree;
 
64216
class ExtACKeywords;
 
64217
class ExtGnu;
 
64218
class PragmaOnceUnitState;
 
64219
class PragmaOnce;
 
64220
class CMatchSyntax;
 
64221
namespace Puma {
 
64222
 
 
64223
#line 94 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64224
class CT_GnuAsmDef : public CT_AsmDef {
 
64225
#line 64226 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64226
  friend class ::CCExprResolve;
 
64227
  friend class ::CExprResolve;
 
64228
  friend class ::WinIfExists;
 
64229
  friend class ::WinImportHandler;
 
64230
  friend class ::WinMacros;
 
64231
  friend class ::WinAsm;
 
64232
  friend class ::WinDeclSpecs;
 
64233
  friend class ::WinMemberExplSpec;
 
64234
  friend class ::WinTypeKeywords;
 
64235
  friend class ::WinFriend;
 
64236
  friend class ::ExtAC;
 
64237
  friend class ::ExtACBuilderCoupling;
 
64238
  friend class ::ExtACSyntaxCoupling;
 
64239
  friend class ::ExtACTree;
 
64240
  friend class ::ExtACKeywords;
 
64241
  friend class ::ExtGnu;
 
64242
  friend class ::PragmaOnceUnitState;
 
64243
  friend class ::PragmaOnce;
 
64244
  friend class ::CMatchSyntax;
 
64245
 
 
64246
#line 94 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64247
 
 
64248
  CTree *_cvqual;
 
64249
  CTree *_operands0;
 
64250
  CTree *_operands1;
 
64251
  CTree *_clobbers;
 
64252
 
 
64253
public:
 
64254
  /** Constructor.
 
64255
   *  \param a The keyword 'asm'.
 
64256
   *  \param cv Optional const/volatile qualifier sequence.
 
64257
   *  \param o Left parenthesis before the assembly.
 
64258
   *  \param s The assembly instructions.
 
64259
   *  \param op0 First operand.
 
64260
   *  \param op1 Second operand.
 
64261
   *  \param cl Clobbers.
 
64262
   *  \param c Right parenthesis behind the assembly.
 
64263
   *  \param sc The trailing semi-colon. */
 
64264
  CT_GnuAsmDef (CTree *a, CTree *cv, CTree *o, CTree *s, 
 
64265
                CTree *op0, CTree *op1, CTree *cl, CTree *c, CTree *sc) :
 
64266
    CT_AsmDef (a, o, s, c, sc) {
 
64267
      _cvqual = cv; _operands0 = op0; _operands1 = op1; _clobbers = cl;
 
64268
  }
 
64269
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
64270
  static const char *NodeId ();
 
64271
  /** Get the name of the node. Can be compared with NodeId(). */
 
64272
  const char *NodeName () const { return NodeId (); }  
 
64273
  /** Get the number of sons. */
 
64274
  virtual int Sons () const {
 
64275
    return 5 +
 
64276
           (_cvqual ? 1 : 0) +
 
64277
           (_operands0 ? 1 : 0) +
 
64278
           (_operands1 ? 1 : 0) +
 
64279
           (_clobbers ? 1 : 0);
 
64280
  }
 
64281
  /** Get the n-th son.
 
64282
   *  \param n The index of the son.
 
64283
   *  \return The n-th son or NULL. */
 
64284
  virtual CTree *Son (int n) const {
 
64285
    int have_cv = _cvqual ? 1 : 0;
 
64286
    int gnu_sons = Sons () - have_cv - 5;
 
64287
    int gnu_first = 3 + have_cv;
 
64288
    if (n == 0) return CT_AsmDef::Son (0);
 
64289
    else if (n == 1 && _cvqual) return _cvqual;
 
64290
    else if ((n == 1 && !_cvqual) || (n == 2 && _cvqual))
 
64291
       return CT_AsmDef::Son (1);
 
64292
    else if ((n == 2 && !_cvqual) || (n == 3 && _cvqual))
 
64293
       return CT_AsmDef::Son (2);
 
64294
    else if (n == gnu_first && gnu_sons >= 1) return _operands0;
 
64295
    else if (n == gnu_first + 1 && gnu_sons >= 2) return _operands1;
 
64296
    else if (n == gnu_first + 2 && gnu_sons >= 3) return _clobbers;
 
64297
    else if (n == Sons () - 2)
 
64298
       return CT_AsmDef::Son (3);
 
64299
    else if (n == Sons () - 1)
 
64300
       return CT_AsmDef::Son (4);
 
64301
    else return (CTree*)0;
 
64302
  }
 
64303
  /** Replace a son.
 
64304
   *  \param old_son The son to replace.
 
64305
   *  \param new_son The new son. */
 
64306
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {
 
64307
    if (old_son == _cvqual) _cvqual = new_son;
 
64308
    else if (old_son == _operands0) _operands0 = new_son;
 
64309
    else if (old_son == _operands1) _operands1 = new_son;
 
64310
    else if (old_son == _clobbers) _clobbers = new_son;
 
64311
    else CT_AsmDef::ReplaceSon (old_son, new_son);
 
64312
  }
 
64313
public:
 
64314
  typedef AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
64315
  const char *__attr_name (unsigned i) const {
 
64316
    static const char *names[] = { "_cvqual", "_operands0", "_operands1", "_clobbers" }; return names[i];
 
64317
  }
 
64318
  const void *__attr (unsigned __i) const {
 
64319
    switch (__i) { case 0: return &_cvqual; case 1: return &_operands0; case 2: return &_operands1; case 3: return &_clobbers; default: return 0; }
 
64320
  }
 
64321
#line 160 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64322
};
 
64323
 
 
64324
/** \class CT_GnuAsmOperand GnuCTree.h Puma/GnuCTree.h
 
64325
 *  Tree node representing an extended inline assembly operand. 
 
64326
 *  Example: \code "=f" (result) \endcode */
 
64327
 
 
64328
#line 64329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64329
} // closed Puma
 
64330
class CCExprResolve;
 
64331
class CExprResolve;
 
64332
class WinIfExists;
 
64333
class WinImportHandler;
 
64334
class WinMacros;
 
64335
class WinAsm;
 
64336
class WinDeclSpecs;
 
64337
class WinMemberExplSpec;
 
64338
class WinTypeKeywords;
 
64339
class WinFriend;
 
64340
class ExtAC;
 
64341
class ExtACBuilderCoupling;
 
64342
class ExtACSyntaxCoupling;
 
64343
class ExtACTree;
 
64344
class ExtACKeywords;
 
64345
class ExtGnu;
 
64346
class PragmaOnceUnitState;
 
64347
class PragmaOnce;
 
64348
class CMatchSyntax;
 
64349
namespace Puma {
 
64350
 
 
64351
#line 165 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64352
class CT_GnuAsmOperand : public CTree {
 
64353
#line 64354 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64354
  friend class ::CCExprResolve;
 
64355
  friend class ::CExprResolve;
 
64356
  friend class ::WinIfExists;
 
64357
  friend class ::WinImportHandler;
 
64358
  friend class ::WinMacros;
 
64359
  friend class ::WinAsm;
 
64360
  friend class ::WinDeclSpecs;
 
64361
  friend class ::WinMemberExplSpec;
 
64362
  friend class ::WinTypeKeywords;
 
64363
  friend class ::WinFriend;
 
64364
  friend class ::ExtAC;
 
64365
  friend class ::ExtACBuilderCoupling;
 
64366
  friend class ::ExtACSyntaxCoupling;
 
64367
  friend class ::ExtACTree;
 
64368
  friend class ::ExtACKeywords;
 
64369
  friend class ::ExtGnu;
 
64370
  friend class ::PragmaOnceUnitState;
 
64371
  friend class ::PragmaOnce;
 
64372
  friend class ::CMatchSyntax;
 
64373
 
 
64374
#line 165 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64375
 
 
64376
  CTree *_string;
 
64377
  CTree *_open;   // CT_Token
 
64378
  CTree *_expr;
 
64379
  CTree *_close;  // CT_Token
 
64380
 
 
64381
public:
 
64382
  /** Constructor.
 
64383
   *  \param s The operand constraint string.
 
64384
   *  \param o Left parenthesis before the operand.
 
64385
   *  \param e The operand.
 
64386
   *  \param c Right parenthesis behind the operand. */
 
64387
  CT_GnuAsmOperand (CTree *s, CTree *o, CTree *e, CTree *c) :
 
64388
    _string (s), _open (o), _expr (e), _close (c) {}
 
64389
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
64390
  static const char *NodeId ();
 
64391
  /** Get the name of the node. Can be compared with NodeId(). */
 
64392
  const char *NodeName () const { return NodeId (); } 
 
64393
  /** Get the number of sons. */
 
64394
  int Sons () const { return 4; }
 
64395
  /** Get the n-th son.
 
64396
   *  \param n The index of the son.
 
64397
   *  \return The n-th son or NULL. */
 
64398
  CTree *Son (int n) const {
 
64399
    switch (n) {
 
64400
      case 0: return _string;
 
64401
      case 1: return _open;
 
64402
      case 2: return _expr;
 
64403
      case 3: return _close;
 
64404
      default: return (CTree*)0;
 
64405
    }
 
64406
  }
 
64407
  /** Get the operand expression. */
 
64408
  CT_Expression *Expr () const { return (CT_Expression*)_expr; }
 
64409
  /** Get the operand constraint string. */
 
64410
  CT_String *String () const { return (CT_String*)_string; }
 
64411
  /** Replace a son.
 
64412
   *  \param old_son The son to replace.
 
64413
   *  \param new_son The new son. */
 
64414
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
64415
    if (old_son == _expr) _expr = new_son;
 
64416
    else if (old_son == _string) _string = new_son;
 
64417
    else if (old_son == _open) _open = new_son;
 
64418
    else if (old_son == _close) _close = new_son;
 
64419
  }
 
64420
public:
 
64421
  typedef AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
64422
  const char *__attr_name (unsigned i) const {
 
64423
    static const char *names[] = { "_string", "_open", "_expr", "_close" }; return names[i];
 
64424
  }
 
64425
  const void *__attr (unsigned __i) const {
 
64426
    switch (__i) { case 0: return &_string; case 1: return &_open; case 2: return &_expr; case 3: return &_close; default: return 0; }
 
64427
  }
 
64428
#line 210 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64429
};
 
64430
 
 
64431
/** \class CT_GnuAsmOperands GnuCTree.h Puma/GnuCTree.h
 
64432
 *  Tree node representing a list of extended inline assembly operands. 
 
64433
 *  Example: \code : "=f" (result) : "f" (angle) \endcode */
 
64434
 
 
64435
#line 64436 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64436
} // closed Puma
 
64437
class CCExprResolve;
 
64438
class CExprResolve;
 
64439
class WinIfExists;
 
64440
class WinImportHandler;
 
64441
class WinMacros;
 
64442
class WinAsm;
 
64443
class WinDeclSpecs;
 
64444
class WinMemberExplSpec;
 
64445
class WinTypeKeywords;
 
64446
class WinFriend;
 
64447
class ExtAC;
 
64448
class ExtACBuilderCoupling;
 
64449
class ExtACSyntaxCoupling;
 
64450
class ExtACTree;
 
64451
class ExtACKeywords;
 
64452
class ExtGnu;
 
64453
class PragmaOnceUnitState;
 
64454
class PragmaOnce;
 
64455
class CMatchSyntax;
 
64456
namespace Puma {
 
64457
 
 
64458
#line 215 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64459
class CT_GnuAsmOperands : public CT_List {
 
64460
#line 64461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64461
  friend class ::CCExprResolve;
 
64462
  friend class ::CExprResolve;
 
64463
  friend class ::WinIfExists;
 
64464
  friend class ::WinImportHandler;
 
64465
  friend class ::WinMacros;
 
64466
  friend class ::WinAsm;
 
64467
  friend class ::WinDeclSpecs;
 
64468
  friend class ::WinMemberExplSpec;
 
64469
  friend class ::WinTypeKeywords;
 
64470
  friend class ::WinFriend;
 
64471
  friend class ::ExtAC;
 
64472
  friend class ::ExtACBuilderCoupling;
 
64473
  friend class ::ExtACSyntaxCoupling;
 
64474
  friend class ::ExtACTree;
 
64475
  friend class ::ExtACKeywords;
 
64476
  friend class ::ExtGnu;
 
64477
  friend class ::PragmaOnceUnitState;
 
64478
  friend class ::PragmaOnce;
 
64479
  friend class ::CMatchSyntax;
 
64480
 
 
64481
#line 215 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64482
 
 
64483
public:
 
64484
  /** Constructor. */
 
64485
  CT_GnuAsmOperands () { AddProperties (OPEN | SEPARATORS); }
 
64486
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
64487
  static const char *NodeId ();
 
64488
  /** Get the name of the node. Can be compared with NodeId(). */
 
64489
  const char *NodeName () const { return NodeId (); }  
 
64490
public:
 
64491
  typedef AC::TLE __AttrTypes;
 
64492
  const char *__attr_name (unsigned i) const { return 0; }
 
64493
  const void *__attr (unsigned __i) const { return 0; }
 
64494
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64495
};
 
64496
 
 
64497
/** \class CT_GnuAsmClobbers GnuCTree.h Puma/GnuCTree.h
 
64498
 *  Tree node representing a list of extended inline assembly clobbers. 
 
64499
 *  Example: \code : "r1", "r2", "r3", "r4", "r5" \endcode */
 
64500
 
 
64501
#line 64502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64502
} // closed Puma
 
64503
class CCExprResolve;
 
64504
class CExprResolve;
 
64505
class WinIfExists;
 
64506
class WinImportHandler;
 
64507
class WinMacros;
 
64508
class WinAsm;
 
64509
class WinDeclSpecs;
 
64510
class WinMemberExplSpec;
 
64511
class WinTypeKeywords;
 
64512
class WinFriend;
 
64513
class ExtAC;
 
64514
class ExtACBuilderCoupling;
 
64515
class ExtACSyntaxCoupling;
 
64516
class ExtACTree;
 
64517
class ExtACKeywords;
 
64518
class ExtGnu;
 
64519
class PragmaOnceUnitState;
 
64520
class PragmaOnce;
 
64521
class CMatchSyntax;
 
64522
namespace Puma {
 
64523
 
 
64524
#line 228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64525
class CT_GnuAsmClobbers : public CT_List {
 
64526
#line 64527 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64527
  friend class ::CCExprResolve;
 
64528
  friend class ::CExprResolve;
 
64529
  friend class ::WinIfExists;
 
64530
  friend class ::WinImportHandler;
 
64531
  friend class ::WinMacros;
 
64532
  friend class ::WinAsm;
 
64533
  friend class ::WinDeclSpecs;
 
64534
  friend class ::WinMemberExplSpec;
 
64535
  friend class ::WinTypeKeywords;
 
64536
  friend class ::WinFriend;
 
64537
  friend class ::ExtAC;
 
64538
  friend class ::ExtACBuilderCoupling;
 
64539
  friend class ::ExtACSyntaxCoupling;
 
64540
  friend class ::ExtACTree;
 
64541
  friend class ::ExtACKeywords;
 
64542
  friend class ::ExtGnu;
 
64543
  friend class ::PragmaOnceUnitState;
 
64544
  friend class ::PragmaOnce;
 
64545
  friend class ::CMatchSyntax;
 
64546
 
 
64547
#line 228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64548
 
 
64549
public:
 
64550
  /** Constructor. */
 
64551
  CT_GnuAsmClobbers () { AddProperties (OPEN | SEPARATORS); }
 
64552
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
64553
  static const char *NodeId ();
 
64554
  /** Get the name of the node. Can be compared with NodeId(). */
 
64555
  const char *NodeName () const { return NodeId (); }  
 
64556
public:
 
64557
  typedef AC::TLE __AttrTypes;
 
64558
  const char *__attr_name (unsigned i) const { return 0; }
 
64559
  const void *__attr (unsigned __i) const { return 0; }
 
64560
#line 236 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64561
};
 
64562
 
 
64563
/*****************************************************************************/
 
64564
/*                                                                           */
 
64565
/*                              Expressions                                  */
 
64566
/*                                                                           */
 
64567
/*****************************************************************************/
 
64568
 
 
64569
/** \class CT_GnuStatementExpr GnuCTree.h Puma/GnuCTree.h
 
64570
 *  Tree node representing a statement expression. 
 
64571
 *  Example: \code ({ int i = 0; i++; }) \endcode */
 
64572
 
 
64573
#line 64574 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64574
} // closed Puma
 
64575
class CCExprResolve;
 
64576
class CExprResolve;
 
64577
class WinIfExists;
 
64578
class WinImportHandler;
 
64579
class WinMacros;
 
64580
class WinAsm;
 
64581
class WinDeclSpecs;
 
64582
class WinMemberExplSpec;
 
64583
class WinTypeKeywords;
 
64584
class WinFriend;
 
64585
class ExtAC;
 
64586
class ExtACBuilderCoupling;
 
64587
class ExtACSyntaxCoupling;
 
64588
class ExtACTree;
 
64589
class ExtACKeywords;
 
64590
class ExtGnu;
 
64591
class PragmaOnceUnitState;
 
64592
class PragmaOnce;
 
64593
class CMatchSyntax;
 
64594
namespace Puma {
 
64595
 
 
64596
#line 247 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64597
 
 
64598
#line 64599 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64599
} // closed Puma
 
64600
 
 
64601
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
64602
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
64603
#include "CCExprResolveH.ah"
 
64604
#endif
 
64605
namespace Puma {
 
64606
 
 
64607
#line 247 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64608
 
 
64609
#line 64610 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64610
} // closed Puma
 
64611
 
 
64612
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
64613
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
64614
#include "CExprResolveH.ah"
 
64615
#endif
 
64616
namespace Puma {
 
64617
 
 
64618
#line 247 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64619
class CT_GnuStatementExpr : public CT_Expression {
 
64620
#line 64621 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64621
  friend class ::CCExprResolve;
 
64622
  friend class ::CExprResolve;
 
64623
  friend class ::WinIfExists;
 
64624
  friend class ::WinImportHandler;
 
64625
  friend class ::WinMacros;
 
64626
  friend class ::WinAsm;
 
64627
  friend class ::WinDeclSpecs;
 
64628
  friend class ::WinMemberExplSpec;
 
64629
  friend class ::WinTypeKeywords;
 
64630
  friend class ::WinFriend;
 
64631
  friend class ::ExtAC;
 
64632
  friend class ::ExtACBuilderCoupling;
 
64633
  friend class ::ExtACSyntaxCoupling;
 
64634
  friend class ::ExtACTree;
 
64635
  friend class ::ExtACKeywords;
 
64636
  friend class ::ExtGnu;
 
64637
  friend class ::PragmaOnceUnitState;
 
64638
  friend class ::PragmaOnce;
 
64639
  friend class ::CMatchSyntax;
 
64640
 
 
64641
#line 247 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64642
 
 
64643
  CTree *_open;
 
64644
  CTree *_stmt;
 
64645
  CTree *_close;
 
64646
  
 
64647
public:
 
64648
  /** Constructor.
 
64649
   *  \param o Left parenthesis before the statement.
 
64650
   *  \param s The statement. 
 
64651
   *  \param c Right parenthesis behind the statement. */
 
64652
  CT_GnuStatementExpr (CTree *o, CTree *s, CTree *c) :
 
64653
    _open (o), _stmt (s), _close (c) {}
 
64654
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
64655
  static const char *NodeId ();
 
64656
  /** Get the name of the node. Can be compared with NodeId(). */
 
64657
  const char *NodeName () const { return NodeId (); }  
 
64658
  /** Get the number of sons. */
 
64659
  int Sons () const { return 3; }
 
64660
  /** Get the n-th son.
 
64661
   *  \param n The index of the son.
 
64662
   *  \return The n-th son or NULL. */
 
64663
  CTree *Son (int n) const {
 
64664
    switch (n) {
 
64665
      case 0: return _open;
 
64666
      case 1: return _stmt;
 
64667
      case 2: return _close;
 
64668
      default: return (CTree*)0;
 
64669
    }
 
64670
  }
 
64671
  /** Get the statement. */
 
64672
  CT_CmpdStmt *CmpdStmt () const { return (CT_CmpdStmt*)Son (1); }
 
64673
   private:
 
64674
  typedef CT_GnuStatementExpr CCExprResolveExpr;
 
64675
 
 
64676
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
64677
 public :
 
64678
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
64679
  typedef CT_GnuStatementExpr CExprResolveExpr;
 
64680
 
 
64681
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
64682
 public :
 
64683
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
64684
  typedef AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > __AttrTypes;
 
64685
  const char *__attr_name (unsigned i) const {
 
64686
    static const char *names[] = { "_open", "_stmt", "_close" }; return names[i];
 
64687
  }
 
64688
  const void *__attr (unsigned __i) const {
 
64689
    switch (__i) { case 0: return &_open; case 1: return &_stmt; case 2: return &_close; default: return 0; }
 
64690
  }
 
64691
#line 278 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64692
};
 
64693
 
 
64694
/*****************************************************************************/
 
64695
/*                                                                           */
 
64696
/*                         Declaration specifiers                            */
 
64697
/*                                                                           */
 
64698
/*****************************************************************************/
 
64699
 
 
64700
/** \class CT_GnuTypeof GnuCTree.h Puma/GnuCTree.h
 
64701
 *  Tree node representing a typeof expression. 
 
64702
 *  Example: \code typeof(a+b) \endcode */
 
64703
 
 
64704
#line 64705 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64705
} // closed Puma
 
64706
class CCExprResolve;
 
64707
class CExprResolve;
 
64708
class WinIfExists;
 
64709
class WinImportHandler;
 
64710
class WinMacros;
 
64711
class WinAsm;
 
64712
class WinDeclSpecs;
 
64713
class WinMemberExplSpec;
 
64714
class WinTypeKeywords;
 
64715
class WinFriend;
 
64716
class ExtAC;
 
64717
class ExtACBuilderCoupling;
 
64718
class ExtACSyntaxCoupling;
 
64719
class ExtACTree;
 
64720
class ExtACKeywords;
 
64721
class ExtGnu;
 
64722
class PragmaOnceUnitState;
 
64723
class PragmaOnce;
 
64724
class CMatchSyntax;
 
64725
namespace Puma {
 
64726
 
 
64727
#line 289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64728
class CT_GnuTypeof : public CT_DeclSpec, public CSemValue {
 
64729
#line 64730 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64730
  friend class ::CCExprResolve;
 
64731
  friend class ::CExprResolve;
 
64732
  friend class ::WinIfExists;
 
64733
  friend class ::WinImportHandler;
 
64734
  friend class ::WinMacros;
 
64735
  friend class ::WinAsm;
 
64736
  friend class ::WinDeclSpecs;
 
64737
  friend class ::WinMemberExplSpec;
 
64738
  friend class ::WinTypeKeywords;
 
64739
  friend class ::WinFriend;
 
64740
  friend class ::ExtAC;
 
64741
  friend class ::ExtACBuilderCoupling;
 
64742
  friend class ::ExtACSyntaxCoupling;
 
64743
  friend class ::ExtACTree;
 
64744
  friend class ::ExtACKeywords;
 
64745
  friend class ::ExtGnu;
 
64746
  friend class ::PragmaOnceUnitState;
 
64747
  friend class ::PragmaOnce;
 
64748
  friend class ::CMatchSyntax;
 
64749
 
 
64750
#line 289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64751
 
 
64752
  CTree *sons[5]; // key, open, type, close, expr
 
64753
 
 
64754
public:
 
64755
  /** Constructor.
 
64756
   *  \param k The keyword 'typeof'.
 
64757
   *  \param o Left parenthesis before the type.
 
64758
   *  \param t The type from which to get the type string.
 
64759
   *  \param c Right parenthesis behind the type. */
 
64760
  CT_GnuTypeof (CTree *k, CTree *o, CTree *t, CTree *c) {
 
64761
    sons[0] = k; sons[1] = o; sons[2] = t; sons[3] = c; sons[4] = 0;
 
64762
  }
 
64763
  /** Constructor.
 
64764
   *  \param k The keyword 'typeof'.
 
64765
   *  \param e The expression from which to get the type string. */
 
64766
  CT_GnuTypeof (CTree *k, CTree *e) {
 
64767
    sons[0] = k; sons[1] = 0; sons[2] = 0; sons[3] = 0; sons[4] = e;
 
64768
  }
 
64769
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
64770
  static const char *NodeId ();
 
64771
  /** Get the name of the node. Can be compared with NodeId(). */
 
64772
  const char *NodeName () const { return NodeId (); }
 
64773
  /** Get the number of sons. */
 
64774
  int Sons () const { return CTree::Sons (sons, 5); }
 
64775
  /** Get the n-th son.
 
64776
   *  \param n The index of the son.
 
64777
   *  \return The n-th son or NULL. */
 
64778
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
64779
  /** Replace a son.
 
64780
   *  \param old_son The son to replace.
 
64781
   *  \param new_son The new son. */
 
64782
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
64783
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
64784
  }
 
64785
  /** Get the expression from which to get the type string. */
 
64786
  CTree *Expr () const { return sons[4]; }
 
64787
  /** Get the type from which to get the type string. */
 
64788
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
64789
  /** Get the semantic value information. */
 
64790
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
64791
  /** Get the resulting type. */
 
64792
  CTypeInfo *Type () const { return type; }
 
64793
public:
 
64794
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
64795
  const char *__attr_name (unsigned i) const {
 
64796
    static const char *names[] = { "sons" }; return names[i];
 
64797
  }
 
64798
  const void *__attr (unsigned __i) const {
 
64799
    switch (__i) { case 0: return &sons; default: return 0; }
 
64800
  }
 
64801
#line 331 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
64802
};
 
64803
 
 
64804
} // namespace Puma
 
64805
 
 
64806
#endif /* __gnu_c_tree_h__ */
 
64807
 
 
64808
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
64809
 
 
64810
#line 64811 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64811
 
 
64812
#ifndef __ac_fwd_ExtGnu__
 
64813
#define __ac_fwd_ExtGnu__
 
64814
class ExtGnu;
 
64815
namespace AC {
 
64816
  template <class JoinPoint>
 
64817
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
64818
  template <class JoinPoint>
 
64819
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
64820
  template <class JoinPoint>
 
64821
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_after (JoinPoint *tjp);
 
64822
  template <class JoinPoint>
 
64823
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_around (JoinPoint *tjp);
 
64824
  template <class JoinPoint>
 
64825
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
64826
  template <class JoinPoint>
 
64827
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
64828
  template <class JoinPoint>
 
64829
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
64830
  template <class JoinPoint>
 
64831
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
64832
  template <class JoinPoint>
 
64833
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_after (JoinPoint *tjp);
 
64834
  template <class JoinPoint>
 
64835
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
64836
  template <class JoinPoint>
 
64837
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
64838
  template <class JoinPoint>
 
64839
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_before (JoinPoint *tjp);
 
64840
  template <class JoinPoint>
 
64841
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
64842
  template <class JoinPoint>
 
64843
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_after (JoinPoint *tjp);
 
64844
  template <class JoinPoint>
 
64845
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
64846
  template <class JoinPoint>
 
64847
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
64848
  template <class JoinPoint>
 
64849
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
64850
  template <class JoinPoint>
 
64851
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
64852
  template <class JoinPoint>
 
64853
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_before (JoinPoint *tjp);
 
64854
  template <class JoinPoint>
 
64855
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_before (JoinPoint *tjp);
 
64856
  template <class JoinPoint>
 
64857
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_around (JoinPoint *tjp);
 
64858
}
 
64859
#endif
 
64860
 
 
64861
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
64862
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
64863
#endif
 
64864
 
 
64865
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
64866
// This file is part of PUMA.
 
64867
// Copyright (C) 1999-2003  The PUMA developer team.
 
64868
//                                                                
 
64869
// This program is free software;  you can redistribute it and/or 
 
64870
// modify it under the terms of the GNU General Public License as 
 
64871
// published by the Free Software Foundation; either version 2 of 
 
64872
// the License, or (at your option) any later version.            
 
64873
//                                                                
 
64874
// This program is distributed in the hope that it will be useful,
 
64875
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
64876
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
64877
// GNU General Public License for more details.                   
 
64878
//                                                                
 
64879
// You should have received a copy of the GNU General Public      
 
64880
// License along with this program; if not, write to the Free     
 
64881
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
64882
// MA  02111-1307  USA                                            
 
64883
 
 
64884
#ifndef __CSemVisitor_h__
 
64885
#define __CSemVisitor_h__
 
64886
 
 
64887
 
 
64888
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CVisitor.h"
 
64889
// This file is part of PUMA.
 
64890
// Copyright (C) 1999-2003  The PUMA developer team.
 
64891
//                                                                
 
64892
// This program is free software;  you can redistribute it and/or 
 
64893
// modify it under the terms of the GNU General Public License as 
 
64894
// published by the Free Software Foundation; either version 2 of 
 
64895
// the License, or (at your option) any later version.            
 
64896
//                                                                
 
64897
// This program is distributed in the hope that it will be useful,
 
64898
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
64899
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
64900
// GNU General Public License for more details.                   
 
64901
//                                                                
 
64902
// You should have received a copy of the GNU General Public      
 
64903
// License along with this program; if not, write to the Free     
 
64904
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
64905
// MA  02111-1307  USA                                            
 
64906
 
 
64907
#ifndef __CVisitor_h__
 
64908
#define __CVisitor_h__
 
64909
 
 
64910
/** \file
 
64911
 *  CTree based tree visitor. */
 
64912
 
 
64913
namespace Puma {
 
64914
 
 
64915
 
 
64916
class CTree;
 
64917
 
 
64918
/** \class CVisitor CVisitor.h Puma/CVisitor.h
 
64919
 *  Tree visitor implementation for CTree based syntax trees. To be derived 
 
64920
 *  for visiting concrete syntax trees.
 
64921
 *  
 
64922
 *  This class performs depth-first tree-traversal based on CTree tree 
 
64923
 *  structures. The traversal is started by calling CVisitor::visit()
 
64924
 *  with the root node of the tree to traverse as its argument. 
 
64925
 *  For every node of the tree CVisitor::pre_visit() is called 
 
64926
 *  before its child nodes are visited, and CVisitor::post_visit()
 
64927
 *  is called after its child nodes are visited. To perform actions 
 
64928
 *  on the visited nodes, CVisitor::pre_visit() and CVisitor::post_visit() 
 
64929
 *  have to be overloaded. */
 
64930
 
 
64931
#line 64932 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64932
} // closed Puma
 
64933
class CCExprResolve;
 
64934
class CExprResolve;
 
64935
class WinIfExists;
 
64936
class WinImportHandler;
 
64937
class WinMacros;
 
64938
class WinAsm;
 
64939
class WinDeclSpecs;
 
64940
class WinMemberExplSpec;
 
64941
class WinTypeKeywords;
 
64942
class WinFriend;
 
64943
class ExtAC;
 
64944
class ExtACBuilderCoupling;
 
64945
class ExtACSyntaxCoupling;
 
64946
class ExtACTree;
 
64947
class ExtACKeywords;
 
64948
class ExtGnu;
 
64949
class PragmaOnceUnitState;
 
64950
class PragmaOnce;
 
64951
class CMatchSyntax;
 
64952
namespace Puma {
 
64953
 
 
64954
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CVisitor.h"
 
64955
class CVisitor {
 
64956
#line 64957 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
64957
  friend class ::CCExprResolve;
 
64958
  friend class ::CExprResolve;
 
64959
  friend class ::WinIfExists;
 
64960
  friend class ::WinImportHandler;
 
64961
  friend class ::WinMacros;
 
64962
  friend class ::WinAsm;
 
64963
  friend class ::WinDeclSpecs;
 
64964
  friend class ::WinMemberExplSpec;
 
64965
  friend class ::WinTypeKeywords;
 
64966
  friend class ::WinFriend;
 
64967
  friend class ::ExtAC;
 
64968
  friend class ::ExtACBuilderCoupling;
 
64969
  friend class ::ExtACSyntaxCoupling;
 
64970
  friend class ::ExtACTree;
 
64971
  friend class ::ExtACKeywords;
 
64972
  friend class ::ExtGnu;
 
64973
  friend class ::PragmaOnceUnitState;
 
64974
  friend class ::PragmaOnce;
 
64975
  friend class ::CMatchSyntax;
 
64976
 
 
64977
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CVisitor.h"
 
64978
 
 
64979
  bool _aborted;
 
64980
  bool _pruned;
 
64981
 
 
64982
  void visit_sons (CTree *node);
 
64983
 
 
64984
public:
 
64985
  /** Constructor. */
 
64986
  CVisitor () : _aborted (false), _pruned (false) {}
 
64987
  /** Destructor. */
 
64988
  virtual ~CVisitor () {}
 
64989
 
 
64990
  /** Set the aborted state.
 
64991
   *  \param v True for aborted, false for not aborted. */
 
64992
  void abort (bool v = true) { _aborted = v; }
 
64993
  /** Set the pruned state (don't visit the sub-tree).
 
64994
   *  \param v True for pruned, false for not pruned. */
 
64995
  void prune (bool v = true) { _pruned = v; }
 
64996
  /** Check if the node visiting is aborted. */
 
64997
  bool aborted () const { return _aborted; }
 
64998
  /** Check if the visiting the sub-tree is aborted. */
 
64999
  bool pruned () const { return _pruned; }
 
65000
  
 
65001
  /** Visit the given syntax tree node.
 
65002
   *  \param node The node to visit. */
 
65003
  void visit (CTree *node);
 
65004
 
 
65005
  /** Apply actions before the given node is visited.
 
65006
   *  To be implemented by derived visitors.
 
65007
   *  \param node The node to visit. */
 
65008
  virtual void pre_visit (CTree *node);
 
65009
  /** Apply actions after the given node is visited.
 
65010
   *  To be implemented by derived visitors.
 
65011
   *  \param node The node to visit. */
 
65012
  virtual void post_visit (CTree *node);
 
65013
public:
 
65014
  typedef AC::TL<bool,AC::TL<bool,AC::TLE > > __AttrTypes;
 
65015
  const char *__attr_name (unsigned i) const {
 
65016
    static const char *names[] = { "_aborted", "_pruned" }; return names[i];
 
65017
  }
 
65018
  const void *__attr (unsigned __i) const {
 
65019
    switch (__i) { case 0: return &_aborted; case 1: return &_pruned; default: return 0; }
 
65020
  }
 
65021
#line 77 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CVisitor.h"
 
65022
};
 
65023
 
 
65024
 
 
65025
} // namespace Puma
 
65026
 
 
65027
#endif /* __CVisitor_h__ */
 
65028
 
 
65029
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65030
 
 
65031
#line 65032 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65032
 
 
65033
#ifndef __ac_fwd_ExtACTree__
 
65034
#define __ac_fwd_ExtACTree__
 
65035
class ExtACTree;
 
65036
namespace AC {
 
65037
  template <class JoinPoint>
 
65038
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp);
 
65039
  template <class JoinPoint>
 
65040
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp);
 
65041
}
 
65042
#endif
 
65043
 
 
65044
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
65045
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
65046
#endif
 
65047
 
 
65048
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65049
// This file is part of PUMA.
 
65050
// Copyright (C) 1999-2003  The PUMA developer team.
 
65051
//                                                                
 
65052
// This program is free software;  you can redistribute it and/or 
 
65053
// modify it under the terms of the GNU General Public License as 
 
65054
// published by the Free Software Foundation; either version 2 of 
 
65055
// the License, or (at your option) any later version.            
 
65056
//                                                                
 
65057
// This program is distributed in the hope that it will be useful,
 
65058
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
65059
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
65060
// GNU General Public License for more details.                   
 
65061
//                                                                
 
65062
// You should have received a copy of the GNU General Public      
 
65063
// License along with this program; if not, write to the Free     
 
65064
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
65065
// MA  02111-1307  USA                                            
 
65066
 
 
65067
#ifndef __CTree_h__
 
65068
#define __CTree_h__
 
65069
 
 
65070
/** \file 
 
65071
 *  C/C++ syntax tree classes. */
 
65072
 
 
65073
namespace Puma {
 
65074
 
 
65075
 
 
65076
// Syntax tree node hierarchy:
 
65077
class CTree;
 
65078
class   CT_Statement;          
 
65079
class     CT_LabelStmt;
 
65080
class     CT_IfStmt;
 
65081
class     CT_IfElseStmt;
 
65082
class     CT_SwitchStmt;
 
65083
class     CT_BreakStmt;
 
65084
class     CT_ExprStmt;
 
65085
class     CT_WhileStmt;
 
65086
class     CT_DoStmt;
 
65087
class     CT_ForStmt;
 
65088
class     CT_ContinueStmt;
 
65089
class     CT_ReturnStmt;
 
65090
class     CT_GotoStmt;
 
65091
class     CT_DeclStmt;
 
65092
class     CT_CaseStmt;
 
65093
class     CT_DefaultStmt;
 
65094
class     CT_TryStmt;
 
65095
class   CT_Expression;
 
65096
class     CT_Call;
 
65097
class       CT_CallExpr;
 
65098
class       CT_ImplicitCall;
 
65099
class     CT_ThrowExpr;
 
65100
class     CT_NewExpr;
 
65101
class     CT_DeleteExpr;
 
65102
class     CT_ConstructExpr;
 
65103
class     CT_Integer;
 
65104
class     CT_Character;
 
65105
class       CT_WideCharacter;
 
65106
class     CT_Float;
 
65107
class     CT_Bool;
 
65108
class     CT_BracedExpr;
 
65109
class     CT_BinaryExpr;
 
65110
class       CT_MembPtrExpr;
 
65111
class         CT_MembRefExpr;
 
65112
class     CT_UnaryExpr;
 
65113
class       CT_PostfixExpr;
 
65114
class       CT_AddrExpr;
 
65115
class       CT_DerefExpr;
 
65116
class     CT_IfThenExpr;
 
65117
class     CT_CmpdLiteral;
 
65118
class     CT_IndexExpr;
 
65119
class     CT_CastExpr;
 
65120
class     CT_StaticCast;
 
65121
class       CT_ConstCast;
 
65122
class       CT_ReintCast;
 
65123
class       CT_DynamicCast;
 
65124
class     CT_TypeidExpr;
 
65125
class     CT_SizeofExpr;
 
65126
class     CT_MembDesignator;
 
65127
class     CT_IndexDesignator;
 
65128
class     CT_ImplicitCast;
 
65129
class     CT_MembInit;
 
65130
class   CT_DeclSpec;
 
65131
class     CT_PrimDeclSpec;
 
65132
class     CT_NamedType;
 
65133
class     CT_ClassSpec;
 
65134
class       CT_UnionSpec;
 
65135
class       CT_EnumSpec;
 
65136
class     CT_ExceptionSpec;
 
65137
class   CT_Declarator;
 
65138
class     CT_InitDeclarator;
 
65139
class     CT_BracedDeclarator;
 
65140
class     CT_ArrayDeclarator;
 
65141
class     CT_FctDeclarator;
 
65142
class     CT_RefDeclarator;
 
65143
class     CT_PtrDeclarator;
 
65144
class     CT_MembPtrDeclarator;
 
65145
class     CT_BitFieldDeclarator;
 
65146
class   CT_Decl;
 
65147
class     CT_ObjDecl;
 
65148
class     CT_ArgDecl;
 
65149
class     CT_AccessDecl;
 
65150
class       CT_UsingDecl;
 
65151
class     CT_FctDef;
 
65152
class     CT_AsmDef;
 
65153
class     CT_EnumDef;
 
65154
class     CT_ClassDef;
 
65155
class       CT_UnionDef;
 
65156
class     CT_Enumerator;
 
65157
class     CT_LinkageSpec;
 
65158
class     CT_Handler;
 
65159
class     CT_TemplateDecl;
 
65160
class     CT_TemplateParamDecl;
 
65161
class       CT_TypeParamDecl;
 
65162
class       CT_NonTypeParamDecl;
 
65163
class     CT_NamespaceDef;
 
65164
class     CT_NamespaceAliasDef;
 
65165
class     CT_UsingDirective;
 
65166
class     CT_Condition;
 
65167
class   CT_List;
 
65168
class     CT_CmpdStmt;
 
65169
class     CT_DeclSpecSeq;
 
65170
class     CT_HandlerSeq;
 
65171
class     CT_DesignatorSeq;
 
65172
class     CT_DeclList;
 
65173
class       CT_Program;
 
65174
class       CT_ArgDeclList;
 
65175
class         CT_ArgNameList;
 
65176
class       CT_ArgDeclSeq;
 
65177
class       CT_MembList;
 
65178
class     CT_ExprList;
 
65179
class     CT_DeclaratorList;
 
65180
class     CT_BaseSpecList;
 
65181
class     CT_MembInitList;
 
65182
class     CT_SimpleName;
 
65183
class       CT_SpecialName;
 
65184
class         CT_PrivateName;
 
65185
class         CT_OperatorName;
 
65186
class         CT_DestructorName;
 
65187
class         CT_ConversionName;
 
65188
class         CT_TemplateName;
 
65189
class       CT_QualName;
 
65190
class         CT_RootQualName;
 
65191
class     CT_String;
 
65192
class       CT_WideString;
 
65193
class     CT_TemplateParamList;
 
65194
class     CT_TemplateArgList;
 
65195
class   CT_Token;
 
65196
class   CT_Error;
 
65197
class   CT_BaseSpec;
 
65198
class   CT_AccessSpec;
 
65199
class   CT_ArrayDelimiter;
 
65200
class   CT_Any;
 
65201
class   CT_AnyList;
 
65202
class   CT_AnyExtension;
 
65203
class   CT_AnyCondition;
 
65204
 
 
65205
 
 
65206
} // namespace Puma
 
65207
 
 
65208
#include "Puma/ErrorSeverity.h"
 
65209
#include "Puma/CSemObject.h"
 
65210
#include "Puma/CSemScope.h"
 
65211
#include "Puma/CSemValue.h"
 
65212
#include "Puma/CExprValue.h"
 
65213
#include "Puma/CStrLiteral.h"
 
65214
#include "Puma/CTypeInfo.h"
 
65215
#include "Puma/Printable.h"
 
65216
#include "Puma/CTokens.h"
 
65217
#include "Puma/Token.h"
 
65218
 
 
65219
#include <iostream>
 
65220
#include <string.h>
 
65221
using namespace std;
 
65222
 
 
65223
namespace Puma {
 
65224
 
 
65225
 
 
65226
class ErrorStream;
 
65227
class CObjectInfo;
 
65228
class CStructure;
 
65229
 
 
65230
/*****************************************************************************/
 
65231
/*                                                                           */
 
65232
/*                    S y n t a x  t r e e  n o d e s                        */
 
65233
/*                                                                           */
 
65234
/*****************************************************************************/
 
65235
 
 
65236
/** \class CTree CTree.h Puma/CTree.h
 
65237
 *  Base class for all C/C++ syntax tree classes. 
 
65238
 *
 
65239
 *  The syntax tree is the result of the syntactic analysis of the input source 
 
65240
 *  code representing its syntactic structure according to the accepted grammar
 
65241
 *  (see class Syntax). 
 
65242
 *
 
65243
 *  Objects of this class and classes derived from this class are created by 
 
65244
 *  the tree builder component of %Puma during the parse process. A syntax tree 
 
65245
 *  shall be destroyed using the tree builder that has created it by calling its 
 
65246
 *  method Builder::destroy(CTree*) with the root node of the syntax tree as its 
 
65247
 *  argument.
 
65248
 *  
 
65249
 *  The navigation in the syntax tree is done using the methods CTree::Parent(), 
 
65250
 *  CTree::Sons(), and CTree::Son(int) const. In a syntax tree "sons" are 
 
65251
 *  understood as the syntactic child nodes of a syntax tree node, whereas 
 
65252
 *  "daughters" are understood are their semantic child nodes. 
 
65253
 *
 
65254
 *  Another way to traverse a syntax tree is to implement an own tree visitor 
 
65255
 *  based on class Puma::CVisitor. This is recommended especially for larger 
 
65256
 *  syntax trees.
 
65257
 *
 
65258
 *  A syntax tree node can be identified by comparing its node name with the node 
 
65259
 *  identifier of the expected syntax tree node:
 
65260
 *  \code if (node->NodeName() == Puma::CT_BinaryExpr::NodeId()) ... \endcode
 
65261
 *  
 
65262
 *  Based on the syntax tree further semantic analyses can be performed. Semantic 
 
65263
 *  information, like scope, value, type, and object information, is linked into 
 
65264
 *  the syntax tree. It can be accessed using the methods CTree::SemScope(), 
 
65265
 *  CTree::SemValue(), and CTree::SemObject(). Some nodes provide short-cuts to
 
65266
 *  the semantic type and value information by implementing the methods 
 
65267
 *  CTree::Type() and CTree::Value().
 
65268
 *
 
65269
 *  The information of the syntax tree can be used to perform high-level 
 
65270
 *  transformations of the source code (see class ManipCommander). */
 
65271
 
 
65272
#line 65273 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65273
} // closed Puma
 
65274
class CCExprResolve;
 
65275
class CExprResolve;
 
65276
class WinIfExists;
 
65277
class WinImportHandler;
 
65278
class WinMacros;
 
65279
class WinAsm;
 
65280
class WinDeclSpecs;
 
65281
class WinMemberExplSpec;
 
65282
class WinTypeKeywords;
 
65283
class WinFriend;
 
65284
class ExtAC;
 
65285
class ExtACBuilderCoupling;
 
65286
class ExtACSyntaxCoupling;
 
65287
class ExtACTree;
 
65288
class ExtACKeywords;
 
65289
class ExtGnu;
 
65290
class PragmaOnceUnitState;
 
65291
class PragmaOnce;
 
65292
class CMatchSyntax;
 
65293
namespace Puma {
 
65294
 
 
65295
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65296
 
 
65297
#line 65298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65298
} // closed Puma
 
65299
 
 
65300
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
65301
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
65302
#include "CCExprResolveH.ah"
 
65303
#endif
 
65304
namespace Puma {
 
65305
 
 
65306
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65307
 
 
65308
#line 65309 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65309
} // closed Puma
 
65310
 
 
65311
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
65312
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
65313
#include "CExprResolveH.ah"
 
65314
#endif
 
65315
namespace Puma {
 
65316
 
 
65317
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65318
class CTree {
 
65319
#line 65320 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65320
  friend class ::CCExprResolve;
 
65321
  friend class ::CExprResolve;
 
65322
  friend class ::WinIfExists;
 
65323
  friend class ::WinImportHandler;
 
65324
  friend class ::WinMacros;
 
65325
  friend class ::WinAsm;
 
65326
  friend class ::WinDeclSpecs;
 
65327
  friend class ::WinMemberExplSpec;
 
65328
  friend class ::WinTypeKeywords;
 
65329
  friend class ::WinFriend;
 
65330
  friend class ::ExtAC;
 
65331
  friend class ::ExtACBuilderCoupling;
 
65332
  friend class ::ExtACSyntaxCoupling;
 
65333
  friend class ::ExtACTree;
 
65334
  friend class ::ExtACKeywords;
 
65335
  friend class ::ExtGnu;
 
65336
  friend class ::PragmaOnceUnitState;
 
65337
  friend class ::PragmaOnce;
 
65338
  friend class ::CMatchSyntax;
 
65339
 
 
65340
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65341
 
 
65342
  CTree * _parent;
 
65343
 
 
65344
public:
 
65345
  /*DEBUG*/static int alloc;
 
65346
  /*DEBUG*/static int release;
 
65347
 
 
65348
protected:
 
65349
  /** Get the n-th son from given sons array. Skips empty (NULL) array items.
 
65350
   *  \param sons The sons array.
 
65351
   *  \param len Length of the sons array.
 
65352
   *  \param n Index of the son.
 
65353
   *  \return The n-th son or NULL. */
 
65354
  CTree *Son (CTree * const *sons, int len, int n) const;
 
65355
  /** Get the number of sons in the given sons array. Skips empty (NULL) array items.
 
65356
   *  \param sons The sons array.
 
65357
   *  \param len Length of the sons array. */
 
65358
  int Sons (CTree * const *sons, int len) const;
 
65359
  /** Replace a son.
 
65360
   *  \param sons The sons array.
 
65361
   *  \param len Length of the sons array.
 
65362
   *  \param old_son The son to replace.
 
65363
   *  \param new_son The new son. */
 
65364
  void ReplaceSon (CTree **sons, int len, CTree *old_son, CTree *new_son);
 
65365
  /** Replace a son if it equals the given son.
 
65366
   *  \param son The actual son.
 
65367
   *  \param old_son The son to replace, must match the actual son.
 
65368
   *  \param new_son The new son, overwrites the actual son. */
 
65369
  void ReplaceSon (CTree *&son, CTree *old_son, CTree *new_son);
 
65370
  /** Add a new son.
 
65371
   *  \param son The actual son.
 
65372
   *  \param new_son The new son, overwrites the actual son. */
 
65373
  void AddSon (CTree *&son, CTree *new_son);
 
65374
  /** Set the parent tree node.
 
65375
   *  \param parent The new parent tree node. */
 
65376
  void SetParent (const CTree *parent) { _parent = (CTree*)parent; }
 
65377
  /** Set the parent tree node of the given tree node.
 
65378
   *  \param node The tree node.
 
65379
   *  \param parent The new parent. */
 
65380
  void SetParent (CTree *node, const CTree *parent) { node->_parent = (CTree*)parent; }
 
65381
  
 
65382
protected:
 
65383
  /** Default constructor. */
 
65384
  CTree () : _parent(0) { /*DEBUG*/alloc++; }
 
65385
 
 
65386
public:
 
65387
  /** Destructor. */
 
65388
  virtual ~CTree () { /*DEBUG*/release++; }
 
65389
  /** Get the number of sons. */
 
65390
  virtual int Sons () const = 0;
 
65391
  /** Get the n-th son.
 
65392
   *  \param n The index of the son.
 
65393
   *  \return The n-th son or NULL. */
 
65394
  virtual CTree *Son (int n) const { return (CTree*)0; }
 
65395
  /** Get the node name (node identifier). */
 
65396
  virtual const char *NodeName () const = 0;
 
65397
  /** Get the first token of the syntactic construct represented by this sub-tree.
 
65398
   *  \return The token or NULL. */
 
65399
  virtual Token *token () const;
 
65400
  /** Get the last token of the syntactic construct represented by this sub-tree.
 
65401
   *  \return The token or NULL. */
 
65402
  virtual Token *end_token () const;
 
65403
  /** Get the CT_Token node of the first token of the syntactic construct represented by this sub-tree.
 
65404
   *  \return The token node or NULL. */
 
65405
  virtual CT_Token *token_node () const;
 
65406
  /** Get the CT_Token node of the last token of the syntactic construct represented by this sub-tree.
 
65407
   *  \return The token node or NULL. */
 
65408
  virtual CT_Token *end_token_node () const;
 
65409
  /** Replace a son.
 
65410
   *  \param old_son The son to replace.
 
65411
   *  \param new_son The son with which to replace. */
 
65412
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {}
 
65413
  /** Get the parent node.
 
65414
   *  \return The parent node or NULL. */
 
65415
  virtual CTree *Parent () const { return (CTree*)_parent; }
 
65416
 
 
65417
public: // semantic information
 
65418
  /** Get the semantic type of the node.
 
65419
   *  \return The type object or NULL. */
 
65420
  virtual CTypeInfo *Type () const { return (CTypeInfo*)0; }
 
65421
  /** Get the calculated value of the expression.
 
65422
   *  \return The value object or NULL. */
 
65423
  virtual CExprValue *Value () const { return (CExprValue*)0; }
 
65424
  
 
65425
  /** Get the scope opened by the node.
 
65426
   *  \return The scope object or NULL. */
 
65427
  virtual CSemScope *SemScope () const { return (CSemScope*)0; }
 
65428
  /** Get the semantic value of the node.
 
65429
   *  \return The value object or NULL. */
 
65430
  virtual CSemValue *SemValue () const { return (CSemValue*)0; }
 
65431
  /** Get the semantic information of the node.
 
65432
   *  \return The semantic object or NULL. */
 
65433
  virtual CSemObject *SemObject () const { return (CSemObject*)0; }
 
65434
  
 
65435
public: // node classification function
 
65436
  /** Get a pointer to CT_SimpleName if the current node represents a name.
 
65437
   *  \return The CT_SimpleName node or NULL. */
 
65438
  virtual CT_SimpleName *IsSimpleName () { return 0; }
 
65439
  /** Get a pointer to CT_String if the current node represents a string.
 
65440
   *  \return The CT_String node or NULL. */
 
65441
  virtual CT_String *IsString () { return 0; }
 
65442
  /** Get a pointer to CT_Declarator if the current node represents a declarator.
 
65443
   *  \return The CT_Declarator pointer or NULL. */
 
65444
  virtual CT_Declarator *IsDeclarator () { return 0; }
 
65445
  /** Get a pointer to CT_Statement if the current node represents a statement.
 
65446
   *  \return The CT_Statement pointer or NULL. */
 
65447
  virtual CT_Statement *IsStatement () { return 0; }
 
65448
  /** Get a pointer to CT_Expression if the current node represents a expression.
 
65449
   *  \return The CT_Expression pointer or NULL. */
 
65450
  virtual CT_Expression *IsExpression () { return 0; }
 
65451
  /** Get a pointer to CT_Decl if the current node represents a declaration.
 
65452
   *  \return The CT_Decl pointer or NULL. */
 
65453
  virtual CT_Decl *IsDeclaration () { return 0; }
 
65454
  /** Get a pointer to CT_Call if the current node represents a call expression.
 
65455
   *  \return The CT_Call pointer or NULL. */
 
65456
  virtual CT_Call *IsCall () { return 0; }
 
65457
   private:
 
65458
  typedef CTree CCExprResolveCTree;
 
65459
 
 
65460
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
65461
 public :
 
65462
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
65463
  typedef CTree CExprResolveCTree;
 
65464
 
 
65465
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
65466
 public :
 
65467
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
65468
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
65469
  const char *__attr_name (unsigned i) const {
 
65470
    static const char *names[] = { "_parent" }; return names[i];
 
65471
  }
 
65472
  const void *__attr (unsigned __i) const {
 
65473
    switch (__i) { case 0: return &_parent; default: return 0; }
 
65474
  }
 
65475
#line 339 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65476
};
 
65477
 
 
65478
/** \class CT_Error CTree.h Puma/CTree.h
 
65479
 *  Error tree node that is inserted into the tree for syntactic constructs
 
65480
 *  that could not be parsed. */
 
65481
 
 
65482
#line 65483 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65483
} // closed Puma
 
65484
class CCExprResolve;
 
65485
class CExprResolve;
 
65486
class WinIfExists;
 
65487
class WinImportHandler;
 
65488
class WinMacros;
 
65489
class WinAsm;
 
65490
class WinDeclSpecs;
 
65491
class WinMemberExplSpec;
 
65492
class WinTypeKeywords;
 
65493
class WinFriend;
 
65494
class ExtAC;
 
65495
class ExtACBuilderCoupling;
 
65496
class ExtACSyntaxCoupling;
 
65497
class ExtACTree;
 
65498
class ExtACKeywords;
 
65499
class ExtGnu;
 
65500
class PragmaOnceUnitState;
 
65501
class PragmaOnce;
 
65502
class CMatchSyntax;
 
65503
namespace Puma {
 
65504
 
 
65505
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65506
class CT_Error : public CTree {
 
65507
#line 65508 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65508
  friend class ::CCExprResolve;
 
65509
  friend class ::CExprResolve;
 
65510
  friend class ::WinIfExists;
 
65511
  friend class ::WinImportHandler;
 
65512
  friend class ::WinMacros;
 
65513
  friend class ::WinAsm;
 
65514
  friend class ::WinDeclSpecs;
 
65515
  friend class ::WinMemberExplSpec;
 
65516
  friend class ::WinTypeKeywords;
 
65517
  friend class ::WinFriend;
 
65518
  friend class ::ExtAC;
 
65519
  friend class ::ExtACBuilderCoupling;
 
65520
  friend class ::ExtACSyntaxCoupling;
 
65521
  friend class ::ExtACTree;
 
65522
  friend class ::ExtACKeywords;
 
65523
  friend class ::ExtGnu;
 
65524
  friend class ::PragmaOnceUnitState;
 
65525
  friend class ::PragmaOnce;
 
65526
  friend class ::CMatchSyntax;
 
65527
 
 
65528
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65529
 
 
65530
public:
 
65531
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
65532
  static const char *NodeId ();
 
65533
  /** Get the name of the node. Can be compared with NodeId(). */
 
65534
  const char *NodeName () const { return NodeId (); }
 
65535
  /** Get the number of sons. */
 
65536
  int Sons () const { return 0; }
 
65537
public:
 
65538
  typedef AC::TLE __AttrTypes;
 
65539
  const char *__attr_name (unsigned i) const { return 0; }
 
65540
  const void *__attr (unsigned __i) const { return 0; }
 
65541
#line 352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65542
};
 
65543
 
 
65544
/** \class CT_Token CTree.h Puma/CTree.h
 
65545
 *  Tree node representing a single token in the source code. */
 
65546
 
 
65547
#line 65548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65548
} // closed Puma
 
65549
class CCExprResolve;
 
65550
class CExprResolve;
 
65551
class WinIfExists;
 
65552
class WinImportHandler;
 
65553
class WinMacros;
 
65554
class WinAsm;
 
65555
class WinDeclSpecs;
 
65556
class WinMemberExplSpec;
 
65557
class WinTypeKeywords;
 
65558
class WinFriend;
 
65559
class ExtAC;
 
65560
class ExtACBuilderCoupling;
 
65561
class ExtACSyntaxCoupling;
 
65562
class ExtACTree;
 
65563
class ExtACKeywords;
 
65564
class ExtGnu;
 
65565
class PragmaOnceUnitState;
 
65566
class PragmaOnce;
 
65567
class CMatchSyntax;
 
65568
namespace Puma {
 
65569
 
 
65570
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65571
class CT_Token : public CTree {
 
65572
#line 65573 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65573
  friend class ::CCExprResolve;
 
65574
  friend class ::CExprResolve;
 
65575
  friend class ::WinIfExists;
 
65576
  friend class ::WinImportHandler;
 
65577
  friend class ::WinMacros;
 
65578
  friend class ::WinAsm;
 
65579
  friend class ::WinDeclSpecs;
 
65580
  friend class ::WinMemberExplSpec;
 
65581
  friend class ::WinTypeKeywords;
 
65582
  friend class ::WinFriend;
 
65583
  friend class ::ExtAC;
 
65584
  friend class ::ExtACBuilderCoupling;
 
65585
  friend class ::ExtACSyntaxCoupling;
 
65586
  friend class ::ExtACTree;
 
65587
  friend class ::ExtACKeywords;
 
65588
  friend class ::ExtGnu;
 
65589
  friend class ::PragmaOnceUnitState;
 
65590
  friend class ::PragmaOnce;
 
65591
  friend class ::CMatchSyntax;
 
65592
 
 
65593
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65594
 
 
65595
  Token *_token;
 
65596
  unsigned long int _number;
 
65597
  
 
65598
public:
 
65599
  /** Constructor. 
 
65600
   *  \param token The represented token.
 
65601
   *  \param number The token number (a consecutive number). */
 
65602
  CT_Token (Token *token, unsigned long int number = 0) : 
 
65603
    _token (token), _number (number) {}
 
65604
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
65605
  static const char *NodeId ();
 
65606
  /** Get the name of the node. Can be compared with NodeId(). */
 
65607
  const char *NodeName () const { return NodeId (); }
 
65608
  /** Get the number of sons. */
 
65609
  int Sons () const { return 0; }
 
65610
  /** Get the represented token. */
 
65611
  Token *token () const { return _token; }
 
65612
  /** Get the represented token. */
 
65613
  Token *end_token () const { return _token; }
 
65614
  /** Get this. */
 
65615
  CT_Token *token_node () const { return (CT_Token*)this; }
 
65616
  /** Get this. */
 
65617
  CT_Token *end_token_node () const { return (CT_Token*)this; }
 
65618
  /** Set the token number. 
 
65619
   *  \param number The token number. */ 
 
65620
  void Number (unsigned long int number) { _number = number; }
 
65621
  /** Get the token number. Can be used to indentify this token. */
 
65622
  unsigned long int Number () const { return _number; }
 
65623
  
 
65624
public:
 
65625
  /** Own new operator reusing memory. */
 
65626
  void *operator new (size_t);
 
65627
  /** Own delete operator. */
 
65628
  void operator delete (void *);
 
65629
public:
 
65630
  typedef AC::TL<Puma::Token *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
65631
  const char *__attr_name (unsigned i) const {
 
65632
    static const char *names[] = { "_token", "_number" }; return names[i];
 
65633
  }
 
65634
  const void *__attr (unsigned __i) const {
 
65635
    switch (__i) { case 0: return &_token; case 1: return &_number; default: return 0; }
 
65636
  }
 
65637
#line 391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65638
};
 
65639
 
 
65640
/*****************************************************************************/
 
65641
/*                                                                           */
 
65642
/*                              List nodes                                   */
 
65643
/*                                                                           */
 
65644
/*****************************************************************************/
 
65645
 
 
65646
/** \class CT_List CTree.h Puma/CTree.h
 
65647
 *  Base class for tree nodes representing lists. */
 
65648
 
 
65649
#line 65650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65650
} // closed Puma
 
65651
class CCExprResolve;
 
65652
class CExprResolve;
 
65653
class WinIfExists;
 
65654
class WinImportHandler;
 
65655
class WinMacros;
 
65656
class WinAsm;
 
65657
class WinDeclSpecs;
 
65658
class WinMemberExplSpec;
 
65659
class WinTypeKeywords;
 
65660
class WinFriend;
 
65661
class ExtAC;
 
65662
class ExtACBuilderCoupling;
 
65663
class ExtACSyntaxCoupling;
 
65664
class ExtACTree;
 
65665
class ExtACKeywords;
 
65666
class ExtGnu;
 
65667
class PragmaOnceUnitState;
 
65668
class PragmaOnce;
 
65669
class CMatchSyntax;
 
65670
namespace Puma {
 
65671
 
 
65672
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65673
class CT_List : public CTree {
 
65674
#line 65675 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65675
  friend class ::CCExprResolve;
 
65676
  friend class ::CExprResolve;
 
65677
  friend class ::WinIfExists;
 
65678
  friend class ::WinImportHandler;
 
65679
  friend class ::WinMacros;
 
65680
  friend class ::WinAsm;
 
65681
  friend class ::WinDeclSpecs;
 
65682
  friend class ::WinMemberExplSpec;
 
65683
  friend class ::WinTypeKeywords;
 
65684
  friend class ::WinFriend;
 
65685
  friend class ::ExtAC;
 
65686
  friend class ::ExtACBuilderCoupling;
 
65687
  friend class ::ExtACSyntaxCoupling;
 
65688
  friend class ::ExtACTree;
 
65689
  friend class ::ExtACKeywords;
 
65690
  friend class ::ExtGnu;
 
65691
  friend class ::PragmaOnceUnitState;
 
65692
  friend class ::PragmaOnce;
 
65693
  friend class ::CMatchSyntax;
 
65694
 
 
65695
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65696
 
 
65697
  Array<CTree*> _sons;
 
65698
  int _properties;
 
65699
 
 
65700
protected:
 
65701
  /** Constructor.
 
65702
   *  \param size The initial list size.
 
65703
   *  \param incr The initial increment count. 
 
65704
   *  \param props The list properties (bit array). */
 
65705
  CT_List(int size = 5, int incr = 5, int props = 0) : 
 
65706
    _sons (size, incr), _properties (props) {}
 
65707
 
 
65708
public:
 
65709
  /** %List properties. */
 
65710
  enum {
 
65711
    /** %List has a start token, like ':' in ":a(1),b(2)" */
 
65712
    OPEN = 1,         
 
65713
    /** %List has an end token */
 
65714
    CLOSE = 2,        
 
65715
    /** %List has opening and closing delimiters, like '(' and ')' */
 
65716
    OPEN_CLOSE = 3,   
 
65717
    /** %List has separators, like ',' */
 
65718
    SEPARATORS = 4,   
 
65719
    /** %List pretend to be empty, like for "(void)" */
 
65720
    FORCE_EMPTY = 8,  
 
65721
    /** %List has trailing separator, like "a,b,c," */
 
65722
    END_SEP = 16,     
 
65723
    /** %List has no separator before last element, like "(a,b...)" */
 
65724
    NO_LAST_SEP = 32, 
 
65725
    /** %List has an introduction chararacter, like "=" in "={a,b}" */
 
65726
    INTRO = 64        
 
65727
  };
 
65728
 
 
65729
  /** Get the number of list entries. */
 
65730
  int Entries () const;
 
65731
  /** Get the n-th list entry.
 
65732
   *  \param n The index of the entry. 
 
65733
   *  \return The list entry or NULL. */
 
65734
  CTree *Entry (int n) const;
 
65735
  /** Get the number of sons. */
 
65736
  int Sons () const { return _sons.length (); }
 
65737
  /** Get the n-th son.
 
65738
   *  \param n The index of the son. 
 
65739
   *  \return The n-th son or NULL. */
 
65740
  CTree *Son (int n) const { return _sons.lookup (n); }
 
65741
  /** Get the list properties. */
 
65742
  int GetProperties () const { return _properties; }
 
65743
  /** Add a list property.
 
65744
   *  \param p The property to add. */
 
65745
  void AddProperties (int p) { _properties |= p; }
 
65746
  /** Add a son.
 
65747
   *  \param s The son to add. */
 
65748
  void AddSon (CTree *s) { if (s) { _sons.append (s); SetParent (s, this); } }
 
65749
  /** Prepend a son.
 
65750
   *  \param s The son to prepend. */
 
65751
  void PrefixSon (CTree *s) { if (s) { _sons.prepend (s); SetParent (s, this); } }
 
65752
  /** Insert a son before another son.
 
65753
   *  \param before The son to insert the new son before.
 
65754
   *  \param son The son to insert. */
 
65755
  void InsertSon (CTree *before, CTree *son); 
 
65756
  /** Replace a son.
 
65757
   *  \param old_son The son to replace.
 
65758
   *  \param new_son The new son. */
 
65759
  void ReplaceSon (CTree *old_son, CTree *new_son);
 
65760
  /** Remove a son.
 
65761
   *  \param son The son to remove. */
 
65762
  void RemoveSon (CTree *son);
 
65763
  /** Insert a son at the given index. 
 
65764
   *  \param idx The index at which to insert.
 
65765
   *  \param s The son to insert. */
 
65766
  void InsertSon (int idx, CTree *s)
 
65767
   { if (s && idx <= Sons ()) { _sons.insert (idx, s); SetParent (s, this); } }
 
65768
  /** Replace the son at the given index.
 
65769
   *  \param idx The index of the son to replace.
 
65770
   *  \param s The new son. */
 
65771
  void ReplaceSon (int idx, CTree *s) 
 
65772
   { if (s && idx < Sons ()) { SetParent (_sons[idx], 0); _sons[idx] = s; SetParent (s, this); } }
 
65773
  /** Remove the son at the given index. 
 
65774
   *  \param idx The index of the son to remove. */
 
65775
  void RemoveSon (int idx) 
 
65776
   { if (idx < Sons ()) { SetParent (_sons[idx], 0); _sons.remove (idx); } }
 
65777
public:
 
65778
  typedef AC::TL<Puma::Array< Puma::CTree * >,AC::TL<int,AC::TLE > > __AttrTypes;
 
65779
  const char *__attr_name (unsigned i) const {
 
65780
    static const char *names[] = { "_sons", "_properties" }; return names[i];
 
65781
  }
 
65782
  const void *__attr (unsigned __i) const {
 
65783
    switch (__i) { case 1: return &_sons; case 2: return &_properties; default: return 0; }
 
65784
  }
 
65785
#line 482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65786
};
 
65787
 
 
65788
/** \class CT_ExprList CTree.h Puma/CTree.h
 
65789
 *  Tree node representing an expression list. */
 
65790
 
 
65791
#line 65792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65792
} // closed Puma
 
65793
class CCExprResolve;
 
65794
class CExprResolve;
 
65795
class WinIfExists;
 
65796
class WinImportHandler;
 
65797
class WinMacros;
 
65798
class WinAsm;
 
65799
class WinDeclSpecs;
 
65800
class WinMemberExplSpec;
 
65801
class WinTypeKeywords;
 
65802
class WinFriend;
 
65803
class ExtAC;
 
65804
class ExtACBuilderCoupling;
 
65805
class ExtACSyntaxCoupling;
 
65806
class ExtACTree;
 
65807
class ExtACKeywords;
 
65808
class ExtGnu;
 
65809
class PragmaOnceUnitState;
 
65810
class PragmaOnce;
 
65811
class CMatchSyntax;
 
65812
namespace Puma {
 
65813
 
 
65814
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65815
class CT_ExprList : public CT_List, public CSemValue, public CSemObject {
 
65816
#line 65817 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65817
  friend class ::CCExprResolve;
 
65818
  friend class ::CExprResolve;
 
65819
  friend class ::WinIfExists;
 
65820
  friend class ::WinImportHandler;
 
65821
  friend class ::WinMacros;
 
65822
  friend class ::WinAsm;
 
65823
  friend class ::WinDeclSpecs;
 
65824
  friend class ::WinMemberExplSpec;
 
65825
  friend class ::WinTypeKeywords;
 
65826
  friend class ::WinFriend;
 
65827
  friend class ::ExtAC;
 
65828
  friend class ::ExtACBuilderCoupling;
 
65829
  friend class ::ExtACSyntaxCoupling;
 
65830
  friend class ::ExtACTree;
 
65831
  friend class ::ExtACKeywords;
 
65832
  friend class ::ExtGnu;
 
65833
  friend class ::PragmaOnceUnitState;
 
65834
  friend class ::PragmaOnce;
 
65835
  friend class ::CMatchSyntax;
 
65836
 
 
65837
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65838
 
 
65839
public:
 
65840
  /** Constructor. */
 
65841
  CT_ExprList () { AddProperties (SEPARATORS); }
 
65842
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
65843
  static const char *NodeId ();
 
65844
  /** Get the name of the node. Can be compared with NodeId(). */
 
65845
  const char *NodeName () const { return NodeId (); }
 
65846
 
 
65847
  /** Get the type of the last expression in the expression list.
 
65848
   *  \return The type or NULL. */
 
65849
  CTypeInfo *Type () const { return type; }
 
65850
  /** Get the value of the last expression in the expression list.
 
65851
   *  \return The value of NULL. */
 
65852
  CExprValue *Value () const { return value; }
 
65853
  /** Get the semantic value of the node. */
 
65854
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
65855
  /** Get the semantic information about the node. */
 
65856
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
65857
public:
 
65858
  typedef AC::TLE __AttrTypes;
 
65859
  const char *__attr_name (unsigned i) const { return 0; }
 
65860
  const void *__attr (unsigned __i) const { return 0; }
 
65861
#line 505 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65862
};
 
65863
 
 
65864
/** \class CT_DeclaratorList CTree.h Puma/CTree.h
 
65865
 *  Tree node representing a list of declarators. */
 
65866
 
 
65867
#line 65868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65868
} // closed Puma
 
65869
class CCExprResolve;
 
65870
class CExprResolve;
 
65871
class WinIfExists;
 
65872
class WinImportHandler;
 
65873
class WinMacros;
 
65874
class WinAsm;
 
65875
class WinDeclSpecs;
 
65876
class WinMemberExplSpec;
 
65877
class WinTypeKeywords;
 
65878
class WinFriend;
 
65879
class ExtAC;
 
65880
class ExtACBuilderCoupling;
 
65881
class ExtACSyntaxCoupling;
 
65882
class ExtACTree;
 
65883
class ExtACKeywords;
 
65884
class ExtGnu;
 
65885
class PragmaOnceUnitState;
 
65886
class PragmaOnce;
 
65887
class CMatchSyntax;
 
65888
namespace Puma {
 
65889
 
 
65890
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65891
class CT_DeclaratorList : public CT_List {
 
65892
#line 65893 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65893
  friend class ::CCExprResolve;
 
65894
  friend class ::CExprResolve;
 
65895
  friend class ::WinIfExists;
 
65896
  friend class ::WinImportHandler;
 
65897
  friend class ::WinMacros;
 
65898
  friend class ::WinAsm;
 
65899
  friend class ::WinDeclSpecs;
 
65900
  friend class ::WinMemberExplSpec;
 
65901
  friend class ::WinTypeKeywords;
 
65902
  friend class ::WinFriend;
 
65903
  friend class ::ExtAC;
 
65904
  friend class ::ExtACBuilderCoupling;
 
65905
  friend class ::ExtACSyntaxCoupling;
 
65906
  friend class ::ExtACTree;
 
65907
  friend class ::ExtACKeywords;
 
65908
  friend class ::ExtGnu;
 
65909
  friend class ::PragmaOnceUnitState;
 
65910
  friend class ::PragmaOnce;
 
65911
  friend class ::CMatchSyntax;
 
65912
 
 
65913
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65914
 
 
65915
public:
 
65916
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
65917
  static const char *NodeId ();
 
65918
  /** Get the name of the node. Can be compared with NodeId(). */
 
65919
  const char *NodeName () const { return NodeId (); }
 
65920
public:
 
65921
  typedef AC::TLE __AttrTypes;
 
65922
  const char *__attr_name (unsigned i) const { return 0; }
 
65923
  const void *__attr (unsigned __i) const { return 0; }
 
65924
#line 515 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65925
};
 
65926
 
 
65927
/** \class CT_EnumeratorList CTree.h Puma/CTree.h
 
65928
 *  Tree node representing a list of enumerator constants. */
 
65929
 
 
65930
#line 65931 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65931
} // closed Puma
 
65932
class CCExprResolve;
 
65933
class CExprResolve;
 
65934
class WinIfExists;
 
65935
class WinImportHandler;
 
65936
class WinMacros;
 
65937
class WinAsm;
 
65938
class WinDeclSpecs;
 
65939
class WinMemberExplSpec;
 
65940
class WinTypeKeywords;
 
65941
class WinFriend;
 
65942
class ExtAC;
 
65943
class ExtACBuilderCoupling;
 
65944
class ExtACSyntaxCoupling;
 
65945
class ExtACTree;
 
65946
class ExtACKeywords;
 
65947
class ExtGnu;
 
65948
class PragmaOnceUnitState;
 
65949
class PragmaOnce;
 
65950
class CMatchSyntax;
 
65951
namespace Puma {
 
65952
 
 
65953
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65954
class CT_EnumeratorList : public CT_List {
 
65955
#line 65956 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65956
  friend class ::CCExprResolve;
 
65957
  friend class ::CExprResolve;
 
65958
  friend class ::WinIfExists;
 
65959
  friend class ::WinImportHandler;
 
65960
  friend class ::WinMacros;
 
65961
  friend class ::WinAsm;
 
65962
  friend class ::WinDeclSpecs;
 
65963
  friend class ::WinMemberExplSpec;
 
65964
  friend class ::WinTypeKeywords;
 
65965
  friend class ::WinFriend;
 
65966
  friend class ::ExtAC;
 
65967
  friend class ::ExtACBuilderCoupling;
 
65968
  friend class ::ExtACSyntaxCoupling;
 
65969
  friend class ::ExtACTree;
 
65970
  friend class ::ExtACKeywords;
 
65971
  friend class ::ExtGnu;
 
65972
  friend class ::PragmaOnceUnitState;
 
65973
  friend class ::PragmaOnce;
 
65974
  friend class ::CMatchSyntax;
 
65975
 
 
65976
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65977
 
 
65978
public:
 
65979
  /** Constructor. */
 
65980
  CT_EnumeratorList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
65981
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
65982
  static const char *NodeId ();
 
65983
  /** Get the name of the node. Can be compared with NodeId(). */
 
65984
  const char *NodeName () const { return NodeId (); }
 
65985
public:
 
65986
  typedef AC::TLE __AttrTypes;
 
65987
  const char *__attr_name (unsigned i) const { return 0; }
 
65988
  const void *__attr (unsigned __i) const { return 0; }
 
65989
#line 527 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
65990
};
 
65991
   
 
65992
/** \class CT_DeclList CTree.h Puma/CTree.h
 
65993
 *  Tree node representing a list of declarations. */
 
65994
 
 
65995
#line 65996 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
65996
} // closed Puma
 
65997
class CCExprResolve;
 
65998
class CExprResolve;
 
65999
class WinIfExists;
 
66000
class WinImportHandler;
 
66001
class WinMacros;
 
66002
class WinAsm;
 
66003
class WinDeclSpecs;
 
66004
class WinMemberExplSpec;
 
66005
class WinTypeKeywords;
 
66006
class WinFriend;
 
66007
class ExtAC;
 
66008
class ExtACBuilderCoupling;
 
66009
class ExtACSyntaxCoupling;
 
66010
class ExtACTree;
 
66011
class ExtACKeywords;
 
66012
class ExtGnu;
 
66013
class PragmaOnceUnitState;
 
66014
class PragmaOnce;
 
66015
class CMatchSyntax;
 
66016
namespace Puma {
 
66017
 
 
66018
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66019
class CT_DeclList : public CT_List {
 
66020
#line 66021 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66021
  friend class ::CCExprResolve;
 
66022
  friend class ::CExprResolve;
 
66023
  friend class ::WinIfExists;
 
66024
  friend class ::WinImportHandler;
 
66025
  friend class ::WinMacros;
 
66026
  friend class ::WinAsm;
 
66027
  friend class ::WinDeclSpecs;
 
66028
  friend class ::WinMemberExplSpec;
 
66029
  friend class ::WinTypeKeywords;
 
66030
  friend class ::WinFriend;
 
66031
  friend class ::ExtAC;
 
66032
  friend class ::ExtACBuilderCoupling;
 
66033
  friend class ::ExtACSyntaxCoupling;
 
66034
  friend class ::ExtACTree;
 
66035
  friend class ::ExtACKeywords;
 
66036
  friend class ::ExtGnu;
 
66037
  friend class ::PragmaOnceUnitState;
 
66038
  friend class ::PragmaOnce;
 
66039
  friend class ::CMatchSyntax;
 
66040
 
 
66041
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66042
 
 
66043
public:
 
66044
  /** Constructor. 
 
66045
   *  \param size The initial size of the list.
 
66046
   *  \param incr The initial increment count of the list. */
 
66047
  CT_DeclList (int size = 20, int incr = 20) : CT_List (size, incr) {}
 
66048
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66049
  static const char *NodeId ();
 
66050
  /** Get the name of the node. Can be compared with NodeId(). */
 
66051
  const char *NodeName () const { return NodeId (); }
 
66052
  /** Set the linkage specifiers to each declaration in the list.
 
66053
   *  \param l The linkage specifiers node. */
 
66054
  void Linkage (CT_LinkageSpec *l);
 
66055
public:
 
66056
  typedef AC::TLE __AttrTypes;
 
66057
  const char *__attr_name (unsigned i) const { return 0; }
 
66058
  const void *__attr (unsigned __i) const { return 0; }
 
66059
#line 544 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66060
};
 
66061
 
 
66062
/** \class CT_DeclSpecSeq CTree.h Puma/CTree.h
 
66063
 *  Tree node representing a sequence of declaration specifiers. */
 
66064
 
 
66065
#line 66066 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66066
} // closed Puma
 
66067
class CCExprResolve;
 
66068
class CExprResolve;
 
66069
class WinIfExists;
 
66070
class WinImportHandler;
 
66071
class WinMacros;
 
66072
class WinAsm;
 
66073
class WinDeclSpecs;
 
66074
class WinMemberExplSpec;
 
66075
class WinTypeKeywords;
 
66076
class WinFriend;
 
66077
class ExtAC;
 
66078
class ExtACBuilderCoupling;
 
66079
class ExtACSyntaxCoupling;
 
66080
class ExtACTree;
 
66081
class ExtACKeywords;
 
66082
class ExtGnu;
 
66083
class PragmaOnceUnitState;
 
66084
class PragmaOnce;
 
66085
class CMatchSyntax;
 
66086
namespace Puma {
 
66087
 
 
66088
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66089
class CT_DeclSpecSeq : public CT_List {
 
66090
#line 66091 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66091
  friend class ::CCExprResolve;
 
66092
  friend class ::CExprResolve;
 
66093
  friend class ::WinIfExists;
 
66094
  friend class ::WinImportHandler;
 
66095
  friend class ::WinMacros;
 
66096
  friend class ::WinAsm;
 
66097
  friend class ::WinDeclSpecs;
 
66098
  friend class ::WinMemberExplSpec;
 
66099
  friend class ::WinTypeKeywords;
 
66100
  friend class ::WinFriend;
 
66101
  friend class ::ExtAC;
 
66102
  friend class ::ExtACBuilderCoupling;
 
66103
  friend class ::ExtACSyntaxCoupling;
 
66104
  friend class ::ExtACTree;
 
66105
  friend class ::ExtACKeywords;
 
66106
  friend class ::ExtGnu;
 
66107
  friend class ::PragmaOnceUnitState;
 
66108
  friend class ::PragmaOnce;
 
66109
  friend class ::CMatchSyntax;
 
66110
 
 
66111
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66112
 
 
66113
public:
 
66114
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66115
  static const char *NodeId ();
 
66116
  /** Get the name of the node. Can be compared with NodeId(). */
 
66117
  const char *NodeName () const { return NodeId (); }
 
66118
public:
 
66119
  typedef AC::TLE __AttrTypes;
 
66120
  const char *__attr_name (unsigned i) const { return 0; }
 
66121
  const void *__attr (unsigned __i) const { return 0; }
 
66122
#line 554 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66123
};
 
66124
 
 
66125
/** \class CT_CmpdStmt CTree.h Puma/CTree.h
 
66126
 *  Tree node representing a compound statement. */
 
66127
 
 
66128
#line 66129 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66129
} // closed Puma
 
66130
class CCExprResolve;
 
66131
class CExprResolve;
 
66132
class WinIfExists;
 
66133
class WinImportHandler;
 
66134
class WinMacros;
 
66135
class WinAsm;
 
66136
class WinDeclSpecs;
 
66137
class WinMemberExplSpec;
 
66138
class WinTypeKeywords;
 
66139
class WinFriend;
 
66140
class ExtAC;
 
66141
class ExtACBuilderCoupling;
 
66142
class ExtACSyntaxCoupling;
 
66143
class ExtACTree;
 
66144
class ExtACKeywords;
 
66145
class ExtGnu;
 
66146
class PragmaOnceUnitState;
 
66147
class PragmaOnce;
 
66148
class CMatchSyntax;
 
66149
namespace Puma {
 
66150
 
 
66151
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66152
class CT_CmpdStmt : public CT_List, public CSemScope {
 
66153
#line 66154 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66154
  friend class ::CCExprResolve;
 
66155
  friend class ::CExprResolve;
 
66156
  friend class ::WinIfExists;
 
66157
  friend class ::WinImportHandler;
 
66158
  friend class ::WinMacros;
 
66159
  friend class ::WinAsm;
 
66160
  friend class ::WinDeclSpecs;
 
66161
  friend class ::WinMemberExplSpec;
 
66162
  friend class ::WinTypeKeywords;
 
66163
  friend class ::WinFriend;
 
66164
  friend class ::ExtAC;
 
66165
  friend class ::ExtACBuilderCoupling;
 
66166
  friend class ::ExtACSyntaxCoupling;
 
66167
  friend class ::ExtACTree;
 
66168
  friend class ::ExtACKeywords;
 
66169
  friend class ::ExtGnu;
 
66170
  friend class ::PragmaOnceUnitState;
 
66171
  friend class ::PragmaOnce;
 
66172
  friend class ::CMatchSyntax;
 
66173
 
 
66174
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66175
 
 
66176
public:
 
66177
  /* Constructor. */
 
66178
  CT_CmpdStmt () { AddProperties (OPEN_CLOSE); }
 
66179
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66180
  static const char *NodeId ();
 
66181
  /** Get the name of the node. Can be compared with NodeId(). */
 
66182
  const char *NodeName () const { return NodeId (); }
 
66183
  /** Get the scope opened by the compound statement. */
 
66184
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
66185
public:
 
66186
  typedef AC::TLE __AttrTypes;
 
66187
  const char *__attr_name (unsigned i) const { return 0; }
 
66188
  const void *__attr (unsigned __i) const { return 0; }
 
66189
#line 568 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66190
};
 
66191
 
 
66192
/** \class CT_HandlerSeq CTree.h Puma/CTree.h
 
66193
 *  Tree node representing an exception handler sequence. */
 
66194
 
 
66195
#line 66196 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66196
} // closed Puma
 
66197
class CCExprResolve;
 
66198
class CExprResolve;
 
66199
class WinIfExists;
 
66200
class WinImportHandler;
 
66201
class WinMacros;
 
66202
class WinAsm;
 
66203
class WinDeclSpecs;
 
66204
class WinMemberExplSpec;
 
66205
class WinTypeKeywords;
 
66206
class WinFriend;
 
66207
class ExtAC;
 
66208
class ExtACBuilderCoupling;
 
66209
class ExtACSyntaxCoupling;
 
66210
class ExtACTree;
 
66211
class ExtACKeywords;
 
66212
class ExtGnu;
 
66213
class PragmaOnceUnitState;
 
66214
class PragmaOnce;
 
66215
class CMatchSyntax;
 
66216
namespace Puma {
 
66217
 
 
66218
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66219
class CT_HandlerSeq : public CT_List {
 
66220
#line 66221 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66221
  friend class ::CCExprResolve;
 
66222
  friend class ::CExprResolve;
 
66223
  friend class ::WinIfExists;
 
66224
  friend class ::WinImportHandler;
 
66225
  friend class ::WinMacros;
 
66226
  friend class ::WinAsm;
 
66227
  friend class ::WinDeclSpecs;
 
66228
  friend class ::WinMemberExplSpec;
 
66229
  friend class ::WinTypeKeywords;
 
66230
  friend class ::WinFriend;
 
66231
  friend class ::ExtAC;
 
66232
  friend class ::ExtACBuilderCoupling;
 
66233
  friend class ::ExtACSyntaxCoupling;
 
66234
  friend class ::ExtACTree;
 
66235
  friend class ::ExtACKeywords;
 
66236
  friend class ::ExtGnu;
 
66237
  friend class ::PragmaOnceUnitState;
 
66238
  friend class ::PragmaOnce;
 
66239
  friend class ::CMatchSyntax;
 
66240
 
 
66241
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66242
 
 
66243
public:
 
66244
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66245
  static const char *NodeId ();
 
66246
  /** Get the name of the node. Can be compared with NodeId(). */
 
66247
  const char *NodeName () const { return NodeId (); }
 
66248
public:
 
66249
  typedef AC::TLE __AttrTypes;
 
66250
  const char *__attr_name (unsigned i) const { return 0; }
 
66251
  const void *__attr (unsigned __i) const { return 0; }
 
66252
#line 578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66253
};
 
66254
 
 
66255
/** \class CT_TemplateParamList CTree.h Puma/CTree.h
 
66256
 *  Tree node representing a template parameter list. */
 
66257
 
 
66258
#line 66259 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66259
} // closed Puma
 
66260
class CCExprResolve;
 
66261
class CExprResolve;
 
66262
class WinIfExists;
 
66263
class WinImportHandler;
 
66264
class WinMacros;
 
66265
class WinAsm;
 
66266
class WinDeclSpecs;
 
66267
class WinMemberExplSpec;
 
66268
class WinTypeKeywords;
 
66269
class WinFriend;
 
66270
class ExtAC;
 
66271
class ExtACBuilderCoupling;
 
66272
class ExtACSyntaxCoupling;
 
66273
class ExtACTree;
 
66274
class ExtACKeywords;
 
66275
class ExtGnu;
 
66276
class PragmaOnceUnitState;
 
66277
class PragmaOnce;
 
66278
class CMatchSyntax;
 
66279
namespace Puma {
 
66280
 
 
66281
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66282
class CT_TemplateParamList : public CT_List, public CSemScope {
 
66283
#line 66284 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66284
  friend class ::CCExprResolve;
 
66285
  friend class ::CExprResolve;
 
66286
  friend class ::WinIfExists;
 
66287
  friend class ::WinImportHandler;
 
66288
  friend class ::WinMacros;
 
66289
  friend class ::WinAsm;
 
66290
  friend class ::WinDeclSpecs;
 
66291
  friend class ::WinMemberExplSpec;
 
66292
  friend class ::WinTypeKeywords;
 
66293
  friend class ::WinFriend;
 
66294
  friend class ::ExtAC;
 
66295
  friend class ::ExtACBuilderCoupling;
 
66296
  friend class ::ExtACSyntaxCoupling;
 
66297
  friend class ::ExtACTree;
 
66298
  friend class ::ExtACKeywords;
 
66299
  friend class ::ExtGnu;
 
66300
  friend class ::PragmaOnceUnitState;
 
66301
  friend class ::PragmaOnce;
 
66302
  friend class ::CMatchSyntax;
 
66303
 
 
66304
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66305
 
 
66306
public:
 
66307
  CT_TemplateParamList () { AddProperties (INTRO | SEPARATORS | OPEN_CLOSE); }
 
66308
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66309
  static const char *NodeId ();
 
66310
  /** Get the name of the node. Can be compared with NodeId(). */
 
66311
  const char *NodeName () const { return NodeId (); }
 
66312
  /** Get the scope opened by the template parameter list. */
 
66313
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
66314
public:
 
66315
  typedef AC::TLE __AttrTypes;
 
66316
  const char *__attr_name (unsigned i) const { return 0; }
 
66317
  const void *__attr (unsigned __i) const { return 0; }
 
66318
#line 591 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66319
};
 
66320
 
 
66321
/** \class CT_TemplateArgList CTree.h Puma/CTree.h
 
66322
 *  Tree node representing a template argument list. */
 
66323
 
 
66324
#line 66325 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66325
} // closed Puma
 
66326
class CCExprResolve;
 
66327
class CExprResolve;
 
66328
class WinIfExists;
 
66329
class WinImportHandler;
 
66330
class WinMacros;
 
66331
class WinAsm;
 
66332
class WinDeclSpecs;
 
66333
class WinMemberExplSpec;
 
66334
class WinTypeKeywords;
 
66335
class WinFriend;
 
66336
class ExtAC;
 
66337
class ExtACBuilderCoupling;
 
66338
class ExtACSyntaxCoupling;
 
66339
class ExtACTree;
 
66340
class ExtACKeywords;
 
66341
class ExtGnu;
 
66342
class PragmaOnceUnitState;
 
66343
class PragmaOnce;
 
66344
class CMatchSyntax;
 
66345
namespace Puma {
 
66346
 
 
66347
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66348
class CT_TemplateArgList : public CT_List {
 
66349
#line 66350 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66350
  friend class ::CCExprResolve;
 
66351
  friend class ::CExprResolve;
 
66352
  friend class ::WinIfExists;
 
66353
  friend class ::WinImportHandler;
 
66354
  friend class ::WinMacros;
 
66355
  friend class ::WinAsm;
 
66356
  friend class ::WinDeclSpecs;
 
66357
  friend class ::WinMemberExplSpec;
 
66358
  friend class ::WinTypeKeywords;
 
66359
  friend class ::WinFriend;
 
66360
  friend class ::ExtAC;
 
66361
  friend class ::ExtACBuilderCoupling;
 
66362
  friend class ::ExtACSyntaxCoupling;
 
66363
  friend class ::ExtACTree;
 
66364
  friend class ::ExtACKeywords;
 
66365
  friend class ::ExtGnu;
 
66366
  friend class ::PragmaOnceUnitState;
 
66367
  friend class ::PragmaOnce;
 
66368
  friend class ::CMatchSyntax;
 
66369
 
 
66370
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66371
 
 
66372
public:
 
66373
  /** Constructor. */
 
66374
  CT_TemplateArgList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
66375
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66376
  static const char *NodeId ();
 
66377
  /** Get the name of the node. Can be compared with NodeId(). */
 
66378
  const char *NodeName () const { return NodeId (); }
 
66379
public:
 
66380
  typedef AC::TLE __AttrTypes;
 
66381
  const char *__attr_name (unsigned i) const { return 0; }
 
66382
  const void *__attr (unsigned __i) const { return 0; }
 
66383
#line 603 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66384
};
 
66385
 
 
66386
/*****************************************************************************/
 
66387
/*                                                                           */
 
66388
/*                              Expressions                                  */
 
66389
/*                                                                           */
 
66390
/*****************************************************************************/
 
66391
 
 
66392
/** \class CT_Expression CTree.h Puma/CTree.h
 
66393
 *  Base class for all expression tree nodes. */
 
66394
 
 
66395
#line 66396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66396
} // closed Puma
 
66397
class CCExprResolve;
 
66398
class CExprResolve;
 
66399
class WinIfExists;
 
66400
class WinImportHandler;
 
66401
class WinMacros;
 
66402
class WinAsm;
 
66403
class WinDeclSpecs;
 
66404
class WinMemberExplSpec;
 
66405
class WinTypeKeywords;
 
66406
class WinFriend;
 
66407
class ExtAC;
 
66408
class ExtACBuilderCoupling;
 
66409
class ExtACSyntaxCoupling;
 
66410
class ExtACTree;
 
66411
class ExtACKeywords;
 
66412
class ExtGnu;
 
66413
class PragmaOnceUnitState;
 
66414
class PragmaOnce;
 
66415
class CMatchSyntax;
 
66416
namespace Puma {
 
66417
 
 
66418
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66419
 
 
66420
#line 66421 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66421
} // closed Puma
 
66422
 
 
66423
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66424
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66425
#include "CCExprResolveH.ah"
 
66426
#endif
 
66427
namespace Puma {
 
66428
 
 
66429
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66430
 
 
66431
#line 66432 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66432
} // closed Puma
 
66433
 
 
66434
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66435
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66436
#include "CExprResolveH.ah"
 
66437
#endif
 
66438
namespace Puma {
 
66439
 
 
66440
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66441
class CT_Expression : public CTree, public CSemValue {
 
66442
#line 66443 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66443
  friend class ::CCExprResolve;
 
66444
  friend class ::CExprResolve;
 
66445
  friend class ::WinIfExists;
 
66446
  friend class ::WinImportHandler;
 
66447
  friend class ::WinMacros;
 
66448
  friend class ::WinAsm;
 
66449
  friend class ::WinDeclSpecs;
 
66450
  friend class ::WinMemberExplSpec;
 
66451
  friend class ::WinTypeKeywords;
 
66452
  friend class ::WinFriend;
 
66453
  friend class ::ExtAC;
 
66454
  friend class ::ExtACBuilderCoupling;
 
66455
  friend class ::ExtACSyntaxCoupling;
 
66456
  friend class ::ExtACTree;
 
66457
  friend class ::ExtACKeywords;
 
66458
  friend class ::ExtGnu;
 
66459
  friend class ::PragmaOnceUnitState;
 
66460
  friend class ::PragmaOnce;
 
66461
  friend class ::CMatchSyntax;
 
66462
 
 
66463
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66464
 
 
66465
protected:
 
66466
  /** Constructor. */
 
66467
  CT_Expression () {}
 
66468
 
 
66469
public:
 
66470
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66471
  static const char *NodeId ();
 
66472
  /** Get the name of the node. Can be compared with NodeId(). */
 
66473
  const char *NodeName () const { return NodeId (); }
 
66474
  /** Get the type of the expression.
 
66475
   *  \return The type information object or NULL. */
 
66476
  CTypeInfo *Type () const { return type; }
 
66477
  /** Get the value of the expression.
 
66478
   *  \return The value object or NULL. */
 
66479
  CExprValue *Value () const { return value; }
 
66480
  /** Get the semantic value information of the expression.
 
66481
   *  \return The value object or NULL. */
 
66482
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
66483
  /** Get this. */
 
66484
  virtual CT_Expression *IsExpression () { return this; }
 
66485
   private:
 
66486
  typedef CT_Expression CCExprResolveExpr;
 
66487
 
 
66488
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
66489
 public :
 
66490
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
66491
  typedef CT_Expression CExprResolveExpr;
 
66492
 
 
66493
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
66494
 public :
 
66495
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
66496
  typedef AC::TLE __AttrTypes;
 
66497
  const char *__attr_name (unsigned i) const { return 0; }
 
66498
  const void *__attr (unsigned __i) const { return 0; }
 
66499
#line 634 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66500
};
 
66501
 
 
66502
/** \class CT_Call CTree.h Puma/CTree.h
 
66503
 *  Tree node representing explicit or implicit function calls 
 
66504
 *  including built-in or user-defined functions and overloaded
 
66505
 *  operators. */
 
66506
 
 
66507
#line 66508 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66508
} // closed Puma
 
66509
class CCExprResolve;
 
66510
class CExprResolve;
 
66511
class WinIfExists;
 
66512
class WinImportHandler;
 
66513
class WinMacros;
 
66514
class WinAsm;
 
66515
class WinDeclSpecs;
 
66516
class WinMemberExplSpec;
 
66517
class WinTypeKeywords;
 
66518
class WinFriend;
 
66519
class ExtAC;
 
66520
class ExtACBuilderCoupling;
 
66521
class ExtACSyntaxCoupling;
 
66522
class ExtACTree;
 
66523
class ExtACKeywords;
 
66524
class ExtGnu;
 
66525
class PragmaOnceUnitState;
 
66526
class PragmaOnce;
 
66527
class CMatchSyntax;
 
66528
namespace Puma {
 
66529
 
 
66530
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66531
 
 
66532
#line 66533 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66533
} // closed Puma
 
66534
 
 
66535
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66536
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66537
#include "CCExprResolveH.ah"
 
66538
#endif
 
66539
namespace Puma {
 
66540
 
 
66541
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66542
 
 
66543
#line 66544 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66544
} // closed Puma
 
66545
 
 
66546
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66547
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66548
#include "CExprResolveH.ah"
 
66549
#endif
 
66550
namespace Puma {
 
66551
 
 
66552
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66553
class CT_Call : public CT_Expression, public CSemObject {
 
66554
#line 66555 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66555
  friend class ::CCExprResolve;
 
66556
  friend class ::CExprResolve;
 
66557
  friend class ::WinIfExists;
 
66558
  friend class ::WinImportHandler;
 
66559
  friend class ::WinMacros;
 
66560
  friend class ::WinAsm;
 
66561
  friend class ::WinDeclSpecs;
 
66562
  friend class ::WinMemberExplSpec;
 
66563
  friend class ::WinTypeKeywords;
 
66564
  friend class ::WinFriend;
 
66565
  friend class ::ExtAC;
 
66566
  friend class ::ExtACBuilderCoupling;
 
66567
  friend class ::ExtACSyntaxCoupling;
 
66568
  friend class ::ExtACTree;
 
66569
  friend class ::ExtACKeywords;
 
66570
  friend class ::ExtGnu;
 
66571
  friend class ::PragmaOnceUnitState;
 
66572
  friend class ::PragmaOnce;
 
66573
  friend class ::CMatchSyntax;
 
66574
 
 
66575
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66576
 
 
66577
protected:
 
66578
  /** Constructor. */
 
66579
  CT_Call () {}
 
66580
  
 
66581
public:
 
66582
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66583
  static const char *NodeId ();
 
66584
  /** Get the name of the node. Can be compared with NodeId(). */
 
66585
  const char *NodeName () const { return NodeId (); }
 
66586
  /** Get the semantic information of the call. */
 
66587
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
66588
  /** Get this. */
 
66589
  CT_Call *IsCall () { return this; }
 
66590
   private:
 
66591
  typedef CT_Call CCExprResolveExpr;
 
66592
 
 
66593
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
66594
 public :
 
66595
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
66596
  typedef CT_Call CExprResolveExpr;
 
66597
 
 
66598
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
66599
 public :
 
66600
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
66601
  typedef AC::TLE __AttrTypes;
 
66602
  const char *__attr_name (unsigned i) const { return 0; }
 
66603
  const void *__attr (unsigned __i) const { return 0; }
 
66604
#line 654 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66605
};
 
66606
 
 
66607
/** \class CT_ImplicitCall CTree.h Puma/CTree.h
 
66608
 *  Tree node representing implicit function calls detected by
 
66609
 *  the semantic analysis. 
 
66610
 *  Example:
 
66611
 *  \code
 
66612
 * class Number {
 
66613
 *   int _n;
 
66614
 * public:
 
66615
 *   Number(int n) : _n(n) {}
 
66616
 *   int operator+(const Number& n) { return n._n + _n; }
 
66617
 * };
 
66618
 *     
 
66619
 * Number one(1), two(2);
 
66620
 * one + two;  // implicitely calls one.operator+(two)
 
66621
 *  \endcode */
 
66622
 
 
66623
#line 66624 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66624
} // closed Puma
 
66625
class CCExprResolve;
 
66626
class CExprResolve;
 
66627
class WinIfExists;
 
66628
class WinImportHandler;
 
66629
class WinMacros;
 
66630
class WinAsm;
 
66631
class WinDeclSpecs;
 
66632
class WinMemberExplSpec;
 
66633
class WinTypeKeywords;
 
66634
class WinFriend;
 
66635
class ExtAC;
 
66636
class ExtACBuilderCoupling;
 
66637
class ExtACSyntaxCoupling;
 
66638
class ExtACTree;
 
66639
class ExtACKeywords;
 
66640
class ExtGnu;
 
66641
class PragmaOnceUnitState;
 
66642
class PragmaOnce;
 
66643
class CMatchSyntax;
 
66644
namespace Puma {
 
66645
 
 
66646
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66647
 
 
66648
#line 66649 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66649
} // closed Puma
 
66650
 
 
66651
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66652
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66653
#include "CCExprResolveH.ah"
 
66654
#endif
 
66655
namespace Puma {
 
66656
 
 
66657
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66658
 
 
66659
#line 66660 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66660
} // closed Puma
 
66661
 
 
66662
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66663
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66664
#include "CExprResolveH.ah"
 
66665
#endif
 
66666
namespace Puma {
 
66667
 
 
66668
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66669
class CT_ImplicitCall : public CT_Call {
 
66670
#line 66671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66671
  friend class ::CCExprResolve;
 
66672
  friend class ::CExprResolve;
 
66673
  friend class ::WinIfExists;
 
66674
  friend class ::WinImportHandler;
 
66675
  friend class ::WinMacros;
 
66676
  friend class ::WinAsm;
 
66677
  friend class ::WinDeclSpecs;
 
66678
  friend class ::WinMemberExplSpec;
 
66679
  friend class ::WinTypeKeywords;
 
66680
  friend class ::WinFriend;
 
66681
  friend class ::ExtAC;
 
66682
  friend class ::ExtACBuilderCoupling;
 
66683
  friend class ::ExtACSyntaxCoupling;
 
66684
  friend class ::ExtACTree;
 
66685
  friend class ::ExtACKeywords;
 
66686
  friend class ::ExtGnu;
 
66687
  friend class ::PragmaOnceUnitState;
 
66688
  friend class ::PragmaOnce;
 
66689
  friend class ::CMatchSyntax;
 
66690
 
 
66691
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66692
 
 
66693
  CTree *_arg;
 
66694
 
 
66695
public:
 
66696
  /** Constructor.
 
66697
   *  \param arg The call argument. */
 
66698
  CT_ImplicitCall (CTree *arg) { AddSon (_arg, arg); }
 
66699
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66700
  static const char *NodeId ();
 
66701
  /** Get the name of the node. Can be compared with NodeId(). */
 
66702
  const char *NodeName () const { return NodeId (); }
 
66703
  /** Get the number of sons. */
 
66704
  int Sons () const { return 1; }
 
66705
  /** Get the n-th son.
 
66706
   *  \param n The index of the son.
 
66707
   *  \return The n-th son or NULL. */
 
66708
  CTree *Son (int n) const { return (n == 0) ? _arg : (CTree*)0; }
 
66709
  /** Replace a son.
 
66710
   *  \param old_son The son to replace.
 
66711
   *  \param new_son The new son. */
 
66712
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
66713
   { CTree::ReplaceSon (_arg, old_son, new_son); }
 
66714
   private:
 
66715
  typedef CT_ImplicitCall CCExprResolveExpr;
 
66716
 
 
66717
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
66718
 public :
 
66719
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
66720
  typedef CT_ImplicitCall CExprResolveExpr;
 
66721
 
 
66722
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
66723
 public :
 
66724
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
66725
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
66726
  const char *__attr_name (unsigned i) const {
 
66727
    static const char *names[] = { "_arg" }; return names[i];
 
66728
  }
 
66729
  const void *__attr (unsigned __i) const {
 
66730
    switch (__i) { case 0: return &_arg; default: return 0; }
 
66731
  }
 
66732
#line 693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66733
};
 
66734
 
 
66735
/** \class CT_String CTree.h Puma/CTree.h
 
66736
 *  Tree node representing a string literal. 
 
66737
 *  Example: \code "abc" \endcode */
 
66738
 
 
66739
#line 66740 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66740
} // closed Puma
 
66741
class CCExprResolve;
 
66742
class CExprResolve;
 
66743
class WinIfExists;
 
66744
class WinImportHandler;
 
66745
class WinMacros;
 
66746
class WinAsm;
 
66747
class WinDeclSpecs;
 
66748
class WinMemberExplSpec;
 
66749
class WinTypeKeywords;
 
66750
class WinFriend;
 
66751
class ExtAC;
 
66752
class ExtACBuilderCoupling;
 
66753
class ExtACSyntaxCoupling;
 
66754
class ExtACTree;
 
66755
class ExtACKeywords;
 
66756
class ExtGnu;
 
66757
class PragmaOnceUnitState;
 
66758
class PragmaOnce;
 
66759
class CMatchSyntax;
 
66760
namespace Puma {
 
66761
 
 
66762
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66763
 
 
66764
#line 66765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66765
} // closed Puma
 
66766
 
 
66767
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66768
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66769
#include "CCExprResolveH.ah"
 
66770
#endif
 
66771
namespace Puma {
 
66772
 
 
66773
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66774
 
 
66775
#line 66776 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66776
} // closed Puma
 
66777
 
 
66778
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66779
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66780
#include "CExprResolveH.ah"
 
66781
#endif
 
66782
namespace Puma {
 
66783
 
 
66784
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66785
class CT_String : public CT_List, public CSemValue {
 
66786
#line 66787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66787
  friend class ::CCExprResolve;
 
66788
  friend class ::CExprResolve;
 
66789
  friend class ::WinIfExists;
 
66790
  friend class ::WinImportHandler;
 
66791
  friend class ::WinMacros;
 
66792
  friend class ::WinAsm;
 
66793
  friend class ::WinDeclSpecs;
 
66794
  friend class ::WinMemberExplSpec;
 
66795
  friend class ::WinTypeKeywords;
 
66796
  friend class ::WinFriend;
 
66797
  friend class ::ExtAC;
 
66798
  friend class ::ExtACBuilderCoupling;
 
66799
  friend class ::ExtACSyntaxCoupling;
 
66800
  friend class ::ExtACTree;
 
66801
  friend class ::ExtACKeywords;
 
66802
  friend class ::ExtGnu;
 
66803
  friend class ::PragmaOnceUnitState;
 
66804
  friend class ::PragmaOnce;
 
66805
  friend class ::CMatchSyntax;
 
66806
 
 
66807
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66808
 
 
66809
public:
 
66810
  /** Constructor. 
 
66811
   *  \param size The number of sub-strings. */
 
66812
  CT_String (int size) : CT_List (size, 1) {}
 
66813
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66814
  static const char *NodeId ();
 
66815
  /** Get the name of the node. Can be compared with NodeId(). */
 
66816
  const char *NodeName () const { return NodeId (); }
 
66817
 
 
66818
  /** Get the type of the string. 
 
66819
   *  \return The type or NULL. */
 
66820
  CTypeInfo *Type () const { return type; }
 
66821
  /** Get the string value.
 
66822
   *  \return The value or NULL. */
 
66823
  CExprValue *Value () const { return value; }
 
66824
  /** Get the semantic value info object.
 
66825
   *  \return The semantic value object or NULL. */
 
66826
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
66827
  /** Get this. */
 
66828
  virtual CT_String *IsString () { return this; }
 
66829
   private:
 
66830
  typedef CT_String CCExprResolveExpr;
 
66831
 
 
66832
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
66833
 public :
 
66834
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
66835
  typedef CT_String CExprResolveExpr;
 
66836
 
 
66837
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
66838
 public :
 
66839
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
66840
  typedef AC::TLE __AttrTypes;
 
66841
  const char *__attr_name (unsigned i) const { return 0; }
 
66842
  const void *__attr (unsigned __i) const { return 0; }
 
66843
#line 719 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66844
};
 
66845
 
 
66846
/** \class CT_WideString CTree.h Puma/CTree.h
 
66847
 *  Tree node representing a wide string literal. 
 
66848
 *  Example: \code L"abc" \endcode */
 
66849
 
 
66850
#line 66851 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66851
} // closed Puma
 
66852
class CCExprResolve;
 
66853
class CExprResolve;
 
66854
class WinIfExists;
 
66855
class WinImportHandler;
 
66856
class WinMacros;
 
66857
class WinAsm;
 
66858
class WinDeclSpecs;
 
66859
class WinMemberExplSpec;
 
66860
class WinTypeKeywords;
 
66861
class WinFriend;
 
66862
class ExtAC;
 
66863
class ExtACBuilderCoupling;
 
66864
class ExtACSyntaxCoupling;
 
66865
class ExtACTree;
 
66866
class ExtACKeywords;
 
66867
class ExtGnu;
 
66868
class PragmaOnceUnitState;
 
66869
class PragmaOnce;
 
66870
class CMatchSyntax;
 
66871
namespace Puma {
 
66872
 
 
66873
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66874
 
 
66875
#line 66876 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66876
} // closed Puma
 
66877
 
 
66878
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66879
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66880
#include "CCExprResolveH.ah"
 
66881
#endif
 
66882
namespace Puma {
 
66883
 
 
66884
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66885
 
 
66886
#line 66887 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66887
} // closed Puma
 
66888
 
 
66889
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66890
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66891
#include "CExprResolveH.ah"
 
66892
#endif
 
66893
namespace Puma {
 
66894
 
 
66895
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66896
class CT_WideString : public CT_String {
 
66897
#line 66898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66898
  friend class ::CCExprResolve;
 
66899
  friend class ::CExprResolve;
 
66900
  friend class ::WinIfExists;
 
66901
  friend class ::WinImportHandler;
 
66902
  friend class ::WinMacros;
 
66903
  friend class ::WinAsm;
 
66904
  friend class ::WinDeclSpecs;
 
66905
  friend class ::WinMemberExplSpec;
 
66906
  friend class ::WinTypeKeywords;
 
66907
  friend class ::WinFriend;
 
66908
  friend class ::ExtAC;
 
66909
  friend class ::ExtACBuilderCoupling;
 
66910
  friend class ::ExtACSyntaxCoupling;
 
66911
  friend class ::ExtACTree;
 
66912
  friend class ::ExtACKeywords;
 
66913
  friend class ::ExtGnu;
 
66914
  friend class ::PragmaOnceUnitState;
 
66915
  friend class ::PragmaOnce;
 
66916
  friend class ::CMatchSyntax;
 
66917
 
 
66918
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66919
 
 
66920
public:
 
66921
  /** Constructor.
 
66922
   *  \param size The number of sub-strings. */
 
66923
  CT_WideString (int size) : CT_String (size) {}
 
66924
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
66925
  static const char *NodeId ();
 
66926
  /** Get the name of the node. Can be compared with NodeId(). */
 
66927
  const char *NodeName () const { return NodeId (); }
 
66928
   private:
 
66929
  typedef CT_WideString CCExprResolveExpr;
 
66930
 
 
66931
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
66932
 public :
 
66933
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
66934
  typedef CT_WideString CExprResolveExpr;
 
66935
 
 
66936
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
66937
 public :
 
66938
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
66939
  typedef AC::TLE __AttrTypes;
 
66940
  const char *__attr_name (unsigned i) const { return 0; }
 
66941
  const void *__attr (unsigned __i) const { return 0; }
 
66942
#line 733 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66943
};
 
66944
 
 
66945
/** \class CT_Integer CTree.h Puma/CTree.h
 
66946
 *  Tree node representing an integer constant. 
 
66947
 *  Example: \code 1234 \endcode */
 
66948
 
 
66949
#line 66950 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66950
} // closed Puma
 
66951
class CCExprResolve;
 
66952
class CExprResolve;
 
66953
class WinIfExists;
 
66954
class WinImportHandler;
 
66955
class WinMacros;
 
66956
class WinAsm;
 
66957
class WinDeclSpecs;
 
66958
class WinMemberExplSpec;
 
66959
class WinTypeKeywords;
 
66960
class WinFriend;
 
66961
class ExtAC;
 
66962
class ExtACBuilderCoupling;
 
66963
class ExtACSyntaxCoupling;
 
66964
class ExtACTree;
 
66965
class ExtACKeywords;
 
66966
class ExtGnu;
 
66967
class PragmaOnceUnitState;
 
66968
class PragmaOnce;
 
66969
class CMatchSyntax;
 
66970
namespace Puma {
 
66971
 
 
66972
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66973
 
 
66974
#line 66975 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66975
} // closed Puma
 
66976
 
 
66977
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66978
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
66979
#include "CCExprResolveH.ah"
 
66980
#endif
 
66981
namespace Puma {
 
66982
 
 
66983
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66984
 
 
66985
#line 66986 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66986
} // closed Puma
 
66987
 
 
66988
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66989
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
66990
#include "CExprResolveH.ah"
 
66991
#endif
 
66992
namespace Puma {
 
66993
 
 
66994
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
66995
class CT_Integer : public CT_Expression {
 
66996
#line 66997 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
66997
  friend class ::CCExprResolve;
 
66998
  friend class ::CExprResolve;
 
66999
  friend class ::WinIfExists;
 
67000
  friend class ::WinImportHandler;
 
67001
  friend class ::WinMacros;
 
67002
  friend class ::WinAsm;
 
67003
  friend class ::WinDeclSpecs;
 
67004
  friend class ::WinMemberExplSpec;
 
67005
  friend class ::WinTypeKeywords;
 
67006
  friend class ::WinFriend;
 
67007
  friend class ::ExtAC;
 
67008
  friend class ::ExtACBuilderCoupling;
 
67009
  friend class ::ExtACSyntaxCoupling;
 
67010
  friend class ::ExtACTree;
 
67011
  friend class ::ExtACKeywords;
 
67012
  friend class ::ExtGnu;
 
67013
  friend class ::PragmaOnceUnitState;
 
67014
  friend class ::PragmaOnce;
 
67015
  friend class ::CMatchSyntax;
 
67016
 
 
67017
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67018
 
 
67019
  CTree *_value;  // CT_Token
 
67020
 
 
67021
public:
 
67022
  /** Constructor.
 
67023
   *  \param token The token containing the integer value. */
 
67024
  CT_Integer (CTree *token) { AddSon (_value, token); }
 
67025
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
67026
  static const char *NodeId ();
 
67027
  /** Get the name of the node. Can be compared with NodeId(). */
 
67028
  const char *NodeName () const { return NodeId (); }
 
67029
  /** Get the number of sons. */
 
67030
  int Sons () const { return _value ? 1 : 0; }
 
67031
  /** Get the n-th son.
 
67032
   *  \param n The index of the son.
 
67033
   *  \return The n-th son or NULL. */
 
67034
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
67035
  /** Replace a son.
 
67036
   *  \param old_son The son to replace.
 
67037
   *  \param new_son The new son. */
 
67038
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
67039
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
67040
   private:
 
67041
  typedef CT_Integer CCExprResolveExpr;
 
67042
 
 
67043
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
67044
 public :
 
67045
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
67046
  typedef CT_Integer CExprResolveExpr;
 
67047
 
 
67048
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
67049
 public :
 
67050
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
67051
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
67052
  const char *__attr_name (unsigned i) const {
 
67053
    static const char *names[] = { "_value" }; return names[i];
 
67054
  }
 
67055
  const void *__attr (unsigned __i) const {
 
67056
    switch (__i) { case 0: return &_value; default: return 0; }
 
67057
  }
 
67058
#line 760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67059
};
 
67060
 
 
67061
/** \class CT_Character CTree.h Puma/CTree.h
 
67062
 *  Tree node representing a single character constant. 
 
67063
 *  Example: \code 'a' \endcode */
 
67064
 
 
67065
#line 67066 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67066
} // closed Puma
 
67067
class CCExprResolve;
 
67068
class CExprResolve;
 
67069
class WinIfExists;
 
67070
class WinImportHandler;
 
67071
class WinMacros;
 
67072
class WinAsm;
 
67073
class WinDeclSpecs;
 
67074
class WinMemberExplSpec;
 
67075
class WinTypeKeywords;
 
67076
class WinFriend;
 
67077
class ExtAC;
 
67078
class ExtACBuilderCoupling;
 
67079
class ExtACSyntaxCoupling;
 
67080
class ExtACTree;
 
67081
class ExtACKeywords;
 
67082
class ExtGnu;
 
67083
class PragmaOnceUnitState;
 
67084
class PragmaOnce;
 
67085
class CMatchSyntax;
 
67086
namespace Puma {
 
67087
 
 
67088
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67089
 
 
67090
#line 67091 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67091
} // closed Puma
 
67092
 
 
67093
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67094
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67095
#include "CCExprResolveH.ah"
 
67096
#endif
 
67097
namespace Puma {
 
67098
 
 
67099
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67100
 
 
67101
#line 67102 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67102
} // closed Puma
 
67103
 
 
67104
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67105
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67106
#include "CExprResolveH.ah"
 
67107
#endif
 
67108
namespace Puma {
 
67109
 
 
67110
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67111
class CT_Character : public CT_Expression {
 
67112
#line 67113 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67113
  friend class ::CCExprResolve;
 
67114
  friend class ::CExprResolve;
 
67115
  friend class ::WinIfExists;
 
67116
  friend class ::WinImportHandler;
 
67117
  friend class ::WinMacros;
 
67118
  friend class ::WinAsm;
 
67119
  friend class ::WinDeclSpecs;
 
67120
  friend class ::WinMemberExplSpec;
 
67121
  friend class ::WinTypeKeywords;
 
67122
  friend class ::WinFriend;
 
67123
  friend class ::ExtAC;
 
67124
  friend class ::ExtACBuilderCoupling;
 
67125
  friend class ::ExtACSyntaxCoupling;
 
67126
  friend class ::ExtACTree;
 
67127
  friend class ::ExtACKeywords;
 
67128
  friend class ::ExtGnu;
 
67129
  friend class ::PragmaOnceUnitState;
 
67130
  friend class ::PragmaOnce;
 
67131
  friend class ::CMatchSyntax;
 
67132
 
 
67133
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67134
 
 
67135
  CTree *_value;  // CT_Token
 
67136
 
 
67137
public:
 
67138
  /** Constructor.
 
67139
   *  \param token The token containing the character value. */
 
67140
  CT_Character (CTree *token) { AddSon (_value, token); }
 
67141
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
67142
  static const char *NodeId ();
 
67143
  /** Get the name of the node. Can be compared with NodeId(). */
 
67144
  const char *NodeName () const { return NodeId (); }
 
67145
  /** Get the number of sons. */
 
67146
  int Sons () const { return 1; }
 
67147
  /** Get the n-th son.
 
67148
   *  \param n The index of the son.
 
67149
   *  \return The n-th son or NULL. */
 
67150
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
67151
  /** Replace a son.
 
67152
   *  \param old_son The son to replace.
 
67153
   *  \param new_son The new son. */
 
67154
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
67155
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
67156
   private:
 
67157
  typedef CT_Character CCExprResolveExpr;
 
67158
 
 
67159
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
67160
 public :
 
67161
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
67162
  typedef CT_Character CExprResolveExpr;
 
67163
 
 
67164
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
67165
 public :
 
67166
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
67167
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
67168
  const char *__attr_name (unsigned i) const {
 
67169
    static const char *names[] = { "_value" }; return names[i];
 
67170
  }
 
67171
  const void *__attr (unsigned __i) const {
 
67172
    switch (__i) { case 0: return &_value; default: return 0; }
 
67173
  }
 
67174
#line 787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67175
};
 
67176
 
 
67177
/** \class CT_WideCharacter CTree.h Puma/CTree.h
 
67178
 *  Tree node representing a wide character constant. 
 
67179
 *  Example: \code L'a' \endcode */
 
67180
 
 
67181
#line 67182 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67182
} // closed Puma
 
67183
class CCExprResolve;
 
67184
class CExprResolve;
 
67185
class WinIfExists;
 
67186
class WinImportHandler;
 
67187
class WinMacros;
 
67188
class WinAsm;
 
67189
class WinDeclSpecs;
 
67190
class WinMemberExplSpec;
 
67191
class WinTypeKeywords;
 
67192
class WinFriend;
 
67193
class ExtAC;
 
67194
class ExtACBuilderCoupling;
 
67195
class ExtACSyntaxCoupling;
 
67196
class ExtACTree;
 
67197
class ExtACKeywords;
 
67198
class ExtGnu;
 
67199
class PragmaOnceUnitState;
 
67200
class PragmaOnce;
 
67201
class CMatchSyntax;
 
67202
namespace Puma {
 
67203
 
 
67204
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67205
 
 
67206
#line 67207 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67207
} // closed Puma
 
67208
 
 
67209
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67210
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67211
#include "CCExprResolveH.ah"
 
67212
#endif
 
67213
namespace Puma {
 
67214
 
 
67215
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67216
 
 
67217
#line 67218 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67218
} // closed Puma
 
67219
 
 
67220
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67221
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67222
#include "CExprResolveH.ah"
 
67223
#endif
 
67224
namespace Puma {
 
67225
 
 
67226
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67227
class CT_WideCharacter : public CT_Character {
 
67228
#line 67229 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67229
  friend class ::CCExprResolve;
 
67230
  friend class ::CExprResolve;
 
67231
  friend class ::WinIfExists;
 
67232
  friend class ::WinImportHandler;
 
67233
  friend class ::WinMacros;
 
67234
  friend class ::WinAsm;
 
67235
  friend class ::WinDeclSpecs;
 
67236
  friend class ::WinMemberExplSpec;
 
67237
  friend class ::WinTypeKeywords;
 
67238
  friend class ::WinFriend;
 
67239
  friend class ::ExtAC;
 
67240
  friend class ::ExtACBuilderCoupling;
 
67241
  friend class ::ExtACSyntaxCoupling;
 
67242
  friend class ::ExtACTree;
 
67243
  friend class ::ExtACKeywords;
 
67244
  friend class ::ExtGnu;
 
67245
  friend class ::PragmaOnceUnitState;
 
67246
  friend class ::PragmaOnce;
 
67247
  friend class ::CMatchSyntax;
 
67248
 
 
67249
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67250
 
 
67251
public:
 
67252
  /** Constructor.
 
67253
   *  \param token The token containing the wide character value. */
 
67254
  CT_WideCharacter (CTree *token) : CT_Character (token) {}
 
67255
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
67256
  static const char *NodeId ();
 
67257
  /** Get the name of the node. Can be compared with NodeId(). */
 
67258
  const char *NodeName () const { return NodeId (); }
 
67259
   private:
 
67260
  typedef CT_WideCharacter CCExprResolveExpr;
 
67261
 
 
67262
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
67263
 public :
 
67264
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
67265
  typedef CT_WideCharacter CExprResolveExpr;
 
67266
 
 
67267
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
67268
 public :
 
67269
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
67270
  typedef AC::TLE __AttrTypes;
 
67271
  const char *__attr_name (unsigned i) const { return 0; }
 
67272
  const void *__attr (unsigned __i) const { return 0; }
 
67273
#line 801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67274
};
 
67275
 
 
67276
/** \class CT_Float CTree.h Puma/CTree.h
 
67277
 *  Tree node representing a floating point constant. 
 
67278
 *  Example: \code 12.34 \endcode */
 
67279
 
 
67280
#line 67281 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67281
} // closed Puma
 
67282
class CCExprResolve;
 
67283
class CExprResolve;
 
67284
class WinIfExists;
 
67285
class WinImportHandler;
 
67286
class WinMacros;
 
67287
class WinAsm;
 
67288
class WinDeclSpecs;
 
67289
class WinMemberExplSpec;
 
67290
class WinTypeKeywords;
 
67291
class WinFriend;
 
67292
class ExtAC;
 
67293
class ExtACBuilderCoupling;
 
67294
class ExtACSyntaxCoupling;
 
67295
class ExtACTree;
 
67296
class ExtACKeywords;
 
67297
class ExtGnu;
 
67298
class PragmaOnceUnitState;
 
67299
class PragmaOnce;
 
67300
class CMatchSyntax;
 
67301
namespace Puma {
 
67302
 
 
67303
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67304
 
 
67305
#line 67306 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67306
} // closed Puma
 
67307
 
 
67308
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67309
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67310
#include "CCExprResolveH.ah"
 
67311
#endif
 
67312
namespace Puma {
 
67313
 
 
67314
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67315
 
 
67316
#line 67317 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67317
} // closed Puma
 
67318
 
 
67319
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67320
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67321
#include "CExprResolveH.ah"
 
67322
#endif
 
67323
namespace Puma {
 
67324
 
 
67325
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67326
class CT_Float : public CT_Expression {
 
67327
#line 67328 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67328
  friend class ::CCExprResolve;
 
67329
  friend class ::CExprResolve;
 
67330
  friend class ::WinIfExists;
 
67331
  friend class ::WinImportHandler;
 
67332
  friend class ::WinMacros;
 
67333
  friend class ::WinAsm;
 
67334
  friend class ::WinDeclSpecs;
 
67335
  friend class ::WinMemberExplSpec;
 
67336
  friend class ::WinTypeKeywords;
 
67337
  friend class ::WinFriend;
 
67338
  friend class ::ExtAC;
 
67339
  friend class ::ExtACBuilderCoupling;
 
67340
  friend class ::ExtACSyntaxCoupling;
 
67341
  friend class ::ExtACTree;
 
67342
  friend class ::ExtACKeywords;
 
67343
  friend class ::ExtGnu;
 
67344
  friend class ::PragmaOnceUnitState;
 
67345
  friend class ::PragmaOnce;
 
67346
  friend class ::CMatchSyntax;
 
67347
 
 
67348
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67349
 
 
67350
  CTree *_value;  // CT_Token
 
67351
 
 
67352
public:
 
67353
  /** Constructor.
 
67354
   *  \param token The token containing the floating point value. */
 
67355
  CT_Float (CTree *token) { AddSon (_value, token); }
 
67356
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
67357
  static const char *NodeId ();
 
67358
  /** Get the name of the node. Can be compared with NodeId(). */
 
67359
  const char *NodeName () const { return NodeId (); }
 
67360
  /** Get the number of sons. */
 
67361
  int Sons () const { return 1; }
 
67362
  /** Get the n-th son.
 
67363
   *  \param n The index of the son.
 
67364
   *  \return The n-th son or NULL. */
 
67365
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
67366
  /** Replace a son.
 
67367
   *  \param old_son The son to replace.
 
67368
   *  \param new_son The new son. */
 
67369
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
67370
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
67371
   private:
 
67372
  typedef CT_Float CCExprResolveExpr;
 
67373
 
 
67374
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
67375
 public :
 
67376
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
67377
  typedef CT_Float CExprResolveExpr;
 
67378
 
 
67379
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
67380
 public :
 
67381
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
67382
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
67383
  const char *__attr_name (unsigned i) const {
 
67384
    static const char *names[] = { "_value" }; return names[i];
 
67385
  }
 
67386
  const void *__attr (unsigned __i) const {
 
67387
    switch (__i) { case 0: return &_value; default: return 0; }
 
67388
  }
 
67389
#line 828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67390
};
 
67391
 
 
67392
/** \class CT_Bool CTree.h Puma/CTree.h
 
67393
 *  Tree node representing a boolean literal. 
 
67394
 *  Examples: 
 
67395
 *  \code 
 
67396
 * true
 
67397
 * false
 
67398
 *  \endcode */
 
67399
 
 
67400
#line 67401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67401
} // closed Puma
 
67402
class CCExprResolve;
 
67403
class CExprResolve;
 
67404
class WinIfExists;
 
67405
class WinImportHandler;
 
67406
class WinMacros;
 
67407
class WinAsm;
 
67408
class WinDeclSpecs;
 
67409
class WinMemberExplSpec;
 
67410
class WinTypeKeywords;
 
67411
class WinFriend;
 
67412
class ExtAC;
 
67413
class ExtACBuilderCoupling;
 
67414
class ExtACSyntaxCoupling;
 
67415
class ExtACTree;
 
67416
class ExtACKeywords;
 
67417
class ExtGnu;
 
67418
class PragmaOnceUnitState;
 
67419
class PragmaOnce;
 
67420
class CMatchSyntax;
 
67421
namespace Puma {
 
67422
 
 
67423
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67424
 
 
67425
#line 67426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67426
} // closed Puma
 
67427
 
 
67428
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67429
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67430
#include "CCExprResolveH.ah"
 
67431
#endif
 
67432
namespace Puma {
 
67433
 
 
67434
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67435
 
 
67436
#line 67437 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67437
} // closed Puma
 
67438
 
 
67439
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67440
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67441
#include "CExprResolveH.ah"
 
67442
#endif
 
67443
namespace Puma {
 
67444
 
 
67445
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67446
class CT_Bool : public CT_Expression {
 
67447
#line 67448 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67448
  friend class ::CCExprResolve;
 
67449
  friend class ::CExprResolve;
 
67450
  friend class ::WinIfExists;
 
67451
  friend class ::WinImportHandler;
 
67452
  friend class ::WinMacros;
 
67453
  friend class ::WinAsm;
 
67454
  friend class ::WinDeclSpecs;
 
67455
  friend class ::WinMemberExplSpec;
 
67456
  friend class ::WinTypeKeywords;
 
67457
  friend class ::WinFriend;
 
67458
  friend class ::ExtAC;
 
67459
  friend class ::ExtACBuilderCoupling;
 
67460
  friend class ::ExtACSyntaxCoupling;
 
67461
  friend class ::ExtACTree;
 
67462
  friend class ::ExtACKeywords;
 
67463
  friend class ::ExtGnu;
 
67464
  friend class ::PragmaOnceUnitState;
 
67465
  friend class ::PragmaOnce;
 
67466
  friend class ::CMatchSyntax;
 
67467
 
 
67468
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67469
 
 
67470
  CTree *_value;  // CT_Token
 
67471
 
 
67472
public:
 
67473
  /** Constructor.
 
67474
   *  \param token The token containing the boolean value. */
 
67475
  CT_Bool (CTree *token) { AddSon (_value, token); }
 
67476
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
67477
  static const char *NodeId ();
 
67478
  /** Get the name of the node. Can be compared with NodeId(). */
 
67479
  const char *NodeName () const { return NodeId (); }
 
67480
  /** Get the number of sons. */
 
67481
  int Sons () const { return 1; }
 
67482
  /** Get the n-th son.
 
67483
   *  \param n The index of the son.
 
67484
   *  \return The n-th son or NULL. */
 
67485
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
67486
  /** Replace a son.
 
67487
   *  \param old_son The son to replace.
 
67488
   *  \param new_son The new son. */
 
67489
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
67490
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
67491
   private:
 
67492
  typedef CT_Bool CCExprResolveExpr;
 
67493
 
 
67494
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
67495
 public :
 
67496
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
67497
  typedef CT_Bool CExprResolveExpr;
 
67498
 
 
67499
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
67500
 public :
 
67501
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
67502
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
67503
  const char *__attr_name (unsigned i) const {
 
67504
    static const char *names[] = { "_value" }; return names[i];
 
67505
  }
 
67506
  const void *__attr (unsigned __i) const {
 
67507
    switch (__i) { case 0: return &_value; default: return 0; }
 
67508
  }
 
67509
#line 859 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67510
};
 
67511
 
 
67512
/** \class CT_BracedExpr CTree.h Puma/CTree.h
 
67513
 *  Tree node representing a braced expression.
 
67514
 *  Example: \code (a+b) \endcode */
 
67515
 
 
67516
#line 67517 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67517
} // closed Puma
 
67518
class CCExprResolve;
 
67519
class CExprResolve;
 
67520
class WinIfExists;
 
67521
class WinImportHandler;
 
67522
class WinMacros;
 
67523
class WinAsm;
 
67524
class WinDeclSpecs;
 
67525
class WinMemberExplSpec;
 
67526
class WinTypeKeywords;
 
67527
class WinFriend;
 
67528
class ExtAC;
 
67529
class ExtACBuilderCoupling;
 
67530
class ExtACSyntaxCoupling;
 
67531
class ExtACTree;
 
67532
class ExtACKeywords;
 
67533
class ExtGnu;
 
67534
class PragmaOnceUnitState;
 
67535
class PragmaOnce;
 
67536
class CMatchSyntax;
 
67537
namespace Puma {
 
67538
 
 
67539
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67540
 
 
67541
#line 67542 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67542
} // closed Puma
 
67543
 
 
67544
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67545
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67546
#include "CCExprResolveH.ah"
 
67547
#endif
 
67548
namespace Puma {
 
67549
 
 
67550
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67551
 
 
67552
#line 67553 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67553
} // closed Puma
 
67554
 
 
67555
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67556
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67557
#include "CExprResolveH.ah"
 
67558
#endif
 
67559
namespace Puma {
 
67560
 
 
67561
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67562
class CT_BracedExpr : public CT_Expression {
 
67563
#line 67564 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67564
  friend class ::CCExprResolve;
 
67565
  friend class ::CExprResolve;
 
67566
  friend class ::WinIfExists;
 
67567
  friend class ::WinImportHandler;
 
67568
  friend class ::WinMacros;
 
67569
  friend class ::WinAsm;
 
67570
  friend class ::WinDeclSpecs;
 
67571
  friend class ::WinMemberExplSpec;
 
67572
  friend class ::WinTypeKeywords;
 
67573
  friend class ::WinFriend;
 
67574
  friend class ::ExtAC;
 
67575
  friend class ::ExtACBuilderCoupling;
 
67576
  friend class ::ExtACSyntaxCoupling;
 
67577
  friend class ::ExtACTree;
 
67578
  friend class ::ExtACKeywords;
 
67579
  friend class ::ExtGnu;
 
67580
  friend class ::PragmaOnceUnitState;
 
67581
  friend class ::PragmaOnce;
 
67582
  friend class ::CMatchSyntax;
 
67583
 
 
67584
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67585
 
 
67586
  CTree *sons[3]; // open, expr, close
 
67587
 
 
67588
public:
 
67589
  /** Constructor.
 
67590
   *  \param o The opening brace.
 
67591
   *  \param e The enclosed expression.
 
67592
   *  \param c The closing brace. */
 
67593
  CT_BracedExpr (CTree *o, CTree *e, CTree *c) { 
 
67594
    AddSon (sons[0], o); AddSon (sons[1], e); AddSon (sons[2], c); 
 
67595
  }
 
67596
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
67597
  static const char *NodeId ();
 
67598
  /** Get the name of the node. Can be compared with NodeId(). */
 
67599
  const char *NodeName () const { return NodeId (); }
 
67600
  /** Get the number of sons. */
 
67601
  int Sons () const { return 3; }
 
67602
  /** Get the n-th son.
 
67603
   *  \param n The index of the son.
 
67604
   *  \return The n-th son or NULL. */
 
67605
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
67606
  /** Get the enclosed expression. */
 
67607
  CTree *Expr () const { return sons[1]; }
 
67608
  /** Get the type of the enclosed expression. */
 
67609
  CTypeInfo *Type () const { return Expr ()->Type (); }
 
67610
  /** Get the value of the enclosed expression. */
 
67611
  CExprValue *Value () const { return Expr ()->Value (); }
 
67612
  /** Get the semantic value of the expression. */
 
67613
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
67614
  /** Replace a son.
 
67615
   *  \param old_son The son to replace.
 
67616
   *  \param new_son The new son. */
 
67617
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
67618
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
67619
  }
 
67620
   private:
 
67621
  typedef CT_BracedExpr CCExprResolveExpr;
 
67622
 
 
67623
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
67624
 public :
 
67625
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
67626
  typedef CT_BracedExpr CExprResolveExpr;
 
67627
 
 
67628
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
67629
 public :
 
67630
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
67631
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
67632
  const char *__attr_name (unsigned i) const {
 
67633
    static const char *names[] = { "sons" }; return names[i];
 
67634
  }
 
67635
  const void *__attr (unsigned __i) const {
 
67636
    switch (__i) { case 0: return &sons; default: return 0; }
 
67637
  }
 
67638
#line 899 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67639
};
 
67640
 
 
67641
/** \class CT_SimpleName CTree.h Puma/CTree.h
 
67642
 *  Base class for all tree nodes representing a name. 
 
67643
 *  Example: \code a \endcode */
 
67644
 
 
67645
#line 67646 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67646
} // closed Puma
 
67647
class CCExprResolve;
 
67648
class CExprResolve;
 
67649
class WinIfExists;
 
67650
class WinImportHandler;
 
67651
class WinMacros;
 
67652
class WinAsm;
 
67653
class WinDeclSpecs;
 
67654
class WinMemberExplSpec;
 
67655
class WinTypeKeywords;
 
67656
class WinFriend;
 
67657
class ExtAC;
 
67658
class ExtACBuilderCoupling;
 
67659
class ExtACSyntaxCoupling;
 
67660
class ExtACTree;
 
67661
class ExtACKeywords;
 
67662
class ExtGnu;
 
67663
class PragmaOnceUnitState;
 
67664
class PragmaOnce;
 
67665
class CMatchSyntax;
 
67666
namespace Puma {
 
67667
 
 
67668
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67669
 
 
67670
#line 67671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67671
} // closed Puma
 
67672
 
 
67673
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67674
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67675
#include "CCExprResolveH.ah"
 
67676
#endif
 
67677
namespace Puma {
 
67678
 
 
67679
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67680
 
 
67681
#line 67682 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67682
} // closed Puma
 
67683
 
 
67684
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67685
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67686
#include "CExprResolveH.ah"
 
67687
#endif
 
67688
namespace Puma {
 
67689
 
 
67690
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67691
class CT_SimpleName : public CT_List, public Printable, 
 
67692
                      public CSemValue, public CSemObject {
 
67693
#line 67694 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67694
  friend class ::CCExprResolve;
 
67695
  friend class ::CExprResolve;
 
67696
  friend class ::WinIfExists;
 
67697
  friend class ::WinImportHandler;
 
67698
  friend class ::WinMacros;
 
67699
  friend class ::WinAsm;
 
67700
  friend class ::WinDeclSpecs;
 
67701
  friend class ::WinMemberExplSpec;
 
67702
  friend class ::WinTypeKeywords;
 
67703
  friend class ::WinFriend;
 
67704
  friend class ::ExtAC;
 
67705
  friend class ::ExtACBuilderCoupling;
 
67706
  friend class ::ExtACSyntaxCoupling;
 
67707
  friend class ::ExtACTree;
 
67708
  friend class ::ExtACKeywords;
 
67709
  friend class ::ExtGnu;
 
67710
  friend class ::PragmaOnceUnitState;
 
67711
  friend class ::PragmaOnce;
 
67712
  friend class ::CMatchSyntax;
 
67713
 
 
67714
#line 905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67715
 
 
67716
protected:
 
67717
  /** Constructor.
 
67718
   *  \param size The number of sub-names (for qualified names). */
 
67719
  CT_SimpleName (int size) : CT_List (size, 1) {}
 
67720
  /** Constructor.
 
67721
   *  \param size The number of sub-names (for qualified names). 
 
67722
   *  \param properties Additional name list properties (for root qualified names). */
 
67723
  CT_SimpleName (int size, int properties) : 
 
67724
    CT_List (size, 2, properties) {}
 
67725
  
 
67726
public:
 
67727
  /** Constructor.
 
67728
   *  \param n The sub-tree containing the name. */
 
67729
  CT_SimpleName (CTree *n) : CT_List (1, 1) { AddSon (n); }
 
67730
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
67731
  static const char *NodeId ();
 
67732
  /** Get the name of the node. Can be compared with NodeId(). */
 
67733
  const char *NodeName () const { return NodeId (); }
 
67734
  /** Get the string containing the name. */
 
67735
  virtual const char *Text () const 
 
67736
   { return Son (Sons ()-1)->token ()->text (); }
 
67737
  /** Print the name on the given stream. 
 
67738
   *  \param os The output stream. */
 
67739
  virtual void print (ostream &os) const { os << Text (); }
 
67740
  /** Get this. */
 
67741
  virtual CT_SimpleName *Name () const { return (CT_SimpleName*)this; }
 
67742
  /** Get the type of the entity represented by the name. */
 
67743
  CTypeInfo *Type () const { return type; }
 
67744
  /** Get the value of the entity represented by the name. */ 
 
67745
  CExprValue *Value () const { return value; }
 
67746
  /** Get the sematic value information of the name. */
 
67747
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
67748
  /** Get the sematic information about the name. */
 
67749
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
67750
  /** Get this. */
 
67751
  virtual CT_SimpleName *IsSimpleName () { return this; }  
 
67752
 
 
67753
public:
 
67754
  /** Own new operator reusing memory. */
 
67755
  void *operator new (size_t);
 
67756
  /** Own delete operator. */
 
67757
  void operator delete (void *);
 
67758
   private:
 
67759
  typedef CT_SimpleName CCExprResolveExpr;
 
67760
 
 
67761
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
67762
 public :
 
67763
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
67764
  typedef CT_SimpleName CExprResolveExpr;
 
67765
 
 
67766
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
67767
 public :
 
67768
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
67769
  typedef AC::TLE __AttrTypes;
 
67770
  const char *__attr_name (unsigned i) const { return 0; }
 
67771
  const void *__attr (unsigned __i) const { return 0; }
 
67772
#line 948 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67773
};
 
67774
 
 
67775
/** \class CT_SpecialName CTree.h Puma/CTree.h
 
67776
 *  Base class for tree nodes representing a special name, like destructor names. */
 
67777
 
 
67778
#line 67779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67779
} // closed Puma
 
67780
class CCExprResolve;
 
67781
class CExprResolve;
 
67782
class WinIfExists;
 
67783
class WinImportHandler;
 
67784
class WinMacros;
 
67785
class WinAsm;
 
67786
class WinDeclSpecs;
 
67787
class WinMemberExplSpec;
 
67788
class WinTypeKeywords;
 
67789
class WinFriend;
 
67790
class ExtAC;
 
67791
class ExtACBuilderCoupling;
 
67792
class ExtACSyntaxCoupling;
 
67793
class ExtACTree;
 
67794
class ExtACKeywords;
 
67795
class ExtGnu;
 
67796
class PragmaOnceUnitState;
 
67797
class PragmaOnce;
 
67798
class CMatchSyntax;
 
67799
namespace Puma {
 
67800
 
 
67801
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67802
 
 
67803
#line 67804 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67804
} // closed Puma
 
67805
 
 
67806
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67807
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67808
#include "CCExprResolveH.ah"
 
67809
#endif
 
67810
namespace Puma {
 
67811
 
 
67812
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67813
 
 
67814
#line 67815 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67815
} // closed Puma
 
67816
 
 
67817
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67818
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67819
#include "CExprResolveH.ah"
 
67820
#endif
 
67821
namespace Puma {
 
67822
 
 
67823
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67824
class CT_SpecialName : public CT_SimpleName {
 
67825
#line 67826 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67826
  friend class ::CCExprResolve;
 
67827
  friend class ::CExprResolve;
 
67828
  friend class ::WinIfExists;
 
67829
  friend class ::WinImportHandler;
 
67830
  friend class ::WinMacros;
 
67831
  friend class ::WinAsm;
 
67832
  friend class ::WinDeclSpecs;
 
67833
  friend class ::WinMemberExplSpec;
 
67834
  friend class ::WinTypeKeywords;
 
67835
  friend class ::WinFriend;
 
67836
  friend class ::ExtAC;
 
67837
  friend class ::ExtACBuilderCoupling;
 
67838
  friend class ::ExtACSyntaxCoupling;
 
67839
  friend class ::ExtACTree;
 
67840
  friend class ::ExtACKeywords;
 
67841
  friend class ::ExtGnu;
 
67842
  friend class ::PragmaOnceUnitState;
 
67843
  friend class ::PragmaOnce;
 
67844
  friend class ::CMatchSyntax;
 
67845
 
 
67846
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67847
 
 
67848
  char *_name;
 
67849
  
 
67850
protected:
 
67851
  /** Constructor.
 
67852
   *  \param size The number of sub-names (for qualified names). */
 
67853
  CT_SpecialName (int size = 1) : CT_SimpleName (size), _name (0) {}
 
67854
  
 
67855
public:
 
67856
  /** Destructor. Deletes the name string. */
 
67857
  ~CT_SpecialName () { if (_name) delete[] _name; }
 
67858
  /** Get the string containing the name. */
 
67859
  const char *Text () const { return _name; }
 
67860
  /** Set the name. The name is copied.
 
67861
   *  \param n The name. */
 
67862
  void Name (const char *n) { 
 
67863
    if (n) { 
 
67864
      _name = new char[strlen(n) + 1];
 
67865
      strcpy (_name,n);
 
67866
    }
 
67867
  }
 
67868
 
 
67869
public:
 
67870
  /** Own new operator reusing memory. */
 
67871
  void *operator new (size_t);
 
67872
  /** Own delete operator. */
 
67873
  void operator delete (void *);
 
67874
   private:
 
67875
  typedef CT_SpecialName CCExprResolveExpr;
 
67876
 
 
67877
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
67878
 public :
 
67879
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
67880
  typedef CT_SpecialName CExprResolveExpr;
 
67881
 
 
67882
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
67883
 public :
 
67884
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
67885
  typedef AC::TL<char *,AC::TLE > __AttrTypes;
 
67886
  const char *__attr_name (unsigned i) const {
 
67887
    static const char *names[] = { "_name" }; return names[i];
 
67888
  }
 
67889
  const void *__attr (unsigned __i) const {
 
67890
    switch (__i) { case 0: return &_name; default: return 0; }
 
67891
  }
 
67892
#line 979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67893
};
 
67894
 
 
67895
/** \class CT_PrivateName CTree.h Puma/CTree.h
 
67896
 *  Tree node representing a private name. Private names 
 
67897
 *  are generated names for instance for abstract declarators.
 
67898
 *  Example: 
 
67899
 *  \code 
 
67900
 * void foo(int*);  // first parameter of foo has private name
 
67901
 *  \endcode */
 
67902
 
 
67903
#line 67904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67904
} // closed Puma
 
67905
class CCExprResolve;
 
67906
class CExprResolve;
 
67907
class WinIfExists;
 
67908
class WinImportHandler;
 
67909
class WinMacros;
 
67910
class WinAsm;
 
67911
class WinDeclSpecs;
 
67912
class WinMemberExplSpec;
 
67913
class WinTypeKeywords;
 
67914
class WinFriend;
 
67915
class ExtAC;
 
67916
class ExtACBuilderCoupling;
 
67917
class ExtACSyntaxCoupling;
 
67918
class ExtACTree;
 
67919
class ExtACKeywords;
 
67920
class ExtGnu;
 
67921
class PragmaOnceUnitState;
 
67922
class PragmaOnce;
 
67923
class CMatchSyntax;
 
67924
namespace Puma {
 
67925
 
 
67926
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67927
 
 
67928
#line 67929 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67929
} // closed Puma
 
67930
 
 
67931
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67932
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
67933
#include "CCExprResolveH.ah"
 
67934
#endif
 
67935
namespace Puma {
 
67936
 
 
67937
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67938
 
 
67939
#line 67940 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67940
} // closed Puma
 
67941
 
 
67942
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67943
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
67944
#include "CExprResolveH.ah"
 
67945
#endif
 
67946
namespace Puma {
 
67947
 
 
67948
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67949
class CT_PrivateName : public CT_SpecialName {
 
67950
#line 67951 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
67951
  friend class ::CCExprResolve;
 
67952
  friend class ::CExprResolve;
 
67953
  friend class ::WinIfExists;
 
67954
  friend class ::WinImportHandler;
 
67955
  friend class ::WinMacros;
 
67956
  friend class ::WinAsm;
 
67957
  friend class ::WinDeclSpecs;
 
67958
  friend class ::WinMemberExplSpec;
 
67959
  friend class ::WinTypeKeywords;
 
67960
  friend class ::WinFriend;
 
67961
  friend class ::ExtAC;
 
67962
  friend class ::ExtACBuilderCoupling;
 
67963
  friend class ::ExtACSyntaxCoupling;
 
67964
  friend class ::ExtACTree;
 
67965
  friend class ::ExtACKeywords;
 
67966
  friend class ::ExtGnu;
 
67967
  friend class ::PragmaOnceUnitState;
 
67968
  friend class ::PragmaOnce;
 
67969
  friend class ::CMatchSyntax;
 
67970
 
 
67971
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
67972
 
 
67973
public:
 
67974
  /** Constructor.
 
67975
   *  \param n The private (generated) name. */
 
67976
  CT_PrivateName (const char *n) { Name (n); }
 
67977
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
67978
  static const char *NodeId ();
 
67979
  /** Get the name of the node. Can be compared with NodeId(). */
 
67980
  const char *NodeName () const { return NodeId (); }
 
67981
  /** Get the number of sons. */
 
67982
  int Sons () const { return 0; }
 
67983
  /** Get the n-th son.
 
67984
   *  \param n The index of the son.
 
67985
   *  \return The n-th son or NULL. */
 
67986
  CTree *Son (int n) const { return (CTree*)0; }
 
67987
 
 
67988
public:
 
67989
  /** Own new operator reusing memory. */
 
67990
  void *operator new (size_t);
 
67991
  /** Own delete operator. */
 
67992
  void operator delete (void *);
 
67993
   private:
 
67994
  typedef CT_PrivateName CCExprResolveExpr;
 
67995
 
 
67996
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
67997
 public :
 
67998
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
67999
  typedef CT_PrivateName CExprResolveExpr;
 
68000
 
 
68001
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
68002
 public :
 
68003
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
68004
  typedef AC::TLE __AttrTypes;
 
68005
  const char *__attr_name (unsigned i) const { return 0; }
 
68006
  const void *__attr (unsigned __i) const { return 0; }
 
68007
#line 1009 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68008
};
 
68009
 
 
68010
/** \class CT_DestructorName CTree.h Puma/CTree.h
 
68011
 *  Tree node representing a destructor name.
 
68012
 *  Example: \code ~X \endcode */
 
68013
 
 
68014
#line 68015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68015
} // closed Puma
 
68016
class CCExprResolve;
 
68017
class CExprResolve;
 
68018
class WinIfExists;
 
68019
class WinImportHandler;
 
68020
class WinMacros;
 
68021
class WinAsm;
 
68022
class WinDeclSpecs;
 
68023
class WinMemberExplSpec;
 
68024
class WinTypeKeywords;
 
68025
class WinFriend;
 
68026
class ExtAC;
 
68027
class ExtACBuilderCoupling;
 
68028
class ExtACSyntaxCoupling;
 
68029
class ExtACTree;
 
68030
class ExtACKeywords;
 
68031
class ExtGnu;
 
68032
class PragmaOnceUnitState;
 
68033
class PragmaOnce;
 
68034
class CMatchSyntax;
 
68035
namespace Puma {
 
68036
 
 
68037
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68038
 
 
68039
#line 68040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68040
} // closed Puma
 
68041
 
 
68042
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68043
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68044
#include "CCExprResolveH.ah"
 
68045
#endif
 
68046
namespace Puma {
 
68047
 
 
68048
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68049
 
 
68050
#line 68051 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68051
} // closed Puma
 
68052
 
 
68053
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68054
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68055
#include "CExprResolveH.ah"
 
68056
#endif
 
68057
namespace Puma {
 
68058
 
 
68059
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68060
class CT_DestructorName : public CT_SpecialName {
 
68061
#line 68062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68062
  friend class ::CCExprResolve;
 
68063
  friend class ::CExprResolve;
 
68064
  friend class ::WinIfExists;
 
68065
  friend class ::WinImportHandler;
 
68066
  friend class ::WinMacros;
 
68067
  friend class ::WinAsm;
 
68068
  friend class ::WinDeclSpecs;
 
68069
  friend class ::WinMemberExplSpec;
 
68070
  friend class ::WinTypeKeywords;
 
68071
  friend class ::WinFriend;
 
68072
  friend class ::ExtAC;
 
68073
  friend class ::ExtACBuilderCoupling;
 
68074
  friend class ::ExtACSyntaxCoupling;
 
68075
  friend class ::ExtACTree;
 
68076
  friend class ::ExtACKeywords;
 
68077
  friend class ::ExtGnu;
 
68078
  friend class ::PragmaOnceUnitState;
 
68079
  friend class ::PragmaOnce;
 
68080
  friend class ::CMatchSyntax;
 
68081
 
 
68082
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68083
 
 
68084
public:
 
68085
  /** Constructor.
 
68086
   *  \param t The tilde operator.
 
68087
   *  \param n The class name. */
 
68088
  CT_DestructorName (CTree *t, CTree *n);
 
68089
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
68090
  static const char *NodeId ();
 
68091
  /** Get the name of the node. Can be compared with NodeId(). */
 
68092
  const char *NodeName () const { return NodeId (); }
 
68093
 
 
68094
public:
 
68095
  /** Own new operator reusing memory. */
 
68096
  void *operator new (size_t);
 
68097
  /** Own delete operator. */
 
68098
  void operator delete (void *);
 
68099
   private:
 
68100
  typedef CT_DestructorName CCExprResolveExpr;
 
68101
 
 
68102
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
68103
 public :
 
68104
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
68105
  typedef CT_DestructorName CExprResolveExpr;
 
68106
 
 
68107
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
68108
 public :
 
68109
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
68110
  typedef AC::TLE __AttrTypes;
 
68111
  const char *__attr_name (unsigned i) const { return 0; }
 
68112
  const void *__attr (unsigned __i) const { return 0; }
 
68113
#line 1030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68114
};
 
68115
 
 
68116
/** \class CT_TemplateName CTree.h Puma/CTree.h
 
68117
 *  Tree node representing a template name.
 
68118
 *  Example: \code X<T> \endcode */
 
68119
 
 
68120
#line 68121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68121
} // closed Puma
 
68122
class CCExprResolve;
 
68123
class CExprResolve;
 
68124
class WinIfExists;
 
68125
class WinImportHandler;
 
68126
class WinMacros;
 
68127
class WinAsm;
 
68128
class WinDeclSpecs;
 
68129
class WinMemberExplSpec;
 
68130
class WinTypeKeywords;
 
68131
class WinFriend;
 
68132
class ExtAC;
 
68133
class ExtACBuilderCoupling;
 
68134
class ExtACSyntaxCoupling;
 
68135
class ExtACTree;
 
68136
class ExtACKeywords;
 
68137
class ExtGnu;
 
68138
class PragmaOnceUnitState;
 
68139
class PragmaOnce;
 
68140
class CMatchSyntax;
 
68141
namespace Puma {
 
68142
 
 
68143
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68144
 
 
68145
#line 68146 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68146
} // closed Puma
 
68147
 
 
68148
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68149
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68150
#include "CCExprResolveH.ah"
 
68151
#endif
 
68152
namespace Puma {
 
68153
 
 
68154
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68155
 
 
68156
#line 68157 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68157
} // closed Puma
 
68158
 
 
68159
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68160
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68161
#include "CExprResolveH.ah"
 
68162
#endif
 
68163
namespace Puma {
 
68164
 
 
68165
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68166
class CT_TemplateName : public CT_SpecialName {
 
68167
#line 68168 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68168
  friend class ::CCExprResolve;
 
68169
  friend class ::CExprResolve;
 
68170
  friend class ::WinIfExists;
 
68171
  friend class ::WinImportHandler;
 
68172
  friend class ::WinMacros;
 
68173
  friend class ::WinAsm;
 
68174
  friend class ::WinDeclSpecs;
 
68175
  friend class ::WinMemberExplSpec;
 
68176
  friend class ::WinTypeKeywords;
 
68177
  friend class ::WinFriend;
 
68178
  friend class ::ExtAC;
 
68179
  friend class ::ExtACBuilderCoupling;
 
68180
  friend class ::ExtACSyntaxCoupling;
 
68181
  friend class ::ExtACTree;
 
68182
  friend class ::ExtACKeywords;
 
68183
  friend class ::ExtGnu;
 
68184
  friend class ::PragmaOnceUnitState;
 
68185
  friend class ::PragmaOnce;
 
68186
  friend class ::CMatchSyntax;
 
68187
 
 
68188
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68189
 
 
68190
public:
 
68191
  /** Constructor.
 
68192
   *  \param n The template class or function name.
 
68193
   *  \param a The template argument list. */
 
68194
  CT_TemplateName (CTree *n, CTree *a) 
 
68195
   { AddSon (n); AddSon (a); }
 
68196
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
68197
  static const char *NodeId ();
 
68198
  /** Get the name of the node. Can be compared with NodeId(). */
 
68199
  const char *NodeName () const { return NodeId (); }
 
68200
  /** Get the template argument list. */
 
68201
  CT_TemplateArgList *Arguments () const 
 
68202
   { return (CT_TemplateArgList*)Son (Sons ()-1); }
 
68203
  /** Get the template class or function name. */
 
68204
  CT_SimpleName *TemplateName () const 
 
68205
   { return (CT_SimpleName*)Son (Sons ()-2); }
 
68206
  // may change in the future
 
68207
  const char *Text () const { return TemplateName ()->Text (); }
 
68208
 
 
68209
public:
 
68210
  /** Own new operator reusing memory. */
 
68211
  void *operator new (size_t);
 
68212
  /** Own delete operator. */
 
68213
  void operator delete (void *);
 
68214
   private:
 
68215
  typedef CT_TemplateName CCExprResolveExpr;
 
68216
 
 
68217
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
68218
 public :
 
68219
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
68220
  typedef CT_TemplateName CExprResolveExpr;
 
68221
 
 
68222
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
68223
 public :
 
68224
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
68225
  typedef AC::TLE __AttrTypes;
 
68226
  const char *__attr_name (unsigned i) const { return 0; }
 
68227
  const void *__attr (unsigned __i) const { return 0; }
 
68228
#line 1060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68229
};
 
68230
 
 
68231
/** \class CT_OperatorName CTree.h Puma/CTree.h
 
68232
 *  Tree node representing the name of an overloaded operator. 
 
68233
 *  Example: \code operator== \endcode */
 
68234
 
 
68235
#line 68236 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68236
} // closed Puma
 
68237
class CCExprResolve;
 
68238
class CExprResolve;
 
68239
class WinIfExists;
 
68240
class WinImportHandler;
 
68241
class WinMacros;
 
68242
class WinAsm;
 
68243
class WinDeclSpecs;
 
68244
class WinMemberExplSpec;
 
68245
class WinTypeKeywords;
 
68246
class WinFriend;
 
68247
class ExtAC;
 
68248
class ExtACBuilderCoupling;
 
68249
class ExtACSyntaxCoupling;
 
68250
class ExtACTree;
 
68251
class ExtACKeywords;
 
68252
class ExtGnu;
 
68253
class PragmaOnceUnitState;
 
68254
class PragmaOnce;
 
68255
class CMatchSyntax;
 
68256
namespace Puma {
 
68257
 
 
68258
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68259
 
 
68260
#line 68261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68261
} // closed Puma
 
68262
 
 
68263
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68264
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68265
#include "CCExprResolveH.ah"
 
68266
#endif
 
68267
namespace Puma {
 
68268
 
 
68269
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68270
 
 
68271
#line 68272 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68272
} // closed Puma
 
68273
 
 
68274
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68275
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68276
#include "CExprResolveH.ah"
 
68277
#endif
 
68278
namespace Puma {
 
68279
 
 
68280
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68281
class CT_OperatorName : public CT_SpecialName {
 
68282
#line 68283 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68283
  friend class ::CCExprResolve;
 
68284
  friend class ::CExprResolve;
 
68285
  friend class ::WinIfExists;
 
68286
  friend class ::WinImportHandler;
 
68287
  friend class ::WinMacros;
 
68288
  friend class ::WinAsm;
 
68289
  friend class ::WinDeclSpecs;
 
68290
  friend class ::WinMemberExplSpec;
 
68291
  friend class ::WinTypeKeywords;
 
68292
  friend class ::WinFriend;
 
68293
  friend class ::ExtAC;
 
68294
  friend class ::ExtACBuilderCoupling;
 
68295
  friend class ::ExtACSyntaxCoupling;
 
68296
  friend class ::ExtACTree;
 
68297
  friend class ::ExtACKeywords;
 
68298
  friend class ::ExtGnu;
 
68299
  friend class ::PragmaOnceUnitState;
 
68300
  friend class ::PragmaOnce;
 
68301
  friend class ::CMatchSyntax;
 
68302
 
 
68303
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68304
 
 
68305
  int _oper;
 
68306
 
 
68307
public:
 
68308
  /** Complex operator types. */
 
68309
  enum { 
 
68310
    FCT_CALL = -100,  /** Function call operator, i.e. (). */
 
68311
    SUBSCRIPT,        /** Array subscript operator, i.e. []. */
 
68312
    NEW_ARRAY,        /** New array operator, i.e. new[]. */
 
68313
    DEL_ARRAY         /** Delete array operator, i.e. delete[]. */
 
68314
  };
 
68315
 
 
68316
public:
 
68317
  /** Constructor.
 
68318
   *  \param op The token containing the operator. */
 
68319
  CT_OperatorName (CTree *op);
 
68320
  /** Constructor.
 
68321
   *  \param f The operator function keyword 'operator'.
 
68322
   *  \param op The token containing the operator. 
 
68323
   *  \param o The token of '[' or '('.
 
68324
   *  \param c The token of ']' or ')'. */
 
68325
  CT_OperatorName (CTree *f, CTree *op, CTree *o, CTree *c);
 
68326
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
68327
  static const char *NodeId ();
 
68328
  /** Get the name of the node. Can be compared with NodeId(). */
 
68329
  const char *NodeName () const { return NodeId (); }
 
68330
  /** Get the operator type (either the token type or one of 
 
68331
   *  the complex operator types). */
 
68332
  int Operator () const { return _oper; }
 
68333
 
 
68334
public:
 
68335
  /** Own new operator reusing memory. */
 
68336
  void *operator new (size_t);
 
68337
  /** Own delete operator. */
 
68338
  void operator delete (void *);
 
68339
   private:
 
68340
  typedef CT_OperatorName CCExprResolveExpr;
 
68341
 
 
68342
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
68343
 public :
 
68344
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
68345
  typedef CT_OperatorName CExprResolveExpr;
 
68346
 
 
68347
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
68348
 public :
 
68349
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
68350
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
68351
  const char *__attr_name (unsigned i) const {
 
68352
    static const char *names[] = { "_oper" }; return names[i];
 
68353
  }
 
68354
  const void *__attr (unsigned __i) const {
 
68355
    switch (__i) { case 0: return &_oper; default: return 0; }
 
68356
  }
 
68357
#line 1100 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68358
};
 
68359
 
 
68360
/** \class CT_ConversionName CTree.h Puma/CTree.h
 
68361
 *  Tree node representing the name of a conversion function.
 
68362
 *  Example: \code operator int* \endcode */
 
68363
 
 
68364
#line 68365 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68365
} // closed Puma
 
68366
class CCExprResolve;
 
68367
class CExprResolve;
 
68368
class WinIfExists;
 
68369
class WinImportHandler;
 
68370
class WinMacros;
 
68371
class WinAsm;
 
68372
class WinDeclSpecs;
 
68373
class WinMemberExplSpec;
 
68374
class WinTypeKeywords;
 
68375
class WinFriend;
 
68376
class ExtAC;
 
68377
class ExtACBuilderCoupling;
 
68378
class ExtACSyntaxCoupling;
 
68379
class ExtACTree;
 
68380
class ExtACKeywords;
 
68381
class ExtGnu;
 
68382
class PragmaOnceUnitState;
 
68383
class PragmaOnce;
 
68384
class CMatchSyntax;
 
68385
namespace Puma {
 
68386
 
 
68387
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68388
 
 
68389
#line 68390 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68390
} // closed Puma
 
68391
 
 
68392
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68393
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68394
#include "CCExprResolveH.ah"
 
68395
#endif
 
68396
namespace Puma {
 
68397
 
 
68398
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68399
 
 
68400
#line 68401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68401
} // closed Puma
 
68402
 
 
68403
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68404
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68405
#include "CExprResolveH.ah"
 
68406
#endif
 
68407
namespace Puma {
 
68408
 
 
68409
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68410
class CT_ConversionName : public CT_SpecialName {
 
68411
#line 68412 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68412
  friend class ::CCExprResolve;
 
68413
  friend class ::CExprResolve;
 
68414
  friend class ::WinIfExists;
 
68415
  friend class ::WinImportHandler;
 
68416
  friend class ::WinMacros;
 
68417
  friend class ::WinAsm;
 
68418
  friend class ::WinDeclSpecs;
 
68419
  friend class ::WinMemberExplSpec;
 
68420
  friend class ::WinTypeKeywords;
 
68421
  friend class ::WinFriend;
 
68422
  friend class ::ExtAC;
 
68423
  friend class ::ExtACBuilderCoupling;
 
68424
  friend class ::ExtACSyntaxCoupling;
 
68425
  friend class ::ExtACTree;
 
68426
  friend class ::ExtACKeywords;
 
68427
  friend class ::ExtGnu;
 
68428
  friend class ::PragmaOnceUnitState;
 
68429
  friend class ::PragmaOnce;
 
68430
  friend class ::CMatchSyntax;
 
68431
 
 
68432
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68433
 
 
68434
public:
 
68435
  /** Constructor.
 
68436
   *  \param f The operator function keyword 'operator'.
 
68437
   *  \param t The sub-tree containing the conversion type. */
 
68438
  CT_ConversionName (CTree *f, CTree *t);
 
68439
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
68440
  static const char *NodeId ();
 
68441
  /** Get the name of the node. Can be compared with NodeId(). */
 
68442
  const char *NodeName () const { return NodeId (); }
 
68443
  /** Get the conversion type. */
 
68444
  CT_NamedType *TypeName () const { return (CT_NamedType*)Son (Sons ()-1); }
 
68445
 
 
68446
public:
 
68447
  /** Own new operator reusing memory. */
 
68448
  void *operator new (size_t);
 
68449
  /** Own delete operator. */
 
68450
  void operator delete (void *);
 
68451
   private:
 
68452
  typedef CT_ConversionName CCExprResolveExpr;
 
68453
 
 
68454
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
68455
 public :
 
68456
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
68457
  typedef CT_ConversionName CExprResolveExpr;
 
68458
 
 
68459
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
68460
 public :
 
68461
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
68462
  typedef AC::TLE __AttrTypes;
 
68463
  const char *__attr_name (unsigned i) const { return 0; }
 
68464
  const void *__attr (unsigned __i) const { return 0; }
 
68465
#line 1123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68466
};
 
68467
 
 
68468
/** \class CT_QualName CTree.h Puma/CTree.h
 
68469
 *  Tree node representing a qualified name.
 
68470
 *  Example: \code X::Y::Z \endcode */
 
68471
 
 
68472
#line 68473 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68473
} // closed Puma
 
68474
class CCExprResolve;
 
68475
class CExprResolve;
 
68476
class WinIfExists;
 
68477
class WinImportHandler;
 
68478
class WinMacros;
 
68479
class WinAsm;
 
68480
class WinDeclSpecs;
 
68481
class WinMemberExplSpec;
 
68482
class WinTypeKeywords;
 
68483
class WinFriend;
 
68484
class ExtAC;
 
68485
class ExtACBuilderCoupling;
 
68486
class ExtACSyntaxCoupling;
 
68487
class ExtACTree;
 
68488
class ExtACKeywords;
 
68489
class ExtGnu;
 
68490
class PragmaOnceUnitState;
 
68491
class PragmaOnce;
 
68492
class CMatchSyntax;
 
68493
namespace Puma {
 
68494
 
 
68495
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68496
 
 
68497
#line 68498 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68498
} // closed Puma
 
68499
 
 
68500
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68501
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68502
#include "CCExprResolveH.ah"
 
68503
#endif
 
68504
namespace Puma {
 
68505
 
 
68506
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68507
 
 
68508
#line 68509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68509
} // closed Puma
 
68510
 
 
68511
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68512
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68513
#include "CExprResolveH.ah"
 
68514
#endif
 
68515
namespace Puma {
 
68516
 
 
68517
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68518
class CT_QualName : public CT_SimpleName {
 
68519
#line 68520 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68520
  friend class ::CCExprResolve;
 
68521
  friend class ::CExprResolve;
 
68522
  friend class ::WinIfExists;
 
68523
  friend class ::WinImportHandler;
 
68524
  friend class ::WinMacros;
 
68525
  friend class ::WinAsm;
 
68526
  friend class ::WinDeclSpecs;
 
68527
  friend class ::WinMemberExplSpec;
 
68528
  friend class ::WinTypeKeywords;
 
68529
  friend class ::WinFriend;
 
68530
  friend class ::ExtAC;
 
68531
  friend class ::ExtACBuilderCoupling;
 
68532
  friend class ::ExtACSyntaxCoupling;
 
68533
  friend class ::ExtACTree;
 
68534
  friend class ::ExtACKeywords;
 
68535
  friend class ::ExtGnu;
 
68536
  friend class ::PragmaOnceUnitState;
 
68537
  friend class ::PragmaOnce;
 
68538
  friend class ::CMatchSyntax;
 
68539
 
 
68540
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68541
 
 
68542
public:
 
68543
  /** Constructor.
 
68544
   *  \param size The initial number sub-names plus separators. */
 
68545
  CT_QualName (int size = 3) : 
 
68546
    CT_SimpleName (size, CT_List::SEPARATORS) {}
 
68547
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
68548
  static const char *NodeId ();
 
68549
  /** Get the name of the node. Can be compared with NodeId(). */
 
68550
  const char *NodeName () const { return NodeId (); }
 
68551
  /** Print the qualified name on the given stream. 
 
68552
   *  \param os The output stream. */
 
68553
  void print (ostream &os) const;
 
68554
  /** Get the last name of the qualified name, e.g. Z of qualified name X::Y::Z. */
 
68555
  CT_SimpleName *Name () const { return (CT_SimpleName*)Son (Sons ()-1); }
 
68556
  /** Get the string containing the last name of the qualified name. */
 
68557
  const char *Text () const { return Name ()->Text (); }
 
68558
  /** Get the type of the last name. */
 
68559
  CTypeInfo *Type () const { return Name ()->Type (); }
 
68560
  /** Get the value of the last name. */
 
68561
  CExprValue *Value () const { return Name ()->Value (); }
 
68562
  /** Get the semantic value object of the last name. */
 
68563
  CSemValue *SemValue () const { return Name ()->SemValue (); }
 
68564
  /** Get the semantic information of the last name. */
 
68565
  CSemObject *SemObject () const { return Name ()->SemObject (); }
 
68566
 
 
68567
public:
 
68568
  /** Own new operator reusing memory. */
 
68569
  void *operator new (size_t);
 
68570
  /** Own delete operator. */
 
68571
  void operator delete (void *);
 
68572
   private:
 
68573
  typedef CT_QualName CCExprResolveExpr;
 
68574
 
 
68575
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
68576
 public :
 
68577
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
68578
  typedef CT_QualName CExprResolveExpr;
 
68579
 
 
68580
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
68581
 public :
 
68582
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
68583
  typedef AC::TLE __AttrTypes;
 
68584
  const char *__attr_name (unsigned i) const { return 0; }
 
68585
  const void *__attr (unsigned __i) const { return 0; }
 
68586
#line 1159 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68587
};
 
68588
 
 
68589
/** \class CT_RootQualName CTree.h Puma/CTree.h
 
68590
 *  Tree node representing a qualified name with introducing name separator.
 
68591
 *  Example: \code ::X::Y::Z \endcode */
 
68592
 
 
68593
#line 68594 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68594
} // closed Puma
 
68595
class CCExprResolve;
 
68596
class CExprResolve;
 
68597
class WinIfExists;
 
68598
class WinImportHandler;
 
68599
class WinMacros;
 
68600
class WinAsm;
 
68601
class WinDeclSpecs;
 
68602
class WinMemberExplSpec;
 
68603
class WinTypeKeywords;
 
68604
class WinFriend;
 
68605
class ExtAC;
 
68606
class ExtACBuilderCoupling;
 
68607
class ExtACSyntaxCoupling;
 
68608
class ExtACTree;
 
68609
class ExtACKeywords;
 
68610
class ExtGnu;
 
68611
class PragmaOnceUnitState;
 
68612
class PragmaOnce;
 
68613
class CMatchSyntax;
 
68614
namespace Puma {
 
68615
 
 
68616
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68617
 
 
68618
#line 68619 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68619
} // closed Puma
 
68620
 
 
68621
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68622
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68623
#include "CCExprResolveH.ah"
 
68624
#endif
 
68625
namespace Puma {
 
68626
 
 
68627
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68628
 
 
68629
#line 68630 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68630
} // closed Puma
 
68631
 
 
68632
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68633
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68634
#include "CExprResolveH.ah"
 
68635
#endif
 
68636
namespace Puma {
 
68637
 
 
68638
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68639
class CT_RootQualName : public CT_QualName {
 
68640
#line 68641 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68641
  friend class ::CCExprResolve;
 
68642
  friend class ::CExprResolve;
 
68643
  friend class ::WinIfExists;
 
68644
  friend class ::WinImportHandler;
 
68645
  friend class ::WinMacros;
 
68646
  friend class ::WinAsm;
 
68647
  friend class ::WinDeclSpecs;
 
68648
  friend class ::WinMemberExplSpec;
 
68649
  friend class ::WinTypeKeywords;
 
68650
  friend class ::WinFriend;
 
68651
  friend class ::ExtAC;
 
68652
  friend class ::ExtACBuilderCoupling;
 
68653
  friend class ::ExtACSyntaxCoupling;
 
68654
  friend class ::ExtACTree;
 
68655
  friend class ::ExtACKeywords;
 
68656
  friend class ::ExtGnu;
 
68657
  friend class ::PragmaOnceUnitState;
 
68658
  friend class ::PragmaOnce;
 
68659
  friend class ::CMatchSyntax;
 
68660
 
 
68661
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68662
 
 
68663
public:
 
68664
  /** Constructor.
 
68665
   *  \param size Initial number of sub-name plus separator. */
 
68666
  CT_RootQualName (int size = 2) : 
 
68667
    CT_QualName (size) { AddProperties (INTRO); }
 
68668
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
68669
  static const char *NodeId ();
 
68670
  /** Get the name of the node. Can be compared with NodeId(). */
 
68671
  const char *NodeName () const { return NodeId (); }
 
68672
 
 
68673
public:
 
68674
  /** Own new operator reusing memory. */
 
68675
  void *operator new (size_t);
 
68676
  /** Own delete operator. */
 
68677
  void operator delete (void *);
 
68678
   private:
 
68679
  typedef CT_RootQualName CCExprResolveExpr;
 
68680
 
 
68681
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
68682
 public :
 
68683
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
68684
  typedef CT_RootQualName CExprResolveExpr;
 
68685
 
 
68686
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
68687
 public :
 
68688
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
68689
  typedef AC::TLE __AttrTypes;
 
68690
  const char *__attr_name (unsigned i) const { return 0; }
 
68691
  const void *__attr (unsigned __i) const { return 0; }
 
68692
#line 1180 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68693
};
 
68694
 
 
68695
/** \class CT_BinaryExpr CTree.h Puma/CTree.h
 
68696
 *  Tree node representing a binary expression.
 
68697
 *  Example: \code a+b \endcode */
 
68698
 
 
68699
#line 68700 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68700
} // closed Puma
 
68701
class CCExprResolve;
 
68702
class CExprResolve;
 
68703
class WinIfExists;
 
68704
class WinImportHandler;
 
68705
class WinMacros;
 
68706
class WinAsm;
 
68707
class WinDeclSpecs;
 
68708
class WinMemberExplSpec;
 
68709
class WinTypeKeywords;
 
68710
class WinFriend;
 
68711
class ExtAC;
 
68712
class ExtACBuilderCoupling;
 
68713
class ExtACSyntaxCoupling;
 
68714
class ExtACTree;
 
68715
class ExtACKeywords;
 
68716
class ExtGnu;
 
68717
class PragmaOnceUnitState;
 
68718
class PragmaOnce;
 
68719
class CMatchSyntax;
 
68720
namespace Puma {
 
68721
 
 
68722
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68723
 
 
68724
#line 68725 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68725
} // closed Puma
 
68726
 
 
68727
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68728
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68729
#include "CCExprResolveH.ah"
 
68730
#endif
 
68731
namespace Puma {
 
68732
 
 
68733
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68734
 
 
68735
#line 68736 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68736
} // closed Puma
 
68737
 
 
68738
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68739
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68740
#include "CExprResolveH.ah"
 
68741
#endif
 
68742
namespace Puma {
 
68743
 
 
68744
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68745
class CT_BinaryExpr : public CT_Call {
 
68746
#line 68747 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68747
  friend class ::CCExprResolve;
 
68748
  friend class ::CExprResolve;
 
68749
  friend class ::WinIfExists;
 
68750
  friend class ::WinImportHandler;
 
68751
  friend class ::WinMacros;
 
68752
  friend class ::WinAsm;
 
68753
  friend class ::WinDeclSpecs;
 
68754
  friend class ::WinMemberExplSpec;
 
68755
  friend class ::WinTypeKeywords;
 
68756
  friend class ::WinFriend;
 
68757
  friend class ::ExtAC;
 
68758
  friend class ::ExtACBuilderCoupling;
 
68759
  friend class ::ExtACSyntaxCoupling;
 
68760
  friend class ::ExtACTree;
 
68761
  friend class ::ExtACKeywords;
 
68762
  friend class ::ExtGnu;
 
68763
  friend class ::PragmaOnceUnitState;
 
68764
  friend class ::PragmaOnce;
 
68765
  friend class ::CMatchSyntax;
 
68766
 
 
68767
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68768
 
 
68769
  CTree *sons[3]; // expr, oper, expr
 
68770
 
 
68771
public:
 
68772
  /** Constructor. 
 
68773
   *  \param l Left hand side of the expression. 
 
68774
   *  \param o The operator token. 
 
68775
   *  \param r Right hand side of the expression. */
 
68776
  CT_BinaryExpr (CTree *l, CTree *o, CTree *r) {
 
68777
    AddSon (sons[0], l); AddSon (sons[1], o); AddSon (sons[2], r);
 
68778
  }
 
68779
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
68780
  static const char *NodeId ();
 
68781
  /** Get the name of the node. Can be compared with NodeId(). */
 
68782
  const char *NodeName () const { return NodeId (); }
 
68783
  /** Get the number of sons. */
 
68784
  int Sons () const { return 3; }
 
68785
  /** Get the n-th son.
 
68786
   *  \param n The index of the son.
 
68787
   *  \return The n-th son or NULL. */
 
68788
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
68789
  /** Replace a son.
 
68790
   *  \param old_son The son to replace.
 
68791
   *  \param new_son The new son. */
 
68792
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
68793
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
68794
  }
 
68795
   private:
 
68796
  typedef CT_BinaryExpr CCExprResolveExpr;
 
68797
 
 
68798
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
68799
 public :
 
68800
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
68801
  typedef CT_BinaryExpr CExprResolveExpr;
 
68802
 
 
68803
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
68804
 public :
 
68805
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
68806
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
68807
  const char *__attr_name (unsigned i) const {
 
68808
    static const char *names[] = { "sons" }; return names[i];
 
68809
  }
 
68810
  const void *__attr (unsigned __i) const {
 
68811
    switch (__i) { case 0: return &sons; default: return 0; }
 
68812
  }
 
68813
#line 1212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68814
};
 
68815
 
 
68816
/** \class CT_MembPtrExpr CTree.h Puma/CTree.h
 
68817
 *  Tree node representing a member pointer expression.
 
68818
 *  Example: \code a->b \endcode */
 
68819
 
 
68820
#line 68821 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68821
} // closed Puma
 
68822
class CCExprResolve;
 
68823
class CExprResolve;
 
68824
class WinIfExists;
 
68825
class WinImportHandler;
 
68826
class WinMacros;
 
68827
class WinAsm;
 
68828
class WinDeclSpecs;
 
68829
class WinMemberExplSpec;
 
68830
class WinTypeKeywords;
 
68831
class WinFriend;
 
68832
class ExtAC;
 
68833
class ExtACBuilderCoupling;
 
68834
class ExtACSyntaxCoupling;
 
68835
class ExtACTree;
 
68836
class ExtACKeywords;
 
68837
class ExtGnu;
 
68838
class PragmaOnceUnitState;
 
68839
class PragmaOnce;
 
68840
class CMatchSyntax;
 
68841
namespace Puma {
 
68842
 
 
68843
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68844
 
 
68845
#line 68846 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68846
} // closed Puma
 
68847
 
 
68848
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68849
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68850
#include "CCExprResolveH.ah"
 
68851
#endif
 
68852
namespace Puma {
 
68853
 
 
68854
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68855
 
 
68856
#line 68857 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68857
} // closed Puma
 
68858
 
 
68859
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68860
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68861
#include "CExprResolveH.ah"
 
68862
#endif
 
68863
namespace Puma {
 
68864
 
 
68865
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68866
class CT_MembPtrExpr : public CT_Expression, public CSemObject {
 
68867
#line 68868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68868
  friend class ::CCExprResolve;
 
68869
  friend class ::CExprResolve;
 
68870
  friend class ::WinIfExists;
 
68871
  friend class ::WinImportHandler;
 
68872
  friend class ::WinMacros;
 
68873
  friend class ::WinAsm;
 
68874
  friend class ::WinDeclSpecs;
 
68875
  friend class ::WinMemberExplSpec;
 
68876
  friend class ::WinTypeKeywords;
 
68877
  friend class ::WinFriend;
 
68878
  friend class ::ExtAC;
 
68879
  friend class ::ExtACBuilderCoupling;
 
68880
  friend class ::ExtACSyntaxCoupling;
 
68881
  friend class ::ExtACTree;
 
68882
  friend class ::ExtACKeywords;
 
68883
  friend class ::ExtGnu;
 
68884
  friend class ::PragmaOnceUnitState;
 
68885
  friend class ::PragmaOnce;
 
68886
  friend class ::CMatchSyntax;
 
68887
 
 
68888
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68889
 
 
68890
  CTree *sons[3]; // expr, oper, expr
 
68891
  
 
68892
public:
 
68893
  /** Constructor.
 
68894
   *  \param e Expression on which to call the member.
 
68895
   *  \param o The arrow operator token.
 
68896
   *  \param i The member name. */
 
68897
  CT_MembPtrExpr (CTree *e, CTree *o, CTree *i) {
 
68898
    AddSon (sons[0], e); AddSon (sons[1], o); AddSon (sons[2], i);
 
68899
  }
 
68900
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
68901
  static const char *NodeId ();
 
68902
  /** Get the name of the node. Can be compared with NodeId(). */
 
68903
  const char *NodeName () const { return NodeId (); }
 
68904
  /** Get the number of sons. */
 
68905
  int Sons () const { return 3; }
 
68906
  /** Get the n-th son.
 
68907
   *  \param n The index of the son.
 
68908
   *  \return The n-th son or NULL. */
 
68909
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
68910
  /** Replace a son.
 
68911
   *  \param old_son The son to replace.
 
68912
   *  \param new_son The new son. */
 
68913
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
68914
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
68915
  }
 
68916
   private:
 
68917
  typedef CT_MembPtrExpr CCExprResolveExpr;
 
68918
 
 
68919
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
68920
 public :
 
68921
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
68922
  typedef CT_MembPtrExpr CExprResolveExpr;
 
68923
 
 
68924
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
68925
 public :
 
68926
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
68927
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
68928
  const char *__attr_name (unsigned i) const {
 
68929
    static const char *names[] = { "sons" }; return names[i];
 
68930
  }
 
68931
  const void *__attr (unsigned __i) const {
 
68932
    switch (__i) { case 0: return &sons; default: return 0; }
 
68933
  }
 
68934
#line 1244 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68935
};
 
68936
 
 
68937
/** \class CT_MembRefExpr CTree.h Puma/CTree.h
 
68938
 *  Tree node representing a member reference expression.
 
68939
 *  Example: \code a.b \endcode */
 
68940
 
 
68941
#line 68942 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68942
} // closed Puma
 
68943
class CCExprResolve;
 
68944
class CExprResolve;
 
68945
class WinIfExists;
 
68946
class WinImportHandler;
 
68947
class WinMacros;
 
68948
class WinAsm;
 
68949
class WinDeclSpecs;
 
68950
class WinMemberExplSpec;
 
68951
class WinTypeKeywords;
 
68952
class WinFriend;
 
68953
class ExtAC;
 
68954
class ExtACBuilderCoupling;
 
68955
class ExtACSyntaxCoupling;
 
68956
class ExtACTree;
 
68957
class ExtACKeywords;
 
68958
class ExtGnu;
 
68959
class PragmaOnceUnitState;
 
68960
class PragmaOnce;
 
68961
class CMatchSyntax;
 
68962
namespace Puma {
 
68963
 
 
68964
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68965
 
 
68966
#line 68967 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68967
} // closed Puma
 
68968
 
 
68969
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68970
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
68971
#include "CCExprResolveH.ah"
 
68972
#endif
 
68973
namespace Puma {
 
68974
 
 
68975
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68976
 
 
68977
#line 68978 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68978
} // closed Puma
 
68979
 
 
68980
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68981
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
68982
#include "CExprResolveH.ah"
 
68983
#endif
 
68984
namespace Puma {
 
68985
 
 
68986
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
68987
class CT_MembRefExpr : public CT_MembPtrExpr {
 
68988
#line 68989 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
68989
  friend class ::CCExprResolve;
 
68990
  friend class ::CExprResolve;
 
68991
  friend class ::WinIfExists;
 
68992
  friend class ::WinImportHandler;
 
68993
  friend class ::WinMacros;
 
68994
  friend class ::WinAsm;
 
68995
  friend class ::WinDeclSpecs;
 
68996
  friend class ::WinMemberExplSpec;
 
68997
  friend class ::WinTypeKeywords;
 
68998
  friend class ::WinFriend;
 
68999
  friend class ::ExtAC;
 
69000
  friend class ::ExtACBuilderCoupling;
 
69001
  friend class ::ExtACSyntaxCoupling;
 
69002
  friend class ::ExtACTree;
 
69003
  friend class ::ExtACKeywords;
 
69004
  friend class ::ExtGnu;
 
69005
  friend class ::PragmaOnceUnitState;
 
69006
  friend class ::PragmaOnce;
 
69007
  friend class ::CMatchSyntax;
 
69008
 
 
69009
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69010
 
 
69011
public:
 
69012
  /** Constructor.
 
69013
   *  \param e Expression on which to call the member.
 
69014
   *  \param o The dot operator.
 
69015
   *  \param i The member name. */
 
69016
  CT_MembRefExpr (CTree *e, CTree *o, CTree *i) :
 
69017
    CT_MembPtrExpr (e, o, i) {}
 
69018
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
69019
  static const char *NodeId ();
 
69020
  /** Get the name of the node. Can be compared with NodeId(). */
 
69021
  const char *NodeName () const { return NodeId (); }
 
69022
   private:
 
69023
  typedef CT_MembRefExpr CCExprResolveExpr;
 
69024
 
 
69025
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
69026
 public :
 
69027
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
69028
  typedef CT_MembRefExpr CExprResolveExpr;
 
69029
 
 
69030
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
69031
 public :
 
69032
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
69033
  typedef AC::TLE __AttrTypes;
 
69034
  const char *__attr_name (unsigned i) const { return 0; }
 
69035
  const void *__attr (unsigned __i) const { return 0; }
 
69036
#line 1261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69037
};
 
69038
 
 
69039
/** \class CT_UnaryExpr CTree.h Puma/CTree.h
 
69040
 *  Base class for tree nodes representing unary expressions. 
 
69041
 *  Example: \code !a \endcode */
 
69042
 
 
69043
#line 69044 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69044
} // closed Puma
 
69045
class CCExprResolve;
 
69046
class CExprResolve;
 
69047
class WinIfExists;
 
69048
class WinImportHandler;
 
69049
class WinMacros;
 
69050
class WinAsm;
 
69051
class WinDeclSpecs;
 
69052
class WinMemberExplSpec;
 
69053
class WinTypeKeywords;
 
69054
class WinFriend;
 
69055
class ExtAC;
 
69056
class ExtACBuilderCoupling;
 
69057
class ExtACSyntaxCoupling;
 
69058
class ExtACTree;
 
69059
class ExtACKeywords;
 
69060
class ExtGnu;
 
69061
class PragmaOnceUnitState;
 
69062
class PragmaOnce;
 
69063
class CMatchSyntax;
 
69064
namespace Puma {
 
69065
 
 
69066
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69067
 
 
69068
#line 69069 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69069
} // closed Puma
 
69070
 
 
69071
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69072
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69073
#include "CCExprResolveH.ah"
 
69074
#endif
 
69075
namespace Puma {
 
69076
 
 
69077
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69078
 
 
69079
#line 69080 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69080
} // closed Puma
 
69081
 
 
69082
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69083
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69084
#include "CExprResolveH.ah"
 
69085
#endif
 
69086
namespace Puma {
 
69087
 
 
69088
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69089
class CT_UnaryExpr : public CT_Call {
 
69090
#line 69091 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69091
  friend class ::CCExprResolve;
 
69092
  friend class ::CExprResolve;
 
69093
  friend class ::WinIfExists;
 
69094
  friend class ::WinImportHandler;
 
69095
  friend class ::WinMacros;
 
69096
  friend class ::WinAsm;
 
69097
  friend class ::WinDeclSpecs;
 
69098
  friend class ::WinMemberExplSpec;
 
69099
  friend class ::WinTypeKeywords;
 
69100
  friend class ::WinFriend;
 
69101
  friend class ::ExtAC;
 
69102
  friend class ::ExtACBuilderCoupling;
 
69103
  friend class ::ExtACSyntaxCoupling;
 
69104
  friend class ::ExtACTree;
 
69105
  friend class ::ExtACKeywords;
 
69106
  friend class ::ExtGnu;
 
69107
  friend class ::PragmaOnceUnitState;
 
69108
  friend class ::PragmaOnce;
 
69109
  friend class ::CMatchSyntax;
 
69110
 
 
69111
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69112
 
 
69113
  CTree *sons[2]; // oper, expr
 
69114
 
 
69115
public:
 
69116
  /** Constructor.
 
69117
   *  \param o The unary operator.
 
69118
   *  \param e The expression on which the operator is invoked. */
 
69119
  CT_UnaryExpr (CTree *o, CTree *e) { AddSon (sons[0], o); AddSon (sons[1], e); }
 
69120
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
69121
  static const char *NodeId ();
 
69122
  /** Get the name of the node. Can be compared with NodeId(). */
 
69123
  const char *NodeName () const { return NodeId (); }
 
69124
  /** Get the number of sons. */
 
69125
  int Sons () const { return 2; }
 
69126
  /** Get the n-th son.
 
69127
   *  \param n The index of the son.
 
69128
   *  \return The n-th son or NULL. */
 
69129
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
69130
  /** Replace a son.
 
69131
   *  \param old_son The son to replace.
 
69132
   *  \param new_son The new son. */
 
69133
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
69134
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
69135
  }
 
69136
  /** Get the expression node. */
 
69137
  CTree *Expr () const { return sons[1]; }
 
69138
   private:
 
69139
  typedef CT_UnaryExpr CCExprResolveExpr;
 
69140
 
 
69141
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
69142
 public :
 
69143
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
69144
  typedef CT_UnaryExpr CExprResolveExpr;
 
69145
 
 
69146
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
69147
 public :
 
69148
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
69149
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
69150
  const char *__attr_name (unsigned i) const {
 
69151
    static const char *names[] = { "sons" }; return names[i];
 
69152
  }
 
69153
  const void *__attr (unsigned __i) const {
 
69154
    switch (__i) { case 0: return &sons; default: return 0; }
 
69155
  }
 
69156
#line 1292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69157
};
 
69158
 
 
69159
/** \class CT_PostfixExpr CTree.h Puma/CTree.h
 
69160
 *  Tree node representing a postfix expression.
 
69161
 *  Example: \code a++ \endcode */
 
69162
 
 
69163
#line 69164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69164
} // closed Puma
 
69165
class CCExprResolve;
 
69166
class CExprResolve;
 
69167
class WinIfExists;
 
69168
class WinImportHandler;
 
69169
class WinMacros;
 
69170
class WinAsm;
 
69171
class WinDeclSpecs;
 
69172
class WinMemberExplSpec;
 
69173
class WinTypeKeywords;
 
69174
class WinFriend;
 
69175
class ExtAC;
 
69176
class ExtACBuilderCoupling;
 
69177
class ExtACSyntaxCoupling;
 
69178
class ExtACTree;
 
69179
class ExtACKeywords;
 
69180
class ExtGnu;
 
69181
class PragmaOnceUnitState;
 
69182
class PragmaOnce;
 
69183
class CMatchSyntax;
 
69184
namespace Puma {
 
69185
 
 
69186
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69187
 
 
69188
#line 69189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69189
} // closed Puma
 
69190
 
 
69191
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69192
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69193
#include "CCExprResolveH.ah"
 
69194
#endif
 
69195
namespace Puma {
 
69196
 
 
69197
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69198
 
 
69199
#line 69200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69200
} // closed Puma
 
69201
 
 
69202
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69203
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69204
#include "CExprResolveH.ah"
 
69205
#endif
 
69206
namespace Puma {
 
69207
 
 
69208
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69209
class CT_PostfixExpr : public CT_UnaryExpr {
 
69210
#line 69211 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69211
  friend class ::CCExprResolve;
 
69212
  friend class ::CExprResolve;
 
69213
  friend class ::WinIfExists;
 
69214
  friend class ::WinImportHandler;
 
69215
  friend class ::WinMacros;
 
69216
  friend class ::WinAsm;
 
69217
  friend class ::WinDeclSpecs;
 
69218
  friend class ::WinMemberExplSpec;
 
69219
  friend class ::WinTypeKeywords;
 
69220
  friend class ::WinFriend;
 
69221
  friend class ::ExtAC;
 
69222
  friend class ::ExtACBuilderCoupling;
 
69223
  friend class ::ExtACSyntaxCoupling;
 
69224
  friend class ::ExtACTree;
 
69225
  friend class ::ExtACKeywords;
 
69226
  friend class ::ExtGnu;
 
69227
  friend class ::PragmaOnceUnitState;
 
69228
  friend class ::PragmaOnce;
 
69229
  friend class ::CMatchSyntax;
 
69230
 
 
69231
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69232
 
 
69233
public:
 
69234
  /** Constructor.
 
69235
   *  \param e The expression on which to invoke the operator. 
 
69236
   *  \param o The postfix operator. */
 
69237
  CT_PostfixExpr (CTree *e, CTree *o) :
 
69238
    CT_UnaryExpr (e, o) {}
 
69239
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
69240
  static const char *NodeId ();
 
69241
  /** Get the name of the node. Can be compared with NodeId(). */
 
69242
  const char *NodeName () const { return NodeId (); }
 
69243
   private:
 
69244
  typedef CT_PostfixExpr CCExprResolveExpr;
 
69245
 
 
69246
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
69247
 public :
 
69248
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
69249
  typedef CT_PostfixExpr CExprResolveExpr;
 
69250
 
 
69251
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
69252
 public :
 
69253
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
69254
  typedef AC::TLE __AttrTypes;
 
69255
  const char *__attr_name (unsigned i) const { return 0; }
 
69256
  const void *__attr (unsigned __i) const { return 0; }
 
69257
#line 1308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69258
};
 
69259
 
 
69260
/** \class CT_AddrExpr CTree.h Puma/CTree.h
 
69261
 *  Tree node representing an address expression.
 
69262
 *  Example: \code &a \endcode */
 
69263
 
 
69264
#line 69265 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69265
} // closed Puma
 
69266
class CCExprResolve;
 
69267
class CExprResolve;
 
69268
class WinIfExists;
 
69269
class WinImportHandler;
 
69270
class WinMacros;
 
69271
class WinAsm;
 
69272
class WinDeclSpecs;
 
69273
class WinMemberExplSpec;
 
69274
class WinTypeKeywords;
 
69275
class WinFriend;
 
69276
class ExtAC;
 
69277
class ExtACBuilderCoupling;
 
69278
class ExtACSyntaxCoupling;
 
69279
class ExtACTree;
 
69280
class ExtACKeywords;
 
69281
class ExtGnu;
 
69282
class PragmaOnceUnitState;
 
69283
class PragmaOnce;
 
69284
class CMatchSyntax;
 
69285
namespace Puma {
 
69286
 
 
69287
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69288
 
 
69289
#line 69290 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69290
} // closed Puma
 
69291
 
 
69292
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69293
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69294
#include "CCExprResolveH.ah"
 
69295
#endif
 
69296
namespace Puma {
 
69297
 
 
69298
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69299
 
 
69300
#line 69301 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69301
} // closed Puma
 
69302
 
 
69303
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69304
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69305
#include "CExprResolveH.ah"
 
69306
#endif
 
69307
namespace Puma {
 
69308
 
 
69309
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69310
class CT_AddrExpr : public CT_UnaryExpr {
 
69311
#line 69312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69312
  friend class ::CCExprResolve;
 
69313
  friend class ::CExprResolve;
 
69314
  friend class ::WinIfExists;
 
69315
  friend class ::WinImportHandler;
 
69316
  friend class ::WinMacros;
 
69317
  friend class ::WinAsm;
 
69318
  friend class ::WinDeclSpecs;
 
69319
  friend class ::WinMemberExplSpec;
 
69320
  friend class ::WinTypeKeywords;
 
69321
  friend class ::WinFriend;
 
69322
  friend class ::ExtAC;
 
69323
  friend class ::ExtACBuilderCoupling;
 
69324
  friend class ::ExtACSyntaxCoupling;
 
69325
  friend class ::ExtACTree;
 
69326
  friend class ::ExtACKeywords;
 
69327
  friend class ::ExtGnu;
 
69328
  friend class ::PragmaOnceUnitState;
 
69329
  friend class ::PragmaOnce;
 
69330
  friend class ::CMatchSyntax;
 
69331
 
 
69332
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69333
 
 
69334
public:
 
69335
  /** Constructor.
 
69336
   *  \param o The address operator, i.e. '&'.
 
69337
   *  \param e The expression from which to take the address. */
 
69338
  CT_AddrExpr (CTree *o, CTree *e) :
 
69339
    CT_UnaryExpr (o, e) {}
 
69340
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
69341
  static const char *NodeId ();
 
69342
  /** Get the name of the node. Can be compared with NodeId(). */
 
69343
  const char *NodeName () const { return NodeId (); }
 
69344
   private:
 
69345
  typedef CT_AddrExpr CCExprResolveExpr;
 
69346
 
 
69347
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
69348
 public :
 
69349
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
69350
  typedef CT_AddrExpr CExprResolveExpr;
 
69351
 
 
69352
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
69353
 public :
 
69354
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
69355
  typedef AC::TLE __AttrTypes;
 
69356
  const char *__attr_name (unsigned i) const { return 0; }
 
69357
  const void *__attr (unsigned __i) const { return 0; }
 
69358
#line 1324 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69359
};
 
69360
 
 
69361
/** \class CT_DerefExpr CTree.h Puma/CTree.h
 
69362
 *  Tree node representing a pointer dereferencing expression.
 
69363
 *  Example: \code *a \endcode */
 
69364
 
 
69365
#line 69366 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69366
} // closed Puma
 
69367
class CCExprResolve;
 
69368
class CExprResolve;
 
69369
class WinIfExists;
 
69370
class WinImportHandler;
 
69371
class WinMacros;
 
69372
class WinAsm;
 
69373
class WinDeclSpecs;
 
69374
class WinMemberExplSpec;
 
69375
class WinTypeKeywords;
 
69376
class WinFriend;
 
69377
class ExtAC;
 
69378
class ExtACBuilderCoupling;
 
69379
class ExtACSyntaxCoupling;
 
69380
class ExtACTree;
 
69381
class ExtACKeywords;
 
69382
class ExtGnu;
 
69383
class PragmaOnceUnitState;
 
69384
class PragmaOnce;
 
69385
class CMatchSyntax;
 
69386
namespace Puma {
 
69387
 
 
69388
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69389
 
 
69390
#line 69391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69391
} // closed Puma
 
69392
 
 
69393
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69394
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69395
#include "CCExprResolveH.ah"
 
69396
#endif
 
69397
namespace Puma {
 
69398
 
 
69399
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69400
 
 
69401
#line 69402 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69402
} // closed Puma
 
69403
 
 
69404
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69405
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69406
#include "CExprResolveH.ah"
 
69407
#endif
 
69408
namespace Puma {
 
69409
 
 
69410
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69411
class CT_DerefExpr : public CT_UnaryExpr {
 
69412
#line 69413 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69413
  friend class ::CCExprResolve;
 
69414
  friend class ::CExprResolve;
 
69415
  friend class ::WinIfExists;
 
69416
  friend class ::WinImportHandler;
 
69417
  friend class ::WinMacros;
 
69418
  friend class ::WinAsm;
 
69419
  friend class ::WinDeclSpecs;
 
69420
  friend class ::WinMemberExplSpec;
 
69421
  friend class ::WinTypeKeywords;
 
69422
  friend class ::WinFriend;
 
69423
  friend class ::ExtAC;
 
69424
  friend class ::ExtACBuilderCoupling;
 
69425
  friend class ::ExtACSyntaxCoupling;
 
69426
  friend class ::ExtACTree;
 
69427
  friend class ::ExtACKeywords;
 
69428
  friend class ::ExtGnu;
 
69429
  friend class ::PragmaOnceUnitState;
 
69430
  friend class ::PragmaOnce;
 
69431
  friend class ::CMatchSyntax;
 
69432
 
 
69433
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69434
 
 
69435
public:
 
69436
  /** Constructor.
 
69437
   *  \param o The dereferencing operator, i.e. '*'.
 
69438
   *  \param e The expression to dereference. */
 
69439
  CT_DerefExpr (CTree *o, CTree *e) :
 
69440
    CT_UnaryExpr (o, e) {}
 
69441
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
69442
  static const char *NodeId ();
 
69443
  /** Get the name of the node. Can be compared with NodeId(). */
 
69444
  const char *NodeName () const { return NodeId (); }
 
69445
   private:
 
69446
  typedef CT_DerefExpr CCExprResolveExpr;
 
69447
 
 
69448
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
69449
 public :
 
69450
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
69451
  typedef CT_DerefExpr CExprResolveExpr;
 
69452
 
 
69453
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
69454
 public :
 
69455
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
69456
  typedef AC::TLE __AttrTypes;
 
69457
  const char *__attr_name (unsigned i) const { return 0; }
 
69458
  const void *__attr (unsigned __i) const { return 0; }
 
69459
#line 1340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69460
};
 
69461
 
 
69462
/** \class CT_DeleteExpr CTree.h Puma/CTree.h
 
69463
 *  Tree node representing a delete expression.
 
69464
 *  Example: \code delete a \endcode */
 
69465
 
 
69466
#line 69467 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69467
} // closed Puma
 
69468
class CCExprResolve;
 
69469
class CExprResolve;
 
69470
class WinIfExists;
 
69471
class WinImportHandler;
 
69472
class WinMacros;
 
69473
class WinAsm;
 
69474
class WinDeclSpecs;
 
69475
class WinMemberExplSpec;
 
69476
class WinTypeKeywords;
 
69477
class WinFriend;
 
69478
class ExtAC;
 
69479
class ExtACBuilderCoupling;
 
69480
class ExtACSyntaxCoupling;
 
69481
class ExtACTree;
 
69482
class ExtACKeywords;
 
69483
class ExtGnu;
 
69484
class PragmaOnceUnitState;
 
69485
class PragmaOnce;
 
69486
class CMatchSyntax;
 
69487
namespace Puma {
 
69488
 
 
69489
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69490
 
 
69491
#line 69492 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69492
} // closed Puma
 
69493
 
 
69494
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69495
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69496
#include "CCExprResolveH.ah"
 
69497
#endif
 
69498
namespace Puma {
 
69499
 
 
69500
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69501
 
 
69502
#line 69503 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69503
} // closed Puma
 
69504
 
 
69505
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69506
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69507
#include "CExprResolveH.ah"
 
69508
#endif
 
69509
namespace Puma {
 
69510
 
 
69511
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69512
class CT_DeleteExpr : public CT_Expression, public CSemObject {
 
69513
#line 69514 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69514
  friend class ::CCExprResolve;
 
69515
  friend class ::CExprResolve;
 
69516
  friend class ::WinIfExists;
 
69517
  friend class ::WinImportHandler;
 
69518
  friend class ::WinMacros;
 
69519
  friend class ::WinAsm;
 
69520
  friend class ::WinDeclSpecs;
 
69521
  friend class ::WinMemberExplSpec;
 
69522
  friend class ::WinTypeKeywords;
 
69523
  friend class ::WinFriend;
 
69524
  friend class ::ExtAC;
 
69525
  friend class ::ExtACBuilderCoupling;
 
69526
  friend class ::ExtACSyntaxCoupling;
 
69527
  friend class ::ExtACTree;
 
69528
  friend class ::ExtACKeywords;
 
69529
  friend class ::ExtGnu;
 
69530
  friend class ::PragmaOnceUnitState;
 
69531
  friend class ::PragmaOnce;
 
69532
  friend class ::CMatchSyntax;
 
69533
 
 
69534
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69535
 
 
69536
  CTree *sons[2]; // oper, expr
 
69537
 
 
69538
public:
 
69539
  /** Constructor.
 
69540
   *  \param op The delete operator.
 
69541
   *  \param e The expression representing the object to delete. */
 
69542
  CT_DeleteExpr (CTree *op, CTree *e) { AddSon (sons[0], op); AddSon (sons[1], e); }
 
69543
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
69544
  static const char *NodeId ();
 
69545
  /** Get the name of the node. Can be compared with NodeId(). */
 
69546
  const char *NodeName () const { return NodeId (); }
 
69547
  /** Get the number of sons. */
 
69548
  int Sons () const { return 2; }
 
69549
  /** Get the n-th son.
 
69550
   *  \param n The index of the son.
 
69551
   *  \return The n-th son or NULL. */
 
69552
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
69553
  /** Replace a son.
 
69554
   *  \param old_son The son to replace.
 
69555
   *  \param new_son The new son. */
 
69556
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
69557
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
69558
  }
 
69559
  /** Get the expression. */
 
69560
  CTree *Expr () const { return sons[1]; }
 
69561
  /** Get the operator name, i.e. 'delete' or 'delete[]'. */
 
69562
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
69563
  /** Get the semantic information. */
 
69564
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
69565
   private:
 
69566
  typedef CT_DeleteExpr CCExprResolveExpr;
 
69567
 
 
69568
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
69569
 public :
 
69570
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
69571
  typedef CT_DeleteExpr CExprResolveExpr;
 
69572
 
 
69573
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
69574
 public :
 
69575
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
69576
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
69577
  const char *__attr_name (unsigned i) const {
 
69578
    static const char *names[] = { "sons" }; return names[i];
 
69579
  }
 
69580
  const void *__attr (unsigned __i) const {
 
69581
    switch (__i) { case 0: return &sons; default: return 0; }
 
69582
  }
 
69583
#line 1375 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69584
};
 
69585
 
 
69586
/** \class CT_NewExpr CTree.h Puma/CTree.h
 
69587
 *  Tree node representing a new expression.
 
69588
 *  Example: \code new A() \endcode */
 
69589
 
 
69590
#line 69591 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69591
} // closed Puma
 
69592
class CCExprResolve;
 
69593
class CExprResolve;
 
69594
class WinIfExists;
 
69595
class WinImportHandler;
 
69596
class WinMacros;
 
69597
class WinAsm;
 
69598
class WinDeclSpecs;
 
69599
class WinMemberExplSpec;
 
69600
class WinTypeKeywords;
 
69601
class WinFriend;
 
69602
class ExtAC;
 
69603
class ExtACBuilderCoupling;
 
69604
class ExtACSyntaxCoupling;
 
69605
class ExtACTree;
 
69606
class ExtACKeywords;
 
69607
class ExtGnu;
 
69608
class PragmaOnceUnitState;
 
69609
class PragmaOnce;
 
69610
class CMatchSyntax;
 
69611
namespace Puma {
 
69612
 
 
69613
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69614
 
 
69615
#line 69616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69616
} // closed Puma
 
69617
 
 
69618
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69619
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69620
#include "CCExprResolveH.ah"
 
69621
#endif
 
69622
namespace Puma {
 
69623
 
 
69624
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69625
 
 
69626
#line 69627 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69627
} // closed Puma
 
69628
 
 
69629
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69630
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69631
#include "CExprResolveH.ah"
 
69632
#endif
 
69633
namespace Puma {
 
69634
 
 
69635
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69636
class CT_NewExpr : public CT_Expression, public CSemObject {
 
69637
#line 69638 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69638
  friend class ::CCExprResolve;
 
69639
  friend class ::CExprResolve;
 
69640
  friend class ::WinIfExists;
 
69641
  friend class ::WinImportHandler;
 
69642
  friend class ::WinMacros;
 
69643
  friend class ::WinAsm;
 
69644
  friend class ::WinDeclSpecs;
 
69645
  friend class ::WinMemberExplSpec;
 
69646
  friend class ::WinTypeKeywords;
 
69647
  friend class ::WinFriend;
 
69648
  friend class ::ExtAC;
 
69649
  friend class ::ExtACBuilderCoupling;
 
69650
  friend class ::ExtACSyntaxCoupling;
 
69651
  friend class ::ExtACTree;
 
69652
  friend class ::ExtACKeywords;
 
69653
  friend class ::ExtGnu;
 
69654
  friend class ::PragmaOnceUnitState;
 
69655
  friend class ::PragmaOnce;
 
69656
  friend class ::CMatchSyntax;
 
69657
 
 
69658
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69659
 
 
69660
  CTree *sons[6]; // oper, placement, open, type, close, init
 
69661
 
 
69662
public:
 
69663
  /** Constructor.
 
69664
   *  \param op The new operator.
 
69665
   *  \param p The optional placement expression.
 
69666
   *  \param o The optional left parenthesis around the type identifier.
 
69667
   *  \param t The type identifier specifying the type of the object to create.
 
69668
   *  \param c The optional right parenthesis around the type identifier.
 
69669
   *  \param i The optional initializer. */
 
69670
  CT_NewExpr (CTree *op, CTree *p, CTree *o, CTree *t, CTree *c, CTree *i) {
 
69671
    AddSon (sons[0], op); AddSon (sons[1], p); AddSon (sons[2], o); 
 
69672
    AddSon (sons[3], t); AddSon (sons[4], c); AddSon (sons[5], i); 
 
69673
  }
 
69674
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
69675
  static const char *NodeId ();
 
69676
  /** Get the name of the node. Can be compared with NodeId(). */
 
69677
  const char *NodeName () const { return NodeId (); }
 
69678
  /** Get the number of sons. */
 
69679
  int Sons () const { return CTree::Sons (sons, 6); }
 
69680
  /** Get the n-th son.
 
69681
   *  \param n The index of the son.
 
69682
   *  \return The n-th son or NULL. */
 
69683
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
69684
  /** Replace a son.
 
69685
   *  \param old_son The son to replace.
 
69686
   *  \param new_son The new son. */
 
69687
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
69688
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
69689
  }
 
69690
  /** Get the operator name. */
 
69691
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
69692
  /** Get the placement expression. */
 
69693
  CT_ExprList *Placement () const { return (CT_ExprList*)sons[1];; }
 
69694
  /** Get the initializer. */
 
69695
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[5]; }
 
69696
  /** Get the type of the object to create. */
 
69697
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[3]; }
 
69698
  /** Get the semantic information. */
 
69699
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
69700
   private:
 
69701
  typedef CT_NewExpr CCExprResolveExpr;
 
69702
 
 
69703
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
69704
 public :
 
69705
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
69706
  typedef CT_NewExpr CExprResolveExpr;
 
69707
 
 
69708
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
69709
 public :
 
69710
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
69711
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
69712
  const char *__attr_name (unsigned i) const {
 
69713
    static const char *names[] = { "sons" }; return names[i];
 
69714
  }
 
69715
  const void *__attr (unsigned __i) const {
 
69716
    switch (__i) { case 0: return &sons; default: return 0; }
 
69717
  }
 
69718
#line 1421 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69719
};
 
69720
 
 
69721
/** \class CT_IfThenExpr CTree.h Puma/CTree.h
 
69722
 *  Tree node representing an if-then expression.
 
69723
 *  Example: \code a>0?a:b \endcode or \code a?:b \endcode */
 
69724
 
 
69725
#line 69726 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69726
} // closed Puma
 
69727
class CCExprResolve;
 
69728
class CExprResolve;
 
69729
class WinIfExists;
 
69730
class WinImportHandler;
 
69731
class WinMacros;
 
69732
class WinAsm;
 
69733
class WinDeclSpecs;
 
69734
class WinMemberExplSpec;
 
69735
class WinTypeKeywords;
 
69736
class WinFriend;
 
69737
class ExtAC;
 
69738
class ExtACBuilderCoupling;
 
69739
class ExtACSyntaxCoupling;
 
69740
class ExtACTree;
 
69741
class ExtACKeywords;
 
69742
class ExtGnu;
 
69743
class PragmaOnceUnitState;
 
69744
class PragmaOnce;
 
69745
class CMatchSyntax;
 
69746
namespace Puma {
 
69747
 
 
69748
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69749
 
 
69750
#line 69751 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69751
} // closed Puma
 
69752
 
 
69753
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69754
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69755
#include "CCExprResolveH.ah"
 
69756
#endif
 
69757
namespace Puma {
 
69758
 
 
69759
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69760
 
 
69761
#line 69762 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69762
} // closed Puma
 
69763
 
 
69764
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69765
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69766
#include "CExprResolveH.ah"
 
69767
#endif
 
69768
namespace Puma {
 
69769
 
 
69770
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69771
class CT_IfThenExpr : public CT_Expression {
 
69772
#line 69773 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69773
  friend class ::CCExprResolve;
 
69774
  friend class ::CExprResolve;
 
69775
  friend class ::WinIfExists;
 
69776
  friend class ::WinImportHandler;
 
69777
  friend class ::WinMacros;
 
69778
  friend class ::WinAsm;
 
69779
  friend class ::WinDeclSpecs;
 
69780
  friend class ::WinMemberExplSpec;
 
69781
  friend class ::WinTypeKeywords;
 
69782
  friend class ::WinFriend;
 
69783
  friend class ::ExtAC;
 
69784
  friend class ::ExtACBuilderCoupling;
 
69785
  friend class ::ExtACSyntaxCoupling;
 
69786
  friend class ::ExtACTree;
 
69787
  friend class ::ExtACKeywords;
 
69788
  friend class ::ExtGnu;
 
69789
  friend class ::PragmaOnceUnitState;
 
69790
  friend class ::PragmaOnce;
 
69791
  friend class ::CMatchSyntax;
 
69792
 
 
69793
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69794
 
 
69795
  CTree *sons[5]; // cond, oper, left, colon, right
 
69796
 
 
69797
public:
 
69798
  /** Constructor.
 
69799
   *  \param c1 The condition expression.
 
69800
   *  \param o The question mark operator. 
 
69801
   *  \param l The expression to the left of the colon.
 
69802
   *  \param c2 The colon operator.
 
69803
   *  \param r The expression to the right of the colon. */ 
 
69804
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *l, CTree *c2, CTree *r) {
 
69805
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], l); 
 
69806
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
69807
  }
 
69808
  /** Constructor.
 
69809
   *  \param c1 The condition expression.
 
69810
   *  \param o The question mark operator. 
 
69811
   *  \param c2 The colon operator.
 
69812
   *  \param r The expression to the right of the colon. */ 
 
69813
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *c2, CTree *r) {
 
69814
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], 0); 
 
69815
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
69816
  }
 
69817
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
69818
  static const char *NodeId ();
 
69819
  /** Get the name of the node. Can be compared with NodeId(). */
 
69820
  const char *NodeName () const { return NodeId (); }
 
69821
  /** Get the number of sons. */
 
69822
  int Sons () const { return CTree::Sons (sons, 5); }
 
69823
  /** Get the n-th son.
 
69824
   *  \param n The index of the son.
 
69825
   *  \return The n-th son or NULL. */
 
69826
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
69827
  /** Get the condition expression. */
 
69828
  CTree *Condition () const { return sons[0]; }
 
69829
  /** Get the left expression (condition=true). */
 
69830
  CTree *LeftOperand () const { return sons[2]; }
 
69831
  /** Get the right expression (condition=false). */
 
69832
  CTree *RightOperand () const { return sons[4]; }
 
69833
  /** Replace a son.
 
69834
   *  \param old_son The son to replace.
 
69835
   *  \param new_son The new son. */
 
69836
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
69837
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
69838
  }
 
69839
   private:
 
69840
  typedef CT_IfThenExpr CCExprResolveExpr;
 
69841
 
 
69842
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
69843
 public :
 
69844
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
69845
  typedef CT_IfThenExpr CExprResolveExpr;
 
69846
 
 
69847
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
69848
 public :
 
69849
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
69850
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
69851
  const char *__attr_name (unsigned i) const {
 
69852
    static const char *names[] = { "sons" }; return names[i];
 
69853
  }
 
69854
  const void *__attr (unsigned __i) const {
 
69855
    switch (__i) { case 0: return &sons; default: return 0; }
 
69856
  }
 
69857
#line 1471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69858
};
 
69859
 
 
69860
/** \class CT_CmpdLiteral CTree.h Puma/CTree.h
 
69861
 *  Tree node representing a compound literal.
 
69862
 *  Example: \code (int[]){1,2,3) \endcode */
 
69863
 
 
69864
#line 69865 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69865
} // closed Puma
 
69866
class CCExprResolve;
 
69867
class CExprResolve;
 
69868
class WinIfExists;
 
69869
class WinImportHandler;
 
69870
class WinMacros;
 
69871
class WinAsm;
 
69872
class WinDeclSpecs;
 
69873
class WinMemberExplSpec;
 
69874
class WinTypeKeywords;
 
69875
class WinFriend;
 
69876
class ExtAC;
 
69877
class ExtACBuilderCoupling;
 
69878
class ExtACSyntaxCoupling;
 
69879
class ExtACTree;
 
69880
class ExtACKeywords;
 
69881
class ExtGnu;
 
69882
class PragmaOnceUnitState;
 
69883
class PragmaOnce;
 
69884
class CMatchSyntax;
 
69885
namespace Puma {
 
69886
 
 
69887
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69888
 
 
69889
#line 69890 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69890
} // closed Puma
 
69891
 
 
69892
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69893
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
69894
#include "CCExprResolveH.ah"
 
69895
#endif
 
69896
namespace Puma {
 
69897
 
 
69898
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69899
 
 
69900
#line 69901 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69901
} // closed Puma
 
69902
 
 
69903
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69904
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
69905
#include "CExprResolveH.ah"
 
69906
#endif
 
69907
namespace Puma {
 
69908
 
 
69909
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69910
class CT_CmpdLiteral : public CT_Expression, public CSemObject {
 
69911
#line 69912 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69912
  friend class ::CCExprResolve;
 
69913
  friend class ::CExprResolve;
 
69914
  friend class ::WinIfExists;
 
69915
  friend class ::WinImportHandler;
 
69916
  friend class ::WinMacros;
 
69917
  friend class ::WinAsm;
 
69918
  friend class ::WinDeclSpecs;
 
69919
  friend class ::WinMemberExplSpec;
 
69920
  friend class ::WinTypeKeywords;
 
69921
  friend class ::WinFriend;
 
69922
  friend class ::ExtAC;
 
69923
  friend class ::ExtACBuilderCoupling;
 
69924
  friend class ::ExtACSyntaxCoupling;
 
69925
  friend class ::ExtACTree;
 
69926
  friend class ::ExtACKeywords;
 
69927
  friend class ::ExtGnu;
 
69928
  friend class ::PragmaOnceUnitState;
 
69929
  friend class ::PragmaOnce;
 
69930
  friend class ::CMatchSyntax;
 
69931
 
 
69932
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69933
 
 
69934
  CTree *sons[4]; // open, type, close, init
 
69935
 
 
69936
public:
 
69937
  /** Constructor.
 
69938
   *  \param r Left parenthesis of the type name.
 
69939
   *  \param t The type name.
 
69940
   *  \param cr Right parenthesis of the type name.
 
69941
   *  \param i The initializer list. */
 
69942
  CT_CmpdLiteral (CTree *r, CTree *t, CTree *cr, CTree *i) {
 
69943
    AddSon (sons[0], r); AddSon (sons[1], t); 
 
69944
    AddSon (sons[2], cr); AddSon (sons[3], i);
 
69945
  }
 
69946
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
69947
  static const char *NodeId ();
 
69948
  /** Get the name of the node. Can be compared with NodeId(). */
 
69949
  const char *NodeName () const { return NodeId (); }
 
69950
  /** Get the number of sons. */
 
69951
  int Sons () const { return 4; }
 
69952
  /** Get the n-th son.
 
69953
   *  \param n The index of the son.
 
69954
   *  \return The n-th son or NULL. */
 
69955
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
69956
  /** Replace a son.
 
69957
   *  \param old_son The son to replace.
 
69958
   *  \param new_son The new son. */
 
69959
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
69960
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
69961
  }
 
69962
  /** Get the type name. */
 
69963
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
69964
  /** Get the initializer list. */
 
69965
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[3]; }
 
69966
  /** Get the semantic information about the created object. */
 
69967
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
69968
   private:
 
69969
  typedef CT_CmpdLiteral CCExprResolveExpr;
 
69970
 
 
69971
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
69972
 public :
 
69973
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
69974
  typedef CT_CmpdLiteral CExprResolveExpr;
 
69975
 
 
69976
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
69977
 public :
 
69978
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
69979
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
69980
  const char *__attr_name (unsigned i) const {
 
69981
    static const char *names[] = { "sons" }; return names[i];
 
69982
  }
 
69983
  const void *__attr (unsigned __i) const {
 
69984
    switch (__i) { case 0: return &sons; default: return 0; }
 
69985
  }
 
69986
#line 1511 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
69987
};
 
69988
 
 
69989
/** \class CT_ConstructExpr CTree.h Puma/CTree.h
 
69990
 *  Tree node representing a construct expression.
 
69991
 *  Example: \code std::string("abc") \endcode */
 
69992
 
 
69993
#line 69994 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
69994
} // closed Puma
 
69995
class CCExprResolve;
 
69996
class CExprResolve;
 
69997
class WinIfExists;
 
69998
class WinImportHandler;
 
69999
class WinMacros;
 
70000
class WinAsm;
 
70001
class WinDeclSpecs;
 
70002
class WinMemberExplSpec;
 
70003
class WinTypeKeywords;
 
70004
class WinFriend;
 
70005
class ExtAC;
 
70006
class ExtACBuilderCoupling;
 
70007
class ExtACSyntaxCoupling;
 
70008
class ExtACTree;
 
70009
class ExtACKeywords;
 
70010
class ExtGnu;
 
70011
class PragmaOnceUnitState;
 
70012
class PragmaOnce;
 
70013
class CMatchSyntax;
 
70014
namespace Puma {
 
70015
 
 
70016
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70017
 
 
70018
#line 70019 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70019
} // closed Puma
 
70020
 
 
70021
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70022
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70023
#include "CCExprResolveH.ah"
 
70024
#endif
 
70025
namespace Puma {
 
70026
 
 
70027
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70028
 
 
70029
#line 70030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70030
} // closed Puma
 
70031
 
 
70032
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70033
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70034
#include "CExprResolveH.ah"
 
70035
#endif
 
70036
namespace Puma {
 
70037
 
 
70038
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70039
class CT_ConstructExpr : public CT_Expression, public CSemObject {
 
70040
#line 70041 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70041
  friend class ::CCExprResolve;
 
70042
  friend class ::CExprResolve;
 
70043
  friend class ::WinIfExists;
 
70044
  friend class ::WinImportHandler;
 
70045
  friend class ::WinMacros;
 
70046
  friend class ::WinAsm;
 
70047
  friend class ::WinDeclSpecs;
 
70048
  friend class ::WinMemberExplSpec;
 
70049
  friend class ::WinTypeKeywords;
 
70050
  friend class ::WinFriend;
 
70051
  friend class ::ExtAC;
 
70052
  friend class ::ExtACBuilderCoupling;
 
70053
  friend class ::ExtACSyntaxCoupling;
 
70054
  friend class ::ExtACTree;
 
70055
  friend class ::ExtACKeywords;
 
70056
  friend class ::ExtGnu;
 
70057
  friend class ::PragmaOnceUnitState;
 
70058
  friend class ::PragmaOnce;
 
70059
  friend class ::CMatchSyntax;
 
70060
 
 
70061
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70062
 
 
70063
  CTree *sons[2]; // type, init
 
70064
 
 
70065
public:
 
70066
  /** Constructor.
 
70067
   *  \param t The type name.
 
70068
   *  \param i The initializer list. */
 
70069
  CT_ConstructExpr (CTree *t, CTree *i) { AddSon (sons[0], t); AddSon (sons[1], i); }
 
70070
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
70071
  static const char *NodeId ();
 
70072
  /** Get the name of the node. Can be compared with NodeId(). */
 
70073
  const char *NodeName () const { return NodeId (); }
 
70074
  /** Get the number of sons. */
 
70075
  int Sons () const { return 2; }
 
70076
  /** Get the n-th son.
 
70077
   *  \param n The index of the son.
 
70078
   *  \return The n-th son or NULL. */
 
70079
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
70080
  /** Replace a son.
 
70081
   *  \param old_son The son to replace.
 
70082
   *  \param new_son The new son. */
 
70083
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
70084
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
70085
  }
 
70086
  /** Get the type name. */
 
70087
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[0]; }
 
70088
  /** Get the initializer. */
 
70089
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
70090
  /** Get the semantic information about the created object. */
 
70091
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
70092
   private:
 
70093
  typedef CT_ConstructExpr CCExprResolveExpr;
 
70094
 
 
70095
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
70096
 public :
 
70097
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
70098
  typedef CT_ConstructExpr CExprResolveExpr;
 
70099
 
 
70100
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
70101
 public :
 
70102
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
70103
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
70104
  const char *__attr_name (unsigned i) const {
 
70105
    static const char *names[] = { "sons" }; return names[i];
 
70106
  }
 
70107
  const void *__attr (unsigned __i) const {
 
70108
    switch (__i) { case 0: return &sons; default: return 0; }
 
70109
  }
 
70110
#line 1546 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70111
};
 
70112
 
 
70113
/** \class CT_ThrowExpr CTree.h Puma/CTree.h
 
70114
 *  Tree node representing a throw expression.
 
70115
 *  Example: \code throw std::exception() \endcode */
 
70116
 
 
70117
#line 70118 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70118
} // closed Puma
 
70119
class CCExprResolve;
 
70120
class CExprResolve;
 
70121
class WinIfExists;
 
70122
class WinImportHandler;
 
70123
class WinMacros;
 
70124
class WinAsm;
 
70125
class WinDeclSpecs;
 
70126
class WinMemberExplSpec;
 
70127
class WinTypeKeywords;
 
70128
class WinFriend;
 
70129
class ExtAC;
 
70130
class ExtACBuilderCoupling;
 
70131
class ExtACSyntaxCoupling;
 
70132
class ExtACTree;
 
70133
class ExtACKeywords;
 
70134
class ExtGnu;
 
70135
class PragmaOnceUnitState;
 
70136
class PragmaOnce;
 
70137
class CMatchSyntax;
 
70138
namespace Puma {
 
70139
 
 
70140
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70141
 
 
70142
#line 70143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70143
} // closed Puma
 
70144
 
 
70145
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70146
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70147
#include "CCExprResolveH.ah"
 
70148
#endif
 
70149
namespace Puma {
 
70150
 
 
70151
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70152
 
 
70153
#line 70154 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70154
} // closed Puma
 
70155
 
 
70156
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70157
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70158
#include "CExprResolveH.ah"
 
70159
#endif
 
70160
namespace Puma {
 
70161
 
 
70162
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70163
class CT_ThrowExpr : public CT_Expression {
 
70164
#line 70165 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70165
  friend class ::CCExprResolve;
 
70166
  friend class ::CExprResolve;
 
70167
  friend class ::WinIfExists;
 
70168
  friend class ::WinImportHandler;
 
70169
  friend class ::WinMacros;
 
70170
  friend class ::WinAsm;
 
70171
  friend class ::WinDeclSpecs;
 
70172
  friend class ::WinMemberExplSpec;
 
70173
  friend class ::WinTypeKeywords;
 
70174
  friend class ::WinFriend;
 
70175
  friend class ::ExtAC;
 
70176
  friend class ::ExtACBuilderCoupling;
 
70177
  friend class ::ExtACSyntaxCoupling;
 
70178
  friend class ::ExtACTree;
 
70179
  friend class ::ExtACKeywords;
 
70180
  friend class ::ExtGnu;
 
70181
  friend class ::PragmaOnceUnitState;
 
70182
  friend class ::PragmaOnce;
 
70183
  friend class ::CMatchSyntax;
 
70184
 
 
70185
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70186
 
 
70187
  CTree *sons[2]; // throw, expr
 
70188
 
 
70189
public:
 
70190
  /** Constructor.
 
70191
   *  \param t The 'throw' keyword.
 
70192
   *  \param e The expression. */
 
70193
  CT_ThrowExpr (CTree *t, CTree *e = (CTree*)0) { AddSon (sons[0], t); AddSon (sons[1], e); }
 
70194
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
70195
  static const char *NodeId ();
 
70196
  /** Get the name of the node. Can be compared with NodeId(). */
 
70197
  const char *NodeName () const { return NodeId (); }
 
70198
  /** Get the number of sons. */
 
70199
  int Sons () const { return CTree::Sons (sons, 2); }
 
70200
  /** Get the n-th son.
 
70201
   *  \param n The index of the son.
 
70202
   *  \return The n-th son or NULL. */
 
70203
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
70204
  /** Replace a son.
 
70205
   *  \param old_son The son to replace.
 
70206
   *  \param new_son The new son. */
 
70207
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
70208
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
70209
  }
 
70210
  /** Get the expression. */
 
70211
  CTree *Expr () const { return sons[1]; }
 
70212
   private:
 
70213
  typedef CT_ThrowExpr CCExprResolveExpr;
 
70214
 
 
70215
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
70216
 public :
 
70217
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
70218
  typedef CT_ThrowExpr CExprResolveExpr;
 
70219
 
 
70220
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
70221
 public :
 
70222
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
70223
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
70224
  const char *__attr_name (unsigned i) const {
 
70225
    static const char *names[] = { "sons" }; return names[i];
 
70226
  }
 
70227
  const void *__attr (unsigned __i) const {
 
70228
    switch (__i) { case 0: return &sons; default: return 0; }
 
70229
  }
 
70230
#line 1577 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70231
};
 
70232
 
 
70233
/** \class CT_IndexExpr CTree.h Puma/CTree.h
 
70234
 *  Tree node representing an index expression. 
 
70235
 *  Example: \code a[1] \endcode */
 
70236
 
 
70237
#line 70238 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70238
} // closed Puma
 
70239
class CCExprResolve;
 
70240
class CExprResolve;
 
70241
class WinIfExists;
 
70242
class WinImportHandler;
 
70243
class WinMacros;
 
70244
class WinAsm;
 
70245
class WinDeclSpecs;
 
70246
class WinMemberExplSpec;
 
70247
class WinTypeKeywords;
 
70248
class WinFriend;
 
70249
class ExtAC;
 
70250
class ExtACBuilderCoupling;
 
70251
class ExtACSyntaxCoupling;
 
70252
class ExtACTree;
 
70253
class ExtACKeywords;
 
70254
class ExtGnu;
 
70255
class PragmaOnceUnitState;
 
70256
class PragmaOnce;
 
70257
class CMatchSyntax;
 
70258
namespace Puma {
 
70259
 
 
70260
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70261
 
 
70262
#line 70263 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70263
} // closed Puma
 
70264
 
 
70265
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70266
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70267
#include "CCExprResolveH.ah"
 
70268
#endif
 
70269
namespace Puma {
 
70270
 
 
70271
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70272
 
 
70273
#line 70274 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70274
} // closed Puma
 
70275
 
 
70276
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70277
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70278
#include "CExprResolveH.ah"
 
70279
#endif
 
70280
namespace Puma {
 
70281
 
 
70282
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70283
class CT_IndexExpr : public CT_Call {
 
70284
#line 70285 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70285
  friend class ::CCExprResolve;
 
70286
  friend class ::CExprResolve;
 
70287
  friend class ::WinIfExists;
 
70288
  friend class ::WinImportHandler;
 
70289
  friend class ::WinMacros;
 
70290
  friend class ::WinAsm;
 
70291
  friend class ::WinDeclSpecs;
 
70292
  friend class ::WinMemberExplSpec;
 
70293
  friend class ::WinTypeKeywords;
 
70294
  friend class ::WinFriend;
 
70295
  friend class ::ExtAC;
 
70296
  friend class ::ExtACBuilderCoupling;
 
70297
  friend class ::ExtACSyntaxCoupling;
 
70298
  friend class ::ExtACTree;
 
70299
  friend class ::ExtACKeywords;
 
70300
  friend class ::ExtGnu;
 
70301
  friend class ::PragmaOnceUnitState;
 
70302
  friend class ::PragmaOnce;
 
70303
  friend class ::CMatchSyntax;
 
70304
 
 
70305
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70306
 
 
70307
  CTree *sons[4]; // expr, open, index, close
 
70308
 
 
70309
public:
 
70310
  /** Constructor.
 
70311
   *  \param e The expression on which to invoke the index operator.
 
70312
   *  \param o Left parenthesis of the index expression.
 
70313
   *  \param i The index expression. 
 
70314
   *  \param c Right parenthesis of the index expression. */
 
70315
  CT_IndexExpr (CTree *e, CTree *o, CTree *i, CTree *c) {
 
70316
    AddSon (sons[0], e); AddSon (sons[1], o); 
 
70317
    AddSon (sons[2], i); AddSon (sons[3], c);
 
70318
  }
 
70319
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
70320
  static const char *NodeId ();
 
70321
  /** Get the name of the node. Can be compared with NodeId(). */
 
70322
  const char *NodeName () const { return NodeId (); }
 
70323
  /** Get the number of sons. */
 
70324
  int Sons () const { return 4; }
 
70325
  /** Get the n-th son.
 
70326
   *  \param n The index of the son.
 
70327
   *  \return The n-th son or NULL. */
 
70328
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
70329
  /** Replace a son.
 
70330
   *  \param old_son The son to replace.
 
70331
   *  \param new_son The new son. */
 
70332
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
70333
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
70334
  }
 
70335
   private:
 
70336
  typedef CT_IndexExpr CCExprResolveExpr;
 
70337
 
 
70338
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
70339
 public :
 
70340
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
70341
  typedef CT_IndexExpr CExprResolveExpr;
 
70342
 
 
70343
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
70344
 public :
 
70345
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
70346
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
70347
  const char *__attr_name (unsigned i) const {
 
70348
    static const char *names[] = { "sons" }; return names[i];
 
70349
  }
 
70350
  const void *__attr (unsigned __i) const {
 
70351
    switch (__i) { case 0: return &sons; default: return 0; }
 
70352
  }
 
70353
#line 1611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70354
};
 
70355
 
 
70356
/** \class CT_CallExpr CTree.h Puma/CTree.h
 
70357
 *  Tree node representing a function call expression.
 
70358
 *  Example: \code f(i) \endcode */
 
70359
 
 
70360
#line 70361 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70361
} // closed Puma
 
70362
class CCExprResolve;
 
70363
class CExprResolve;
 
70364
class WinIfExists;
 
70365
class WinImportHandler;
 
70366
class WinMacros;
 
70367
class WinAsm;
 
70368
class WinDeclSpecs;
 
70369
class WinMemberExplSpec;
 
70370
class WinTypeKeywords;
 
70371
class WinFriend;
 
70372
class ExtAC;
 
70373
class ExtACBuilderCoupling;
 
70374
class ExtACSyntaxCoupling;
 
70375
class ExtACTree;
 
70376
class ExtACKeywords;
 
70377
class ExtGnu;
 
70378
class PragmaOnceUnitState;
 
70379
class PragmaOnce;
 
70380
class CMatchSyntax;
 
70381
namespace Puma {
 
70382
 
 
70383
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70384
 
 
70385
#line 70386 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70386
} // closed Puma
 
70387
 
 
70388
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70389
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70390
#include "CCExprResolveH.ah"
 
70391
#endif
 
70392
namespace Puma {
 
70393
 
 
70394
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70395
 
 
70396
#line 70397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70397
} // closed Puma
 
70398
 
 
70399
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70400
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70401
#include "CExprResolveH.ah"
 
70402
#endif
 
70403
namespace Puma {
 
70404
 
 
70405
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70406
class CT_CallExpr : public CT_Call {
 
70407
#line 70408 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70408
  friend class ::CCExprResolve;
 
70409
  friend class ::CExprResolve;
 
70410
  friend class ::WinIfExists;
 
70411
  friend class ::WinImportHandler;
 
70412
  friend class ::WinMacros;
 
70413
  friend class ::WinAsm;
 
70414
  friend class ::WinDeclSpecs;
 
70415
  friend class ::WinMemberExplSpec;
 
70416
  friend class ::WinTypeKeywords;
 
70417
  friend class ::WinFriend;
 
70418
  friend class ::ExtAC;
 
70419
  friend class ::ExtACBuilderCoupling;
 
70420
  friend class ::ExtACSyntaxCoupling;
 
70421
  friend class ::ExtACTree;
 
70422
  friend class ::ExtACKeywords;
 
70423
  friend class ::ExtGnu;
 
70424
  friend class ::PragmaOnceUnitState;
 
70425
  friend class ::PragmaOnce;
 
70426
  friend class ::CMatchSyntax;
 
70427
 
 
70428
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70429
 
 
70430
  CTree *sons[2]; // expr, args
 
70431
 
 
70432
public:
 
70433
  /** Constructor.
 
70434
   *  \param e The expression on which the call is invoked. */
 
70435
  CT_CallExpr (CTree *e) { AddSon (sons[0], e); AddSon (sons[1], 0); }
 
70436
  /** Constructor.
 
70437
   *  \param e The expression on which the call is invoked.
 
70438
   *  \param l The argument list of the call. */
 
70439
  CT_CallExpr (CTree *e, CTree *l) { AddSon (sons[0], e); AddSon (sons[1], l); }
 
70440
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
70441
  static const char *NodeId ();
 
70442
  /** Get the name of the node. Can be compared with NodeId(). */
 
70443
  const char *NodeName () const { return NodeId (); }
 
70444
  /** Get the number of sons. */
 
70445
  int Sons () const { return CTree::Sons (sons, 2); }
 
70446
  /** Get the n-th son.
 
70447
   *  \param n The index of the son.
 
70448
   *  \return The n-th son or NULL. */
 
70449
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
70450
  /** Replace a son.
 
70451
   *  \param old_son The son to replace.
 
70452
   *  \param new_son The new son. */
 
70453
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
70454
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
70455
  }
 
70456
  CTree *Expr () const { return sons[0]; }
 
70457
  CT_ExprList *Arguments () const { return (CT_ExprList*)sons[1]; }
 
70458
   private:
 
70459
  typedef CT_CallExpr CCExprResolveExpr;
 
70460
 
 
70461
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
70462
 public :
 
70463
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
70464
  typedef CT_CallExpr CExprResolveExpr;
 
70465
 
 
70466
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
70467
 public :
 
70468
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
70469
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
70470
  const char *__attr_name (unsigned i) const {
 
70471
    static const char *names[] = { "sons" }; return names[i];
 
70472
  }
 
70473
  const void *__attr (unsigned __i) const {
 
70474
    switch (__i) { case 0: return &sons; default: return 0; }
 
70475
  }
 
70476
#line 1645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70477
};
 
70478
 
 
70479
/** \class CT_CastExpr CTree.h Puma/CTree.h
 
70480
 *  Tree node representing a cast expression.
 
70481
 *  Example: \code (int)a \endcode */
 
70482
 
 
70483
#line 70484 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70484
} // closed Puma
 
70485
class CCExprResolve;
 
70486
class CExprResolve;
 
70487
class WinIfExists;
 
70488
class WinImportHandler;
 
70489
class WinMacros;
 
70490
class WinAsm;
 
70491
class WinDeclSpecs;
 
70492
class WinMemberExplSpec;
 
70493
class WinTypeKeywords;
 
70494
class WinFriend;
 
70495
class ExtAC;
 
70496
class ExtACBuilderCoupling;
 
70497
class ExtACSyntaxCoupling;
 
70498
class ExtACTree;
 
70499
class ExtACKeywords;
 
70500
class ExtGnu;
 
70501
class PragmaOnceUnitState;
 
70502
class PragmaOnce;
 
70503
class CMatchSyntax;
 
70504
namespace Puma {
 
70505
 
 
70506
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70507
 
 
70508
#line 70509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70509
} // closed Puma
 
70510
 
 
70511
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70512
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70513
#include "CCExprResolveH.ah"
 
70514
#endif
 
70515
namespace Puma {
 
70516
 
 
70517
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70518
 
 
70519
#line 70520 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70520
} // closed Puma
 
70521
 
 
70522
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70523
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70524
#include "CExprResolveH.ah"
 
70525
#endif
 
70526
namespace Puma {
 
70527
 
 
70528
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70529
class CT_CastExpr : public CT_Expression {
 
70530
#line 70531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70531
  friend class ::CCExprResolve;
 
70532
  friend class ::CExprResolve;
 
70533
  friend class ::WinIfExists;
 
70534
  friend class ::WinImportHandler;
 
70535
  friend class ::WinMacros;
 
70536
  friend class ::WinAsm;
 
70537
  friend class ::WinDeclSpecs;
 
70538
  friend class ::WinMemberExplSpec;
 
70539
  friend class ::WinTypeKeywords;
 
70540
  friend class ::WinFriend;
 
70541
  friend class ::ExtAC;
 
70542
  friend class ::ExtACBuilderCoupling;
 
70543
  friend class ::ExtACSyntaxCoupling;
 
70544
  friend class ::ExtACTree;
 
70545
  friend class ::ExtACKeywords;
 
70546
  friend class ::ExtGnu;
 
70547
  friend class ::PragmaOnceUnitState;
 
70548
  friend class ::PragmaOnce;
 
70549
  friend class ::CMatchSyntax;
 
70550
 
 
70551
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70552
 
 
70553
  CTree *sons[4]; // open, type, close, expr
 
70554
 
 
70555
public:
 
70556
  /** Constructor.
 
70557
   *  \param o Left parenthesis of the type name.
 
70558
   *  \param t The type to cast to.
 
70559
   *  \param c Right parenthesis of the type name. 
 
70560
   *  \param e The expression to cast. */
 
70561
  CT_CastExpr (CTree *o, CTree *t, CTree *c, CTree *e) {
 
70562
    AddSon (sons[0], o); AddSon (sons[1], t); 
 
70563
    AddSon (sons[2], c); AddSon (sons[3], e);
 
70564
  }
 
70565
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
70566
  static const char *NodeId ();
 
70567
  /** Get the name of the node. Can be compared with NodeId(). */
 
70568
  const char *NodeName () const { return NodeId (); }
 
70569
  /** Get the number of sons. */
 
70570
  int Sons () const { return 4; }
 
70571
  /** Get the n-th son.
 
70572
   *  \param n The index of the son.
 
70573
   *  \return The n-th son or NULL. */
 
70574
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
70575
  /** Replace a son.
 
70576
   *  \param old_son The son to replace.
 
70577
   *  \param new_son The new son. */
 
70578
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
70579
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
70580
  }
 
70581
  /** Get the casted expression. */
 
70582
  CTree *Expr () const { return sons[3]; }
 
70583
  /** Get the type to cast to. */
 
70584
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
70585
   private:
 
70586
  typedef CT_CastExpr CCExprResolveExpr;
 
70587
 
 
70588
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
70589
 public :
 
70590
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
70591
  typedef CT_CastExpr CExprResolveExpr;
 
70592
 
 
70593
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
70594
 public :
 
70595
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
70596
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
70597
  const char *__attr_name (unsigned i) const {
 
70598
    static const char *names[] = { "sons" }; return names[i];
 
70599
  }
 
70600
  const void *__attr (unsigned __i) const {
 
70601
    switch (__i) { case 0: return &sons; default: return 0; }
 
70602
  }
 
70603
#line 1683 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70604
};
 
70605
 
 
70606
/** \class CT_StaticCast CTree.h Puma/CTree.h
 
70607
 *  Tree node representing a static cast.
 
70608
 *  Example: \code static_cast<int>(a) \endcode */
 
70609
 
 
70610
#line 70611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70611
} // closed Puma
 
70612
class CCExprResolve;
 
70613
class CExprResolve;
 
70614
class WinIfExists;
 
70615
class WinImportHandler;
 
70616
class WinMacros;
 
70617
class WinAsm;
 
70618
class WinDeclSpecs;
 
70619
class WinMemberExplSpec;
 
70620
class WinTypeKeywords;
 
70621
class WinFriend;
 
70622
class ExtAC;
 
70623
class ExtACBuilderCoupling;
 
70624
class ExtACSyntaxCoupling;
 
70625
class ExtACTree;
 
70626
class ExtACKeywords;
 
70627
class ExtGnu;
 
70628
class PragmaOnceUnitState;
 
70629
class PragmaOnce;
 
70630
class CMatchSyntax;
 
70631
namespace Puma {
 
70632
 
 
70633
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70634
 
 
70635
#line 70636 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70636
} // closed Puma
 
70637
 
 
70638
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70639
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70640
#include "CCExprResolveH.ah"
 
70641
#endif
 
70642
namespace Puma {
 
70643
 
 
70644
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70645
 
 
70646
#line 70647 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70647
} // closed Puma
 
70648
 
 
70649
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70650
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70651
#include "CExprResolveH.ah"
 
70652
#endif
 
70653
namespace Puma {
 
70654
 
 
70655
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70656
class CT_StaticCast : public CT_Expression {
 
70657
#line 70658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70658
  friend class ::CCExprResolve;
 
70659
  friend class ::CExprResolve;
 
70660
  friend class ::WinIfExists;
 
70661
  friend class ::WinImportHandler;
 
70662
  friend class ::WinMacros;
 
70663
  friend class ::WinAsm;
 
70664
  friend class ::WinDeclSpecs;
 
70665
  friend class ::WinMemberExplSpec;
 
70666
  friend class ::WinTypeKeywords;
 
70667
  friend class ::WinFriend;
 
70668
  friend class ::ExtAC;
 
70669
  friend class ::ExtACBuilderCoupling;
 
70670
  friend class ::ExtACSyntaxCoupling;
 
70671
  friend class ::ExtACTree;
 
70672
  friend class ::ExtACKeywords;
 
70673
  friend class ::ExtGnu;
 
70674
  friend class ::PragmaOnceUnitState;
 
70675
  friend class ::PragmaOnce;
 
70676
  friend class ::CMatchSyntax;
 
70677
 
 
70678
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70679
 
 
70680
  CTree *sons[5]; // cast, open, type, close, expr
 
70681
 
 
70682
public:
 
70683
  /** Constructor.
 
70684
   *  \param cst The cast operator, i.e. 'static_cast'.
 
70685
   *  \param o Left arrow bracket of the type name.
 
70686
   *  \param t The type to cast to.
 
70687
   *  \param c Right array bracket of the type name.
 
70688
   *  \param e The expression to cast. */
 
70689
  CT_StaticCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) {
 
70690
    AddSon (sons[0], cst); AddSon (sons[1], o); AddSon (sons[2], t); 
 
70691
    AddSon (sons[3], c); AddSon (sons[4], e);
 
70692
  }
 
70693
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
70694
  static const char *NodeId ();
 
70695
  /** Get the name of the node. Can be compared with NodeId(). */
 
70696
  const char *NodeName () const { return NodeId (); }
 
70697
  /** Get the number of sons. */
 
70698
  int Sons () const { return 5; }
 
70699
  /** Get the n-th son.
 
70700
   *  \param n The index of the son.
 
70701
   *  \return The n-th son or NULL. */
 
70702
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
70703
  /** Replace a son.
 
70704
   *  \param old_son The son to replace.
 
70705
   *  \param new_son The new son. */
 
70706
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
70707
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
70708
  }
 
70709
  /** Get the casted expression. */
 
70710
  CTree *Expr () const { return sons[4]; }
 
70711
  /** Get the type to cast to. */
 
70712
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
70713
   private:
 
70714
  typedef CT_StaticCast CCExprResolveExpr;
 
70715
 
 
70716
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
70717
 public :
 
70718
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
70719
  typedef CT_StaticCast CExprResolveExpr;
 
70720
 
 
70721
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
70722
 public :
 
70723
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
70724
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
70725
  const char *__attr_name (unsigned i) const {
 
70726
    static const char *names[] = { "sons" }; return names[i];
 
70727
  }
 
70728
  const void *__attr (unsigned __i) const {
 
70729
    switch (__i) { case 0: return &sons; default: return 0; }
 
70730
  }
 
70731
#line 1722 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70732
};
 
70733
 
 
70734
/** \class CT_ConstCast CTree.h Puma/CTree.h
 
70735
 *  Tree node representing a const cast.
 
70736
 *  Example: \code const_cast<int>(a) \endcode */
 
70737
 
 
70738
#line 70739 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70739
} // closed Puma
 
70740
class CCExprResolve;
 
70741
class CExprResolve;
 
70742
class WinIfExists;
 
70743
class WinImportHandler;
 
70744
class WinMacros;
 
70745
class WinAsm;
 
70746
class WinDeclSpecs;
 
70747
class WinMemberExplSpec;
 
70748
class WinTypeKeywords;
 
70749
class WinFriend;
 
70750
class ExtAC;
 
70751
class ExtACBuilderCoupling;
 
70752
class ExtACSyntaxCoupling;
 
70753
class ExtACTree;
 
70754
class ExtACKeywords;
 
70755
class ExtGnu;
 
70756
class PragmaOnceUnitState;
 
70757
class PragmaOnce;
 
70758
class CMatchSyntax;
 
70759
namespace Puma {
 
70760
 
 
70761
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70762
 
 
70763
#line 70764 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70764
} // closed Puma
 
70765
 
 
70766
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70767
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70768
#include "CCExprResolveH.ah"
 
70769
#endif
 
70770
namespace Puma {
 
70771
 
 
70772
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70773
 
 
70774
#line 70775 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70775
} // closed Puma
 
70776
 
 
70777
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70778
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70779
#include "CExprResolveH.ah"
 
70780
#endif
 
70781
namespace Puma {
 
70782
 
 
70783
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70784
class CT_ConstCast : public CT_StaticCast {
 
70785
#line 70786 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70786
  friend class ::CCExprResolve;
 
70787
  friend class ::CExprResolve;
 
70788
  friend class ::WinIfExists;
 
70789
  friend class ::WinImportHandler;
 
70790
  friend class ::WinMacros;
 
70791
  friend class ::WinAsm;
 
70792
  friend class ::WinDeclSpecs;
 
70793
  friend class ::WinMemberExplSpec;
 
70794
  friend class ::WinTypeKeywords;
 
70795
  friend class ::WinFriend;
 
70796
  friend class ::ExtAC;
 
70797
  friend class ::ExtACBuilderCoupling;
 
70798
  friend class ::ExtACSyntaxCoupling;
 
70799
  friend class ::ExtACTree;
 
70800
  friend class ::ExtACKeywords;
 
70801
  friend class ::ExtGnu;
 
70802
  friend class ::PragmaOnceUnitState;
 
70803
  friend class ::PragmaOnce;
 
70804
  friend class ::CMatchSyntax;
 
70805
 
 
70806
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70807
 
 
70808
public:
 
70809
  /** Constructor.
 
70810
   *  \param cst The cast operator, i.e. 'const_cast'.
 
70811
   *  \param o Left arrow bracket of the type name.
 
70812
   *  \param t The type to cast to.
 
70813
   *  \param c Right array bracket of the type name.
 
70814
   *  \param e The expression to cast. */
 
70815
  CT_ConstCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
70816
    CT_StaticCast (cst, o, t, c, e) {}
 
70817
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
70818
  static const char *NodeId ();
 
70819
  /** Get the name of the node. Can be compared with NodeId(). */
 
70820
  const char *NodeName () const { return NodeId (); }
 
70821
   private:
 
70822
  typedef CT_ConstCast CCExprResolveExpr;
 
70823
 
 
70824
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
70825
 public :
 
70826
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
70827
  typedef CT_ConstCast CExprResolveExpr;
 
70828
 
 
70829
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
70830
 public :
 
70831
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
70832
  typedef AC::TLE __AttrTypes;
 
70833
  const char *__attr_name (unsigned i) const { return 0; }
 
70834
  const void *__attr (unsigned __i) const { return 0; }
 
70835
#line 1741 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70836
};
 
70837
 
 
70838
/** \class CT_ReintCast CTree.h Puma/CTree.h
 
70839
 *  Tree node representing a reinterpret cast.
 
70840
 *  Example: \code reinterpret_cast<int>(a) \endcode */
 
70841
 
 
70842
#line 70843 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70843
} // closed Puma
 
70844
class CCExprResolve;
 
70845
class CExprResolve;
 
70846
class WinIfExists;
 
70847
class WinImportHandler;
 
70848
class WinMacros;
 
70849
class WinAsm;
 
70850
class WinDeclSpecs;
 
70851
class WinMemberExplSpec;
 
70852
class WinTypeKeywords;
 
70853
class WinFriend;
 
70854
class ExtAC;
 
70855
class ExtACBuilderCoupling;
 
70856
class ExtACSyntaxCoupling;
 
70857
class ExtACTree;
 
70858
class ExtACKeywords;
 
70859
class ExtGnu;
 
70860
class PragmaOnceUnitState;
 
70861
class PragmaOnce;
 
70862
class CMatchSyntax;
 
70863
namespace Puma {
 
70864
 
 
70865
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70866
 
 
70867
#line 70868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70868
} // closed Puma
 
70869
 
 
70870
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70871
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70872
#include "CCExprResolveH.ah"
 
70873
#endif
 
70874
namespace Puma {
 
70875
 
 
70876
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70877
 
 
70878
#line 70879 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70879
} // closed Puma
 
70880
 
 
70881
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70882
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70883
#include "CExprResolveH.ah"
 
70884
#endif
 
70885
namespace Puma {
 
70886
 
 
70887
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70888
class CT_ReintCast : public CT_StaticCast {
 
70889
#line 70890 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70890
  friend class ::CCExprResolve;
 
70891
  friend class ::CExprResolve;
 
70892
  friend class ::WinIfExists;
 
70893
  friend class ::WinImportHandler;
 
70894
  friend class ::WinMacros;
 
70895
  friend class ::WinAsm;
 
70896
  friend class ::WinDeclSpecs;
 
70897
  friend class ::WinMemberExplSpec;
 
70898
  friend class ::WinTypeKeywords;
 
70899
  friend class ::WinFriend;
 
70900
  friend class ::ExtAC;
 
70901
  friend class ::ExtACBuilderCoupling;
 
70902
  friend class ::ExtACSyntaxCoupling;
 
70903
  friend class ::ExtACTree;
 
70904
  friend class ::ExtACKeywords;
 
70905
  friend class ::ExtGnu;
 
70906
  friend class ::PragmaOnceUnitState;
 
70907
  friend class ::PragmaOnce;
 
70908
  friend class ::CMatchSyntax;
 
70909
 
 
70910
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70911
 
 
70912
public:
 
70913
  /** Constructor.
 
70914
   *  \param cst The cast operator, i.e. 'reinterpret_cast'.
 
70915
   *  \param o Left arrow bracket of the type name.
 
70916
   *  \param t The type to cast to.
 
70917
   *  \param c Right array bracket of the type name.
 
70918
   *  \param e The expression to cast. */
 
70919
  CT_ReintCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
70920
    CT_StaticCast (cst, o, t, c, e) {}
 
70921
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
70922
  static const char *NodeId ();
 
70923
  /** Get the name of the node. Can be compared with NodeId(). */
 
70924
  const char *NodeName () const { return NodeId (); }
 
70925
   private:
 
70926
  typedef CT_ReintCast CCExprResolveExpr;
 
70927
 
 
70928
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
70929
 public :
 
70930
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
70931
  typedef CT_ReintCast CExprResolveExpr;
 
70932
 
 
70933
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
70934
 public :
 
70935
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
70936
  typedef AC::TLE __AttrTypes;
 
70937
  const char *__attr_name (unsigned i) const { return 0; }
 
70938
  const void *__attr (unsigned __i) const { return 0; }
 
70939
#line 1760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70940
};
 
70941
 
 
70942
/** \class CT_DynamicCast CTree.h Puma/CTree.h
 
70943
 *  Tree node representing a dynamic cast.
 
70944
 *  Example: \code dynamic_cast<int>(a) \endcode */
 
70945
 
 
70946
#line 70947 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70947
} // closed Puma
 
70948
class CCExprResolve;
 
70949
class CExprResolve;
 
70950
class WinIfExists;
 
70951
class WinImportHandler;
 
70952
class WinMacros;
 
70953
class WinAsm;
 
70954
class WinDeclSpecs;
 
70955
class WinMemberExplSpec;
 
70956
class WinTypeKeywords;
 
70957
class WinFriend;
 
70958
class ExtAC;
 
70959
class ExtACBuilderCoupling;
 
70960
class ExtACSyntaxCoupling;
 
70961
class ExtACTree;
 
70962
class ExtACKeywords;
 
70963
class ExtGnu;
 
70964
class PragmaOnceUnitState;
 
70965
class PragmaOnce;
 
70966
class CMatchSyntax;
 
70967
namespace Puma {
 
70968
 
 
70969
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70970
 
 
70971
#line 70972 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70972
} // closed Puma
 
70973
 
 
70974
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70975
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
70976
#include "CCExprResolveH.ah"
 
70977
#endif
 
70978
namespace Puma {
 
70979
 
 
70980
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70981
 
 
70982
#line 70983 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70983
} // closed Puma
 
70984
 
 
70985
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70986
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
70987
#include "CExprResolveH.ah"
 
70988
#endif
 
70989
namespace Puma {
 
70990
 
 
70991
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
70992
class CT_DynamicCast : public CT_StaticCast {
 
70993
#line 70994 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
70994
  friend class ::CCExprResolve;
 
70995
  friend class ::CExprResolve;
 
70996
  friend class ::WinIfExists;
 
70997
  friend class ::WinImportHandler;
 
70998
  friend class ::WinMacros;
 
70999
  friend class ::WinAsm;
 
71000
  friend class ::WinDeclSpecs;
 
71001
  friend class ::WinMemberExplSpec;
 
71002
  friend class ::WinTypeKeywords;
 
71003
  friend class ::WinFriend;
 
71004
  friend class ::ExtAC;
 
71005
  friend class ::ExtACBuilderCoupling;
 
71006
  friend class ::ExtACSyntaxCoupling;
 
71007
  friend class ::ExtACTree;
 
71008
  friend class ::ExtACKeywords;
 
71009
  friend class ::ExtGnu;
 
71010
  friend class ::PragmaOnceUnitState;
 
71011
  friend class ::PragmaOnce;
 
71012
  friend class ::CMatchSyntax;
 
71013
 
 
71014
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71015
 
 
71016
public:
 
71017
  /** Constructor.
 
71018
   *  \param cst The cast operator, i.e. 'dynamic_cast'.
 
71019
   *  \param o Left arrow bracket of the type name.
 
71020
   *  \param t The type to cast to.
 
71021
   *  \param c Right array bracket of the type name.
 
71022
   *  \param e The expression to cast. */
 
71023
  CT_DynamicCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
71024
    CT_StaticCast (cst, o, t, c, e) {}
 
71025
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
71026
  static const char *NodeId ();
 
71027
  /** Get the name of the node. Can be compared with NodeId(). */
 
71028
  const char *NodeName () const { return NodeId (); }
 
71029
   private:
 
71030
  typedef CT_DynamicCast CCExprResolveExpr;
 
71031
 
 
71032
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
71033
 public :
 
71034
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
71035
  typedef CT_DynamicCast CExprResolveExpr;
 
71036
 
 
71037
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
71038
 public :
 
71039
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
71040
  typedef AC::TLE __AttrTypes;
 
71041
  const char *__attr_name (unsigned i) const { return 0; }
 
71042
  const void *__attr (unsigned __i) const { return 0; }
 
71043
#line 1779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71044
};
 
71045
 
 
71046
/** \class CT_ImplicitCast CTree.h Puma/CTree.h
 
71047
 *  Tree node representing an implicit cast.
 
71048
 *  Example: 
 
71049
 *  \code 
 
71050
 * int i = 1.2;  // implicit cast from float to int 
 
71051
 *  \endcode */
 
71052
 
 
71053
#line 71054 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71054
} // closed Puma
 
71055
class CCExprResolve;
 
71056
class CExprResolve;
 
71057
class WinIfExists;
 
71058
class WinImportHandler;
 
71059
class WinMacros;
 
71060
class WinAsm;
 
71061
class WinDeclSpecs;
 
71062
class WinMemberExplSpec;
 
71063
class WinTypeKeywords;
 
71064
class WinFriend;
 
71065
class ExtAC;
 
71066
class ExtACBuilderCoupling;
 
71067
class ExtACSyntaxCoupling;
 
71068
class ExtACTree;
 
71069
class ExtACKeywords;
 
71070
class ExtGnu;
 
71071
class PragmaOnceUnitState;
 
71072
class PragmaOnce;
 
71073
class CMatchSyntax;
 
71074
namespace Puma {
 
71075
 
 
71076
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71077
 
 
71078
#line 71079 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71079
} // closed Puma
 
71080
 
 
71081
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71082
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71083
#include "CCExprResolveH.ah"
 
71084
#endif
 
71085
namespace Puma {
 
71086
 
 
71087
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71088
 
 
71089
#line 71090 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71090
} // closed Puma
 
71091
 
 
71092
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71093
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71094
#include "CExprResolveH.ah"
 
71095
#endif
 
71096
namespace Puma {
 
71097
 
 
71098
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71099
class CT_ImplicitCast : public CT_Expression {
 
71100
#line 71101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71101
  friend class ::CCExprResolve;
 
71102
  friend class ::CExprResolve;
 
71103
  friend class ::WinIfExists;
 
71104
  friend class ::WinImportHandler;
 
71105
  friend class ::WinMacros;
 
71106
  friend class ::WinAsm;
 
71107
  friend class ::WinDeclSpecs;
 
71108
  friend class ::WinMemberExplSpec;
 
71109
  friend class ::WinTypeKeywords;
 
71110
  friend class ::WinFriend;
 
71111
  friend class ::ExtAC;
 
71112
  friend class ::ExtACBuilderCoupling;
 
71113
  friend class ::ExtACSyntaxCoupling;
 
71114
  friend class ::ExtACTree;
 
71115
  friend class ::ExtACKeywords;
 
71116
  friend class ::ExtGnu;
 
71117
  friend class ::PragmaOnceUnitState;
 
71118
  friend class ::PragmaOnce;
 
71119
  friend class ::CMatchSyntax;
 
71120
 
 
71121
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71122
 
 
71123
  CTree *_expr; // casted expression
 
71124
 
 
71125
public:
 
71126
  /** Constructor.
 
71127
   *  \param e The expression that is implicitely casted. */
 
71128
  CT_ImplicitCast (CTree *e) { AddSon (_expr, e); }
 
71129
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
71130
  static const char *NodeId ();
 
71131
  /** Get the name of the node. Can be compared with NodeId(). */
 
71132
  const char *NodeName () const { return NodeId (); }
 
71133
  /** Get the number of sons. */
 
71134
  int Sons () const { return 1; }
 
71135
  /** Get the n-th son.
 
71136
   *  \param n The index of the son.
 
71137
   *  \return The n-th son or NULL. */
 
71138
  CTree *Son (int n) const { return n == 0 ? _expr : (CTree*)0; }
 
71139
  /** Get the casted expression. */
 
71140
  CTree *Expr () const { return _expr; }
 
71141
  /** Replace a son.
 
71142
   *  \param old_son The son to replace.
 
71143
   *  \param new_son The new son. */
 
71144
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
71145
   { CTree::ReplaceSon (_expr, old_son, new_son); }
 
71146
   private:
 
71147
  typedef CT_ImplicitCast CCExprResolveExpr;
 
71148
 
 
71149
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
71150
 public :
 
71151
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
71152
  typedef CT_ImplicitCast CExprResolveExpr;
 
71153
 
 
71154
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
71155
 public :
 
71156
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
71157
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
71158
  const char *__attr_name (unsigned i) const {
 
71159
    static const char *names[] = { "_expr" }; return names[i];
 
71160
  }
 
71161
  const void *__attr (unsigned __i) const {
 
71162
    switch (__i) { case 0: return &_expr; default: return 0; }
 
71163
  }
 
71164
#line 1811 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71165
};
 
71166
 
 
71167
/** \class CT_TypeidExpr CTree.h Puma/CTree.h
 
71168
 *  Tree node representing a typeid expression.
 
71169
 *  Example: \code typeid(X) \endcode */
 
71170
 
 
71171
#line 71172 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71172
} // closed Puma
 
71173
class CCExprResolve;
 
71174
class CExprResolve;
 
71175
class WinIfExists;
 
71176
class WinImportHandler;
 
71177
class WinMacros;
 
71178
class WinAsm;
 
71179
class WinDeclSpecs;
 
71180
class WinMemberExplSpec;
 
71181
class WinTypeKeywords;
 
71182
class WinFriend;
 
71183
class ExtAC;
 
71184
class ExtACBuilderCoupling;
 
71185
class ExtACSyntaxCoupling;
 
71186
class ExtACTree;
 
71187
class ExtACKeywords;
 
71188
class ExtGnu;
 
71189
class PragmaOnceUnitState;
 
71190
class PragmaOnce;
 
71191
class CMatchSyntax;
 
71192
namespace Puma {
 
71193
 
 
71194
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71195
 
 
71196
#line 71197 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71197
} // closed Puma
 
71198
 
 
71199
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71200
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71201
#include "CCExprResolveH.ah"
 
71202
#endif
 
71203
namespace Puma {
 
71204
 
 
71205
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71206
 
 
71207
#line 71208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71208
} // closed Puma
 
71209
 
 
71210
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71211
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71212
#include "CExprResolveH.ah"
 
71213
#endif
 
71214
namespace Puma {
 
71215
 
 
71216
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71217
class CT_TypeidExpr : public CT_Expression {
 
71218
#line 71219 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71219
  friend class ::CCExprResolve;
 
71220
  friend class ::CExprResolve;
 
71221
  friend class ::WinIfExists;
 
71222
  friend class ::WinImportHandler;
 
71223
  friend class ::WinMacros;
 
71224
  friend class ::WinAsm;
 
71225
  friend class ::WinDeclSpecs;
 
71226
  friend class ::WinMemberExplSpec;
 
71227
  friend class ::WinTypeKeywords;
 
71228
  friend class ::WinFriend;
 
71229
  friend class ::ExtAC;
 
71230
  friend class ::ExtACBuilderCoupling;
 
71231
  friend class ::ExtACSyntaxCoupling;
 
71232
  friend class ::ExtACTree;
 
71233
  friend class ::ExtACKeywords;
 
71234
  friend class ::ExtGnu;
 
71235
  friend class ::PragmaOnceUnitState;
 
71236
  friend class ::PragmaOnce;
 
71237
  friend class ::CMatchSyntax;
 
71238
 
 
71239
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71240
 
 
71241
  CTree *sons[4]; // typeid, open, type_id/expr, close
 
71242
 
 
71243
public:
 
71244
  /** Constructor.
 
71245
   *  \param tid The 'typeid' operator.
 
71246
   *  \param o The left parenthesis of the type name or expression.
 
71247
   *  \param e The expression or type name for which to get the type identifier.
 
71248
   *  \param c The right parenthesis of the type name or expression. */
 
71249
  CT_TypeidExpr (CTree *tid, CTree *o, CTree *e, CTree *c) {
 
71250
    AddSon (sons[0], tid); AddSon (sons[1], o); 
 
71251
    AddSon (sons[2], e); AddSon (sons[3], c);
 
71252
  }
 
71253
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
71254
  static const char *NodeId ();
 
71255
  /** Get the name of the node. Can be compared with NodeId(). */
 
71256
  const char *NodeName () const { return NodeId (); }
 
71257
  /** Get the number of sons. */
 
71258
  int Sons () const { return 4; }
 
71259
  /** Get the n-th son.
 
71260
   *  \param n The index of the son.
 
71261
   *  \return The n-th son or NULL. */
 
71262
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
71263
  /** Replace a son.
 
71264
   *  \param old_son The son to replace.
 
71265
   *  \param new_son The new son. */
 
71266
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
71267
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
71268
  }
 
71269
  /** Get the typeid argument, i.e. the expression or type name for
 
71270
   *  which to get the type identifier. */
 
71271
  CTree *Arg () const { return sons[2]; }
 
71272
   private:
 
71273
  typedef CT_TypeidExpr CCExprResolveExpr;
 
71274
 
 
71275
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
71276
 public :
 
71277
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
71278
  typedef CT_TypeidExpr CExprResolveExpr;
 
71279
 
 
71280
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
71281
 public :
 
71282
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
71283
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
71284
  const char *__attr_name (unsigned i) const {
 
71285
    static const char *names[] = { "sons" }; return names[i];
 
71286
  }
 
71287
  const void *__attr (unsigned __i) const {
 
71288
    switch (__i) { case 0: return &sons; default: return 0; }
 
71289
  }
 
71290
#line 1848 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71291
};
 
71292
 
 
71293
/** \class CT_SizeofExpr CTree.h Puma/CTree.h
 
71294
 *  Tree node representing a sizeof expression.
 
71295
 *  Example: \code sizeof(int*) \endcode */
 
71296
 
 
71297
#line 71298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71298
} // closed Puma
 
71299
class CCExprResolve;
 
71300
class CExprResolve;
 
71301
class WinIfExists;
 
71302
class WinImportHandler;
 
71303
class WinMacros;
 
71304
class WinAsm;
 
71305
class WinDeclSpecs;
 
71306
class WinMemberExplSpec;
 
71307
class WinTypeKeywords;
 
71308
class WinFriend;
 
71309
class ExtAC;
 
71310
class ExtACBuilderCoupling;
 
71311
class ExtACSyntaxCoupling;
 
71312
class ExtACTree;
 
71313
class ExtACKeywords;
 
71314
class ExtGnu;
 
71315
class PragmaOnceUnitState;
 
71316
class PragmaOnce;
 
71317
class CMatchSyntax;
 
71318
namespace Puma {
 
71319
 
 
71320
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71321
 
 
71322
#line 71323 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71323
} // closed Puma
 
71324
 
 
71325
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71326
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71327
#include "CCExprResolveH.ah"
 
71328
#endif
 
71329
namespace Puma {
 
71330
 
 
71331
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71332
 
 
71333
#line 71334 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71334
} // closed Puma
 
71335
 
 
71336
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71337
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71338
#include "CExprResolveH.ah"
 
71339
#endif
 
71340
namespace Puma {
 
71341
 
 
71342
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71343
class CT_SizeofExpr : public CT_Expression {
 
71344
#line 71345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71345
  friend class ::CCExprResolve;
 
71346
  friend class ::CExprResolve;
 
71347
  friend class ::WinIfExists;
 
71348
  friend class ::WinImportHandler;
 
71349
  friend class ::WinMacros;
 
71350
  friend class ::WinAsm;
 
71351
  friend class ::WinDeclSpecs;
 
71352
  friend class ::WinMemberExplSpec;
 
71353
  friend class ::WinTypeKeywords;
 
71354
  friend class ::WinFriend;
 
71355
  friend class ::ExtAC;
 
71356
  friend class ::ExtACBuilderCoupling;
 
71357
  friend class ::ExtACSyntaxCoupling;
 
71358
  friend class ::ExtACTree;
 
71359
  friend class ::ExtACKeywords;
 
71360
  friend class ::ExtGnu;
 
71361
  friend class ::PragmaOnceUnitState;
 
71362
  friend class ::PragmaOnce;
 
71363
  friend class ::CMatchSyntax;
 
71364
 
 
71365
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71366
 
 
71367
  CTree *sons[5]; // key, open, type, close, expr
 
71368
 
 
71369
public:
 
71370
  /** Constructor.
 
71371
   *  \param k The 'sizeof' keyword.
 
71372
   *  \param o Left parenthesis around the type name.
 
71373
   *  \param t The type from which to get the size.
 
71374
   *  \param c Right parenthesis around the type name. */
 
71375
  CT_SizeofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
71376
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
71377
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
71378
  }
 
71379
  /** Constructor.
 
71380
   *  \param k The 'sizeof' keyword.
 
71381
   *  \param e The expression from which to get the size. */
 
71382
  CT_SizeofExpr (CTree *k, CTree *e) {
 
71383
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
71384
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
71385
  }
 
71386
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
71387
  static const char *NodeId ();
 
71388
  /** Get the name of the node. Can be compared with NodeId(). */
 
71389
  const char *NodeName () const { return NodeId (); }
 
71390
  /** Get the number of sons. */
 
71391
  int Sons () const { return CTree::Sons (sons, 5); }
 
71392
  /** Get the n-th son.
 
71393
   *  \param n The index of the son.
 
71394
   *  \return The n-th son or NULL. */
 
71395
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
71396
  /** Replace a son.
 
71397
   *  \param old_son The son to replace.
 
71398
   *  \param new_son The new son. */
 
71399
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
71400
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
71401
  }
 
71402
  /** Get the expression. */
 
71403
  CTree *Expr () const { return sons[4]; }
 
71404
  /** Get the type name. */
 
71405
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
71406
   private:
 
71407
  typedef CT_SizeofExpr CCExprResolveExpr;
 
71408
 
 
71409
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
71410
 public :
 
71411
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
71412
  typedef CT_SizeofExpr CExprResolveExpr;
 
71413
 
 
71414
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
71415
 public :
 
71416
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
71417
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
71418
  const char *__attr_name (unsigned i) const {
 
71419
    static const char *names[] = { "sons" }; return names[i];
 
71420
  }
 
71421
  const void *__attr (unsigned __i) const {
 
71422
    switch (__i) { case 0: return &sons; default: return 0; }
 
71423
  }
 
71424
#line 1893 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71425
};
 
71426
 
 
71427
/** \class CT_IndexDesignator CTree.h Puma/CTree.h
 
71428
 *  Tree node representing an index designator.
 
71429
 *  Example: \code [1] \endcode */
 
71430
 
 
71431
#line 71432 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71432
} // closed Puma
 
71433
class CCExprResolve;
 
71434
class CExprResolve;
 
71435
class WinIfExists;
 
71436
class WinImportHandler;
 
71437
class WinMacros;
 
71438
class WinAsm;
 
71439
class WinDeclSpecs;
 
71440
class WinMemberExplSpec;
 
71441
class WinTypeKeywords;
 
71442
class WinFriend;
 
71443
class ExtAC;
 
71444
class ExtACBuilderCoupling;
 
71445
class ExtACSyntaxCoupling;
 
71446
class ExtACTree;
 
71447
class ExtACKeywords;
 
71448
class ExtGnu;
 
71449
class PragmaOnceUnitState;
 
71450
class PragmaOnce;
 
71451
class CMatchSyntax;
 
71452
namespace Puma {
 
71453
 
 
71454
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71455
 
 
71456
#line 71457 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71457
} // closed Puma
 
71458
 
 
71459
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71460
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71461
#include "CCExprResolveH.ah"
 
71462
#endif
 
71463
namespace Puma {
 
71464
 
 
71465
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71466
 
 
71467
#line 71468 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71468
} // closed Puma
 
71469
 
 
71470
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71471
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71472
#include "CExprResolveH.ah"
 
71473
#endif
 
71474
namespace Puma {
 
71475
 
 
71476
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71477
class CT_IndexDesignator : public CT_Expression {
 
71478
#line 71479 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71479
  friend class ::CCExprResolve;
 
71480
  friend class ::CExprResolve;
 
71481
  friend class ::WinIfExists;
 
71482
  friend class ::WinImportHandler;
 
71483
  friend class ::WinMacros;
 
71484
  friend class ::WinAsm;
 
71485
  friend class ::WinDeclSpecs;
 
71486
  friend class ::WinMemberExplSpec;
 
71487
  friend class ::WinTypeKeywords;
 
71488
  friend class ::WinFriend;
 
71489
  friend class ::ExtAC;
 
71490
  friend class ::ExtACBuilderCoupling;
 
71491
  friend class ::ExtACSyntaxCoupling;
 
71492
  friend class ::ExtACTree;
 
71493
  friend class ::ExtACKeywords;
 
71494
  friend class ::ExtGnu;
 
71495
  friend class ::PragmaOnceUnitState;
 
71496
  friend class ::PragmaOnce;
 
71497
  friend class ::CMatchSyntax;
 
71498
 
 
71499
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71500
 
 
71501
  CTree *sons[3]; // open, index, close
 
71502
 
 
71503
public:
 
71504
  /** Constructor.
 
71505
   *  \param o Left bracket of the index designator.
 
71506
   *  \param i The index expression.
 
71507
   *  \param c Right bracket of the index designator. */
 
71508
  CT_IndexDesignator (CTree *o, CTree *i, CTree *c) {
 
71509
    AddSon (sons[0], o); AddSon (sons[1], i); AddSon (sons[2], c);
 
71510
  }
 
71511
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
71512
  static const char *NodeId ();
 
71513
  /** Get the name of the node. Can be compared with NodeId(). */
 
71514
  const char *NodeName () const { return NodeId (); }
 
71515
  /** Get the number of sons. */
 
71516
  int Sons () const { return 3; }
 
71517
  /** Get the n-th son.
 
71518
   *  \param n The index of the son.
 
71519
   *  \return The n-th son or NULL. */
 
71520
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
71521
  /** Replace a son.
 
71522
   *  \param old_son The son to replace.
 
71523
   *  \param new_son The new son. */
 
71524
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
71525
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
71526
  }
 
71527
   private:
 
71528
  typedef CT_IndexDesignator CCExprResolveExpr;
 
71529
 
 
71530
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
71531
 public :
 
71532
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
71533
  typedef CT_IndexDesignator CExprResolveExpr;
 
71534
 
 
71535
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
71536
 public :
 
71537
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
71538
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
71539
  const char *__attr_name (unsigned i) const {
 
71540
    static const char *names[] = { "sons" }; return names[i];
 
71541
  }
 
71542
  const void *__attr (unsigned __i) const {
 
71543
    switch (__i) { case 0: return &sons; default: return 0; }
 
71544
  }
 
71545
#line 1925 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71546
};
 
71547
 
 
71548
/** \class CT_MembDesignator CTree.h Puma/CTree.h
 
71549
 *  Tree node representing a member designator.
 
71550
 *  Example: \code .a \endcode */
 
71551
 
 
71552
#line 71553 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71553
} // closed Puma
 
71554
class CCExprResolve;
 
71555
class CExprResolve;
 
71556
class WinIfExists;
 
71557
class WinImportHandler;
 
71558
class WinMacros;
 
71559
class WinAsm;
 
71560
class WinDeclSpecs;
 
71561
class WinMemberExplSpec;
 
71562
class WinTypeKeywords;
 
71563
class WinFriend;
 
71564
class ExtAC;
 
71565
class ExtACBuilderCoupling;
 
71566
class ExtACSyntaxCoupling;
 
71567
class ExtACTree;
 
71568
class ExtACKeywords;
 
71569
class ExtGnu;
 
71570
class PragmaOnceUnitState;
 
71571
class PragmaOnce;
 
71572
class CMatchSyntax;
 
71573
namespace Puma {
 
71574
 
 
71575
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71576
 
 
71577
#line 71578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71578
} // closed Puma
 
71579
 
 
71580
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71581
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
71582
#include "CCExprResolveH.ah"
 
71583
#endif
 
71584
namespace Puma {
 
71585
 
 
71586
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71587
 
 
71588
#line 71589 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71589
} // closed Puma
 
71590
 
 
71591
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71592
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
71593
#include "CExprResolveH.ah"
 
71594
#endif
 
71595
namespace Puma {
 
71596
 
 
71597
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71598
class CT_MembDesignator : public CT_Expression {
 
71599
#line 71600 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71600
  friend class ::CCExprResolve;
 
71601
  friend class ::CExprResolve;
 
71602
  friend class ::WinIfExists;
 
71603
  friend class ::WinImportHandler;
 
71604
  friend class ::WinMacros;
 
71605
  friend class ::WinAsm;
 
71606
  friend class ::WinDeclSpecs;
 
71607
  friend class ::WinMemberExplSpec;
 
71608
  friend class ::WinTypeKeywords;
 
71609
  friend class ::WinFriend;
 
71610
  friend class ::ExtAC;
 
71611
  friend class ::ExtACBuilderCoupling;
 
71612
  friend class ::ExtACSyntaxCoupling;
 
71613
  friend class ::ExtACTree;
 
71614
  friend class ::ExtACKeywords;
 
71615
  friend class ::ExtGnu;
 
71616
  friend class ::PragmaOnceUnitState;
 
71617
  friend class ::PragmaOnce;
 
71618
  friend class ::CMatchSyntax;
 
71619
 
 
71620
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71621
 
 
71622
  CTree *sons[2]; // dot, member
 
71623
 
 
71624
public:
 
71625
  /** Constructor.
 
71626
   *  \param d The dot before the member name.
 
71627
   *  \param m The member name. */
 
71628
  CT_MembDesignator (CTree *d, CTree *m) { AddSon (sons[0], d); AddSon (sons[1], m); }
 
71629
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
71630
  static const char *NodeId ();
 
71631
  /** Get the name of the node. Can be compared with NodeId(). */
 
71632
  const char *NodeName () const { return NodeId (); }
 
71633
  /** Get the number of sons. */
 
71634
  int Sons () const { return 2; }
 
71635
  /** Get the n-th son.
 
71636
   *  \param n The index of the son.
 
71637
   *  \return The n-th son or NULL. */
 
71638
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
71639
  /** Replace a son.
 
71640
   *  \param old_son The son to replace.
 
71641
   *  \param new_son The new son. */
 
71642
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
71643
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
71644
  }
 
71645
   private:
 
71646
  typedef CT_MembDesignator CCExprResolveExpr;
 
71647
 
 
71648
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
71649
 public :
 
71650
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
71651
  typedef CT_MembDesignator CExprResolveExpr;
 
71652
 
 
71653
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
71654
 public :
 
71655
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
71656
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
71657
  const char *__attr_name (unsigned i) const {
 
71658
    static const char *names[] = { "sons" }; return names[i];
 
71659
  }
 
71660
  const void *__attr (unsigned __i) const {
 
71661
    switch (__i) { case 0: return &sons; default: return 0; }
 
71662
  }
 
71663
#line 1954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71664
};
 
71665
 
 
71666
/** \class CT_DesignatorSeq CTree.h Puma/CTree.h
 
71667
 *  Tree node representing a designator sequence.
 
71668
 *  Example: \code .a.b.c \endcode */
 
71669
 
 
71670
#line 71671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71671
} // closed Puma
 
71672
class CCExprResolve;
 
71673
class CExprResolve;
 
71674
class WinIfExists;
 
71675
class WinImportHandler;
 
71676
class WinMacros;
 
71677
class WinAsm;
 
71678
class WinDeclSpecs;
 
71679
class WinMemberExplSpec;
 
71680
class WinTypeKeywords;
 
71681
class WinFriend;
 
71682
class ExtAC;
 
71683
class ExtACBuilderCoupling;
 
71684
class ExtACSyntaxCoupling;
 
71685
class ExtACTree;
 
71686
class ExtACKeywords;
 
71687
class ExtGnu;
 
71688
class PragmaOnceUnitState;
 
71689
class PragmaOnce;
 
71690
class CMatchSyntax;
 
71691
namespace Puma {
 
71692
 
 
71693
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71694
class CT_DesignatorSeq : public CT_List, public CSemValue {
 
71695
#line 71696 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71696
  friend class ::CCExprResolve;
 
71697
  friend class ::CExprResolve;
 
71698
  friend class ::WinIfExists;
 
71699
  friend class ::WinImportHandler;
 
71700
  friend class ::WinMacros;
 
71701
  friend class ::WinAsm;
 
71702
  friend class ::WinDeclSpecs;
 
71703
  friend class ::WinMemberExplSpec;
 
71704
  friend class ::WinTypeKeywords;
 
71705
  friend class ::WinFriend;
 
71706
  friend class ::ExtAC;
 
71707
  friend class ::ExtACBuilderCoupling;
 
71708
  friend class ::ExtACSyntaxCoupling;
 
71709
  friend class ::ExtACTree;
 
71710
  friend class ::ExtACKeywords;
 
71711
  friend class ::ExtGnu;
 
71712
  friend class ::PragmaOnceUnitState;
 
71713
  friend class ::PragmaOnce;
 
71714
  friend class ::CMatchSyntax;
 
71715
 
 
71716
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71717
 
 
71718
public:
 
71719
  /** Constructor.
 
71720
   *  \param size Initial number of designators. */
 
71721
  CT_DesignatorSeq (int size = 1) : CT_List (size, 2) {}
 
71722
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
71723
  static const char *NodeId ();
 
71724
  /** Get the name of the node. Can be compared with NodeId(). */
 
71725
  const char *NodeName () const { return NodeId (); }
 
71726
 
 
71727
  /** Get the type of the entity to initialize. */
 
71728
  CTypeInfo *Type () const { return type; }
 
71729
  /** Get the value of the entity to initialize. */
 
71730
  CExprValue *Value () const { return value; }
 
71731
  /** Get the semantic value object. */
 
71732
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
71733
public:
 
71734
  typedef AC::TLE __AttrTypes;
 
71735
  const char *__attr_name (unsigned i) const { return 0; }
 
71736
  const void *__attr (unsigned __i) const { return 0; }
 
71737
#line 1975 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71738
};
 
71739
 
 
71740
/*****************************************************************************/
 
71741
/*                                                                           */
 
71742
/*                         Declaration specifiers                            */
 
71743
/*                                                                           */
 
71744
/*****************************************************************************/
 
71745
 
 
71746
/** \class CT_DeclSpec CTree.h Puma/CTree.h
 
71747
 *  Base class for all tree nodes representing declaration specifiers. */
 
71748
 
 
71749
#line 71750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71750
} // closed Puma
 
71751
class CCExprResolve;
 
71752
class CExprResolve;
 
71753
class WinIfExists;
 
71754
class WinImportHandler;
 
71755
class WinMacros;
 
71756
class WinAsm;
 
71757
class WinDeclSpecs;
 
71758
class WinMemberExplSpec;
 
71759
class WinTypeKeywords;
 
71760
class WinFriend;
 
71761
class ExtAC;
 
71762
class ExtACBuilderCoupling;
 
71763
class ExtACSyntaxCoupling;
 
71764
class ExtACTree;
 
71765
class ExtACKeywords;
 
71766
class ExtGnu;
 
71767
class PragmaOnceUnitState;
 
71768
class PragmaOnce;
 
71769
class CMatchSyntax;
 
71770
namespace Puma {
 
71771
 
 
71772
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71773
class CT_DeclSpec : public CTree {
 
71774
#line 71775 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71775
  friend class ::CCExprResolve;
 
71776
  friend class ::CExprResolve;
 
71777
  friend class ::WinIfExists;
 
71778
  friend class ::WinImportHandler;
 
71779
  friend class ::WinMacros;
 
71780
  friend class ::WinAsm;
 
71781
  friend class ::WinDeclSpecs;
 
71782
  friend class ::WinMemberExplSpec;
 
71783
  friend class ::WinTypeKeywords;
 
71784
  friend class ::WinFriend;
 
71785
  friend class ::ExtAC;
 
71786
  friend class ::ExtACBuilderCoupling;
 
71787
  friend class ::ExtACSyntaxCoupling;
 
71788
  friend class ::ExtACTree;
 
71789
  friend class ::ExtACKeywords;
 
71790
  friend class ::ExtGnu;
 
71791
  friend class ::PragmaOnceUnitState;
 
71792
  friend class ::PragmaOnce;
 
71793
  friend class ::CMatchSyntax;
 
71794
 
 
71795
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71796
 
 
71797
protected:
 
71798
  /** Constructor. */
 
71799
  CT_DeclSpec () {}
 
71800
public:
 
71801
  typedef AC::TLE __AttrTypes;
 
71802
  const char *__attr_name (unsigned i) const { return 0; }
 
71803
  const void *__attr (unsigned __i) const { return 0; }
 
71804
#line 1989 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71805
};
 
71806
 
 
71807
/** \class CT_PrimDeclSpec CTree.h Puma/CTree.h
 
71808
 *  Tree node representing a primitive declaration specifier. */
 
71809
 
 
71810
#line 71811 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71811
} // closed Puma
 
71812
class CCExprResolve;
 
71813
class CExprResolve;
 
71814
class WinIfExists;
 
71815
class WinImportHandler;
 
71816
class WinMacros;
 
71817
class WinAsm;
 
71818
class WinDeclSpecs;
 
71819
class WinMemberExplSpec;
 
71820
class WinTypeKeywords;
 
71821
class WinFriend;
 
71822
class ExtAC;
 
71823
class ExtACBuilderCoupling;
 
71824
class ExtACSyntaxCoupling;
 
71825
class ExtACTree;
 
71826
class ExtACKeywords;
 
71827
class ExtGnu;
 
71828
class PragmaOnceUnitState;
 
71829
class PragmaOnce;
 
71830
class CMatchSyntax;
 
71831
namespace Puma {
 
71832
 
 
71833
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71834
class CT_PrimDeclSpec : public CT_DeclSpec {
 
71835
#line 71836 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71836
  friend class ::CCExprResolve;
 
71837
  friend class ::CExprResolve;
 
71838
  friend class ::WinIfExists;
 
71839
  friend class ::WinImportHandler;
 
71840
  friend class ::WinMacros;
 
71841
  friend class ::WinAsm;
 
71842
  friend class ::WinDeclSpecs;
 
71843
  friend class ::WinMemberExplSpec;
 
71844
  friend class ::WinTypeKeywords;
 
71845
  friend class ::WinFriend;
 
71846
  friend class ::ExtAC;
 
71847
  friend class ::ExtACBuilderCoupling;
 
71848
  friend class ::ExtACSyntaxCoupling;
 
71849
  friend class ::ExtACTree;
 
71850
  friend class ::ExtACKeywords;
 
71851
  friend class ::ExtGnu;
 
71852
  friend class ::PragmaOnceUnitState;
 
71853
  friend class ::PragmaOnce;
 
71854
  friend class ::CMatchSyntax;
 
71855
 
 
71856
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71857
 
 
71858
public:
 
71859
  /** Declaration specifier types. */
 
71860
  enum Type { 
 
71861
    PDS_FRIEND,    /** friend */
 
71862
    PDS_TYPEDEF,   /** typedef */
 
71863
    PDS_AUTO,      /** auto */
 
71864
    PDS_REGISTER,  /** register */
 
71865
    PDS_STATIC,    /** static */
 
71866
    PDS_EXTERN,    /** extern */
 
71867
    PDS_MUTABLE,   /** mutable */
 
71868
    PDS_INLINE,    /** inline */
 
71869
    PDS_VIRTUAL,   /** virtual */
 
71870
    PDS_EXPLICIT,  /** explicit */
 
71871
    PDS_CONST,     /** const */
 
71872
    PDS_VOLATILE,  /** volatile */
 
71873
    PDS_RESTRICT,  /** restrict */
 
71874
    PDS_CHAR,      /** char */
 
71875
    PDS_WCHAR_T,   /** wchar_t */
 
71876
    PDS_BOOL,      /** bool */
 
71877
    PDS_SHORT,     /** short */
 
71878
    PDS_INT,       /** int */
 
71879
    PDS_LONG,      /** long */
 
71880
    PDS_SIGNED,    /** signed */
 
71881
    PDS_UNSIGNED,  /** unsigned */
 
71882
    PDS_FLOAT,     /** float */
 
71883
    PDS_DOUBLE,    /** double */
 
71884
    PDS_VOID,      /** void */
 
71885
    // AspectC++ specific type specifier
 
71886
    PDS_UNKNOWN_T, /** unknown_t */
 
71887
    // Win specific declaration specifiers
 
71888
    PDS_CDECL,     /** __cdecl */
 
71889
    PDS_STDCALL,   /** __stdcall */
 
71890
    PDS_FASTCALL,  /** __fastcall */
 
71891
    PDS_INT64,     /** __int64 */
 
71892
    PDS_UNKNOWN,   /** Unknown declaration specifier. */
 
71893
    PDS_NUM        /** Number of declaration specifier types. */
 
71894
  };
 
71895
 
 
71896
private:
 
71897
  Type _type;
 
71898
  CTree *_token; // has to be a CT_Token
 
71899
 
 
71900
  void determine_type ();
 
71901
 
 
71902
public:
 
71903
  /** Constructor.
 
71904
   *  \param t The token containing the declaration specifier. */
 
71905
  CT_PrimDeclSpec (CT_Token *t) { AddSon (_token, (CTree*)t); determine_type (); }
 
71906
  /** Constructor.
 
71907
   *  \param t The declaration specifier type. */
 
71908
  CT_PrimDeclSpec (Type t) : _token (0) { _type = t; }
 
71909
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
71910
  static const char *NodeId ();
 
71911
  /** Get the name of the node. Can be compared with NodeId(). */
 
71912
  const char *NodeName () const { return NodeId (); }
 
71913
  /** Get the number of sons. */
 
71914
  int Sons () const { return _token ? 1 : 0; }
 
71915
  /** Get the n-th son.
 
71916
   *  \param n The index of the son.
 
71917
   *  \return The n-th son or NULL. */
 
71918
  CTree *Son (int n) const 
 
71919
   { return (n == 0) ? _token : (CTree*)0; }
 
71920
  /** Get the textual representation of the declaration specifier.
 
71921
   *  \return The string representation or " ". */
 
71922
  const char *SpecText () const 
 
71923
   { return _token ? _token->token ()->text () : " "; }
 
71924
  /** Get the declaration specifier type. */
 
71925
  Type SpecType () const { return _type; }
 
71926
  /** Number of declaration specifier types. */
 
71927
  static const int NumTypes = PDS_NUM;
 
71928
  /** Replace a son.
 
71929
   *  \param old_son The son to replace.
 
71930
   *  \param new_son The new son. */
 
71931
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
71932
    CTree::ReplaceSon (_token, (CTree*)old_son, (CTree*)new_son);
 
71933
    determine_type ();
 
71934
  }
 
71935
public:
 
71936
  typedef AC::TL<Puma::CT_PrimDeclSpec::Type,AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
71937
  const char *__attr_name (unsigned i) const {
 
71938
    static const char *names[] = { "_type", "_token" }; return names[i];
 
71939
  }
 
71940
  const void *__attr (unsigned __i) const {
 
71941
    switch (__i) { case 31: return &_type; case 32: return &_token; default: return 0; }
 
71942
  }
 
71943
#line 2071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71944
};
 
71945
 
 
71946
/** \class CT_NamedType CTree.h Puma/CTree.h
 
71947
 *  Tree node representing a named type.
 
71948
 *  Example: \code (int*)a \endcode where int* is a 
 
71949
 *  type with a generated name. */
 
71950
 
 
71951
#line 71952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71952
} // closed Puma
 
71953
class CCExprResolve;
 
71954
class CExprResolve;
 
71955
class WinIfExists;
 
71956
class WinImportHandler;
 
71957
class WinMacros;
 
71958
class WinAsm;
 
71959
class WinDeclSpecs;
 
71960
class WinMemberExplSpec;
 
71961
class WinTypeKeywords;
 
71962
class WinFriend;
 
71963
class ExtAC;
 
71964
class ExtACBuilderCoupling;
 
71965
class ExtACSyntaxCoupling;
 
71966
class ExtACTree;
 
71967
class ExtACKeywords;
 
71968
class ExtGnu;
 
71969
class PragmaOnceUnitState;
 
71970
class PragmaOnce;
 
71971
class CMatchSyntax;
 
71972
namespace Puma {
 
71973
 
 
71974
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71975
class CT_NamedType : public CT_DeclSpec, public CSemObject {
 
71976
#line 71977 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
71977
  friend class ::CCExprResolve;
 
71978
  friend class ::CExprResolve;
 
71979
  friend class ::WinIfExists;
 
71980
  friend class ::WinImportHandler;
 
71981
  friend class ::WinMacros;
 
71982
  friend class ::WinAsm;
 
71983
  friend class ::WinDeclSpecs;
 
71984
  friend class ::WinMemberExplSpec;
 
71985
  friend class ::WinTypeKeywords;
 
71986
  friend class ::WinFriend;
 
71987
  friend class ::ExtAC;
 
71988
  friend class ::ExtACBuilderCoupling;
 
71989
  friend class ::ExtACSyntaxCoupling;
 
71990
  friend class ::ExtACTree;
 
71991
  friend class ::ExtACKeywords;
 
71992
  friend class ::ExtGnu;
 
71993
  friend class ::PragmaOnceUnitState;
 
71994
  friend class ::PragmaOnce;
 
71995
  friend class ::CMatchSyntax;
 
71996
 
 
71997
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
71998
 
 
71999
  CTree *sons[2]; // declspecs, declarator
 
72000
 
 
72001
public:
 
72002
  /** Constructor.
 
72003
   *  \param dss The declaration specifier sequence of the type.
 
72004
   *  \param d The type declarator. */
 
72005
  CT_NamedType (CTree *dss, CTree *d) { AddSon (sons[0], dss); AddSon (sons[1], d); }
 
72006
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72007
  static const char *NodeId ();
 
72008
  /** Get the name of the node. Can be compared with NodeId(). */
 
72009
  const char *NodeName () const { return NodeId (); }
 
72010
  /** Get the number of sons. */
 
72011
  int Sons () const { return CTree::Sons (sons, 2); }
 
72012
  /** Get the n-th son.
 
72013
   *  \param n The index of the son.
 
72014
   *  \return The n-th son or NULL. */
 
72015
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
72016
  /** Get the declarator. */
 
72017
  CTree *Declarator () const { return sons[1]; }
 
72018
  /** Replace a son.
 
72019
   *  \param old_son The son to replace.
 
72020
   *  \param new_son The new son. */
 
72021
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
72022
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
72023
  }
 
72024
  /** Get the semantic information about the created temporary object. */
 
72025
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
72026
public:
 
72027
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
72028
  const char *__attr_name (unsigned i) const {
 
72029
    static const char *names[] = { "sons" }; return names[i];
 
72030
  }
 
72031
  const void *__attr (unsigned __i) const {
 
72032
    switch (__i) { case 0: return &sons; default: return 0; }
 
72033
  }
 
72034
#line 2105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72035
};
 
72036
      
 
72037
/** \class CT_ClassSpec CTree.h Puma/CTree.h
 
72038
 *  Tree node representing a class specifier.
 
72039
 *  Example: \code class X \endcode */
 
72040
 
 
72041
#line 72042 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72042
} // closed Puma
 
72043
class CCExprResolve;
 
72044
class CExprResolve;
 
72045
class WinIfExists;
 
72046
class WinImportHandler;
 
72047
class WinMacros;
 
72048
class WinAsm;
 
72049
class WinDeclSpecs;
 
72050
class WinMemberExplSpec;
 
72051
class WinTypeKeywords;
 
72052
class WinFriend;
 
72053
class ExtAC;
 
72054
class ExtACBuilderCoupling;
 
72055
class ExtACSyntaxCoupling;
 
72056
class ExtACTree;
 
72057
class ExtACKeywords;
 
72058
class ExtGnu;
 
72059
class PragmaOnceUnitState;
 
72060
class PragmaOnce;
 
72061
class CMatchSyntax;
 
72062
namespace Puma {
 
72063
 
 
72064
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72065
class CT_ClassSpec : public CT_DeclSpec, public CSemObject {
 
72066
#line 72067 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72067
  friend class ::CCExprResolve;
 
72068
  friend class ::CExprResolve;
 
72069
  friend class ::WinIfExists;
 
72070
  friend class ::WinImportHandler;
 
72071
  friend class ::WinMacros;
 
72072
  friend class ::WinAsm;
 
72073
  friend class ::WinDeclSpecs;
 
72074
  friend class ::WinMemberExplSpec;
 
72075
  friend class ::WinTypeKeywords;
 
72076
  friend class ::WinFriend;
 
72077
  friend class ::ExtAC;
 
72078
  friend class ::ExtACBuilderCoupling;
 
72079
  friend class ::ExtACSyntaxCoupling;
 
72080
  friend class ::ExtACTree;
 
72081
  friend class ::ExtACKeywords;
 
72082
  friend class ::ExtGnu;
 
72083
  friend class ::PragmaOnceUnitState;
 
72084
  friend class ::PragmaOnce;
 
72085
  friend class ::CMatchSyntax;
 
72086
 
 
72087
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72088
 
 
72089
  CTree *sons[2]; // key, name
 
72090
  
 
72091
public:
 
72092
  /** Constructor.
 
72093
   *  \param k The 'class' or 'struct' keyword.
 
72094
   *  \param n The class name. */
 
72095
  CT_ClassSpec (CTree *k, CTree *n) { AddSon (sons[0], k); AddSon (sons[1], n); }
 
72096
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72097
  static const char *NodeId ();
 
72098
  /** Get the name of the node. Can be compared with NodeId(). */
 
72099
  const char *NodeName () const { return NodeId (); }
 
72100
  /** Get the number of sons. */
 
72101
  int Sons () const { return 2; }
 
72102
  /** Get the n-th son.
 
72103
   *  \param n The index of the son.
 
72104
   *  \return The n-th son or NULL. */
 
72105
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
72106
  /** Get the class name. */
 
72107
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
72108
  /** Get the semantic information about the class. */
 
72109
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
72110
  /** Replace a son.
 
72111
   *  \param old_son The son to replace.
 
72112
   *  \param new_son The new son. */
 
72113
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
72114
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
72115
  }
 
72116
public:
 
72117
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
72118
  const char *__attr_name (unsigned i) const {
 
72119
    static const char *names[] = { "sons" }; return names[i];
 
72120
  }
 
72121
  const void *__attr (unsigned __i) const {
 
72122
    switch (__i) { case 0: return &sons; default: return 0; }
 
72123
  }
 
72124
#line 2138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72125
};
 
72126
 
 
72127
/** \class CT_UnionSpec CTree.h Puma/CTree.h
 
72128
 *  Tree node representing a union specifier.
 
72129
 *  Example: \code union X \endcode */
 
72130
 
 
72131
#line 72132 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72132
} // closed Puma
 
72133
class CCExprResolve;
 
72134
class CExprResolve;
 
72135
class WinIfExists;
 
72136
class WinImportHandler;
 
72137
class WinMacros;
 
72138
class WinAsm;
 
72139
class WinDeclSpecs;
 
72140
class WinMemberExplSpec;
 
72141
class WinTypeKeywords;
 
72142
class WinFriend;
 
72143
class ExtAC;
 
72144
class ExtACBuilderCoupling;
 
72145
class ExtACSyntaxCoupling;
 
72146
class ExtACTree;
 
72147
class ExtACKeywords;
 
72148
class ExtGnu;
 
72149
class PragmaOnceUnitState;
 
72150
class PragmaOnce;
 
72151
class CMatchSyntax;
 
72152
namespace Puma {
 
72153
 
 
72154
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72155
class CT_UnionSpec : public CT_ClassSpec {
 
72156
#line 72157 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72157
  friend class ::CCExprResolve;
 
72158
  friend class ::CExprResolve;
 
72159
  friend class ::WinIfExists;
 
72160
  friend class ::WinImportHandler;
 
72161
  friend class ::WinMacros;
 
72162
  friend class ::WinAsm;
 
72163
  friend class ::WinDeclSpecs;
 
72164
  friend class ::WinMemberExplSpec;
 
72165
  friend class ::WinTypeKeywords;
 
72166
  friend class ::WinFriend;
 
72167
  friend class ::ExtAC;
 
72168
  friend class ::ExtACBuilderCoupling;
 
72169
  friend class ::ExtACSyntaxCoupling;
 
72170
  friend class ::ExtACTree;
 
72171
  friend class ::ExtACKeywords;
 
72172
  friend class ::ExtGnu;
 
72173
  friend class ::PragmaOnceUnitState;
 
72174
  friend class ::PragmaOnce;
 
72175
  friend class ::CMatchSyntax;
 
72176
 
 
72177
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72178
 
 
72179
public:
 
72180
  /** Constructor.
 
72181
   *  \param k The 'union' keyword.
 
72182
   *  \param n The name of the union. */
 
72183
  CT_UnionSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
72184
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72185
  static const char *NodeId ();
 
72186
  /** Get the name of the node. Can be compared with NodeId(). */
 
72187
  const char *NodeName () const { return NodeId (); }
 
72188
public:
 
72189
  typedef AC::TLE __AttrTypes;
 
72190
  const char *__attr_name (unsigned i) const { return 0; }
 
72191
  const void *__attr (unsigned __i) const { return 0; }
 
72192
#line 2153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72193
};
 
72194
 
 
72195
/** \class CT_EnumSpec CTree.h Puma/CTree.h
 
72196
 *  Tree node representing an enumeration specifier.
 
72197
 *  Example: \code enum X \endcode */
 
72198
 
 
72199
#line 72200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72200
} // closed Puma
 
72201
class CCExprResolve;
 
72202
class CExprResolve;
 
72203
class WinIfExists;
 
72204
class WinImportHandler;
 
72205
class WinMacros;
 
72206
class WinAsm;
 
72207
class WinDeclSpecs;
 
72208
class WinMemberExplSpec;
 
72209
class WinTypeKeywords;
 
72210
class WinFriend;
 
72211
class ExtAC;
 
72212
class ExtACBuilderCoupling;
 
72213
class ExtACSyntaxCoupling;
 
72214
class ExtACTree;
 
72215
class ExtACKeywords;
 
72216
class ExtGnu;
 
72217
class PragmaOnceUnitState;
 
72218
class PragmaOnce;
 
72219
class CMatchSyntax;
 
72220
namespace Puma {
 
72221
 
 
72222
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72223
class CT_EnumSpec : public CT_ClassSpec {
 
72224
#line 72225 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72225
  friend class ::CCExprResolve;
 
72226
  friend class ::CExprResolve;
 
72227
  friend class ::WinIfExists;
 
72228
  friend class ::WinImportHandler;
 
72229
  friend class ::WinMacros;
 
72230
  friend class ::WinAsm;
 
72231
  friend class ::WinDeclSpecs;
 
72232
  friend class ::WinMemberExplSpec;
 
72233
  friend class ::WinTypeKeywords;
 
72234
  friend class ::WinFriend;
 
72235
  friend class ::ExtAC;
 
72236
  friend class ::ExtACBuilderCoupling;
 
72237
  friend class ::ExtACSyntaxCoupling;
 
72238
  friend class ::ExtACTree;
 
72239
  friend class ::ExtACKeywords;
 
72240
  friend class ::ExtGnu;
 
72241
  friend class ::PragmaOnceUnitState;
 
72242
  friend class ::PragmaOnce;
 
72243
  friend class ::CMatchSyntax;
 
72244
 
 
72245
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72246
 
 
72247
public:
 
72248
  /** Constructor.
 
72249
   *  \param k The 'enum' keyword. 
 
72250
   *  \param n The name of the enumeration. */
 
72251
  CT_EnumSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
72252
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72253
  static const char *NodeId ();
 
72254
  /** Get the name of the node. Can be compared with NodeId(). */
 
72255
  const char *NodeName () const { return NodeId (); }
 
72256
public:
 
72257
  typedef AC::TLE __AttrTypes;
 
72258
  const char *__attr_name (unsigned i) const { return 0; }
 
72259
  const void *__attr (unsigned __i) const { return 0; }
 
72260
#line 2168 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72261
};
 
72262
 
 
72263
/** \class CT_ExceptionSpec CTree.h Puma/CTree.h
 
72264
 *  Tree node representing an exception specifier.
 
72265
 *  Example: \code throw(std::exception) \endcode */
 
72266
 
 
72267
#line 72268 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72268
} // closed Puma
 
72269
class CCExprResolve;
 
72270
class CExprResolve;
 
72271
class WinIfExists;
 
72272
class WinImportHandler;
 
72273
class WinMacros;
 
72274
class WinAsm;
 
72275
class WinDeclSpecs;
 
72276
class WinMemberExplSpec;
 
72277
class WinTypeKeywords;
 
72278
class WinFriend;
 
72279
class ExtAC;
 
72280
class ExtACBuilderCoupling;
 
72281
class ExtACSyntaxCoupling;
 
72282
class ExtACTree;
 
72283
class ExtACKeywords;
 
72284
class ExtGnu;
 
72285
class PragmaOnceUnitState;
 
72286
class PragmaOnce;
 
72287
class CMatchSyntax;
 
72288
namespace Puma {
 
72289
 
 
72290
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72291
class CT_ExceptionSpec : public CT_DeclSpec {
 
72292
#line 72293 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72293
  friend class ::CCExprResolve;
 
72294
  friend class ::CExprResolve;
 
72295
  friend class ::WinIfExists;
 
72296
  friend class ::WinImportHandler;
 
72297
  friend class ::WinMacros;
 
72298
  friend class ::WinAsm;
 
72299
  friend class ::WinDeclSpecs;
 
72300
  friend class ::WinMemberExplSpec;
 
72301
  friend class ::WinTypeKeywords;
 
72302
  friend class ::WinFriend;
 
72303
  friend class ::ExtAC;
 
72304
  friend class ::ExtACBuilderCoupling;
 
72305
  friend class ::ExtACSyntaxCoupling;
 
72306
  friend class ::ExtACTree;
 
72307
  friend class ::ExtACKeywords;
 
72308
  friend class ::ExtGnu;
 
72309
  friend class ::PragmaOnceUnitState;
 
72310
  friend class ::PragmaOnce;
 
72311
  friend class ::CMatchSyntax;
 
72312
 
 
72313
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72314
 
 
72315
  CTree *sons[2]; // throw, type_id_list
 
72316
  
 
72317
public:
 
72318
  /** Constructor.
 
72319
   *  \param k The 'throw' keyword.
 
72320
   *  \param l The type list for the exception type to throw. */
 
72321
  CT_ExceptionSpec (CTree *k, CTree *l) { AddSon (sons[0], k); AddSon (sons[1], l); }
 
72322
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72323
  static const char *NodeId ();
 
72324
  /** Get the name of the node. Can be compared with NodeId(). */
 
72325
  const char *NodeName () const { return NodeId (); }
 
72326
  /** Get the number of sons. */
 
72327
  int Sons () const { return 2; }
 
72328
  /** Get the n-th son.
 
72329
   *  \param n The index of the son.
 
72330
   *  \return The n-th son or NULL. */
 
72331
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
72332
  /** Get the exception type list. */
 
72333
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
72334
  /** Replace a son.
 
72335
   *  \param old_son The son to replace.
 
72336
   *  \param new_son The new son. */
 
72337
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
72338
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
72339
  }
 
72340
public:
 
72341
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
72342
  const char *__attr_name (unsigned i) const {
 
72343
    static const char *names[] = { "sons" }; return names[i];
 
72344
  }
 
72345
  const void *__attr (unsigned __i) const {
 
72346
    switch (__i) { case 0: return &sons; default: return 0; }
 
72347
  }
 
72348
#line 2199 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72349
};
 
72350
 
 
72351
/*****************************************************************************/
 
72352
/*                                                                           */
 
72353
/*                              Declarations                                 */
 
72354
/*                                                                           */
 
72355
/*****************************************************************************/
 
72356
 
 
72357
/** \class CT_Decl CTree.h Puma/CTree.h
 
72358
 *  Base class for all tree nodes representing declarations. */
 
72359
 
 
72360
#line 72361 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72361
} // closed Puma
 
72362
class CCExprResolve;
 
72363
class CExprResolve;
 
72364
class WinIfExists;
 
72365
class WinImportHandler;
 
72366
class WinMacros;
 
72367
class WinAsm;
 
72368
class WinDeclSpecs;
 
72369
class WinMemberExplSpec;
 
72370
class WinTypeKeywords;
 
72371
class WinFriend;
 
72372
class ExtAC;
 
72373
class ExtACBuilderCoupling;
 
72374
class ExtACSyntaxCoupling;
 
72375
class ExtACTree;
 
72376
class ExtACKeywords;
 
72377
class ExtGnu;
 
72378
class PragmaOnceUnitState;
 
72379
class PragmaOnce;
 
72380
class CMatchSyntax;
 
72381
namespace Puma {
 
72382
 
 
72383
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72384
class CT_Decl : public CTree {
 
72385
#line 72386 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72386
  friend class ::CCExprResolve;
 
72387
  friend class ::CExprResolve;
 
72388
  friend class ::WinIfExists;
 
72389
  friend class ::WinImportHandler;
 
72390
  friend class ::WinMacros;
 
72391
  friend class ::WinAsm;
 
72392
  friend class ::WinDeclSpecs;
 
72393
  friend class ::WinMemberExplSpec;
 
72394
  friend class ::WinTypeKeywords;
 
72395
  friend class ::WinFriend;
 
72396
  friend class ::ExtAC;
 
72397
  friend class ::ExtACBuilderCoupling;
 
72398
  friend class ::ExtACSyntaxCoupling;
 
72399
  friend class ::ExtACTree;
 
72400
  friend class ::ExtACKeywords;
 
72401
  friend class ::ExtGnu;
 
72402
  friend class ::PragmaOnceUnitState;
 
72403
  friend class ::PragmaOnce;
 
72404
  friend class ::CMatchSyntax;
 
72405
 
 
72406
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72407
 
 
72408
  CT_LinkageSpec *_linkage;
 
72409
  
 
72410
protected:
 
72411
  /** Constructor. */
 
72412
  CT_Decl () : _linkage (0) {}
 
72413
  
 
72414
public:
 
72415
  /** Set the linkage of the declared entity.
 
72416
   *  \param l The linkage specifiers. */
 
72417
  void Linkage (CT_LinkageSpec *l) { _linkage = l; }
 
72418
  /** Get the linkage specifiers. */
 
72419
  CT_LinkageSpec *Linkage () const { return _linkage; }
 
72420
  /** Get this. */
 
72421
  virtual CT_Decl *IsDeclaration () { return this; }
 
72422
public:
 
72423
  typedef AC::TL<Puma::CT_LinkageSpec *,AC::TLE > __AttrTypes;
 
72424
  const char *__attr_name (unsigned i) const {
 
72425
    static const char *names[] = { "_linkage" }; return names[i];
 
72426
  }
 
72427
  const void *__attr (unsigned __i) const {
 
72428
    switch (__i) { case 0: return &_linkage; default: return 0; }
 
72429
  }
 
72430
#line 2224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72431
};
 
72432
 
 
72433
/** \class CT_Program CTree.h Puma/CTree.h
 
72434
 *  Root node of C/C++ syntax trees. */
 
72435
 
 
72436
#line 72437 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72437
} // closed Puma
 
72438
class CCExprResolve;
 
72439
class CExprResolve;
 
72440
class WinIfExists;
 
72441
class WinImportHandler;
 
72442
class WinMacros;
 
72443
class WinAsm;
 
72444
class WinDeclSpecs;
 
72445
class WinMemberExplSpec;
 
72446
class WinTypeKeywords;
 
72447
class WinFriend;
 
72448
class ExtAC;
 
72449
class ExtACBuilderCoupling;
 
72450
class ExtACSyntaxCoupling;
 
72451
class ExtACTree;
 
72452
class ExtACKeywords;
 
72453
class ExtGnu;
 
72454
class PragmaOnceUnitState;
 
72455
class PragmaOnce;
 
72456
class CMatchSyntax;
 
72457
namespace Puma {
 
72458
 
 
72459
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72460
class CT_Program : public CT_DeclList, public CSemScope {
 
72461
#line 72462 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72462
  friend class ::CCExprResolve;
 
72463
  friend class ::CExprResolve;
 
72464
  friend class ::WinIfExists;
 
72465
  friend class ::WinImportHandler;
 
72466
  friend class ::WinMacros;
 
72467
  friend class ::WinAsm;
 
72468
  friend class ::WinDeclSpecs;
 
72469
  friend class ::WinMemberExplSpec;
 
72470
  friend class ::WinTypeKeywords;
 
72471
  friend class ::WinFriend;
 
72472
  friend class ::ExtAC;
 
72473
  friend class ::ExtACBuilderCoupling;
 
72474
  friend class ::ExtACSyntaxCoupling;
 
72475
  friend class ::ExtACTree;
 
72476
  friend class ::ExtACKeywords;
 
72477
  friend class ::ExtGnu;
 
72478
  friend class ::PragmaOnceUnitState;
 
72479
  friend class ::PragmaOnce;
 
72480
  friend class ::CMatchSyntax;
 
72481
 
 
72482
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72483
 
 
72484
public:
 
72485
  /** Constructor.
 
72486
   *  \param size The initial number of declarations in the program.
 
72487
   *  \param incr The initial increment count. */
 
72488
  CT_Program (int size = 20, int incr = 20) : CT_DeclList (size, incr) {}
 
72489
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72490
  static const char *NodeId ();
 
72491
  /** Get the name of the node. Can be compared with NodeId(). */
 
72492
  const char *NodeName () const { return NodeId (); }
 
72493
  /** Get the top scope. */
 
72494
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
72495
public:
 
72496
  typedef AC::TLE __AttrTypes;
 
72497
  const char *__attr_name (unsigned i) const { return 0; }
 
72498
  const void *__attr (unsigned __i) const { return 0; }
 
72499
#line 2240 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72500
};
 
72501
   
 
72502
/** \class CT_ObjDecl CTree.h Puma/CTree.h
 
72503
 *  Tree node representing an object declaration.
 
72504
 *  Example: \code int *i \endcode */
 
72505
 
 
72506
#line 72507 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72507
} // closed Puma
 
72508
class CCExprResolve;
 
72509
class CExprResolve;
 
72510
class WinIfExists;
 
72511
class WinImportHandler;
 
72512
class WinMacros;
 
72513
class WinAsm;
 
72514
class WinDeclSpecs;
 
72515
class WinMemberExplSpec;
 
72516
class WinTypeKeywords;
 
72517
class WinFriend;
 
72518
class ExtAC;
 
72519
class ExtACBuilderCoupling;
 
72520
class ExtACSyntaxCoupling;
 
72521
class ExtACTree;
 
72522
class ExtACKeywords;
 
72523
class ExtGnu;
 
72524
class PragmaOnceUnitState;
 
72525
class PragmaOnce;
 
72526
class CMatchSyntax;
 
72527
namespace Puma {
 
72528
 
 
72529
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72530
class CT_ObjDecl : public CT_Decl {
 
72531
#line 72532 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72532
  friend class ::CCExprResolve;
 
72533
  friend class ::CExprResolve;
 
72534
  friend class ::WinIfExists;
 
72535
  friend class ::WinImportHandler;
 
72536
  friend class ::WinMacros;
 
72537
  friend class ::WinAsm;
 
72538
  friend class ::WinDeclSpecs;
 
72539
  friend class ::WinMemberExplSpec;
 
72540
  friend class ::WinTypeKeywords;
 
72541
  friend class ::WinFriend;
 
72542
  friend class ::ExtAC;
 
72543
  friend class ::ExtACBuilderCoupling;
 
72544
  friend class ::ExtACSyntaxCoupling;
 
72545
  friend class ::ExtACTree;
 
72546
  friend class ::ExtACKeywords;
 
72547
  friend class ::ExtGnu;
 
72548
  friend class ::PragmaOnceUnitState;
 
72549
  friend class ::PragmaOnce;
 
72550
  friend class ::CMatchSyntax;
 
72551
 
 
72552
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72553
 
 
72554
  CTree *sons[3]; // declspecs, declarators, colon
 
72555
 
 
72556
public:
 
72557
  /** Constructor.
 
72558
   *  \param dsl The declaration specifier sequence.
 
72559
   *  \param dl The declarator list.
 
72560
   *  \param c Optional colon. */
 
72561
  CT_ObjDecl (CTree *dsl, CTree *dl, CTree *c) {
 
72562
    AddSon (sons[0], dsl); AddSon (sons[1], dl); AddSon (sons[2], c);
 
72563
  }
 
72564
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72565
  static const char *NodeId ();
 
72566
  /** Get the name of the node. Can be compared with NodeId(). */
 
72567
  const char *NodeName () const { return NodeId (); }
 
72568
  /** Get the number of sons. */
 
72569
  int Sons () const { return 3; }
 
72570
  /** Get the n-th son.
 
72571
   *  \param n The index of the son.
 
72572
   *  \return The n-th son or NULL. */
 
72573
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
72574
  /** Get the declaration specifier sequence. */
 
72575
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
72576
  /** Get the declarator list. */
 
72577
  CT_DeclaratorList *Declarators () const { return (CT_DeclaratorList*)sons[1]; }
 
72578
  /** Replace a son.
 
72579
   *  \param old_son The son to replace.
 
72580
   *  \param new_son The new son. */
 
72581
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
72582
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
72583
  }
 
72584
public:
 
72585
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
72586
  const char *__attr_name (unsigned i) const {
 
72587
    static const char *names[] = { "sons" }; return names[i];
 
72588
  }
 
72589
  const void *__attr (unsigned __i) const {
 
72590
    switch (__i) { case 0: return &sons; default: return 0; }
 
72591
  }
 
72592
#line 2276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72593
};
 
72594
 
 
72595
/** \class CT_TemplateDecl CTree.h Puma/CTree.h
 
72596
 *  Tree node representing a template declaration. */
 
72597
 
 
72598
#line 72599 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72599
} // closed Puma
 
72600
class CCExprResolve;
 
72601
class CExprResolve;
 
72602
class WinIfExists;
 
72603
class WinImportHandler;
 
72604
class WinMacros;
 
72605
class WinAsm;
 
72606
class WinDeclSpecs;
 
72607
class WinMemberExplSpec;
 
72608
class WinTypeKeywords;
 
72609
class WinFriend;
 
72610
class ExtAC;
 
72611
class ExtACBuilderCoupling;
 
72612
class ExtACSyntaxCoupling;
 
72613
class ExtACTree;
 
72614
class ExtACKeywords;
 
72615
class ExtGnu;
 
72616
class PragmaOnceUnitState;
 
72617
class PragmaOnce;
 
72618
class CMatchSyntax;
 
72619
namespace Puma {
 
72620
 
 
72621
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72622
class CT_TemplateDecl : public CT_Decl, public CSemScope {
 
72623
#line 72624 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72624
  friend class ::CCExprResolve;
 
72625
  friend class ::CExprResolve;
 
72626
  friend class ::WinIfExists;
 
72627
  friend class ::WinImportHandler;
 
72628
  friend class ::WinMacros;
 
72629
  friend class ::WinAsm;
 
72630
  friend class ::WinDeclSpecs;
 
72631
  friend class ::WinMemberExplSpec;
 
72632
  friend class ::WinTypeKeywords;
 
72633
  friend class ::WinFriend;
 
72634
  friend class ::ExtAC;
 
72635
  friend class ::ExtACBuilderCoupling;
 
72636
  friend class ::ExtACSyntaxCoupling;
 
72637
  friend class ::ExtACTree;
 
72638
  friend class ::ExtACKeywords;
 
72639
  friend class ::ExtGnu;
 
72640
  friend class ::PragmaOnceUnitState;
 
72641
  friend class ::PragmaOnce;
 
72642
  friend class ::CMatchSyntax;
 
72643
 
 
72644
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72645
 
 
72646
  CTree *sons[3]; // export, param_list, decl
 
72647
 
 
72648
public:
 
72649
  /** Constructor.
 
72650
   *  \param e Optional 'export' keyword. 
 
72651
   *  \param p The template parameter list.
 
72652
   *  \param d The class or function declaration. */
 
72653
  CT_TemplateDecl (CTree *e, CTree *p, CTree *d) {
 
72654
    AddSon (sons[0], e); AddSon (sons[1], p); AddSon (sons[2], d);
 
72655
  }
 
72656
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72657
  static const char *NodeId ();
 
72658
  /** Get the name of the node. Can be compared with NodeId(). */
 
72659
  const char *NodeName () const { return NodeId (); }
 
72660
  /** Get the number of sons. */
 
72661
  int Sons () const { return CTree::Sons (sons, 3); }
 
72662
  /** Get the n-th son.
 
72663
   *  \param n The index of the son.
 
72664
   *  \return The n-th son or NULL. */
 
72665
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
72666
  /** Replace a son.
 
72667
   *  \param old_son The son to replace.
 
72668
   *  \param new_son The new son. */
 
72669
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
72670
    CTree::ReplaceSon (sons, 3, old_son, new_son); 
 
72671
  }
 
72672
  /** Get the 'export' keyword. */
 
72673
  CTree *Export () const { return sons[0]; }
 
72674
  /** Get the template parameter list. */
 
72675
  CT_TemplateParamList *Parameters () const { 
 
72676
    return (CT_TemplateParamList*)sons[1]; 
 
72677
  }
 
72678
  /** Get the class or function declaration. */
 
72679
  CTree *Declaration () const { return sons[2]; }
 
72680
  /** Get the scope opened by the template declaration. */
 
72681
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
72682
public:
 
72683
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
72684
  const char *__attr_name (unsigned i) const {
 
72685
    static const char *names[] = { "sons" }; return names[i];
 
72686
  }
 
72687
  const void *__attr (unsigned __i) const {
 
72688
    switch (__i) { case 0: return &sons; default: return 0; }
 
72689
  }
 
72690
#line 2317 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72691
};
 
72692
 
 
72693
/** \class CT_TemplateParamDecl CTree.h Puma/CTree.h
 
72694
 *  Base class for all tree nodesrepresenting a template parameter declaration. */
 
72695
 
 
72696
#line 72697 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72697
} // closed Puma
 
72698
class CCExprResolve;
 
72699
class CExprResolve;
 
72700
class WinIfExists;
 
72701
class WinImportHandler;
 
72702
class WinMacros;
 
72703
class WinAsm;
 
72704
class WinDeclSpecs;
 
72705
class WinMemberExplSpec;
 
72706
class WinTypeKeywords;
 
72707
class WinFriend;
 
72708
class ExtAC;
 
72709
class ExtACBuilderCoupling;
 
72710
class ExtACSyntaxCoupling;
 
72711
class ExtACTree;
 
72712
class ExtACKeywords;
 
72713
class ExtGnu;
 
72714
class PragmaOnceUnitState;
 
72715
class PragmaOnce;
 
72716
class CMatchSyntax;
 
72717
namespace Puma {
 
72718
 
 
72719
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72720
class CT_TemplateParamDecl : public CT_Decl, public CSemObject {
 
72721
#line 72722 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72722
  friend class ::CCExprResolve;
 
72723
  friend class ::CExprResolve;
 
72724
  friend class ::WinIfExists;
 
72725
  friend class ::WinImportHandler;
 
72726
  friend class ::WinMacros;
 
72727
  friend class ::WinAsm;
 
72728
  friend class ::WinDeclSpecs;
 
72729
  friend class ::WinMemberExplSpec;
 
72730
  friend class ::WinTypeKeywords;
 
72731
  friend class ::WinFriend;
 
72732
  friend class ::ExtAC;
 
72733
  friend class ::ExtACBuilderCoupling;
 
72734
  friend class ::ExtACSyntaxCoupling;
 
72735
  friend class ::ExtACTree;
 
72736
  friend class ::ExtACKeywords;
 
72737
  friend class ::ExtGnu;
 
72738
  friend class ::PragmaOnceUnitState;
 
72739
  friend class ::PragmaOnce;
 
72740
  friend class ::CMatchSyntax;
 
72741
 
 
72742
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72743
 
 
72744
protected:
 
72745
  /** Constructor. */
 
72746
  CT_TemplateParamDecl () {}
 
72747
  
 
72748
public:
 
72749
  /** Get the template default argument. */
 
72750
  virtual CT_ExprList *DefaultArgument () const = 0;
 
72751
  /** Get the semantic information about the template parameter. */
 
72752
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
72753
public:
 
72754
  typedef AC::TLE __AttrTypes;
 
72755
  const char *__attr_name (unsigned i) const { return 0; }
 
72756
  const void *__attr (unsigned __i) const { return 0; }
 
72757
#line 2331 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72758
};
 
72759
 
 
72760
/** \class CT_NonTypeParamDecl CTree.h Puma/CTree.h
 
72761
 *  Tree node representing a template non-type parameter declaration. */
 
72762
 
 
72763
#line 72764 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72764
} // closed Puma
 
72765
class CCExprResolve;
 
72766
class CExprResolve;
 
72767
class WinIfExists;
 
72768
class WinImportHandler;
 
72769
class WinMacros;
 
72770
class WinAsm;
 
72771
class WinDeclSpecs;
 
72772
class WinMemberExplSpec;
 
72773
class WinTypeKeywords;
 
72774
class WinFriend;
 
72775
class ExtAC;
 
72776
class ExtACBuilderCoupling;
 
72777
class ExtACSyntaxCoupling;
 
72778
class ExtACTree;
 
72779
class ExtACKeywords;
 
72780
class ExtGnu;
 
72781
class PragmaOnceUnitState;
 
72782
class PragmaOnce;
 
72783
class CMatchSyntax;
 
72784
namespace Puma {
 
72785
 
 
72786
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72787
class CT_NonTypeParamDecl : public CT_TemplateParamDecl {
 
72788
#line 72789 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72789
  friend class ::CCExprResolve;
 
72790
  friend class ::CExprResolve;
 
72791
  friend class ::WinIfExists;
 
72792
  friend class ::WinImportHandler;
 
72793
  friend class ::WinMacros;
 
72794
  friend class ::WinAsm;
 
72795
  friend class ::WinDeclSpecs;
 
72796
  friend class ::WinMemberExplSpec;
 
72797
  friend class ::WinTypeKeywords;
 
72798
  friend class ::WinFriend;
 
72799
  friend class ::ExtAC;
 
72800
  friend class ::ExtACBuilderCoupling;
 
72801
  friend class ::ExtACSyntaxCoupling;
 
72802
  friend class ::ExtACTree;
 
72803
  friend class ::ExtACKeywords;
 
72804
  friend class ::ExtGnu;
 
72805
  friend class ::PragmaOnceUnitState;
 
72806
  friend class ::PragmaOnce;
 
72807
  friend class ::CMatchSyntax;
 
72808
 
 
72809
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72810
 
 
72811
  CTree *sons[3]; // declspecs, declarator, init
 
72812
 
 
72813
public:
 
72814
  /** Constructor.
 
72815
   *  \param dsl The declaration specifier sequence.
 
72816
   *  \param d The parameter declarator.
 
72817
   *  \param i The default template argument. */
 
72818
  CT_NonTypeParamDecl (CTree *dsl, CTree *d, CTree *i = (CTree*)0) {
 
72819
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], i);
 
72820
  }
 
72821
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72822
  static const char *NodeId ();
 
72823
  /** Get the name of the node. Can be compared with NodeId(). */
 
72824
  const char *NodeName () const { return NodeId (); }
 
72825
  /** Get the number of sons. */
 
72826
  int Sons () const { return CTree::Sons (sons, 3); }
 
72827
  /** Get the n-th son.
 
72828
   *  \param n The index of the son.
 
72829
   *  \return The n-th son or NULL. */
 
72830
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
72831
  /** Get the declaration specifier sequence. */
 
72832
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
72833
  /** Get the parameter declarator. */
 
72834
  CTree *Declarator () const { return sons[1]; }
 
72835
  /** Get the default template argument. */
 
72836
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[2]; }
 
72837
  /** Get the semantic information about the template parameter. */
 
72838
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
72839
  /** Set the default template argument. 
 
72840
   *  \param i The default argument. */
 
72841
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
72842
  /** Replace a son.
 
72843
   *  \param old_son The son to replace.
 
72844
   *  \param new_son The new son. */
 
72845
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
72846
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
72847
  }
 
72848
public:
 
72849
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
72850
  const char *__attr_name (unsigned i) const {
 
72851
    static const char *names[] = { "sons" }; return names[i];
 
72852
  }
 
72853
  const void *__attr (unsigned __i) const {
 
72854
    switch (__i) { case 0: return &sons; default: return 0; }
 
72855
  }
 
72856
#line 2373 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72857
};
 
72858
 
 
72859
/** \class CT_TypeParamDecl CTree.h Puma/CTree.h
 
72860
 *  Tree node representing a template type parameter declaration. */
 
72861
 
 
72862
#line 72863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72863
} // closed Puma
 
72864
class CCExprResolve;
 
72865
class CExprResolve;
 
72866
class WinIfExists;
 
72867
class WinImportHandler;
 
72868
class WinMacros;
 
72869
class WinAsm;
 
72870
class WinDeclSpecs;
 
72871
class WinMemberExplSpec;
 
72872
class WinTypeKeywords;
 
72873
class WinFriend;
 
72874
class ExtAC;
 
72875
class ExtACBuilderCoupling;
 
72876
class ExtACSyntaxCoupling;
 
72877
class ExtACTree;
 
72878
class ExtACKeywords;
 
72879
class ExtGnu;
 
72880
class PragmaOnceUnitState;
 
72881
class PragmaOnce;
 
72882
class CMatchSyntax;
 
72883
namespace Puma {
 
72884
 
 
72885
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72886
class CT_TypeParamDecl : public CT_TemplateParamDecl {
 
72887
#line 72888 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72888
  friend class ::CCExprResolve;
 
72889
  friend class ::CExprResolve;
 
72890
  friend class ::WinIfExists;
 
72891
  friend class ::WinImportHandler;
 
72892
  friend class ::WinMacros;
 
72893
  friend class ::WinAsm;
 
72894
  friend class ::WinDeclSpecs;
 
72895
  friend class ::WinMemberExplSpec;
 
72896
  friend class ::WinTypeKeywords;
 
72897
  friend class ::WinFriend;
 
72898
  friend class ::ExtAC;
 
72899
  friend class ::ExtACBuilderCoupling;
 
72900
  friend class ::ExtACSyntaxCoupling;
 
72901
  friend class ::ExtACTree;
 
72902
  friend class ::ExtACKeywords;
 
72903
  friend class ::ExtGnu;
 
72904
  friend class ::PragmaOnceUnitState;
 
72905
  friend class ::PragmaOnce;
 
72906
  friend class ::CMatchSyntax;
 
72907
 
 
72908
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72909
 
 
72910
  CTree *sons[4]; // params, key, id, init
 
72911
 
 
72912
public:
 
72913
  /** Constructor.
 
72914
   *  \param pl The template parameter list of an template template parameter.
 
72915
   *  \param k The type keyword, i.e. 'class' or 'typename'.
 
72916
   *  \param id The parameter identifier.
 
72917
   *  \param i The default template argument. */
 
72918
  CT_TypeParamDecl (CTree *pl, CTree *k, CTree *id, CTree *i = (CTree*)0) { 
 
72919
    AddSon (sons[0], pl); AddSon (sons[1], k); 
 
72920
    AddSon (sons[2], id); AddSon (sons[3], i);
 
72921
  }
 
72922
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
72923
  static const char *NodeId ();
 
72924
  /** Get the name of the node. Can be compared with NodeId(). */
 
72925
  const char *NodeName () const { return NodeId (); }
 
72926
  /** Get the number of sons. */
 
72927
  int Sons () const { return CTree::Sons (sons, 4); }
 
72928
  /** Get the n-th son.
 
72929
   *  \param n The index of the son.
 
72930
   *  \return The n-th son or NULL. */
 
72931
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
72932
  /** Get the template parameter list of a template template parameter. */
 
72933
  CT_TemplateParamList *Parameters () const { 
 
72934
    return (CT_TemplateParamList*)sons[0]; 
 
72935
  }
 
72936
  /** Get the templare parameter name. */
 
72937
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
72938
  /** Get the template default argument. */
 
72939
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[3]; }
 
72940
  /** Set the template default argument.
 
72941
   *  \param i The default argument. */
 
72942
  void Initializer (CTree *i) { AddSon (sons[3], i); }
 
72943
  /** Replace a son.
 
72944
   *  \param old_son The son to replace.
 
72945
   *  \param new_son The new son. */
 
72946
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
72947
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
72948
  }
 
72949
public:
 
72950
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
72951
  const char *__attr_name (unsigned i) const {
 
72952
    static const char *names[] = { "sons" }; return names[i];
 
72953
  }
 
72954
  const void *__attr (unsigned __i) const {
 
72955
    switch (__i) { case 0: return &sons; default: return 0; }
 
72956
  }
 
72957
#line 2417 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72958
};
 
72959
 
 
72960
/** \class CT_EnumDef CTree.h Puma/CTree.h
 
72961
 *  Tree node representing the definition of an enumeration. 
 
72962
 *  Example: \code enum E { A, B, C } \endcode */
 
72963
 
 
72964
#line 72965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72965
} // closed Puma
 
72966
class CCExprResolve;
 
72967
class CExprResolve;
 
72968
class WinIfExists;
 
72969
class WinImportHandler;
 
72970
class WinMacros;
 
72971
class WinAsm;
 
72972
class WinDeclSpecs;
 
72973
class WinMemberExplSpec;
 
72974
class WinTypeKeywords;
 
72975
class WinFriend;
 
72976
class ExtAC;
 
72977
class ExtACBuilderCoupling;
 
72978
class ExtACSyntaxCoupling;
 
72979
class ExtACTree;
 
72980
class ExtACKeywords;
 
72981
class ExtGnu;
 
72982
class PragmaOnceUnitState;
 
72983
class PragmaOnce;
 
72984
class CMatchSyntax;
 
72985
namespace Puma {
 
72986
 
 
72987
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
72988
class CT_EnumDef : public CT_Decl, public CSemObject {
 
72989
#line 72990 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
72990
  friend class ::CCExprResolve;
 
72991
  friend class ::CExprResolve;
 
72992
  friend class ::WinIfExists;
 
72993
  friend class ::WinImportHandler;
 
72994
  friend class ::WinMacros;
 
72995
  friend class ::WinAsm;
 
72996
  friend class ::WinDeclSpecs;
 
72997
  friend class ::WinMemberExplSpec;
 
72998
  friend class ::WinTypeKeywords;
 
72999
  friend class ::WinFriend;
 
73000
  friend class ::ExtAC;
 
73001
  friend class ::ExtACBuilderCoupling;
 
73002
  friend class ::ExtACSyntaxCoupling;
 
73003
  friend class ::ExtACTree;
 
73004
  friend class ::ExtACKeywords;
 
73005
  friend class ::ExtGnu;
 
73006
  friend class ::PragmaOnceUnitState;
 
73007
  friend class ::PragmaOnce;
 
73008
  friend class ::CMatchSyntax;
 
73009
 
 
73010
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73011
 
 
73012
  CTree *sons[3]; // key, name, enumerators
 
73013
 
 
73014
public:
 
73015
  /** Constructor.
 
73016
   *  \param k The keyword 'enum'.
 
73017
   *  \param n The name of the enumeration. */
 
73018
  CT_EnumDef (CTree *k, CTree *n) {
 
73019
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], 0); 
 
73020
  }
 
73021
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73022
  static const char *NodeId ();
 
73023
  /** Get the name of the node. Can be compared with NodeId(). */
 
73024
  const char *NodeName () const { return NodeId (); }
 
73025
  /** Get the number of sons. */
 
73026
  int Sons () const { return CTree::Sons (sons, 3); }
 
73027
  /** Get the n-th son.
 
73028
   *  \param n The index of the son.
 
73029
   *  \return The n-th son or NULL. */
 
73030
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
73031
  /** Get the name of the enumeration. */
 
73032
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
73033
  /** Set the list of enumeration constants.
 
73034
   *  \param el The enumerator list. */
 
73035
  void Enumerators (CTree *el) { AddSon (sons[2], el); }
 
73036
  /** Get the list of enumeration constants. */
 
73037
  CT_EnumeratorList *Enumerators () const { return (CT_EnumeratorList*)sons[2]; }
 
73038
  /** Replace a son.
 
73039
   *  \param old_son The son to replace.
 
73040
   *  \param new_son The new son. */
 
73041
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
73042
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
73043
  }
 
73044
  /** Get the semantic information about the enumeration. */
 
73045
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
73046
public:
 
73047
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
73048
  const char *__attr_name (unsigned i) const {
 
73049
    static const char *names[] = { "sons" }; return names[i];
 
73050
  }
 
73051
  const void *__attr (unsigned __i) const {
 
73052
    switch (__i) { case 0: return &sons; default: return 0; }
 
73053
  }
 
73054
#line 2457 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73055
};
 
73056
 
 
73057
/** \class CT_Enumerator CTree.h Puma/CTree.h
 
73058
 *  Tree node representing a single enumeration constant. */
 
73059
 
 
73060
#line 73061 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73061
} // closed Puma
 
73062
class CCExprResolve;
 
73063
class CExprResolve;
 
73064
class WinIfExists;
 
73065
class WinImportHandler;
 
73066
class WinMacros;
 
73067
class WinAsm;
 
73068
class WinDeclSpecs;
 
73069
class WinMemberExplSpec;
 
73070
class WinTypeKeywords;
 
73071
class WinFriend;
 
73072
class ExtAC;
 
73073
class ExtACBuilderCoupling;
 
73074
class ExtACSyntaxCoupling;
 
73075
class ExtACTree;
 
73076
class ExtACKeywords;
 
73077
class ExtGnu;
 
73078
class PragmaOnceUnitState;
 
73079
class PragmaOnce;
 
73080
class CMatchSyntax;
 
73081
namespace Puma {
 
73082
 
 
73083
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73084
class CT_Enumerator : public CT_Decl, public CSemObject {
 
73085
#line 73086 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73086
  friend class ::CCExprResolve;
 
73087
  friend class ::CExprResolve;
 
73088
  friend class ::WinIfExists;
 
73089
  friend class ::WinImportHandler;
 
73090
  friend class ::WinMacros;
 
73091
  friend class ::WinAsm;
 
73092
  friend class ::WinDeclSpecs;
 
73093
  friend class ::WinMemberExplSpec;
 
73094
  friend class ::WinTypeKeywords;
 
73095
  friend class ::WinFriend;
 
73096
  friend class ::ExtAC;
 
73097
  friend class ::ExtACBuilderCoupling;
 
73098
  friend class ::ExtACSyntaxCoupling;
 
73099
  friend class ::ExtACTree;
 
73100
  friend class ::ExtACKeywords;
 
73101
  friend class ::ExtGnu;
 
73102
  friend class ::PragmaOnceUnitState;
 
73103
  friend class ::PragmaOnce;
 
73104
  friend class ::CMatchSyntax;
 
73105
 
 
73106
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73107
 
 
73108
  CTree *sons[2]; // name, init
 
73109
 
 
73110
public:
 
73111
  /** Constructor.
 
73112
   *  \param n The name of the enumerator. */
 
73113
  CT_Enumerator (CTree *n) { AddSon (sons[0], n); AddSon (sons[1], 0); }
 
73114
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73115
  static const char *NodeId ();
 
73116
  /** Get the name of the node. Can be compared with NodeId(). */
 
73117
  const char *NodeName () const { return NodeId (); }
 
73118
  /** Get the number of sons. */
 
73119
  int Sons () const { return CTree::Sons (sons, 2); }
 
73120
  /** Get the n-th son.
 
73121
   *  \param n The index of the son.
 
73122
   *  \return The n-th son or NULL. */
 
73123
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
73124
  /** Get the name of the enumerator. */
 
73125
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
73126
  /** Set the initializer expression of the enumerator. */
 
73127
  void Initializer (CTree *i) { AddSon (sons[1], i); }
 
73128
  /** Get the initializer expression of the enumerator. */
 
73129
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
73130
  /** Replace a son.
 
73131
   *  \param old_son The son to replace.
 
73132
   *  \param new_son The new son. */
 
73133
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
73134
    CTree::ReplaceSon (sons, 2, old_son, new_son); 
 
73135
  }
 
73136
  /** Get the semantic information about the enumerator. */
 
73137
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
73138
public:
 
73139
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
73140
  const char *__attr_name (unsigned i) const {
 
73141
    static const char *names[] = { "sons" }; return names[i];
 
73142
  }
 
73143
  const void *__attr (unsigned __i) const {
 
73144
    switch (__i) { case 0: return &sons; default: return 0; }
 
73145
  }
 
73146
#line 2492 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73147
};
 
73148
 
 
73149
/** \class CT_FctDef CTree.h Puma/CTree.h
 
73150
 *  Tree node representing a function definition. 
 
73151
 *  Example:
 
73152
 *  \code
 
73153
 * int mul(int x, int y) {
 
73154
 *   return x*y;
 
73155
 * }
 
73156
 *  \endcode */
 
73157
 
 
73158
#line 73159 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73159
} // closed Puma
 
73160
class CCExprResolve;
 
73161
class CExprResolve;
 
73162
class WinIfExists;
 
73163
class WinImportHandler;
 
73164
class WinMacros;
 
73165
class WinAsm;
 
73166
class WinDeclSpecs;
 
73167
class WinMemberExplSpec;
 
73168
class WinTypeKeywords;
 
73169
class WinFriend;
 
73170
class ExtAC;
 
73171
class ExtACBuilderCoupling;
 
73172
class ExtACSyntaxCoupling;
 
73173
class ExtACTree;
 
73174
class ExtACKeywords;
 
73175
class ExtGnu;
 
73176
class PragmaOnceUnitState;
 
73177
class PragmaOnce;
 
73178
class CMatchSyntax;
 
73179
namespace Puma {
 
73180
 
 
73181
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73182
class CT_FctDef : public CT_Decl, public CSemObject {
 
73183
#line 73184 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73184
  friend class ::CCExprResolve;
 
73185
  friend class ::CExprResolve;
 
73186
  friend class ::WinIfExists;
 
73187
  friend class ::WinImportHandler;
 
73188
  friend class ::WinMacros;
 
73189
  friend class ::WinAsm;
 
73190
  friend class ::WinDeclSpecs;
 
73191
  friend class ::WinMemberExplSpec;
 
73192
  friend class ::WinTypeKeywords;
 
73193
  friend class ::WinFriend;
 
73194
  friend class ::ExtAC;
 
73195
  friend class ::ExtACBuilderCoupling;
 
73196
  friend class ::ExtACSyntaxCoupling;
 
73197
  friend class ::ExtACTree;
 
73198
  friend class ::ExtACKeywords;
 
73199
  friend class ::ExtGnu;
 
73200
  friend class ::PragmaOnceUnitState;
 
73201
  friend class ::PragmaOnce;
 
73202
  friend class ::CMatchSyntax;
 
73203
 
 
73204
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73205
 
 
73206
  CTree *sons[7]; // declspecs, declarator, try, ctor_init, args, body, handlers
 
73207
 
 
73208
public:
 
73209
  /** Constructor.
 
73210
   *  \param dss The declaration specifier sequence. 
 
73211
   *  \param d The function declarator.
 
73212
   *  \param t Optional keyword 'try' for a function try-block.
 
73213
   *  \param ci Optional constructor initializer list.
 
73214
   *  \param as Optional K&R argument declaration list.
 
73215
   *  \param b The function body.
 
73216
   *  \param hs Exception handler sequence for a function try-block. */
 
73217
  CT_FctDef (CTree *dss, CTree *d, CTree *t, CTree *ci, CTree *as, 
 
73218
             CTree *b, CTree *hs) {
 
73219
    AddSon (sons[0], dss); AddSon (sons[1], d); AddSon (sons[2], t); 
 
73220
    AddSon (sons[3], ci); AddSon (sons[4], as); AddSon (sons[5], b); 
 
73221
    AddSon (sons[6], hs); 
 
73222
  }
 
73223
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73224
  static const char *NodeId ();
 
73225
  /** Get the name of the node. Can be compared with NodeId(). */
 
73226
  const char *NodeName () const { return NodeId (); }
 
73227
  /** Get the number of sons. */
 
73228
  int Sons () const { return CTree::Sons (sons, 7); }
 
73229
  /** Get the n-th son.
 
73230
   *  \param n The index of the son.
 
73231
   *  \return The n-th son or NULL. */
 
73232
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
73233
  /** Get the declaration specifier sequence. */
 
73234
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
73235
  /** Get the function declarator. */
 
73236
  CTree *Declarator () const { return sons[1]; }
 
73237
  /** Get the 'try' keyword of the function try-block. */
 
73238
  CT_Token *TryKey () const { return (CT_Token*)sons[2]; }
 
73239
  /** Get the constructor initializer list. */
 
73240
  CTree *CtorInit () const { return sons[3]; }
 
73241
  /** Get the K&R argument declaration sequence. */
 
73242
  CT_ArgDeclSeq *ArgDeclSeq () const { return (CT_ArgDeclSeq*)sons[4]; }
 
73243
  /** Get the function body. */
 
73244
  CT_CmpdStmt *Body () const { return (CT_CmpdStmt*)sons[5]; }
 
73245
  /** Get the exception handler sequence of a function try-block. */
 
73246
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[6]; }
 
73247
  /** Get the semantic information about the function. */
 
73248
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
73249
  /** Set the constructor initializer list. 
 
73250
   *  \param i The initializer list. */
 
73251
  void CtorInit (CTree *i) { AddSon (sons[3], i); }
 
73252
  /** Set the function body.
 
73253
   *  \param b The function body. */
 
73254
  void Body (CTree *b) { AddSon (sons[5], b); }
 
73255
  /** Set the function try-block.
 
73256
   *  \param t The keyword 'try'.
 
73257
   *  \param c Optional constructor initializer list.
 
73258
   *  \param b The function body.
 
73259
   *  \param h The exception handler sequence. */
 
73260
  void FctTryBlock (CTree *t, CTree *c, CTree *b, CTree *h) { 
 
73261
    AddSon (sons[2], t); AddSon (sons[3], c); 
 
73262
    AddSon (sons[5], b); AddSon (sons[6], h);
 
73263
  }
 
73264
  /** Replace a son.
 
73265
   *  \param old_son The son to replace.
 
73266
   *  \param new_son The new son. */
 
73267
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
73268
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
73269
  }
 
73270
public:
 
73271
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
73272
  const char *__attr_name (unsigned i) const {
 
73273
    static const char *names[] = { "sons" }; return names[i];
 
73274
  }
 
73275
  const void *__attr (unsigned __i) const {
 
73276
    switch (__i) { case 0: return &sons; default: return 0; }
 
73277
  }
 
73278
#line 2567 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73279
};
 
73280
 
 
73281
/** \class CT_AsmDef CTree.h Puma/CTree.h
 
73282
 *  Tree node representing an inline assembly definition. 
 
73283
 *  Example: \code asm("movl %ecx %eax"); \endcode */
 
73284
 
 
73285
#line 73286 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73286
} // closed Puma
 
73287
class CCExprResolve;
 
73288
class CExprResolve;
 
73289
class WinIfExists;
 
73290
class WinImportHandler;
 
73291
class WinMacros;
 
73292
class WinAsm;
 
73293
class WinDeclSpecs;
 
73294
class WinMemberExplSpec;
 
73295
class WinTypeKeywords;
 
73296
class WinFriend;
 
73297
class ExtAC;
 
73298
class ExtACBuilderCoupling;
 
73299
class ExtACSyntaxCoupling;
 
73300
class ExtACTree;
 
73301
class ExtACKeywords;
 
73302
class ExtGnu;
 
73303
class PragmaOnceUnitState;
 
73304
class PragmaOnce;
 
73305
class CMatchSyntax;
 
73306
namespace Puma {
 
73307
 
 
73308
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73309
class CT_AsmDef : public CT_Decl {
 
73310
#line 73311 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73311
  friend class ::CCExprResolve;
 
73312
  friend class ::CExprResolve;
 
73313
  friend class ::WinIfExists;
 
73314
  friend class ::WinImportHandler;
 
73315
  friend class ::WinMacros;
 
73316
  friend class ::WinAsm;
 
73317
  friend class ::WinDeclSpecs;
 
73318
  friend class ::WinMemberExplSpec;
 
73319
  friend class ::WinTypeKeywords;
 
73320
  friend class ::WinFriend;
 
73321
  friend class ::ExtAC;
 
73322
  friend class ::ExtACBuilderCoupling;
 
73323
  friend class ::ExtACSyntaxCoupling;
 
73324
  friend class ::ExtACTree;
 
73325
  friend class ::ExtACKeywords;
 
73326
  friend class ::ExtGnu;
 
73327
  friend class ::PragmaOnceUnitState;
 
73328
  friend class ::PragmaOnce;
 
73329
  friend class ::CMatchSyntax;
 
73330
 
 
73331
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73332
 
 
73333
  CTree *sons[5]; // asm, open, str, close, semi_colon
 
73334
 
 
73335
public:
 
73336
  /** Constructor.
 
73337
   *  \param a The keyword 'asm'.
 
73338
   *  \param o Left parenthesis around the assembler code string. 
 
73339
   *  \param s The assembler code.
 
73340
   *  \param c Right parenthesis around the assembler code string.
 
73341
   *  \param sc Trailing semi-colon. */
 
73342
  CT_AsmDef (CTree *a, CTree *o, CTree *s, CTree *c, CTree *sc) {
 
73343
    AddSon (sons[0], a); AddSon (sons[1], o); AddSon (sons[2], s); 
 
73344
    AddSon (sons[3], c); AddSon (sons[4], sc); 
 
73345
  }
 
73346
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73347
  static const char *NodeId ();
 
73348
  /** Get the name of the node. Can be compared with NodeId(). */
 
73349
  const char *NodeName () const { return NodeId (); }
 
73350
  /** Get the number of sons. */
 
73351
  int Sons () const { return 5; }
 
73352
  /** Get the n-th son.
 
73353
   *  \param n The index of the son.
 
73354
   *  \return The n-th son or NULL. */
 
73355
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
73356
  /** Get the assembler code. */
 
73357
  CT_String *Instructions () const { return (CT_String*)sons[2]; }
 
73358
  /** Replace a son.
 
73359
   *  \param old_son The son to replace.
 
73360
   *  \param new_son The new son. */
 
73361
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
73362
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
73363
  }
 
73364
public:
 
73365
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
73366
  const char *__attr_name (unsigned i) const {
 
73367
    static const char *names[] = { "sons" }; return names[i];
 
73368
  }
 
73369
  const void *__attr (unsigned __i) const {
 
73370
    switch (__i) { case 0: return &sons; default: return 0; }
 
73371
  }
 
73372
#line 2604 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73373
};
 
73374
 
 
73375
/** \class CT_Handler CTree.h Puma/CTree.h
 
73376
 *  Tree node representing an exception handler. */
 
73377
 
 
73378
#line 73379 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73379
} // closed Puma
 
73380
class CCExprResolve;
 
73381
class CExprResolve;
 
73382
class WinIfExists;
 
73383
class WinImportHandler;
 
73384
class WinMacros;
 
73385
class WinAsm;
 
73386
class WinDeclSpecs;
 
73387
class WinMemberExplSpec;
 
73388
class WinTypeKeywords;
 
73389
class WinFriend;
 
73390
class ExtAC;
 
73391
class ExtACBuilderCoupling;
 
73392
class ExtACSyntaxCoupling;
 
73393
class ExtACTree;
 
73394
class ExtACKeywords;
 
73395
class ExtGnu;
 
73396
class PragmaOnceUnitState;
 
73397
class PragmaOnce;
 
73398
class CMatchSyntax;
 
73399
namespace Puma {
 
73400
 
 
73401
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73402
class CT_Handler : public CT_Decl, public CSemScope {
 
73403
#line 73404 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73404
  friend class ::CCExprResolve;
 
73405
  friend class ::CExprResolve;
 
73406
  friend class ::WinIfExists;
 
73407
  friend class ::WinImportHandler;
 
73408
  friend class ::WinMacros;
 
73409
  friend class ::WinAsm;
 
73410
  friend class ::WinDeclSpecs;
 
73411
  friend class ::WinMemberExplSpec;
 
73412
  friend class ::WinTypeKeywords;
 
73413
  friend class ::WinFriend;
 
73414
  friend class ::ExtAC;
 
73415
  friend class ::ExtACBuilderCoupling;
 
73416
  friend class ::ExtACSyntaxCoupling;
 
73417
  friend class ::ExtACTree;
 
73418
  friend class ::ExtACKeywords;
 
73419
  friend class ::ExtGnu;
 
73420
  friend class ::PragmaOnceUnitState;
 
73421
  friend class ::PragmaOnce;
 
73422
  friend class ::CMatchSyntax;
 
73423
 
 
73424
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73425
 
 
73426
  CTree *sons[3]; // catch, exception_decl, stmt
 
73427
 
 
73428
public:
 
73429
  /** Constructor.
 
73430
   *  \param c The keyword 'catch'.
 
73431
   *  \param e The exception object declaration.
 
73432
   *  \param s The exception handling statement. */
 
73433
  CT_Handler (CTree *c, CTree *e, CTree *s) {
 
73434
    AddSon (sons[0], c); AddSon (sons[1], e); AddSon (sons[2], s);
 
73435
  }
 
73436
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73437
  static const char *NodeId ();
 
73438
  /** Get the name of the node. Can be compared with NodeId(). */
 
73439
  const char *NodeName () const { return NodeId (); }
 
73440
  /** Get the number of sons. */
 
73441
  int Sons () const { return 3; }
 
73442
  /** Get the n-th son.
 
73443
   *  \param n The index of the son.
 
73444
   *  \return The n-th son or NULL. */
 
73445
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
73446
  /** Get the exception object declaration. */
 
73447
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
73448
  /** Get the exception handling statement. */
 
73449
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
73450
  /** Replace a son.
 
73451
   *  \param old_son The son to replace.
 
73452
   *  \param new_son The new son. */
 
73453
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
73454
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
73455
  }
 
73456
  /** Get the scope opened by the handler. */
 
73457
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
73458
public:
 
73459
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
73460
  const char *__attr_name (unsigned i) const {
 
73461
    static const char *names[] = { "sons" }; return names[i];
 
73462
  }
 
73463
  const void *__attr (unsigned __i) const {
 
73464
    switch (__i) { case 0: return &sons; default: return 0; }
 
73465
  }
 
73466
#line 2641 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73467
};
 
73468
 
 
73469
/** \class CT_LinkageSpec CTree.h Puma/CTree.h
 
73470
 *  Tree node representing a list of declaration with a specific linkage. */
 
73471
 
 
73472
#line 73473 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73473
} // closed Puma
 
73474
class CCExprResolve;
 
73475
class CExprResolve;
 
73476
class WinIfExists;
 
73477
class WinImportHandler;
 
73478
class WinMacros;
 
73479
class WinAsm;
 
73480
class WinDeclSpecs;
 
73481
class WinMemberExplSpec;
 
73482
class WinTypeKeywords;
 
73483
class WinFriend;
 
73484
class ExtAC;
 
73485
class ExtACBuilderCoupling;
 
73486
class ExtACSyntaxCoupling;
 
73487
class ExtACTree;
 
73488
class ExtACKeywords;
 
73489
class ExtGnu;
 
73490
class PragmaOnceUnitState;
 
73491
class PragmaOnce;
 
73492
class CMatchSyntax;
 
73493
namespace Puma {
 
73494
 
 
73495
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73496
class CT_LinkageSpec : public CT_Decl {
 
73497
#line 73498 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73498
  friend class ::CCExprResolve;
 
73499
  friend class ::CExprResolve;
 
73500
  friend class ::WinIfExists;
 
73501
  friend class ::WinImportHandler;
 
73502
  friend class ::WinMacros;
 
73503
  friend class ::WinAsm;
 
73504
  friend class ::WinDeclSpecs;
 
73505
  friend class ::WinMemberExplSpec;
 
73506
  friend class ::WinTypeKeywords;
 
73507
  friend class ::WinFriend;
 
73508
  friend class ::ExtAC;
 
73509
  friend class ::ExtACBuilderCoupling;
 
73510
  friend class ::ExtACSyntaxCoupling;
 
73511
  friend class ::ExtACTree;
 
73512
  friend class ::ExtACKeywords;
 
73513
  friend class ::ExtGnu;
 
73514
  friend class ::PragmaOnceUnitState;
 
73515
  friend class ::PragmaOnce;
 
73516
  friend class ::CMatchSyntax;
 
73517
 
 
73518
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73519
 
 
73520
  CTree *sons[5]; // extern, str, open, decls, close
 
73521
 
 
73522
public:
 
73523
  /** Constructor.
 
73524
   *  \param e The keyword 'extern'.
 
73525
   *  \param s The linkage identifier, e.g. "C".
 
73526
   *  \param o Left parenthesis around the declaration list.
 
73527
   *  \param d The list of declarations.
 
73528
   *  \param c Right parenthesis around the declaration list. */
 
73529
  CT_LinkageSpec (CTree *e, CTree *s, CTree *o, CTree *d, CTree *c) {
 
73530
    AddSon (sons[0], e); AddSon (sons[1], s); AddSon (sons[2], o); 
 
73531
    AddSon (sons[3], d); AddSon (sons[4], c);
 
73532
    if (isList ())
 
73533
      ((CT_DeclList*)Decls ())->Linkage (this);
 
73534
    else
 
73535
      ((CT_Decl*)Decls ())->Linkage (this);
 
73536
  }
 
73537
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73538
  static const char *NodeId ();
 
73539
  /** Get the name of the node. Can be compared with NodeId(). */
 
73540
  const char *NodeName () const { return NodeId (); }
 
73541
  /** Get the number of sons. */
 
73542
  int Sons () const { return CTree::Sons (sons, 5); }
 
73543
  /** Get the n-th son.
 
73544
   *  \param n The index of the son.
 
73545
   *  \return The n-th son or NULL. */
 
73546
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
73547
  /** Get the linkage identifier. */
 
73548
  CT_String *Linkage () const { return (CT_String*)sons[1]; }
 
73549
  /** Get the list declarations. */
 
73550
  CTree *Decls () const { return sons[3]; }
 
73551
  /** Check if there is more than one enclosed declaration. 
 
73552
   *  In this case the node returned by Decls() is a CT_DeclList
 
73553
   *  node. */
 
73554
  bool isList () const {
 
73555
    return Decls ()->NodeName () == CT_DeclList::NodeId ();
 
73556
  }
 
73557
  /** Replace a son.
 
73558
   *  \param old_son The son to replace.
 
73559
   *  \param new_son The new son. */
 
73560
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
73561
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
73562
  }
 
73563
public:
 
73564
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
73565
  const char *__attr_name (unsigned i) const {
 
73566
    static const char *names[] = { "sons" }; return names[i];
 
73567
  }
 
73568
  const void *__attr (unsigned __i) const {
 
73569
    switch (__i) { case 0: return &sons; default: return 0; }
 
73570
  }
 
73571
#line 2689 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73572
};
 
73573
 
 
73574
/** \class CT_ArgDecl CTree.h Puma/CTree.h
 
73575
 *  Tree node representing the declaration of a function parameter. */
 
73576
 
 
73577
#line 73578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73578
} // closed Puma
 
73579
class CCExprResolve;
 
73580
class CExprResolve;
 
73581
class WinIfExists;
 
73582
class WinImportHandler;
 
73583
class WinMacros;
 
73584
class WinAsm;
 
73585
class WinDeclSpecs;
 
73586
class WinMemberExplSpec;
 
73587
class WinTypeKeywords;
 
73588
class WinFriend;
 
73589
class ExtAC;
 
73590
class ExtACBuilderCoupling;
 
73591
class ExtACSyntaxCoupling;
 
73592
class ExtACTree;
 
73593
class ExtACKeywords;
 
73594
class ExtGnu;
 
73595
class PragmaOnceUnitState;
 
73596
class PragmaOnce;
 
73597
class CMatchSyntax;
 
73598
namespace Puma {
 
73599
 
 
73600
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73601
class CT_ArgDecl : public CT_Decl, public CSemObject {
 
73602
#line 73603 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73603
  friend class ::CCExprResolve;
 
73604
  friend class ::CExprResolve;
 
73605
  friend class ::WinIfExists;
 
73606
  friend class ::WinImportHandler;
 
73607
  friend class ::WinMacros;
 
73608
  friend class ::WinAsm;
 
73609
  friend class ::WinDeclSpecs;
 
73610
  friend class ::WinMemberExplSpec;
 
73611
  friend class ::WinTypeKeywords;
 
73612
  friend class ::WinFriend;
 
73613
  friend class ::ExtAC;
 
73614
  friend class ::ExtACBuilderCoupling;
 
73615
  friend class ::ExtACSyntaxCoupling;
 
73616
  friend class ::ExtACTree;
 
73617
  friend class ::ExtACKeywords;
 
73618
  friend class ::ExtGnu;
 
73619
  friend class ::PragmaOnceUnitState;
 
73620
  friend class ::PragmaOnce;
 
73621
  friend class ::CMatchSyntax;
 
73622
 
 
73623
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73624
 
 
73625
  CTree *sons[4]; // declspecs, declarator, init, ellipsis
 
73626
 
 
73627
public:
 
73628
  /** Constructor.
 
73629
   *  \param dsl The declaration specifier sequence.
 
73630
   *  \param d The parameter declarator. */
 
73631
  CT_ArgDecl (CTree *dsl, CTree *d) {
 
73632
    AddSon (sons[0], dsl); AddSon (sons[1], d); 
 
73633
    AddSon (sons[2], 0); AddSon (sons[3], 0); 
 
73634
  }
 
73635
  /** Constructor.
 
73636
   *  \param ellipsis The variable argument list operator "...". */
 
73637
  CT_ArgDecl (CTree *ellipsis) {
 
73638
    AddSon (sons[0], 0); AddSon (sons[1], 0); 
 
73639
    AddSon (sons[2], 0); AddSon (sons[3], ellipsis); 
 
73640
  }
 
73641
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73642
  static const char *NodeId ();
 
73643
  /** Get the name of the node. Can be compared with NodeId(). */
 
73644
  const char *NodeName () const { return NodeId (); }
 
73645
  /** Get the number of sons. */
 
73646
  int Sons () const { return CTree::Sons (sons, 4); }
 
73647
  /** Get the n-th son.
 
73648
   *  \param n The index of the son.
 
73649
   *  \return The n-th son or NULL. */
 
73650
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
73651
  /** Get the declaration specifier sequence. */
 
73652
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
73653
  /** Get the function parameter declarator. */
 
73654
  CTree *Declarator () const { return sons[1]; }
 
73655
  /** Get the default argument. */
 
73656
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
73657
  /** Get the variable argument list operator. */
 
73658
  CT_Token *Ellipsis () const { return (CT_Token*)sons[3]; }
 
73659
  /** Get the semantic information about the function parameter. */
 
73660
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
73661
  /** Set the default argument. */
 
73662
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
73663
  /** Replace a son.
 
73664
   *  \param old_son The son to replace.
 
73665
   *  \param new_son The new son. */
 
73666
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
73667
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
73668
  }
 
73669
public:
 
73670
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
73671
  const char *__attr_name (unsigned i) const {
 
73672
    static const char *names[] = { "sons" }; return names[i];
 
73673
  }
 
73674
  const void *__attr (unsigned __i) const {
 
73675
    switch (__i) { case 0: return &sons; default: return 0; }
 
73676
  }
 
73677
#line 2738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73678
};
 
73679
 
 
73680
/** \class CT_ArgDeclList CTree.h Puma/CTree.h
 
73681
 *  Tree node representing a function parameter list. */
 
73682
 
 
73683
#line 73684 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73684
} // closed Puma
 
73685
class CCExprResolve;
 
73686
class CExprResolve;
 
73687
class WinIfExists;
 
73688
class WinImportHandler;
 
73689
class WinMacros;
 
73690
class WinAsm;
 
73691
class WinDeclSpecs;
 
73692
class WinMemberExplSpec;
 
73693
class WinTypeKeywords;
 
73694
class WinFriend;
 
73695
class ExtAC;
 
73696
class ExtACBuilderCoupling;
 
73697
class ExtACSyntaxCoupling;
 
73698
class ExtACTree;
 
73699
class ExtACKeywords;
 
73700
class ExtGnu;
 
73701
class PragmaOnceUnitState;
 
73702
class PragmaOnce;
 
73703
class CMatchSyntax;
 
73704
namespace Puma {
 
73705
 
 
73706
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73707
class CT_ArgDeclList : public CT_DeclList, public CSemScope {
 
73708
#line 73709 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73709
  friend class ::CCExprResolve;
 
73710
  friend class ::CExprResolve;
 
73711
  friend class ::WinIfExists;
 
73712
  friend class ::WinImportHandler;
 
73713
  friend class ::WinMacros;
 
73714
  friend class ::WinAsm;
 
73715
  friend class ::WinDeclSpecs;
 
73716
  friend class ::WinMemberExplSpec;
 
73717
  friend class ::WinTypeKeywords;
 
73718
  friend class ::WinFriend;
 
73719
  friend class ::ExtAC;
 
73720
  friend class ::ExtACBuilderCoupling;
 
73721
  friend class ::ExtACSyntaxCoupling;
 
73722
  friend class ::ExtACTree;
 
73723
  friend class ::ExtACKeywords;
 
73724
  friend class ::ExtGnu;
 
73725
  friend class ::PragmaOnceUnitState;
 
73726
  friend class ::PragmaOnce;
 
73727
  friend class ::CMatchSyntax;
 
73728
 
 
73729
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73730
 
 
73731
public:
 
73732
  /** Constructor.
 
73733
   *  \param size The initial size of the list.
 
73734
   *  \param props The list properties. */
 
73735
  CT_ArgDeclList (int size = 2, int props = SEPARATORS | OPEN_CLOSE) : 
 
73736
   CT_DeclList (size, 2) { AddProperties (props); }
 
73737
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73738
  static const char *NodeId ();
 
73739
  /** Get the name of the node. Can be compared with NodeId(). */
 
73740
  const char *NodeName () const { return NodeId (); }
 
73741
  /** Get the scope opened by the parameter list. */
 
73742
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
73743
public:
 
73744
  typedef AC::TLE __AttrTypes;
 
73745
  const char *__attr_name (unsigned i) const { return 0; }
 
73746
  const void *__attr (unsigned __i) const { return 0; }
 
73747
#line 2755 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73748
};
 
73749
 
 
73750
/** \class CT_ArgDeclSeq CTree.h Puma/CTree.h
 
73751
 *  Tree node representing a K&R function parameter declarations list. */
 
73752
 
 
73753
#line 73754 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73754
} // closed Puma
 
73755
class CCExprResolve;
 
73756
class CExprResolve;
 
73757
class WinIfExists;
 
73758
class WinImportHandler;
 
73759
class WinMacros;
 
73760
class WinAsm;
 
73761
class WinDeclSpecs;
 
73762
class WinMemberExplSpec;
 
73763
class WinTypeKeywords;
 
73764
class WinFriend;
 
73765
class ExtAC;
 
73766
class ExtACBuilderCoupling;
 
73767
class ExtACSyntaxCoupling;
 
73768
class ExtACTree;
 
73769
class ExtACKeywords;
 
73770
class ExtGnu;
 
73771
class PragmaOnceUnitState;
 
73772
class PragmaOnce;
 
73773
class CMatchSyntax;
 
73774
namespace Puma {
 
73775
 
 
73776
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73777
class CT_ArgDeclSeq : public CT_DeclList, public CSemScope {
 
73778
#line 73779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73779
  friend class ::CCExprResolve;
 
73780
  friend class ::CExprResolve;
 
73781
  friend class ::WinIfExists;
 
73782
  friend class ::WinImportHandler;
 
73783
  friend class ::WinMacros;
 
73784
  friend class ::WinAsm;
 
73785
  friend class ::WinDeclSpecs;
 
73786
  friend class ::WinMemberExplSpec;
 
73787
  friend class ::WinTypeKeywords;
 
73788
  friend class ::WinFriend;
 
73789
  friend class ::ExtAC;
 
73790
  friend class ::ExtACBuilderCoupling;
 
73791
  friend class ::ExtACSyntaxCoupling;
 
73792
  friend class ::ExtACTree;
 
73793
  friend class ::ExtACKeywords;
 
73794
  friend class ::ExtGnu;
 
73795
  friend class ::PragmaOnceUnitState;
 
73796
  friend class ::PragmaOnce;
 
73797
  friend class ::CMatchSyntax;
 
73798
 
 
73799
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73800
 
 
73801
public:
 
73802
  /** Constructor.
 
73803
   *  \param size The initial size of the list. */
 
73804
  CT_ArgDeclSeq (int size = 2) : CT_DeclList (size, 2) {}
 
73805
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73806
  static const char *NodeId ();
 
73807
  /** Get the name of the node. Can be compared with NodeId(). */
 
73808
  const char *NodeName () const { return NodeId (); }
 
73809
  /** Get the scope opened by the parameter declarations list. */
 
73810
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
73811
public:
 
73812
  typedef AC::TLE __AttrTypes;
 
73813
  const char *__attr_name (unsigned i) const { return 0; }
 
73814
  const void *__attr (unsigned __i) const { return 0; }
 
73815
#line 2770 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73816
};
 
73817
 
 
73818
/** \class CT_ArgNameList CTree.h Puma/CTree.h
 
73819
 *  Tree node representing a K&R function parameter name list. */
 
73820
 
 
73821
#line 73822 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73822
} // closed Puma
 
73823
class CCExprResolve;
 
73824
class CExprResolve;
 
73825
class WinIfExists;
 
73826
class WinImportHandler;
 
73827
class WinMacros;
 
73828
class WinAsm;
 
73829
class WinDeclSpecs;
 
73830
class WinMemberExplSpec;
 
73831
class WinTypeKeywords;
 
73832
class WinFriend;
 
73833
class ExtAC;
 
73834
class ExtACBuilderCoupling;
 
73835
class ExtACSyntaxCoupling;
 
73836
class ExtACTree;
 
73837
class ExtACKeywords;
 
73838
class ExtGnu;
 
73839
class PragmaOnceUnitState;
 
73840
class PragmaOnce;
 
73841
class CMatchSyntax;
 
73842
namespace Puma {
 
73843
 
 
73844
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73845
class CT_ArgNameList : public CT_ArgDeclList {
 
73846
#line 73847 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73847
  friend class ::CCExprResolve;
 
73848
  friend class ::CExprResolve;
 
73849
  friend class ::WinIfExists;
 
73850
  friend class ::WinImportHandler;
 
73851
  friend class ::WinMacros;
 
73852
  friend class ::WinAsm;
 
73853
  friend class ::WinDeclSpecs;
 
73854
  friend class ::WinMemberExplSpec;
 
73855
  friend class ::WinTypeKeywords;
 
73856
  friend class ::WinFriend;
 
73857
  friend class ::ExtAC;
 
73858
  friend class ::ExtACBuilderCoupling;
 
73859
  friend class ::ExtACSyntaxCoupling;
 
73860
  friend class ::ExtACTree;
 
73861
  friend class ::ExtACKeywords;
 
73862
  friend class ::ExtGnu;
 
73863
  friend class ::PragmaOnceUnitState;
 
73864
  friend class ::PragmaOnce;
 
73865
  friend class ::CMatchSyntax;
 
73866
 
 
73867
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73868
 
 
73869
public:
 
73870
  /** Constructor. */
 
73871
  CT_ArgNameList () : CT_ArgDeclList () {}
 
73872
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73873
  static const char *NodeId ();
 
73874
  /** Get the name of the node. Can be compared with NodeId(). */
 
73875
  const char *NodeName () const { return NodeId (); }
 
73876
public:
 
73877
  typedef AC::TLE __AttrTypes;
 
73878
  const char *__attr_name (unsigned i) const { return 0; }
 
73879
  const void *__attr (unsigned __i) const { return 0; }
 
73880
#line 2782 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73881
};
 
73882
 
 
73883
/** \class CT_NamespaceDef CTree.h Puma/CTree.h
 
73884
 *  Tree node representing a namespace definition.
 
73885
 *  Example: \code namespace a {} \endcode */
 
73886
 
 
73887
#line 73888 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73888
} // closed Puma
 
73889
class CCExprResolve;
 
73890
class CExprResolve;
 
73891
class WinIfExists;
 
73892
class WinImportHandler;
 
73893
class WinMacros;
 
73894
class WinAsm;
 
73895
class WinDeclSpecs;
 
73896
class WinMemberExplSpec;
 
73897
class WinTypeKeywords;
 
73898
class WinFriend;
 
73899
class ExtAC;
 
73900
class ExtACBuilderCoupling;
 
73901
class ExtACSyntaxCoupling;
 
73902
class ExtACTree;
 
73903
class ExtACKeywords;
 
73904
class ExtGnu;
 
73905
class PragmaOnceUnitState;
 
73906
class PragmaOnce;
 
73907
class CMatchSyntax;
 
73908
namespace Puma {
 
73909
 
 
73910
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73911
class CT_NamespaceDef : public CT_Decl, public CSemObject {
 
73912
#line 73913 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73913
  friend class ::CCExprResolve;
 
73914
  friend class ::CExprResolve;
 
73915
  friend class ::WinIfExists;
 
73916
  friend class ::WinImportHandler;
 
73917
  friend class ::WinMacros;
 
73918
  friend class ::WinAsm;
 
73919
  friend class ::WinDeclSpecs;
 
73920
  friend class ::WinMemberExplSpec;
 
73921
  friend class ::WinTypeKeywords;
 
73922
  friend class ::WinFriend;
 
73923
  friend class ::ExtAC;
 
73924
  friend class ::ExtACBuilderCoupling;
 
73925
  friend class ::ExtACSyntaxCoupling;
 
73926
  friend class ::ExtACTree;
 
73927
  friend class ::ExtACKeywords;
 
73928
  friend class ::ExtGnu;
 
73929
  friend class ::PragmaOnceUnitState;
 
73930
  friend class ::PragmaOnce;
 
73931
  friend class ::CMatchSyntax;
 
73932
 
 
73933
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73934
 
 
73935
  CTree *sons[3]; // ns, name, members
 
73936
 
 
73937
public:
 
73938
  /** Constructor.
 
73939
   *  \param n The keyword 'namespace'.
 
73940
   *  \param nm The name of the namespace. */
 
73941
  CT_NamespaceDef (CTree *n, CTree *nm) {
 
73942
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], 0); 
 
73943
  }
 
73944
  /** Constructor.
 
73945
   *  \param n The keyword 'namespace'.
 
73946
   *  \param nm The name of the namespace. 
 
73947
   *  \param m The namespace member declarations list. */
 
73948
  CT_NamespaceDef (CTree *n, CTree *nm, CTree *m) {
 
73949
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], m); 
 
73950
  }
 
73951
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
73952
  static const char *NodeId ();
 
73953
  /** Get the name of the node. Can be compared with NodeId(). */
 
73954
  const char *NodeName () const { return NodeId (); }
 
73955
  /** Get the number of sons. */
 
73956
  int Sons () const { return CTree::Sons (sons, 3); }
 
73957
  /** Get the n-th son.
 
73958
   *  \param n The index of the son.
 
73959
   *  \return The n-th son or NULL. */
 
73960
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
73961
  /** Set the namespace member declarations list. */
 
73962
  void Members (CTree *m) { AddSon (sons[2], m); }
 
73963
  /** Get the namespace member declarations list. */
 
73964
  CT_MembList *Members () const { return (CT_MembList*)sons[2]; }
 
73965
  /** Get the name of the namespace. */
 
73966
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
73967
  /** Get the semantic information about the namespace. */
 
73968
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
73969
  /** Replace a son.
 
73970
   *  \param old_son The son to replace.
 
73971
   *  \param new_son The new son. */
 
73972
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
73973
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
73974
  }
 
73975
public:
 
73976
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
73977
  const char *__attr_name (unsigned i) const {
 
73978
    static const char *names[] = { "sons" }; return names[i];
 
73979
  }
 
73980
  const void *__attr (unsigned __i) const {
 
73981
    switch (__i) { case 0: return &sons; default: return 0; }
 
73982
  }
 
73983
#line 2828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
73984
};
 
73985
 
 
73986
/** \class CT_NamespaceAliasDef CTree.h Puma/CTree.h
 
73987
 *  Tree node representing a namespace alias definition.
 
73988
 *  Example: \code namespace b = a; \endcode */
 
73989
 
 
73990
#line 73991 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
73991
} // closed Puma
 
73992
class CCExprResolve;
 
73993
class CExprResolve;
 
73994
class WinIfExists;
 
73995
class WinImportHandler;
 
73996
class WinMacros;
 
73997
class WinAsm;
 
73998
class WinDeclSpecs;
 
73999
class WinMemberExplSpec;
 
74000
class WinTypeKeywords;
 
74001
class WinFriend;
 
74002
class ExtAC;
 
74003
class ExtACBuilderCoupling;
 
74004
class ExtACSyntaxCoupling;
 
74005
class ExtACTree;
 
74006
class ExtACKeywords;
 
74007
class ExtGnu;
 
74008
class PragmaOnceUnitState;
 
74009
class PragmaOnce;
 
74010
class CMatchSyntax;
 
74011
namespace Puma {
 
74012
 
 
74013
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74014
class CT_NamespaceAliasDef : public CT_Decl, public CSemObject {
 
74015
#line 74016 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74016
  friend class ::CCExprResolve;
 
74017
  friend class ::CExprResolve;
 
74018
  friend class ::WinIfExists;
 
74019
  friend class ::WinImportHandler;
 
74020
  friend class ::WinMacros;
 
74021
  friend class ::WinAsm;
 
74022
  friend class ::WinDeclSpecs;
 
74023
  friend class ::WinMemberExplSpec;
 
74024
  friend class ::WinTypeKeywords;
 
74025
  friend class ::WinFriend;
 
74026
  friend class ::ExtAC;
 
74027
  friend class ::ExtACBuilderCoupling;
 
74028
  friend class ::ExtACSyntaxCoupling;
 
74029
  friend class ::ExtACTree;
 
74030
  friend class ::ExtACKeywords;
 
74031
  friend class ::ExtGnu;
 
74032
  friend class ::PragmaOnceUnitState;
 
74033
  friend class ::PragmaOnce;
 
74034
  friend class ::CMatchSyntax;
 
74035
 
 
74036
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74037
 
 
74038
  CTree *sons[5]; // ns, alias, assign, name, semi_colon
 
74039
 
 
74040
public:
 
74041
  /** Constructor.
 
74042
   *  \param n The keyword 'namespace'.
 
74043
   *  \param a The name of the namespace alias.
 
74044
   *  \param as The assignment operator '='.
 
74045
   *  \param nm The name of the original namespace.
 
74046
   *  \param s The trailing semi-colon. */
 
74047
  CT_NamespaceAliasDef (CTree *n, CTree *a, CTree *as, CTree *nm, CTree *s) {
 
74048
    AddSon (sons[0], n); AddSon (sons[1], a); AddSon (sons[2], as); 
 
74049
    AddSon (sons[3], nm); AddSon (sons[4], s); 
 
74050
  }
 
74051
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
74052
  static const char *NodeId ();
 
74053
  /** Get the name of the node. Can be compared with NodeId(). */
 
74054
  const char *NodeName () const { return NodeId (); }
 
74055
  /** Get the number of sons. */
 
74056
  int Sons () const { return 5; }
 
74057
  /** Get the n-th son.
 
74058
   *  \param n The index of the son.
 
74059
   *  \return The n-th son or NULL. */
 
74060
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
74061
  /** Get the name of the original namespace. */
 
74062
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[3]; }
 
74063
  /** Get the name of the namespace alias. */
 
74064
  CT_SimpleName *Alias () const { return (CT_SimpleName*)sons[1]; }
 
74065
  /** Get the semantic information about the namespace alias. */
 
74066
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
74067
  /** Replace a son.
 
74068
   *  \param old_son The son to replace.
 
74069
   *  \param new_son The new son. */
 
74070
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
74071
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
74072
  }
 
74073
public:
 
74074
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
74075
  const char *__attr_name (unsigned i) const {
 
74076
    static const char *names[] = { "sons" }; return names[i];
 
74077
  }
 
74078
  const void *__attr (unsigned __i) const {
 
74079
    switch (__i) { case 0: return &sons; default: return 0; }
 
74080
  }
 
74081
#line 2869 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74082
};
 
74083
 
 
74084
/** \class CT_UsingDirective CTree.h Puma/CTree.h
 
74085
 *  Tree node representing a namespace using directive.
 
74086
 *  Example: \code using namespace std; \endcode */
 
74087
 
 
74088
#line 74089 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74089
} // closed Puma
 
74090
class CCExprResolve;
 
74091
class CExprResolve;
 
74092
class WinIfExists;
 
74093
class WinImportHandler;
 
74094
class WinMacros;
 
74095
class WinAsm;
 
74096
class WinDeclSpecs;
 
74097
class WinMemberExplSpec;
 
74098
class WinTypeKeywords;
 
74099
class WinFriend;
 
74100
class ExtAC;
 
74101
class ExtACBuilderCoupling;
 
74102
class ExtACSyntaxCoupling;
 
74103
class ExtACTree;
 
74104
class ExtACKeywords;
 
74105
class ExtGnu;
 
74106
class PragmaOnceUnitState;
 
74107
class PragmaOnce;
 
74108
class CMatchSyntax;
 
74109
namespace Puma {
 
74110
 
 
74111
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74112
class CT_UsingDirective : public CT_Decl {
 
74113
#line 74114 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74114
  friend class ::CCExprResolve;
 
74115
  friend class ::CExprResolve;
 
74116
  friend class ::WinIfExists;
 
74117
  friend class ::WinImportHandler;
 
74118
  friend class ::WinMacros;
 
74119
  friend class ::WinAsm;
 
74120
  friend class ::WinDeclSpecs;
 
74121
  friend class ::WinMemberExplSpec;
 
74122
  friend class ::WinTypeKeywords;
 
74123
  friend class ::WinFriend;
 
74124
  friend class ::ExtAC;
 
74125
  friend class ::ExtACBuilderCoupling;
 
74126
  friend class ::ExtACSyntaxCoupling;
 
74127
  friend class ::ExtACTree;
 
74128
  friend class ::ExtACKeywords;
 
74129
  friend class ::ExtGnu;
 
74130
  friend class ::PragmaOnceUnitState;
 
74131
  friend class ::PragmaOnce;
 
74132
  friend class ::CMatchSyntax;
 
74133
 
 
74134
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74135
 
 
74136
  CTree *sons[4]; // using, ns, name, semi_colon
 
74137
 
 
74138
public:
 
74139
  /** Constructor. 
 
74140
   *  \param u The keyword 'using'.
 
74141
   *  \param ns The keyword 'namespace'. 
 
74142
   *  \param n The name of the namespace.
 
74143
   *  \param s The trailing semi-colon. */
 
74144
  CT_UsingDirective (CTree *u, CTree *ns, CTree *n, CTree *s) {
 
74145
    AddSon (sons[0], u); AddSon (sons[1], ns); AddSon (sons[2], n); 
 
74146
    AddSon (sons[3], s); 
 
74147
  }
 
74148
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
74149
  static const char *NodeId ();
 
74150
  /** Get the name of the node. Can be compared with NodeId(). */
 
74151
  const char *NodeName () const { return NodeId (); }
 
74152
  /** Get the number of sons. */
 
74153
  int Sons () const { return 4; }
 
74154
  /** Get the n-th son.
 
74155
   *  \param n The index of the son.
 
74156
   *  \return The n-th son or NULL. */
 
74157
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
74158
  /** Get the name of the namespace. */
 
74159
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
74160
  /** Replace a son.
 
74161
   *  \param old_son The son to replace.
 
74162
   *  \param new_son The new son. */
 
74163
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
74164
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
74165
  }
 
74166
public:
 
74167
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
74168
  const char *__attr_name (unsigned i) const {
 
74169
    static const char *names[] = { "sons" }; return names[i];
 
74170
  }
 
74171
  const void *__attr (unsigned __i) const {
 
74172
    switch (__i) { case 0: return &sons; default: return 0; }
 
74173
  }
 
74174
#line 2905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74175
};
 
74176
 
 
74177
/*****************************************************************************/
 
74178
/*                                                                           */
 
74179
/*                              Declarators                                  */
 
74180
/*                                                                           */
 
74181
/*****************************************************************************/
 
74182
 
 
74183
/** \class CT_Declarator CTree.h Puma/CTree.h
 
74184
 *  Base class for all tree nodes representing declarators. */
 
74185
 
 
74186
#line 74187 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74187
} // closed Puma
 
74188
class CCExprResolve;
 
74189
class CExprResolve;
 
74190
class WinIfExists;
 
74191
class WinImportHandler;
 
74192
class WinMacros;
 
74193
class WinAsm;
 
74194
class WinDeclSpecs;
 
74195
class WinMemberExplSpec;
 
74196
class WinTypeKeywords;
 
74197
class WinFriend;
 
74198
class ExtAC;
 
74199
class ExtACBuilderCoupling;
 
74200
class ExtACSyntaxCoupling;
 
74201
class ExtACTree;
 
74202
class ExtACKeywords;
 
74203
class ExtGnu;
 
74204
class PragmaOnceUnitState;
 
74205
class PragmaOnce;
 
74206
class CMatchSyntax;
 
74207
namespace Puma {
 
74208
 
 
74209
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74210
class CT_Declarator : public CTree {
 
74211
#line 74212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74212
  friend class ::CCExprResolve;
 
74213
  friend class ::CExprResolve;
 
74214
  friend class ::WinIfExists;
 
74215
  friend class ::WinImportHandler;
 
74216
  friend class ::WinMacros;
 
74217
  friend class ::WinAsm;
 
74218
  friend class ::WinDeclSpecs;
 
74219
  friend class ::WinMemberExplSpec;
 
74220
  friend class ::WinTypeKeywords;
 
74221
  friend class ::WinFriend;
 
74222
  friend class ::ExtAC;
 
74223
  friend class ::ExtACBuilderCoupling;
 
74224
  friend class ::ExtACSyntaxCoupling;
 
74225
  friend class ::ExtACTree;
 
74226
  friend class ::ExtACKeywords;
 
74227
  friend class ::ExtGnu;
 
74228
  friend class ::PragmaOnceUnitState;
 
74229
  friend class ::PragmaOnce;
 
74230
  friend class ::CMatchSyntax;
 
74231
 
 
74232
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74233
 
 
74234
protected:
 
74235
  /** Constructor. */
 
74236
  CT_Declarator () {}
 
74237
 
 
74238
public:
 
74239
  /** Get the declarator. */
 
74240
  virtual CTree *Declarator () const = 0;
 
74241
  /** Get this. */
 
74242
  virtual CT_Declarator *IsDeclarator () { return this; }
 
74243
  /** Get the declared name. */
 
74244
  CT_SimpleName *Name ();
 
74245
  /** Get the declared name and set last_declarator to 
 
74246
   *  the declarator containing the name. 
 
74247
   *  \param last_declarator To be set to the declarator containing the name. */
 
74248
  CT_SimpleName *Name (CT_Declarator *&last_declarator);
 
74249
public:
 
74250
  typedef AC::TLE __AttrTypes;
 
74251
  const char *__attr_name (unsigned i) const { return 0; }
 
74252
  const void *__attr (unsigned __i) const { return 0; }
 
74253
#line 2931 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74254
};
 
74255
 
 
74256
/** \class CT_InitDeclarator CTree.h Puma/CTree.h
 
74257
 *  Tree node representing a declarator with initializer.
 
74258
 *  Example: \code int *i = 0; \endcode */
 
74259
 
 
74260
#line 74261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74261
} // closed Puma
 
74262
class CCExprResolve;
 
74263
class CExprResolve;
 
74264
class WinIfExists;
 
74265
class WinImportHandler;
 
74266
class WinMacros;
 
74267
class WinAsm;
 
74268
class WinDeclSpecs;
 
74269
class WinMemberExplSpec;
 
74270
class WinTypeKeywords;
 
74271
class WinFriend;
 
74272
class ExtAC;
 
74273
class ExtACBuilderCoupling;
 
74274
class ExtACSyntaxCoupling;
 
74275
class ExtACTree;
 
74276
class ExtACKeywords;
 
74277
class ExtGnu;
 
74278
class PragmaOnceUnitState;
 
74279
class PragmaOnce;
 
74280
class CMatchSyntax;
 
74281
namespace Puma {
 
74282
 
 
74283
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74284
class CT_InitDeclarator : public CT_Declarator, public CSemObject {
 
74285
#line 74286 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74286
  friend class ::CCExprResolve;
 
74287
  friend class ::CExprResolve;
 
74288
  friend class ::WinIfExists;
 
74289
  friend class ::WinImportHandler;
 
74290
  friend class ::WinMacros;
 
74291
  friend class ::WinAsm;
 
74292
  friend class ::WinDeclSpecs;
 
74293
  friend class ::WinMemberExplSpec;
 
74294
  friend class ::WinTypeKeywords;
 
74295
  friend class ::WinFriend;
 
74296
  friend class ::ExtAC;
 
74297
  friend class ::ExtACBuilderCoupling;
 
74298
  friend class ::ExtACSyntaxCoupling;
 
74299
  friend class ::ExtACTree;
 
74300
  friend class ::ExtACKeywords;
 
74301
  friend class ::ExtGnu;
 
74302
  friend class ::PragmaOnceUnitState;
 
74303
  friend class ::PragmaOnce;
 
74304
  friend class ::CMatchSyntax;
 
74305
 
 
74306
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74307
 
 
74308
  CTree *sons[3]; // declarator, ext, init
 
74309
  CTree *obj_decl;
 
74310
 
 
74311
public:
 
74312
  /** Constructor.
 
74313
   *  \param d The declarator.
 
74314
   *  \param e Optional extension list.
 
74315
   *  \param i The initializer. */
 
74316
  CT_InitDeclarator (CTree *d, CTree *e = 0, CTree *i = 0) {
 
74317
    AddSon (sons[0], d); AddSon (sons[1], e); AddSon (sons[2], i);
 
74318
    AddSon (obj_decl, 0); 
 
74319
  }
 
74320
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
74321
  static const char *NodeId ();
 
74322
  /** Get the name of the node. Can be compared with NodeId(). */
 
74323
  const char *NodeName () const { return NodeId (); }
 
74324
  /** Get the number of sons. */
 
74325
  int Sons () const { return CTree::Sons (sons, 3); }
 
74326
  /** Get the n-th son.
 
74327
   *  \param n The index of the son.
 
74328
   *  \return The n-th son or NULL. */
 
74329
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
74330
  /** Get the declarator. */
 
74331
  CTree *Declarator () const { return sons[0]; }
 
74332
  /** Get the extensions list. */
 
74333
  CTree *Extension () const { return sons[1]; }
 
74334
  /** Get the initializer. */
 
74335
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
74336
  /** Get the semantic information about the declared object. */
 
74337
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
74338
  /** Get the object declaration node containing the declarator. */
 
74339
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
74340
  /** Set the initializer. */
 
74341
  void Initializer (CTree* i) { AddSon (sons[2], i); }
 
74342
  /** Set the extensions list. */
 
74343
  void Extension (CTree* e) { AddSon (sons[1], e); }
 
74344
  /** Set the object declaration node containing the declarator. 
 
74345
   *  \param od The object declaration node. */
 
74346
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
74347
  /** Replace a son.
 
74348
   *  \param old_son The son to replace.
 
74349
   *  \param new_son The new son. */
 
74350
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
74351
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
74352
  }
 
74353
public:
 
74354
  typedef AC::TL<Puma::CTree * [3],AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
74355
  const char *__attr_name (unsigned i) const {
 
74356
    static const char *names[] = { "sons", "obj_decl" }; return names[i];
 
74357
  }
 
74358
  const void *__attr (unsigned __i) const {
 
74359
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; default: return 0; }
 
74360
  }
 
74361
#line 2982 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74362
};
 
74363
 
 
74364
/** \class CT_BracedDeclarator CTree.h Puma/CTree.h
 
74365
 *  Tree node representing a braced declarator.
 
74366
 *  Example: \code int (i); \endcode */
 
74367
 
 
74368
#line 74369 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74369
} // closed Puma
 
74370
class CCExprResolve;
 
74371
class CExprResolve;
 
74372
class WinIfExists;
 
74373
class WinImportHandler;
 
74374
class WinMacros;
 
74375
class WinAsm;
 
74376
class WinDeclSpecs;
 
74377
class WinMemberExplSpec;
 
74378
class WinTypeKeywords;
 
74379
class WinFriend;
 
74380
class ExtAC;
 
74381
class ExtACBuilderCoupling;
 
74382
class ExtACSyntaxCoupling;
 
74383
class ExtACTree;
 
74384
class ExtACKeywords;
 
74385
class ExtGnu;
 
74386
class PragmaOnceUnitState;
 
74387
class PragmaOnce;
 
74388
class CMatchSyntax;
 
74389
namespace Puma {
 
74390
 
 
74391
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74392
class CT_BracedDeclarator : public CT_Declarator {
 
74393
#line 74394 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74394
  friend class ::CCExprResolve;
 
74395
  friend class ::CExprResolve;
 
74396
  friend class ::WinIfExists;
 
74397
  friend class ::WinImportHandler;
 
74398
  friend class ::WinMacros;
 
74399
  friend class ::WinAsm;
 
74400
  friend class ::WinDeclSpecs;
 
74401
  friend class ::WinMemberExplSpec;
 
74402
  friend class ::WinTypeKeywords;
 
74403
  friend class ::WinFriend;
 
74404
  friend class ::ExtAC;
 
74405
  friend class ::ExtACBuilderCoupling;
 
74406
  friend class ::ExtACSyntaxCoupling;
 
74407
  friend class ::ExtACTree;
 
74408
  friend class ::ExtACKeywords;
 
74409
  friend class ::ExtGnu;
 
74410
  friend class ::PragmaOnceUnitState;
 
74411
  friend class ::PragmaOnce;
 
74412
  friend class ::CMatchSyntax;
 
74413
 
 
74414
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74415
 
 
74416
  CTree *sons[4]; // open, win_specs, declarator, close
 
74417
 
 
74418
public:
 
74419
  /** Constructor.
 
74420
   *  \param o Left parenthesis around the declarator.
 
74421
   *  \param d The declarator.
 
74422
   *  \param c Right parenthesis around the declarator. */
 
74423
  CT_BracedDeclarator (CTree *o, CTree *d, CTree *c) {
 
74424
    AddSon (sons[0], o); AddSon (sons[1], 0); 
 
74425
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
74426
  }
 
74427
  /** Constructor.
 
74428
   *  \param o Left parenthesis around the declarator.
 
74429
   *  \param ws Declaration specifiers.
 
74430
   *  \param d The declarator.
 
74431
   *  \param c Right parenthesis around the declarator. */
 
74432
  CT_BracedDeclarator (CTree *o, CTree *ws, CTree *d, CTree *c) {
 
74433
    AddSon (sons[0], o); AddSon (sons[1], ws); 
 
74434
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
74435
  }
 
74436
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
74437
  static const char *NodeId ();
 
74438
  /** Get the name of the node. Can be compared with NodeId(). */
 
74439
  const char *NodeName () const { return NodeId (); }
 
74440
  /** Get the number of sons. */
 
74441
  int Sons () const { return CTree::Sons (sons, 4); }
 
74442
  /** Get the n-th son.
 
74443
   *  \param n The index of the son.
 
74444
   *  \return The n-th son or NULL. */
 
74445
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
74446
  /** Get the declarator. */
 
74447
  CTree *Declarator () const { return sons[2]; }
 
74448
  /** Replace a son.
 
74449
   *  \param old_son The son to replace.
 
74450
   *  \param new_son The new son. */
 
74451
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
74452
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
74453
  }
 
74454
public:
 
74455
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
74456
  const char *__attr_name (unsigned i) const {
 
74457
    static const char *names[] = { "sons" }; return names[i];
 
74458
  }
 
74459
  const void *__attr (unsigned __i) const {
 
74460
    switch (__i) { case 0: return &sons; default: return 0; }
 
74461
  }
 
74462
#line 3026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74463
};
 
74464
 
 
74465
/** \class CT_ArrayDelimiter CTree.h Puma/CTree.h
 
74466
 *  Tree node representing an array delimiter.
 
74467
 *  Example: \code [10] \endcode or \code [*] \endcode */
 
74468
 
 
74469
#line 74470 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74470
} // closed Puma
 
74471
class CCExprResolve;
 
74472
class CExprResolve;
 
74473
class WinIfExists;
 
74474
class WinImportHandler;
 
74475
class WinMacros;
 
74476
class WinAsm;
 
74477
class WinDeclSpecs;
 
74478
class WinMemberExplSpec;
 
74479
class WinTypeKeywords;
 
74480
class WinFriend;
 
74481
class ExtAC;
 
74482
class ExtACBuilderCoupling;
 
74483
class ExtACSyntaxCoupling;
 
74484
class ExtACTree;
 
74485
class ExtACKeywords;
 
74486
class ExtGnu;
 
74487
class PragmaOnceUnitState;
 
74488
class PragmaOnce;
 
74489
class CMatchSyntax;
 
74490
namespace Puma {
 
74491
 
 
74492
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74493
class CT_ArrayDelimiter : public CTree {
 
74494
#line 74495 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74495
  friend class ::CCExprResolve;
 
74496
  friend class ::CExprResolve;
 
74497
  friend class ::WinIfExists;
 
74498
  friend class ::WinImportHandler;
 
74499
  friend class ::WinMacros;
 
74500
  friend class ::WinAsm;
 
74501
  friend class ::WinDeclSpecs;
 
74502
  friend class ::WinMemberExplSpec;
 
74503
  friend class ::WinTypeKeywords;
 
74504
  friend class ::WinFriend;
 
74505
  friend class ::ExtAC;
 
74506
  friend class ::ExtACBuilderCoupling;
 
74507
  friend class ::ExtACSyntaxCoupling;
 
74508
  friend class ::ExtACTree;
 
74509
  friend class ::ExtACKeywords;
 
74510
  friend class ::ExtGnu;
 
74511
  friend class ::PragmaOnceUnitState;
 
74512
  friend class ::PragmaOnce;
 
74513
  friend class ::CMatchSyntax;
 
74514
 
 
74515
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74516
 
 
74517
  CTree *sons[4]; // star, static, quals, expr
 
74518
  bool pos0;
 
74519
 
 
74520
public:
 
74521
  /** Constructor.
 
74522
   *  \param m The operator '*'.
 
74523
   *  \param s The keyword 'static'.
 
74524
   *  \param q The const/volatile qualifier sequence. 
 
74525
   *  \param e The array size expression. 
 
74526
   *  \param p Position of keyword 'static', true means before the
 
74527
   *           qualifier sequence and false means behind it. */
 
74528
  CT_ArrayDelimiter (CTree *m, CTree *s, CTree *q, CTree *e, bool p = false) {
 
74529
    AddSon (sons[0], m); AddSon (sons[1], s); 
 
74530
    AddSon (sons[2], q); AddSon (sons[3], e); pos0 = p;
 
74531
  }
 
74532
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
74533
  static const char *NodeId ();
 
74534
  /** Get the name of the node. Can be compared with NodeId(). */
 
74535
  const char *NodeName () const { return NodeId (); }
 
74536
  /** Get the number of sons. */
 
74537
  int Sons () const { return CTree::Sons (sons, 4); }
 
74538
  /** Get the n-th son.
 
74539
   *  \param n The index of the son.
 
74540
   *  \return The n-th son or NULL. */
 
74541
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
74542
  /** Get the operator '*'. */
 
74543
  CT_Token *Star () const { return (CT_Token*)sons[0]; }
 
74544
  /** Get the keyword 'static'. */
 
74545
  CT_Token *Static () const { return (CT_Token*)sons[pos0?2:1]; }
 
74546
  /** Get the const/volatile qualifier sequence. */
 
74547
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[pos0?1:2]; }
 
74548
  /** Get the array size expression. */
 
74549
  CTree *Expr () const { return sons[3]; }
 
74550
  /** Replace a son.
 
74551
   *  \param old_son The son to replace.
 
74552
   *  \param new_son The new son. */
 
74553
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
74554
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
74555
  }
 
74556
public:
 
74557
  typedef AC::TL<Puma::CTree * [4],AC::TL<bool,AC::TLE > > __AttrTypes;
 
74558
  const char *__attr_name (unsigned i) const {
 
74559
    static const char *names[] = { "sons", "pos0" }; return names[i];
 
74560
  }
 
74561
  const void *__attr (unsigned __i) const {
 
74562
    switch (__i) { case 0: return &sons; case 1: return &pos0; default: return 0; }
 
74563
  }
 
74564
#line 3071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74565
};
 
74566
 
 
74567
/** \class CT_ArrayDeclarator CTree.h Puma/CTree.h
 
74568
 *  Tree node representing an array declarator.
 
74569
 *  Example: \code a[10] \endcode */
 
74570
 
 
74571
#line 74572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74572
} // closed Puma
 
74573
class CCExprResolve;
 
74574
class CExprResolve;
 
74575
class WinIfExists;
 
74576
class WinImportHandler;
 
74577
class WinMacros;
 
74578
class WinAsm;
 
74579
class WinDeclSpecs;
 
74580
class WinMemberExplSpec;
 
74581
class WinTypeKeywords;
 
74582
class WinFriend;
 
74583
class ExtAC;
 
74584
class ExtACBuilderCoupling;
 
74585
class ExtACSyntaxCoupling;
 
74586
class ExtACTree;
 
74587
class ExtACKeywords;
 
74588
class ExtGnu;
 
74589
class PragmaOnceUnitState;
 
74590
class PragmaOnce;
 
74591
class CMatchSyntax;
 
74592
namespace Puma {
 
74593
 
 
74594
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74595
class CT_ArrayDeclarator : public CT_Declarator, public CSemValue {
 
74596
#line 74597 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74597
  friend class ::CCExprResolve;
 
74598
  friend class ::CExprResolve;
 
74599
  friend class ::WinIfExists;
 
74600
  friend class ::WinImportHandler;
 
74601
  friend class ::WinMacros;
 
74602
  friend class ::WinAsm;
 
74603
  friend class ::WinDeclSpecs;
 
74604
  friend class ::WinMemberExplSpec;
 
74605
  friend class ::WinTypeKeywords;
 
74606
  friend class ::WinFriend;
 
74607
  friend class ::ExtAC;
 
74608
  friend class ::ExtACBuilderCoupling;
 
74609
  friend class ::ExtACSyntaxCoupling;
 
74610
  friend class ::ExtACTree;
 
74611
  friend class ::ExtACKeywords;
 
74612
  friend class ::ExtGnu;
 
74613
  friend class ::PragmaOnceUnitState;
 
74614
  friend class ::PragmaOnce;
 
74615
  friend class ::CMatchSyntax;
 
74616
 
 
74617
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74618
 
 
74619
  CTree *sons[4]; // declarator, open, delim, close
 
74620
 
 
74621
public:
 
74622
  /** Constructor.
 
74623
   *  \param d The array declarator.
 
74624
   *  \param o Left bracket around the delimiter.
 
74625
   *  \param ad The array delimiter.
 
74626
   *  \param c Right bracket around the delimiter. */
 
74627
  CT_ArrayDeclarator (CTree *d, CTree *o, CTree *ad, CTree *c) {
 
74628
    AddSon (sons[0], d); AddSon (sons[1], o); 
 
74629
    AddSon (sons[2], ad); AddSon (sons[3], c); 
 
74630
  }
 
74631
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
74632
  static const char *NodeId ();
 
74633
  /** Get the name of the node. Can be compared with NodeId(). */
 
74634
  const char *NodeName () const { return NodeId (); }
 
74635
  /** Get the number of sons. */
 
74636
  int Sons () const { return 4; }
 
74637
  /** Get the n-th son.
 
74638
   *  \param n The index of the son.
 
74639
   *  \return The n-th son or NULL. */
 
74640
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
74641
  /** Get the array declarator. */
 
74642
  CTree *Declarator () const { return sons[0]; }
 
74643
  /** Get the array delimiter. */
 
74644
  CT_ArrayDelimiter *Delimiter () const 
 
74645
   { return (CT_ArrayDelimiter*)sons[2]; }
 
74646
  /** Replace a son.
 
74647
   *  \param old_son The son to replace.
 
74648
   *  \param new_son The new son. */
 
74649
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
74650
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
74651
  }
 
74652
  /** Get the semantic information for the type of the declared array. */
 
74653
  CTypeInfo *Type () const { return type; }
 
74654
  /** Get the semantic information for the value of the declared array. */
 
74655
  CExprValue *Value () const { return value; }
 
74656
  /** Get the semantic information object. */
 
74657
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
74658
public:
 
74659
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
74660
  const char *__attr_name (unsigned i) const {
 
74661
    static const char *names[] = { "sons" }; return names[i];
 
74662
  }
 
74663
  const void *__attr (unsigned __i) const {
 
74664
    switch (__i) { case 0: return &sons; default: return 0; }
 
74665
  }
 
74666
#line 3116 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74667
};
 
74668
 
 
74669
/** \class CT_FctDeclarator CTree.h Puma/CTree.h
 
74670
 *  Tree node representing a function declarator.
 
74671
 *  Example: \code f(int a) const \endcode */
 
74672
 
 
74673
#line 74674 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74674
} // closed Puma
 
74675
class CCExprResolve;
 
74676
class CExprResolve;
 
74677
class WinIfExists;
 
74678
class WinImportHandler;
 
74679
class WinMacros;
 
74680
class WinAsm;
 
74681
class WinDeclSpecs;
 
74682
class WinMemberExplSpec;
 
74683
class WinTypeKeywords;
 
74684
class WinFriend;
 
74685
class ExtAC;
 
74686
class ExtACBuilderCoupling;
 
74687
class ExtACSyntaxCoupling;
 
74688
class ExtACTree;
 
74689
class ExtACKeywords;
 
74690
class ExtGnu;
 
74691
class PragmaOnceUnitState;
 
74692
class PragmaOnce;
 
74693
class CMatchSyntax;
 
74694
namespace Puma {
 
74695
 
 
74696
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74697
class CT_FctDeclarator : public CT_Declarator {
 
74698
#line 74699 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74699
  friend class ::CCExprResolve;
 
74700
  friend class ::CExprResolve;
 
74701
  friend class ::WinIfExists;
 
74702
  friend class ::WinImportHandler;
 
74703
  friend class ::WinMacros;
 
74704
  friend class ::WinAsm;
 
74705
  friend class ::WinDeclSpecs;
 
74706
  friend class ::WinMemberExplSpec;
 
74707
  friend class ::WinTypeKeywords;
 
74708
  friend class ::WinFriend;
 
74709
  friend class ::ExtAC;
 
74710
  friend class ::ExtACBuilderCoupling;
 
74711
  friend class ::ExtACSyntaxCoupling;
 
74712
  friend class ::ExtACTree;
 
74713
  friend class ::ExtACKeywords;
 
74714
  friend class ::ExtGnu;
 
74715
  friend class ::PragmaOnceUnitState;
 
74716
  friend class ::PragmaOnce;
 
74717
  friend class ::CMatchSyntax;
 
74718
 
 
74719
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74720
 
 
74721
  CTree *sons[4]; // declarator, args, cv_quals, exception_specs
 
74722
 
 
74723
public:
 
74724
  /** Constructor.
 
74725
   *  \param d The function declarator.
 
74726
   *  \param args The function parameter list.
 
74727
   *  \param cv The function qualifiers.
 
74728
   *  \param es The exception specifier. */
 
74729
  CT_FctDeclarator (CTree *d, CTree *args, CTree *cv, CTree *es) {
 
74730
    AddSon (sons[0], d); AddSon (sons[1], args); 
 
74731
    AddSon (sons[2], cv); AddSon (sons[3], es); 
 
74732
  }
 
74733
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
74734
  static const char *NodeId ();
 
74735
  /** Get the name of the node. Can be compared with NodeId(). */
 
74736
  const char *NodeName () const { return NodeId (); }
 
74737
  /** Get the number of sons. */
 
74738
  int Sons () const { return CTree::Sons (sons, 4); }
 
74739
  /** Get the n-th son.
 
74740
   *  \param n The index of the son.
 
74741
   *  \return The n-th son or NULL. */
 
74742
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
74743
  /** Get the function declarator. */
 
74744
  CTree *Declarator () const { return sons[0]; }
 
74745
  /** Get the function parameter list. */
 
74746
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
74747
  /** Get the function qualifier list. */
 
74748
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[2]; }
 
74749
  /** Get the exception specifier. */
 
74750
  CT_ExceptionSpec *ExceptionSpecs () const { return (CT_ExceptionSpec*)sons[3]; }
 
74751
  /** Replace a son.
 
74752
   *  \param old_son The son to replace.
 
74753
   *  \param new_son The new son. */
 
74754
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
74755
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
74756
  }
 
74757
public:
 
74758
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
74759
  const char *__attr_name (unsigned i) const {
 
74760
    static const char *names[] = { "sons" }; return names[i];
 
74761
  }
 
74762
  const void *__attr (unsigned __i) const {
 
74763
    switch (__i) { case 0: return &sons; default: return 0; }
 
74764
  }
 
74765
#line 3158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74766
};
 
74767
 
 
74768
/** \class CT_RefDeclarator CTree.h Puma/CTree.h
 
74769
 *  Tree node representing a reference declarator.
 
74770
 *  Example: \code &a \endcode */
 
74771
 
 
74772
#line 74773 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74773
} // closed Puma
 
74774
class CCExprResolve;
 
74775
class CExprResolve;
 
74776
class WinIfExists;
 
74777
class WinImportHandler;
 
74778
class WinMacros;
 
74779
class WinAsm;
 
74780
class WinDeclSpecs;
 
74781
class WinMemberExplSpec;
 
74782
class WinTypeKeywords;
 
74783
class WinFriend;
 
74784
class ExtAC;
 
74785
class ExtACBuilderCoupling;
 
74786
class ExtACSyntaxCoupling;
 
74787
class ExtACTree;
 
74788
class ExtACKeywords;
 
74789
class ExtGnu;
 
74790
class PragmaOnceUnitState;
 
74791
class PragmaOnce;
 
74792
class CMatchSyntax;
 
74793
namespace Puma {
 
74794
 
 
74795
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74796
class CT_RefDeclarator : public CT_Declarator {
 
74797
#line 74798 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74798
  friend class ::CCExprResolve;
 
74799
  friend class ::CExprResolve;
 
74800
  friend class ::WinIfExists;
 
74801
  friend class ::WinImportHandler;
 
74802
  friend class ::WinMacros;
 
74803
  friend class ::WinAsm;
 
74804
  friend class ::WinDeclSpecs;
 
74805
  friend class ::WinMemberExplSpec;
 
74806
  friend class ::WinTypeKeywords;
 
74807
  friend class ::WinFriend;
 
74808
  friend class ::ExtAC;
 
74809
  friend class ::ExtACBuilderCoupling;
 
74810
  friend class ::ExtACSyntaxCoupling;
 
74811
  friend class ::ExtACTree;
 
74812
  friend class ::ExtACKeywords;
 
74813
  friend class ::ExtGnu;
 
74814
  friend class ::PragmaOnceUnitState;
 
74815
  friend class ::PragmaOnce;
 
74816
  friend class ::CMatchSyntax;
 
74817
 
 
74818
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74819
 
 
74820
  CTree *sons[2]; // ref, declarator
 
74821
 
 
74822
public:
 
74823
  /** Constructor.
 
74824
   *  \param r The reference operator '&'.
 
74825
   *  \param d The declarator. */
 
74826
  CT_RefDeclarator (CTree *r, CTree *d) { AddSon (sons[0], r); AddSon (sons[1], d); }
 
74827
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
74828
  static const char *NodeId ();
 
74829
  /** Get the name of the node. Can be compared with NodeId(). */
 
74830
  const char *NodeName () const { return NodeId (); }
 
74831
  /** Get the number of sons. */
 
74832
  int Sons () const { return 2; }
 
74833
  /** Get the n-th son.
 
74834
   *  \param n The index of the son.
 
74835
   *  \return The n-th son or NULL. */
 
74836
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
74837
  /** Get the declarator. */
 
74838
  CTree *Declarator () const { return sons[1]; }
 
74839
  /** Replace a son.
 
74840
   *  \param old_son The son to replace.
 
74841
   *  \param new_son The new son. */
 
74842
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
74843
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
74844
  }
 
74845
public:
 
74846
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
74847
  const char *__attr_name (unsigned i) const {
 
74848
    static const char *names[] = { "sons" }; return names[i];
 
74849
  }
 
74850
  const void *__attr (unsigned __i) const {
 
74851
    switch (__i) { case 0: return &sons; default: return 0; }
 
74852
  }
 
74853
#line 3189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74854
};
 
74855
 
 
74856
/** \class CT_PtrDeclarator CTree.h Puma/CTree.h
 
74857
 *  Tree node representing a pointer declarator.
 
74858
 *  Example: \code *a \endcode */
 
74859
 
 
74860
#line 74861 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74861
} // closed Puma
 
74862
class CCExprResolve;
 
74863
class CExprResolve;
 
74864
class WinIfExists;
 
74865
class WinImportHandler;
 
74866
class WinMacros;
 
74867
class WinAsm;
 
74868
class WinDeclSpecs;
 
74869
class WinMemberExplSpec;
 
74870
class WinTypeKeywords;
 
74871
class WinFriend;
 
74872
class ExtAC;
 
74873
class ExtACBuilderCoupling;
 
74874
class ExtACSyntaxCoupling;
 
74875
class ExtACTree;
 
74876
class ExtACKeywords;
 
74877
class ExtGnu;
 
74878
class PragmaOnceUnitState;
 
74879
class PragmaOnce;
 
74880
class CMatchSyntax;
 
74881
namespace Puma {
 
74882
 
 
74883
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74884
class CT_PtrDeclarator : public CT_Declarator {
 
74885
#line 74886 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74886
  friend class ::CCExprResolve;
 
74887
  friend class ::CExprResolve;
 
74888
  friend class ::WinIfExists;
 
74889
  friend class ::WinImportHandler;
 
74890
  friend class ::WinMacros;
 
74891
  friend class ::WinAsm;
 
74892
  friend class ::WinDeclSpecs;
 
74893
  friend class ::WinMemberExplSpec;
 
74894
  friend class ::WinTypeKeywords;
 
74895
  friend class ::WinFriend;
 
74896
  friend class ::ExtAC;
 
74897
  friend class ::ExtACBuilderCoupling;
 
74898
  friend class ::ExtACSyntaxCoupling;
 
74899
  friend class ::ExtACTree;
 
74900
  friend class ::ExtACKeywords;
 
74901
  friend class ::ExtGnu;
 
74902
  friend class ::PragmaOnceUnitState;
 
74903
  friend class ::PragmaOnce;
 
74904
  friend class ::CMatchSyntax;
 
74905
 
 
74906
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74907
 
 
74908
  CTree *sons[3]; // ptr, cv_quals, declarator
 
74909
 
 
74910
public:
 
74911
  /** Constructor.
 
74912
   *  \param p The pointer operator '*'.
 
74913
   *  \param c The const/volatile pointer qualifier sequence.
 
74914
   *  \param d The declarator. */
 
74915
  CT_PtrDeclarator (CTree *p, CTree *c, CTree *d) {
 
74916
    AddSon (sons[0], p); AddSon (sons[1], c); AddSon (sons[2], d); 
 
74917
  }
 
74918
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
74919
  static const char *NodeId ();
 
74920
  /** Get the name of the node. Can be compared with NodeId(). */
 
74921
  const char *NodeName () const { return NodeId (); }
 
74922
  /** Get the number of sons. */
 
74923
  int Sons () const { return CTree::Sons (sons, 3); }
 
74924
  /** Get the n-th son.
 
74925
   *  \param n The index of the son.
 
74926
   *  \return The n-th son or NULL. */
 
74927
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
74928
  /** Get the declarator. */
 
74929
  CTree *Declarator () const { return sons[2]; }
 
74930
  /** Get the const/volatile qualifier sequence. */
 
74931
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[1]; }
 
74932
  /** Replace a son.
 
74933
   *  \param old_son The son to replace.
 
74934
   *  \param new_son The new son. */
 
74935
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
74936
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
74937
  }
 
74938
public:
 
74939
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
74940
  const char *__attr_name (unsigned i) const {
 
74941
    static const char *names[] = { "sons" }; return names[i];
 
74942
  }
 
74943
  const void *__attr (unsigned __i) const {
 
74944
    switch (__i) { case 0: return &sons; default: return 0; }
 
74945
  }
 
74946
#line 3225 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74947
};
 
74948
 
 
74949
/** \class CT_MembPtrDeclarator CTree.h Puma/CTree.h
 
74950
 *  Tree node representing a member pointer declarator.
 
74951
 *  Example: \code *X::a \endcode */
 
74952
 
 
74953
#line 74954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74954
} // closed Puma
 
74955
class CCExprResolve;
 
74956
class CExprResolve;
 
74957
class WinIfExists;
 
74958
class WinImportHandler;
 
74959
class WinMacros;
 
74960
class WinAsm;
 
74961
class WinDeclSpecs;
 
74962
class WinMemberExplSpec;
 
74963
class WinTypeKeywords;
 
74964
class WinFriend;
 
74965
class ExtAC;
 
74966
class ExtACBuilderCoupling;
 
74967
class ExtACSyntaxCoupling;
 
74968
class ExtACTree;
 
74969
class ExtACKeywords;
 
74970
class ExtGnu;
 
74971
class PragmaOnceUnitState;
 
74972
class PragmaOnce;
 
74973
class CMatchSyntax;
 
74974
namespace Puma {
 
74975
 
 
74976
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
74977
class CT_MembPtrDeclarator : public CT_Declarator {
 
74978
#line 74979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
74979
  friend class ::CCExprResolve;
 
74980
  friend class ::CExprResolve;
 
74981
  friend class ::WinIfExists;
 
74982
  friend class ::WinImportHandler;
 
74983
  friend class ::WinMacros;
 
74984
  friend class ::WinAsm;
 
74985
  friend class ::WinDeclSpecs;
 
74986
  friend class ::WinMemberExplSpec;
 
74987
  friend class ::WinTypeKeywords;
 
74988
  friend class ::WinFriend;
 
74989
  friend class ::ExtAC;
 
74990
  friend class ::ExtACBuilderCoupling;
 
74991
  friend class ::ExtACSyntaxCoupling;
 
74992
  friend class ::ExtACTree;
 
74993
  friend class ::ExtACKeywords;
 
74994
  friend class ::ExtGnu;
 
74995
  friend class ::PragmaOnceUnitState;
 
74996
  friend class ::PragmaOnce;
 
74997
  friend class ::CMatchSyntax;
 
74998
 
 
74999
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75000
 
 
75001
  CTree *sons[5]; // class, colon, ptr, cv_quals, declarator
 
75002
 
 
75003
public:
 
75004
  /** Constructor.
 
75005
   *  \param c The class name.
 
75006
   *  \param cc The scope operator '::'.
 
75007
   *  \param p The name of the pointer.
 
75008
   *  \param q The const/volatile pointer qualifier sequence.
 
75009
   *  \param d The declarator. */
 
75010
  CT_MembPtrDeclarator (CTree *c, CTree *cc, CTree *p, CTree *q, CTree *d) {
 
75011
    AddSon (sons[0], c); AddSon (sons[1], cc); AddSon (sons[2], p); 
 
75012
    AddSon (sons[3], q); AddSon (sons[4], d); 
 
75013
  }
 
75014
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75015
  static const char *NodeId ();
 
75016
  /** Get the name of the node. Can be compared with NodeId(). */
 
75017
  const char *NodeName () const { return NodeId (); }
 
75018
  /** Get the number of sons. */
 
75019
  int Sons () const { return CTree::Sons (sons, 5); }
 
75020
  /** Get the n-th son.
 
75021
   *  \param n The index of the son.
 
75022
   *  \return The n-th son or NULL. */
 
75023
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
75024
  /** Get the name of the declared pointer. */
 
75025
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
75026
  /** Get the declarator. */
 
75027
  CTree *Declarator () const { return sons[4]; }
 
75028
  /** Get the const/volatile qualifier sequence. */
 
75029
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[3]; }
 
75030
  /** Replace a son.
 
75031
   *  \param old_son The son to replace.
 
75032
   *  \param new_son The new son. */
 
75033
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
75034
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
75035
  }
 
75036
public:
 
75037
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
75038
  const char *__attr_name (unsigned i) const {
 
75039
    static const char *names[] = { "sons" }; return names[i];
 
75040
  }
 
75041
  const void *__attr (unsigned __i) const {
 
75042
    switch (__i) { case 0: return &sons; default: return 0; }
 
75043
  }
 
75044
#line 3266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75045
};
 
75046
 
 
75047
/** \class CT_BitFieldDeclarator CTree.h Puma/CTree.h
 
75048
 *  Tree node representing a bit-field declarator.
 
75049
 *  Example: \code a : 2 \endcode */
 
75050
 
 
75051
#line 75052 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75052
} // closed Puma
 
75053
class CCExprResolve;
 
75054
class CExprResolve;
 
75055
class WinIfExists;
 
75056
class WinImportHandler;
 
75057
class WinMacros;
 
75058
class WinAsm;
 
75059
class WinDeclSpecs;
 
75060
class WinMemberExplSpec;
 
75061
class WinTypeKeywords;
 
75062
class WinFriend;
 
75063
class ExtAC;
 
75064
class ExtACBuilderCoupling;
 
75065
class ExtACSyntaxCoupling;
 
75066
class ExtACTree;
 
75067
class ExtACKeywords;
 
75068
class ExtGnu;
 
75069
class PragmaOnceUnitState;
 
75070
class PragmaOnce;
 
75071
class CMatchSyntax;
 
75072
namespace Puma {
 
75073
 
 
75074
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75075
class CT_BitFieldDeclarator : public CT_Declarator, public CSemObject {
 
75076
#line 75077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75077
  friend class ::CCExprResolve;
 
75078
  friend class ::CExprResolve;
 
75079
  friend class ::WinIfExists;
 
75080
  friend class ::WinImportHandler;
 
75081
  friend class ::WinMacros;
 
75082
  friend class ::WinAsm;
 
75083
  friend class ::WinDeclSpecs;
 
75084
  friend class ::WinMemberExplSpec;
 
75085
  friend class ::WinTypeKeywords;
 
75086
  friend class ::WinFriend;
 
75087
  friend class ::ExtAC;
 
75088
  friend class ::ExtACBuilderCoupling;
 
75089
  friend class ::ExtACSyntaxCoupling;
 
75090
  friend class ::ExtACTree;
 
75091
  friend class ::ExtACKeywords;
 
75092
  friend class ::ExtGnu;
 
75093
  friend class ::PragmaOnceUnitState;
 
75094
  friend class ::PragmaOnce;
 
75095
  friend class ::CMatchSyntax;
 
75096
 
 
75097
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75098
 
 
75099
  CTree *sons[3]; // declarator, colon, expr
 
75100
 
 
75101
public:
 
75102
  /** Constructor.
 
75103
   *  \param d The declarator.
 
75104
   *  \param c The colon between the declarator and the bit count.
 
75105
   *  \param e The expression specifying the number of bits. */
 
75106
  CT_BitFieldDeclarator (CTree *d, CTree *c, CTree *e = 0) {
 
75107
    AddSon (sons[0], d); AddSon (sons[1], c); AddSon (sons[2], e); 
 
75108
  }
 
75109
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75110
  static const char *NodeId ();
 
75111
  /** Get the name of the node. Can be compared with NodeId(). */
 
75112
  const char *NodeName () const { return NodeId (); }
 
75113
  /** Get the number of sons. */
 
75114
  int Sons () const { return CTree::Sons (sons, 3); }
 
75115
  /** Get the n-th son.
 
75116
   *  \param n The index of the son.
 
75117
   *  \return The n-th son or NULL. */
 
75118
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
75119
  /** Get the declarator. */
 
75120
  CTree *Declarator () const { return sons[0]; }
 
75121
  /** Get the expression specifying the number of bits. */
 
75122
  CTree *Expr () const { return sons[2]; }
 
75123
  /** Set the expression specifying the number of bits. */
 
75124
  void FieldSize (CTree *s) { AddSon (sons[2], s); }
 
75125
  /** Get the semantic information about the declared bit-field. */
 
75126
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
75127
  /** Replace a son.
 
75128
   *  \param old_son The son to replace.
 
75129
   *  \param new_son The new son. */
 
75130
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
75131
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
75132
  }
 
75133
public:
 
75134
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
75135
  const char *__attr_name (unsigned i) const {
 
75136
    static const char *names[] = { "sons" }; return names[i];
 
75137
  }
 
75138
  const void *__attr (unsigned __i) const {
 
75139
    switch (__i) { case 0: return &sons; default: return 0; }
 
75140
  }
 
75141
#line 3306 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75142
};
 
75143
 
 
75144
/*****************************************************************************/
 
75145
/*                                                                           */
 
75146
/*                              Statements                                   */
 
75147
/*                                                                           */
 
75148
/*****************************************************************************/
 
75149
 
 
75150
/** \class CT_Statement CTree.h Puma/CTree.h
 
75151
 *  Base class for all tree nodes representing statements. */
 
75152
 
 
75153
#line 75154 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75154
} // closed Puma
 
75155
class CCExprResolve;
 
75156
class CExprResolve;
 
75157
class WinIfExists;
 
75158
class WinImportHandler;
 
75159
class WinMacros;
 
75160
class WinAsm;
 
75161
class WinDeclSpecs;
 
75162
class WinMemberExplSpec;
 
75163
class WinTypeKeywords;
 
75164
class WinFriend;
 
75165
class ExtAC;
 
75166
class ExtACBuilderCoupling;
 
75167
class ExtACSyntaxCoupling;
 
75168
class ExtACTree;
 
75169
class ExtACKeywords;
 
75170
class ExtGnu;
 
75171
class PragmaOnceUnitState;
 
75172
class PragmaOnce;
 
75173
class CMatchSyntax;
 
75174
namespace Puma {
 
75175
 
 
75176
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75177
class CT_Statement : public CTree {
 
75178
#line 75179 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75179
  friend class ::CCExprResolve;
 
75180
  friend class ::CExprResolve;
 
75181
  friend class ::WinIfExists;
 
75182
  friend class ::WinImportHandler;
 
75183
  friend class ::WinMacros;
 
75184
  friend class ::WinAsm;
 
75185
  friend class ::WinDeclSpecs;
 
75186
  friend class ::WinMemberExplSpec;
 
75187
  friend class ::WinTypeKeywords;
 
75188
  friend class ::WinFriend;
 
75189
  friend class ::ExtAC;
 
75190
  friend class ::ExtACBuilderCoupling;
 
75191
  friend class ::ExtACSyntaxCoupling;
 
75192
  friend class ::ExtACTree;
 
75193
  friend class ::ExtACKeywords;
 
75194
  friend class ::ExtGnu;
 
75195
  friend class ::PragmaOnceUnitState;
 
75196
  friend class ::PragmaOnce;
 
75197
  friend class ::CMatchSyntax;
 
75198
 
 
75199
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75200
 
 
75201
protected:
 
75202
  /** Constructor. */
 
75203
  CT_Statement () {}
 
75204
  /** Get this. */
 
75205
  virtual CT_Statement *IsStatement () { return this; }
 
75206
public:
 
75207
  typedef AC::TLE __AttrTypes;
 
75208
  const char *__attr_name (unsigned i) const { return 0; }
 
75209
  const void *__attr (unsigned __i) const { return 0; }
 
75210
#line 3322 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75211
};
 
75212
 
 
75213
/** \class CT_LabelStmt CTree.h Puma/CTree.h
 
75214
 *  Tree node representing a label statement.
 
75215
 *  Example: \code incr_a: a++; \endcode */
 
75216
 
 
75217
#line 75218 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75218
} // closed Puma
 
75219
class CCExprResolve;
 
75220
class CExprResolve;
 
75221
class WinIfExists;
 
75222
class WinImportHandler;
 
75223
class WinMacros;
 
75224
class WinAsm;
 
75225
class WinDeclSpecs;
 
75226
class WinMemberExplSpec;
 
75227
class WinTypeKeywords;
 
75228
class WinFriend;
 
75229
class ExtAC;
 
75230
class ExtACBuilderCoupling;
 
75231
class ExtACSyntaxCoupling;
 
75232
class ExtACTree;
 
75233
class ExtACKeywords;
 
75234
class ExtGnu;
 
75235
class PragmaOnceUnitState;
 
75236
class PragmaOnce;
 
75237
class CMatchSyntax;
 
75238
namespace Puma {
 
75239
 
 
75240
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75241
class CT_LabelStmt : public CT_Statement {
 
75242
#line 75243 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75243
  friend class ::CCExprResolve;
 
75244
  friend class ::CExprResolve;
 
75245
  friend class ::WinIfExists;
 
75246
  friend class ::WinImportHandler;
 
75247
  friend class ::WinMacros;
 
75248
  friend class ::WinAsm;
 
75249
  friend class ::WinDeclSpecs;
 
75250
  friend class ::WinMemberExplSpec;
 
75251
  friend class ::WinTypeKeywords;
 
75252
  friend class ::WinFriend;
 
75253
  friend class ::ExtAC;
 
75254
  friend class ::ExtACBuilderCoupling;
 
75255
  friend class ::ExtACSyntaxCoupling;
 
75256
  friend class ::ExtACTree;
 
75257
  friend class ::ExtACKeywords;
 
75258
  friend class ::ExtGnu;
 
75259
  friend class ::PragmaOnceUnitState;
 
75260
  friend class ::PragmaOnce;
 
75261
  friend class ::CMatchSyntax;
 
75262
 
 
75263
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75264
 
 
75265
  CTree *sons[3]; // id, colon, stmt
 
75266
 
 
75267
public:
 
75268
  /** Constructor.
 
75269
   *  \param id The name of the label.
 
75270
   *  \param c The colon behind the label.
 
75271
   *  \param stmt The statement following the label. */
 
75272
  CT_LabelStmt (CTree *id, CTree *c, CTree *stmt) {
 
75273
    AddSon (sons[0], id); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
75274
  }
 
75275
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75276
  static const char *NodeId ();
 
75277
  /** Get the name of the node. Can be compared with NodeId(). */
 
75278
  const char *NodeName () const { return NodeId (); }
 
75279
  /** Get the number of sons. */
 
75280
  int Sons () const { return 3; }
 
75281
  /** Get the n-th son.
 
75282
   *  \param n The index of the son.
 
75283
   *  \return The n-th son or NULL. */
 
75284
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
75285
  /** Get the statement. */
 
75286
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
75287
  /** Get the name of the label. */
 
75288
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[0]; }
 
75289
  /** Replace a son.
 
75290
   *  \param old_son The son to replace.
 
75291
   *  \param new_son The new son. */
 
75292
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
75293
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
75294
  }
 
75295
public:
 
75296
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
75297
  const char *__attr_name (unsigned i) const {
 
75298
    static const char *names[] = { "sons" }; return names[i];
 
75299
  }
 
75300
  const void *__attr (unsigned __i) const {
 
75301
    switch (__i) { case 0: return &sons; default: return 0; }
 
75302
  }
 
75303
#line 3358 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75304
};
 
75305
 
 
75306
/** \class CT_DefaultStmt CTree.h Puma/CTree.h
 
75307
 *  Tree node representing a default statement of a switch statement.
 
75308
 *  Example: \code default: break; \endcode */
 
75309
 
 
75310
#line 75311 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75311
} // closed Puma
 
75312
class CCExprResolve;
 
75313
class CExprResolve;
 
75314
class WinIfExists;
 
75315
class WinImportHandler;
 
75316
class WinMacros;
 
75317
class WinAsm;
 
75318
class WinDeclSpecs;
 
75319
class WinMemberExplSpec;
 
75320
class WinTypeKeywords;
 
75321
class WinFriend;
 
75322
class ExtAC;
 
75323
class ExtACBuilderCoupling;
 
75324
class ExtACSyntaxCoupling;
 
75325
class ExtACTree;
 
75326
class ExtACKeywords;
 
75327
class ExtGnu;
 
75328
class PragmaOnceUnitState;
 
75329
class PragmaOnce;
 
75330
class CMatchSyntax;
 
75331
namespace Puma {
 
75332
 
 
75333
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75334
class CT_DefaultStmt : public CT_Statement {
 
75335
#line 75336 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75336
  friend class ::CCExprResolve;
 
75337
  friend class ::CExprResolve;
 
75338
  friend class ::WinIfExists;
 
75339
  friend class ::WinImportHandler;
 
75340
  friend class ::WinMacros;
 
75341
  friend class ::WinAsm;
 
75342
  friend class ::WinDeclSpecs;
 
75343
  friend class ::WinMemberExplSpec;
 
75344
  friend class ::WinTypeKeywords;
 
75345
  friend class ::WinFriend;
 
75346
  friend class ::ExtAC;
 
75347
  friend class ::ExtACBuilderCoupling;
 
75348
  friend class ::ExtACSyntaxCoupling;
 
75349
  friend class ::ExtACTree;
 
75350
  friend class ::ExtACKeywords;
 
75351
  friend class ::ExtGnu;
 
75352
  friend class ::PragmaOnceUnitState;
 
75353
  friend class ::PragmaOnce;
 
75354
  friend class ::CMatchSyntax;
 
75355
 
 
75356
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75357
 
 
75358
  CTree *sons[3]; // keyword, colon, stmt
 
75359
 
 
75360
public:
 
75361
  /** Constructor.
 
75362
   *  \param kw The keyword 'default'.
 
75363
   *  \param c The colon behind the keyword.
 
75364
   *  \param stmt The statement of the default case. */
 
75365
  CT_DefaultStmt (CTree *kw, CTree *c, CTree *stmt) {
 
75366
    AddSon (sons[0], kw); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
75367
  }
 
75368
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75369
  static const char *NodeId ();
 
75370
  /** Get the name of the node. Can be compared with NodeId(). */
 
75371
  const char *NodeName () const { return NodeId (); }
 
75372
  /** Get the number of sons. */
 
75373
  int Sons () const { return 3; }
 
75374
  /** Get the n-th son.
 
75375
   *  \param n The index of the son.
 
75376
   *  \return The n-th son or NULL. */
 
75377
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
75378
  /** Get the statement. */
 
75379
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
75380
  /** Replace a son.
 
75381
   *  \param old_son The son to replace.
 
75382
   *  \param new_son The new son. */
 
75383
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
75384
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
75385
  }
 
75386
public:
 
75387
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
75388
  const char *__attr_name (unsigned i) const {
 
75389
    static const char *names[] = { "sons" }; return names[i];
 
75390
  }
 
75391
  const void *__attr (unsigned __i) const {
 
75392
    switch (__i) { case 0: return &sons; default: return 0; }
 
75393
  }
 
75394
#line 3392 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75395
};
 
75396
 
 
75397
/** \class CT_TryStmt CTree.h Puma/CTree.h
 
75398
 *  Tree node representing a try-catch statement.
 
75399
 *  Example: \code try { f(); } catch (...) {} \endcode */
 
75400
 
 
75401
#line 75402 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75402
} // closed Puma
 
75403
class CCExprResolve;
 
75404
class CExprResolve;
 
75405
class WinIfExists;
 
75406
class WinImportHandler;
 
75407
class WinMacros;
 
75408
class WinAsm;
 
75409
class WinDeclSpecs;
 
75410
class WinMemberExplSpec;
 
75411
class WinTypeKeywords;
 
75412
class WinFriend;
 
75413
class ExtAC;
 
75414
class ExtACBuilderCoupling;
 
75415
class ExtACSyntaxCoupling;
 
75416
class ExtACTree;
 
75417
class ExtACKeywords;
 
75418
class ExtGnu;
 
75419
class PragmaOnceUnitState;
 
75420
class PragmaOnce;
 
75421
class CMatchSyntax;
 
75422
namespace Puma {
 
75423
 
 
75424
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75425
class CT_TryStmt : public CT_Statement {
 
75426
#line 75427 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75427
  friend class ::CCExprResolve;
 
75428
  friend class ::CExprResolve;
 
75429
  friend class ::WinIfExists;
 
75430
  friend class ::WinImportHandler;
 
75431
  friend class ::WinMacros;
 
75432
  friend class ::WinAsm;
 
75433
  friend class ::WinDeclSpecs;
 
75434
  friend class ::WinMemberExplSpec;
 
75435
  friend class ::WinTypeKeywords;
 
75436
  friend class ::WinFriend;
 
75437
  friend class ::ExtAC;
 
75438
  friend class ::ExtACBuilderCoupling;
 
75439
  friend class ::ExtACSyntaxCoupling;
 
75440
  friend class ::ExtACTree;
 
75441
  friend class ::ExtACKeywords;
 
75442
  friend class ::ExtGnu;
 
75443
  friend class ::PragmaOnceUnitState;
 
75444
  friend class ::PragmaOnce;
 
75445
  friend class ::CMatchSyntax;
 
75446
 
 
75447
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75448
 
 
75449
  CTree *sons[3]; // try, stmt, handlers
 
75450
 
 
75451
public:
 
75452
  /** Constructor.
 
75453
   *  \param t The keyword 'try'.
 
75454
   *  \param s The statement enclosed in the try-catch block.
 
75455
   *  \param h The exception handler sequence. */
 
75456
  CT_TryStmt (CTree *t, CTree *s, CTree *h) {
 
75457
    AddSon (sons[0], t); AddSon (sons[1], s); AddSon (sons[2], h); 
 
75458
  }
 
75459
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75460
  static const char *NodeId ();
 
75461
  /** Get the name of the node. Can be compared with NodeId(). */
 
75462
  const char *NodeName () const { return NodeId (); }
 
75463
  /** Get the number of sons. */
 
75464
  int Sons () const { return 3; }
 
75465
  /** Get the n-th son.
 
75466
   *  \param n The index of the son.
 
75467
   *  \return The n-th son or NULL. */
 
75468
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
75469
  /** Get the enclosed statement. */
 
75470
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
75471
  /** Get the exception handler sequence. */
 
75472
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[2]; }
 
75473
  /** Replace a son.
 
75474
   *  \param old_son The son to replace.
 
75475
   *  \param new_son The new son. */
 
75476
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
75477
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
75478
  }
 
75479
public:
 
75480
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
75481
  const char *__attr_name (unsigned i) const {
 
75482
    static const char *names[] = { "sons" }; return names[i];
 
75483
  }
 
75484
  const void *__attr (unsigned __i) const {
 
75485
    switch (__i) { case 0: return &sons; default: return 0; }
 
75486
  }
 
75487
#line 3428 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75488
};
 
75489
 
 
75490
/** \class CT_CaseStmt CTree.h Puma/CTree.h
 
75491
 *  Tree node representing a case statement.
 
75492
 *  Example: \code case 42: a=42; \endcode */
 
75493
 
 
75494
#line 75495 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75495
} // closed Puma
 
75496
class CCExprResolve;
 
75497
class CExprResolve;
 
75498
class WinIfExists;
 
75499
class WinImportHandler;
 
75500
class WinMacros;
 
75501
class WinAsm;
 
75502
class WinDeclSpecs;
 
75503
class WinMemberExplSpec;
 
75504
class WinTypeKeywords;
 
75505
class WinFriend;
 
75506
class ExtAC;
 
75507
class ExtACBuilderCoupling;
 
75508
class ExtACSyntaxCoupling;
 
75509
class ExtACTree;
 
75510
class ExtACKeywords;
 
75511
class ExtGnu;
 
75512
class PragmaOnceUnitState;
 
75513
class PragmaOnce;
 
75514
class CMatchSyntax;
 
75515
namespace Puma {
 
75516
 
 
75517
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75518
class CT_CaseStmt : public CT_Statement {
 
75519
#line 75520 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75520
  friend class ::CCExprResolve;
 
75521
  friend class ::CExprResolve;
 
75522
  friend class ::WinIfExists;
 
75523
  friend class ::WinImportHandler;
 
75524
  friend class ::WinMacros;
 
75525
  friend class ::WinAsm;
 
75526
  friend class ::WinDeclSpecs;
 
75527
  friend class ::WinMemberExplSpec;
 
75528
  friend class ::WinTypeKeywords;
 
75529
  friend class ::WinFriend;
 
75530
  friend class ::ExtAC;
 
75531
  friend class ::ExtACBuilderCoupling;
 
75532
  friend class ::ExtACSyntaxCoupling;
 
75533
  friend class ::ExtACTree;
 
75534
  friend class ::ExtACKeywords;
 
75535
  friend class ::ExtGnu;
 
75536
  friend class ::PragmaOnceUnitState;
 
75537
  friend class ::PragmaOnce;
 
75538
  friend class ::CMatchSyntax;
 
75539
 
 
75540
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75541
 
 
75542
  CTree *sons[4]; // keyword, expr, colon, stmt
 
75543
 
 
75544
public:
 
75545
  /** Constructor.
 
75546
   *  \param kw The keyword 'case'.
 
75547
   *  \param expr The constant expression specifying the case value.
 
75548
   *  \param c The colon.
 
75549
   *  \param stmt The statement of the case. */
 
75550
  CT_CaseStmt (CTree *kw, CTree *expr, CTree *c, CTree *stmt) {
 
75551
    AddSon (sons[0], kw); AddSon (sons[1], expr); 
 
75552
    AddSon (sons[2], c); AddSon (sons[3], stmt); 
 
75553
  }
 
75554
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75555
  static const char *NodeId ();
 
75556
  /** Get the name of the node. Can be compared with NodeId(). */
 
75557
  const char *NodeName () const { return NodeId (); }
 
75558
  /** Get the number of sons. */
 
75559
  int Sons () const { return 4; }
 
75560
  /** Get the n-th son.
 
75561
   *  \param n The index of the son.
 
75562
   *  \return The n-th son or NULL. */
 
75563
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
75564
  /** Get the statement. */
 
75565
  CT_Statement *Statement () const { return (CT_Statement*)sons[3]; }
 
75566
  /** Get the expression specifying the case value. */
 
75567
  CTree *Expr () const { return sons[1]; }
 
75568
  /** Replace a son.
 
75569
   *  \param old_son The son to replace.
 
75570
   *  \param new_son The new son. */
 
75571
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
75572
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
75573
  }
 
75574
public:
 
75575
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
75576
  const char *__attr_name (unsigned i) const {
 
75577
    static const char *names[] = { "sons" }; return names[i];
 
75578
  }
 
75579
  const void *__attr (unsigned __i) const {
 
75580
    switch (__i) { case 0: return &sons; default: return 0; }
 
75581
  }
 
75582
#line 3466 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75583
};
 
75584
 
 
75585
/** \class CT_ExprStmt CTree.h Puma/CTree.h
 
75586
 *  Tree node representing an expression statement.
 
75587
 *  Example: \code a+b; \endcode */
 
75588
 
 
75589
#line 75590 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75590
} // closed Puma
 
75591
class CCExprResolve;
 
75592
class CExprResolve;
 
75593
class WinIfExists;
 
75594
class WinImportHandler;
 
75595
class WinMacros;
 
75596
class WinAsm;
 
75597
class WinDeclSpecs;
 
75598
class WinMemberExplSpec;
 
75599
class WinTypeKeywords;
 
75600
class WinFriend;
 
75601
class ExtAC;
 
75602
class ExtACBuilderCoupling;
 
75603
class ExtACSyntaxCoupling;
 
75604
class ExtACTree;
 
75605
class ExtACKeywords;
 
75606
class ExtGnu;
 
75607
class PragmaOnceUnitState;
 
75608
class PragmaOnce;
 
75609
class CMatchSyntax;
 
75610
namespace Puma {
 
75611
 
 
75612
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75613
class CT_ExprStmt : public CT_Statement {
 
75614
#line 75615 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75615
  friend class ::CCExprResolve;
 
75616
  friend class ::CExprResolve;
 
75617
  friend class ::WinIfExists;
 
75618
  friend class ::WinImportHandler;
 
75619
  friend class ::WinMacros;
 
75620
  friend class ::WinAsm;
 
75621
  friend class ::WinDeclSpecs;
 
75622
  friend class ::WinMemberExplSpec;
 
75623
  friend class ::WinTypeKeywords;
 
75624
  friend class ::WinFriend;
 
75625
  friend class ::ExtAC;
 
75626
  friend class ::ExtACBuilderCoupling;
 
75627
  friend class ::ExtACSyntaxCoupling;
 
75628
  friend class ::ExtACTree;
 
75629
  friend class ::ExtACKeywords;
 
75630
  friend class ::ExtGnu;
 
75631
  friend class ::PragmaOnceUnitState;
 
75632
  friend class ::PragmaOnce;
 
75633
  friend class ::CMatchSyntax;
 
75634
 
 
75635
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75636
 
 
75637
  CTree *sons[2]; // expr, semi_colon
 
75638
 
 
75639
public:
 
75640
  /** Constructor.
 
75641
   *  \param expr The expression.
 
75642
   *  \param sc The trailing semi-colon. */
 
75643
  CT_ExprStmt (CTree *expr, CTree *sc) { AddSon (sons[0], expr); AddSon (sons[1], sc); }
 
75644
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75645
  static const char *NodeId ();
 
75646
  /** Get the name of the node. Can be compared with NodeId(). */
 
75647
  const char *NodeName () const { return NodeId (); }
 
75648
  /** Get the number of sons. */
 
75649
  int Sons () const { return CTree::Sons (sons, 2); }
 
75650
  /** Get the n-th son.
 
75651
   *  \param n The index of the son.
 
75652
   *  \return The n-th son or NULL. */
 
75653
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
75654
  /** Get the expression. */
 
75655
  CTree *Expr () const { return sons[0]; }
 
75656
  /** Replace a son.
 
75657
   *  \param old_son The son to replace.
 
75658
   *  \param new_son The new son. */
 
75659
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
75660
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
75661
  }
 
75662
public:
 
75663
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
75664
  const char *__attr_name (unsigned i) const {
 
75665
    static const char *names[] = { "sons" }; return names[i];
 
75666
  }
 
75667
  const void *__attr (unsigned __i) const {
 
75668
    switch (__i) { case 0: return &sons; default: return 0; }
 
75669
  }
 
75670
#line 3497 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75671
};
 
75672
 
 
75673
/** \class CT_DeclStmt CTree.h Puma/CTree.h
 
75674
 *  Tree node representing a declaration statement.
 
75675
 *  Example: \code int i = 0; \endcode */
 
75676
 
 
75677
#line 75678 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75678
} // closed Puma
 
75679
class CCExprResolve;
 
75680
class CExprResolve;
 
75681
class WinIfExists;
 
75682
class WinImportHandler;
 
75683
class WinMacros;
 
75684
class WinAsm;
 
75685
class WinDeclSpecs;
 
75686
class WinMemberExplSpec;
 
75687
class WinTypeKeywords;
 
75688
class WinFriend;
 
75689
class ExtAC;
 
75690
class ExtACBuilderCoupling;
 
75691
class ExtACSyntaxCoupling;
 
75692
class ExtACTree;
 
75693
class ExtACKeywords;
 
75694
class ExtGnu;
 
75695
class PragmaOnceUnitState;
 
75696
class PragmaOnce;
 
75697
class CMatchSyntax;
 
75698
namespace Puma {
 
75699
 
 
75700
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75701
class CT_DeclStmt : public CT_Statement {
 
75702
#line 75703 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75703
  friend class ::CCExprResolve;
 
75704
  friend class ::CExprResolve;
 
75705
  friend class ::WinIfExists;
 
75706
  friend class ::WinImportHandler;
 
75707
  friend class ::WinMacros;
 
75708
  friend class ::WinAsm;
 
75709
  friend class ::WinDeclSpecs;
 
75710
  friend class ::WinMemberExplSpec;
 
75711
  friend class ::WinTypeKeywords;
 
75712
  friend class ::WinFriend;
 
75713
  friend class ::ExtAC;
 
75714
  friend class ::ExtACBuilderCoupling;
 
75715
  friend class ::ExtACSyntaxCoupling;
 
75716
  friend class ::ExtACTree;
 
75717
  friend class ::ExtACKeywords;
 
75718
  friend class ::ExtGnu;
 
75719
  friend class ::PragmaOnceUnitState;
 
75720
  friend class ::PragmaOnce;
 
75721
  friend class ::CMatchSyntax;
 
75722
 
 
75723
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75724
 
 
75725
  CTree *_decl;
 
75726
 
 
75727
public:
 
75728
  /** Constructor.
 
75729
   *  \param decl The declaration. */
 
75730
  CT_DeclStmt (CTree *decl) { AddSon (_decl, decl); }
 
75731
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75732
  static const char *NodeId ();
 
75733
  /** Get the name of the node. Can be compared with NodeId(). */
 
75734
  const char *NodeName () const { return NodeId (); }
 
75735
  /** Get the number of sons. */
 
75736
  int Sons () const { return 1; }
 
75737
  /** Get the n-th son.
 
75738
   *  \param n The index of the son.
 
75739
   *  \return The n-th son or NULL. */
 
75740
  CTree *Son (int n) const { return n == 0 ? _decl : (CTree*)0; }
 
75741
  /** Replace a son.
 
75742
   *  \param old_son The son to replace.
 
75743
   *  \param new_son The new son. */
 
75744
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
75745
   { CTree::ReplaceSon (_decl, old_son, new_son); }
 
75746
public:
 
75747
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
75748
  const char *__attr_name (unsigned i) const {
 
75749
    static const char *names[] = { "_decl" }; return names[i];
 
75750
  }
 
75751
  const void *__attr (unsigned __i) const {
 
75752
    switch (__i) { case 0: return &_decl; default: return 0; }
 
75753
  }
 
75754
#line 3524 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75755
};
 
75756
 
 
75757
/** \class CT_SwitchStmt CTree.h Puma/CTree.h
 
75758
 *  Tree node representing a switch statement.
 
75759
 *  Example: \code switch(a) { case 0: a++; } \endcode */
 
75760
 
 
75761
#line 75762 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75762
} // closed Puma
 
75763
class CCExprResolve;
 
75764
class CExprResolve;
 
75765
class WinIfExists;
 
75766
class WinImportHandler;
 
75767
class WinMacros;
 
75768
class WinAsm;
 
75769
class WinDeclSpecs;
 
75770
class WinMemberExplSpec;
 
75771
class WinTypeKeywords;
 
75772
class WinFriend;
 
75773
class ExtAC;
 
75774
class ExtACBuilderCoupling;
 
75775
class ExtACSyntaxCoupling;
 
75776
class ExtACTree;
 
75777
class ExtACKeywords;
 
75778
class ExtGnu;
 
75779
class PragmaOnceUnitState;
 
75780
class PragmaOnce;
 
75781
class CMatchSyntax;
 
75782
namespace Puma {
 
75783
 
 
75784
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75785
class CT_SwitchStmt : public CT_Statement, public CSemScope {
 
75786
#line 75787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75787
  friend class ::CCExprResolve;
 
75788
  friend class ::CExprResolve;
 
75789
  friend class ::WinIfExists;
 
75790
  friend class ::WinImportHandler;
 
75791
  friend class ::WinMacros;
 
75792
  friend class ::WinAsm;
 
75793
  friend class ::WinDeclSpecs;
 
75794
  friend class ::WinMemberExplSpec;
 
75795
  friend class ::WinTypeKeywords;
 
75796
  friend class ::WinFriend;
 
75797
  friend class ::ExtAC;
 
75798
  friend class ::ExtACBuilderCoupling;
 
75799
  friend class ::ExtACSyntaxCoupling;
 
75800
  friend class ::ExtACTree;
 
75801
  friend class ::ExtACKeywords;
 
75802
  friend class ::ExtGnu;
 
75803
  friend class ::PragmaOnceUnitState;
 
75804
  friend class ::PragmaOnce;
 
75805
  friend class ::CMatchSyntax;
 
75806
 
 
75807
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75808
 
 
75809
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
75810
 
 
75811
public:
 
75812
  /** Constructor.
 
75813
   *  \param kw The keyword 'switch'.
 
75814
   *  \param o Left parenthesis before the condition.
 
75815
   *  \param cond The switch-expression. 
 
75816
   *  \param c Right parenthesis behind the condition. 
 
75817
   *  \param stmt The cases of the switch-statement. */
 
75818
  CT_SwitchStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
75819
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
75820
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
75821
  }
 
75822
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75823
  static const char *NodeId ();
 
75824
  /** Get the name of the node. Can be compared with NodeId(). */
 
75825
  const char *NodeName () const { return NodeId (); }
 
75826
  /** Get the number of sons. */
 
75827
  int Sons () const { return 5; }
 
75828
  /** Get the n-th son.
 
75829
   *  \param n The index of the son.
 
75830
   *  \return The n-th son or NULL. */
 
75831
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
75832
  /** Get the cases. */
 
75833
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
75834
  /** Get the switch-expression. */
 
75835
  CTree *Condition () const { return sons[2]; }
 
75836
  /** Replace a son.
 
75837
   *  \param old_son The son to replace.
 
75838
   *  \param new_son The new son. */
 
75839
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
75840
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
75841
  }
 
75842
  /** Get the scope opened by the switch-statement. */
 
75843
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
75844
public:
 
75845
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
75846
  const char *__attr_name (unsigned i) const {
 
75847
    static const char *names[] = { "sons" }; return names[i];
 
75848
  }
 
75849
  const void *__attr (unsigned __i) const {
 
75850
    switch (__i) { case 0: return &sons; default: return 0; }
 
75851
  }
 
75852
#line 3565 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75853
};
 
75854
 
 
75855
/** \class CT_IfStmt CTree.h Puma/CTree.h
 
75856
 *  Tree node representing a if-statement.
 
75857
 *  Example: \code if(a==0) a++; \endcode */
 
75858
 
 
75859
#line 75860 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75860
} // closed Puma
 
75861
class CCExprResolve;
 
75862
class CExprResolve;
 
75863
class WinIfExists;
 
75864
class WinImportHandler;
 
75865
class WinMacros;
 
75866
class WinAsm;
 
75867
class WinDeclSpecs;
 
75868
class WinMemberExplSpec;
 
75869
class WinTypeKeywords;
 
75870
class WinFriend;
 
75871
class ExtAC;
 
75872
class ExtACBuilderCoupling;
 
75873
class ExtACSyntaxCoupling;
 
75874
class ExtACTree;
 
75875
class ExtACKeywords;
 
75876
class ExtGnu;
 
75877
class PragmaOnceUnitState;
 
75878
class PragmaOnce;
 
75879
class CMatchSyntax;
 
75880
namespace Puma {
 
75881
 
 
75882
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75883
class CT_IfStmt : public CT_Statement, public CSemScope {
 
75884
#line 75885 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75885
  friend class ::CCExprResolve;
 
75886
  friend class ::CExprResolve;
 
75887
  friend class ::WinIfExists;
 
75888
  friend class ::WinImportHandler;
 
75889
  friend class ::WinMacros;
 
75890
  friend class ::WinAsm;
 
75891
  friend class ::WinDeclSpecs;
 
75892
  friend class ::WinMemberExplSpec;
 
75893
  friend class ::WinTypeKeywords;
 
75894
  friend class ::WinFriend;
 
75895
  friend class ::ExtAC;
 
75896
  friend class ::ExtACBuilderCoupling;
 
75897
  friend class ::ExtACSyntaxCoupling;
 
75898
  friend class ::ExtACTree;
 
75899
  friend class ::ExtACKeywords;
 
75900
  friend class ::ExtGnu;
 
75901
  friend class ::PragmaOnceUnitState;
 
75902
  friend class ::PragmaOnce;
 
75903
  friend class ::CMatchSyntax;
 
75904
 
 
75905
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75906
 
 
75907
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
75908
 
 
75909
public:
 
75910
  /** Constructor.
 
75911
   *  \param kw The keyword 'if'.
 
75912
   *  \param o Left parenthesis before the condition.
 
75913
   *  \param cond The condition.
 
75914
   *  \param c Right parenthesis behind the condition.
 
75915
   *  \param stmt The controlled statement. */
 
75916
  CT_IfStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
75917
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
75918
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
75919
  }
 
75920
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
75921
  static const char *NodeId ();
 
75922
  /** Get the name of the node. Can be compared with NodeId(). */
 
75923
  const char *NodeName () const { return NodeId (); }
 
75924
  /** Get the number of sons. */
 
75925
  int Sons () const { return 5; }
 
75926
  /** Get the n-th son.
 
75927
   *  \param n The index of the son.
 
75928
   *  \return The n-th son or NULL. */
 
75929
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
75930
  /** Get the controlled statement. */
 
75931
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
75932
  /** Get the condition. */
 
75933
  CTree *Condition () const { return sons[2]; }
 
75934
  /** Replace a son.
 
75935
   *  \param old_son The son to replace.
 
75936
   *  \param new_son The new son. */
 
75937
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
75938
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
75939
  }
 
75940
  /** Get the scope opened by the if-statement. */
 
75941
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
75942
public:
 
75943
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
75944
  const char *__attr_name (unsigned i) const {
 
75945
    static const char *names[] = { "sons" }; return names[i];
 
75946
  }
 
75947
  const void *__attr (unsigned __i) const {
 
75948
    switch (__i) { case 0: return &sons; default: return 0; }
 
75949
  }
 
75950
#line 3606 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75951
};
 
75952
 
 
75953
/** \class CT_IfElseStmt CTree.h Puma/CTree.h
 
75954
 *  Tree node representing a if-else-statement.
 
75955
 *  Example: \code if(a==0) a++; else a=0; \endcode */
 
75956
 
 
75957
#line 75958 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75958
} // closed Puma
 
75959
class CCExprResolve;
 
75960
class CExprResolve;
 
75961
class WinIfExists;
 
75962
class WinImportHandler;
 
75963
class WinMacros;
 
75964
class WinAsm;
 
75965
class WinDeclSpecs;
 
75966
class WinMemberExplSpec;
 
75967
class WinTypeKeywords;
 
75968
class WinFriend;
 
75969
class ExtAC;
 
75970
class ExtACBuilderCoupling;
 
75971
class ExtACSyntaxCoupling;
 
75972
class ExtACTree;
 
75973
class ExtACKeywords;
 
75974
class ExtGnu;
 
75975
class PragmaOnceUnitState;
 
75976
class PragmaOnce;
 
75977
class CMatchSyntax;
 
75978
namespace Puma {
 
75979
 
 
75980
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
75981
class CT_IfElseStmt : public CT_Statement, public CSemScope {
 
75982
#line 75983 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
75983
  friend class ::CCExprResolve;
 
75984
  friend class ::CExprResolve;
 
75985
  friend class ::WinIfExists;
 
75986
  friend class ::WinImportHandler;
 
75987
  friend class ::WinMacros;
 
75988
  friend class ::WinAsm;
 
75989
  friend class ::WinDeclSpecs;
 
75990
  friend class ::WinMemberExplSpec;
 
75991
  friend class ::WinTypeKeywords;
 
75992
  friend class ::WinFriend;
 
75993
  friend class ::ExtAC;
 
75994
  friend class ::ExtACBuilderCoupling;
 
75995
  friend class ::ExtACSyntaxCoupling;
 
75996
  friend class ::ExtACTree;
 
75997
  friend class ::ExtACKeywords;
 
75998
  friend class ::ExtGnu;
 
75999
  friend class ::PragmaOnceUnitState;
 
76000
  friend class ::PragmaOnce;
 
76001
  friend class ::CMatchSyntax;
 
76002
 
 
76003
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76004
 
 
76005
  CTree *sons[7]; // if, open, cond, close, if_stmt, else, else_stmt
 
76006
 
 
76007
public:
 
76008
  /** Constructor.
 
76009
   *  \param i The keyword 'if'.
 
76010
   *  \param o Left parenthesis before the condition.
 
76011
   *  \param cond The condition.
 
76012
   *  \param c Right parenthesis behind the condition.
 
76013
   *  \param is The statement controlled by the if-branch.
 
76014
   *  \param e The keyword 'else'.
 
76015
   *  \param es The statement controlled by the else-branch. */
 
76016
  CT_IfElseStmt (CTree *i, CTree *o, CTree *cond, CTree *c, 
 
76017
                 CTree *is, CTree *e, CTree *es) {
 
76018
    AddSon (sons[0], i); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
76019
    AddSon (sons[3], c); AddSon (sons[4], is); AddSon (sons[5], e); 
 
76020
    AddSon (sons[6], es); 
 
76021
  }
 
76022
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76023
  static const char *NodeId ();
 
76024
  /** Get the name of the node. Can be compared with NodeId(). */
 
76025
  const char *NodeName () const { return NodeId (); }
 
76026
  /** Get the number of sons. */
 
76027
  int Sons () const { return 7; }
 
76028
  /** Get the n-th son.
 
76029
   *  \param n The index of the son.
 
76030
   *  \return The n-th son or NULL. */
 
76031
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
76032
  /** Get the condition. */
 
76033
  CTree *Condition () const { return sons[2]; }
 
76034
  /** Get the statement controlled by the if-branch. */
 
76035
  CT_Statement *IfPart () const { return (CT_Statement*)sons[4]; }
 
76036
  /** Get the statement controlled by the else-branch. */
 
76037
  CT_Statement *ElsePart () const { return (CT_Statement*)sons[6]; }
 
76038
  /** Replace a son.
 
76039
   *  \param old_son The son to replace.
 
76040
   *  \param new_son The new son. */
 
76041
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
76042
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
76043
  }
 
76044
  /** Get the scope opened by the if-statement. */
 
76045
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
76046
public:
 
76047
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
76048
  const char *__attr_name (unsigned i) const {
 
76049
    static const char *names[] = { "sons" }; return names[i];
 
76050
  }
 
76051
  const void *__attr (unsigned __i) const {
 
76052
    switch (__i) { case 0: return &sons; default: return 0; }
 
76053
  }
 
76054
#line 3653 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76055
};
 
76056
 
 
76057
/** \class CT_BreakStmt CTree.h Puma/CTree.h
 
76058
 *  Tree node representing a break-statement.
 
76059
 *  Example: \code break; \endcode */
 
76060
 
 
76061
#line 76062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76062
} // closed Puma
 
76063
class CCExprResolve;
 
76064
class CExprResolve;
 
76065
class WinIfExists;
 
76066
class WinImportHandler;
 
76067
class WinMacros;
 
76068
class WinAsm;
 
76069
class WinDeclSpecs;
 
76070
class WinMemberExplSpec;
 
76071
class WinTypeKeywords;
 
76072
class WinFriend;
 
76073
class ExtAC;
 
76074
class ExtACBuilderCoupling;
 
76075
class ExtACSyntaxCoupling;
 
76076
class ExtACTree;
 
76077
class ExtACKeywords;
 
76078
class ExtGnu;
 
76079
class PragmaOnceUnitState;
 
76080
class PragmaOnce;
 
76081
class CMatchSyntax;
 
76082
namespace Puma {
 
76083
 
 
76084
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76085
class CT_BreakStmt : public CT_Statement {
 
76086
#line 76087 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76087
  friend class ::CCExprResolve;
 
76088
  friend class ::CExprResolve;
 
76089
  friend class ::WinIfExists;
 
76090
  friend class ::WinImportHandler;
 
76091
  friend class ::WinMacros;
 
76092
  friend class ::WinAsm;
 
76093
  friend class ::WinDeclSpecs;
 
76094
  friend class ::WinMemberExplSpec;
 
76095
  friend class ::WinTypeKeywords;
 
76096
  friend class ::WinFriend;
 
76097
  friend class ::ExtAC;
 
76098
  friend class ::ExtACBuilderCoupling;
 
76099
  friend class ::ExtACSyntaxCoupling;
 
76100
  friend class ::ExtACTree;
 
76101
  friend class ::ExtACKeywords;
 
76102
  friend class ::ExtGnu;
 
76103
  friend class ::PragmaOnceUnitState;
 
76104
  friend class ::PragmaOnce;
 
76105
  friend class ::CMatchSyntax;
 
76106
 
 
76107
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76108
 
 
76109
  CTree *sons[2]; // key, semi_colon
 
76110
 
 
76111
public:
 
76112
  /** Constructor.
 
76113
   *  \param key The keyword 'break'.
 
76114
   *  \param sc The trailing semi-colon. */
 
76115
  CT_BreakStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
76116
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76117
  static const char *NodeId ();
 
76118
  /** Get the name of the node. Can be compared with NodeId(). */
 
76119
  const char *NodeName () const { return NodeId (); }
 
76120
  /** Get the number of sons. */
 
76121
  int Sons () const { return 2; }
 
76122
  /** Get the n-th son.
 
76123
   *  \param n The index of the son.
 
76124
   *  \return The n-th son or NULL. */
 
76125
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
76126
  /** Replace a son.
 
76127
   *  \param old_son The son to replace.
 
76128
   *  \param new_son The new son. */
 
76129
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
76130
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
76131
  }
 
76132
public:
 
76133
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
76134
  const char *__attr_name (unsigned i) const {
 
76135
    static const char *names[] = { "sons" }; return names[i];
 
76136
  }
 
76137
  const void *__attr (unsigned __i) const {
 
76138
    switch (__i) { case 0: return &sons; default: return 0; }
 
76139
  }
 
76140
#line 3682 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76141
};
 
76142
 
 
76143
/** \class CT_ContinueStmt CTree.h Puma/CTree.h
 
76144
 *  Tree node representing a continue-statement.
 
76145
 *  Example: \code continue; \endcode */
 
76146
 
 
76147
#line 76148 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76148
} // closed Puma
 
76149
class CCExprResolve;
 
76150
class CExprResolve;
 
76151
class WinIfExists;
 
76152
class WinImportHandler;
 
76153
class WinMacros;
 
76154
class WinAsm;
 
76155
class WinDeclSpecs;
 
76156
class WinMemberExplSpec;
 
76157
class WinTypeKeywords;
 
76158
class WinFriend;
 
76159
class ExtAC;
 
76160
class ExtACBuilderCoupling;
 
76161
class ExtACSyntaxCoupling;
 
76162
class ExtACTree;
 
76163
class ExtACKeywords;
 
76164
class ExtGnu;
 
76165
class PragmaOnceUnitState;
 
76166
class PragmaOnce;
 
76167
class CMatchSyntax;
 
76168
namespace Puma {
 
76169
 
 
76170
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76171
class CT_ContinueStmt : public CT_Statement {
 
76172
#line 76173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76173
  friend class ::CCExprResolve;
 
76174
  friend class ::CExprResolve;
 
76175
  friend class ::WinIfExists;
 
76176
  friend class ::WinImportHandler;
 
76177
  friend class ::WinMacros;
 
76178
  friend class ::WinAsm;
 
76179
  friend class ::WinDeclSpecs;
 
76180
  friend class ::WinMemberExplSpec;
 
76181
  friend class ::WinTypeKeywords;
 
76182
  friend class ::WinFriend;
 
76183
  friend class ::ExtAC;
 
76184
  friend class ::ExtACBuilderCoupling;
 
76185
  friend class ::ExtACSyntaxCoupling;
 
76186
  friend class ::ExtACTree;
 
76187
  friend class ::ExtACKeywords;
 
76188
  friend class ::ExtGnu;
 
76189
  friend class ::PragmaOnceUnitState;
 
76190
  friend class ::PragmaOnce;
 
76191
  friend class ::CMatchSyntax;
 
76192
 
 
76193
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76194
 
 
76195
  CTree *sons[2]; // key, semi_colon
 
76196
 
 
76197
public:
 
76198
  /** Constructor.
 
76199
   *  \param key The keyword 'continue'.
 
76200
   *  \param sc The trailing semi-colon. */
 
76201
  CT_ContinueStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
76202
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76203
  static const char *NodeId ();
 
76204
  /** Get the name of the node. Can be compared with NodeId(). */
 
76205
  const char *NodeName () const { return NodeId (); }
 
76206
  /** Get the number of sons. */
 
76207
  int Sons () const { return 2; }
 
76208
  /** Get the n-th son.
 
76209
   *  \param n The index of the son.
 
76210
   *  \return The n-th son or NULL. */
 
76211
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
76212
  /** Replace a son.
 
76213
   *  \param old_son The son to replace.
 
76214
   *  \param new_son The new son. */
 
76215
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
76216
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
76217
  }
 
76218
public:
 
76219
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
76220
  const char *__attr_name (unsigned i) const {
 
76221
    static const char *names[] = { "sons" }; return names[i];
 
76222
  }
 
76223
  const void *__attr (unsigned __i) const {
 
76224
    switch (__i) { case 0: return &sons; default: return 0; }
 
76225
  }
 
76226
#line 3711 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76227
};
 
76228
 
 
76229
/** \class CT_GotoStmt CTree.h Puma/CTree.h
 
76230
 *  Tree node representing a goto-stmt.
 
76231
 *  Example: \code goto incr_a; \endcode */
 
76232
 
 
76233
#line 76234 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76234
} // closed Puma
 
76235
class CCExprResolve;
 
76236
class CExprResolve;
 
76237
class WinIfExists;
 
76238
class WinImportHandler;
 
76239
class WinMacros;
 
76240
class WinAsm;
 
76241
class WinDeclSpecs;
 
76242
class WinMemberExplSpec;
 
76243
class WinTypeKeywords;
 
76244
class WinFriend;
 
76245
class ExtAC;
 
76246
class ExtACBuilderCoupling;
 
76247
class ExtACSyntaxCoupling;
 
76248
class ExtACTree;
 
76249
class ExtACKeywords;
 
76250
class ExtGnu;
 
76251
class PragmaOnceUnitState;
 
76252
class PragmaOnce;
 
76253
class CMatchSyntax;
 
76254
namespace Puma {
 
76255
 
 
76256
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76257
class CT_GotoStmt : public CT_Statement {
 
76258
#line 76259 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76259
  friend class ::CCExprResolve;
 
76260
  friend class ::CExprResolve;
 
76261
  friend class ::WinIfExists;
 
76262
  friend class ::WinImportHandler;
 
76263
  friend class ::WinMacros;
 
76264
  friend class ::WinAsm;
 
76265
  friend class ::WinDeclSpecs;
 
76266
  friend class ::WinMemberExplSpec;
 
76267
  friend class ::WinTypeKeywords;
 
76268
  friend class ::WinFriend;
 
76269
  friend class ::ExtAC;
 
76270
  friend class ::ExtACBuilderCoupling;
 
76271
  friend class ::ExtACSyntaxCoupling;
 
76272
  friend class ::ExtACTree;
 
76273
  friend class ::ExtACKeywords;
 
76274
  friend class ::ExtGnu;
 
76275
  friend class ::PragmaOnceUnitState;
 
76276
  friend class ::PragmaOnce;
 
76277
  friend class ::CMatchSyntax;
 
76278
 
 
76279
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76280
 
 
76281
  CTree *sons[3]; // key, label, semi_colon
 
76282
 
 
76283
public:
 
76284
  /** Constructor.
 
76285
   *  \param key The keyword 'goto'.
 
76286
   *  \param l The name of the jump label.
 
76287
   *  \param sc The trailing semi-colon. */
 
76288
  CT_GotoStmt (CTree *key, CTree *l, CTree *sc) {
 
76289
    AddSon (sons[0], key); AddSon (sons[1], l); AddSon (sons[2], sc); 
 
76290
  }
 
76291
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76292
  static const char *NodeId ();
 
76293
  /** Get the name of the node. Can be compared with NodeId(). */
 
76294
  const char *NodeName () const { return NodeId (); }
 
76295
  /** Get the number of sons. */
 
76296
  int Sons () const { return 3; }
 
76297
  /** Get the n-th son.
 
76298
   *  \param n The index of the son.
 
76299
   *  \return The n-th son or NULL. */
 
76300
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
76301
  /** Get the name of the jump label. */
 
76302
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[1]; }
 
76303
  /** Replace a son.
 
76304
   *  \param old_son The son to replace.
 
76305
   *  \param new_son The new son. */
 
76306
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
76307
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
76308
  }
 
76309
public:
 
76310
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
76311
  const char *__attr_name (unsigned i) const {
 
76312
    static const char *names[] = { "sons" }; return names[i];
 
76313
  }
 
76314
  const void *__attr (unsigned __i) const {
 
76315
    switch (__i) { case 0: return &sons; default: return 0; }
 
76316
  }
 
76317
#line 3745 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76318
};
 
76319
 
 
76320
/** \class CT_ReturnStmt CTree.h Puma/CTree.h
 
76321
 *  Tree node representing a return-statement.
 
76322
 *  Example: \code return 1; \endcode */
 
76323
 
 
76324
#line 76325 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76325
} // closed Puma
 
76326
class CCExprResolve;
 
76327
class CExprResolve;
 
76328
class WinIfExists;
 
76329
class WinImportHandler;
 
76330
class WinMacros;
 
76331
class WinAsm;
 
76332
class WinDeclSpecs;
 
76333
class WinMemberExplSpec;
 
76334
class WinTypeKeywords;
 
76335
class WinFriend;
 
76336
class ExtAC;
 
76337
class ExtACBuilderCoupling;
 
76338
class ExtACSyntaxCoupling;
 
76339
class ExtACTree;
 
76340
class ExtACKeywords;
 
76341
class ExtGnu;
 
76342
class PragmaOnceUnitState;
 
76343
class PragmaOnce;
 
76344
class CMatchSyntax;
 
76345
namespace Puma {
 
76346
 
 
76347
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76348
class CT_ReturnStmt : public CT_Statement {
 
76349
#line 76350 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76350
  friend class ::CCExprResolve;
 
76351
  friend class ::CExprResolve;
 
76352
  friend class ::WinIfExists;
 
76353
  friend class ::WinImportHandler;
 
76354
  friend class ::WinMacros;
 
76355
  friend class ::WinAsm;
 
76356
  friend class ::WinDeclSpecs;
 
76357
  friend class ::WinMemberExplSpec;
 
76358
  friend class ::WinTypeKeywords;
 
76359
  friend class ::WinFriend;
 
76360
  friend class ::ExtAC;
 
76361
  friend class ::ExtACBuilderCoupling;
 
76362
  friend class ::ExtACSyntaxCoupling;
 
76363
  friend class ::ExtACTree;
 
76364
  friend class ::ExtACKeywords;
 
76365
  friend class ::ExtGnu;
 
76366
  friend class ::PragmaOnceUnitState;
 
76367
  friend class ::PragmaOnce;
 
76368
  friend class ::CMatchSyntax;
 
76369
 
 
76370
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76371
 
 
76372
  CTree *sons[3]; // key, expr, semi_colon
 
76373
 
 
76374
public:
 
76375
  /** Constructor.
 
76376
   *  \param key The keyword 'return'.
 
76377
   *  \param e The expression specifying the return value. 
 
76378
   *  \param sc The trailing semi-colon. */
 
76379
  CT_ReturnStmt (CTree *key, CTree *e, CTree *sc) {
 
76380
    AddSon (sons[0], key); AddSon (sons[1], e); AddSon (sons[2], sc); 
 
76381
  }
 
76382
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76383
  static const char *NodeId ();
 
76384
  /** Get the name of the node. Can be compared with NodeId(). */
 
76385
  const char *NodeName () const { return NodeId (); }
 
76386
  /** Get the number of sons. */
 
76387
  int Sons () const { return CTree::Sons (sons, 3); }
 
76388
  /** Get the n-th son.
 
76389
   *  \param n The index of the son.
 
76390
   *  \return The n-th son or NULL. */
 
76391
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
76392
  /** Get the expression specifying the return value. */
 
76393
  CTree *Expr () const { return sons[1]; }
 
76394
  /** Replace a son.
 
76395
   *  \param old_son The son to replace.
 
76396
   *  \param new_son The new son. */
 
76397
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
76398
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
76399
  }
 
76400
public:
 
76401
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
76402
  const char *__attr_name (unsigned i) const {
 
76403
    static const char *names[] = { "sons" }; return names[i];
 
76404
  }
 
76405
  const void *__attr (unsigned __i) const {
 
76406
    switch (__i) { case 0: return &sons; default: return 0; }
 
76407
  }
 
76408
#line 3779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76409
};
 
76410
 
 
76411
/** \class CT_WhileStmt CTree.h Puma/CTree.h
 
76412
 *  Tree node representing a while-statement.
 
76413
 *  Example: \code while(a>0) a--; \endcode */
 
76414
 
 
76415
#line 76416 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76416
} // closed Puma
 
76417
class CCExprResolve;
 
76418
class CExprResolve;
 
76419
class WinIfExists;
 
76420
class WinImportHandler;
 
76421
class WinMacros;
 
76422
class WinAsm;
 
76423
class WinDeclSpecs;
 
76424
class WinMemberExplSpec;
 
76425
class WinTypeKeywords;
 
76426
class WinFriend;
 
76427
class ExtAC;
 
76428
class ExtACBuilderCoupling;
 
76429
class ExtACSyntaxCoupling;
 
76430
class ExtACTree;
 
76431
class ExtACKeywords;
 
76432
class ExtGnu;
 
76433
class PragmaOnceUnitState;
 
76434
class PragmaOnce;
 
76435
class CMatchSyntax;
 
76436
namespace Puma {
 
76437
 
 
76438
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76439
class CT_WhileStmt : public CT_Statement, public CSemScope {
 
76440
#line 76441 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76441
  friend class ::CCExprResolve;
 
76442
  friend class ::CExprResolve;
 
76443
  friend class ::WinIfExists;
 
76444
  friend class ::WinImportHandler;
 
76445
  friend class ::WinMacros;
 
76446
  friend class ::WinAsm;
 
76447
  friend class ::WinDeclSpecs;
 
76448
  friend class ::WinMemberExplSpec;
 
76449
  friend class ::WinTypeKeywords;
 
76450
  friend class ::WinFriend;
 
76451
  friend class ::ExtAC;
 
76452
  friend class ::ExtACBuilderCoupling;
 
76453
  friend class ::ExtACSyntaxCoupling;
 
76454
  friend class ::ExtACTree;
 
76455
  friend class ::ExtACKeywords;
 
76456
  friend class ::ExtGnu;
 
76457
  friend class ::PragmaOnceUnitState;
 
76458
  friend class ::PragmaOnce;
 
76459
  friend class ::CMatchSyntax;
 
76460
 
 
76461
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76462
 
 
76463
  CTree *sons[5]; // key, open, cond, close, stmt
 
76464
 
 
76465
public:
 
76466
  /** Constructor.
 
76467
   *  \param kw The keyword 'while'.
 
76468
   *  \param o Left parenthesis before the condition.
 
76469
   *  \param cond The loop condition. 
 
76470
   *  \param c Right parenthesis behind the condition. 
 
76471
   *  \param stmt The controlled statement. */
 
76472
  CT_WhileStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
76473
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
76474
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
76475
  }
 
76476
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76477
  static const char *NodeId ();
 
76478
  /** Get the name of the node. Can be compared with NodeId(). */
 
76479
  const char *NodeName () const { return NodeId (); }
 
76480
  /** Get the number of sons. */
 
76481
  int Sons () const { return 5; }
 
76482
  /** Get the n-th son.
 
76483
   *  \param n The index of the son.
 
76484
   *  \return The n-th son or NULL. */
 
76485
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
76486
  /** Get the controlled statement. */
 
76487
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
76488
  /** Get the loop condition. */
 
76489
  CTree *Condition () const { return sons[2]; }
 
76490
  /** Replace a son.
 
76491
   *  \param old_son The son to replace.
 
76492
   *  \param new_son The new son. */
 
76493
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
76494
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
76495
  }
 
76496
  /** Get the scope opened by the while-statement. */
 
76497
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
76498
public:
 
76499
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
76500
  const char *__attr_name (unsigned i) const {
 
76501
    static const char *names[] = { "sons" }; return names[i];
 
76502
  }
 
76503
  const void *__attr (unsigned __i) const {
 
76504
    switch (__i) { case 0: return &sons; default: return 0; }
 
76505
  }
 
76506
#line 3820 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76507
};
 
76508
 
 
76509
/** \class CT_DoStmt CTree.h Puma/CTree.h
 
76510
 *  Tree node representing a do-while-statement.
 
76511
 *  Example: \code do a--; while(a>0); \endcode */
 
76512
 
 
76513
#line 76514 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76514
} // closed Puma
 
76515
class CCExprResolve;
 
76516
class CExprResolve;
 
76517
class WinIfExists;
 
76518
class WinImportHandler;
 
76519
class WinMacros;
 
76520
class WinAsm;
 
76521
class WinDeclSpecs;
 
76522
class WinMemberExplSpec;
 
76523
class WinTypeKeywords;
 
76524
class WinFriend;
 
76525
class ExtAC;
 
76526
class ExtACBuilderCoupling;
 
76527
class ExtACSyntaxCoupling;
 
76528
class ExtACTree;
 
76529
class ExtACKeywords;
 
76530
class ExtGnu;
 
76531
class PragmaOnceUnitState;
 
76532
class PragmaOnce;
 
76533
class CMatchSyntax;
 
76534
namespace Puma {
 
76535
 
 
76536
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76537
class CT_DoStmt : public CT_Statement {
 
76538
#line 76539 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76539
  friend class ::CCExprResolve;
 
76540
  friend class ::CExprResolve;
 
76541
  friend class ::WinIfExists;
 
76542
  friend class ::WinImportHandler;
 
76543
  friend class ::WinMacros;
 
76544
  friend class ::WinAsm;
 
76545
  friend class ::WinDeclSpecs;
 
76546
  friend class ::WinMemberExplSpec;
 
76547
  friend class ::WinTypeKeywords;
 
76548
  friend class ::WinFriend;
 
76549
  friend class ::ExtAC;
 
76550
  friend class ::ExtACBuilderCoupling;
 
76551
  friend class ::ExtACSyntaxCoupling;
 
76552
  friend class ::ExtACTree;
 
76553
  friend class ::ExtACKeywords;
 
76554
  friend class ::ExtGnu;
 
76555
  friend class ::PragmaOnceUnitState;
 
76556
  friend class ::PragmaOnce;
 
76557
  friend class ::CMatchSyntax;
 
76558
 
 
76559
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76560
 
 
76561
  CTree *sons[7]; // do, stmt, while, open, expr, close, semi_colon
 
76562
 
 
76563
public:
 
76564
  /** Constructor.
 
76565
   *  \param d The keyword 'do'.
 
76566
   *  \param stmt The controlled statement.
 
76567
   *  \param w The keyword 'while'.
 
76568
   *  \param o Left parenthesis before the loop condition.
 
76569
   *  \param e The loop condition.
 
76570
   *  \param c Right parenthesis behind the loop condition.
 
76571
   *  \param sc The trailing semi-colon. */
 
76572
  CT_DoStmt (CTree *d, CTree *stmt, CTree *w, CTree *o, CTree *e, 
 
76573
             CTree *c, CTree *sc) {
 
76574
    AddSon (sons[0], d); AddSon (sons[1], stmt); AddSon (sons[2], w); 
 
76575
    AddSon (sons[3], o); AddSon (sons[4], e); AddSon (sons[5], c); 
 
76576
    AddSon (sons[6], sc); 
 
76577
  }
 
76578
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76579
  static const char *NodeId ();
 
76580
  /** Get the name of the node. Can be compared with NodeId(). */
 
76581
  const char *NodeName () const { return NodeId (); }
 
76582
  /** Get the number of sons. */
 
76583
  int Sons () const { return 7; }
 
76584
  /** Get the n-th son.
 
76585
   *  \param n The index of the son.
 
76586
   *  \return The n-th son or NULL. */
 
76587
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
76588
  /** Get the controlled statement. */
 
76589
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
76590
  /** Get the loop condition. */
 
76591
  CTree *Expr () const { return sons[4]; }
 
76592
  /** Replace a son.
 
76593
   *  \param old_son The son to replace.
 
76594
   *  \param new_son The new son. */
 
76595
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
76596
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
76597
  }
 
76598
public:
 
76599
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
76600
  const char *__attr_name (unsigned i) const {
 
76601
    static const char *names[] = { "sons" }; return names[i];
 
76602
  }
 
76603
  const void *__attr (unsigned __i) const {
 
76604
    switch (__i) { case 0: return &sons; default: return 0; }
 
76605
  }
 
76606
#line 3863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76607
};
 
76608
 
 
76609
/** \class CT_ForStmt CTree.h Puma/CTree.h
 
76610
 *  Tree node representing a for-statement.
 
76611
 *  Example: \code for(int i=0; i<10; i++) f(i); \endcode */
 
76612
 
 
76613
#line 76614 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76614
} // closed Puma
 
76615
class CCExprResolve;
 
76616
class CExprResolve;
 
76617
class WinIfExists;
 
76618
class WinImportHandler;
 
76619
class WinMacros;
 
76620
class WinAsm;
 
76621
class WinDeclSpecs;
 
76622
class WinMemberExplSpec;
 
76623
class WinTypeKeywords;
 
76624
class WinFriend;
 
76625
class ExtAC;
 
76626
class ExtACBuilderCoupling;
 
76627
class ExtACSyntaxCoupling;
 
76628
class ExtACTree;
 
76629
class ExtACKeywords;
 
76630
class ExtGnu;
 
76631
class PragmaOnceUnitState;
 
76632
class PragmaOnce;
 
76633
class CMatchSyntax;
 
76634
namespace Puma {
 
76635
 
 
76636
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76637
class CT_ForStmt : public CT_Statement, public CSemScope {
 
76638
#line 76639 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76639
  friend class ::CCExprResolve;
 
76640
  friend class ::CExprResolve;
 
76641
  friend class ::WinIfExists;
 
76642
  friend class ::WinImportHandler;
 
76643
  friend class ::WinMacros;
 
76644
  friend class ::WinAsm;
 
76645
  friend class ::WinDeclSpecs;
 
76646
  friend class ::WinMemberExplSpec;
 
76647
  friend class ::WinTypeKeywords;
 
76648
  friend class ::WinFriend;
 
76649
  friend class ::ExtAC;
 
76650
  friend class ::ExtACBuilderCoupling;
 
76651
  friend class ::ExtACSyntaxCoupling;
 
76652
  friend class ::ExtACTree;
 
76653
  friend class ::ExtACKeywords;
 
76654
  friend class ::ExtGnu;
 
76655
  friend class ::PragmaOnceUnitState;
 
76656
  friend class ::PragmaOnce;
 
76657
  friend class ::CMatchSyntax;
 
76658
 
 
76659
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76660
 
 
76661
  CTree *sons[8]; // key, open, init, cond, semi_colon, expr, close, stmt
 
76662
 
 
76663
public:
 
76664
  /** Constructor.
 
76665
   *  \param k The keyword 'for'.
 
76666
   *  \param o Left parenthesis.
 
76667
   *  \param i The loop initializer statement.
 
76668
   *  \param co The loop condition.
 
76669
   *  \param sc The semi-colon behind the loop condition.
 
76670
   *  \param e The loop counter expression.
 
76671
   *  \param c Right parenthesis.
 
76672
   *  \param stmt The controlled statement. */
 
76673
  CT_ForStmt (CTree *k, CTree *o, CTree *i, CTree *co, CTree *sc,
 
76674
              CTree *e, CTree *c, CTree *stmt) {
 
76675
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], i); 
 
76676
    AddSon (sons[3], co); AddSon (sons[4], sc); AddSon (sons[5], e); 
 
76677
    AddSon (sons[6], c); AddSon (sons[7], stmt); 
 
76678
  }
 
76679
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76680
  static const char *NodeId ();
 
76681
  /** Get the name of the node. Can be compared with NodeId(). */
 
76682
  const char *NodeName () const { return NodeId (); }
 
76683
  /** Get the number of sons. */
 
76684
  int Sons () const { return CTree::Sons (sons, 8); }
 
76685
  /** Get the n-th son.
 
76686
   *  \param n The index of the son.
 
76687
   *  \return The n-th son or NULL. */
 
76688
  CTree *Son (int n) const { return CTree::Son (sons, 8, n); }
 
76689
  /** Get the loop initializer. */
 
76690
  CTree *InitStmt () const { return sons[2]; }
 
76691
  /** Get the loop condition. */
 
76692
  CTree *Condition () const { return sons[3]; }
 
76693
  /** Get the loop counter expression. */
 
76694
  CTree *Expr () const { return sons[5]; }
 
76695
  /** Get the controlled statement. */
 
76696
  CT_Statement *Statement () const { return (CT_Statement*)sons[7]; }
 
76697
  /** Replace a son.
 
76698
   *  \param old_son The son to replace.
 
76699
   *  \param new_son The new son. */
 
76700
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
76701
    CTree::ReplaceSon (sons, 8, old_son, new_son);
 
76702
  }
 
76703
  /** Get the scope opened by the for-statement. */
 
76704
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
76705
public:
 
76706
  typedef AC::TL<Puma::CTree * [8],AC::TLE > __AttrTypes;
 
76707
  const char *__attr_name (unsigned i) const {
 
76708
    static const char *names[] = { "sons" }; return names[i];
 
76709
  }
 
76710
  const void *__attr (unsigned __i) const {
 
76711
    switch (__i) { case 0: return &sons; default: return 0; }
 
76712
  }
 
76713
#line 3913 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76714
};
 
76715
 
 
76716
/** \class CT_Condition CTree.h Puma/CTree.h
 
76717
 *  Tree node representing a control-statement condition.
 
76718
 *  Example: \code int i = 0 \endcode */
 
76719
 
 
76720
#line 76721 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76721
} // closed Puma
 
76722
class CCExprResolve;
 
76723
class CExprResolve;
 
76724
class WinIfExists;
 
76725
class WinImportHandler;
 
76726
class WinMacros;
 
76727
class WinAsm;
 
76728
class WinDeclSpecs;
 
76729
class WinMemberExplSpec;
 
76730
class WinTypeKeywords;
 
76731
class WinFriend;
 
76732
class ExtAC;
 
76733
class ExtACBuilderCoupling;
 
76734
class ExtACSyntaxCoupling;
 
76735
class ExtACTree;
 
76736
class ExtACKeywords;
 
76737
class ExtGnu;
 
76738
class PragmaOnceUnitState;
 
76739
class PragmaOnce;
 
76740
class CMatchSyntax;
 
76741
namespace Puma {
 
76742
 
 
76743
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76744
class CT_Condition : public CT_Decl, public CSemObject {
 
76745
#line 76746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76746
  friend class ::CCExprResolve;
 
76747
  friend class ::CExprResolve;
 
76748
  friend class ::WinIfExists;
 
76749
  friend class ::WinImportHandler;
 
76750
  friend class ::WinMacros;
 
76751
  friend class ::WinAsm;
 
76752
  friend class ::WinDeclSpecs;
 
76753
  friend class ::WinMemberExplSpec;
 
76754
  friend class ::WinTypeKeywords;
 
76755
  friend class ::WinFriend;
 
76756
  friend class ::ExtAC;
 
76757
  friend class ::ExtACBuilderCoupling;
 
76758
  friend class ::ExtACSyntaxCoupling;
 
76759
  friend class ::ExtACTree;
 
76760
  friend class ::ExtACKeywords;
 
76761
  friend class ::ExtGnu;
 
76762
  friend class ::PragmaOnceUnitState;
 
76763
  friend class ::PragmaOnce;
 
76764
  friend class ::CMatchSyntax;
 
76765
 
 
76766
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76767
 
 
76768
  CTree *sons[3]; // declspecs, declarator, init
 
76769
 
 
76770
public:
 
76771
  /** Constructor.
 
76772
   *  \param dsl The declaration specifier sequence. 
 
76773
   *  \param d The variable declarator. */
 
76774
  CT_Condition (CTree *dsl, CTree *d) {
 
76775
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], 0);
 
76776
  }
 
76777
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76778
  static const char *NodeId ();
 
76779
  /** Get the name of the node. Can be compared with NodeId(). */
 
76780
  const char *NodeName () const { return NodeId (); }
 
76781
  /** Get the number of sons. */
 
76782
  int Sons () const { return CTree::Sons (sons, 3); }
 
76783
  /** Get the n-th son.
 
76784
   *  \param n The index of the son.
 
76785
   *  \return The n-th son or NULL. */
 
76786
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
76787
  /** Get the declaration specifier sequence. */
 
76788
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
76789
  /** Get the declarator. */
 
76790
  CTree *Declarator () const { return sons[1]; }
 
76791
  /** Get the initializer of the declaration. */
 
76792
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
76793
  /** Get the semantic information of the declared object. */
 
76794
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
76795
  /** Set the initializer. */
 
76796
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
76797
  /** Replace a son.
 
76798
   *  \param old_son The son to replace.
 
76799
   *  \param new_son The new son. */
 
76800
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
76801
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
76802
  }
 
76803
public:
 
76804
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
76805
  const char *__attr_name (unsigned i) const {
 
76806
    static const char *names[] = { "sons" }; return names[i];
 
76807
  }
 
76808
  const void *__attr (unsigned __i) const {
 
76809
    switch (__i) { case 0: return &sons; default: return 0; }
 
76810
  }
 
76811
#line 3954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76812
};
 
76813
 
 
76814
/*****************************************************************************/
 
76815
/*                                                                           */
 
76816
/*                              Classes                                      */
 
76817
/*                                                                           */
 
76818
/*****************************************************************************/
 
76819
 
 
76820
/** \class CT_ClassDef CTree.h Puma/CTree.h
 
76821
 *  Tree node representing a class definition.
 
76822
 *  Example: \code class X : Y { int x; } \endcode */
 
76823
 
 
76824
#line 76825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76825
} // closed Puma
 
76826
class CCExprResolve;
 
76827
class CExprResolve;
 
76828
class WinIfExists;
 
76829
class WinImportHandler;
 
76830
class WinMacros;
 
76831
class WinAsm;
 
76832
class WinDeclSpecs;
 
76833
class WinMemberExplSpec;
 
76834
class WinTypeKeywords;
 
76835
class WinFriend;
 
76836
class ExtAC;
 
76837
class ExtACBuilderCoupling;
 
76838
class ExtACSyntaxCoupling;
 
76839
class ExtACTree;
 
76840
class ExtACKeywords;
 
76841
class ExtGnu;
 
76842
class PragmaOnceUnitState;
 
76843
class PragmaOnce;
 
76844
class CMatchSyntax;
 
76845
namespace Puma {
 
76846
 
 
76847
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76848
 
 
76849
#line 76850 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76850
} // closed Puma
 
76851
 
 
76852
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
76853
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
76854
#include "ExtACTree.ah"
 
76855
#endif
 
76856
namespace Puma {
 
76857
 
 
76858
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76859
class CT_ClassDef : public CT_Decl, public CSemObject {
 
76860
#line 76861 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76861
  friend class ::CCExprResolve;
 
76862
  friend class ::CExprResolve;
 
76863
  friend class ::WinIfExists;
 
76864
  friend class ::WinImportHandler;
 
76865
  friend class ::WinMacros;
 
76866
  friend class ::WinAsm;
 
76867
  friend class ::WinDeclSpecs;
 
76868
  friend class ::WinMemberExplSpec;
 
76869
  friend class ::WinTypeKeywords;
 
76870
  friend class ::WinFriend;
 
76871
  friend class ::ExtAC;
 
76872
  friend class ::ExtACBuilderCoupling;
 
76873
  friend class ::ExtACSyntaxCoupling;
 
76874
  friend class ::ExtACTree;
 
76875
  friend class ::ExtACKeywords;
 
76876
  friend class ::ExtGnu;
 
76877
  friend class ::PragmaOnceUnitState;
 
76878
  friend class ::PragmaOnce;
 
76879
  friend class ::CMatchSyntax;
 
76880
 
 
76881
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76882
 
 
76883
   
 
76884
#line 76885 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76885
 
 
76886
  struct __ac_wrapper_sons {
 
76887
    typedef ::Puma::CTree * E; typedef E A[4]; A _data;
 
76888
    operator A& () { return _data; }
 
76889
    operator A& () const { return (A&)*(::Puma::CTree * *)_data; }
 
76890
    operator const A& () { return _data; }
 
76891
    operator const A& () const { return _data; }
 
76892
    operator void* () { return _data; }
 
76893
    operator void* () const { return (void*)_data; }
 
76894
    operator const void* () { return _data; }
 
76895
    operator const void* () const { return _data; }
 
76896
    template <typename I> E& operator [] (I i) { return _data[i]; } // for VC++ 2003
 
76897
    template <typename I> const E& operator [] (I i) const { return _data[i]; } // for VC++ 2003
 
76898
  } sons
 
76899
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76900
 
 
76901
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76902
; // key, name, bases, members
 
76903
  CTree *obj_decl;
 
76904
 
 
76905
public:
 
76906
  /** Constructor.
 
76907
   *  \param k The keyword 'class' or 'struct'.
 
76908
   *  \param n The name of the class.
 
76909
   *  \param b The base class list. */
 
76910
  
 
76911
#line 76912 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76912
 
 
76913
 
 
76914
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 {
 
76915
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 __TJP;
 
76916
  typedef TResult Result;
 
76917
  typedef TThat   That;
 
76918
  typedef TTarget Target;
 
76919
  enum { ARGS = TArgs::ARGS };
 
76920
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
76921
  static const int JPID = 55;
 
76922
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
76923
  struct Res {
 
76924
    typedef void Type;
 
76925
    typedef void ReferredType;
 
76926
  };
 
76927
 
 
76928
  That *_that;
 
76929
 
 
76930
  inline That *that() {return (That*)_that;}
 
76931
 
 
76932
};
 
76933
 
 
76934
 
 
76935
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76936
CT_ClassDef (CTree * arg0, CTree * arg1, CTree * arg2 = (CTree*)0) 
 
76937
#line 76938 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
76938
{
 
76939
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TLE > > > > __TJP;
 
76940
    __TJP tjp;
 
76941
  tjp._that =  (__TJP::That*)this;
 
76942
    this->__exec_old_C1(arg0, arg1, arg2);
 
76943
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
76944
  
 
76945
}
 
76946
__attribute__((always_inline)) inline void __exec_old_C1(::Puma::CTree * k,::Puma::CTree * n,::Puma::CTree * b)
 
76947
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
76948
{
 
76949
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], b); 
 
76950
    AddSon (sons[3], 0); AddSon (obj_decl, 0); 
 
76951
  }
 
76952
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
76953
  static const char *NodeId ();
 
76954
  /** Get the name of the node. Can be compared with NodeId(). */
 
76955
  const char *NodeName () const { return NodeId (); }
 
76956
  /** Get the number of sons. */
 
76957
  int Sons () const { return CTree::Sons (sons, 4); }
 
76958
  /** Get the n-th son.
 
76959
   *  \param n The index of the son.
 
76960
   *  \return The n-th son or NULL. */
 
76961
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
76962
  /** Get the name of the class. */
 
76963
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
76964
  /** Get the member declarations list. */
 
76965
  CT_MembList *Members () const { return (CT_MembList*)sons[3]; }
 
76966
  /** Get the base class specifiers list. */
 
76967
  CT_BaseSpecList *BaseClasses () const { return (CT_BaseSpecList*)sons[2]; }
 
76968
  /** Get the object declaration node containing the class definition. */
 
76969
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
76970
  /** Get the semantic information about the declared class. */
 
76971
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
76972
  /** Set the member declarations list. */
 
76973
  void Members (CTree *m) { AddSon (sons[3], m); }
 
76974
  /** Set the base class specifiers list. */
 
76975
  void BaseClasses (CTree *bc) { AddSon (sons[2], bc); }
 
76976
  /** Set the object declaration containing the class definition. */
 
76977
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
76978
  /** Replace a son.
 
76979
   *  \param old_son The son to replace.
 
76980
   *  \param new_son The new son. */
 
76981
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
76982
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
76983
  }
 
76984
   private:
 
76985
 
 
76986
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
76987
 Puma :: CTree * _intro_members ;
 
76988
Puma :: CTree * _base_intros ;
 
76989
public :
 
76990
Puma :: CTree * IntroMembers ( ) const { return _intro_members ; }
 
76991
void IntroMembers ( Puma :: CTree * members ) { _intro_members = members ; }
 
76992
Puma :: CTree * BaseIntros ( ) const { return _base_intros ; }
 
76993
void BaseIntros ( Puma :: CTree * bases ) { _base_intros = bases ; }public:
 
76994
  typedef AC::TL<Puma::CTree * [4],AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
76995
  const char *__attr_name (unsigned i) const {
 
76996
    static const char *names[] = { "sons", "obj_decl", "_intro_members", "_base_intros" }; return names[i];
 
76997
  }
 
76998
  const void *__attr (unsigned __i) const {
 
76999
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; case 2: return &_intro_members; case 3: return &_base_intros; default: return 0; }
 
77000
  }
 
77001
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77002
 
 
77003
#line 77004 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77004
 
 
77005
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 {
 
77006
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 __TJP;
 
77007
  typedef TResult Result;
 
77008
  typedef TThat   That;
 
77009
  typedef TTarget Target;
 
77010
  enum { ARGS = TArgs::ARGS };
 
77011
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
77012
  static const int JPID = 7557;
 
77013
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
77014
  struct Res {
 
77015
    typedef void Type;
 
77016
    typedef void ReferredType;
 
77017
  };
 
77018
 
 
77019
  That *_that;
 
77020
 
 
77021
  inline That *that() {return (That*)_that;}
 
77022
 
 
77023
};
 
77024
 
 
77025
 
 
77026
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77027
 
 
77028
#line 77029 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77029
 
 
77030
public:
 
77031
inline CT_ClassDef (const Puma::CT_ClassDef & arg0) : Puma::CT_Decl (arg0), Puma::CSemObject (arg0), sons (arg0.sons), obj_decl (arg0.obj_decl), _intro_members (arg0._intro_members), _base_intros (arg0._base_intros) {
 
77032
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< const ::Puma::CT_ClassDef & , AC::TLE > > __TJP;
 
77033
  __TJP tjp;
 
77034
  tjp._that =  (__TJP::That*)this;
 
77035
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
77036
 
 
77037
}
 
77038
 
 
77039
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77040
 
 
77041
#line 77042 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77042
 
 
77043
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefD1Ev_0 {
 
77044
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0 __TJP;
 
77045
  typedef TResult Result;
 
77046
  typedef TThat   That;
 
77047
  typedef TTarget Target;
 
77048
  enum { ARGS = TArgs::ARGS };
 
77049
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
77050
  static const int JPID = 7555;
 
77051
  static const AC::JPType JPTYPE = (AC::JPType)32;
 
77052
  struct Res {
 
77053
    typedef void Type;
 
77054
    typedef void ReferredType;
 
77055
  };
 
77056
 
 
77057
  That *_that;
 
77058
 
 
77059
  inline That *that() {return (That*)_that;}
 
77060
 
 
77061
};
 
77062
 
 
77063
 
 
77064
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77065
 
 
77066
#line 77067 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77067
 
 
77068
public:
 
77069
inline ~CT_ClassDef () {
 
77070
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TLE > __TJP;
 
77071
  __TJP tjp;
 
77072
  tjp._that =  (__TJP::That*)this;
 
77073
  AC::invoke_ExtACTree_ExtACTree_a1_before<__TJP> (&tjp);
 
77074
 
 
77075
}
 
77076
 
 
77077
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77078
};
 
77079
      
 
77080
/** \class CT_UnionDef CTree.h Puma/CTree.h
 
77081
 *  Tree node representing the definition of a union.
 
77082
 *  Example: \code union U { int i; } \endcode */
 
77083
 
 
77084
#line 77085 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77085
} // closed Puma
 
77086
class CCExprResolve;
 
77087
class CExprResolve;
 
77088
class WinIfExists;
 
77089
class WinImportHandler;
 
77090
class WinMacros;
 
77091
class WinAsm;
 
77092
class WinDeclSpecs;
 
77093
class WinMemberExplSpec;
 
77094
class WinTypeKeywords;
 
77095
class WinFriend;
 
77096
class ExtAC;
 
77097
class ExtACBuilderCoupling;
 
77098
class ExtACSyntaxCoupling;
 
77099
class ExtACTree;
 
77100
class ExtACKeywords;
 
77101
class ExtGnu;
 
77102
class PragmaOnceUnitState;
 
77103
class PragmaOnce;
 
77104
class CMatchSyntax;
 
77105
namespace Puma {
 
77106
 
 
77107
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77108
class CT_UnionDef : public CT_ClassDef {
 
77109
#line 77110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77110
  friend class ::CCExprResolve;
 
77111
  friend class ::CExprResolve;
 
77112
  friend class ::WinIfExists;
 
77113
  friend class ::WinImportHandler;
 
77114
  friend class ::WinMacros;
 
77115
  friend class ::WinAsm;
 
77116
  friend class ::WinDeclSpecs;
 
77117
  friend class ::WinMemberExplSpec;
 
77118
  friend class ::WinTypeKeywords;
 
77119
  friend class ::WinFriend;
 
77120
  friend class ::ExtAC;
 
77121
  friend class ::ExtACBuilderCoupling;
 
77122
  friend class ::ExtACSyntaxCoupling;
 
77123
  friend class ::ExtACTree;
 
77124
  friend class ::ExtACKeywords;
 
77125
  friend class ::ExtGnu;
 
77126
  friend class ::PragmaOnceUnitState;
 
77127
  friend class ::PragmaOnce;
 
77128
  friend class ::CMatchSyntax;
 
77129
 
 
77130
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77131
 
 
77132
public:
 
77133
  /** Constructor.
 
77134
   *  \param k The keyword 'union'.
 
77135
   *  \param n The name of the union.
 
77136
   *  \param b The base union list. */
 
77137
  CT_UnionDef (CTree *k, CTree *n, CTree *b = 0) : CT_ClassDef (k, n, b) {}
 
77138
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77139
  static const char *NodeId ();
 
77140
  /** Get the name of the node. Can be compared with NodeId(). */
 
77141
  const char *NodeName () const { return NodeId (); }
 
77142
public:
 
77143
  typedef AC::TLE __AttrTypes;
 
77144
  const char *__attr_name (unsigned i) const { return 0; }
 
77145
  const void *__attr (unsigned __i) const { return 0; }
 
77146
#line 4026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77147
};
 
77148
      
 
77149
/** \class CT_MembList CTree.h Puma/CTree.h
 
77150
 *  Tree node representing a member declarations list. */ 
 
77151
 
 
77152
#line 77153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77153
} // closed Puma
 
77154
class CCExprResolve;
 
77155
class CExprResolve;
 
77156
class WinIfExists;
 
77157
class WinImportHandler;
 
77158
class WinMacros;
 
77159
class WinAsm;
 
77160
class WinDeclSpecs;
 
77161
class WinMemberExplSpec;
 
77162
class WinTypeKeywords;
 
77163
class WinFriend;
 
77164
class ExtAC;
 
77165
class ExtACBuilderCoupling;
 
77166
class ExtACSyntaxCoupling;
 
77167
class ExtACTree;
 
77168
class ExtACKeywords;
 
77169
class ExtGnu;
 
77170
class PragmaOnceUnitState;
 
77171
class PragmaOnce;
 
77172
class CMatchSyntax;
 
77173
namespace Puma {
 
77174
 
 
77175
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77176
class CT_MembList : public CT_DeclList, public CSemScope {
 
77177
#line 77178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77178
  friend class ::CCExprResolve;
 
77179
  friend class ::CExprResolve;
 
77180
  friend class ::WinIfExists;
 
77181
  friend class ::WinImportHandler;
 
77182
  friend class ::WinMacros;
 
77183
  friend class ::WinAsm;
 
77184
  friend class ::WinDeclSpecs;
 
77185
  friend class ::WinMemberExplSpec;
 
77186
  friend class ::WinTypeKeywords;
 
77187
  friend class ::WinFriend;
 
77188
  friend class ::ExtAC;
 
77189
  friend class ::ExtACBuilderCoupling;
 
77190
  friend class ::ExtACSyntaxCoupling;
 
77191
  friend class ::ExtACTree;
 
77192
  friend class ::ExtACKeywords;
 
77193
  friend class ::ExtGnu;
 
77194
  friend class ::PragmaOnceUnitState;
 
77195
  friend class ::PragmaOnce;
 
77196
  friend class ::CMatchSyntax;
 
77197
 
 
77198
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77199
 
 
77200
public:
 
77201
  CT_MembList (int size = 10, int incr = 10) : 
 
77202
    CT_DeclList (size, incr) {}
 
77203
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77204
  static const char *NodeId ();
 
77205
  /** Get the name of the node. Can be compared with NodeId(). */
 
77206
  const char *NodeName () const { return NodeId (); }
 
77207
  /** Get the scope opened by the member declarations list. */
 
77208
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
77209
public:
 
77210
  typedef AC::TLE __AttrTypes;
 
77211
  const char *__attr_name (unsigned i) const { return 0; }
 
77212
  const void *__attr (unsigned __i) const { return 0; }
 
77213
#line 4040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77214
};
 
77215
 
 
77216
/** \class CT_MembInitList CTree.h Puma/CTree.h
 
77217
 *  Tree node representing a constructor initializer list.
 
77218
 *  Example: \code : Base(), m_Member(0) \endcode */
 
77219
 
 
77220
#line 77221 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77221
} // closed Puma
 
77222
class CCExprResolve;
 
77223
class CExprResolve;
 
77224
class WinIfExists;
 
77225
class WinImportHandler;
 
77226
class WinMacros;
 
77227
class WinAsm;
 
77228
class WinDeclSpecs;
 
77229
class WinMemberExplSpec;
 
77230
class WinTypeKeywords;
 
77231
class WinFriend;
 
77232
class ExtAC;
 
77233
class ExtACBuilderCoupling;
 
77234
class ExtACSyntaxCoupling;
 
77235
class ExtACTree;
 
77236
class ExtACKeywords;
 
77237
class ExtGnu;
 
77238
class PragmaOnceUnitState;
 
77239
class PragmaOnce;
 
77240
class CMatchSyntax;
 
77241
namespace Puma {
 
77242
 
 
77243
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77244
class CT_MembInitList : public CT_List, public CSemScope {
 
77245
#line 77246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77246
  friend class ::CCExprResolve;
 
77247
  friend class ::CExprResolve;
 
77248
  friend class ::WinIfExists;
 
77249
  friend class ::WinImportHandler;
 
77250
  friend class ::WinMacros;
 
77251
  friend class ::WinAsm;
 
77252
  friend class ::WinDeclSpecs;
 
77253
  friend class ::WinMemberExplSpec;
 
77254
  friend class ::WinTypeKeywords;
 
77255
  friend class ::WinFriend;
 
77256
  friend class ::ExtAC;
 
77257
  friend class ::ExtACBuilderCoupling;
 
77258
  friend class ::ExtACSyntaxCoupling;
 
77259
  friend class ::ExtACTree;
 
77260
  friend class ::ExtACKeywords;
 
77261
  friend class ::ExtGnu;
 
77262
  friend class ::PragmaOnceUnitState;
 
77263
  friend class ::PragmaOnce;
 
77264
  friend class ::CMatchSyntax;
 
77265
 
 
77266
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77267
 
 
77268
public:
 
77269
  /** Constructor.
 
77270
   *  \param size The initial size of the list. */
 
77271
  CT_MembInitList (int size = 2) : 
 
77272
    CT_List (size, 2, CT_List::OPEN) {}
 
77273
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77274
  static const char *NodeId ();
 
77275
  /** Get the name of the node. Can be compared with NodeId(). */
 
77276
  const char *NodeName () const { return NodeId (); }
 
77277
  /** Get the scope opened by the member initializer list. */
 
77278
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
77279
public:
 
77280
  typedef AC::TLE __AttrTypes;
 
77281
  const char *__attr_name (unsigned i) const { return 0; }
 
77282
  const void *__attr (unsigned __i) const { return 0; }
 
77283
#line 4057 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77284
};
 
77285
 
 
77286
/** \class CT_MembInit CTree.h Puma/CTree.h
 
77287
 *  Tree node representing a member initializer.
 
77288
 *  Example: \code m_Member(0) \endcode */
 
77289
 
 
77290
#line 77291 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77291
} // closed Puma
 
77292
class CCExprResolve;
 
77293
class CExprResolve;
 
77294
class WinIfExists;
 
77295
class WinImportHandler;
 
77296
class WinMacros;
 
77297
class WinAsm;
 
77298
class WinDeclSpecs;
 
77299
class WinMemberExplSpec;
 
77300
class WinTypeKeywords;
 
77301
class WinFriend;
 
77302
class ExtAC;
 
77303
class ExtACBuilderCoupling;
 
77304
class ExtACSyntaxCoupling;
 
77305
class ExtACTree;
 
77306
class ExtACKeywords;
 
77307
class ExtGnu;
 
77308
class PragmaOnceUnitState;
 
77309
class PragmaOnce;
 
77310
class CMatchSyntax;
 
77311
namespace Puma {
 
77312
 
 
77313
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77314
 
 
77315
#line 77316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77316
} // closed Puma
 
77317
 
 
77318
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
77319
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
77320
#include "CCExprResolveH.ah"
 
77321
#endif
 
77322
namespace Puma {
 
77323
 
 
77324
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77325
 
 
77326
#line 77327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77327
} // closed Puma
 
77328
 
 
77329
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
77330
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
77331
#include "CExprResolveH.ah"
 
77332
#endif
 
77333
namespace Puma {
 
77334
 
 
77335
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77336
class CT_MembInit : public CT_Expression, public CSemObject {
 
77337
#line 77338 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77338
  friend class ::CCExprResolve;
 
77339
  friend class ::CExprResolve;
 
77340
  friend class ::WinIfExists;
 
77341
  friend class ::WinImportHandler;
 
77342
  friend class ::WinMacros;
 
77343
  friend class ::WinAsm;
 
77344
  friend class ::WinDeclSpecs;
 
77345
  friend class ::WinMemberExplSpec;
 
77346
  friend class ::WinTypeKeywords;
 
77347
  friend class ::WinFriend;
 
77348
  friend class ::ExtAC;
 
77349
  friend class ::ExtACBuilderCoupling;
 
77350
  friend class ::ExtACSyntaxCoupling;
 
77351
  friend class ::ExtACTree;
 
77352
  friend class ::ExtACKeywords;
 
77353
  friend class ::ExtGnu;
 
77354
  friend class ::PragmaOnceUnitState;
 
77355
  friend class ::PragmaOnce;
 
77356
  friend class ::CMatchSyntax;
 
77357
 
 
77358
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77359
 
 
77360
  CTree *sons[2]; // name, init
 
77361
 
 
77362
public:
 
77363
  /** Constructor.
 
77364
   *  \param n The name of the member.
 
77365
   *  \param i The member initializer. */
 
77366
  CT_MembInit (CTree *n, CTree *i) { AddSon (sons[0], n); AddSon (sons[1], i); }
 
77367
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77368
  static const char *NodeId ();
 
77369
  /** Get the name of the node. Can be compared with NodeId(). */
 
77370
  const char *NodeName () const { return NodeId (); }
 
77371
  /** Get the number of sons. */
 
77372
  int Sons () const { return 2; }
 
77373
  /** Get the n-th son.
 
77374
   *  \param n The index of the son.
 
77375
   *  \return The n-th son or NULL. */
 
77376
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
77377
  /** Replace a son.
 
77378
   *  \param old_son The son to replace.
 
77379
   *  \param new_son The new son. */
 
77380
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
77381
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
77382
  }
 
77383
  /** Get the name of the member. */
 
77384
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
77385
  /** Get the initializer. */
 
77386
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
77387
  /** Get the semantic information about the initialized member. */
 
77388
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
77389
   private:
 
77390
  typedef CT_MembInit CCExprResolveExpr;
 
77391
 
 
77392
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
77393
 public :
 
77394
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
77395
  typedef CT_MembInit CExprResolveExpr;
 
77396
 
 
77397
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
77398
 public :
 
77399
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
77400
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
77401
  const char *__attr_name (unsigned i) const {
 
77402
    static const char *names[] = { "sons" }; return names[i];
 
77403
  }
 
77404
  const void *__attr (unsigned __i) const {
 
77405
    switch (__i) { case 0: return &sons; default: return 0; }
 
77406
  }
 
77407
#line 4092 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77408
};
 
77409
 
 
77410
/** \class CT_BaseSpecList CTree.h Puma/CTree.h
 
77411
 *  Tree node representing a base specifier list.
 
77412
 *  Example: \code : X, Y, Z \endcode */
 
77413
 
 
77414
#line 77415 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77415
} // closed Puma
 
77416
class CCExprResolve;
 
77417
class CExprResolve;
 
77418
class WinIfExists;
 
77419
class WinImportHandler;
 
77420
class WinMacros;
 
77421
class WinAsm;
 
77422
class WinDeclSpecs;
 
77423
class WinMemberExplSpec;
 
77424
class WinTypeKeywords;
 
77425
class WinFriend;
 
77426
class ExtAC;
 
77427
class ExtACBuilderCoupling;
 
77428
class ExtACSyntaxCoupling;
 
77429
class ExtACTree;
 
77430
class ExtACKeywords;
 
77431
class ExtGnu;
 
77432
class PragmaOnceUnitState;
 
77433
class PragmaOnce;
 
77434
class CMatchSyntax;
 
77435
namespace Puma {
 
77436
 
 
77437
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77438
class CT_BaseSpecList : public CT_List {
 
77439
#line 77440 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77440
  friend class ::CCExprResolve;
 
77441
  friend class ::CExprResolve;
 
77442
  friend class ::WinIfExists;
 
77443
  friend class ::WinImportHandler;
 
77444
  friend class ::WinMacros;
 
77445
  friend class ::WinAsm;
 
77446
  friend class ::WinDeclSpecs;
 
77447
  friend class ::WinMemberExplSpec;
 
77448
  friend class ::WinTypeKeywords;
 
77449
  friend class ::WinFriend;
 
77450
  friend class ::ExtAC;
 
77451
  friend class ::ExtACBuilderCoupling;
 
77452
  friend class ::ExtACSyntaxCoupling;
 
77453
  friend class ::ExtACTree;
 
77454
  friend class ::ExtACKeywords;
 
77455
  friend class ::ExtGnu;
 
77456
  friend class ::PragmaOnceUnitState;
 
77457
  friend class ::PragmaOnce;
 
77458
  friend class ::CMatchSyntax;
 
77459
 
 
77460
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77461
 
 
77462
public:
 
77463
  /** Constructor.
 
77464
   *  \param size The initial size of the list. */
 
77465
  CT_BaseSpecList (int size = 2) : 
 
77466
    CT_List (size, 2, CT_List::OPEN|CT_List::SEPARATORS) {}
 
77467
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77468
  static const char *NodeId ();
 
77469
  /** Get the name of the node. Can be compared with NodeId(). */
 
77470
  const char *NodeName () const { return NodeId (); }
 
77471
public:
 
77472
  typedef AC::TLE __AttrTypes;
 
77473
  const char *__attr_name (unsigned i) const { return 0; }
 
77474
  const void *__attr (unsigned __i) const { return 0; }
 
77475
#line 4107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77476
};
 
77477
 
 
77478
/** \class CT_AccessSpec CTree.h Puma/CTree.h
 
77479
 *  Tree node representing an access specifier.
 
77480
 *  Example: \code public: \endcode */
 
77481
 
 
77482
#line 77483 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77483
} // closed Puma
 
77484
class CCExprResolve;
 
77485
class CExprResolve;
 
77486
class WinIfExists;
 
77487
class WinImportHandler;
 
77488
class WinMacros;
 
77489
class WinAsm;
 
77490
class WinDeclSpecs;
 
77491
class WinMemberExplSpec;
 
77492
class WinTypeKeywords;
 
77493
class WinFriend;
 
77494
class ExtAC;
 
77495
class ExtACBuilderCoupling;
 
77496
class ExtACSyntaxCoupling;
 
77497
class ExtACTree;
 
77498
class ExtACKeywords;
 
77499
class ExtGnu;
 
77500
class PragmaOnceUnitState;
 
77501
class PragmaOnce;
 
77502
class CMatchSyntax;
 
77503
namespace Puma {
 
77504
 
 
77505
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77506
class CT_AccessSpec : public CTree {
 
77507
#line 77508 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77508
  friend class ::CCExprResolve;
 
77509
  friend class ::CExprResolve;
 
77510
  friend class ::WinIfExists;
 
77511
  friend class ::WinImportHandler;
 
77512
  friend class ::WinMacros;
 
77513
  friend class ::WinAsm;
 
77514
  friend class ::WinDeclSpecs;
 
77515
  friend class ::WinMemberExplSpec;
 
77516
  friend class ::WinTypeKeywords;
 
77517
  friend class ::WinFriend;
 
77518
  friend class ::ExtAC;
 
77519
  friend class ::ExtACBuilderCoupling;
 
77520
  friend class ::ExtACSyntaxCoupling;
 
77521
  friend class ::ExtACTree;
 
77522
  friend class ::ExtACKeywords;
 
77523
  friend class ::ExtGnu;
 
77524
  friend class ::PragmaOnceUnitState;
 
77525
  friend class ::PragmaOnce;
 
77526
  friend class ::CMatchSyntax;
 
77527
 
 
77528
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77529
 
 
77530
  CTree *sons[2]; // access, colon
 
77531
 
 
77532
public:
 
77533
  /** Constructor.
 
77534
   *  \param a The access specifier, i.e. 'public', 'private', or 'protected'.
 
77535
   *  \param c The trailing colon. */
 
77536
  CT_AccessSpec (CTree *a, CTree *c) { AddSon (sons[0], a); AddSon (sons[1], c); }
 
77537
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77538
  static const char *NodeId ();
 
77539
  /** Get the name of the node. Can be compared with NodeId(). */
 
77540
  const char *NodeName () const { return NodeId (); }
 
77541
  /** Get the number of sons. */
 
77542
  int Sons () const { return 2; }
 
77543
  /** Get the n-th son.
 
77544
   *  \param n The index of the son.
 
77545
   *  \return The n-th son or NULL. */
 
77546
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
77547
  /** Get the access specifier type (token type). */
 
77548
  int Access () const { return sons[0]->token ()->type (); }
 
77549
  /** Replace a son.
 
77550
   *  \param old_son The son to replace.
 
77551
   *  \param new_son The new son. */
 
77552
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
77553
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
77554
  }
 
77555
public:
 
77556
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
77557
  const char *__attr_name (unsigned i) const {
 
77558
    static const char *names[] = { "sons" }; return names[i];
 
77559
  }
 
77560
  const void *__attr (unsigned __i) const {
 
77561
    switch (__i) { case 0: return &sons; default: return 0; }
 
77562
  }
 
77563
#line 4138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77564
};
 
77565
 
 
77566
/** \class CT_BaseSpec CTree.h Puma/CTree.h
 
77567
 *  Tree node representing a base class specifier.
 
77568
 *  Example: \code public X \endcode */
 
77569
 
 
77570
#line 77571 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77571
} // closed Puma
 
77572
class CCExprResolve;
 
77573
class CExprResolve;
 
77574
class WinIfExists;
 
77575
class WinImportHandler;
 
77576
class WinMacros;
 
77577
class WinAsm;
 
77578
class WinDeclSpecs;
 
77579
class WinMemberExplSpec;
 
77580
class WinTypeKeywords;
 
77581
class WinFriend;
 
77582
class ExtAC;
 
77583
class ExtACBuilderCoupling;
 
77584
class ExtACSyntaxCoupling;
 
77585
class ExtACTree;
 
77586
class ExtACKeywords;
 
77587
class ExtGnu;
 
77588
class PragmaOnceUnitState;
 
77589
class PragmaOnce;
 
77590
class CMatchSyntax;
 
77591
namespace Puma {
 
77592
 
 
77593
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77594
class CT_BaseSpec : public CTree {
 
77595
#line 77596 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77596
  friend class ::CCExprResolve;
 
77597
  friend class ::CExprResolve;
 
77598
  friend class ::WinIfExists;
 
77599
  friend class ::WinImportHandler;
 
77600
  friend class ::WinMacros;
 
77601
  friend class ::WinAsm;
 
77602
  friend class ::WinDeclSpecs;
 
77603
  friend class ::WinMemberExplSpec;
 
77604
  friend class ::WinTypeKeywords;
 
77605
  friend class ::WinFriend;
 
77606
  friend class ::ExtAC;
 
77607
  friend class ::ExtACBuilderCoupling;
 
77608
  friend class ::ExtACSyntaxCoupling;
 
77609
  friend class ::ExtACTree;
 
77610
  friend class ::ExtACKeywords;
 
77611
  friend class ::ExtGnu;
 
77612
  friend class ::PragmaOnceUnitState;
 
77613
  friend class ::PragmaOnce;
 
77614
  friend class ::CMatchSyntax;
 
77615
 
 
77616
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77617
 
 
77618
  CTree *sons[3]; // virtual, access, name
 
77619
 
 
77620
public:
 
77621
  /** Constructor.
 
77622
   *  \param v Optional keyword 'virtual'.
 
77623
   *  \param a The optional access specifier.
 
77624
   *  \param n The name of the base class. */
 
77625
  CT_BaseSpec (CTree *v, CTree *a, CTree *n) {
 
77626
    AddSon (sons[0], v); AddSon (sons[1], a); AddSon (sons[2], n); 
 
77627
  }
 
77628
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77629
  static const char *NodeId ();
 
77630
  /** Get the name of the node. Can be compared with NodeId(). */
 
77631
  const char *NodeName () const { return NodeId (); }
 
77632
  /** Get the number of sons. */
 
77633
  int Sons () const { return CTree::Sons (sons, 3); }
 
77634
  /** Get the n-th son.
 
77635
   *  \param n The index of the son.
 
77636
   *  \return The n-th son or NULL. */
 
77637
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
77638
  /** Get the type of the access specifier (token type). */
 
77639
  int Access () const { return sons[1]->token ()->type (); }
 
77640
  /** The access specifier. */
 
77641
  CTree *AccessSpec () const { return sons[1]; }
 
77642
  /** Get the keyword 'virtual'. */
 
77643
  CTree *Virtual () const { return sons[0]; }
 
77644
  /** Get the name of the base class. */
 
77645
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
77646
  /** Replace a son.
 
77647
   *  \param old_son The son to replace.
 
77648
   *  \param new_son The new son. */
 
77649
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
77650
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
77651
  }
 
77652
public:
 
77653
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
77654
  const char *__attr_name (unsigned i) const {
 
77655
    static const char *names[] = { "sons" }; return names[i];
 
77656
  }
 
77657
  const void *__attr (unsigned __i) const {
 
77658
    switch (__i) { case 0: return &sons; default: return 0; }
 
77659
  }
 
77660
#line 4178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77661
};
 
77662
 
 
77663
/** \class CT_AccessDecl CTree.h Puma/CTree.h
 
77664
 *  Tree node representing a member access declaration.
 
77665
 *  Example: \code m_BaseClassMember; \endcode */
 
77666
 
 
77667
#line 77668 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77668
} // closed Puma
 
77669
class CCExprResolve;
 
77670
class CExprResolve;
 
77671
class WinIfExists;
 
77672
class WinImportHandler;
 
77673
class WinMacros;
 
77674
class WinAsm;
 
77675
class WinDeclSpecs;
 
77676
class WinMemberExplSpec;
 
77677
class WinTypeKeywords;
 
77678
class WinFriend;
 
77679
class ExtAC;
 
77680
class ExtACBuilderCoupling;
 
77681
class ExtACSyntaxCoupling;
 
77682
class ExtACTree;
 
77683
class ExtACKeywords;
 
77684
class ExtGnu;
 
77685
class PragmaOnceUnitState;
 
77686
class PragmaOnce;
 
77687
class CMatchSyntax;
 
77688
namespace Puma {
 
77689
 
 
77690
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77691
class CT_AccessDecl : public CT_Decl {
 
77692
#line 77693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77693
  friend class ::CCExprResolve;
 
77694
  friend class ::CExprResolve;
 
77695
  friend class ::WinIfExists;
 
77696
  friend class ::WinImportHandler;
 
77697
  friend class ::WinMacros;
 
77698
  friend class ::WinAsm;
 
77699
  friend class ::WinDeclSpecs;
 
77700
  friend class ::WinMemberExplSpec;
 
77701
  friend class ::WinTypeKeywords;
 
77702
  friend class ::WinFriend;
 
77703
  friend class ::ExtAC;
 
77704
  friend class ::ExtACBuilderCoupling;
 
77705
  friend class ::ExtACSyntaxCoupling;
 
77706
  friend class ::ExtACTree;
 
77707
  friend class ::ExtACKeywords;
 
77708
  friend class ::ExtGnu;
 
77709
  friend class ::PragmaOnceUnitState;
 
77710
  friend class ::PragmaOnce;
 
77711
  friend class ::CMatchSyntax;
 
77712
 
 
77713
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77714
 
 
77715
  CTree *sons[2]; // name, semi_colon
 
77716
 
 
77717
public:
 
77718
  /** Constructor.
 
77719
   *  \param n The name of the base class member.
 
77720
   *  \param s The trailing semi-colon. */
 
77721
  CT_AccessDecl (CTree *n, CTree *s) { AddSon (sons[0], n); AddSon (sons[1], s); }
 
77722
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77723
  static const char *NodeId ();
 
77724
  /** Get the name of the node. Can be compared with NodeId(). */
 
77725
  const char *NodeName () const { return NodeId (); }
 
77726
  /** Get the number of sons. */
 
77727
  int Sons () const { return 2; }
 
77728
  /** Get the n-th son.
 
77729
   *  \param n The index of the son.
 
77730
   *  \return The n-th son or NULL. */
 
77731
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
77732
  /** Get the name of the base class member. */
 
77733
  CT_QualName *Member () const { return (CT_QualName*)sons[0]; }
 
77734
  /** Replace a son.
 
77735
   *  \param old_son The son to replace.
 
77736
   *  \param new_son The new son. */
 
77737
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
77738
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
77739
  }
 
77740
public:
 
77741
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
77742
  const char *__attr_name (unsigned i) const {
 
77743
    static const char *names[] = { "sons" }; return names[i];
 
77744
  }
 
77745
  const void *__attr (unsigned __i) const {
 
77746
    switch (__i) { case 0: return &sons; default: return 0; }
 
77747
  }
 
77748
#line 4209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77749
};
 
77750
 
 
77751
/** \class CT_UsingDecl CTree.h Puma/CTree.h
 
77752
 *  Tree node representing a using declaration.
 
77753
 *  Example: \code using Base::m_Member; \endcode */
 
77754
 
 
77755
#line 77756 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77756
} // closed Puma
 
77757
class CCExprResolve;
 
77758
class CExprResolve;
 
77759
class WinIfExists;
 
77760
class WinImportHandler;
 
77761
class WinMacros;
 
77762
class WinAsm;
 
77763
class WinDeclSpecs;
 
77764
class WinMemberExplSpec;
 
77765
class WinTypeKeywords;
 
77766
class WinFriend;
 
77767
class ExtAC;
 
77768
class ExtACBuilderCoupling;
 
77769
class ExtACSyntaxCoupling;
 
77770
class ExtACTree;
 
77771
class ExtACKeywords;
 
77772
class ExtGnu;
 
77773
class PragmaOnceUnitState;
 
77774
class PragmaOnce;
 
77775
class CMatchSyntax;
 
77776
namespace Puma {
 
77777
 
 
77778
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77779
class CT_UsingDecl : public CT_AccessDecl {
 
77780
#line 77781 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77781
  friend class ::CCExprResolve;
 
77782
  friend class ::CExprResolve;
 
77783
  friend class ::WinIfExists;
 
77784
  friend class ::WinImportHandler;
 
77785
  friend class ::WinMacros;
 
77786
  friend class ::WinAsm;
 
77787
  friend class ::WinDeclSpecs;
 
77788
  friend class ::WinMemberExplSpec;
 
77789
  friend class ::WinTypeKeywords;
 
77790
  friend class ::WinFriend;
 
77791
  friend class ::ExtAC;
 
77792
  friend class ::ExtACBuilderCoupling;
 
77793
  friend class ::ExtACSyntaxCoupling;
 
77794
  friend class ::ExtACTree;
 
77795
  friend class ::ExtACKeywords;
 
77796
  friend class ::ExtGnu;
 
77797
  friend class ::PragmaOnceUnitState;
 
77798
  friend class ::PragmaOnce;
 
77799
  friend class ::CMatchSyntax;
 
77800
 
 
77801
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77802
 
 
77803
  CTree *sons[2]; // using, typename
 
77804
 
 
77805
public:
 
77806
  /** Constructor.
 
77807
   *  \param u The keyword 'using'.
 
77808
   *  \param n The name of the entity.
 
77809
   *  \param s The trailing semi-colon. */
 
77810
  CT_UsingDecl (CTree *u, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
77811
    AddSon (sons[0], u); AddSon (sons[1], 0); 
 
77812
  }
 
77813
  /** Constructor.
 
77814
   *  \param u The keyword 'using'.
 
77815
   *  \param t The keyword 'typename'.
 
77816
   *  \param n The name of the entity.
 
77817
   *  \param s The trailing semi-colon. */
 
77818
  CT_UsingDecl (CTree *u, CTree *t, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
77819
    AddSon (sons[0], u); AddSon (sons[1], t); 
 
77820
  }
 
77821
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77822
  static const char *NodeId ();
 
77823
  /** Get the name of the node. Can be compared with NodeId(). */
 
77824
  const char *NodeName () const { return NodeId (); }
 
77825
  /** Get the number of sons. */
 
77826
  int Sons () const { return CTree::Sons (sons, 2) + CT_AccessDecl::Sons (); }
 
77827
  /** Get the n-th son.
 
77828
   *  \param n The index of the son.
 
77829
   *  \return The n-th son or NULL. */
 
77830
  CTree *Son (int n) const {
 
77831
    int num = CTree::Sons (sons, 2);
 
77832
    CTree *result = CTree::Son (sons, 2, n);
 
77833
    return result ? result : CT_AccessDecl::Son (n-num);
 
77834
  }
 
77835
  /** Get the keyword 'typename'. */
 
77836
  CTree *Typename () const { return sons[1]; }
 
77837
  /** Replace a son.
 
77838
   *  \param old_son The son to replace.
 
77839
   *  \param new_son The new son. */
 
77840
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
77841
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
77842
    CT_AccessDecl::ReplaceSon (old_son, new_son);
 
77843
  }
 
77844
public:
 
77845
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
77846
  const char *__attr_name (unsigned i) const {
 
77847
    static const char *names[] = { "sons" }; return names[i];
 
77848
  }
 
77849
  const void *__attr (unsigned __i) const {
 
77850
    switch (__i) { case 0: return &sons; default: return 0; }
 
77851
  }
 
77852
#line 4256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77853
};
 
77854
 
 
77855
/*****************************************************************************/
 
77856
/*                                                                           */
 
77857
/*                              Wildcards                                    */
 
77858
/*                                                                           */
 
77859
/*****************************************************************************/
 
77860
 
 
77861
/** \class CT_Any CTree.h Puma/CTree.h
 
77862
 *  Tree node representing a wildcard. */
 
77863
 
 
77864
#line 77865 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77865
} // closed Puma
 
77866
class CCExprResolve;
 
77867
class CExprResolve;
 
77868
class WinIfExists;
 
77869
class WinImportHandler;
 
77870
class WinMacros;
 
77871
class WinAsm;
 
77872
class WinDeclSpecs;
 
77873
class WinMemberExplSpec;
 
77874
class WinTypeKeywords;
 
77875
class WinFriend;
 
77876
class ExtAC;
 
77877
class ExtACBuilderCoupling;
 
77878
class ExtACSyntaxCoupling;
 
77879
class ExtACTree;
 
77880
class ExtACKeywords;
 
77881
class ExtGnu;
 
77882
class PragmaOnceUnitState;
 
77883
class PragmaOnce;
 
77884
class CMatchSyntax;
 
77885
namespace Puma {
 
77886
 
 
77887
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77888
class CT_Any : public CTree {
 
77889
#line 77890 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77890
  friend class ::CCExprResolve;
 
77891
  friend class ::CExprResolve;
 
77892
  friend class ::WinIfExists;
 
77893
  friend class ::WinImportHandler;
 
77894
  friend class ::WinMacros;
 
77895
  friend class ::WinAsm;
 
77896
  friend class ::WinDeclSpecs;
 
77897
  friend class ::WinMemberExplSpec;
 
77898
  friend class ::WinTypeKeywords;
 
77899
  friend class ::WinFriend;
 
77900
  friend class ::ExtAC;
 
77901
  friend class ::ExtACBuilderCoupling;
 
77902
  friend class ::ExtACSyntaxCoupling;
 
77903
  friend class ::ExtACTree;
 
77904
  friend class ::ExtACKeywords;
 
77905
  friend class ::ExtGnu;
 
77906
  friend class ::PragmaOnceUnitState;
 
77907
  friend class ::PragmaOnce;
 
77908
  friend class ::CMatchSyntax;
 
77909
 
 
77910
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77911
 
 
77912
  CTree *sons[2]; // keyword, extension
 
77913
 
 
77914
public:
 
77915
  /** Constructor.
 
77916
   *  \param k The wildcard keyword.
 
77917
   *  \param e The extension. */
 
77918
  CT_Any (CTree *k, CTree *e = (CTree*)0) { AddSon (sons[0], k); AddSon (sons[1], e); }
 
77919
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
77920
  static const char *NodeId ();
 
77921
  /** Get the name of the node. Can be compared with NodeId(). */
 
77922
  const char *NodeName () const { return NodeId (); }
 
77923
  /** Get the number of sons. */
 
77924
  int Sons () const { return CTree::Sons (sons, 2); }
 
77925
  /** Get the n-th son.
 
77926
   *  \param n The index of the son.
 
77927
   *  \return The n-th son or NULL. */
 
77928
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
77929
  /** Replace a son.
 
77930
   *  \param old_son The son to replace.
 
77931
   *  \param new_son The new son. */
 
77932
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
77933
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
77934
  }
 
77935
  /** Get the type of the wildcard (token type). */
 
77936
  int AnyType () const { return sons[0]->token ()->type (); }
 
77937
  /** Get the extension. */
 
77938
  CT_AnyExtension *Extension () const { return (CT_AnyExtension*)sons[1]; }
 
77939
public:
 
77940
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
77941
  const char *__attr_name (unsigned i) const {
 
77942
    static const char *names[] = { "sons" }; return names[i];
 
77943
  }
 
77944
  const void *__attr (unsigned __i) const {
 
77945
    switch (__i) { case 0: return &sons; default: return 0; }
 
77946
  }
 
77947
#line 4294 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77948
};
 
77949
 
 
77950
/** \class CT_AnyList CTree.h Puma/CTree.h
 
77951
 *  Tree node representing a list wildcard. */
 
77952
 
 
77953
#line 77954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77954
} // closed Puma
 
77955
class CCExprResolve;
 
77956
class CExprResolve;
 
77957
class WinIfExists;
 
77958
class WinImportHandler;
 
77959
class WinMacros;
 
77960
class WinAsm;
 
77961
class WinDeclSpecs;
 
77962
class WinMemberExplSpec;
 
77963
class WinTypeKeywords;
 
77964
class WinFriend;
 
77965
class ExtAC;
 
77966
class ExtACBuilderCoupling;
 
77967
class ExtACSyntaxCoupling;
 
77968
class ExtACTree;
 
77969
class ExtACKeywords;
 
77970
class ExtGnu;
 
77971
class PragmaOnceUnitState;
 
77972
class PragmaOnce;
 
77973
class CMatchSyntax;
 
77974
namespace Puma {
 
77975
 
 
77976
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
77977
class CT_AnyList : public CT_Any {
 
77978
#line 77979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
77979
  friend class ::CCExprResolve;
 
77980
  friend class ::CExprResolve;
 
77981
  friend class ::WinIfExists;
 
77982
  friend class ::WinImportHandler;
 
77983
  friend class ::WinMacros;
 
77984
  friend class ::WinAsm;
 
77985
  friend class ::WinDeclSpecs;
 
77986
  friend class ::WinMemberExplSpec;
 
77987
  friend class ::WinTypeKeywords;
 
77988
  friend class ::WinFriend;
 
77989
  friend class ::ExtAC;
 
77990
  friend class ::ExtACBuilderCoupling;
 
77991
  friend class ::ExtACSyntaxCoupling;
 
77992
  friend class ::ExtACTree;
 
77993
  friend class ::ExtACKeywords;
 
77994
  friend class ::ExtGnu;
 
77995
  friend class ::PragmaOnceUnitState;
 
77996
  friend class ::PragmaOnce;
 
77997
  friend class ::CMatchSyntax;
 
77998
 
 
77999
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78000
 
 
78001
public:
 
78002
  /** Constructor.
 
78003
   *  \param k The wildcard keyword.
 
78004
   *  \param e The extension. */
 
78005
  CT_AnyList (CTree *k, CTree *e = (CTree*)0) : CT_Any (k, e) {}
 
78006
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
78007
  static const char *NodeId ();
 
78008
  /** Get the name of the node. Can be compared with NodeId(). */
 
78009
  const char *NodeName () const { return NodeId (); }
 
78010
public:
 
78011
  typedef AC::TLE __AttrTypes;
 
78012
  const char *__attr_name (unsigned i) const { return 0; }
 
78013
  const void *__attr (unsigned __i) const { return 0; }
 
78014
#line 4308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78015
};
 
78016
 
 
78017
/** \class CT_AnyExtension CTree.h Puma/CTree.h
 
78018
 *  Tree node representing a wildcard extension. */
 
78019
 
 
78020
#line 78021 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78021
} // closed Puma
 
78022
class CCExprResolve;
 
78023
class CExprResolve;
 
78024
class WinIfExists;
 
78025
class WinImportHandler;
 
78026
class WinMacros;
 
78027
class WinAsm;
 
78028
class WinDeclSpecs;
 
78029
class WinMemberExplSpec;
 
78030
class WinTypeKeywords;
 
78031
class WinFriend;
 
78032
class ExtAC;
 
78033
class ExtACBuilderCoupling;
 
78034
class ExtACSyntaxCoupling;
 
78035
class ExtACTree;
 
78036
class ExtACKeywords;
 
78037
class ExtGnu;
 
78038
class PragmaOnceUnitState;
 
78039
class PragmaOnce;
 
78040
class CMatchSyntax;
 
78041
namespace Puma {
 
78042
 
 
78043
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78044
class CT_AnyExtension : public CTree, public CSemValue {
 
78045
#line 78046 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78046
  friend class ::CCExprResolve;
 
78047
  friend class ::CExprResolve;
 
78048
  friend class ::WinIfExists;
 
78049
  friend class ::WinImportHandler;
 
78050
  friend class ::WinMacros;
 
78051
  friend class ::WinAsm;
 
78052
  friend class ::WinDeclSpecs;
 
78053
  friend class ::WinMemberExplSpec;
 
78054
  friend class ::WinTypeKeywords;
 
78055
  friend class ::WinFriend;
 
78056
  friend class ::ExtAC;
 
78057
  friend class ::ExtACBuilderCoupling;
 
78058
  friend class ::ExtACSyntaxCoupling;
 
78059
  friend class ::ExtACTree;
 
78060
  friend class ::ExtACKeywords;
 
78061
  friend class ::ExtGnu;
 
78062
  friend class ::PragmaOnceUnitState;
 
78063
  friend class ::PragmaOnce;
 
78064
  friend class ::CMatchSyntax;
 
78065
 
 
78066
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78067
 
 
78068
  CTree *sons[5]; // open, string, comma, cond, close
 
78069
 
 
78070
public:
 
78071
  /** Constructor.
 
78072
   *  \param o Left parenthesis before the extension. 
 
78073
   *  \param n The name of the extension.
 
78074
   *  \param co The comma between the name and the condition. 
 
78075
   *  \param c The condition.
 
78076
   *  \param cr Right parenthesis behind the extension. */
 
78077
  CT_AnyExtension (CTree *o, CTree *n, CTree *co, CTree *c, CTree *cr) {
 
78078
    AddSon (sons[0], o); AddSon (sons[1], n); AddSon (sons[2], co); 
 
78079
    AddSon (sons[3], c); AddSon (sons[4], cr); 
 
78080
  }
 
78081
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
78082
  static const char *NodeId ();
 
78083
  /** Get the name of the node. Can be compared with NodeId(). */
 
78084
  const char *NodeName () const { return NodeId (); }
 
78085
  /** Get the number of sons. */
 
78086
  int Sons () const { return CTree::Sons (sons, 5); }
 
78087
  /** Get the n-th son.
 
78088
   *  \param n The index of the son.
 
78089
   *  \return The n-th son or NULL. */
 
78090
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
78091
  /** Replace a son.
 
78092
   *  \param old_son The son to replace.
 
78093
   *  \param new_son The new son. */
 
78094
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
78095
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
78096
  }
 
78097
  /** Get the condition. */
 
78098
  CTree *Condition () const { return sons[3]; }
 
78099
  /** Get the name string. */
 
78100
  CT_Token *String () const { return (CT_Token*)sons[1]; }
 
78101
  /** Get the extension name. */
 
78102
  const char *Name () const { return value ? value->StrLiteral ()->String () : (const char*)0; }
 
78103
  /** Get the value of the extension (the name). */
 
78104
  CExprValue *Value () const { return value; }
 
78105
  /** Get the semantic value information object. */
 
78106
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
78107
public:
 
78108
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
78109
  const char *__attr_name (unsigned i) const {
 
78110
    static const char *names[] = { "sons" }; return names[i];
 
78111
  }
 
78112
  const void *__attr (unsigned __i) const {
 
78113
    switch (__i) { case 0: return &sons; default: return 0; }
 
78114
  }
 
78115
#line 4352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78116
};
 
78117
 
 
78118
/** \class CT_AnyCondition CTree.h Puma/CTree.h
 
78119
 *  Tree node representing the condition of a wildcard. */
 
78120
 
 
78121
#line 78122 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78122
} // closed Puma
 
78123
class CCExprResolve;
 
78124
class CExprResolve;
 
78125
class WinIfExists;
 
78126
class WinImportHandler;
 
78127
class WinMacros;
 
78128
class WinAsm;
 
78129
class WinDeclSpecs;
 
78130
class WinMemberExplSpec;
 
78131
class WinTypeKeywords;
 
78132
class WinFriend;
 
78133
class ExtAC;
 
78134
class ExtACBuilderCoupling;
 
78135
class ExtACSyntaxCoupling;
 
78136
class ExtACTree;
 
78137
class ExtACKeywords;
 
78138
class ExtGnu;
 
78139
class PragmaOnceUnitState;
 
78140
class PragmaOnce;
 
78141
class CMatchSyntax;
 
78142
namespace Puma {
 
78143
 
 
78144
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78145
class CT_AnyCondition : public CTree {
 
78146
#line 78147 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78147
  friend class ::CCExprResolve;
 
78148
  friend class ::CExprResolve;
 
78149
  friend class ::WinIfExists;
 
78150
  friend class ::WinImportHandler;
 
78151
  friend class ::WinMacros;
 
78152
  friend class ::WinAsm;
 
78153
  friend class ::WinDeclSpecs;
 
78154
  friend class ::WinMemberExplSpec;
 
78155
  friend class ::WinTypeKeywords;
 
78156
  friend class ::WinFriend;
 
78157
  friend class ::ExtAC;
 
78158
  friend class ::ExtACBuilderCoupling;
 
78159
  friend class ::ExtACSyntaxCoupling;
 
78160
  friend class ::ExtACTree;
 
78161
  friend class ::ExtACKeywords;
 
78162
  friend class ::ExtGnu;
 
78163
  friend class ::PragmaOnceUnitState;
 
78164
  friend class ::PragmaOnce;
 
78165
  friend class ::CMatchSyntax;
 
78166
 
 
78167
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78168
 
 
78169
  CTree *sons[3]; // arg1, arg2, arg3
 
78170
 
 
78171
public:
 
78172
  /** Constructor.
 
78173
   *  \param a1 The first argument.
 
78174
   *  \param a2 The optional second argument.
 
78175
   *  \param a3 The optional third argument. */
 
78176
  CT_AnyCondition (CTree *a1, CTree *a2 = (CTree*)0, CTree *a3 = (CTree*)0) {
 
78177
    AddSon (sons[0], a1); AddSon (sons[1], a2); AddSon (sons[2], a3); 
 
78178
  }
 
78179
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
78180
  static const char *NodeId ();
 
78181
  /** Get the name of the node. Can be compared with NodeId(). */
 
78182
  const char *NodeName () const { return NodeId (); }
 
78183
  /** Get the number of sons. */
 
78184
  int Sons () const { return CTree::Sons (sons, 3); }
 
78185
  /** Get the n-th son.
 
78186
   *  \param n The index of the son.
 
78187
   *  \return The n-th son or NULL. */
 
78188
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
78189
  /** Replace a son.
 
78190
   *  \param old_son The son to replace.
 
78191
   *  \param new_son The new son. */
 
78192
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
78193
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
78194
  }
 
78195
public:
 
78196
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
78197
  const char *__attr_name (unsigned i) const {
 
78198
    static const char *names[] = { "sons" }; return names[i];
 
78199
  }
 
78200
  const void *__attr (unsigned __i) const {
 
78201
    switch (__i) { case 0: return &sons; default: return 0; }
 
78202
  }
 
78203
#line 4383 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78204
};
 
78205
 
 
78206
 
 
78207
} // namespace Puma
 
78208
 
 
78209
#endif /* __CTree_h__ */
 
78210
 
 
78211
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
78212
namespace Puma {
 
78213
 
 
78214
 
 
78215
class CStructure;
 
78216
class CObjectInfo;
 
78217
class CTypeInfo;
 
78218
 
 
78219
 
 
78220
#line 78221 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78221
} // closed Puma
 
78222
class CCExprResolve;
 
78223
class CExprResolve;
 
78224
class WinIfExists;
 
78225
class WinImportHandler;
 
78226
class WinMacros;
 
78227
class WinAsm;
 
78228
class WinDeclSpecs;
 
78229
class WinMemberExplSpec;
 
78230
class WinTypeKeywords;
 
78231
class WinFriend;
 
78232
class ExtAC;
 
78233
class ExtACBuilderCoupling;
 
78234
class ExtACSyntaxCoupling;
 
78235
class ExtACTree;
 
78236
class ExtACKeywords;
 
78237
class ExtGnu;
 
78238
class PragmaOnceUnitState;
 
78239
class PragmaOnce;
 
78240
class CMatchSyntax;
 
78241
namespace Puma {
 
78242
 
 
78243
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
78244
class CSemVisitor : private CVisitor {
 
78245
#line 78246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78246
  friend class ::CCExprResolve;
 
78247
  friend class ::CExprResolve;
 
78248
  friend class ::WinIfExists;
 
78249
  friend class ::WinImportHandler;
 
78250
  friend class ::WinMacros;
 
78251
  friend class ::WinAsm;
 
78252
  friend class ::WinDeclSpecs;
 
78253
  friend class ::WinMemberExplSpec;
 
78254
  friend class ::WinTypeKeywords;
 
78255
  friend class ::WinFriend;
 
78256
  friend class ::ExtAC;
 
78257
  friend class ::ExtACBuilderCoupling;
 
78258
  friend class ::ExtACSyntaxCoupling;
 
78259
  friend class ::ExtACTree;
 
78260
  friend class ::ExtACKeywords;
 
78261
  friend class ::ExtGnu;
 
78262
  friend class ::PragmaOnceUnitState;
 
78263
  friend class ::PragmaOnce;
 
78264
  friend class ::CMatchSyntax;
 
78265
 
 
78266
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
78267
 
 
78268
protected:
 
78269
  CStructure *current_scope;
 
78270
  ErrorSink &err;
 
78271
 
 
78272
public:
 
78273
  CSemVisitor (ErrorSink &, CStructure * = (CStructure*)0);
 
78274
 
 
78275
  void run (CTree *, CStructure * = (CStructure*)0);
 
78276
  void configure (Config &) {}
 
78277
 
 
78278
  CTypeInfo *resolveExpr (CTree *, CTree *) const;
 
78279
  void resolveInit (CObjectInfo *info, CTree *, CTree *) const;
 
78280
  
 
78281
protected:
 
78282
  void pre_visit (CTree *);
 
78283
  void post_visit (CTree *);
 
78284
 
 
78285
protected:
 
78286
  void pre_action (CT_Program *);
 
78287
  void pre_action (CT_ArgDeclList *);
 
78288
  void pre_action (CT_ArgNameList *);
 
78289
  void pre_action (CT_ArgDeclSeq *);
 
78290
  void pre_action (CT_MembList *);
 
78291
  void pre_action (CT_CmpdStmt *);
 
78292
  void pre_action (CT_IfStmt *);
 
78293
  void pre_action (CT_IfElseStmt *);
 
78294
  void pre_action (CT_SwitchStmt *);
 
78295
  void pre_action (CT_ForStmt *);
 
78296
  void pre_action (CT_WhileStmt *);
 
78297
  void pre_action (CT_DoStmt *);
 
78298
  void pre_action (CT_ExprStmt *);
 
78299
  void pre_action (CT_CaseStmt *);
 
78300
  void pre_action (CT_GotoStmt *);
 
78301
  void pre_action (CT_ReturnStmt *);
 
78302
  void pre_action (CT_InitDeclarator *);
 
78303
  void pre_action (CT_ArrayDeclarator *);
 
78304
  void pre_action (CT_BitFieldDeclarator *);
 
78305
  void pre_action (CT_EnumDef *);
 
78306
  void pre_action (CT_ExprList *);
 
78307
  void pre_action (CT_CmpdLiteral *);
 
78308
  
 
78309
protected:
 
78310
  void post_action (CT_Program *);
 
78311
  void post_action (CT_ArgDeclList *);
 
78312
  void post_action (CT_ArgNameList *);
 
78313
  void post_action (CT_ArgDeclSeq *);
 
78314
  void post_action (CT_MembList *);
 
78315
  void post_action (CT_CmpdStmt *);
 
78316
  void post_action (CT_IfStmt *);
 
78317
  void post_action (CT_IfElseStmt *);
 
78318
  void post_action (CT_SwitchStmt *);
 
78319
  void post_action (CT_ForStmt *);
 
78320
  void post_action (CT_WhileStmt *);
 
78321
 
 
78322
  CT_SimpleName *findName (CTree *) const;
 
78323
 
 
78324
private:
 
78325
  
 
78326
#line 78327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78327
public: __attribute__((always_inline)) inline void __exec_old_check_goto_label(::Puma::CTree * );
 
78328
private:
 
78329
 
 
78330
#line 93 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
78331
void check_goto_label (CTree *);
 
78332
  
 
78333
public:
 
78334
  typedef AC::TL<Puma::CStructure *,AC::TL<Puma::ErrorSink &,AC::TLE > > __AttrTypes;
 
78335
  const char *__attr_name (unsigned i) const {
 
78336
    static const char *names[] = { "current_scope", "err" }; return names[i];
 
78337
  }
 
78338
  const void *__attr (unsigned __i) const {
 
78339
    switch (__i) { case 0: return &current_scope; case 1: return &err; default: return 0; }
 
78340
  }
 
78341
#line 95 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
78342
};
 
78343
 
 
78344
} // namespace Puma
 
78345
 
 
78346
#endif /* __CSemVisitor_h__ */
 
78347
 
 
78348
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
78349
 
 
78350
#line 78351 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78351
 
 
78352
#ifndef __ac_fwd_ExtGnu__
 
78353
#define __ac_fwd_ExtGnu__
 
78354
class ExtGnu;
 
78355
namespace AC {
 
78356
  template <class JoinPoint>
 
78357
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
78358
  template <class JoinPoint>
 
78359
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
78360
  template <class JoinPoint>
 
78361
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_after (JoinPoint *tjp);
 
78362
  template <class JoinPoint>
 
78363
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_around (JoinPoint *tjp);
 
78364
  template <class JoinPoint>
 
78365
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
78366
  template <class JoinPoint>
 
78367
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
78368
  template <class JoinPoint>
 
78369
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
78370
  template <class JoinPoint>
 
78371
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
78372
  template <class JoinPoint>
 
78373
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_after (JoinPoint *tjp);
 
78374
  template <class JoinPoint>
 
78375
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
78376
  template <class JoinPoint>
 
78377
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
78378
  template <class JoinPoint>
 
78379
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_before (JoinPoint *tjp);
 
78380
  template <class JoinPoint>
 
78381
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
78382
  template <class JoinPoint>
 
78383
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_after (JoinPoint *tjp);
 
78384
  template <class JoinPoint>
 
78385
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
78386
  template <class JoinPoint>
 
78387
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
78388
  template <class JoinPoint>
 
78389
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
78390
  template <class JoinPoint>
 
78391
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
78392
  template <class JoinPoint>
 
78393
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_before (JoinPoint *tjp);
 
78394
  template <class JoinPoint>
 
78395
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_before (JoinPoint *tjp);
 
78396
  template <class JoinPoint>
 
78397
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_around (JoinPoint *tjp);
 
78398
}
 
78399
#endif
 
78400
 
 
78401
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
78402
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
78403
#endif
 
78404
 
 
78405
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
78406
// This file is part of PUMA.
 
78407
// Copyright (C) 1999-2003  The PUMA developer team.
 
78408
//                                                                
 
78409
// This program is free software;  you can redistribute it and/or 
 
78410
// modify it under the terms of the GNU General Public License as 
 
78411
// published by the Free Software Foundation; either version 2 of 
 
78412
// the License, or (at your option) any later version.            
 
78413
//                                                                
 
78414
// This program is distributed in the hope that it will be useful,
 
78415
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
78416
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
78417
// GNU General Public License for more details.                   
 
78418
//                                                                
 
78419
// You should have received a copy of the GNU General Public      
 
78420
// License along with this program; if not, write to the Free     
 
78421
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
78422
// MA  02111-1307  USA                                            
 
78423
 
 
78424
#ifndef __c_sem_decl_specs_h__
 
78425
#define __c_sem_decl_specs_h__
 
78426
 
 
78427
/** \file
 
78428
 *  Semantic declaration specifier analysis. */
 
78429
 
 
78430
 
 
78431
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78432
 
 
78433
#line 78434 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78434
 
 
78435
#ifndef __ac_fwd_ExtACTree__
 
78436
#define __ac_fwd_ExtACTree__
 
78437
class ExtACTree;
 
78438
namespace AC {
 
78439
  template <class JoinPoint>
 
78440
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp);
 
78441
  template <class JoinPoint>
 
78442
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp);
 
78443
}
 
78444
#endif
 
78445
 
 
78446
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
78447
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
78448
#endif
 
78449
 
 
78450
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78451
// This file is part of PUMA.
 
78452
// Copyright (C) 1999-2003  The PUMA developer team.
 
78453
//                                                                
 
78454
// This program is free software;  you can redistribute it and/or 
 
78455
// modify it under the terms of the GNU General Public License as 
 
78456
// published by the Free Software Foundation; either version 2 of 
 
78457
// the License, or (at your option) any later version.            
 
78458
//                                                                
 
78459
// This program is distributed in the hope that it will be useful,
 
78460
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
78461
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
78462
// GNU General Public License for more details.                   
 
78463
//                                                                
 
78464
// You should have received a copy of the GNU General Public      
 
78465
// License along with this program; if not, write to the Free     
 
78466
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
78467
// MA  02111-1307  USA                                            
 
78468
 
 
78469
#ifndef __CTree_h__
 
78470
#define __CTree_h__
 
78471
 
 
78472
/** \file 
 
78473
 *  C/C++ syntax tree classes. */
 
78474
 
 
78475
namespace Puma {
 
78476
 
 
78477
 
 
78478
// Syntax tree node hierarchy:
 
78479
class CTree;
 
78480
class   CT_Statement;          
 
78481
class     CT_LabelStmt;
 
78482
class     CT_IfStmt;
 
78483
class     CT_IfElseStmt;
 
78484
class     CT_SwitchStmt;
 
78485
class     CT_BreakStmt;
 
78486
class     CT_ExprStmt;
 
78487
class     CT_WhileStmt;
 
78488
class     CT_DoStmt;
 
78489
class     CT_ForStmt;
 
78490
class     CT_ContinueStmt;
 
78491
class     CT_ReturnStmt;
 
78492
class     CT_GotoStmt;
 
78493
class     CT_DeclStmt;
 
78494
class     CT_CaseStmt;
 
78495
class     CT_DefaultStmt;
 
78496
class     CT_TryStmt;
 
78497
class   CT_Expression;
 
78498
class     CT_Call;
 
78499
class       CT_CallExpr;
 
78500
class       CT_ImplicitCall;
 
78501
class     CT_ThrowExpr;
 
78502
class     CT_NewExpr;
 
78503
class     CT_DeleteExpr;
 
78504
class     CT_ConstructExpr;
 
78505
class     CT_Integer;
 
78506
class     CT_Character;
 
78507
class       CT_WideCharacter;
 
78508
class     CT_Float;
 
78509
class     CT_Bool;
 
78510
class     CT_BracedExpr;
 
78511
class     CT_BinaryExpr;
 
78512
class       CT_MembPtrExpr;
 
78513
class         CT_MembRefExpr;
 
78514
class     CT_UnaryExpr;
 
78515
class       CT_PostfixExpr;
 
78516
class       CT_AddrExpr;
 
78517
class       CT_DerefExpr;
 
78518
class     CT_IfThenExpr;
 
78519
class     CT_CmpdLiteral;
 
78520
class     CT_IndexExpr;
 
78521
class     CT_CastExpr;
 
78522
class     CT_StaticCast;
 
78523
class       CT_ConstCast;
 
78524
class       CT_ReintCast;
 
78525
class       CT_DynamicCast;
 
78526
class     CT_TypeidExpr;
 
78527
class     CT_SizeofExpr;
 
78528
class     CT_MembDesignator;
 
78529
class     CT_IndexDesignator;
 
78530
class     CT_ImplicitCast;
 
78531
class     CT_MembInit;
 
78532
class   CT_DeclSpec;
 
78533
class     CT_PrimDeclSpec;
 
78534
class     CT_NamedType;
 
78535
class     CT_ClassSpec;
 
78536
class       CT_UnionSpec;
 
78537
class       CT_EnumSpec;
 
78538
class     CT_ExceptionSpec;
 
78539
class   CT_Declarator;
 
78540
class     CT_InitDeclarator;
 
78541
class     CT_BracedDeclarator;
 
78542
class     CT_ArrayDeclarator;
 
78543
class     CT_FctDeclarator;
 
78544
class     CT_RefDeclarator;
 
78545
class     CT_PtrDeclarator;
 
78546
class     CT_MembPtrDeclarator;
 
78547
class     CT_BitFieldDeclarator;
 
78548
class   CT_Decl;
 
78549
class     CT_ObjDecl;
 
78550
class     CT_ArgDecl;
 
78551
class     CT_AccessDecl;
 
78552
class       CT_UsingDecl;
 
78553
class     CT_FctDef;
 
78554
class     CT_AsmDef;
 
78555
class     CT_EnumDef;
 
78556
class     CT_ClassDef;
 
78557
class       CT_UnionDef;
 
78558
class     CT_Enumerator;
 
78559
class     CT_LinkageSpec;
 
78560
class     CT_Handler;
 
78561
class     CT_TemplateDecl;
 
78562
class     CT_TemplateParamDecl;
 
78563
class       CT_TypeParamDecl;
 
78564
class       CT_NonTypeParamDecl;
 
78565
class     CT_NamespaceDef;
 
78566
class     CT_NamespaceAliasDef;
 
78567
class     CT_UsingDirective;
 
78568
class     CT_Condition;
 
78569
class   CT_List;
 
78570
class     CT_CmpdStmt;
 
78571
class     CT_DeclSpecSeq;
 
78572
class     CT_HandlerSeq;
 
78573
class     CT_DesignatorSeq;
 
78574
class     CT_DeclList;
 
78575
class       CT_Program;
 
78576
class       CT_ArgDeclList;
 
78577
class         CT_ArgNameList;
 
78578
class       CT_ArgDeclSeq;
 
78579
class       CT_MembList;
 
78580
class     CT_ExprList;
 
78581
class     CT_DeclaratorList;
 
78582
class     CT_BaseSpecList;
 
78583
class     CT_MembInitList;
 
78584
class     CT_SimpleName;
 
78585
class       CT_SpecialName;
 
78586
class         CT_PrivateName;
 
78587
class         CT_OperatorName;
 
78588
class         CT_DestructorName;
 
78589
class         CT_ConversionName;
 
78590
class         CT_TemplateName;
 
78591
class       CT_QualName;
 
78592
class         CT_RootQualName;
 
78593
class     CT_String;
 
78594
class       CT_WideString;
 
78595
class     CT_TemplateParamList;
 
78596
class     CT_TemplateArgList;
 
78597
class   CT_Token;
 
78598
class   CT_Error;
 
78599
class   CT_BaseSpec;
 
78600
class   CT_AccessSpec;
 
78601
class   CT_ArrayDelimiter;
 
78602
class   CT_Any;
 
78603
class   CT_AnyList;
 
78604
class   CT_AnyExtension;
 
78605
class   CT_AnyCondition;
 
78606
 
 
78607
 
 
78608
} // namespace Puma
 
78609
 
 
78610
#include "Puma/ErrorSeverity.h"
 
78611
#include "Puma/CSemObject.h"
 
78612
#include "Puma/CSemScope.h"
 
78613
#include "Puma/CSemValue.h"
 
78614
#include "Puma/CExprValue.h"
 
78615
#include "Puma/CStrLiteral.h"
 
78616
#include "Puma/CTypeInfo.h"
 
78617
#include "Puma/Printable.h"
 
78618
#include "Puma/CTokens.h"
 
78619
#include "Puma/Token.h"
 
78620
 
 
78621
#include <iostream>
 
78622
#include <string.h>
 
78623
using namespace std;
 
78624
 
 
78625
namespace Puma {
 
78626
 
 
78627
 
 
78628
class ErrorStream;
 
78629
class CObjectInfo;
 
78630
class CStructure;
 
78631
 
 
78632
/*****************************************************************************/
 
78633
/*                                                                           */
 
78634
/*                    S y n t a x  t r e e  n o d e s                        */
 
78635
/*                                                                           */
 
78636
/*****************************************************************************/
 
78637
 
 
78638
/** \class CTree CTree.h Puma/CTree.h
 
78639
 *  Base class for all C/C++ syntax tree classes. 
 
78640
 *
 
78641
 *  The syntax tree is the result of the syntactic analysis of the input source 
 
78642
 *  code representing its syntactic structure according to the accepted grammar
 
78643
 *  (see class Syntax). 
 
78644
 *
 
78645
 *  Objects of this class and classes derived from this class are created by 
 
78646
 *  the tree builder component of %Puma during the parse process. A syntax tree 
 
78647
 *  shall be destroyed using the tree builder that has created it by calling its 
 
78648
 *  method Builder::destroy(CTree*) with the root node of the syntax tree as its 
 
78649
 *  argument.
 
78650
 *  
 
78651
 *  The navigation in the syntax tree is done using the methods CTree::Parent(), 
 
78652
 *  CTree::Sons(), and CTree::Son(int) const. In a syntax tree "sons" are 
 
78653
 *  understood as the syntactic child nodes of a syntax tree node, whereas 
 
78654
 *  "daughters" are understood are their semantic child nodes. 
 
78655
 *
 
78656
 *  Another way to traverse a syntax tree is to implement an own tree visitor 
 
78657
 *  based on class Puma::CVisitor. This is recommended especially for larger 
 
78658
 *  syntax trees.
 
78659
 *
 
78660
 *  A syntax tree node can be identified by comparing its node name with the node 
 
78661
 *  identifier of the expected syntax tree node:
 
78662
 *  \code if (node->NodeName() == Puma::CT_BinaryExpr::NodeId()) ... \endcode
 
78663
 *  
 
78664
 *  Based on the syntax tree further semantic analyses can be performed. Semantic 
 
78665
 *  information, like scope, value, type, and object information, is linked into 
 
78666
 *  the syntax tree. It can be accessed using the methods CTree::SemScope(), 
 
78667
 *  CTree::SemValue(), and CTree::SemObject(). Some nodes provide short-cuts to
 
78668
 *  the semantic type and value information by implementing the methods 
 
78669
 *  CTree::Type() and CTree::Value().
 
78670
 *
 
78671
 *  The information of the syntax tree can be used to perform high-level 
 
78672
 *  transformations of the source code (see class ManipCommander). */
 
78673
 
 
78674
#line 78675 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78675
} // closed Puma
 
78676
class CCExprResolve;
 
78677
class CExprResolve;
 
78678
class WinIfExists;
 
78679
class WinImportHandler;
 
78680
class WinMacros;
 
78681
class WinAsm;
 
78682
class WinDeclSpecs;
 
78683
class WinMemberExplSpec;
 
78684
class WinTypeKeywords;
 
78685
class WinFriend;
 
78686
class ExtAC;
 
78687
class ExtACBuilderCoupling;
 
78688
class ExtACSyntaxCoupling;
 
78689
class ExtACTree;
 
78690
class ExtACKeywords;
 
78691
class ExtGnu;
 
78692
class PragmaOnceUnitState;
 
78693
class PragmaOnce;
 
78694
class CMatchSyntax;
 
78695
namespace Puma {
 
78696
 
 
78697
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78698
 
 
78699
#line 78700 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78700
} // closed Puma
 
78701
 
 
78702
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
78703
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
78704
#include "CCExprResolveH.ah"
 
78705
#endif
 
78706
namespace Puma {
 
78707
 
 
78708
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78709
 
 
78710
#line 78711 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78711
} // closed Puma
 
78712
 
 
78713
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
78714
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
78715
#include "CExprResolveH.ah"
 
78716
#endif
 
78717
namespace Puma {
 
78718
 
 
78719
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78720
class CTree {
 
78721
#line 78722 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78722
  friend class ::CCExprResolve;
 
78723
  friend class ::CExprResolve;
 
78724
  friend class ::WinIfExists;
 
78725
  friend class ::WinImportHandler;
 
78726
  friend class ::WinMacros;
 
78727
  friend class ::WinAsm;
 
78728
  friend class ::WinDeclSpecs;
 
78729
  friend class ::WinMemberExplSpec;
 
78730
  friend class ::WinTypeKeywords;
 
78731
  friend class ::WinFriend;
 
78732
  friend class ::ExtAC;
 
78733
  friend class ::ExtACBuilderCoupling;
 
78734
  friend class ::ExtACSyntaxCoupling;
 
78735
  friend class ::ExtACTree;
 
78736
  friend class ::ExtACKeywords;
 
78737
  friend class ::ExtGnu;
 
78738
  friend class ::PragmaOnceUnitState;
 
78739
  friend class ::PragmaOnce;
 
78740
  friend class ::CMatchSyntax;
 
78741
 
 
78742
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78743
 
 
78744
  CTree * _parent;
 
78745
 
 
78746
public:
 
78747
  /*DEBUG*/static int alloc;
 
78748
  /*DEBUG*/static int release;
 
78749
 
 
78750
protected:
 
78751
  /** Get the n-th son from given sons array. Skips empty (NULL) array items.
 
78752
   *  \param sons The sons array.
 
78753
   *  \param len Length of the sons array.
 
78754
   *  \param n Index of the son.
 
78755
   *  \return The n-th son or NULL. */
 
78756
  CTree *Son (CTree * const *sons, int len, int n) const;
 
78757
  /** Get the number of sons in the given sons array. Skips empty (NULL) array items.
 
78758
   *  \param sons The sons array.
 
78759
   *  \param len Length of the sons array. */
 
78760
  int Sons (CTree * const *sons, int len) const;
 
78761
  /** Replace a son.
 
78762
   *  \param sons The sons array.
 
78763
   *  \param len Length of the sons array.
 
78764
   *  \param old_son The son to replace.
 
78765
   *  \param new_son The new son. */
 
78766
  void ReplaceSon (CTree **sons, int len, CTree *old_son, CTree *new_son);
 
78767
  /** Replace a son if it equals the given son.
 
78768
   *  \param son The actual son.
 
78769
   *  \param old_son The son to replace, must match the actual son.
 
78770
   *  \param new_son The new son, overwrites the actual son. */
 
78771
  void ReplaceSon (CTree *&son, CTree *old_son, CTree *new_son);
 
78772
  /** Add a new son.
 
78773
   *  \param son The actual son.
 
78774
   *  \param new_son The new son, overwrites the actual son. */
 
78775
  void AddSon (CTree *&son, CTree *new_son);
 
78776
  /** Set the parent tree node.
 
78777
   *  \param parent The new parent tree node. */
 
78778
  void SetParent (const CTree *parent) { _parent = (CTree*)parent; }
 
78779
  /** Set the parent tree node of the given tree node.
 
78780
   *  \param node The tree node.
 
78781
   *  \param parent The new parent. */
 
78782
  void SetParent (CTree *node, const CTree *parent) { node->_parent = (CTree*)parent; }
 
78783
  
 
78784
protected:
 
78785
  /** Default constructor. */
 
78786
  CTree () : _parent(0) { /*DEBUG*/alloc++; }
 
78787
 
 
78788
public:
 
78789
  /** Destructor. */
 
78790
  virtual ~CTree () { /*DEBUG*/release++; }
 
78791
  /** Get the number of sons. */
 
78792
  virtual int Sons () const = 0;
 
78793
  /** Get the n-th son.
 
78794
   *  \param n The index of the son.
 
78795
   *  \return The n-th son or NULL. */
 
78796
  virtual CTree *Son (int n) const { return (CTree*)0; }
 
78797
  /** Get the node name (node identifier). */
 
78798
  virtual const char *NodeName () const = 0;
 
78799
  /** Get the first token of the syntactic construct represented by this sub-tree.
 
78800
   *  \return The token or NULL. */
 
78801
  virtual Token *token () const;
 
78802
  /** Get the last token of the syntactic construct represented by this sub-tree.
 
78803
   *  \return The token or NULL. */
 
78804
  virtual Token *end_token () const;
 
78805
  /** Get the CT_Token node of the first token of the syntactic construct represented by this sub-tree.
 
78806
   *  \return The token node or NULL. */
 
78807
  virtual CT_Token *token_node () const;
 
78808
  /** Get the CT_Token node of the last token of the syntactic construct represented by this sub-tree.
 
78809
   *  \return The token node or NULL. */
 
78810
  virtual CT_Token *end_token_node () const;
 
78811
  /** Replace a son.
 
78812
   *  \param old_son The son to replace.
 
78813
   *  \param new_son The son with which to replace. */
 
78814
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {}
 
78815
  /** Get the parent node.
 
78816
   *  \return The parent node or NULL. */
 
78817
  virtual CTree *Parent () const { return (CTree*)_parent; }
 
78818
 
 
78819
public: // semantic information
 
78820
  /** Get the semantic type of the node.
 
78821
   *  \return The type object or NULL. */
 
78822
  virtual CTypeInfo *Type () const { return (CTypeInfo*)0; }
 
78823
  /** Get the calculated value of the expression.
 
78824
   *  \return The value object or NULL. */
 
78825
  virtual CExprValue *Value () const { return (CExprValue*)0; }
 
78826
  
 
78827
  /** Get the scope opened by the node.
 
78828
   *  \return The scope object or NULL. */
 
78829
  virtual CSemScope *SemScope () const { return (CSemScope*)0; }
 
78830
  /** Get the semantic value of the node.
 
78831
   *  \return The value object or NULL. */
 
78832
  virtual CSemValue *SemValue () const { return (CSemValue*)0; }
 
78833
  /** Get the semantic information of the node.
 
78834
   *  \return The semantic object or NULL. */
 
78835
  virtual CSemObject *SemObject () const { return (CSemObject*)0; }
 
78836
  
 
78837
public: // node classification function
 
78838
  /** Get a pointer to CT_SimpleName if the current node represents a name.
 
78839
   *  \return The CT_SimpleName node or NULL. */
 
78840
  virtual CT_SimpleName *IsSimpleName () { return 0; }
 
78841
  /** Get a pointer to CT_String if the current node represents a string.
 
78842
   *  \return The CT_String node or NULL. */
 
78843
  virtual CT_String *IsString () { return 0; }
 
78844
  /** Get a pointer to CT_Declarator if the current node represents a declarator.
 
78845
   *  \return The CT_Declarator pointer or NULL. */
 
78846
  virtual CT_Declarator *IsDeclarator () { return 0; }
 
78847
  /** Get a pointer to CT_Statement if the current node represents a statement.
 
78848
   *  \return The CT_Statement pointer or NULL. */
 
78849
  virtual CT_Statement *IsStatement () { return 0; }
 
78850
  /** Get a pointer to CT_Expression if the current node represents a expression.
 
78851
   *  \return The CT_Expression pointer or NULL. */
 
78852
  virtual CT_Expression *IsExpression () { return 0; }
 
78853
  /** Get a pointer to CT_Decl if the current node represents a declaration.
 
78854
   *  \return The CT_Decl pointer or NULL. */
 
78855
  virtual CT_Decl *IsDeclaration () { return 0; }
 
78856
  /** Get a pointer to CT_Call if the current node represents a call expression.
 
78857
   *  \return The CT_Call pointer or NULL. */
 
78858
  virtual CT_Call *IsCall () { return 0; }
 
78859
   private:
 
78860
  typedef CTree CCExprResolveCTree;
 
78861
 
 
78862
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
78863
 public :
 
78864
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
78865
  typedef CTree CExprResolveCTree;
 
78866
 
 
78867
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
78868
 public :
 
78869
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
78870
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
78871
  const char *__attr_name (unsigned i) const {
 
78872
    static const char *names[] = { "_parent" }; return names[i];
 
78873
  }
 
78874
  const void *__attr (unsigned __i) const {
 
78875
    switch (__i) { case 0: return &_parent; default: return 0; }
 
78876
  }
 
78877
#line 339 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78878
};
 
78879
 
 
78880
/** \class CT_Error CTree.h Puma/CTree.h
 
78881
 *  Error tree node that is inserted into the tree for syntactic constructs
 
78882
 *  that could not be parsed. */
 
78883
 
 
78884
#line 78885 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78885
} // closed Puma
 
78886
class CCExprResolve;
 
78887
class CExprResolve;
 
78888
class WinIfExists;
 
78889
class WinImportHandler;
 
78890
class WinMacros;
 
78891
class WinAsm;
 
78892
class WinDeclSpecs;
 
78893
class WinMemberExplSpec;
 
78894
class WinTypeKeywords;
 
78895
class WinFriend;
 
78896
class ExtAC;
 
78897
class ExtACBuilderCoupling;
 
78898
class ExtACSyntaxCoupling;
 
78899
class ExtACTree;
 
78900
class ExtACKeywords;
 
78901
class ExtGnu;
 
78902
class PragmaOnceUnitState;
 
78903
class PragmaOnce;
 
78904
class CMatchSyntax;
 
78905
namespace Puma {
 
78906
 
 
78907
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78908
class CT_Error : public CTree {
 
78909
#line 78910 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78910
  friend class ::CCExprResolve;
 
78911
  friend class ::CExprResolve;
 
78912
  friend class ::WinIfExists;
 
78913
  friend class ::WinImportHandler;
 
78914
  friend class ::WinMacros;
 
78915
  friend class ::WinAsm;
 
78916
  friend class ::WinDeclSpecs;
 
78917
  friend class ::WinMemberExplSpec;
 
78918
  friend class ::WinTypeKeywords;
 
78919
  friend class ::WinFriend;
 
78920
  friend class ::ExtAC;
 
78921
  friend class ::ExtACBuilderCoupling;
 
78922
  friend class ::ExtACSyntaxCoupling;
 
78923
  friend class ::ExtACTree;
 
78924
  friend class ::ExtACKeywords;
 
78925
  friend class ::ExtGnu;
 
78926
  friend class ::PragmaOnceUnitState;
 
78927
  friend class ::PragmaOnce;
 
78928
  friend class ::CMatchSyntax;
 
78929
 
 
78930
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78931
 
 
78932
public:
 
78933
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
78934
  static const char *NodeId ();
 
78935
  /** Get the name of the node. Can be compared with NodeId(). */
 
78936
  const char *NodeName () const { return NodeId (); }
 
78937
  /** Get the number of sons. */
 
78938
  int Sons () const { return 0; }
 
78939
public:
 
78940
  typedef AC::TLE __AttrTypes;
 
78941
  const char *__attr_name (unsigned i) const { return 0; }
 
78942
  const void *__attr (unsigned __i) const { return 0; }
 
78943
#line 352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78944
};
 
78945
 
 
78946
/** \class CT_Token CTree.h Puma/CTree.h
 
78947
 *  Tree node representing a single token in the source code. */
 
78948
 
 
78949
#line 78950 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78950
} // closed Puma
 
78951
class CCExprResolve;
 
78952
class CExprResolve;
 
78953
class WinIfExists;
 
78954
class WinImportHandler;
 
78955
class WinMacros;
 
78956
class WinAsm;
 
78957
class WinDeclSpecs;
 
78958
class WinMemberExplSpec;
 
78959
class WinTypeKeywords;
 
78960
class WinFriend;
 
78961
class ExtAC;
 
78962
class ExtACBuilderCoupling;
 
78963
class ExtACSyntaxCoupling;
 
78964
class ExtACTree;
 
78965
class ExtACKeywords;
 
78966
class ExtGnu;
 
78967
class PragmaOnceUnitState;
 
78968
class PragmaOnce;
 
78969
class CMatchSyntax;
 
78970
namespace Puma {
 
78971
 
 
78972
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78973
class CT_Token : public CTree {
 
78974
#line 78975 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
78975
  friend class ::CCExprResolve;
 
78976
  friend class ::CExprResolve;
 
78977
  friend class ::WinIfExists;
 
78978
  friend class ::WinImportHandler;
 
78979
  friend class ::WinMacros;
 
78980
  friend class ::WinAsm;
 
78981
  friend class ::WinDeclSpecs;
 
78982
  friend class ::WinMemberExplSpec;
 
78983
  friend class ::WinTypeKeywords;
 
78984
  friend class ::WinFriend;
 
78985
  friend class ::ExtAC;
 
78986
  friend class ::ExtACBuilderCoupling;
 
78987
  friend class ::ExtACSyntaxCoupling;
 
78988
  friend class ::ExtACTree;
 
78989
  friend class ::ExtACKeywords;
 
78990
  friend class ::ExtGnu;
 
78991
  friend class ::PragmaOnceUnitState;
 
78992
  friend class ::PragmaOnce;
 
78993
  friend class ::CMatchSyntax;
 
78994
 
 
78995
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
78996
 
 
78997
  Token *_token;
 
78998
  unsigned long int _number;
 
78999
  
 
79000
public:
 
79001
  /** Constructor. 
 
79002
   *  \param token The represented token.
 
79003
   *  \param number The token number (a consecutive number). */
 
79004
  CT_Token (Token *token, unsigned long int number = 0) : 
 
79005
    _token (token), _number (number) {}
 
79006
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79007
  static const char *NodeId ();
 
79008
  /** Get the name of the node. Can be compared with NodeId(). */
 
79009
  const char *NodeName () const { return NodeId (); }
 
79010
  /** Get the number of sons. */
 
79011
  int Sons () const { return 0; }
 
79012
  /** Get the represented token. */
 
79013
  Token *token () const { return _token; }
 
79014
  /** Get the represented token. */
 
79015
  Token *end_token () const { return _token; }
 
79016
  /** Get this. */
 
79017
  CT_Token *token_node () const { return (CT_Token*)this; }
 
79018
  /** Get this. */
 
79019
  CT_Token *end_token_node () const { return (CT_Token*)this; }
 
79020
  /** Set the token number. 
 
79021
   *  \param number The token number. */ 
 
79022
  void Number (unsigned long int number) { _number = number; }
 
79023
  /** Get the token number. Can be used to indentify this token. */
 
79024
  unsigned long int Number () const { return _number; }
 
79025
  
 
79026
public:
 
79027
  /** Own new operator reusing memory. */
 
79028
  void *operator new (size_t);
 
79029
  /** Own delete operator. */
 
79030
  void operator delete (void *);
 
79031
public:
 
79032
  typedef AC::TL<Puma::Token *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
79033
  const char *__attr_name (unsigned i) const {
 
79034
    static const char *names[] = { "_token", "_number" }; return names[i];
 
79035
  }
 
79036
  const void *__attr (unsigned __i) const {
 
79037
    switch (__i) { case 0: return &_token; case 1: return &_number; default: return 0; }
 
79038
  }
 
79039
#line 391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79040
};
 
79041
 
 
79042
/*****************************************************************************/
 
79043
/*                                                                           */
 
79044
/*                              List nodes                                   */
 
79045
/*                                                                           */
 
79046
/*****************************************************************************/
 
79047
 
 
79048
/** \class CT_List CTree.h Puma/CTree.h
 
79049
 *  Base class for tree nodes representing lists. */
 
79050
 
 
79051
#line 79052 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79052
} // closed Puma
 
79053
class CCExprResolve;
 
79054
class CExprResolve;
 
79055
class WinIfExists;
 
79056
class WinImportHandler;
 
79057
class WinMacros;
 
79058
class WinAsm;
 
79059
class WinDeclSpecs;
 
79060
class WinMemberExplSpec;
 
79061
class WinTypeKeywords;
 
79062
class WinFriend;
 
79063
class ExtAC;
 
79064
class ExtACBuilderCoupling;
 
79065
class ExtACSyntaxCoupling;
 
79066
class ExtACTree;
 
79067
class ExtACKeywords;
 
79068
class ExtGnu;
 
79069
class PragmaOnceUnitState;
 
79070
class PragmaOnce;
 
79071
class CMatchSyntax;
 
79072
namespace Puma {
 
79073
 
 
79074
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79075
class CT_List : public CTree {
 
79076
#line 79077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79077
  friend class ::CCExprResolve;
 
79078
  friend class ::CExprResolve;
 
79079
  friend class ::WinIfExists;
 
79080
  friend class ::WinImportHandler;
 
79081
  friend class ::WinMacros;
 
79082
  friend class ::WinAsm;
 
79083
  friend class ::WinDeclSpecs;
 
79084
  friend class ::WinMemberExplSpec;
 
79085
  friend class ::WinTypeKeywords;
 
79086
  friend class ::WinFriend;
 
79087
  friend class ::ExtAC;
 
79088
  friend class ::ExtACBuilderCoupling;
 
79089
  friend class ::ExtACSyntaxCoupling;
 
79090
  friend class ::ExtACTree;
 
79091
  friend class ::ExtACKeywords;
 
79092
  friend class ::ExtGnu;
 
79093
  friend class ::PragmaOnceUnitState;
 
79094
  friend class ::PragmaOnce;
 
79095
  friend class ::CMatchSyntax;
 
79096
 
 
79097
#line 401 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79098
 
 
79099
  Array<CTree*> _sons;
 
79100
  int _properties;
 
79101
 
 
79102
protected:
 
79103
  /** Constructor.
 
79104
   *  \param size The initial list size.
 
79105
   *  \param incr The initial increment count. 
 
79106
   *  \param props The list properties (bit array). */
 
79107
  CT_List(int size = 5, int incr = 5, int props = 0) : 
 
79108
    _sons (size, incr), _properties (props) {}
 
79109
 
 
79110
public:
 
79111
  /** %List properties. */
 
79112
  enum {
 
79113
    /** %List has a start token, like ':' in ":a(1),b(2)" */
 
79114
    OPEN = 1,         
 
79115
    /** %List has an end token */
 
79116
    CLOSE = 2,        
 
79117
    /** %List has opening and closing delimiters, like '(' and ')' */
 
79118
    OPEN_CLOSE = 3,   
 
79119
    /** %List has separators, like ',' */
 
79120
    SEPARATORS = 4,   
 
79121
    /** %List pretend to be empty, like for "(void)" */
 
79122
    FORCE_EMPTY = 8,  
 
79123
    /** %List has trailing separator, like "a,b,c," */
 
79124
    END_SEP = 16,     
 
79125
    /** %List has no separator before last element, like "(a,b...)" */
 
79126
    NO_LAST_SEP = 32, 
 
79127
    /** %List has an introduction chararacter, like "=" in "={a,b}" */
 
79128
    INTRO = 64        
 
79129
  };
 
79130
 
 
79131
  /** Get the number of list entries. */
 
79132
  int Entries () const;
 
79133
  /** Get the n-th list entry.
 
79134
   *  \param n The index of the entry. 
 
79135
   *  \return The list entry or NULL. */
 
79136
  CTree *Entry (int n) const;
 
79137
  /** Get the number of sons. */
 
79138
  int Sons () const { return _sons.length (); }
 
79139
  /** Get the n-th son.
 
79140
   *  \param n The index of the son. 
 
79141
   *  \return The n-th son or NULL. */
 
79142
  CTree *Son (int n) const { return _sons.lookup (n); }
 
79143
  /** Get the list properties. */
 
79144
  int GetProperties () const { return _properties; }
 
79145
  /** Add a list property.
 
79146
   *  \param p The property to add. */
 
79147
  void AddProperties (int p) { _properties |= p; }
 
79148
  /** Add a son.
 
79149
   *  \param s The son to add. */
 
79150
  void AddSon (CTree *s) { if (s) { _sons.append (s); SetParent (s, this); } }
 
79151
  /** Prepend a son.
 
79152
   *  \param s The son to prepend. */
 
79153
  void PrefixSon (CTree *s) { if (s) { _sons.prepend (s); SetParent (s, this); } }
 
79154
  /** Insert a son before another son.
 
79155
   *  \param before The son to insert the new son before.
 
79156
   *  \param son The son to insert. */
 
79157
  void InsertSon (CTree *before, CTree *son); 
 
79158
  /** Replace a son.
 
79159
   *  \param old_son The son to replace.
 
79160
   *  \param new_son The new son. */
 
79161
  void ReplaceSon (CTree *old_son, CTree *new_son);
 
79162
  /** Remove a son.
 
79163
   *  \param son The son to remove. */
 
79164
  void RemoveSon (CTree *son);
 
79165
  /** Insert a son at the given index. 
 
79166
   *  \param idx The index at which to insert.
 
79167
   *  \param s The son to insert. */
 
79168
  void InsertSon (int idx, CTree *s)
 
79169
   { if (s && idx <= Sons ()) { _sons.insert (idx, s); SetParent (s, this); } }
 
79170
  /** Replace the son at the given index.
 
79171
   *  \param idx The index of the son to replace.
 
79172
   *  \param s The new son. */
 
79173
  void ReplaceSon (int idx, CTree *s) 
 
79174
   { if (s && idx < Sons ()) { SetParent (_sons[idx], 0); _sons[idx] = s; SetParent (s, this); } }
 
79175
  /** Remove the son at the given index. 
 
79176
   *  \param idx The index of the son to remove. */
 
79177
  void RemoveSon (int idx) 
 
79178
   { if (idx < Sons ()) { SetParent (_sons[idx], 0); _sons.remove (idx); } }
 
79179
public:
 
79180
  typedef AC::TL<Puma::Array< Puma::CTree * >,AC::TL<int,AC::TLE > > __AttrTypes;
 
79181
  const char *__attr_name (unsigned i) const {
 
79182
    static const char *names[] = { "_sons", "_properties" }; return names[i];
 
79183
  }
 
79184
  const void *__attr (unsigned __i) const {
 
79185
    switch (__i) { case 1: return &_sons; case 2: return &_properties; default: return 0; }
 
79186
  }
 
79187
#line 482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79188
};
 
79189
 
 
79190
/** \class CT_ExprList CTree.h Puma/CTree.h
 
79191
 *  Tree node representing an expression list. */
 
79192
 
 
79193
#line 79194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79194
} // closed Puma
 
79195
class CCExprResolve;
 
79196
class CExprResolve;
 
79197
class WinIfExists;
 
79198
class WinImportHandler;
 
79199
class WinMacros;
 
79200
class WinAsm;
 
79201
class WinDeclSpecs;
 
79202
class WinMemberExplSpec;
 
79203
class WinTypeKeywords;
 
79204
class WinFriend;
 
79205
class ExtAC;
 
79206
class ExtACBuilderCoupling;
 
79207
class ExtACSyntaxCoupling;
 
79208
class ExtACTree;
 
79209
class ExtACKeywords;
 
79210
class ExtGnu;
 
79211
class PragmaOnceUnitState;
 
79212
class PragmaOnce;
 
79213
class CMatchSyntax;
 
79214
namespace Puma {
 
79215
 
 
79216
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79217
class CT_ExprList : public CT_List, public CSemValue, public CSemObject {
 
79218
#line 79219 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79219
  friend class ::CCExprResolve;
 
79220
  friend class ::CExprResolve;
 
79221
  friend class ::WinIfExists;
 
79222
  friend class ::WinImportHandler;
 
79223
  friend class ::WinMacros;
 
79224
  friend class ::WinAsm;
 
79225
  friend class ::WinDeclSpecs;
 
79226
  friend class ::WinMemberExplSpec;
 
79227
  friend class ::WinTypeKeywords;
 
79228
  friend class ::WinFriend;
 
79229
  friend class ::ExtAC;
 
79230
  friend class ::ExtACBuilderCoupling;
 
79231
  friend class ::ExtACSyntaxCoupling;
 
79232
  friend class ::ExtACTree;
 
79233
  friend class ::ExtACKeywords;
 
79234
  friend class ::ExtGnu;
 
79235
  friend class ::PragmaOnceUnitState;
 
79236
  friend class ::PragmaOnce;
 
79237
  friend class ::CMatchSyntax;
 
79238
 
 
79239
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79240
 
 
79241
public:
 
79242
  /** Constructor. */
 
79243
  CT_ExprList () { AddProperties (SEPARATORS); }
 
79244
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79245
  static const char *NodeId ();
 
79246
  /** Get the name of the node. Can be compared with NodeId(). */
 
79247
  const char *NodeName () const { return NodeId (); }
 
79248
 
 
79249
  /** Get the type of the last expression in the expression list.
 
79250
   *  \return The type or NULL. */
 
79251
  CTypeInfo *Type () const { return type; }
 
79252
  /** Get the value of the last expression in the expression list.
 
79253
   *  \return The value of NULL. */
 
79254
  CExprValue *Value () const { return value; }
 
79255
  /** Get the semantic value of the node. */
 
79256
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
79257
  /** Get the semantic information about the node. */
 
79258
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
79259
public:
 
79260
  typedef AC::TLE __AttrTypes;
 
79261
  const char *__attr_name (unsigned i) const { return 0; }
 
79262
  const void *__attr (unsigned __i) const { return 0; }
 
79263
#line 505 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79264
};
 
79265
 
 
79266
/** \class CT_DeclaratorList CTree.h Puma/CTree.h
 
79267
 *  Tree node representing a list of declarators. */
 
79268
 
 
79269
#line 79270 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79270
} // closed Puma
 
79271
class CCExprResolve;
 
79272
class CExprResolve;
 
79273
class WinIfExists;
 
79274
class WinImportHandler;
 
79275
class WinMacros;
 
79276
class WinAsm;
 
79277
class WinDeclSpecs;
 
79278
class WinMemberExplSpec;
 
79279
class WinTypeKeywords;
 
79280
class WinFriend;
 
79281
class ExtAC;
 
79282
class ExtACBuilderCoupling;
 
79283
class ExtACSyntaxCoupling;
 
79284
class ExtACTree;
 
79285
class ExtACKeywords;
 
79286
class ExtGnu;
 
79287
class PragmaOnceUnitState;
 
79288
class PragmaOnce;
 
79289
class CMatchSyntax;
 
79290
namespace Puma {
 
79291
 
 
79292
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79293
class CT_DeclaratorList : public CT_List {
 
79294
#line 79295 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79295
  friend class ::CCExprResolve;
 
79296
  friend class ::CExprResolve;
 
79297
  friend class ::WinIfExists;
 
79298
  friend class ::WinImportHandler;
 
79299
  friend class ::WinMacros;
 
79300
  friend class ::WinAsm;
 
79301
  friend class ::WinDeclSpecs;
 
79302
  friend class ::WinMemberExplSpec;
 
79303
  friend class ::WinTypeKeywords;
 
79304
  friend class ::WinFriend;
 
79305
  friend class ::ExtAC;
 
79306
  friend class ::ExtACBuilderCoupling;
 
79307
  friend class ::ExtACSyntaxCoupling;
 
79308
  friend class ::ExtACTree;
 
79309
  friend class ::ExtACKeywords;
 
79310
  friend class ::ExtGnu;
 
79311
  friend class ::PragmaOnceUnitState;
 
79312
  friend class ::PragmaOnce;
 
79313
  friend class ::CMatchSyntax;
 
79314
 
 
79315
#line 509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79316
 
 
79317
public:
 
79318
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79319
  static const char *NodeId ();
 
79320
  /** Get the name of the node. Can be compared with NodeId(). */
 
79321
  const char *NodeName () const { return NodeId (); }
 
79322
public:
 
79323
  typedef AC::TLE __AttrTypes;
 
79324
  const char *__attr_name (unsigned i) const { return 0; }
 
79325
  const void *__attr (unsigned __i) const { return 0; }
 
79326
#line 515 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79327
};
 
79328
 
 
79329
/** \class CT_EnumeratorList CTree.h Puma/CTree.h
 
79330
 *  Tree node representing a list of enumerator constants. */
 
79331
 
 
79332
#line 79333 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79333
} // closed Puma
 
79334
class CCExprResolve;
 
79335
class CExprResolve;
 
79336
class WinIfExists;
 
79337
class WinImportHandler;
 
79338
class WinMacros;
 
79339
class WinAsm;
 
79340
class WinDeclSpecs;
 
79341
class WinMemberExplSpec;
 
79342
class WinTypeKeywords;
 
79343
class WinFriend;
 
79344
class ExtAC;
 
79345
class ExtACBuilderCoupling;
 
79346
class ExtACSyntaxCoupling;
 
79347
class ExtACTree;
 
79348
class ExtACKeywords;
 
79349
class ExtGnu;
 
79350
class PragmaOnceUnitState;
 
79351
class PragmaOnce;
 
79352
class CMatchSyntax;
 
79353
namespace Puma {
 
79354
 
 
79355
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79356
class CT_EnumeratorList : public CT_List {
 
79357
#line 79358 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79358
  friend class ::CCExprResolve;
 
79359
  friend class ::CExprResolve;
 
79360
  friend class ::WinIfExists;
 
79361
  friend class ::WinImportHandler;
 
79362
  friend class ::WinMacros;
 
79363
  friend class ::WinAsm;
 
79364
  friend class ::WinDeclSpecs;
 
79365
  friend class ::WinMemberExplSpec;
 
79366
  friend class ::WinTypeKeywords;
 
79367
  friend class ::WinFriend;
 
79368
  friend class ::ExtAC;
 
79369
  friend class ::ExtACBuilderCoupling;
 
79370
  friend class ::ExtACSyntaxCoupling;
 
79371
  friend class ::ExtACTree;
 
79372
  friend class ::ExtACKeywords;
 
79373
  friend class ::ExtGnu;
 
79374
  friend class ::PragmaOnceUnitState;
 
79375
  friend class ::PragmaOnce;
 
79376
  friend class ::CMatchSyntax;
 
79377
 
 
79378
#line 519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79379
 
 
79380
public:
 
79381
  /** Constructor. */
 
79382
  CT_EnumeratorList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
79383
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79384
  static const char *NodeId ();
 
79385
  /** Get the name of the node. Can be compared with NodeId(). */
 
79386
  const char *NodeName () const { return NodeId (); }
 
79387
public:
 
79388
  typedef AC::TLE __AttrTypes;
 
79389
  const char *__attr_name (unsigned i) const { return 0; }
 
79390
  const void *__attr (unsigned __i) const { return 0; }
 
79391
#line 527 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79392
};
 
79393
   
 
79394
/** \class CT_DeclList CTree.h Puma/CTree.h
 
79395
 *  Tree node representing a list of declarations. */
 
79396
 
 
79397
#line 79398 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79398
} // closed Puma
 
79399
class CCExprResolve;
 
79400
class CExprResolve;
 
79401
class WinIfExists;
 
79402
class WinImportHandler;
 
79403
class WinMacros;
 
79404
class WinAsm;
 
79405
class WinDeclSpecs;
 
79406
class WinMemberExplSpec;
 
79407
class WinTypeKeywords;
 
79408
class WinFriend;
 
79409
class ExtAC;
 
79410
class ExtACBuilderCoupling;
 
79411
class ExtACSyntaxCoupling;
 
79412
class ExtACTree;
 
79413
class ExtACKeywords;
 
79414
class ExtGnu;
 
79415
class PragmaOnceUnitState;
 
79416
class PragmaOnce;
 
79417
class CMatchSyntax;
 
79418
namespace Puma {
 
79419
 
 
79420
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79421
class CT_DeclList : public CT_List {
 
79422
#line 79423 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79423
  friend class ::CCExprResolve;
 
79424
  friend class ::CExprResolve;
 
79425
  friend class ::WinIfExists;
 
79426
  friend class ::WinImportHandler;
 
79427
  friend class ::WinMacros;
 
79428
  friend class ::WinAsm;
 
79429
  friend class ::WinDeclSpecs;
 
79430
  friend class ::WinMemberExplSpec;
 
79431
  friend class ::WinTypeKeywords;
 
79432
  friend class ::WinFriend;
 
79433
  friend class ::ExtAC;
 
79434
  friend class ::ExtACBuilderCoupling;
 
79435
  friend class ::ExtACSyntaxCoupling;
 
79436
  friend class ::ExtACTree;
 
79437
  friend class ::ExtACKeywords;
 
79438
  friend class ::ExtGnu;
 
79439
  friend class ::PragmaOnceUnitState;
 
79440
  friend class ::PragmaOnce;
 
79441
  friend class ::CMatchSyntax;
 
79442
 
 
79443
#line 531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79444
 
 
79445
public:
 
79446
  /** Constructor. 
 
79447
   *  \param size The initial size of the list.
 
79448
   *  \param incr The initial increment count of the list. */
 
79449
  CT_DeclList (int size = 20, int incr = 20) : CT_List (size, incr) {}
 
79450
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79451
  static const char *NodeId ();
 
79452
  /** Get the name of the node. Can be compared with NodeId(). */
 
79453
  const char *NodeName () const { return NodeId (); }
 
79454
  /** Set the linkage specifiers to each declaration in the list.
 
79455
   *  \param l The linkage specifiers node. */
 
79456
  void Linkage (CT_LinkageSpec *l);
 
79457
public:
 
79458
  typedef AC::TLE __AttrTypes;
 
79459
  const char *__attr_name (unsigned i) const { return 0; }
 
79460
  const void *__attr (unsigned __i) const { return 0; }
 
79461
#line 544 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79462
};
 
79463
 
 
79464
/** \class CT_DeclSpecSeq CTree.h Puma/CTree.h
 
79465
 *  Tree node representing a sequence of declaration specifiers. */
 
79466
 
 
79467
#line 79468 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79468
} // closed Puma
 
79469
class CCExprResolve;
 
79470
class CExprResolve;
 
79471
class WinIfExists;
 
79472
class WinImportHandler;
 
79473
class WinMacros;
 
79474
class WinAsm;
 
79475
class WinDeclSpecs;
 
79476
class WinMemberExplSpec;
 
79477
class WinTypeKeywords;
 
79478
class WinFriend;
 
79479
class ExtAC;
 
79480
class ExtACBuilderCoupling;
 
79481
class ExtACSyntaxCoupling;
 
79482
class ExtACTree;
 
79483
class ExtACKeywords;
 
79484
class ExtGnu;
 
79485
class PragmaOnceUnitState;
 
79486
class PragmaOnce;
 
79487
class CMatchSyntax;
 
79488
namespace Puma {
 
79489
 
 
79490
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79491
class CT_DeclSpecSeq : public CT_List {
 
79492
#line 79493 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79493
  friend class ::CCExprResolve;
 
79494
  friend class ::CExprResolve;
 
79495
  friend class ::WinIfExists;
 
79496
  friend class ::WinImportHandler;
 
79497
  friend class ::WinMacros;
 
79498
  friend class ::WinAsm;
 
79499
  friend class ::WinDeclSpecs;
 
79500
  friend class ::WinMemberExplSpec;
 
79501
  friend class ::WinTypeKeywords;
 
79502
  friend class ::WinFriend;
 
79503
  friend class ::ExtAC;
 
79504
  friend class ::ExtACBuilderCoupling;
 
79505
  friend class ::ExtACSyntaxCoupling;
 
79506
  friend class ::ExtACTree;
 
79507
  friend class ::ExtACKeywords;
 
79508
  friend class ::ExtGnu;
 
79509
  friend class ::PragmaOnceUnitState;
 
79510
  friend class ::PragmaOnce;
 
79511
  friend class ::CMatchSyntax;
 
79512
 
 
79513
#line 548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79514
 
 
79515
public:
 
79516
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79517
  static const char *NodeId ();
 
79518
  /** Get the name of the node. Can be compared with NodeId(). */
 
79519
  const char *NodeName () const { return NodeId (); }
 
79520
public:
 
79521
  typedef AC::TLE __AttrTypes;
 
79522
  const char *__attr_name (unsigned i) const { return 0; }
 
79523
  const void *__attr (unsigned __i) const { return 0; }
 
79524
#line 554 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79525
};
 
79526
 
 
79527
/** \class CT_CmpdStmt CTree.h Puma/CTree.h
 
79528
 *  Tree node representing a compound statement. */
 
79529
 
 
79530
#line 79531 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79531
} // closed Puma
 
79532
class CCExprResolve;
 
79533
class CExprResolve;
 
79534
class WinIfExists;
 
79535
class WinImportHandler;
 
79536
class WinMacros;
 
79537
class WinAsm;
 
79538
class WinDeclSpecs;
 
79539
class WinMemberExplSpec;
 
79540
class WinTypeKeywords;
 
79541
class WinFriend;
 
79542
class ExtAC;
 
79543
class ExtACBuilderCoupling;
 
79544
class ExtACSyntaxCoupling;
 
79545
class ExtACTree;
 
79546
class ExtACKeywords;
 
79547
class ExtGnu;
 
79548
class PragmaOnceUnitState;
 
79549
class PragmaOnce;
 
79550
class CMatchSyntax;
 
79551
namespace Puma {
 
79552
 
 
79553
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79554
class CT_CmpdStmt : public CT_List, public CSemScope {
 
79555
#line 79556 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79556
  friend class ::CCExprResolve;
 
79557
  friend class ::CExprResolve;
 
79558
  friend class ::WinIfExists;
 
79559
  friend class ::WinImportHandler;
 
79560
  friend class ::WinMacros;
 
79561
  friend class ::WinAsm;
 
79562
  friend class ::WinDeclSpecs;
 
79563
  friend class ::WinMemberExplSpec;
 
79564
  friend class ::WinTypeKeywords;
 
79565
  friend class ::WinFriend;
 
79566
  friend class ::ExtAC;
 
79567
  friend class ::ExtACBuilderCoupling;
 
79568
  friend class ::ExtACSyntaxCoupling;
 
79569
  friend class ::ExtACTree;
 
79570
  friend class ::ExtACKeywords;
 
79571
  friend class ::ExtGnu;
 
79572
  friend class ::PragmaOnceUnitState;
 
79573
  friend class ::PragmaOnce;
 
79574
  friend class ::CMatchSyntax;
 
79575
 
 
79576
#line 558 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79577
 
 
79578
public:
 
79579
  /* Constructor. */
 
79580
  CT_CmpdStmt () { AddProperties (OPEN_CLOSE); }
 
79581
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79582
  static const char *NodeId ();
 
79583
  /** Get the name of the node. Can be compared with NodeId(). */
 
79584
  const char *NodeName () const { return NodeId (); }
 
79585
  /** Get the scope opened by the compound statement. */
 
79586
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
79587
public:
 
79588
  typedef AC::TLE __AttrTypes;
 
79589
  const char *__attr_name (unsigned i) const { return 0; }
 
79590
  const void *__attr (unsigned __i) const { return 0; }
 
79591
#line 568 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79592
};
 
79593
 
 
79594
/** \class CT_HandlerSeq CTree.h Puma/CTree.h
 
79595
 *  Tree node representing an exception handler sequence. */
 
79596
 
 
79597
#line 79598 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79598
} // closed Puma
 
79599
class CCExprResolve;
 
79600
class CExprResolve;
 
79601
class WinIfExists;
 
79602
class WinImportHandler;
 
79603
class WinMacros;
 
79604
class WinAsm;
 
79605
class WinDeclSpecs;
 
79606
class WinMemberExplSpec;
 
79607
class WinTypeKeywords;
 
79608
class WinFriend;
 
79609
class ExtAC;
 
79610
class ExtACBuilderCoupling;
 
79611
class ExtACSyntaxCoupling;
 
79612
class ExtACTree;
 
79613
class ExtACKeywords;
 
79614
class ExtGnu;
 
79615
class PragmaOnceUnitState;
 
79616
class PragmaOnce;
 
79617
class CMatchSyntax;
 
79618
namespace Puma {
 
79619
 
 
79620
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79621
class CT_HandlerSeq : public CT_List {
 
79622
#line 79623 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79623
  friend class ::CCExprResolve;
 
79624
  friend class ::CExprResolve;
 
79625
  friend class ::WinIfExists;
 
79626
  friend class ::WinImportHandler;
 
79627
  friend class ::WinMacros;
 
79628
  friend class ::WinAsm;
 
79629
  friend class ::WinDeclSpecs;
 
79630
  friend class ::WinMemberExplSpec;
 
79631
  friend class ::WinTypeKeywords;
 
79632
  friend class ::WinFriend;
 
79633
  friend class ::ExtAC;
 
79634
  friend class ::ExtACBuilderCoupling;
 
79635
  friend class ::ExtACSyntaxCoupling;
 
79636
  friend class ::ExtACTree;
 
79637
  friend class ::ExtACKeywords;
 
79638
  friend class ::ExtGnu;
 
79639
  friend class ::PragmaOnceUnitState;
 
79640
  friend class ::PragmaOnce;
 
79641
  friend class ::CMatchSyntax;
 
79642
 
 
79643
#line 572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79644
 
 
79645
public:
 
79646
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79647
  static const char *NodeId ();
 
79648
  /** Get the name of the node. Can be compared with NodeId(). */
 
79649
  const char *NodeName () const { return NodeId (); }
 
79650
public:
 
79651
  typedef AC::TLE __AttrTypes;
 
79652
  const char *__attr_name (unsigned i) const { return 0; }
 
79653
  const void *__attr (unsigned __i) const { return 0; }
 
79654
#line 578 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79655
};
 
79656
 
 
79657
/** \class CT_TemplateParamList CTree.h Puma/CTree.h
 
79658
 *  Tree node representing a template parameter list. */
 
79659
 
 
79660
#line 79661 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79661
} // closed Puma
 
79662
class CCExprResolve;
 
79663
class CExprResolve;
 
79664
class WinIfExists;
 
79665
class WinImportHandler;
 
79666
class WinMacros;
 
79667
class WinAsm;
 
79668
class WinDeclSpecs;
 
79669
class WinMemberExplSpec;
 
79670
class WinTypeKeywords;
 
79671
class WinFriend;
 
79672
class ExtAC;
 
79673
class ExtACBuilderCoupling;
 
79674
class ExtACSyntaxCoupling;
 
79675
class ExtACTree;
 
79676
class ExtACKeywords;
 
79677
class ExtGnu;
 
79678
class PragmaOnceUnitState;
 
79679
class PragmaOnce;
 
79680
class CMatchSyntax;
 
79681
namespace Puma {
 
79682
 
 
79683
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79684
class CT_TemplateParamList : public CT_List, public CSemScope {
 
79685
#line 79686 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79686
  friend class ::CCExprResolve;
 
79687
  friend class ::CExprResolve;
 
79688
  friend class ::WinIfExists;
 
79689
  friend class ::WinImportHandler;
 
79690
  friend class ::WinMacros;
 
79691
  friend class ::WinAsm;
 
79692
  friend class ::WinDeclSpecs;
 
79693
  friend class ::WinMemberExplSpec;
 
79694
  friend class ::WinTypeKeywords;
 
79695
  friend class ::WinFriend;
 
79696
  friend class ::ExtAC;
 
79697
  friend class ::ExtACBuilderCoupling;
 
79698
  friend class ::ExtACSyntaxCoupling;
 
79699
  friend class ::ExtACTree;
 
79700
  friend class ::ExtACKeywords;
 
79701
  friend class ::ExtGnu;
 
79702
  friend class ::PragmaOnceUnitState;
 
79703
  friend class ::PragmaOnce;
 
79704
  friend class ::CMatchSyntax;
 
79705
 
 
79706
#line 582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79707
 
 
79708
public:
 
79709
  CT_TemplateParamList () { AddProperties (INTRO | SEPARATORS | OPEN_CLOSE); }
 
79710
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79711
  static const char *NodeId ();
 
79712
  /** Get the name of the node. Can be compared with NodeId(). */
 
79713
  const char *NodeName () const { return NodeId (); }
 
79714
  /** Get the scope opened by the template parameter list. */
 
79715
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
79716
public:
 
79717
  typedef AC::TLE __AttrTypes;
 
79718
  const char *__attr_name (unsigned i) const { return 0; }
 
79719
  const void *__attr (unsigned __i) const { return 0; }
 
79720
#line 591 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79721
};
 
79722
 
 
79723
/** \class CT_TemplateArgList CTree.h Puma/CTree.h
 
79724
 *  Tree node representing a template argument list. */
 
79725
 
 
79726
#line 79727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79727
} // closed Puma
 
79728
class CCExprResolve;
 
79729
class CExprResolve;
 
79730
class WinIfExists;
 
79731
class WinImportHandler;
 
79732
class WinMacros;
 
79733
class WinAsm;
 
79734
class WinDeclSpecs;
 
79735
class WinMemberExplSpec;
 
79736
class WinTypeKeywords;
 
79737
class WinFriend;
 
79738
class ExtAC;
 
79739
class ExtACBuilderCoupling;
 
79740
class ExtACSyntaxCoupling;
 
79741
class ExtACTree;
 
79742
class ExtACKeywords;
 
79743
class ExtGnu;
 
79744
class PragmaOnceUnitState;
 
79745
class PragmaOnce;
 
79746
class CMatchSyntax;
 
79747
namespace Puma {
 
79748
 
 
79749
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79750
class CT_TemplateArgList : public CT_List {
 
79751
#line 79752 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79752
  friend class ::CCExprResolve;
 
79753
  friend class ::CExprResolve;
 
79754
  friend class ::WinIfExists;
 
79755
  friend class ::WinImportHandler;
 
79756
  friend class ::WinMacros;
 
79757
  friend class ::WinAsm;
 
79758
  friend class ::WinDeclSpecs;
 
79759
  friend class ::WinMemberExplSpec;
 
79760
  friend class ::WinTypeKeywords;
 
79761
  friend class ::WinFriend;
 
79762
  friend class ::ExtAC;
 
79763
  friend class ::ExtACBuilderCoupling;
 
79764
  friend class ::ExtACSyntaxCoupling;
 
79765
  friend class ::ExtACTree;
 
79766
  friend class ::ExtACKeywords;
 
79767
  friend class ::ExtGnu;
 
79768
  friend class ::PragmaOnceUnitState;
 
79769
  friend class ::PragmaOnce;
 
79770
  friend class ::CMatchSyntax;
 
79771
 
 
79772
#line 595 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79773
 
 
79774
public:
 
79775
  /** Constructor. */
 
79776
  CT_TemplateArgList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
79777
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79778
  static const char *NodeId ();
 
79779
  /** Get the name of the node. Can be compared with NodeId(). */
 
79780
  const char *NodeName () const { return NodeId (); }
 
79781
public:
 
79782
  typedef AC::TLE __AttrTypes;
 
79783
  const char *__attr_name (unsigned i) const { return 0; }
 
79784
  const void *__attr (unsigned __i) const { return 0; }
 
79785
#line 603 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79786
};
 
79787
 
 
79788
/*****************************************************************************/
 
79789
/*                                                                           */
 
79790
/*                              Expressions                                  */
 
79791
/*                                                                           */
 
79792
/*****************************************************************************/
 
79793
 
 
79794
/** \class CT_Expression CTree.h Puma/CTree.h
 
79795
 *  Base class for all expression tree nodes. */
 
79796
 
 
79797
#line 79798 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79798
} // closed Puma
 
79799
class CCExprResolve;
 
79800
class CExprResolve;
 
79801
class WinIfExists;
 
79802
class WinImportHandler;
 
79803
class WinMacros;
 
79804
class WinAsm;
 
79805
class WinDeclSpecs;
 
79806
class WinMemberExplSpec;
 
79807
class WinTypeKeywords;
 
79808
class WinFriend;
 
79809
class ExtAC;
 
79810
class ExtACBuilderCoupling;
 
79811
class ExtACSyntaxCoupling;
 
79812
class ExtACTree;
 
79813
class ExtACKeywords;
 
79814
class ExtGnu;
 
79815
class PragmaOnceUnitState;
 
79816
class PragmaOnce;
 
79817
class CMatchSyntax;
 
79818
namespace Puma {
 
79819
 
 
79820
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79821
 
 
79822
#line 79823 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79823
} // closed Puma
 
79824
 
 
79825
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
79826
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
79827
#include "CCExprResolveH.ah"
 
79828
#endif
 
79829
namespace Puma {
 
79830
 
 
79831
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79832
 
 
79833
#line 79834 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79834
} // closed Puma
 
79835
 
 
79836
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
79837
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
79838
#include "CExprResolveH.ah"
 
79839
#endif
 
79840
namespace Puma {
 
79841
 
 
79842
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79843
class CT_Expression : public CTree, public CSemValue {
 
79844
#line 79845 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79845
  friend class ::CCExprResolve;
 
79846
  friend class ::CExprResolve;
 
79847
  friend class ::WinIfExists;
 
79848
  friend class ::WinImportHandler;
 
79849
  friend class ::WinMacros;
 
79850
  friend class ::WinAsm;
 
79851
  friend class ::WinDeclSpecs;
 
79852
  friend class ::WinMemberExplSpec;
 
79853
  friend class ::WinTypeKeywords;
 
79854
  friend class ::WinFriend;
 
79855
  friend class ::ExtAC;
 
79856
  friend class ::ExtACBuilderCoupling;
 
79857
  friend class ::ExtACSyntaxCoupling;
 
79858
  friend class ::ExtACTree;
 
79859
  friend class ::ExtACKeywords;
 
79860
  friend class ::ExtGnu;
 
79861
  friend class ::PragmaOnceUnitState;
 
79862
  friend class ::PragmaOnce;
 
79863
  friend class ::CMatchSyntax;
 
79864
 
 
79865
#line 613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79866
 
 
79867
protected:
 
79868
  /** Constructor. */
 
79869
  CT_Expression () {}
 
79870
 
 
79871
public:
 
79872
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79873
  static const char *NodeId ();
 
79874
  /** Get the name of the node. Can be compared with NodeId(). */
 
79875
  const char *NodeName () const { return NodeId (); }
 
79876
  /** Get the type of the expression.
 
79877
   *  \return The type information object or NULL. */
 
79878
  CTypeInfo *Type () const { return type; }
 
79879
  /** Get the value of the expression.
 
79880
   *  \return The value object or NULL. */
 
79881
  CExprValue *Value () const { return value; }
 
79882
  /** Get the semantic value information of the expression.
 
79883
   *  \return The value object or NULL. */
 
79884
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
79885
  /** Get this. */
 
79886
  virtual CT_Expression *IsExpression () { return this; }
 
79887
   private:
 
79888
  typedef CT_Expression CCExprResolveExpr;
 
79889
 
 
79890
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
79891
 public :
 
79892
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
79893
  typedef CT_Expression CExprResolveExpr;
 
79894
 
 
79895
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
79896
 public :
 
79897
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
79898
  typedef AC::TLE __AttrTypes;
 
79899
  const char *__attr_name (unsigned i) const { return 0; }
 
79900
  const void *__attr (unsigned __i) const { return 0; }
 
79901
#line 634 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79902
};
 
79903
 
 
79904
/** \class CT_Call CTree.h Puma/CTree.h
 
79905
 *  Tree node representing explicit or implicit function calls 
 
79906
 *  including built-in or user-defined functions and overloaded
 
79907
 *  operators. */
 
79908
 
 
79909
#line 79910 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79910
} // closed Puma
 
79911
class CCExprResolve;
 
79912
class CExprResolve;
 
79913
class WinIfExists;
 
79914
class WinImportHandler;
 
79915
class WinMacros;
 
79916
class WinAsm;
 
79917
class WinDeclSpecs;
 
79918
class WinMemberExplSpec;
 
79919
class WinTypeKeywords;
 
79920
class WinFriend;
 
79921
class ExtAC;
 
79922
class ExtACBuilderCoupling;
 
79923
class ExtACSyntaxCoupling;
 
79924
class ExtACTree;
 
79925
class ExtACKeywords;
 
79926
class ExtGnu;
 
79927
class PragmaOnceUnitState;
 
79928
class PragmaOnce;
 
79929
class CMatchSyntax;
 
79930
namespace Puma {
 
79931
 
 
79932
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79933
 
 
79934
#line 79935 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79935
} // closed Puma
 
79936
 
 
79937
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
79938
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
79939
#include "CCExprResolveH.ah"
 
79940
#endif
 
79941
namespace Puma {
 
79942
 
 
79943
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79944
 
 
79945
#line 79946 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79946
} // closed Puma
 
79947
 
 
79948
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
79949
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
79950
#include "CExprResolveH.ah"
 
79951
#endif
 
79952
namespace Puma {
 
79953
 
 
79954
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79955
class CT_Call : public CT_Expression, public CSemObject {
 
79956
#line 79957 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
79957
  friend class ::CCExprResolve;
 
79958
  friend class ::CExprResolve;
 
79959
  friend class ::WinIfExists;
 
79960
  friend class ::WinImportHandler;
 
79961
  friend class ::WinMacros;
 
79962
  friend class ::WinAsm;
 
79963
  friend class ::WinDeclSpecs;
 
79964
  friend class ::WinMemberExplSpec;
 
79965
  friend class ::WinTypeKeywords;
 
79966
  friend class ::WinFriend;
 
79967
  friend class ::ExtAC;
 
79968
  friend class ::ExtACBuilderCoupling;
 
79969
  friend class ::ExtACSyntaxCoupling;
 
79970
  friend class ::ExtACTree;
 
79971
  friend class ::ExtACKeywords;
 
79972
  friend class ::ExtGnu;
 
79973
  friend class ::PragmaOnceUnitState;
 
79974
  friend class ::PragmaOnce;
 
79975
  friend class ::CMatchSyntax;
 
79976
 
 
79977
#line 640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
79978
 
 
79979
protected:
 
79980
  /** Constructor. */
 
79981
  CT_Call () {}
 
79982
  
 
79983
public:
 
79984
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
79985
  static const char *NodeId ();
 
79986
  /** Get the name of the node. Can be compared with NodeId(). */
 
79987
  const char *NodeName () const { return NodeId (); }
 
79988
  /** Get the semantic information of the call. */
 
79989
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
79990
  /** Get this. */
 
79991
  CT_Call *IsCall () { return this; }
 
79992
   private:
 
79993
  typedef CT_Call CCExprResolveExpr;
 
79994
 
 
79995
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
79996
 public :
 
79997
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
79998
  typedef CT_Call CExprResolveExpr;
 
79999
 
 
80000
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
80001
 public :
 
80002
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
80003
  typedef AC::TLE __AttrTypes;
 
80004
  const char *__attr_name (unsigned i) const { return 0; }
 
80005
  const void *__attr (unsigned __i) const { return 0; }
 
80006
#line 654 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80007
};
 
80008
 
 
80009
/** \class CT_ImplicitCall CTree.h Puma/CTree.h
 
80010
 *  Tree node representing implicit function calls detected by
 
80011
 *  the semantic analysis. 
 
80012
 *  Example:
 
80013
 *  \code
 
80014
 * class Number {
 
80015
 *   int _n;
 
80016
 * public:
 
80017
 *   Number(int n) : _n(n) {}
 
80018
 *   int operator+(const Number& n) { return n._n + _n; }
 
80019
 * };
 
80020
 *     
 
80021
 * Number one(1), two(2);
 
80022
 * one + two;  // implicitely calls one.operator+(two)
 
80023
 *  \endcode */
 
80024
 
 
80025
#line 80026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80026
} // closed Puma
 
80027
class CCExprResolve;
 
80028
class CExprResolve;
 
80029
class WinIfExists;
 
80030
class WinImportHandler;
 
80031
class WinMacros;
 
80032
class WinAsm;
 
80033
class WinDeclSpecs;
 
80034
class WinMemberExplSpec;
 
80035
class WinTypeKeywords;
 
80036
class WinFriend;
 
80037
class ExtAC;
 
80038
class ExtACBuilderCoupling;
 
80039
class ExtACSyntaxCoupling;
 
80040
class ExtACTree;
 
80041
class ExtACKeywords;
 
80042
class ExtGnu;
 
80043
class PragmaOnceUnitState;
 
80044
class PragmaOnce;
 
80045
class CMatchSyntax;
 
80046
namespace Puma {
 
80047
 
 
80048
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80049
 
 
80050
#line 80051 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80051
} // closed Puma
 
80052
 
 
80053
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80054
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80055
#include "CCExprResolveH.ah"
 
80056
#endif
 
80057
namespace Puma {
 
80058
 
 
80059
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80060
 
 
80061
#line 80062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80062
} // closed Puma
 
80063
 
 
80064
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80065
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80066
#include "CExprResolveH.ah"
 
80067
#endif
 
80068
namespace Puma {
 
80069
 
 
80070
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80071
class CT_ImplicitCall : public CT_Call {
 
80072
#line 80073 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80073
  friend class ::CCExprResolve;
 
80074
  friend class ::CExprResolve;
 
80075
  friend class ::WinIfExists;
 
80076
  friend class ::WinImportHandler;
 
80077
  friend class ::WinMacros;
 
80078
  friend class ::WinAsm;
 
80079
  friend class ::WinDeclSpecs;
 
80080
  friend class ::WinMemberExplSpec;
 
80081
  friend class ::WinTypeKeywords;
 
80082
  friend class ::WinFriend;
 
80083
  friend class ::ExtAC;
 
80084
  friend class ::ExtACBuilderCoupling;
 
80085
  friend class ::ExtACSyntaxCoupling;
 
80086
  friend class ::ExtACTree;
 
80087
  friend class ::ExtACKeywords;
 
80088
  friend class ::ExtGnu;
 
80089
  friend class ::PragmaOnceUnitState;
 
80090
  friend class ::PragmaOnce;
 
80091
  friend class ::CMatchSyntax;
 
80092
 
 
80093
#line 671 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80094
 
 
80095
  CTree *_arg;
 
80096
 
 
80097
public:
 
80098
  /** Constructor.
 
80099
   *  \param arg The call argument. */
 
80100
  CT_ImplicitCall (CTree *arg) { AddSon (_arg, arg); }
 
80101
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
80102
  static const char *NodeId ();
 
80103
  /** Get the name of the node. Can be compared with NodeId(). */
 
80104
  const char *NodeName () const { return NodeId (); }
 
80105
  /** Get the number of sons. */
 
80106
  int Sons () const { return 1; }
 
80107
  /** Get the n-th son.
 
80108
   *  \param n The index of the son.
 
80109
   *  \return The n-th son or NULL. */
 
80110
  CTree *Son (int n) const { return (n == 0) ? _arg : (CTree*)0; }
 
80111
  /** Replace a son.
 
80112
   *  \param old_son The son to replace.
 
80113
   *  \param new_son The new son. */
 
80114
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
80115
   { CTree::ReplaceSon (_arg, old_son, new_son); }
 
80116
   private:
 
80117
  typedef CT_ImplicitCall CCExprResolveExpr;
 
80118
 
 
80119
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
80120
 public :
 
80121
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
80122
  typedef CT_ImplicitCall CExprResolveExpr;
 
80123
 
 
80124
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
80125
 public :
 
80126
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
80127
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
80128
  const char *__attr_name (unsigned i) const {
 
80129
    static const char *names[] = { "_arg" }; return names[i];
 
80130
  }
 
80131
  const void *__attr (unsigned __i) const {
 
80132
    switch (__i) { case 0: return &_arg; default: return 0; }
 
80133
  }
 
80134
#line 693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80135
};
 
80136
 
 
80137
/** \class CT_String CTree.h Puma/CTree.h
 
80138
 *  Tree node representing a string literal. 
 
80139
 *  Example: \code "abc" \endcode */
 
80140
 
 
80141
#line 80142 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80142
} // closed Puma
 
80143
class CCExprResolve;
 
80144
class CExprResolve;
 
80145
class WinIfExists;
 
80146
class WinImportHandler;
 
80147
class WinMacros;
 
80148
class WinAsm;
 
80149
class WinDeclSpecs;
 
80150
class WinMemberExplSpec;
 
80151
class WinTypeKeywords;
 
80152
class WinFriend;
 
80153
class ExtAC;
 
80154
class ExtACBuilderCoupling;
 
80155
class ExtACSyntaxCoupling;
 
80156
class ExtACTree;
 
80157
class ExtACKeywords;
 
80158
class ExtGnu;
 
80159
class PragmaOnceUnitState;
 
80160
class PragmaOnce;
 
80161
class CMatchSyntax;
 
80162
namespace Puma {
 
80163
 
 
80164
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80165
 
 
80166
#line 80167 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80167
} // closed Puma
 
80168
 
 
80169
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80170
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80171
#include "CCExprResolveH.ah"
 
80172
#endif
 
80173
namespace Puma {
 
80174
 
 
80175
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80176
 
 
80177
#line 80178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80178
} // closed Puma
 
80179
 
 
80180
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80181
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80182
#include "CExprResolveH.ah"
 
80183
#endif
 
80184
namespace Puma {
 
80185
 
 
80186
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80187
class CT_String : public CT_List, public CSemValue {
 
80188
#line 80189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80189
  friend class ::CCExprResolve;
 
80190
  friend class ::CExprResolve;
 
80191
  friend class ::WinIfExists;
 
80192
  friend class ::WinImportHandler;
 
80193
  friend class ::WinMacros;
 
80194
  friend class ::WinAsm;
 
80195
  friend class ::WinDeclSpecs;
 
80196
  friend class ::WinMemberExplSpec;
 
80197
  friend class ::WinTypeKeywords;
 
80198
  friend class ::WinFriend;
 
80199
  friend class ::ExtAC;
 
80200
  friend class ::ExtACBuilderCoupling;
 
80201
  friend class ::ExtACSyntaxCoupling;
 
80202
  friend class ::ExtACTree;
 
80203
  friend class ::ExtACKeywords;
 
80204
  friend class ::ExtGnu;
 
80205
  friend class ::PragmaOnceUnitState;
 
80206
  friend class ::PragmaOnce;
 
80207
  friend class ::CMatchSyntax;
 
80208
 
 
80209
#line 698 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80210
 
 
80211
public:
 
80212
  /** Constructor. 
 
80213
   *  \param size The number of sub-strings. */
 
80214
  CT_String (int size) : CT_List (size, 1) {}
 
80215
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
80216
  static const char *NodeId ();
 
80217
  /** Get the name of the node. Can be compared with NodeId(). */
 
80218
  const char *NodeName () const { return NodeId (); }
 
80219
 
 
80220
  /** Get the type of the string. 
 
80221
   *  \return The type or NULL. */
 
80222
  CTypeInfo *Type () const { return type; }
 
80223
  /** Get the string value.
 
80224
   *  \return The value or NULL. */
 
80225
  CExprValue *Value () const { return value; }
 
80226
  /** Get the semantic value info object.
 
80227
   *  \return The semantic value object or NULL. */
 
80228
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
80229
  /** Get this. */
 
80230
  virtual CT_String *IsString () { return this; }
 
80231
   private:
 
80232
  typedef CT_String CCExprResolveExpr;
 
80233
 
 
80234
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
80235
 public :
 
80236
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
80237
  typedef CT_String CExprResolveExpr;
 
80238
 
 
80239
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
80240
 public :
 
80241
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
80242
  typedef AC::TLE __AttrTypes;
 
80243
  const char *__attr_name (unsigned i) const { return 0; }
 
80244
  const void *__attr (unsigned __i) const { return 0; }
 
80245
#line 719 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80246
};
 
80247
 
 
80248
/** \class CT_WideString CTree.h Puma/CTree.h
 
80249
 *  Tree node representing a wide string literal. 
 
80250
 *  Example: \code L"abc" \endcode */
 
80251
 
 
80252
#line 80253 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80253
} // closed Puma
 
80254
class CCExprResolve;
 
80255
class CExprResolve;
 
80256
class WinIfExists;
 
80257
class WinImportHandler;
 
80258
class WinMacros;
 
80259
class WinAsm;
 
80260
class WinDeclSpecs;
 
80261
class WinMemberExplSpec;
 
80262
class WinTypeKeywords;
 
80263
class WinFriend;
 
80264
class ExtAC;
 
80265
class ExtACBuilderCoupling;
 
80266
class ExtACSyntaxCoupling;
 
80267
class ExtACTree;
 
80268
class ExtACKeywords;
 
80269
class ExtGnu;
 
80270
class PragmaOnceUnitState;
 
80271
class PragmaOnce;
 
80272
class CMatchSyntax;
 
80273
namespace Puma {
 
80274
 
 
80275
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80276
 
 
80277
#line 80278 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80278
} // closed Puma
 
80279
 
 
80280
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80281
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80282
#include "CCExprResolveH.ah"
 
80283
#endif
 
80284
namespace Puma {
 
80285
 
 
80286
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80287
 
 
80288
#line 80289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80289
} // closed Puma
 
80290
 
 
80291
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80292
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80293
#include "CExprResolveH.ah"
 
80294
#endif
 
80295
namespace Puma {
 
80296
 
 
80297
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80298
class CT_WideString : public CT_String {
 
80299
#line 80300 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80300
  friend class ::CCExprResolve;
 
80301
  friend class ::CExprResolve;
 
80302
  friend class ::WinIfExists;
 
80303
  friend class ::WinImportHandler;
 
80304
  friend class ::WinMacros;
 
80305
  friend class ::WinAsm;
 
80306
  friend class ::WinDeclSpecs;
 
80307
  friend class ::WinMemberExplSpec;
 
80308
  friend class ::WinTypeKeywords;
 
80309
  friend class ::WinFriend;
 
80310
  friend class ::ExtAC;
 
80311
  friend class ::ExtACBuilderCoupling;
 
80312
  friend class ::ExtACSyntaxCoupling;
 
80313
  friend class ::ExtACTree;
 
80314
  friend class ::ExtACKeywords;
 
80315
  friend class ::ExtGnu;
 
80316
  friend class ::PragmaOnceUnitState;
 
80317
  friend class ::PragmaOnce;
 
80318
  friend class ::CMatchSyntax;
 
80319
 
 
80320
#line 724 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80321
 
 
80322
public:
 
80323
  /** Constructor.
 
80324
   *  \param size The number of sub-strings. */
 
80325
  CT_WideString (int size) : CT_String (size) {}
 
80326
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
80327
  static const char *NodeId ();
 
80328
  /** Get the name of the node. Can be compared with NodeId(). */
 
80329
  const char *NodeName () const { return NodeId (); }
 
80330
   private:
 
80331
  typedef CT_WideString CCExprResolveExpr;
 
80332
 
 
80333
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
80334
 public :
 
80335
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
80336
  typedef CT_WideString CExprResolveExpr;
 
80337
 
 
80338
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
80339
 public :
 
80340
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
80341
  typedef AC::TLE __AttrTypes;
 
80342
  const char *__attr_name (unsigned i) const { return 0; }
 
80343
  const void *__attr (unsigned __i) const { return 0; }
 
80344
#line 733 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80345
};
 
80346
 
 
80347
/** \class CT_Integer CTree.h Puma/CTree.h
 
80348
 *  Tree node representing an integer constant. 
 
80349
 *  Example: \code 1234 \endcode */
 
80350
 
 
80351
#line 80352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80352
} // closed Puma
 
80353
class CCExprResolve;
 
80354
class CExprResolve;
 
80355
class WinIfExists;
 
80356
class WinImportHandler;
 
80357
class WinMacros;
 
80358
class WinAsm;
 
80359
class WinDeclSpecs;
 
80360
class WinMemberExplSpec;
 
80361
class WinTypeKeywords;
 
80362
class WinFriend;
 
80363
class ExtAC;
 
80364
class ExtACBuilderCoupling;
 
80365
class ExtACSyntaxCoupling;
 
80366
class ExtACTree;
 
80367
class ExtACKeywords;
 
80368
class ExtGnu;
 
80369
class PragmaOnceUnitState;
 
80370
class PragmaOnce;
 
80371
class CMatchSyntax;
 
80372
namespace Puma {
 
80373
 
 
80374
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80375
 
 
80376
#line 80377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80377
} // closed Puma
 
80378
 
 
80379
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80380
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80381
#include "CCExprResolveH.ah"
 
80382
#endif
 
80383
namespace Puma {
 
80384
 
 
80385
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80386
 
 
80387
#line 80388 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80388
} // closed Puma
 
80389
 
 
80390
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80391
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80392
#include "CExprResolveH.ah"
 
80393
#endif
 
80394
namespace Puma {
 
80395
 
 
80396
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80397
class CT_Integer : public CT_Expression {
 
80398
#line 80399 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80399
  friend class ::CCExprResolve;
 
80400
  friend class ::CExprResolve;
 
80401
  friend class ::WinIfExists;
 
80402
  friend class ::WinImportHandler;
 
80403
  friend class ::WinMacros;
 
80404
  friend class ::WinAsm;
 
80405
  friend class ::WinDeclSpecs;
 
80406
  friend class ::WinMemberExplSpec;
 
80407
  friend class ::WinTypeKeywords;
 
80408
  friend class ::WinFriend;
 
80409
  friend class ::ExtAC;
 
80410
  friend class ::ExtACBuilderCoupling;
 
80411
  friend class ::ExtACSyntaxCoupling;
 
80412
  friend class ::ExtACTree;
 
80413
  friend class ::ExtACKeywords;
 
80414
  friend class ::ExtGnu;
 
80415
  friend class ::PragmaOnceUnitState;
 
80416
  friend class ::PragmaOnce;
 
80417
  friend class ::CMatchSyntax;
 
80418
 
 
80419
#line 738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80420
 
 
80421
  CTree *_value;  // CT_Token
 
80422
 
 
80423
public:
 
80424
  /** Constructor.
 
80425
   *  \param token The token containing the integer value. */
 
80426
  CT_Integer (CTree *token) { AddSon (_value, token); }
 
80427
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
80428
  static const char *NodeId ();
 
80429
  /** Get the name of the node. Can be compared with NodeId(). */
 
80430
  const char *NodeName () const { return NodeId (); }
 
80431
  /** Get the number of sons. */
 
80432
  int Sons () const { return _value ? 1 : 0; }
 
80433
  /** Get the n-th son.
 
80434
   *  \param n The index of the son.
 
80435
   *  \return The n-th son or NULL. */
 
80436
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
80437
  /** Replace a son.
 
80438
   *  \param old_son The son to replace.
 
80439
   *  \param new_son The new son. */
 
80440
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
80441
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
80442
   private:
 
80443
  typedef CT_Integer CCExprResolveExpr;
 
80444
 
 
80445
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
80446
 public :
 
80447
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
80448
  typedef CT_Integer CExprResolveExpr;
 
80449
 
 
80450
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
80451
 public :
 
80452
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
80453
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
80454
  const char *__attr_name (unsigned i) const {
 
80455
    static const char *names[] = { "_value" }; return names[i];
 
80456
  }
 
80457
  const void *__attr (unsigned __i) const {
 
80458
    switch (__i) { case 0: return &_value; default: return 0; }
 
80459
  }
 
80460
#line 760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80461
};
 
80462
 
 
80463
/** \class CT_Character CTree.h Puma/CTree.h
 
80464
 *  Tree node representing a single character constant. 
 
80465
 *  Example: \code 'a' \endcode */
 
80466
 
 
80467
#line 80468 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80468
} // closed Puma
 
80469
class CCExprResolve;
 
80470
class CExprResolve;
 
80471
class WinIfExists;
 
80472
class WinImportHandler;
 
80473
class WinMacros;
 
80474
class WinAsm;
 
80475
class WinDeclSpecs;
 
80476
class WinMemberExplSpec;
 
80477
class WinTypeKeywords;
 
80478
class WinFriend;
 
80479
class ExtAC;
 
80480
class ExtACBuilderCoupling;
 
80481
class ExtACSyntaxCoupling;
 
80482
class ExtACTree;
 
80483
class ExtACKeywords;
 
80484
class ExtGnu;
 
80485
class PragmaOnceUnitState;
 
80486
class PragmaOnce;
 
80487
class CMatchSyntax;
 
80488
namespace Puma {
 
80489
 
 
80490
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80491
 
 
80492
#line 80493 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80493
} // closed Puma
 
80494
 
 
80495
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80496
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80497
#include "CCExprResolveH.ah"
 
80498
#endif
 
80499
namespace Puma {
 
80500
 
 
80501
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80502
 
 
80503
#line 80504 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80504
} // closed Puma
 
80505
 
 
80506
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80507
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80508
#include "CExprResolveH.ah"
 
80509
#endif
 
80510
namespace Puma {
 
80511
 
 
80512
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80513
class CT_Character : public CT_Expression {
 
80514
#line 80515 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80515
  friend class ::CCExprResolve;
 
80516
  friend class ::CExprResolve;
 
80517
  friend class ::WinIfExists;
 
80518
  friend class ::WinImportHandler;
 
80519
  friend class ::WinMacros;
 
80520
  friend class ::WinAsm;
 
80521
  friend class ::WinDeclSpecs;
 
80522
  friend class ::WinMemberExplSpec;
 
80523
  friend class ::WinTypeKeywords;
 
80524
  friend class ::WinFriend;
 
80525
  friend class ::ExtAC;
 
80526
  friend class ::ExtACBuilderCoupling;
 
80527
  friend class ::ExtACSyntaxCoupling;
 
80528
  friend class ::ExtACTree;
 
80529
  friend class ::ExtACKeywords;
 
80530
  friend class ::ExtGnu;
 
80531
  friend class ::PragmaOnceUnitState;
 
80532
  friend class ::PragmaOnce;
 
80533
  friend class ::CMatchSyntax;
 
80534
 
 
80535
#line 765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80536
 
 
80537
  CTree *_value;  // CT_Token
 
80538
 
 
80539
public:
 
80540
  /** Constructor.
 
80541
   *  \param token The token containing the character value. */
 
80542
  CT_Character (CTree *token) { AddSon (_value, token); }
 
80543
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
80544
  static const char *NodeId ();
 
80545
  /** Get the name of the node. Can be compared with NodeId(). */
 
80546
  const char *NodeName () const { return NodeId (); }
 
80547
  /** Get the number of sons. */
 
80548
  int Sons () const { return 1; }
 
80549
  /** Get the n-th son.
 
80550
   *  \param n The index of the son.
 
80551
   *  \return The n-th son or NULL. */
 
80552
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
80553
  /** Replace a son.
 
80554
   *  \param old_son The son to replace.
 
80555
   *  \param new_son The new son. */
 
80556
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
80557
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
80558
   private:
 
80559
  typedef CT_Character CCExprResolveExpr;
 
80560
 
 
80561
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
80562
 public :
 
80563
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
80564
  typedef CT_Character CExprResolveExpr;
 
80565
 
 
80566
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
80567
 public :
 
80568
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
80569
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
80570
  const char *__attr_name (unsigned i) const {
 
80571
    static const char *names[] = { "_value" }; return names[i];
 
80572
  }
 
80573
  const void *__attr (unsigned __i) const {
 
80574
    switch (__i) { case 0: return &_value; default: return 0; }
 
80575
  }
 
80576
#line 787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80577
};
 
80578
 
 
80579
/** \class CT_WideCharacter CTree.h Puma/CTree.h
 
80580
 *  Tree node representing a wide character constant. 
 
80581
 *  Example: \code L'a' \endcode */
 
80582
 
 
80583
#line 80584 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80584
} // closed Puma
 
80585
class CCExprResolve;
 
80586
class CExprResolve;
 
80587
class WinIfExists;
 
80588
class WinImportHandler;
 
80589
class WinMacros;
 
80590
class WinAsm;
 
80591
class WinDeclSpecs;
 
80592
class WinMemberExplSpec;
 
80593
class WinTypeKeywords;
 
80594
class WinFriend;
 
80595
class ExtAC;
 
80596
class ExtACBuilderCoupling;
 
80597
class ExtACSyntaxCoupling;
 
80598
class ExtACTree;
 
80599
class ExtACKeywords;
 
80600
class ExtGnu;
 
80601
class PragmaOnceUnitState;
 
80602
class PragmaOnce;
 
80603
class CMatchSyntax;
 
80604
namespace Puma {
 
80605
 
 
80606
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80607
 
 
80608
#line 80609 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80609
} // closed Puma
 
80610
 
 
80611
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80612
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80613
#include "CCExprResolveH.ah"
 
80614
#endif
 
80615
namespace Puma {
 
80616
 
 
80617
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80618
 
 
80619
#line 80620 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80620
} // closed Puma
 
80621
 
 
80622
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80623
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80624
#include "CExprResolveH.ah"
 
80625
#endif
 
80626
namespace Puma {
 
80627
 
 
80628
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80629
class CT_WideCharacter : public CT_Character {
 
80630
#line 80631 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80631
  friend class ::CCExprResolve;
 
80632
  friend class ::CExprResolve;
 
80633
  friend class ::WinIfExists;
 
80634
  friend class ::WinImportHandler;
 
80635
  friend class ::WinMacros;
 
80636
  friend class ::WinAsm;
 
80637
  friend class ::WinDeclSpecs;
 
80638
  friend class ::WinMemberExplSpec;
 
80639
  friend class ::WinTypeKeywords;
 
80640
  friend class ::WinFriend;
 
80641
  friend class ::ExtAC;
 
80642
  friend class ::ExtACBuilderCoupling;
 
80643
  friend class ::ExtACSyntaxCoupling;
 
80644
  friend class ::ExtACTree;
 
80645
  friend class ::ExtACKeywords;
 
80646
  friend class ::ExtGnu;
 
80647
  friend class ::PragmaOnceUnitState;
 
80648
  friend class ::PragmaOnce;
 
80649
  friend class ::CMatchSyntax;
 
80650
 
 
80651
#line 792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80652
 
 
80653
public:
 
80654
  /** Constructor.
 
80655
   *  \param token The token containing the wide character value. */
 
80656
  CT_WideCharacter (CTree *token) : CT_Character (token) {}
 
80657
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
80658
  static const char *NodeId ();
 
80659
  /** Get the name of the node. Can be compared with NodeId(). */
 
80660
  const char *NodeName () const { return NodeId (); }
 
80661
   private:
 
80662
  typedef CT_WideCharacter CCExprResolveExpr;
 
80663
 
 
80664
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
80665
 public :
 
80666
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
80667
  typedef CT_WideCharacter CExprResolveExpr;
 
80668
 
 
80669
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
80670
 public :
 
80671
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
80672
  typedef AC::TLE __AttrTypes;
 
80673
  const char *__attr_name (unsigned i) const { return 0; }
 
80674
  const void *__attr (unsigned __i) const { return 0; }
 
80675
#line 801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80676
};
 
80677
 
 
80678
/** \class CT_Float CTree.h Puma/CTree.h
 
80679
 *  Tree node representing a floating point constant. 
 
80680
 *  Example: \code 12.34 \endcode */
 
80681
 
 
80682
#line 80683 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80683
} // closed Puma
 
80684
class CCExprResolve;
 
80685
class CExprResolve;
 
80686
class WinIfExists;
 
80687
class WinImportHandler;
 
80688
class WinMacros;
 
80689
class WinAsm;
 
80690
class WinDeclSpecs;
 
80691
class WinMemberExplSpec;
 
80692
class WinTypeKeywords;
 
80693
class WinFriend;
 
80694
class ExtAC;
 
80695
class ExtACBuilderCoupling;
 
80696
class ExtACSyntaxCoupling;
 
80697
class ExtACTree;
 
80698
class ExtACKeywords;
 
80699
class ExtGnu;
 
80700
class PragmaOnceUnitState;
 
80701
class PragmaOnce;
 
80702
class CMatchSyntax;
 
80703
namespace Puma {
 
80704
 
 
80705
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80706
 
 
80707
#line 80708 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80708
} // closed Puma
 
80709
 
 
80710
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80711
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80712
#include "CCExprResolveH.ah"
 
80713
#endif
 
80714
namespace Puma {
 
80715
 
 
80716
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80717
 
 
80718
#line 80719 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80719
} // closed Puma
 
80720
 
 
80721
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80722
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80723
#include "CExprResolveH.ah"
 
80724
#endif
 
80725
namespace Puma {
 
80726
 
 
80727
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80728
class CT_Float : public CT_Expression {
 
80729
#line 80730 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80730
  friend class ::CCExprResolve;
 
80731
  friend class ::CExprResolve;
 
80732
  friend class ::WinIfExists;
 
80733
  friend class ::WinImportHandler;
 
80734
  friend class ::WinMacros;
 
80735
  friend class ::WinAsm;
 
80736
  friend class ::WinDeclSpecs;
 
80737
  friend class ::WinMemberExplSpec;
 
80738
  friend class ::WinTypeKeywords;
 
80739
  friend class ::WinFriend;
 
80740
  friend class ::ExtAC;
 
80741
  friend class ::ExtACBuilderCoupling;
 
80742
  friend class ::ExtACSyntaxCoupling;
 
80743
  friend class ::ExtACTree;
 
80744
  friend class ::ExtACKeywords;
 
80745
  friend class ::ExtGnu;
 
80746
  friend class ::PragmaOnceUnitState;
 
80747
  friend class ::PragmaOnce;
 
80748
  friend class ::CMatchSyntax;
 
80749
 
 
80750
#line 806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80751
 
 
80752
  CTree *_value;  // CT_Token
 
80753
 
 
80754
public:
 
80755
  /** Constructor.
 
80756
   *  \param token The token containing the floating point value. */
 
80757
  CT_Float (CTree *token) { AddSon (_value, token); }
 
80758
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
80759
  static const char *NodeId ();
 
80760
  /** Get the name of the node. Can be compared with NodeId(). */
 
80761
  const char *NodeName () const { return NodeId (); }
 
80762
  /** Get the number of sons. */
 
80763
  int Sons () const { return 1; }
 
80764
  /** Get the n-th son.
 
80765
   *  \param n The index of the son.
 
80766
   *  \return The n-th son or NULL. */
 
80767
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
80768
  /** Replace a son.
 
80769
   *  \param old_son The son to replace.
 
80770
   *  \param new_son The new son. */
 
80771
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
80772
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
80773
   private:
 
80774
  typedef CT_Float CCExprResolveExpr;
 
80775
 
 
80776
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
80777
 public :
 
80778
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
80779
  typedef CT_Float CExprResolveExpr;
 
80780
 
 
80781
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
80782
 public :
 
80783
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
80784
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
80785
  const char *__attr_name (unsigned i) const {
 
80786
    static const char *names[] = { "_value" }; return names[i];
 
80787
  }
 
80788
  const void *__attr (unsigned __i) const {
 
80789
    switch (__i) { case 0: return &_value; default: return 0; }
 
80790
  }
 
80791
#line 828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80792
};
 
80793
 
 
80794
/** \class CT_Bool CTree.h Puma/CTree.h
 
80795
 *  Tree node representing a boolean literal. 
 
80796
 *  Examples: 
 
80797
 *  \code 
 
80798
 * true
 
80799
 * false
 
80800
 *  \endcode */
 
80801
 
 
80802
#line 80803 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80803
} // closed Puma
 
80804
class CCExprResolve;
 
80805
class CExprResolve;
 
80806
class WinIfExists;
 
80807
class WinImportHandler;
 
80808
class WinMacros;
 
80809
class WinAsm;
 
80810
class WinDeclSpecs;
 
80811
class WinMemberExplSpec;
 
80812
class WinTypeKeywords;
 
80813
class WinFriend;
 
80814
class ExtAC;
 
80815
class ExtACBuilderCoupling;
 
80816
class ExtACSyntaxCoupling;
 
80817
class ExtACTree;
 
80818
class ExtACKeywords;
 
80819
class ExtGnu;
 
80820
class PragmaOnceUnitState;
 
80821
class PragmaOnce;
 
80822
class CMatchSyntax;
 
80823
namespace Puma {
 
80824
 
 
80825
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80826
 
 
80827
#line 80828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80828
} // closed Puma
 
80829
 
 
80830
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80831
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80832
#include "CCExprResolveH.ah"
 
80833
#endif
 
80834
namespace Puma {
 
80835
 
 
80836
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80837
 
 
80838
#line 80839 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80839
} // closed Puma
 
80840
 
 
80841
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80842
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80843
#include "CExprResolveH.ah"
 
80844
#endif
 
80845
namespace Puma {
 
80846
 
 
80847
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80848
class CT_Bool : public CT_Expression {
 
80849
#line 80850 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80850
  friend class ::CCExprResolve;
 
80851
  friend class ::CExprResolve;
 
80852
  friend class ::WinIfExists;
 
80853
  friend class ::WinImportHandler;
 
80854
  friend class ::WinMacros;
 
80855
  friend class ::WinAsm;
 
80856
  friend class ::WinDeclSpecs;
 
80857
  friend class ::WinMemberExplSpec;
 
80858
  friend class ::WinTypeKeywords;
 
80859
  friend class ::WinFriend;
 
80860
  friend class ::ExtAC;
 
80861
  friend class ::ExtACBuilderCoupling;
 
80862
  friend class ::ExtACSyntaxCoupling;
 
80863
  friend class ::ExtACTree;
 
80864
  friend class ::ExtACKeywords;
 
80865
  friend class ::ExtGnu;
 
80866
  friend class ::PragmaOnceUnitState;
 
80867
  friend class ::PragmaOnce;
 
80868
  friend class ::CMatchSyntax;
 
80869
 
 
80870
#line 837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80871
 
 
80872
  CTree *_value;  // CT_Token
 
80873
 
 
80874
public:
 
80875
  /** Constructor.
 
80876
   *  \param token The token containing the boolean value. */
 
80877
  CT_Bool (CTree *token) { AddSon (_value, token); }
 
80878
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
80879
  static const char *NodeId ();
 
80880
  /** Get the name of the node. Can be compared with NodeId(). */
 
80881
  const char *NodeName () const { return NodeId (); }
 
80882
  /** Get the number of sons. */
 
80883
  int Sons () const { return 1; }
 
80884
  /** Get the n-th son.
 
80885
   *  \param n The index of the son.
 
80886
   *  \return The n-th son or NULL. */
 
80887
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
80888
  /** Replace a son.
 
80889
   *  \param old_son The son to replace.
 
80890
   *  \param new_son The new son. */
 
80891
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
80892
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
80893
   private:
 
80894
  typedef CT_Bool CCExprResolveExpr;
 
80895
 
 
80896
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
80897
 public :
 
80898
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
80899
  typedef CT_Bool CExprResolveExpr;
 
80900
 
 
80901
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
80902
 public :
 
80903
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
80904
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
80905
  const char *__attr_name (unsigned i) const {
 
80906
    static const char *names[] = { "_value" }; return names[i];
 
80907
  }
 
80908
  const void *__attr (unsigned __i) const {
 
80909
    switch (__i) { case 0: return &_value; default: return 0; }
 
80910
  }
 
80911
#line 859 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80912
};
 
80913
 
 
80914
/** \class CT_BracedExpr CTree.h Puma/CTree.h
 
80915
 *  Tree node representing a braced expression.
 
80916
 *  Example: \code (a+b) \endcode */
 
80917
 
 
80918
#line 80919 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80919
} // closed Puma
 
80920
class CCExprResolve;
 
80921
class CExprResolve;
 
80922
class WinIfExists;
 
80923
class WinImportHandler;
 
80924
class WinMacros;
 
80925
class WinAsm;
 
80926
class WinDeclSpecs;
 
80927
class WinMemberExplSpec;
 
80928
class WinTypeKeywords;
 
80929
class WinFriend;
 
80930
class ExtAC;
 
80931
class ExtACBuilderCoupling;
 
80932
class ExtACSyntaxCoupling;
 
80933
class ExtACTree;
 
80934
class ExtACKeywords;
 
80935
class ExtGnu;
 
80936
class PragmaOnceUnitState;
 
80937
class PragmaOnce;
 
80938
class CMatchSyntax;
 
80939
namespace Puma {
 
80940
 
 
80941
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80942
 
 
80943
#line 80944 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80944
} // closed Puma
 
80945
 
 
80946
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80947
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
80948
#include "CCExprResolveH.ah"
 
80949
#endif
 
80950
namespace Puma {
 
80951
 
 
80952
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80953
 
 
80954
#line 80955 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80955
} // closed Puma
 
80956
 
 
80957
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80958
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
80959
#include "CExprResolveH.ah"
 
80960
#endif
 
80961
namespace Puma {
 
80962
 
 
80963
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80964
class CT_BracedExpr : public CT_Expression {
 
80965
#line 80966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
80966
  friend class ::CCExprResolve;
 
80967
  friend class ::CExprResolve;
 
80968
  friend class ::WinIfExists;
 
80969
  friend class ::WinImportHandler;
 
80970
  friend class ::WinMacros;
 
80971
  friend class ::WinAsm;
 
80972
  friend class ::WinDeclSpecs;
 
80973
  friend class ::WinMemberExplSpec;
 
80974
  friend class ::WinTypeKeywords;
 
80975
  friend class ::WinFriend;
 
80976
  friend class ::ExtAC;
 
80977
  friend class ::ExtACBuilderCoupling;
 
80978
  friend class ::ExtACSyntaxCoupling;
 
80979
  friend class ::ExtACTree;
 
80980
  friend class ::ExtACKeywords;
 
80981
  friend class ::ExtGnu;
 
80982
  friend class ::PragmaOnceUnitState;
 
80983
  friend class ::PragmaOnce;
 
80984
  friend class ::CMatchSyntax;
 
80985
 
 
80986
#line 864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
80987
 
 
80988
  CTree *sons[3]; // open, expr, close
 
80989
 
 
80990
public:
 
80991
  /** Constructor.
 
80992
   *  \param o The opening brace.
 
80993
   *  \param e The enclosed expression.
 
80994
   *  \param c The closing brace. */
 
80995
  CT_BracedExpr (CTree *o, CTree *e, CTree *c) { 
 
80996
    AddSon (sons[0], o); AddSon (sons[1], e); AddSon (sons[2], c); 
 
80997
  }
 
80998
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
80999
  static const char *NodeId ();
 
81000
  /** Get the name of the node. Can be compared with NodeId(). */
 
81001
  const char *NodeName () const { return NodeId (); }
 
81002
  /** Get the number of sons. */
 
81003
  int Sons () const { return 3; }
 
81004
  /** Get the n-th son.
 
81005
   *  \param n The index of the son.
 
81006
   *  \return The n-th son or NULL. */
 
81007
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
81008
  /** Get the enclosed expression. */
 
81009
  CTree *Expr () const { return sons[1]; }
 
81010
  /** Get the type of the enclosed expression. */
 
81011
  CTypeInfo *Type () const { return Expr ()->Type (); }
 
81012
  /** Get the value of the enclosed expression. */
 
81013
  CExprValue *Value () const { return Expr ()->Value (); }
 
81014
  /** Get the semantic value of the expression. */
 
81015
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
81016
  /** Replace a son.
 
81017
   *  \param old_son The son to replace.
 
81018
   *  \param new_son The new son. */
 
81019
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
81020
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
81021
  }
 
81022
   private:
 
81023
  typedef CT_BracedExpr CCExprResolveExpr;
 
81024
 
 
81025
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
81026
 public :
 
81027
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
81028
  typedef CT_BracedExpr CExprResolveExpr;
 
81029
 
 
81030
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
81031
 public :
 
81032
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
81033
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
81034
  const char *__attr_name (unsigned i) const {
 
81035
    static const char *names[] = { "sons" }; return names[i];
 
81036
  }
 
81037
  const void *__attr (unsigned __i) const {
 
81038
    switch (__i) { case 0: return &sons; default: return 0; }
 
81039
  }
 
81040
#line 899 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81041
};
 
81042
 
 
81043
/** \class CT_SimpleName CTree.h Puma/CTree.h
 
81044
 *  Base class for all tree nodes representing a name. 
 
81045
 *  Example: \code a \endcode */
 
81046
 
 
81047
#line 81048 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81048
} // closed Puma
 
81049
class CCExprResolve;
 
81050
class CExprResolve;
 
81051
class WinIfExists;
 
81052
class WinImportHandler;
 
81053
class WinMacros;
 
81054
class WinAsm;
 
81055
class WinDeclSpecs;
 
81056
class WinMemberExplSpec;
 
81057
class WinTypeKeywords;
 
81058
class WinFriend;
 
81059
class ExtAC;
 
81060
class ExtACBuilderCoupling;
 
81061
class ExtACSyntaxCoupling;
 
81062
class ExtACTree;
 
81063
class ExtACKeywords;
 
81064
class ExtGnu;
 
81065
class PragmaOnceUnitState;
 
81066
class PragmaOnce;
 
81067
class CMatchSyntax;
 
81068
namespace Puma {
 
81069
 
 
81070
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81071
 
 
81072
#line 81073 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81073
} // closed Puma
 
81074
 
 
81075
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81076
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81077
#include "CCExprResolveH.ah"
 
81078
#endif
 
81079
namespace Puma {
 
81080
 
 
81081
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81082
 
 
81083
#line 81084 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81084
} // closed Puma
 
81085
 
 
81086
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81087
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81088
#include "CExprResolveH.ah"
 
81089
#endif
 
81090
namespace Puma {
 
81091
 
 
81092
#line 904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81093
class CT_SimpleName : public CT_List, public Printable, 
 
81094
                      public CSemValue, public CSemObject {
 
81095
#line 81096 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81096
  friend class ::CCExprResolve;
 
81097
  friend class ::CExprResolve;
 
81098
  friend class ::WinIfExists;
 
81099
  friend class ::WinImportHandler;
 
81100
  friend class ::WinMacros;
 
81101
  friend class ::WinAsm;
 
81102
  friend class ::WinDeclSpecs;
 
81103
  friend class ::WinMemberExplSpec;
 
81104
  friend class ::WinTypeKeywords;
 
81105
  friend class ::WinFriend;
 
81106
  friend class ::ExtAC;
 
81107
  friend class ::ExtACBuilderCoupling;
 
81108
  friend class ::ExtACSyntaxCoupling;
 
81109
  friend class ::ExtACTree;
 
81110
  friend class ::ExtACKeywords;
 
81111
  friend class ::ExtGnu;
 
81112
  friend class ::PragmaOnceUnitState;
 
81113
  friend class ::PragmaOnce;
 
81114
  friend class ::CMatchSyntax;
 
81115
 
 
81116
#line 905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81117
 
 
81118
protected:
 
81119
  /** Constructor.
 
81120
   *  \param size The number of sub-names (for qualified names). */
 
81121
  CT_SimpleName (int size) : CT_List (size, 1) {}
 
81122
  /** Constructor.
 
81123
   *  \param size The number of sub-names (for qualified names). 
 
81124
   *  \param properties Additional name list properties (for root qualified names). */
 
81125
  CT_SimpleName (int size, int properties) : 
 
81126
    CT_List (size, 2, properties) {}
 
81127
  
 
81128
public:
 
81129
  /** Constructor.
 
81130
   *  \param n The sub-tree containing the name. */
 
81131
  CT_SimpleName (CTree *n) : CT_List (1, 1) { AddSon (n); }
 
81132
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
81133
  static const char *NodeId ();
 
81134
  /** Get the name of the node. Can be compared with NodeId(). */
 
81135
  const char *NodeName () const { return NodeId (); }
 
81136
  /** Get the string containing the name. */
 
81137
  virtual const char *Text () const 
 
81138
   { return Son (Sons ()-1)->token ()->text (); }
 
81139
  /** Print the name on the given stream. 
 
81140
   *  \param os The output stream. */
 
81141
  virtual void print (ostream &os) const { os << Text (); }
 
81142
  /** Get this. */
 
81143
  virtual CT_SimpleName *Name () const { return (CT_SimpleName*)this; }
 
81144
  /** Get the type of the entity represented by the name. */
 
81145
  CTypeInfo *Type () const { return type; }
 
81146
  /** Get the value of the entity represented by the name. */ 
 
81147
  CExprValue *Value () const { return value; }
 
81148
  /** Get the sematic value information of the name. */
 
81149
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
81150
  /** Get the sematic information about the name. */
 
81151
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
81152
  /** Get this. */
 
81153
  virtual CT_SimpleName *IsSimpleName () { return this; }  
 
81154
 
 
81155
public:
 
81156
  /** Own new operator reusing memory. */
 
81157
  void *operator new (size_t);
 
81158
  /** Own delete operator. */
 
81159
  void operator delete (void *);
 
81160
   private:
 
81161
  typedef CT_SimpleName CCExprResolveExpr;
 
81162
 
 
81163
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
81164
 public :
 
81165
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
81166
  typedef CT_SimpleName CExprResolveExpr;
 
81167
 
 
81168
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
81169
 public :
 
81170
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
81171
  typedef AC::TLE __AttrTypes;
 
81172
  const char *__attr_name (unsigned i) const { return 0; }
 
81173
  const void *__attr (unsigned __i) const { return 0; }
 
81174
#line 948 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81175
};
 
81176
 
 
81177
/** \class CT_SpecialName CTree.h Puma/CTree.h
 
81178
 *  Base class for tree nodes representing a special name, like destructor names. */
 
81179
 
 
81180
#line 81181 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81181
} // closed Puma
 
81182
class CCExprResolve;
 
81183
class CExprResolve;
 
81184
class WinIfExists;
 
81185
class WinImportHandler;
 
81186
class WinMacros;
 
81187
class WinAsm;
 
81188
class WinDeclSpecs;
 
81189
class WinMemberExplSpec;
 
81190
class WinTypeKeywords;
 
81191
class WinFriend;
 
81192
class ExtAC;
 
81193
class ExtACBuilderCoupling;
 
81194
class ExtACSyntaxCoupling;
 
81195
class ExtACTree;
 
81196
class ExtACKeywords;
 
81197
class ExtGnu;
 
81198
class PragmaOnceUnitState;
 
81199
class PragmaOnce;
 
81200
class CMatchSyntax;
 
81201
namespace Puma {
 
81202
 
 
81203
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81204
 
 
81205
#line 81206 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81206
} // closed Puma
 
81207
 
 
81208
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81209
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81210
#include "CCExprResolveH.ah"
 
81211
#endif
 
81212
namespace Puma {
 
81213
 
 
81214
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81215
 
 
81216
#line 81217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81217
} // closed Puma
 
81218
 
 
81219
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81220
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81221
#include "CExprResolveH.ah"
 
81222
#endif
 
81223
namespace Puma {
 
81224
 
 
81225
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81226
class CT_SpecialName : public CT_SimpleName {
 
81227
#line 81228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81228
  friend class ::CCExprResolve;
 
81229
  friend class ::CExprResolve;
 
81230
  friend class ::WinIfExists;
 
81231
  friend class ::WinImportHandler;
 
81232
  friend class ::WinMacros;
 
81233
  friend class ::WinAsm;
 
81234
  friend class ::WinDeclSpecs;
 
81235
  friend class ::WinMemberExplSpec;
 
81236
  friend class ::WinTypeKeywords;
 
81237
  friend class ::WinFriend;
 
81238
  friend class ::ExtAC;
 
81239
  friend class ::ExtACBuilderCoupling;
 
81240
  friend class ::ExtACSyntaxCoupling;
 
81241
  friend class ::ExtACTree;
 
81242
  friend class ::ExtACKeywords;
 
81243
  friend class ::ExtGnu;
 
81244
  friend class ::PragmaOnceUnitState;
 
81245
  friend class ::PragmaOnce;
 
81246
  friend class ::CMatchSyntax;
 
81247
 
 
81248
#line 952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81249
 
 
81250
  char *_name;
 
81251
  
 
81252
protected:
 
81253
  /** Constructor.
 
81254
   *  \param size The number of sub-names (for qualified names). */
 
81255
  CT_SpecialName (int size = 1) : CT_SimpleName (size), _name (0) {}
 
81256
  
 
81257
public:
 
81258
  /** Destructor. Deletes the name string. */
 
81259
  ~CT_SpecialName () { if (_name) delete[] _name; }
 
81260
  /** Get the string containing the name. */
 
81261
  const char *Text () const { return _name; }
 
81262
  /** Set the name. The name is copied.
 
81263
   *  \param n The name. */
 
81264
  void Name (const char *n) { 
 
81265
    if (n) { 
 
81266
      _name = new char[strlen(n) + 1];
 
81267
      strcpy (_name,n);
 
81268
    }
 
81269
  }
 
81270
 
 
81271
public:
 
81272
  /** Own new operator reusing memory. */
 
81273
  void *operator new (size_t);
 
81274
  /** Own delete operator. */
 
81275
  void operator delete (void *);
 
81276
   private:
 
81277
  typedef CT_SpecialName CCExprResolveExpr;
 
81278
 
 
81279
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
81280
 public :
 
81281
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
81282
  typedef CT_SpecialName CExprResolveExpr;
 
81283
 
 
81284
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
81285
 public :
 
81286
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
81287
  typedef AC::TL<char *,AC::TLE > __AttrTypes;
 
81288
  const char *__attr_name (unsigned i) const {
 
81289
    static const char *names[] = { "_name" }; return names[i];
 
81290
  }
 
81291
  const void *__attr (unsigned __i) const {
 
81292
    switch (__i) { case 0: return &_name; default: return 0; }
 
81293
  }
 
81294
#line 979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81295
};
 
81296
 
 
81297
/** \class CT_PrivateName CTree.h Puma/CTree.h
 
81298
 *  Tree node representing a private name. Private names 
 
81299
 *  are generated names for instance for abstract declarators.
 
81300
 *  Example: 
 
81301
 *  \code 
 
81302
 * void foo(int*);  // first parameter of foo has private name
 
81303
 *  \endcode */
 
81304
 
 
81305
#line 81306 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81306
} // closed Puma
 
81307
class CCExprResolve;
 
81308
class CExprResolve;
 
81309
class WinIfExists;
 
81310
class WinImportHandler;
 
81311
class WinMacros;
 
81312
class WinAsm;
 
81313
class WinDeclSpecs;
 
81314
class WinMemberExplSpec;
 
81315
class WinTypeKeywords;
 
81316
class WinFriend;
 
81317
class ExtAC;
 
81318
class ExtACBuilderCoupling;
 
81319
class ExtACSyntaxCoupling;
 
81320
class ExtACTree;
 
81321
class ExtACKeywords;
 
81322
class ExtGnu;
 
81323
class PragmaOnceUnitState;
 
81324
class PragmaOnce;
 
81325
class CMatchSyntax;
 
81326
namespace Puma {
 
81327
 
 
81328
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81329
 
 
81330
#line 81331 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81331
} // closed Puma
 
81332
 
 
81333
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81334
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81335
#include "CCExprResolveH.ah"
 
81336
#endif
 
81337
namespace Puma {
 
81338
 
 
81339
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81340
 
 
81341
#line 81342 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81342
} // closed Puma
 
81343
 
 
81344
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81345
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81346
#include "CExprResolveH.ah"
 
81347
#endif
 
81348
namespace Puma {
 
81349
 
 
81350
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81351
class CT_PrivateName : public CT_SpecialName {
 
81352
#line 81353 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81353
  friend class ::CCExprResolve;
 
81354
  friend class ::CExprResolve;
 
81355
  friend class ::WinIfExists;
 
81356
  friend class ::WinImportHandler;
 
81357
  friend class ::WinMacros;
 
81358
  friend class ::WinAsm;
 
81359
  friend class ::WinDeclSpecs;
 
81360
  friend class ::WinMemberExplSpec;
 
81361
  friend class ::WinTypeKeywords;
 
81362
  friend class ::WinFriend;
 
81363
  friend class ::ExtAC;
 
81364
  friend class ::ExtACBuilderCoupling;
 
81365
  friend class ::ExtACSyntaxCoupling;
 
81366
  friend class ::ExtACTree;
 
81367
  friend class ::ExtACKeywords;
 
81368
  friend class ::ExtGnu;
 
81369
  friend class ::PragmaOnceUnitState;
 
81370
  friend class ::PragmaOnce;
 
81371
  friend class ::CMatchSyntax;
 
81372
 
 
81373
#line 988 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81374
 
 
81375
public:
 
81376
  /** Constructor.
 
81377
   *  \param n The private (generated) name. */
 
81378
  CT_PrivateName (const char *n) { Name (n); }
 
81379
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
81380
  static const char *NodeId ();
 
81381
  /** Get the name of the node. Can be compared with NodeId(). */
 
81382
  const char *NodeName () const { return NodeId (); }
 
81383
  /** Get the number of sons. */
 
81384
  int Sons () const { return 0; }
 
81385
  /** Get the n-th son.
 
81386
   *  \param n The index of the son.
 
81387
   *  \return The n-th son or NULL. */
 
81388
  CTree *Son (int n) const { return (CTree*)0; }
 
81389
 
 
81390
public:
 
81391
  /** Own new operator reusing memory. */
 
81392
  void *operator new (size_t);
 
81393
  /** Own delete operator. */
 
81394
  void operator delete (void *);
 
81395
   private:
 
81396
  typedef CT_PrivateName CCExprResolveExpr;
 
81397
 
 
81398
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
81399
 public :
 
81400
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
81401
  typedef CT_PrivateName CExprResolveExpr;
 
81402
 
 
81403
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
81404
 public :
 
81405
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
81406
  typedef AC::TLE __AttrTypes;
 
81407
  const char *__attr_name (unsigned i) const { return 0; }
 
81408
  const void *__attr (unsigned __i) const { return 0; }
 
81409
#line 1009 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81410
};
 
81411
 
 
81412
/** \class CT_DestructorName CTree.h Puma/CTree.h
 
81413
 *  Tree node representing a destructor name.
 
81414
 *  Example: \code ~X \endcode */
 
81415
 
 
81416
#line 81417 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81417
} // closed Puma
 
81418
class CCExprResolve;
 
81419
class CExprResolve;
 
81420
class WinIfExists;
 
81421
class WinImportHandler;
 
81422
class WinMacros;
 
81423
class WinAsm;
 
81424
class WinDeclSpecs;
 
81425
class WinMemberExplSpec;
 
81426
class WinTypeKeywords;
 
81427
class WinFriend;
 
81428
class ExtAC;
 
81429
class ExtACBuilderCoupling;
 
81430
class ExtACSyntaxCoupling;
 
81431
class ExtACTree;
 
81432
class ExtACKeywords;
 
81433
class ExtGnu;
 
81434
class PragmaOnceUnitState;
 
81435
class PragmaOnce;
 
81436
class CMatchSyntax;
 
81437
namespace Puma {
 
81438
 
 
81439
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81440
 
 
81441
#line 81442 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81442
} // closed Puma
 
81443
 
 
81444
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81445
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81446
#include "CCExprResolveH.ah"
 
81447
#endif
 
81448
namespace Puma {
 
81449
 
 
81450
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81451
 
 
81452
#line 81453 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81453
} // closed Puma
 
81454
 
 
81455
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81456
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81457
#include "CExprResolveH.ah"
 
81458
#endif
 
81459
namespace Puma {
 
81460
 
 
81461
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81462
class CT_DestructorName : public CT_SpecialName {
 
81463
#line 81464 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81464
  friend class ::CCExprResolve;
 
81465
  friend class ::CExprResolve;
 
81466
  friend class ::WinIfExists;
 
81467
  friend class ::WinImportHandler;
 
81468
  friend class ::WinMacros;
 
81469
  friend class ::WinAsm;
 
81470
  friend class ::WinDeclSpecs;
 
81471
  friend class ::WinMemberExplSpec;
 
81472
  friend class ::WinTypeKeywords;
 
81473
  friend class ::WinFriend;
 
81474
  friend class ::ExtAC;
 
81475
  friend class ::ExtACBuilderCoupling;
 
81476
  friend class ::ExtACSyntaxCoupling;
 
81477
  friend class ::ExtACTree;
 
81478
  friend class ::ExtACKeywords;
 
81479
  friend class ::ExtGnu;
 
81480
  friend class ::PragmaOnceUnitState;
 
81481
  friend class ::PragmaOnce;
 
81482
  friend class ::CMatchSyntax;
 
81483
 
 
81484
#line 1014 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81485
 
 
81486
public:
 
81487
  /** Constructor.
 
81488
   *  \param t The tilde operator.
 
81489
   *  \param n The class name. */
 
81490
  CT_DestructorName (CTree *t, CTree *n);
 
81491
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
81492
  static const char *NodeId ();
 
81493
  /** Get the name of the node. Can be compared with NodeId(). */
 
81494
  const char *NodeName () const { return NodeId (); }
 
81495
 
 
81496
public:
 
81497
  /** Own new operator reusing memory. */
 
81498
  void *operator new (size_t);
 
81499
  /** Own delete operator. */
 
81500
  void operator delete (void *);
 
81501
   private:
 
81502
  typedef CT_DestructorName CCExprResolveExpr;
 
81503
 
 
81504
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
81505
 public :
 
81506
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
81507
  typedef CT_DestructorName CExprResolveExpr;
 
81508
 
 
81509
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
81510
 public :
 
81511
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
81512
  typedef AC::TLE __AttrTypes;
 
81513
  const char *__attr_name (unsigned i) const { return 0; }
 
81514
  const void *__attr (unsigned __i) const { return 0; }
 
81515
#line 1030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81516
};
 
81517
 
 
81518
/** \class CT_TemplateName CTree.h Puma/CTree.h
 
81519
 *  Tree node representing a template name.
 
81520
 *  Example: \code X<T> \endcode */
 
81521
 
 
81522
#line 81523 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81523
} // closed Puma
 
81524
class CCExprResolve;
 
81525
class CExprResolve;
 
81526
class WinIfExists;
 
81527
class WinImportHandler;
 
81528
class WinMacros;
 
81529
class WinAsm;
 
81530
class WinDeclSpecs;
 
81531
class WinMemberExplSpec;
 
81532
class WinTypeKeywords;
 
81533
class WinFriend;
 
81534
class ExtAC;
 
81535
class ExtACBuilderCoupling;
 
81536
class ExtACSyntaxCoupling;
 
81537
class ExtACTree;
 
81538
class ExtACKeywords;
 
81539
class ExtGnu;
 
81540
class PragmaOnceUnitState;
 
81541
class PragmaOnce;
 
81542
class CMatchSyntax;
 
81543
namespace Puma {
 
81544
 
 
81545
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81546
 
 
81547
#line 81548 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81548
} // closed Puma
 
81549
 
 
81550
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81551
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81552
#include "CCExprResolveH.ah"
 
81553
#endif
 
81554
namespace Puma {
 
81555
 
 
81556
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81557
 
 
81558
#line 81559 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81559
} // closed Puma
 
81560
 
 
81561
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81562
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81563
#include "CExprResolveH.ah"
 
81564
#endif
 
81565
namespace Puma {
 
81566
 
 
81567
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81568
class CT_TemplateName : public CT_SpecialName {
 
81569
#line 81570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81570
  friend class ::CCExprResolve;
 
81571
  friend class ::CExprResolve;
 
81572
  friend class ::WinIfExists;
 
81573
  friend class ::WinImportHandler;
 
81574
  friend class ::WinMacros;
 
81575
  friend class ::WinAsm;
 
81576
  friend class ::WinDeclSpecs;
 
81577
  friend class ::WinMemberExplSpec;
 
81578
  friend class ::WinTypeKeywords;
 
81579
  friend class ::WinFriend;
 
81580
  friend class ::ExtAC;
 
81581
  friend class ::ExtACBuilderCoupling;
 
81582
  friend class ::ExtACSyntaxCoupling;
 
81583
  friend class ::ExtACTree;
 
81584
  friend class ::ExtACKeywords;
 
81585
  friend class ::ExtGnu;
 
81586
  friend class ::PragmaOnceUnitState;
 
81587
  friend class ::PragmaOnce;
 
81588
  friend class ::CMatchSyntax;
 
81589
 
 
81590
#line 1035 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81591
 
 
81592
public:
 
81593
  /** Constructor.
 
81594
   *  \param n The template class or function name.
 
81595
   *  \param a The template argument list. */
 
81596
  CT_TemplateName (CTree *n, CTree *a) 
 
81597
   { AddSon (n); AddSon (a); }
 
81598
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
81599
  static const char *NodeId ();
 
81600
  /** Get the name of the node. Can be compared with NodeId(). */
 
81601
  const char *NodeName () const { return NodeId (); }
 
81602
  /** Get the template argument list. */
 
81603
  CT_TemplateArgList *Arguments () const 
 
81604
   { return (CT_TemplateArgList*)Son (Sons ()-1); }
 
81605
  /** Get the template class or function name. */
 
81606
  CT_SimpleName *TemplateName () const 
 
81607
   { return (CT_SimpleName*)Son (Sons ()-2); }
 
81608
  // may change in the future
 
81609
  const char *Text () const { return TemplateName ()->Text (); }
 
81610
 
 
81611
public:
 
81612
  /** Own new operator reusing memory. */
 
81613
  void *operator new (size_t);
 
81614
  /** Own delete operator. */
 
81615
  void operator delete (void *);
 
81616
   private:
 
81617
  typedef CT_TemplateName CCExprResolveExpr;
 
81618
 
 
81619
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
81620
 public :
 
81621
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
81622
  typedef CT_TemplateName CExprResolveExpr;
 
81623
 
 
81624
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
81625
 public :
 
81626
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
81627
  typedef AC::TLE __AttrTypes;
 
81628
  const char *__attr_name (unsigned i) const { return 0; }
 
81629
  const void *__attr (unsigned __i) const { return 0; }
 
81630
#line 1060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81631
};
 
81632
 
 
81633
/** \class CT_OperatorName CTree.h Puma/CTree.h
 
81634
 *  Tree node representing the name of an overloaded operator. 
 
81635
 *  Example: \code operator== \endcode */
 
81636
 
 
81637
#line 81638 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81638
} // closed Puma
 
81639
class CCExprResolve;
 
81640
class CExprResolve;
 
81641
class WinIfExists;
 
81642
class WinImportHandler;
 
81643
class WinMacros;
 
81644
class WinAsm;
 
81645
class WinDeclSpecs;
 
81646
class WinMemberExplSpec;
 
81647
class WinTypeKeywords;
 
81648
class WinFriend;
 
81649
class ExtAC;
 
81650
class ExtACBuilderCoupling;
 
81651
class ExtACSyntaxCoupling;
 
81652
class ExtACTree;
 
81653
class ExtACKeywords;
 
81654
class ExtGnu;
 
81655
class PragmaOnceUnitState;
 
81656
class PragmaOnce;
 
81657
class CMatchSyntax;
 
81658
namespace Puma {
 
81659
 
 
81660
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81661
 
 
81662
#line 81663 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81663
} // closed Puma
 
81664
 
 
81665
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81666
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81667
#include "CCExprResolveH.ah"
 
81668
#endif
 
81669
namespace Puma {
 
81670
 
 
81671
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81672
 
 
81673
#line 81674 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81674
} // closed Puma
 
81675
 
 
81676
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81677
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81678
#include "CExprResolveH.ah"
 
81679
#endif
 
81680
namespace Puma {
 
81681
 
 
81682
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81683
class CT_OperatorName : public CT_SpecialName {
 
81684
#line 81685 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81685
  friend class ::CCExprResolve;
 
81686
  friend class ::CExprResolve;
 
81687
  friend class ::WinIfExists;
 
81688
  friend class ::WinImportHandler;
 
81689
  friend class ::WinMacros;
 
81690
  friend class ::WinAsm;
 
81691
  friend class ::WinDeclSpecs;
 
81692
  friend class ::WinMemberExplSpec;
 
81693
  friend class ::WinTypeKeywords;
 
81694
  friend class ::WinFriend;
 
81695
  friend class ::ExtAC;
 
81696
  friend class ::ExtACBuilderCoupling;
 
81697
  friend class ::ExtACSyntaxCoupling;
 
81698
  friend class ::ExtACTree;
 
81699
  friend class ::ExtACKeywords;
 
81700
  friend class ::ExtGnu;
 
81701
  friend class ::PragmaOnceUnitState;
 
81702
  friend class ::PragmaOnce;
 
81703
  friend class ::CMatchSyntax;
 
81704
 
 
81705
#line 1065 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81706
 
 
81707
  int _oper;
 
81708
 
 
81709
public:
 
81710
  /** Complex operator types. */
 
81711
  enum { 
 
81712
    FCT_CALL = -100,  /** Function call operator, i.e. (). */
 
81713
    SUBSCRIPT,        /** Array subscript operator, i.e. []. */
 
81714
    NEW_ARRAY,        /** New array operator, i.e. new[]. */
 
81715
    DEL_ARRAY         /** Delete array operator, i.e. delete[]. */
 
81716
  };
 
81717
 
 
81718
public:
 
81719
  /** Constructor.
 
81720
   *  \param op The token containing the operator. */
 
81721
  CT_OperatorName (CTree *op);
 
81722
  /** Constructor.
 
81723
   *  \param f The operator function keyword 'operator'.
 
81724
   *  \param op The token containing the operator. 
 
81725
   *  \param o The token of '[' or '('.
 
81726
   *  \param c The token of ']' or ')'. */
 
81727
  CT_OperatorName (CTree *f, CTree *op, CTree *o, CTree *c);
 
81728
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
81729
  static const char *NodeId ();
 
81730
  /** Get the name of the node. Can be compared with NodeId(). */
 
81731
  const char *NodeName () const { return NodeId (); }
 
81732
  /** Get the operator type (either the token type or one of 
 
81733
   *  the complex operator types). */
 
81734
  int Operator () const { return _oper; }
 
81735
 
 
81736
public:
 
81737
  /** Own new operator reusing memory. */
 
81738
  void *operator new (size_t);
 
81739
  /** Own delete operator. */
 
81740
  void operator delete (void *);
 
81741
   private:
 
81742
  typedef CT_OperatorName CCExprResolveExpr;
 
81743
 
 
81744
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
81745
 public :
 
81746
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
81747
  typedef CT_OperatorName CExprResolveExpr;
 
81748
 
 
81749
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
81750
 public :
 
81751
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
81752
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
81753
  const char *__attr_name (unsigned i) const {
 
81754
    static const char *names[] = { "_oper" }; return names[i];
 
81755
  }
 
81756
  const void *__attr (unsigned __i) const {
 
81757
    switch (__i) { case 0: return &_oper; default: return 0; }
 
81758
  }
 
81759
#line 1100 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81760
};
 
81761
 
 
81762
/** \class CT_ConversionName CTree.h Puma/CTree.h
 
81763
 *  Tree node representing the name of a conversion function.
 
81764
 *  Example: \code operator int* \endcode */
 
81765
 
 
81766
#line 81767 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81767
} // closed Puma
 
81768
class CCExprResolve;
 
81769
class CExprResolve;
 
81770
class WinIfExists;
 
81771
class WinImportHandler;
 
81772
class WinMacros;
 
81773
class WinAsm;
 
81774
class WinDeclSpecs;
 
81775
class WinMemberExplSpec;
 
81776
class WinTypeKeywords;
 
81777
class WinFriend;
 
81778
class ExtAC;
 
81779
class ExtACBuilderCoupling;
 
81780
class ExtACSyntaxCoupling;
 
81781
class ExtACTree;
 
81782
class ExtACKeywords;
 
81783
class ExtGnu;
 
81784
class PragmaOnceUnitState;
 
81785
class PragmaOnce;
 
81786
class CMatchSyntax;
 
81787
namespace Puma {
 
81788
 
 
81789
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81790
 
 
81791
#line 81792 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81792
} // closed Puma
 
81793
 
 
81794
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81795
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81796
#include "CCExprResolveH.ah"
 
81797
#endif
 
81798
namespace Puma {
 
81799
 
 
81800
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81801
 
 
81802
#line 81803 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81803
} // closed Puma
 
81804
 
 
81805
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81806
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81807
#include "CExprResolveH.ah"
 
81808
#endif
 
81809
namespace Puma {
 
81810
 
 
81811
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81812
class CT_ConversionName : public CT_SpecialName {
 
81813
#line 81814 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81814
  friend class ::CCExprResolve;
 
81815
  friend class ::CExprResolve;
 
81816
  friend class ::WinIfExists;
 
81817
  friend class ::WinImportHandler;
 
81818
  friend class ::WinMacros;
 
81819
  friend class ::WinAsm;
 
81820
  friend class ::WinDeclSpecs;
 
81821
  friend class ::WinMemberExplSpec;
 
81822
  friend class ::WinTypeKeywords;
 
81823
  friend class ::WinFriend;
 
81824
  friend class ::ExtAC;
 
81825
  friend class ::ExtACBuilderCoupling;
 
81826
  friend class ::ExtACSyntaxCoupling;
 
81827
  friend class ::ExtACTree;
 
81828
  friend class ::ExtACKeywords;
 
81829
  friend class ::ExtGnu;
 
81830
  friend class ::PragmaOnceUnitState;
 
81831
  friend class ::PragmaOnce;
 
81832
  friend class ::CMatchSyntax;
 
81833
 
 
81834
#line 1105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81835
 
 
81836
public:
 
81837
  /** Constructor.
 
81838
   *  \param f The operator function keyword 'operator'.
 
81839
   *  \param t The sub-tree containing the conversion type. */
 
81840
  CT_ConversionName (CTree *f, CTree *t);
 
81841
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
81842
  static const char *NodeId ();
 
81843
  /** Get the name of the node. Can be compared with NodeId(). */
 
81844
  const char *NodeName () const { return NodeId (); }
 
81845
  /** Get the conversion type. */
 
81846
  CT_NamedType *TypeName () const { return (CT_NamedType*)Son (Sons ()-1); }
 
81847
 
 
81848
public:
 
81849
  /** Own new operator reusing memory. */
 
81850
  void *operator new (size_t);
 
81851
  /** Own delete operator. */
 
81852
  void operator delete (void *);
 
81853
   private:
 
81854
  typedef CT_ConversionName CCExprResolveExpr;
 
81855
 
 
81856
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
81857
 public :
 
81858
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
81859
  typedef CT_ConversionName CExprResolveExpr;
 
81860
 
 
81861
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
81862
 public :
 
81863
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
81864
  typedef AC::TLE __AttrTypes;
 
81865
  const char *__attr_name (unsigned i) const { return 0; }
 
81866
  const void *__attr (unsigned __i) const { return 0; }
 
81867
#line 1123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81868
};
 
81869
 
 
81870
/** \class CT_QualName CTree.h Puma/CTree.h
 
81871
 *  Tree node representing a qualified name.
 
81872
 *  Example: \code X::Y::Z \endcode */
 
81873
 
 
81874
#line 81875 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81875
} // closed Puma
 
81876
class CCExprResolve;
 
81877
class CExprResolve;
 
81878
class WinIfExists;
 
81879
class WinImportHandler;
 
81880
class WinMacros;
 
81881
class WinAsm;
 
81882
class WinDeclSpecs;
 
81883
class WinMemberExplSpec;
 
81884
class WinTypeKeywords;
 
81885
class WinFriend;
 
81886
class ExtAC;
 
81887
class ExtACBuilderCoupling;
 
81888
class ExtACSyntaxCoupling;
 
81889
class ExtACTree;
 
81890
class ExtACKeywords;
 
81891
class ExtGnu;
 
81892
class PragmaOnceUnitState;
 
81893
class PragmaOnce;
 
81894
class CMatchSyntax;
 
81895
namespace Puma {
 
81896
 
 
81897
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81898
 
 
81899
#line 81900 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81900
} // closed Puma
 
81901
 
 
81902
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81903
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
81904
#include "CCExprResolveH.ah"
 
81905
#endif
 
81906
namespace Puma {
 
81907
 
 
81908
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81909
 
 
81910
#line 81911 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81911
} // closed Puma
 
81912
 
 
81913
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81914
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
81915
#include "CExprResolveH.ah"
 
81916
#endif
 
81917
namespace Puma {
 
81918
 
 
81919
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81920
class CT_QualName : public CT_SimpleName {
 
81921
#line 81922 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81922
  friend class ::CCExprResolve;
 
81923
  friend class ::CExprResolve;
 
81924
  friend class ::WinIfExists;
 
81925
  friend class ::WinImportHandler;
 
81926
  friend class ::WinMacros;
 
81927
  friend class ::WinAsm;
 
81928
  friend class ::WinDeclSpecs;
 
81929
  friend class ::WinMemberExplSpec;
 
81930
  friend class ::WinTypeKeywords;
 
81931
  friend class ::WinFriend;
 
81932
  friend class ::ExtAC;
 
81933
  friend class ::ExtACBuilderCoupling;
 
81934
  friend class ::ExtACSyntaxCoupling;
 
81935
  friend class ::ExtACTree;
 
81936
  friend class ::ExtACKeywords;
 
81937
  friend class ::ExtGnu;
 
81938
  friend class ::PragmaOnceUnitState;
 
81939
  friend class ::PragmaOnce;
 
81940
  friend class ::CMatchSyntax;
 
81941
 
 
81942
#line 1128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81943
 
 
81944
public:
 
81945
  /** Constructor.
 
81946
   *  \param size The initial number sub-names plus separators. */
 
81947
  CT_QualName (int size = 3) : 
 
81948
    CT_SimpleName (size, CT_List::SEPARATORS) {}
 
81949
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
81950
  static const char *NodeId ();
 
81951
  /** Get the name of the node. Can be compared with NodeId(). */
 
81952
  const char *NodeName () const { return NodeId (); }
 
81953
  /** Print the qualified name on the given stream. 
 
81954
   *  \param os The output stream. */
 
81955
  void print (ostream &os) const;
 
81956
  /** Get the last name of the qualified name, e.g. Z of qualified name X::Y::Z. */
 
81957
  CT_SimpleName *Name () const { return (CT_SimpleName*)Son (Sons ()-1); }
 
81958
  /** Get the string containing the last name of the qualified name. */
 
81959
  const char *Text () const { return Name ()->Text (); }
 
81960
  /** Get the type of the last name. */
 
81961
  CTypeInfo *Type () const { return Name ()->Type (); }
 
81962
  /** Get the value of the last name. */
 
81963
  CExprValue *Value () const { return Name ()->Value (); }
 
81964
  /** Get the semantic value object of the last name. */
 
81965
  CSemValue *SemValue () const { return Name ()->SemValue (); }
 
81966
  /** Get the semantic information of the last name. */
 
81967
  CSemObject *SemObject () const { return Name ()->SemObject (); }
 
81968
 
 
81969
public:
 
81970
  /** Own new operator reusing memory. */
 
81971
  void *operator new (size_t);
 
81972
  /** Own delete operator. */
 
81973
  void operator delete (void *);
 
81974
   private:
 
81975
  typedef CT_QualName CCExprResolveExpr;
 
81976
 
 
81977
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
81978
 public :
 
81979
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
81980
  typedef CT_QualName CExprResolveExpr;
 
81981
 
 
81982
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
81983
 public :
 
81984
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
81985
  typedef AC::TLE __AttrTypes;
 
81986
  const char *__attr_name (unsigned i) const { return 0; }
 
81987
  const void *__attr (unsigned __i) const { return 0; }
 
81988
#line 1159 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
81989
};
 
81990
 
 
81991
/** \class CT_RootQualName CTree.h Puma/CTree.h
 
81992
 *  Tree node representing a qualified name with introducing name separator.
 
81993
 *  Example: \code ::X::Y::Z \endcode */
 
81994
 
 
81995
#line 81996 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
81996
} // closed Puma
 
81997
class CCExprResolve;
 
81998
class CExprResolve;
 
81999
class WinIfExists;
 
82000
class WinImportHandler;
 
82001
class WinMacros;
 
82002
class WinAsm;
 
82003
class WinDeclSpecs;
 
82004
class WinMemberExplSpec;
 
82005
class WinTypeKeywords;
 
82006
class WinFriend;
 
82007
class ExtAC;
 
82008
class ExtACBuilderCoupling;
 
82009
class ExtACSyntaxCoupling;
 
82010
class ExtACTree;
 
82011
class ExtACKeywords;
 
82012
class ExtGnu;
 
82013
class PragmaOnceUnitState;
 
82014
class PragmaOnce;
 
82015
class CMatchSyntax;
 
82016
namespace Puma {
 
82017
 
 
82018
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82019
 
 
82020
#line 82021 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82021
} // closed Puma
 
82022
 
 
82023
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82024
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82025
#include "CCExprResolveH.ah"
 
82026
#endif
 
82027
namespace Puma {
 
82028
 
 
82029
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82030
 
 
82031
#line 82032 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82032
} // closed Puma
 
82033
 
 
82034
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82035
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82036
#include "CExprResolveH.ah"
 
82037
#endif
 
82038
namespace Puma {
 
82039
 
 
82040
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82041
class CT_RootQualName : public CT_QualName {
 
82042
#line 82043 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82043
  friend class ::CCExprResolve;
 
82044
  friend class ::CExprResolve;
 
82045
  friend class ::WinIfExists;
 
82046
  friend class ::WinImportHandler;
 
82047
  friend class ::WinMacros;
 
82048
  friend class ::WinAsm;
 
82049
  friend class ::WinDeclSpecs;
 
82050
  friend class ::WinMemberExplSpec;
 
82051
  friend class ::WinTypeKeywords;
 
82052
  friend class ::WinFriend;
 
82053
  friend class ::ExtAC;
 
82054
  friend class ::ExtACBuilderCoupling;
 
82055
  friend class ::ExtACSyntaxCoupling;
 
82056
  friend class ::ExtACTree;
 
82057
  friend class ::ExtACKeywords;
 
82058
  friend class ::ExtGnu;
 
82059
  friend class ::PragmaOnceUnitState;
 
82060
  friend class ::PragmaOnce;
 
82061
  friend class ::CMatchSyntax;
 
82062
 
 
82063
#line 1164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82064
 
 
82065
public:
 
82066
  /** Constructor.
 
82067
   *  \param size Initial number of sub-name plus separator. */
 
82068
  CT_RootQualName (int size = 2) : 
 
82069
    CT_QualName (size) { AddProperties (INTRO); }
 
82070
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
82071
  static const char *NodeId ();
 
82072
  /** Get the name of the node. Can be compared with NodeId(). */
 
82073
  const char *NodeName () const { return NodeId (); }
 
82074
 
 
82075
public:
 
82076
  /** Own new operator reusing memory. */
 
82077
  void *operator new (size_t);
 
82078
  /** Own delete operator. */
 
82079
  void operator delete (void *);
 
82080
   private:
 
82081
  typedef CT_RootQualName CCExprResolveExpr;
 
82082
 
 
82083
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
82084
 public :
 
82085
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
82086
  typedef CT_RootQualName CExprResolveExpr;
 
82087
 
 
82088
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
82089
 public :
 
82090
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
82091
  typedef AC::TLE __AttrTypes;
 
82092
  const char *__attr_name (unsigned i) const { return 0; }
 
82093
  const void *__attr (unsigned __i) const { return 0; }
 
82094
#line 1180 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82095
};
 
82096
 
 
82097
/** \class CT_BinaryExpr CTree.h Puma/CTree.h
 
82098
 *  Tree node representing a binary expression.
 
82099
 *  Example: \code a+b \endcode */
 
82100
 
 
82101
#line 82102 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82102
} // closed Puma
 
82103
class CCExprResolve;
 
82104
class CExprResolve;
 
82105
class WinIfExists;
 
82106
class WinImportHandler;
 
82107
class WinMacros;
 
82108
class WinAsm;
 
82109
class WinDeclSpecs;
 
82110
class WinMemberExplSpec;
 
82111
class WinTypeKeywords;
 
82112
class WinFriend;
 
82113
class ExtAC;
 
82114
class ExtACBuilderCoupling;
 
82115
class ExtACSyntaxCoupling;
 
82116
class ExtACTree;
 
82117
class ExtACKeywords;
 
82118
class ExtGnu;
 
82119
class PragmaOnceUnitState;
 
82120
class PragmaOnce;
 
82121
class CMatchSyntax;
 
82122
namespace Puma {
 
82123
 
 
82124
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82125
 
 
82126
#line 82127 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82127
} // closed Puma
 
82128
 
 
82129
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82130
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82131
#include "CCExprResolveH.ah"
 
82132
#endif
 
82133
namespace Puma {
 
82134
 
 
82135
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82136
 
 
82137
#line 82138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82138
} // closed Puma
 
82139
 
 
82140
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82141
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82142
#include "CExprResolveH.ah"
 
82143
#endif
 
82144
namespace Puma {
 
82145
 
 
82146
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82147
class CT_BinaryExpr : public CT_Call {
 
82148
#line 82149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82149
  friend class ::CCExprResolve;
 
82150
  friend class ::CExprResolve;
 
82151
  friend class ::WinIfExists;
 
82152
  friend class ::WinImportHandler;
 
82153
  friend class ::WinMacros;
 
82154
  friend class ::WinAsm;
 
82155
  friend class ::WinDeclSpecs;
 
82156
  friend class ::WinMemberExplSpec;
 
82157
  friend class ::WinTypeKeywords;
 
82158
  friend class ::WinFriend;
 
82159
  friend class ::ExtAC;
 
82160
  friend class ::ExtACBuilderCoupling;
 
82161
  friend class ::ExtACSyntaxCoupling;
 
82162
  friend class ::ExtACTree;
 
82163
  friend class ::ExtACKeywords;
 
82164
  friend class ::ExtGnu;
 
82165
  friend class ::PragmaOnceUnitState;
 
82166
  friend class ::PragmaOnce;
 
82167
  friend class ::CMatchSyntax;
 
82168
 
 
82169
#line 1185 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82170
 
 
82171
  CTree *sons[3]; // expr, oper, expr
 
82172
 
 
82173
public:
 
82174
  /** Constructor. 
 
82175
   *  \param l Left hand side of the expression. 
 
82176
   *  \param o The operator token. 
 
82177
   *  \param r Right hand side of the expression. */
 
82178
  CT_BinaryExpr (CTree *l, CTree *o, CTree *r) {
 
82179
    AddSon (sons[0], l); AddSon (sons[1], o); AddSon (sons[2], r);
 
82180
  }
 
82181
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
82182
  static const char *NodeId ();
 
82183
  /** Get the name of the node. Can be compared with NodeId(). */
 
82184
  const char *NodeName () const { return NodeId (); }
 
82185
  /** Get the number of sons. */
 
82186
  int Sons () const { return 3; }
 
82187
  /** Get the n-th son.
 
82188
   *  \param n The index of the son.
 
82189
   *  \return The n-th son or NULL. */
 
82190
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
82191
  /** Replace a son.
 
82192
   *  \param old_son The son to replace.
 
82193
   *  \param new_son The new son. */
 
82194
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
82195
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
82196
  }
 
82197
   private:
 
82198
  typedef CT_BinaryExpr CCExprResolveExpr;
 
82199
 
 
82200
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
82201
 public :
 
82202
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
82203
  typedef CT_BinaryExpr CExprResolveExpr;
 
82204
 
 
82205
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
82206
 public :
 
82207
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
82208
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
82209
  const char *__attr_name (unsigned i) const {
 
82210
    static const char *names[] = { "sons" }; return names[i];
 
82211
  }
 
82212
  const void *__attr (unsigned __i) const {
 
82213
    switch (__i) { case 0: return &sons; default: return 0; }
 
82214
  }
 
82215
#line 1212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82216
};
 
82217
 
 
82218
/** \class CT_MembPtrExpr CTree.h Puma/CTree.h
 
82219
 *  Tree node representing a member pointer expression.
 
82220
 *  Example: \code a->b \endcode */
 
82221
 
 
82222
#line 82223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82223
} // closed Puma
 
82224
class CCExprResolve;
 
82225
class CExprResolve;
 
82226
class WinIfExists;
 
82227
class WinImportHandler;
 
82228
class WinMacros;
 
82229
class WinAsm;
 
82230
class WinDeclSpecs;
 
82231
class WinMemberExplSpec;
 
82232
class WinTypeKeywords;
 
82233
class WinFriend;
 
82234
class ExtAC;
 
82235
class ExtACBuilderCoupling;
 
82236
class ExtACSyntaxCoupling;
 
82237
class ExtACTree;
 
82238
class ExtACKeywords;
 
82239
class ExtGnu;
 
82240
class PragmaOnceUnitState;
 
82241
class PragmaOnce;
 
82242
class CMatchSyntax;
 
82243
namespace Puma {
 
82244
 
 
82245
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82246
 
 
82247
#line 82248 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82248
} // closed Puma
 
82249
 
 
82250
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82251
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82252
#include "CCExprResolveH.ah"
 
82253
#endif
 
82254
namespace Puma {
 
82255
 
 
82256
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82257
 
 
82258
#line 82259 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82259
} // closed Puma
 
82260
 
 
82261
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82262
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82263
#include "CExprResolveH.ah"
 
82264
#endif
 
82265
namespace Puma {
 
82266
 
 
82267
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82268
class CT_MembPtrExpr : public CT_Expression, public CSemObject {
 
82269
#line 82270 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82270
  friend class ::CCExprResolve;
 
82271
  friend class ::CExprResolve;
 
82272
  friend class ::WinIfExists;
 
82273
  friend class ::WinImportHandler;
 
82274
  friend class ::WinMacros;
 
82275
  friend class ::WinAsm;
 
82276
  friend class ::WinDeclSpecs;
 
82277
  friend class ::WinMemberExplSpec;
 
82278
  friend class ::WinTypeKeywords;
 
82279
  friend class ::WinFriend;
 
82280
  friend class ::ExtAC;
 
82281
  friend class ::ExtACBuilderCoupling;
 
82282
  friend class ::ExtACSyntaxCoupling;
 
82283
  friend class ::ExtACTree;
 
82284
  friend class ::ExtACKeywords;
 
82285
  friend class ::ExtGnu;
 
82286
  friend class ::PragmaOnceUnitState;
 
82287
  friend class ::PragmaOnce;
 
82288
  friend class ::CMatchSyntax;
 
82289
 
 
82290
#line 1217 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82291
 
 
82292
  CTree *sons[3]; // expr, oper, expr
 
82293
  
 
82294
public:
 
82295
  /** Constructor.
 
82296
   *  \param e Expression on which to call the member.
 
82297
   *  \param o The arrow operator token.
 
82298
   *  \param i The member name. */
 
82299
  CT_MembPtrExpr (CTree *e, CTree *o, CTree *i) {
 
82300
    AddSon (sons[0], e); AddSon (sons[1], o); AddSon (sons[2], i);
 
82301
  }
 
82302
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
82303
  static const char *NodeId ();
 
82304
  /** Get the name of the node. Can be compared with NodeId(). */
 
82305
  const char *NodeName () const { return NodeId (); }
 
82306
  /** Get the number of sons. */
 
82307
  int Sons () const { return 3; }
 
82308
  /** Get the n-th son.
 
82309
   *  \param n The index of the son.
 
82310
   *  \return The n-th son or NULL. */
 
82311
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
82312
  /** Replace a son.
 
82313
   *  \param old_son The son to replace.
 
82314
   *  \param new_son The new son. */
 
82315
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
82316
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
82317
  }
 
82318
   private:
 
82319
  typedef CT_MembPtrExpr CCExprResolveExpr;
 
82320
 
 
82321
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
82322
 public :
 
82323
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
82324
  typedef CT_MembPtrExpr CExprResolveExpr;
 
82325
 
 
82326
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
82327
 public :
 
82328
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
82329
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
82330
  const char *__attr_name (unsigned i) const {
 
82331
    static const char *names[] = { "sons" }; return names[i];
 
82332
  }
 
82333
  const void *__attr (unsigned __i) const {
 
82334
    switch (__i) { case 0: return &sons; default: return 0; }
 
82335
  }
 
82336
#line 1244 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82337
};
 
82338
 
 
82339
/** \class CT_MembRefExpr CTree.h Puma/CTree.h
 
82340
 *  Tree node representing a member reference expression.
 
82341
 *  Example: \code a.b \endcode */
 
82342
 
 
82343
#line 82344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82344
} // closed Puma
 
82345
class CCExprResolve;
 
82346
class CExprResolve;
 
82347
class WinIfExists;
 
82348
class WinImportHandler;
 
82349
class WinMacros;
 
82350
class WinAsm;
 
82351
class WinDeclSpecs;
 
82352
class WinMemberExplSpec;
 
82353
class WinTypeKeywords;
 
82354
class WinFriend;
 
82355
class ExtAC;
 
82356
class ExtACBuilderCoupling;
 
82357
class ExtACSyntaxCoupling;
 
82358
class ExtACTree;
 
82359
class ExtACKeywords;
 
82360
class ExtGnu;
 
82361
class PragmaOnceUnitState;
 
82362
class PragmaOnce;
 
82363
class CMatchSyntax;
 
82364
namespace Puma {
 
82365
 
 
82366
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82367
 
 
82368
#line 82369 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82369
} // closed Puma
 
82370
 
 
82371
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82372
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82373
#include "CCExprResolveH.ah"
 
82374
#endif
 
82375
namespace Puma {
 
82376
 
 
82377
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82378
 
 
82379
#line 82380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82380
} // closed Puma
 
82381
 
 
82382
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82383
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82384
#include "CExprResolveH.ah"
 
82385
#endif
 
82386
namespace Puma {
 
82387
 
 
82388
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82389
class CT_MembRefExpr : public CT_MembPtrExpr {
 
82390
#line 82391 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82391
  friend class ::CCExprResolve;
 
82392
  friend class ::CExprResolve;
 
82393
  friend class ::WinIfExists;
 
82394
  friend class ::WinImportHandler;
 
82395
  friend class ::WinMacros;
 
82396
  friend class ::WinAsm;
 
82397
  friend class ::WinDeclSpecs;
 
82398
  friend class ::WinMemberExplSpec;
 
82399
  friend class ::WinTypeKeywords;
 
82400
  friend class ::WinFriend;
 
82401
  friend class ::ExtAC;
 
82402
  friend class ::ExtACBuilderCoupling;
 
82403
  friend class ::ExtACSyntaxCoupling;
 
82404
  friend class ::ExtACTree;
 
82405
  friend class ::ExtACKeywords;
 
82406
  friend class ::ExtGnu;
 
82407
  friend class ::PragmaOnceUnitState;
 
82408
  friend class ::PragmaOnce;
 
82409
  friend class ::CMatchSyntax;
 
82410
 
 
82411
#line 1249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82412
 
 
82413
public:
 
82414
  /** Constructor.
 
82415
   *  \param e Expression on which to call the member.
 
82416
   *  \param o The dot operator.
 
82417
   *  \param i The member name. */
 
82418
  CT_MembRefExpr (CTree *e, CTree *o, CTree *i) :
 
82419
    CT_MembPtrExpr (e, o, i) {}
 
82420
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
82421
  static const char *NodeId ();
 
82422
  /** Get the name of the node. Can be compared with NodeId(). */
 
82423
  const char *NodeName () const { return NodeId (); }
 
82424
   private:
 
82425
  typedef CT_MembRefExpr CCExprResolveExpr;
 
82426
 
 
82427
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
82428
 public :
 
82429
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
82430
  typedef CT_MembRefExpr CExprResolveExpr;
 
82431
 
 
82432
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
82433
 public :
 
82434
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
82435
  typedef AC::TLE __AttrTypes;
 
82436
  const char *__attr_name (unsigned i) const { return 0; }
 
82437
  const void *__attr (unsigned __i) const { return 0; }
 
82438
#line 1261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82439
};
 
82440
 
 
82441
/** \class CT_UnaryExpr CTree.h Puma/CTree.h
 
82442
 *  Base class for tree nodes representing unary expressions. 
 
82443
 *  Example: \code !a \endcode */
 
82444
 
 
82445
#line 82446 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82446
} // closed Puma
 
82447
class CCExprResolve;
 
82448
class CExprResolve;
 
82449
class WinIfExists;
 
82450
class WinImportHandler;
 
82451
class WinMacros;
 
82452
class WinAsm;
 
82453
class WinDeclSpecs;
 
82454
class WinMemberExplSpec;
 
82455
class WinTypeKeywords;
 
82456
class WinFriend;
 
82457
class ExtAC;
 
82458
class ExtACBuilderCoupling;
 
82459
class ExtACSyntaxCoupling;
 
82460
class ExtACTree;
 
82461
class ExtACKeywords;
 
82462
class ExtGnu;
 
82463
class PragmaOnceUnitState;
 
82464
class PragmaOnce;
 
82465
class CMatchSyntax;
 
82466
namespace Puma {
 
82467
 
 
82468
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82469
 
 
82470
#line 82471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82471
} // closed Puma
 
82472
 
 
82473
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82474
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82475
#include "CCExprResolveH.ah"
 
82476
#endif
 
82477
namespace Puma {
 
82478
 
 
82479
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82480
 
 
82481
#line 82482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82482
} // closed Puma
 
82483
 
 
82484
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82485
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82486
#include "CExprResolveH.ah"
 
82487
#endif
 
82488
namespace Puma {
 
82489
 
 
82490
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82491
class CT_UnaryExpr : public CT_Call {
 
82492
#line 82493 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82493
  friend class ::CCExprResolve;
 
82494
  friend class ::CExprResolve;
 
82495
  friend class ::WinIfExists;
 
82496
  friend class ::WinImportHandler;
 
82497
  friend class ::WinMacros;
 
82498
  friend class ::WinAsm;
 
82499
  friend class ::WinDeclSpecs;
 
82500
  friend class ::WinMemberExplSpec;
 
82501
  friend class ::WinTypeKeywords;
 
82502
  friend class ::WinFriend;
 
82503
  friend class ::ExtAC;
 
82504
  friend class ::ExtACBuilderCoupling;
 
82505
  friend class ::ExtACSyntaxCoupling;
 
82506
  friend class ::ExtACTree;
 
82507
  friend class ::ExtACKeywords;
 
82508
  friend class ::ExtGnu;
 
82509
  friend class ::PragmaOnceUnitState;
 
82510
  friend class ::PragmaOnce;
 
82511
  friend class ::CMatchSyntax;
 
82512
 
 
82513
#line 1266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82514
 
 
82515
  CTree *sons[2]; // oper, expr
 
82516
 
 
82517
public:
 
82518
  /** Constructor.
 
82519
   *  \param o The unary operator.
 
82520
   *  \param e The expression on which the operator is invoked. */
 
82521
  CT_UnaryExpr (CTree *o, CTree *e) { AddSon (sons[0], o); AddSon (sons[1], e); }
 
82522
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
82523
  static const char *NodeId ();
 
82524
  /** Get the name of the node. Can be compared with NodeId(). */
 
82525
  const char *NodeName () const { return NodeId (); }
 
82526
  /** Get the number of sons. */
 
82527
  int Sons () const { return 2; }
 
82528
  /** Get the n-th son.
 
82529
   *  \param n The index of the son.
 
82530
   *  \return The n-th son or NULL. */
 
82531
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
82532
  /** Replace a son.
 
82533
   *  \param old_son The son to replace.
 
82534
   *  \param new_son The new son. */
 
82535
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
82536
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
82537
  }
 
82538
  /** Get the expression node. */
 
82539
  CTree *Expr () const { return sons[1]; }
 
82540
   private:
 
82541
  typedef CT_UnaryExpr CCExprResolveExpr;
 
82542
 
 
82543
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
82544
 public :
 
82545
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
82546
  typedef CT_UnaryExpr CExprResolveExpr;
 
82547
 
 
82548
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
82549
 public :
 
82550
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
82551
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
82552
  const char *__attr_name (unsigned i) const {
 
82553
    static const char *names[] = { "sons" }; return names[i];
 
82554
  }
 
82555
  const void *__attr (unsigned __i) const {
 
82556
    switch (__i) { case 0: return &sons; default: return 0; }
 
82557
  }
 
82558
#line 1292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82559
};
 
82560
 
 
82561
/** \class CT_PostfixExpr CTree.h Puma/CTree.h
 
82562
 *  Tree node representing a postfix expression.
 
82563
 *  Example: \code a++ \endcode */
 
82564
 
 
82565
#line 82566 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82566
} // closed Puma
 
82567
class CCExprResolve;
 
82568
class CExprResolve;
 
82569
class WinIfExists;
 
82570
class WinImportHandler;
 
82571
class WinMacros;
 
82572
class WinAsm;
 
82573
class WinDeclSpecs;
 
82574
class WinMemberExplSpec;
 
82575
class WinTypeKeywords;
 
82576
class WinFriend;
 
82577
class ExtAC;
 
82578
class ExtACBuilderCoupling;
 
82579
class ExtACSyntaxCoupling;
 
82580
class ExtACTree;
 
82581
class ExtACKeywords;
 
82582
class ExtGnu;
 
82583
class PragmaOnceUnitState;
 
82584
class PragmaOnce;
 
82585
class CMatchSyntax;
 
82586
namespace Puma {
 
82587
 
 
82588
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82589
 
 
82590
#line 82591 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82591
} // closed Puma
 
82592
 
 
82593
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82594
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82595
#include "CCExprResolveH.ah"
 
82596
#endif
 
82597
namespace Puma {
 
82598
 
 
82599
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82600
 
 
82601
#line 82602 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82602
} // closed Puma
 
82603
 
 
82604
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82605
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82606
#include "CExprResolveH.ah"
 
82607
#endif
 
82608
namespace Puma {
 
82609
 
 
82610
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82611
class CT_PostfixExpr : public CT_UnaryExpr {
 
82612
#line 82613 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82613
  friend class ::CCExprResolve;
 
82614
  friend class ::CExprResolve;
 
82615
  friend class ::WinIfExists;
 
82616
  friend class ::WinImportHandler;
 
82617
  friend class ::WinMacros;
 
82618
  friend class ::WinAsm;
 
82619
  friend class ::WinDeclSpecs;
 
82620
  friend class ::WinMemberExplSpec;
 
82621
  friend class ::WinTypeKeywords;
 
82622
  friend class ::WinFriend;
 
82623
  friend class ::ExtAC;
 
82624
  friend class ::ExtACBuilderCoupling;
 
82625
  friend class ::ExtACSyntaxCoupling;
 
82626
  friend class ::ExtACTree;
 
82627
  friend class ::ExtACKeywords;
 
82628
  friend class ::ExtGnu;
 
82629
  friend class ::PragmaOnceUnitState;
 
82630
  friend class ::PragmaOnce;
 
82631
  friend class ::CMatchSyntax;
 
82632
 
 
82633
#line 1297 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82634
 
 
82635
public:
 
82636
  /** Constructor.
 
82637
   *  \param e The expression on which to invoke the operator. 
 
82638
   *  \param o The postfix operator. */
 
82639
  CT_PostfixExpr (CTree *e, CTree *o) :
 
82640
    CT_UnaryExpr (e, o) {}
 
82641
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
82642
  static const char *NodeId ();
 
82643
  /** Get the name of the node. Can be compared with NodeId(). */
 
82644
  const char *NodeName () const { return NodeId (); }
 
82645
   private:
 
82646
  typedef CT_PostfixExpr CCExprResolveExpr;
 
82647
 
 
82648
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
82649
 public :
 
82650
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
82651
  typedef CT_PostfixExpr CExprResolveExpr;
 
82652
 
 
82653
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
82654
 public :
 
82655
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
82656
  typedef AC::TLE __AttrTypes;
 
82657
  const char *__attr_name (unsigned i) const { return 0; }
 
82658
  const void *__attr (unsigned __i) const { return 0; }
 
82659
#line 1308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82660
};
 
82661
 
 
82662
/** \class CT_AddrExpr CTree.h Puma/CTree.h
 
82663
 *  Tree node representing an address expression.
 
82664
 *  Example: \code &a \endcode */
 
82665
 
 
82666
#line 82667 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82667
} // closed Puma
 
82668
class CCExprResolve;
 
82669
class CExprResolve;
 
82670
class WinIfExists;
 
82671
class WinImportHandler;
 
82672
class WinMacros;
 
82673
class WinAsm;
 
82674
class WinDeclSpecs;
 
82675
class WinMemberExplSpec;
 
82676
class WinTypeKeywords;
 
82677
class WinFriend;
 
82678
class ExtAC;
 
82679
class ExtACBuilderCoupling;
 
82680
class ExtACSyntaxCoupling;
 
82681
class ExtACTree;
 
82682
class ExtACKeywords;
 
82683
class ExtGnu;
 
82684
class PragmaOnceUnitState;
 
82685
class PragmaOnce;
 
82686
class CMatchSyntax;
 
82687
namespace Puma {
 
82688
 
 
82689
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82690
 
 
82691
#line 82692 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82692
} // closed Puma
 
82693
 
 
82694
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82695
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82696
#include "CCExprResolveH.ah"
 
82697
#endif
 
82698
namespace Puma {
 
82699
 
 
82700
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82701
 
 
82702
#line 82703 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82703
} // closed Puma
 
82704
 
 
82705
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82706
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82707
#include "CExprResolveH.ah"
 
82708
#endif
 
82709
namespace Puma {
 
82710
 
 
82711
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82712
class CT_AddrExpr : public CT_UnaryExpr {
 
82713
#line 82714 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82714
  friend class ::CCExprResolve;
 
82715
  friend class ::CExprResolve;
 
82716
  friend class ::WinIfExists;
 
82717
  friend class ::WinImportHandler;
 
82718
  friend class ::WinMacros;
 
82719
  friend class ::WinAsm;
 
82720
  friend class ::WinDeclSpecs;
 
82721
  friend class ::WinMemberExplSpec;
 
82722
  friend class ::WinTypeKeywords;
 
82723
  friend class ::WinFriend;
 
82724
  friend class ::ExtAC;
 
82725
  friend class ::ExtACBuilderCoupling;
 
82726
  friend class ::ExtACSyntaxCoupling;
 
82727
  friend class ::ExtACTree;
 
82728
  friend class ::ExtACKeywords;
 
82729
  friend class ::ExtGnu;
 
82730
  friend class ::PragmaOnceUnitState;
 
82731
  friend class ::PragmaOnce;
 
82732
  friend class ::CMatchSyntax;
 
82733
 
 
82734
#line 1313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82735
 
 
82736
public:
 
82737
  /** Constructor.
 
82738
   *  \param o The address operator, i.e. '&'.
 
82739
   *  \param e The expression from which to take the address. */
 
82740
  CT_AddrExpr (CTree *o, CTree *e) :
 
82741
    CT_UnaryExpr (o, e) {}
 
82742
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
82743
  static const char *NodeId ();
 
82744
  /** Get the name of the node. Can be compared with NodeId(). */
 
82745
  const char *NodeName () const { return NodeId (); }
 
82746
   private:
 
82747
  typedef CT_AddrExpr CCExprResolveExpr;
 
82748
 
 
82749
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
82750
 public :
 
82751
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
82752
  typedef CT_AddrExpr CExprResolveExpr;
 
82753
 
 
82754
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
82755
 public :
 
82756
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
82757
  typedef AC::TLE __AttrTypes;
 
82758
  const char *__attr_name (unsigned i) const { return 0; }
 
82759
  const void *__attr (unsigned __i) const { return 0; }
 
82760
#line 1324 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82761
};
 
82762
 
 
82763
/** \class CT_DerefExpr CTree.h Puma/CTree.h
 
82764
 *  Tree node representing a pointer dereferencing expression.
 
82765
 *  Example: \code *a \endcode */
 
82766
 
 
82767
#line 82768 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82768
} // closed Puma
 
82769
class CCExprResolve;
 
82770
class CExprResolve;
 
82771
class WinIfExists;
 
82772
class WinImportHandler;
 
82773
class WinMacros;
 
82774
class WinAsm;
 
82775
class WinDeclSpecs;
 
82776
class WinMemberExplSpec;
 
82777
class WinTypeKeywords;
 
82778
class WinFriend;
 
82779
class ExtAC;
 
82780
class ExtACBuilderCoupling;
 
82781
class ExtACSyntaxCoupling;
 
82782
class ExtACTree;
 
82783
class ExtACKeywords;
 
82784
class ExtGnu;
 
82785
class PragmaOnceUnitState;
 
82786
class PragmaOnce;
 
82787
class CMatchSyntax;
 
82788
namespace Puma {
 
82789
 
 
82790
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82791
 
 
82792
#line 82793 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82793
} // closed Puma
 
82794
 
 
82795
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82796
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82797
#include "CCExprResolveH.ah"
 
82798
#endif
 
82799
namespace Puma {
 
82800
 
 
82801
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82802
 
 
82803
#line 82804 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82804
} // closed Puma
 
82805
 
 
82806
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82807
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82808
#include "CExprResolveH.ah"
 
82809
#endif
 
82810
namespace Puma {
 
82811
 
 
82812
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82813
class CT_DerefExpr : public CT_UnaryExpr {
 
82814
#line 82815 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82815
  friend class ::CCExprResolve;
 
82816
  friend class ::CExprResolve;
 
82817
  friend class ::WinIfExists;
 
82818
  friend class ::WinImportHandler;
 
82819
  friend class ::WinMacros;
 
82820
  friend class ::WinAsm;
 
82821
  friend class ::WinDeclSpecs;
 
82822
  friend class ::WinMemberExplSpec;
 
82823
  friend class ::WinTypeKeywords;
 
82824
  friend class ::WinFriend;
 
82825
  friend class ::ExtAC;
 
82826
  friend class ::ExtACBuilderCoupling;
 
82827
  friend class ::ExtACSyntaxCoupling;
 
82828
  friend class ::ExtACTree;
 
82829
  friend class ::ExtACKeywords;
 
82830
  friend class ::ExtGnu;
 
82831
  friend class ::PragmaOnceUnitState;
 
82832
  friend class ::PragmaOnce;
 
82833
  friend class ::CMatchSyntax;
 
82834
 
 
82835
#line 1329 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82836
 
 
82837
public:
 
82838
  /** Constructor.
 
82839
   *  \param o The dereferencing operator, i.e. '*'.
 
82840
   *  \param e The expression to dereference. */
 
82841
  CT_DerefExpr (CTree *o, CTree *e) :
 
82842
    CT_UnaryExpr (o, e) {}
 
82843
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
82844
  static const char *NodeId ();
 
82845
  /** Get the name of the node. Can be compared with NodeId(). */
 
82846
  const char *NodeName () const { return NodeId (); }
 
82847
   private:
 
82848
  typedef CT_DerefExpr CCExprResolveExpr;
 
82849
 
 
82850
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
82851
 public :
 
82852
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
82853
  typedef CT_DerefExpr CExprResolveExpr;
 
82854
 
 
82855
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
82856
 public :
 
82857
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
82858
  typedef AC::TLE __AttrTypes;
 
82859
  const char *__attr_name (unsigned i) const { return 0; }
 
82860
  const void *__attr (unsigned __i) const { return 0; }
 
82861
#line 1340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82862
};
 
82863
 
 
82864
/** \class CT_DeleteExpr CTree.h Puma/CTree.h
 
82865
 *  Tree node representing a delete expression.
 
82866
 *  Example: \code delete a \endcode */
 
82867
 
 
82868
#line 82869 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82869
} // closed Puma
 
82870
class CCExprResolve;
 
82871
class CExprResolve;
 
82872
class WinIfExists;
 
82873
class WinImportHandler;
 
82874
class WinMacros;
 
82875
class WinAsm;
 
82876
class WinDeclSpecs;
 
82877
class WinMemberExplSpec;
 
82878
class WinTypeKeywords;
 
82879
class WinFriend;
 
82880
class ExtAC;
 
82881
class ExtACBuilderCoupling;
 
82882
class ExtACSyntaxCoupling;
 
82883
class ExtACTree;
 
82884
class ExtACKeywords;
 
82885
class ExtGnu;
 
82886
class PragmaOnceUnitState;
 
82887
class PragmaOnce;
 
82888
class CMatchSyntax;
 
82889
namespace Puma {
 
82890
 
 
82891
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82892
 
 
82893
#line 82894 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82894
} // closed Puma
 
82895
 
 
82896
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82897
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
82898
#include "CCExprResolveH.ah"
 
82899
#endif
 
82900
namespace Puma {
 
82901
 
 
82902
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82903
 
 
82904
#line 82905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82905
} // closed Puma
 
82906
 
 
82907
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82908
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
82909
#include "CExprResolveH.ah"
 
82910
#endif
 
82911
namespace Puma {
 
82912
 
 
82913
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82914
class CT_DeleteExpr : public CT_Expression, public CSemObject {
 
82915
#line 82916 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82916
  friend class ::CCExprResolve;
 
82917
  friend class ::CExprResolve;
 
82918
  friend class ::WinIfExists;
 
82919
  friend class ::WinImportHandler;
 
82920
  friend class ::WinMacros;
 
82921
  friend class ::WinAsm;
 
82922
  friend class ::WinDeclSpecs;
 
82923
  friend class ::WinMemberExplSpec;
 
82924
  friend class ::WinTypeKeywords;
 
82925
  friend class ::WinFriend;
 
82926
  friend class ::ExtAC;
 
82927
  friend class ::ExtACBuilderCoupling;
 
82928
  friend class ::ExtACSyntaxCoupling;
 
82929
  friend class ::ExtACTree;
 
82930
  friend class ::ExtACKeywords;
 
82931
  friend class ::ExtGnu;
 
82932
  friend class ::PragmaOnceUnitState;
 
82933
  friend class ::PragmaOnce;
 
82934
  friend class ::CMatchSyntax;
 
82935
 
 
82936
#line 1345 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82937
 
 
82938
  CTree *sons[2]; // oper, expr
 
82939
 
 
82940
public:
 
82941
  /** Constructor.
 
82942
   *  \param op The delete operator.
 
82943
   *  \param e The expression representing the object to delete. */
 
82944
  CT_DeleteExpr (CTree *op, CTree *e) { AddSon (sons[0], op); AddSon (sons[1], e); }
 
82945
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
82946
  static const char *NodeId ();
 
82947
  /** Get the name of the node. Can be compared with NodeId(). */
 
82948
  const char *NodeName () const { return NodeId (); }
 
82949
  /** Get the number of sons. */
 
82950
  int Sons () const { return 2; }
 
82951
  /** Get the n-th son.
 
82952
   *  \param n The index of the son.
 
82953
   *  \return The n-th son or NULL. */
 
82954
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
82955
  /** Replace a son.
 
82956
   *  \param old_son The son to replace.
 
82957
   *  \param new_son The new son. */
 
82958
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
82959
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
82960
  }
 
82961
  /** Get the expression. */
 
82962
  CTree *Expr () const { return sons[1]; }
 
82963
  /** Get the operator name, i.e. 'delete' or 'delete[]'. */
 
82964
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
82965
  /** Get the semantic information. */
 
82966
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
82967
   private:
 
82968
  typedef CT_DeleteExpr CCExprResolveExpr;
 
82969
 
 
82970
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
82971
 public :
 
82972
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
82973
  typedef CT_DeleteExpr CExprResolveExpr;
 
82974
 
 
82975
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
82976
 public :
 
82977
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
82978
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
82979
  const char *__attr_name (unsigned i) const {
 
82980
    static const char *names[] = { "sons" }; return names[i];
 
82981
  }
 
82982
  const void *__attr (unsigned __i) const {
 
82983
    switch (__i) { case 0: return &sons; default: return 0; }
 
82984
  }
 
82985
#line 1375 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
82986
};
 
82987
 
 
82988
/** \class CT_NewExpr CTree.h Puma/CTree.h
 
82989
 *  Tree node representing a new expression.
 
82990
 *  Example: \code new A() \endcode */
 
82991
 
 
82992
#line 82993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
82993
} // closed Puma
 
82994
class CCExprResolve;
 
82995
class CExprResolve;
 
82996
class WinIfExists;
 
82997
class WinImportHandler;
 
82998
class WinMacros;
 
82999
class WinAsm;
 
83000
class WinDeclSpecs;
 
83001
class WinMemberExplSpec;
 
83002
class WinTypeKeywords;
 
83003
class WinFriend;
 
83004
class ExtAC;
 
83005
class ExtACBuilderCoupling;
 
83006
class ExtACSyntaxCoupling;
 
83007
class ExtACTree;
 
83008
class ExtACKeywords;
 
83009
class ExtGnu;
 
83010
class PragmaOnceUnitState;
 
83011
class PragmaOnce;
 
83012
class CMatchSyntax;
 
83013
namespace Puma {
 
83014
 
 
83015
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83016
 
 
83017
#line 83018 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83018
} // closed Puma
 
83019
 
 
83020
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83021
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83022
#include "CCExprResolveH.ah"
 
83023
#endif
 
83024
namespace Puma {
 
83025
 
 
83026
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83027
 
 
83028
#line 83029 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83029
} // closed Puma
 
83030
 
 
83031
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83032
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83033
#include "CExprResolveH.ah"
 
83034
#endif
 
83035
namespace Puma {
 
83036
 
 
83037
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83038
class CT_NewExpr : public CT_Expression, public CSemObject {
 
83039
#line 83040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83040
  friend class ::CCExprResolve;
 
83041
  friend class ::CExprResolve;
 
83042
  friend class ::WinIfExists;
 
83043
  friend class ::WinImportHandler;
 
83044
  friend class ::WinMacros;
 
83045
  friend class ::WinAsm;
 
83046
  friend class ::WinDeclSpecs;
 
83047
  friend class ::WinMemberExplSpec;
 
83048
  friend class ::WinTypeKeywords;
 
83049
  friend class ::WinFriend;
 
83050
  friend class ::ExtAC;
 
83051
  friend class ::ExtACBuilderCoupling;
 
83052
  friend class ::ExtACSyntaxCoupling;
 
83053
  friend class ::ExtACTree;
 
83054
  friend class ::ExtACKeywords;
 
83055
  friend class ::ExtGnu;
 
83056
  friend class ::PragmaOnceUnitState;
 
83057
  friend class ::PragmaOnce;
 
83058
  friend class ::CMatchSyntax;
 
83059
 
 
83060
#line 1380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83061
 
 
83062
  CTree *sons[6]; // oper, placement, open, type, close, init
 
83063
 
 
83064
public:
 
83065
  /** Constructor.
 
83066
   *  \param op The new operator.
 
83067
   *  \param p The optional placement expression.
 
83068
   *  \param o The optional left parenthesis around the type identifier.
 
83069
   *  \param t The type identifier specifying the type of the object to create.
 
83070
   *  \param c The optional right parenthesis around the type identifier.
 
83071
   *  \param i The optional initializer. */
 
83072
  CT_NewExpr (CTree *op, CTree *p, CTree *o, CTree *t, CTree *c, CTree *i) {
 
83073
    AddSon (sons[0], op); AddSon (sons[1], p); AddSon (sons[2], o); 
 
83074
    AddSon (sons[3], t); AddSon (sons[4], c); AddSon (sons[5], i); 
 
83075
  }
 
83076
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
83077
  static const char *NodeId ();
 
83078
  /** Get the name of the node. Can be compared with NodeId(). */
 
83079
  const char *NodeName () const { return NodeId (); }
 
83080
  /** Get the number of sons. */
 
83081
  int Sons () const { return CTree::Sons (sons, 6); }
 
83082
  /** Get the n-th son.
 
83083
   *  \param n The index of the son.
 
83084
   *  \return The n-th son or NULL. */
 
83085
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
83086
  /** Replace a son.
 
83087
   *  \param old_son The son to replace.
 
83088
   *  \param new_son The new son. */
 
83089
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
83090
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
83091
  }
 
83092
  /** Get the operator name. */
 
83093
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
83094
  /** Get the placement expression. */
 
83095
  CT_ExprList *Placement () const { return (CT_ExprList*)sons[1];; }
 
83096
  /** Get the initializer. */
 
83097
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[5]; }
 
83098
  /** Get the type of the object to create. */
 
83099
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[3]; }
 
83100
  /** Get the semantic information. */
 
83101
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
83102
   private:
 
83103
  typedef CT_NewExpr CCExprResolveExpr;
 
83104
 
 
83105
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
83106
 public :
 
83107
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
83108
  typedef CT_NewExpr CExprResolveExpr;
 
83109
 
 
83110
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
83111
 public :
 
83112
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
83113
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
83114
  const char *__attr_name (unsigned i) const {
 
83115
    static const char *names[] = { "sons" }; return names[i];
 
83116
  }
 
83117
  const void *__attr (unsigned __i) const {
 
83118
    switch (__i) { case 0: return &sons; default: return 0; }
 
83119
  }
 
83120
#line 1421 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83121
};
 
83122
 
 
83123
/** \class CT_IfThenExpr CTree.h Puma/CTree.h
 
83124
 *  Tree node representing an if-then expression.
 
83125
 *  Example: \code a>0?a:b \endcode or \code a?:b \endcode */
 
83126
 
 
83127
#line 83128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83128
} // closed Puma
 
83129
class CCExprResolve;
 
83130
class CExprResolve;
 
83131
class WinIfExists;
 
83132
class WinImportHandler;
 
83133
class WinMacros;
 
83134
class WinAsm;
 
83135
class WinDeclSpecs;
 
83136
class WinMemberExplSpec;
 
83137
class WinTypeKeywords;
 
83138
class WinFriend;
 
83139
class ExtAC;
 
83140
class ExtACBuilderCoupling;
 
83141
class ExtACSyntaxCoupling;
 
83142
class ExtACTree;
 
83143
class ExtACKeywords;
 
83144
class ExtGnu;
 
83145
class PragmaOnceUnitState;
 
83146
class PragmaOnce;
 
83147
class CMatchSyntax;
 
83148
namespace Puma {
 
83149
 
 
83150
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83151
 
 
83152
#line 83153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83153
} // closed Puma
 
83154
 
 
83155
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83156
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83157
#include "CCExprResolveH.ah"
 
83158
#endif
 
83159
namespace Puma {
 
83160
 
 
83161
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83162
 
 
83163
#line 83164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83164
} // closed Puma
 
83165
 
 
83166
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83167
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83168
#include "CExprResolveH.ah"
 
83169
#endif
 
83170
namespace Puma {
 
83171
 
 
83172
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83173
class CT_IfThenExpr : public CT_Expression {
 
83174
#line 83175 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83175
  friend class ::CCExprResolve;
 
83176
  friend class ::CExprResolve;
 
83177
  friend class ::WinIfExists;
 
83178
  friend class ::WinImportHandler;
 
83179
  friend class ::WinMacros;
 
83180
  friend class ::WinAsm;
 
83181
  friend class ::WinDeclSpecs;
 
83182
  friend class ::WinMemberExplSpec;
 
83183
  friend class ::WinTypeKeywords;
 
83184
  friend class ::WinFriend;
 
83185
  friend class ::ExtAC;
 
83186
  friend class ::ExtACBuilderCoupling;
 
83187
  friend class ::ExtACSyntaxCoupling;
 
83188
  friend class ::ExtACTree;
 
83189
  friend class ::ExtACKeywords;
 
83190
  friend class ::ExtGnu;
 
83191
  friend class ::PragmaOnceUnitState;
 
83192
  friend class ::PragmaOnce;
 
83193
  friend class ::CMatchSyntax;
 
83194
 
 
83195
#line 1426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83196
 
 
83197
  CTree *sons[5]; // cond, oper, left, colon, right
 
83198
 
 
83199
public:
 
83200
  /** Constructor.
 
83201
   *  \param c1 The condition expression.
 
83202
   *  \param o The question mark operator. 
 
83203
   *  \param l The expression to the left of the colon.
 
83204
   *  \param c2 The colon operator.
 
83205
   *  \param r The expression to the right of the colon. */ 
 
83206
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *l, CTree *c2, CTree *r) {
 
83207
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], l); 
 
83208
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
83209
  }
 
83210
  /** Constructor.
 
83211
   *  \param c1 The condition expression.
 
83212
   *  \param o The question mark operator. 
 
83213
   *  \param c2 The colon operator.
 
83214
   *  \param r The expression to the right of the colon. */ 
 
83215
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *c2, CTree *r) {
 
83216
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], 0); 
 
83217
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
83218
  }
 
83219
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
83220
  static const char *NodeId ();
 
83221
  /** Get the name of the node. Can be compared with NodeId(). */
 
83222
  const char *NodeName () const { return NodeId (); }
 
83223
  /** Get the number of sons. */
 
83224
  int Sons () const { return CTree::Sons (sons, 5); }
 
83225
  /** Get the n-th son.
 
83226
   *  \param n The index of the son.
 
83227
   *  \return The n-th son or NULL. */
 
83228
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
83229
  /** Get the condition expression. */
 
83230
  CTree *Condition () const { return sons[0]; }
 
83231
  /** Get the left expression (condition=true). */
 
83232
  CTree *LeftOperand () const { return sons[2]; }
 
83233
  /** Get the right expression (condition=false). */
 
83234
  CTree *RightOperand () const { return sons[4]; }
 
83235
  /** Replace a son.
 
83236
   *  \param old_son The son to replace.
 
83237
   *  \param new_son The new son. */
 
83238
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
83239
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
83240
  }
 
83241
   private:
 
83242
  typedef CT_IfThenExpr CCExprResolveExpr;
 
83243
 
 
83244
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
83245
 public :
 
83246
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
83247
  typedef CT_IfThenExpr CExprResolveExpr;
 
83248
 
 
83249
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
83250
 public :
 
83251
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
83252
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
83253
  const char *__attr_name (unsigned i) const {
 
83254
    static const char *names[] = { "sons" }; return names[i];
 
83255
  }
 
83256
  const void *__attr (unsigned __i) const {
 
83257
    switch (__i) { case 0: return &sons; default: return 0; }
 
83258
  }
 
83259
#line 1471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83260
};
 
83261
 
 
83262
/** \class CT_CmpdLiteral CTree.h Puma/CTree.h
 
83263
 *  Tree node representing a compound literal.
 
83264
 *  Example: \code (int[]){1,2,3) \endcode */
 
83265
 
 
83266
#line 83267 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83267
} // closed Puma
 
83268
class CCExprResolve;
 
83269
class CExprResolve;
 
83270
class WinIfExists;
 
83271
class WinImportHandler;
 
83272
class WinMacros;
 
83273
class WinAsm;
 
83274
class WinDeclSpecs;
 
83275
class WinMemberExplSpec;
 
83276
class WinTypeKeywords;
 
83277
class WinFriend;
 
83278
class ExtAC;
 
83279
class ExtACBuilderCoupling;
 
83280
class ExtACSyntaxCoupling;
 
83281
class ExtACTree;
 
83282
class ExtACKeywords;
 
83283
class ExtGnu;
 
83284
class PragmaOnceUnitState;
 
83285
class PragmaOnce;
 
83286
class CMatchSyntax;
 
83287
namespace Puma {
 
83288
 
 
83289
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83290
 
 
83291
#line 83292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83292
} // closed Puma
 
83293
 
 
83294
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83295
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83296
#include "CCExprResolveH.ah"
 
83297
#endif
 
83298
namespace Puma {
 
83299
 
 
83300
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83301
 
 
83302
#line 83303 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83303
} // closed Puma
 
83304
 
 
83305
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83306
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83307
#include "CExprResolveH.ah"
 
83308
#endif
 
83309
namespace Puma {
 
83310
 
 
83311
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83312
class CT_CmpdLiteral : public CT_Expression, public CSemObject {
 
83313
#line 83314 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83314
  friend class ::CCExprResolve;
 
83315
  friend class ::CExprResolve;
 
83316
  friend class ::WinIfExists;
 
83317
  friend class ::WinImportHandler;
 
83318
  friend class ::WinMacros;
 
83319
  friend class ::WinAsm;
 
83320
  friend class ::WinDeclSpecs;
 
83321
  friend class ::WinMemberExplSpec;
 
83322
  friend class ::WinTypeKeywords;
 
83323
  friend class ::WinFriend;
 
83324
  friend class ::ExtAC;
 
83325
  friend class ::ExtACBuilderCoupling;
 
83326
  friend class ::ExtACSyntaxCoupling;
 
83327
  friend class ::ExtACTree;
 
83328
  friend class ::ExtACKeywords;
 
83329
  friend class ::ExtGnu;
 
83330
  friend class ::PragmaOnceUnitState;
 
83331
  friend class ::PragmaOnce;
 
83332
  friend class ::CMatchSyntax;
 
83333
 
 
83334
#line 1476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83335
 
 
83336
  CTree *sons[4]; // open, type, close, init
 
83337
 
 
83338
public:
 
83339
  /** Constructor.
 
83340
   *  \param r Left parenthesis of the type name.
 
83341
   *  \param t The type name.
 
83342
   *  \param cr Right parenthesis of the type name.
 
83343
   *  \param i The initializer list. */
 
83344
  CT_CmpdLiteral (CTree *r, CTree *t, CTree *cr, CTree *i) {
 
83345
    AddSon (sons[0], r); AddSon (sons[1], t); 
 
83346
    AddSon (sons[2], cr); AddSon (sons[3], i);
 
83347
  }
 
83348
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
83349
  static const char *NodeId ();
 
83350
  /** Get the name of the node. Can be compared with NodeId(). */
 
83351
  const char *NodeName () const { return NodeId (); }
 
83352
  /** Get the number of sons. */
 
83353
  int Sons () const { return 4; }
 
83354
  /** Get the n-th son.
 
83355
   *  \param n The index of the son.
 
83356
   *  \return The n-th son or NULL. */
 
83357
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
83358
  /** Replace a son.
 
83359
   *  \param old_son The son to replace.
 
83360
   *  \param new_son The new son. */
 
83361
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
83362
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
83363
  }
 
83364
  /** Get the type name. */
 
83365
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
83366
  /** Get the initializer list. */
 
83367
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[3]; }
 
83368
  /** Get the semantic information about the created object. */
 
83369
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
83370
   private:
 
83371
  typedef CT_CmpdLiteral CCExprResolveExpr;
 
83372
 
 
83373
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
83374
 public :
 
83375
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
83376
  typedef CT_CmpdLiteral CExprResolveExpr;
 
83377
 
 
83378
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
83379
 public :
 
83380
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
83381
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
83382
  const char *__attr_name (unsigned i) const {
 
83383
    static const char *names[] = { "sons" }; return names[i];
 
83384
  }
 
83385
  const void *__attr (unsigned __i) const {
 
83386
    switch (__i) { case 0: return &sons; default: return 0; }
 
83387
  }
 
83388
#line 1511 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83389
};
 
83390
 
 
83391
/** \class CT_ConstructExpr CTree.h Puma/CTree.h
 
83392
 *  Tree node representing a construct expression.
 
83393
 *  Example: \code std::string("abc") \endcode */
 
83394
 
 
83395
#line 83396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83396
} // closed Puma
 
83397
class CCExprResolve;
 
83398
class CExprResolve;
 
83399
class WinIfExists;
 
83400
class WinImportHandler;
 
83401
class WinMacros;
 
83402
class WinAsm;
 
83403
class WinDeclSpecs;
 
83404
class WinMemberExplSpec;
 
83405
class WinTypeKeywords;
 
83406
class WinFriend;
 
83407
class ExtAC;
 
83408
class ExtACBuilderCoupling;
 
83409
class ExtACSyntaxCoupling;
 
83410
class ExtACTree;
 
83411
class ExtACKeywords;
 
83412
class ExtGnu;
 
83413
class PragmaOnceUnitState;
 
83414
class PragmaOnce;
 
83415
class CMatchSyntax;
 
83416
namespace Puma {
 
83417
 
 
83418
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83419
 
 
83420
#line 83421 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83421
} // closed Puma
 
83422
 
 
83423
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83424
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83425
#include "CCExprResolveH.ah"
 
83426
#endif
 
83427
namespace Puma {
 
83428
 
 
83429
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83430
 
 
83431
#line 83432 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83432
} // closed Puma
 
83433
 
 
83434
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83435
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83436
#include "CExprResolveH.ah"
 
83437
#endif
 
83438
namespace Puma {
 
83439
 
 
83440
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83441
class CT_ConstructExpr : public CT_Expression, public CSemObject {
 
83442
#line 83443 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83443
  friend class ::CCExprResolve;
 
83444
  friend class ::CExprResolve;
 
83445
  friend class ::WinIfExists;
 
83446
  friend class ::WinImportHandler;
 
83447
  friend class ::WinMacros;
 
83448
  friend class ::WinAsm;
 
83449
  friend class ::WinDeclSpecs;
 
83450
  friend class ::WinMemberExplSpec;
 
83451
  friend class ::WinTypeKeywords;
 
83452
  friend class ::WinFriend;
 
83453
  friend class ::ExtAC;
 
83454
  friend class ::ExtACBuilderCoupling;
 
83455
  friend class ::ExtACSyntaxCoupling;
 
83456
  friend class ::ExtACTree;
 
83457
  friend class ::ExtACKeywords;
 
83458
  friend class ::ExtGnu;
 
83459
  friend class ::PragmaOnceUnitState;
 
83460
  friend class ::PragmaOnce;
 
83461
  friend class ::CMatchSyntax;
 
83462
 
 
83463
#line 1516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83464
 
 
83465
  CTree *sons[2]; // type, init
 
83466
 
 
83467
public:
 
83468
  /** Constructor.
 
83469
   *  \param t The type name.
 
83470
   *  \param i The initializer list. */
 
83471
  CT_ConstructExpr (CTree *t, CTree *i) { AddSon (sons[0], t); AddSon (sons[1], i); }
 
83472
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
83473
  static const char *NodeId ();
 
83474
  /** Get the name of the node. Can be compared with NodeId(). */
 
83475
  const char *NodeName () const { return NodeId (); }
 
83476
  /** Get the number of sons. */
 
83477
  int Sons () const { return 2; }
 
83478
  /** Get the n-th son.
 
83479
   *  \param n The index of the son.
 
83480
   *  \return The n-th son or NULL. */
 
83481
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
83482
  /** Replace a son.
 
83483
   *  \param old_son The son to replace.
 
83484
   *  \param new_son The new son. */
 
83485
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
83486
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
83487
  }
 
83488
  /** Get the type name. */
 
83489
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[0]; }
 
83490
  /** Get the initializer. */
 
83491
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
83492
  /** Get the semantic information about the created object. */
 
83493
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
83494
   private:
 
83495
  typedef CT_ConstructExpr CCExprResolveExpr;
 
83496
 
 
83497
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
83498
 public :
 
83499
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
83500
  typedef CT_ConstructExpr CExprResolveExpr;
 
83501
 
 
83502
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
83503
 public :
 
83504
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
83505
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
83506
  const char *__attr_name (unsigned i) const {
 
83507
    static const char *names[] = { "sons" }; return names[i];
 
83508
  }
 
83509
  const void *__attr (unsigned __i) const {
 
83510
    switch (__i) { case 0: return &sons; default: return 0; }
 
83511
  }
 
83512
#line 1546 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83513
};
 
83514
 
 
83515
/** \class CT_ThrowExpr CTree.h Puma/CTree.h
 
83516
 *  Tree node representing a throw expression.
 
83517
 *  Example: \code throw std::exception() \endcode */
 
83518
 
 
83519
#line 83520 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83520
} // closed Puma
 
83521
class CCExprResolve;
 
83522
class CExprResolve;
 
83523
class WinIfExists;
 
83524
class WinImportHandler;
 
83525
class WinMacros;
 
83526
class WinAsm;
 
83527
class WinDeclSpecs;
 
83528
class WinMemberExplSpec;
 
83529
class WinTypeKeywords;
 
83530
class WinFriend;
 
83531
class ExtAC;
 
83532
class ExtACBuilderCoupling;
 
83533
class ExtACSyntaxCoupling;
 
83534
class ExtACTree;
 
83535
class ExtACKeywords;
 
83536
class ExtGnu;
 
83537
class PragmaOnceUnitState;
 
83538
class PragmaOnce;
 
83539
class CMatchSyntax;
 
83540
namespace Puma {
 
83541
 
 
83542
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83543
 
 
83544
#line 83545 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83545
} // closed Puma
 
83546
 
 
83547
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83548
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83549
#include "CCExprResolveH.ah"
 
83550
#endif
 
83551
namespace Puma {
 
83552
 
 
83553
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83554
 
 
83555
#line 83556 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83556
} // closed Puma
 
83557
 
 
83558
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83559
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83560
#include "CExprResolveH.ah"
 
83561
#endif
 
83562
namespace Puma {
 
83563
 
 
83564
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83565
class CT_ThrowExpr : public CT_Expression {
 
83566
#line 83567 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83567
  friend class ::CCExprResolve;
 
83568
  friend class ::CExprResolve;
 
83569
  friend class ::WinIfExists;
 
83570
  friend class ::WinImportHandler;
 
83571
  friend class ::WinMacros;
 
83572
  friend class ::WinAsm;
 
83573
  friend class ::WinDeclSpecs;
 
83574
  friend class ::WinMemberExplSpec;
 
83575
  friend class ::WinTypeKeywords;
 
83576
  friend class ::WinFriend;
 
83577
  friend class ::ExtAC;
 
83578
  friend class ::ExtACBuilderCoupling;
 
83579
  friend class ::ExtACSyntaxCoupling;
 
83580
  friend class ::ExtACTree;
 
83581
  friend class ::ExtACKeywords;
 
83582
  friend class ::ExtGnu;
 
83583
  friend class ::PragmaOnceUnitState;
 
83584
  friend class ::PragmaOnce;
 
83585
  friend class ::CMatchSyntax;
 
83586
 
 
83587
#line 1551 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83588
 
 
83589
  CTree *sons[2]; // throw, expr
 
83590
 
 
83591
public:
 
83592
  /** Constructor.
 
83593
   *  \param t The 'throw' keyword.
 
83594
   *  \param e The expression. */
 
83595
  CT_ThrowExpr (CTree *t, CTree *e = (CTree*)0) { AddSon (sons[0], t); AddSon (sons[1], e); }
 
83596
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
83597
  static const char *NodeId ();
 
83598
  /** Get the name of the node. Can be compared with NodeId(). */
 
83599
  const char *NodeName () const { return NodeId (); }
 
83600
  /** Get the number of sons. */
 
83601
  int Sons () const { return CTree::Sons (sons, 2); }
 
83602
  /** Get the n-th son.
 
83603
   *  \param n The index of the son.
 
83604
   *  \return The n-th son or NULL. */
 
83605
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
83606
  /** Replace a son.
 
83607
   *  \param old_son The son to replace.
 
83608
   *  \param new_son The new son. */
 
83609
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
83610
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
83611
  }
 
83612
  /** Get the expression. */
 
83613
  CTree *Expr () const { return sons[1]; }
 
83614
   private:
 
83615
  typedef CT_ThrowExpr CCExprResolveExpr;
 
83616
 
 
83617
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
83618
 public :
 
83619
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
83620
  typedef CT_ThrowExpr CExprResolveExpr;
 
83621
 
 
83622
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
83623
 public :
 
83624
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
83625
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
83626
  const char *__attr_name (unsigned i) const {
 
83627
    static const char *names[] = { "sons" }; return names[i];
 
83628
  }
 
83629
  const void *__attr (unsigned __i) const {
 
83630
    switch (__i) { case 0: return &sons; default: return 0; }
 
83631
  }
 
83632
#line 1577 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83633
};
 
83634
 
 
83635
/** \class CT_IndexExpr CTree.h Puma/CTree.h
 
83636
 *  Tree node representing an index expression. 
 
83637
 *  Example: \code a[1] \endcode */
 
83638
 
 
83639
#line 83640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83640
} // closed Puma
 
83641
class CCExprResolve;
 
83642
class CExprResolve;
 
83643
class WinIfExists;
 
83644
class WinImportHandler;
 
83645
class WinMacros;
 
83646
class WinAsm;
 
83647
class WinDeclSpecs;
 
83648
class WinMemberExplSpec;
 
83649
class WinTypeKeywords;
 
83650
class WinFriend;
 
83651
class ExtAC;
 
83652
class ExtACBuilderCoupling;
 
83653
class ExtACSyntaxCoupling;
 
83654
class ExtACTree;
 
83655
class ExtACKeywords;
 
83656
class ExtGnu;
 
83657
class PragmaOnceUnitState;
 
83658
class PragmaOnce;
 
83659
class CMatchSyntax;
 
83660
namespace Puma {
 
83661
 
 
83662
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83663
 
 
83664
#line 83665 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83665
} // closed Puma
 
83666
 
 
83667
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83668
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83669
#include "CCExprResolveH.ah"
 
83670
#endif
 
83671
namespace Puma {
 
83672
 
 
83673
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83674
 
 
83675
#line 83676 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83676
} // closed Puma
 
83677
 
 
83678
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83679
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83680
#include "CExprResolveH.ah"
 
83681
#endif
 
83682
namespace Puma {
 
83683
 
 
83684
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83685
class CT_IndexExpr : public CT_Call {
 
83686
#line 83687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83687
  friend class ::CCExprResolve;
 
83688
  friend class ::CExprResolve;
 
83689
  friend class ::WinIfExists;
 
83690
  friend class ::WinImportHandler;
 
83691
  friend class ::WinMacros;
 
83692
  friend class ::WinAsm;
 
83693
  friend class ::WinDeclSpecs;
 
83694
  friend class ::WinMemberExplSpec;
 
83695
  friend class ::WinTypeKeywords;
 
83696
  friend class ::WinFriend;
 
83697
  friend class ::ExtAC;
 
83698
  friend class ::ExtACBuilderCoupling;
 
83699
  friend class ::ExtACSyntaxCoupling;
 
83700
  friend class ::ExtACTree;
 
83701
  friend class ::ExtACKeywords;
 
83702
  friend class ::ExtGnu;
 
83703
  friend class ::PragmaOnceUnitState;
 
83704
  friend class ::PragmaOnce;
 
83705
  friend class ::CMatchSyntax;
 
83706
 
 
83707
#line 1582 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83708
 
 
83709
  CTree *sons[4]; // expr, open, index, close
 
83710
 
 
83711
public:
 
83712
  /** Constructor.
 
83713
   *  \param e The expression on which to invoke the index operator.
 
83714
   *  \param o Left parenthesis of the index expression.
 
83715
   *  \param i The index expression. 
 
83716
   *  \param c Right parenthesis of the index expression. */
 
83717
  CT_IndexExpr (CTree *e, CTree *o, CTree *i, CTree *c) {
 
83718
    AddSon (sons[0], e); AddSon (sons[1], o); 
 
83719
    AddSon (sons[2], i); AddSon (sons[3], c);
 
83720
  }
 
83721
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
83722
  static const char *NodeId ();
 
83723
  /** Get the name of the node. Can be compared with NodeId(). */
 
83724
  const char *NodeName () const { return NodeId (); }
 
83725
  /** Get the number of sons. */
 
83726
  int Sons () const { return 4; }
 
83727
  /** Get the n-th son.
 
83728
   *  \param n The index of the son.
 
83729
   *  \return The n-th son or NULL. */
 
83730
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
83731
  /** Replace a son.
 
83732
   *  \param old_son The son to replace.
 
83733
   *  \param new_son The new son. */
 
83734
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
83735
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
83736
  }
 
83737
   private:
 
83738
  typedef CT_IndexExpr CCExprResolveExpr;
 
83739
 
 
83740
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
83741
 public :
 
83742
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
83743
  typedef CT_IndexExpr CExprResolveExpr;
 
83744
 
 
83745
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
83746
 public :
 
83747
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
83748
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
83749
  const char *__attr_name (unsigned i) const {
 
83750
    static const char *names[] = { "sons" }; return names[i];
 
83751
  }
 
83752
  const void *__attr (unsigned __i) const {
 
83753
    switch (__i) { case 0: return &sons; default: return 0; }
 
83754
  }
 
83755
#line 1611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83756
};
 
83757
 
 
83758
/** \class CT_CallExpr CTree.h Puma/CTree.h
 
83759
 *  Tree node representing a function call expression.
 
83760
 *  Example: \code f(i) \endcode */
 
83761
 
 
83762
#line 83763 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83763
} // closed Puma
 
83764
class CCExprResolve;
 
83765
class CExprResolve;
 
83766
class WinIfExists;
 
83767
class WinImportHandler;
 
83768
class WinMacros;
 
83769
class WinAsm;
 
83770
class WinDeclSpecs;
 
83771
class WinMemberExplSpec;
 
83772
class WinTypeKeywords;
 
83773
class WinFriend;
 
83774
class ExtAC;
 
83775
class ExtACBuilderCoupling;
 
83776
class ExtACSyntaxCoupling;
 
83777
class ExtACTree;
 
83778
class ExtACKeywords;
 
83779
class ExtGnu;
 
83780
class PragmaOnceUnitState;
 
83781
class PragmaOnce;
 
83782
class CMatchSyntax;
 
83783
namespace Puma {
 
83784
 
 
83785
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83786
 
 
83787
#line 83788 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83788
} // closed Puma
 
83789
 
 
83790
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83791
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83792
#include "CCExprResolveH.ah"
 
83793
#endif
 
83794
namespace Puma {
 
83795
 
 
83796
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83797
 
 
83798
#line 83799 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83799
} // closed Puma
 
83800
 
 
83801
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83802
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83803
#include "CExprResolveH.ah"
 
83804
#endif
 
83805
namespace Puma {
 
83806
 
 
83807
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83808
class CT_CallExpr : public CT_Call {
 
83809
#line 83810 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83810
  friend class ::CCExprResolve;
 
83811
  friend class ::CExprResolve;
 
83812
  friend class ::WinIfExists;
 
83813
  friend class ::WinImportHandler;
 
83814
  friend class ::WinMacros;
 
83815
  friend class ::WinAsm;
 
83816
  friend class ::WinDeclSpecs;
 
83817
  friend class ::WinMemberExplSpec;
 
83818
  friend class ::WinTypeKeywords;
 
83819
  friend class ::WinFriend;
 
83820
  friend class ::ExtAC;
 
83821
  friend class ::ExtACBuilderCoupling;
 
83822
  friend class ::ExtACSyntaxCoupling;
 
83823
  friend class ::ExtACTree;
 
83824
  friend class ::ExtACKeywords;
 
83825
  friend class ::ExtGnu;
 
83826
  friend class ::PragmaOnceUnitState;
 
83827
  friend class ::PragmaOnce;
 
83828
  friend class ::CMatchSyntax;
 
83829
 
 
83830
#line 1616 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83831
 
 
83832
  CTree *sons[2]; // expr, args
 
83833
 
 
83834
public:
 
83835
  /** Constructor.
 
83836
   *  \param e The expression on which the call is invoked. */
 
83837
  CT_CallExpr (CTree *e) { AddSon (sons[0], e); AddSon (sons[1], 0); }
 
83838
  /** Constructor.
 
83839
   *  \param e The expression on which the call is invoked.
 
83840
   *  \param l The argument list of the call. */
 
83841
  CT_CallExpr (CTree *e, CTree *l) { AddSon (sons[0], e); AddSon (sons[1], l); }
 
83842
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
83843
  static const char *NodeId ();
 
83844
  /** Get the name of the node. Can be compared with NodeId(). */
 
83845
  const char *NodeName () const { return NodeId (); }
 
83846
  /** Get the number of sons. */
 
83847
  int Sons () const { return CTree::Sons (sons, 2); }
 
83848
  /** Get the n-th son.
 
83849
   *  \param n The index of the son.
 
83850
   *  \return The n-th son or NULL. */
 
83851
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
83852
  /** Replace a son.
 
83853
   *  \param old_son The son to replace.
 
83854
   *  \param new_son The new son. */
 
83855
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
83856
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
83857
  }
 
83858
  CTree *Expr () const { return sons[0]; }
 
83859
  CT_ExprList *Arguments () const { return (CT_ExprList*)sons[1]; }
 
83860
   private:
 
83861
  typedef CT_CallExpr CCExprResolveExpr;
 
83862
 
 
83863
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
83864
 public :
 
83865
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
83866
  typedef CT_CallExpr CExprResolveExpr;
 
83867
 
 
83868
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
83869
 public :
 
83870
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
83871
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
83872
  const char *__attr_name (unsigned i) const {
 
83873
    static const char *names[] = { "sons" }; return names[i];
 
83874
  }
 
83875
  const void *__attr (unsigned __i) const {
 
83876
    switch (__i) { case 0: return &sons; default: return 0; }
 
83877
  }
 
83878
#line 1645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83879
};
 
83880
 
 
83881
/** \class CT_CastExpr CTree.h Puma/CTree.h
 
83882
 *  Tree node representing a cast expression.
 
83883
 *  Example: \code (int)a \endcode */
 
83884
 
 
83885
#line 83886 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83886
} // closed Puma
 
83887
class CCExprResolve;
 
83888
class CExprResolve;
 
83889
class WinIfExists;
 
83890
class WinImportHandler;
 
83891
class WinMacros;
 
83892
class WinAsm;
 
83893
class WinDeclSpecs;
 
83894
class WinMemberExplSpec;
 
83895
class WinTypeKeywords;
 
83896
class WinFriend;
 
83897
class ExtAC;
 
83898
class ExtACBuilderCoupling;
 
83899
class ExtACSyntaxCoupling;
 
83900
class ExtACTree;
 
83901
class ExtACKeywords;
 
83902
class ExtGnu;
 
83903
class PragmaOnceUnitState;
 
83904
class PragmaOnce;
 
83905
class CMatchSyntax;
 
83906
namespace Puma {
 
83907
 
 
83908
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83909
 
 
83910
#line 83911 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83911
} // closed Puma
 
83912
 
 
83913
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83914
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
83915
#include "CCExprResolveH.ah"
 
83916
#endif
 
83917
namespace Puma {
 
83918
 
 
83919
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83920
 
 
83921
#line 83922 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83922
} // closed Puma
 
83923
 
 
83924
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83925
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
83926
#include "CExprResolveH.ah"
 
83927
#endif
 
83928
namespace Puma {
 
83929
 
 
83930
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83931
class CT_CastExpr : public CT_Expression {
 
83932
#line 83933 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
83933
  friend class ::CCExprResolve;
 
83934
  friend class ::CExprResolve;
 
83935
  friend class ::WinIfExists;
 
83936
  friend class ::WinImportHandler;
 
83937
  friend class ::WinMacros;
 
83938
  friend class ::WinAsm;
 
83939
  friend class ::WinDeclSpecs;
 
83940
  friend class ::WinMemberExplSpec;
 
83941
  friend class ::WinTypeKeywords;
 
83942
  friend class ::WinFriend;
 
83943
  friend class ::ExtAC;
 
83944
  friend class ::ExtACBuilderCoupling;
 
83945
  friend class ::ExtACSyntaxCoupling;
 
83946
  friend class ::ExtACTree;
 
83947
  friend class ::ExtACKeywords;
 
83948
  friend class ::ExtGnu;
 
83949
  friend class ::PragmaOnceUnitState;
 
83950
  friend class ::PragmaOnce;
 
83951
  friend class ::CMatchSyntax;
 
83952
 
 
83953
#line 1650 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
83954
 
 
83955
  CTree *sons[4]; // open, type, close, expr
 
83956
 
 
83957
public:
 
83958
  /** Constructor.
 
83959
   *  \param o Left parenthesis of the type name.
 
83960
   *  \param t The type to cast to.
 
83961
   *  \param c Right parenthesis of the type name. 
 
83962
   *  \param e The expression to cast. */
 
83963
  CT_CastExpr (CTree *o, CTree *t, CTree *c, CTree *e) {
 
83964
    AddSon (sons[0], o); AddSon (sons[1], t); 
 
83965
    AddSon (sons[2], c); AddSon (sons[3], e);
 
83966
  }
 
83967
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
83968
  static const char *NodeId ();
 
83969
  /** Get the name of the node. Can be compared with NodeId(). */
 
83970
  const char *NodeName () const { return NodeId (); }
 
83971
  /** Get the number of sons. */
 
83972
  int Sons () const { return 4; }
 
83973
  /** Get the n-th son.
 
83974
   *  \param n The index of the son.
 
83975
   *  \return The n-th son or NULL. */
 
83976
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
83977
  /** Replace a son.
 
83978
   *  \param old_son The son to replace.
 
83979
   *  \param new_son The new son. */
 
83980
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
83981
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
83982
  }
 
83983
  /** Get the casted expression. */
 
83984
  CTree *Expr () const { return sons[3]; }
 
83985
  /** Get the type to cast to. */
 
83986
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
83987
   private:
 
83988
  typedef CT_CastExpr CCExprResolveExpr;
 
83989
 
 
83990
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
83991
 public :
 
83992
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
83993
  typedef CT_CastExpr CExprResolveExpr;
 
83994
 
 
83995
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
83996
 public :
 
83997
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
83998
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
83999
  const char *__attr_name (unsigned i) const {
 
84000
    static const char *names[] = { "sons" }; return names[i];
 
84001
  }
 
84002
  const void *__attr (unsigned __i) const {
 
84003
    switch (__i) { case 0: return &sons; default: return 0; }
 
84004
  }
 
84005
#line 1683 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84006
};
 
84007
 
 
84008
/** \class CT_StaticCast CTree.h Puma/CTree.h
 
84009
 *  Tree node representing a static cast.
 
84010
 *  Example: \code static_cast<int>(a) \endcode */
 
84011
 
 
84012
#line 84013 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84013
} // closed Puma
 
84014
class CCExprResolve;
 
84015
class CExprResolve;
 
84016
class WinIfExists;
 
84017
class WinImportHandler;
 
84018
class WinMacros;
 
84019
class WinAsm;
 
84020
class WinDeclSpecs;
 
84021
class WinMemberExplSpec;
 
84022
class WinTypeKeywords;
 
84023
class WinFriend;
 
84024
class ExtAC;
 
84025
class ExtACBuilderCoupling;
 
84026
class ExtACSyntaxCoupling;
 
84027
class ExtACTree;
 
84028
class ExtACKeywords;
 
84029
class ExtGnu;
 
84030
class PragmaOnceUnitState;
 
84031
class PragmaOnce;
 
84032
class CMatchSyntax;
 
84033
namespace Puma {
 
84034
 
 
84035
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84036
 
 
84037
#line 84038 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84038
} // closed Puma
 
84039
 
 
84040
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84041
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84042
#include "CCExprResolveH.ah"
 
84043
#endif
 
84044
namespace Puma {
 
84045
 
 
84046
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84047
 
 
84048
#line 84049 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84049
} // closed Puma
 
84050
 
 
84051
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84052
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84053
#include "CExprResolveH.ah"
 
84054
#endif
 
84055
namespace Puma {
 
84056
 
 
84057
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84058
class CT_StaticCast : public CT_Expression {
 
84059
#line 84060 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84060
  friend class ::CCExprResolve;
 
84061
  friend class ::CExprResolve;
 
84062
  friend class ::WinIfExists;
 
84063
  friend class ::WinImportHandler;
 
84064
  friend class ::WinMacros;
 
84065
  friend class ::WinAsm;
 
84066
  friend class ::WinDeclSpecs;
 
84067
  friend class ::WinMemberExplSpec;
 
84068
  friend class ::WinTypeKeywords;
 
84069
  friend class ::WinFriend;
 
84070
  friend class ::ExtAC;
 
84071
  friend class ::ExtACBuilderCoupling;
 
84072
  friend class ::ExtACSyntaxCoupling;
 
84073
  friend class ::ExtACTree;
 
84074
  friend class ::ExtACKeywords;
 
84075
  friend class ::ExtGnu;
 
84076
  friend class ::PragmaOnceUnitState;
 
84077
  friend class ::PragmaOnce;
 
84078
  friend class ::CMatchSyntax;
 
84079
 
 
84080
#line 1688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84081
 
 
84082
  CTree *sons[5]; // cast, open, type, close, expr
 
84083
 
 
84084
public:
 
84085
  /** Constructor.
 
84086
   *  \param cst The cast operator, i.e. 'static_cast'.
 
84087
   *  \param o Left arrow bracket of the type name.
 
84088
   *  \param t The type to cast to.
 
84089
   *  \param c Right array bracket of the type name.
 
84090
   *  \param e The expression to cast. */
 
84091
  CT_StaticCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) {
 
84092
    AddSon (sons[0], cst); AddSon (sons[1], o); AddSon (sons[2], t); 
 
84093
    AddSon (sons[3], c); AddSon (sons[4], e);
 
84094
  }
 
84095
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
84096
  static const char *NodeId ();
 
84097
  /** Get the name of the node. Can be compared with NodeId(). */
 
84098
  const char *NodeName () const { return NodeId (); }
 
84099
  /** Get the number of sons. */
 
84100
  int Sons () const { return 5; }
 
84101
  /** Get the n-th son.
 
84102
   *  \param n The index of the son.
 
84103
   *  \return The n-th son or NULL. */
 
84104
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
84105
  /** Replace a son.
 
84106
   *  \param old_son The son to replace.
 
84107
   *  \param new_son The new son. */
 
84108
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
84109
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
84110
  }
 
84111
  /** Get the casted expression. */
 
84112
  CTree *Expr () const { return sons[4]; }
 
84113
  /** Get the type to cast to. */
 
84114
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
84115
   private:
 
84116
  typedef CT_StaticCast CCExprResolveExpr;
 
84117
 
 
84118
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
84119
 public :
 
84120
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
84121
  typedef CT_StaticCast CExprResolveExpr;
 
84122
 
 
84123
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
84124
 public :
 
84125
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
84126
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
84127
  const char *__attr_name (unsigned i) const {
 
84128
    static const char *names[] = { "sons" }; return names[i];
 
84129
  }
 
84130
  const void *__attr (unsigned __i) const {
 
84131
    switch (__i) { case 0: return &sons; default: return 0; }
 
84132
  }
 
84133
#line 1722 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84134
};
 
84135
 
 
84136
/** \class CT_ConstCast CTree.h Puma/CTree.h
 
84137
 *  Tree node representing a const cast.
 
84138
 *  Example: \code const_cast<int>(a) \endcode */
 
84139
 
 
84140
#line 84141 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84141
} // closed Puma
 
84142
class CCExprResolve;
 
84143
class CExprResolve;
 
84144
class WinIfExists;
 
84145
class WinImportHandler;
 
84146
class WinMacros;
 
84147
class WinAsm;
 
84148
class WinDeclSpecs;
 
84149
class WinMemberExplSpec;
 
84150
class WinTypeKeywords;
 
84151
class WinFriend;
 
84152
class ExtAC;
 
84153
class ExtACBuilderCoupling;
 
84154
class ExtACSyntaxCoupling;
 
84155
class ExtACTree;
 
84156
class ExtACKeywords;
 
84157
class ExtGnu;
 
84158
class PragmaOnceUnitState;
 
84159
class PragmaOnce;
 
84160
class CMatchSyntax;
 
84161
namespace Puma {
 
84162
 
 
84163
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84164
 
 
84165
#line 84166 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84166
} // closed Puma
 
84167
 
 
84168
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84169
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84170
#include "CCExprResolveH.ah"
 
84171
#endif
 
84172
namespace Puma {
 
84173
 
 
84174
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84175
 
 
84176
#line 84177 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84177
} // closed Puma
 
84178
 
 
84179
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84180
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84181
#include "CExprResolveH.ah"
 
84182
#endif
 
84183
namespace Puma {
 
84184
 
 
84185
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84186
class CT_ConstCast : public CT_StaticCast {
 
84187
#line 84188 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84188
  friend class ::CCExprResolve;
 
84189
  friend class ::CExprResolve;
 
84190
  friend class ::WinIfExists;
 
84191
  friend class ::WinImportHandler;
 
84192
  friend class ::WinMacros;
 
84193
  friend class ::WinAsm;
 
84194
  friend class ::WinDeclSpecs;
 
84195
  friend class ::WinMemberExplSpec;
 
84196
  friend class ::WinTypeKeywords;
 
84197
  friend class ::WinFriend;
 
84198
  friend class ::ExtAC;
 
84199
  friend class ::ExtACBuilderCoupling;
 
84200
  friend class ::ExtACSyntaxCoupling;
 
84201
  friend class ::ExtACTree;
 
84202
  friend class ::ExtACKeywords;
 
84203
  friend class ::ExtGnu;
 
84204
  friend class ::PragmaOnceUnitState;
 
84205
  friend class ::PragmaOnce;
 
84206
  friend class ::CMatchSyntax;
 
84207
 
 
84208
#line 1727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84209
 
 
84210
public:
 
84211
  /** Constructor.
 
84212
   *  \param cst The cast operator, i.e. 'const_cast'.
 
84213
   *  \param o Left arrow bracket of the type name.
 
84214
   *  \param t The type to cast to.
 
84215
   *  \param c Right array bracket of the type name.
 
84216
   *  \param e The expression to cast. */
 
84217
  CT_ConstCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
84218
    CT_StaticCast (cst, o, t, c, e) {}
 
84219
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
84220
  static const char *NodeId ();
 
84221
  /** Get the name of the node. Can be compared with NodeId(). */
 
84222
  const char *NodeName () const { return NodeId (); }
 
84223
   private:
 
84224
  typedef CT_ConstCast CCExprResolveExpr;
 
84225
 
 
84226
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
84227
 public :
 
84228
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
84229
  typedef CT_ConstCast CExprResolveExpr;
 
84230
 
 
84231
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
84232
 public :
 
84233
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
84234
  typedef AC::TLE __AttrTypes;
 
84235
  const char *__attr_name (unsigned i) const { return 0; }
 
84236
  const void *__attr (unsigned __i) const { return 0; }
 
84237
#line 1741 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84238
};
 
84239
 
 
84240
/** \class CT_ReintCast CTree.h Puma/CTree.h
 
84241
 *  Tree node representing a reinterpret cast.
 
84242
 *  Example: \code reinterpret_cast<int>(a) \endcode */
 
84243
 
 
84244
#line 84245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84245
} // closed Puma
 
84246
class CCExprResolve;
 
84247
class CExprResolve;
 
84248
class WinIfExists;
 
84249
class WinImportHandler;
 
84250
class WinMacros;
 
84251
class WinAsm;
 
84252
class WinDeclSpecs;
 
84253
class WinMemberExplSpec;
 
84254
class WinTypeKeywords;
 
84255
class WinFriend;
 
84256
class ExtAC;
 
84257
class ExtACBuilderCoupling;
 
84258
class ExtACSyntaxCoupling;
 
84259
class ExtACTree;
 
84260
class ExtACKeywords;
 
84261
class ExtGnu;
 
84262
class PragmaOnceUnitState;
 
84263
class PragmaOnce;
 
84264
class CMatchSyntax;
 
84265
namespace Puma {
 
84266
 
 
84267
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84268
 
 
84269
#line 84270 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84270
} // closed Puma
 
84271
 
 
84272
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84273
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84274
#include "CCExprResolveH.ah"
 
84275
#endif
 
84276
namespace Puma {
 
84277
 
 
84278
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84279
 
 
84280
#line 84281 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84281
} // closed Puma
 
84282
 
 
84283
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84284
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84285
#include "CExprResolveH.ah"
 
84286
#endif
 
84287
namespace Puma {
 
84288
 
 
84289
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84290
class CT_ReintCast : public CT_StaticCast {
 
84291
#line 84292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84292
  friend class ::CCExprResolve;
 
84293
  friend class ::CExprResolve;
 
84294
  friend class ::WinIfExists;
 
84295
  friend class ::WinImportHandler;
 
84296
  friend class ::WinMacros;
 
84297
  friend class ::WinAsm;
 
84298
  friend class ::WinDeclSpecs;
 
84299
  friend class ::WinMemberExplSpec;
 
84300
  friend class ::WinTypeKeywords;
 
84301
  friend class ::WinFriend;
 
84302
  friend class ::ExtAC;
 
84303
  friend class ::ExtACBuilderCoupling;
 
84304
  friend class ::ExtACSyntaxCoupling;
 
84305
  friend class ::ExtACTree;
 
84306
  friend class ::ExtACKeywords;
 
84307
  friend class ::ExtGnu;
 
84308
  friend class ::PragmaOnceUnitState;
 
84309
  friend class ::PragmaOnce;
 
84310
  friend class ::CMatchSyntax;
 
84311
 
 
84312
#line 1746 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84313
 
 
84314
public:
 
84315
  /** Constructor.
 
84316
   *  \param cst The cast operator, i.e. 'reinterpret_cast'.
 
84317
   *  \param o Left arrow bracket of the type name.
 
84318
   *  \param t The type to cast to.
 
84319
   *  \param c Right array bracket of the type name.
 
84320
   *  \param e The expression to cast. */
 
84321
  CT_ReintCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
84322
    CT_StaticCast (cst, o, t, c, e) {}
 
84323
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
84324
  static const char *NodeId ();
 
84325
  /** Get the name of the node. Can be compared with NodeId(). */
 
84326
  const char *NodeName () const { return NodeId (); }
 
84327
   private:
 
84328
  typedef CT_ReintCast CCExprResolveExpr;
 
84329
 
 
84330
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
84331
 public :
 
84332
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
84333
  typedef CT_ReintCast CExprResolveExpr;
 
84334
 
 
84335
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
84336
 public :
 
84337
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
84338
  typedef AC::TLE __AttrTypes;
 
84339
  const char *__attr_name (unsigned i) const { return 0; }
 
84340
  const void *__attr (unsigned __i) const { return 0; }
 
84341
#line 1760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84342
};
 
84343
 
 
84344
/** \class CT_DynamicCast CTree.h Puma/CTree.h
 
84345
 *  Tree node representing a dynamic cast.
 
84346
 *  Example: \code dynamic_cast<int>(a) \endcode */
 
84347
 
 
84348
#line 84349 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84349
} // closed Puma
 
84350
class CCExprResolve;
 
84351
class CExprResolve;
 
84352
class WinIfExists;
 
84353
class WinImportHandler;
 
84354
class WinMacros;
 
84355
class WinAsm;
 
84356
class WinDeclSpecs;
 
84357
class WinMemberExplSpec;
 
84358
class WinTypeKeywords;
 
84359
class WinFriend;
 
84360
class ExtAC;
 
84361
class ExtACBuilderCoupling;
 
84362
class ExtACSyntaxCoupling;
 
84363
class ExtACTree;
 
84364
class ExtACKeywords;
 
84365
class ExtGnu;
 
84366
class PragmaOnceUnitState;
 
84367
class PragmaOnce;
 
84368
class CMatchSyntax;
 
84369
namespace Puma {
 
84370
 
 
84371
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84372
 
 
84373
#line 84374 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84374
} // closed Puma
 
84375
 
 
84376
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84377
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84378
#include "CCExprResolveH.ah"
 
84379
#endif
 
84380
namespace Puma {
 
84381
 
 
84382
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84383
 
 
84384
#line 84385 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84385
} // closed Puma
 
84386
 
 
84387
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84388
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84389
#include "CExprResolveH.ah"
 
84390
#endif
 
84391
namespace Puma {
 
84392
 
 
84393
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84394
class CT_DynamicCast : public CT_StaticCast {
 
84395
#line 84396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84396
  friend class ::CCExprResolve;
 
84397
  friend class ::CExprResolve;
 
84398
  friend class ::WinIfExists;
 
84399
  friend class ::WinImportHandler;
 
84400
  friend class ::WinMacros;
 
84401
  friend class ::WinAsm;
 
84402
  friend class ::WinDeclSpecs;
 
84403
  friend class ::WinMemberExplSpec;
 
84404
  friend class ::WinTypeKeywords;
 
84405
  friend class ::WinFriend;
 
84406
  friend class ::ExtAC;
 
84407
  friend class ::ExtACBuilderCoupling;
 
84408
  friend class ::ExtACSyntaxCoupling;
 
84409
  friend class ::ExtACTree;
 
84410
  friend class ::ExtACKeywords;
 
84411
  friend class ::ExtGnu;
 
84412
  friend class ::PragmaOnceUnitState;
 
84413
  friend class ::PragmaOnce;
 
84414
  friend class ::CMatchSyntax;
 
84415
 
 
84416
#line 1765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84417
 
 
84418
public:
 
84419
  /** Constructor.
 
84420
   *  \param cst The cast operator, i.e. 'dynamic_cast'.
 
84421
   *  \param o Left arrow bracket of the type name.
 
84422
   *  \param t The type to cast to.
 
84423
   *  \param c Right array bracket of the type name.
 
84424
   *  \param e The expression to cast. */
 
84425
  CT_DynamicCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
84426
    CT_StaticCast (cst, o, t, c, e) {}
 
84427
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
84428
  static const char *NodeId ();
 
84429
  /** Get the name of the node. Can be compared with NodeId(). */
 
84430
  const char *NodeName () const { return NodeId (); }
 
84431
   private:
 
84432
  typedef CT_DynamicCast CCExprResolveExpr;
 
84433
 
 
84434
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
84435
 public :
 
84436
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
84437
  typedef CT_DynamicCast CExprResolveExpr;
 
84438
 
 
84439
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
84440
 public :
 
84441
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
84442
  typedef AC::TLE __AttrTypes;
 
84443
  const char *__attr_name (unsigned i) const { return 0; }
 
84444
  const void *__attr (unsigned __i) const { return 0; }
 
84445
#line 1779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84446
};
 
84447
 
 
84448
/** \class CT_ImplicitCast CTree.h Puma/CTree.h
 
84449
 *  Tree node representing an implicit cast.
 
84450
 *  Example: 
 
84451
 *  \code 
 
84452
 * int i = 1.2;  // implicit cast from float to int 
 
84453
 *  \endcode */
 
84454
 
 
84455
#line 84456 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84456
} // closed Puma
 
84457
class CCExprResolve;
 
84458
class CExprResolve;
 
84459
class WinIfExists;
 
84460
class WinImportHandler;
 
84461
class WinMacros;
 
84462
class WinAsm;
 
84463
class WinDeclSpecs;
 
84464
class WinMemberExplSpec;
 
84465
class WinTypeKeywords;
 
84466
class WinFriend;
 
84467
class ExtAC;
 
84468
class ExtACBuilderCoupling;
 
84469
class ExtACSyntaxCoupling;
 
84470
class ExtACTree;
 
84471
class ExtACKeywords;
 
84472
class ExtGnu;
 
84473
class PragmaOnceUnitState;
 
84474
class PragmaOnce;
 
84475
class CMatchSyntax;
 
84476
namespace Puma {
 
84477
 
 
84478
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84479
 
 
84480
#line 84481 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84481
} // closed Puma
 
84482
 
 
84483
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84484
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84485
#include "CCExprResolveH.ah"
 
84486
#endif
 
84487
namespace Puma {
 
84488
 
 
84489
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84490
 
 
84491
#line 84492 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84492
} // closed Puma
 
84493
 
 
84494
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84495
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84496
#include "CExprResolveH.ah"
 
84497
#endif
 
84498
namespace Puma {
 
84499
 
 
84500
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84501
class CT_ImplicitCast : public CT_Expression {
 
84502
#line 84503 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84503
  friend class ::CCExprResolve;
 
84504
  friend class ::CExprResolve;
 
84505
  friend class ::WinIfExists;
 
84506
  friend class ::WinImportHandler;
 
84507
  friend class ::WinMacros;
 
84508
  friend class ::WinAsm;
 
84509
  friend class ::WinDeclSpecs;
 
84510
  friend class ::WinMemberExplSpec;
 
84511
  friend class ::WinTypeKeywords;
 
84512
  friend class ::WinFriend;
 
84513
  friend class ::ExtAC;
 
84514
  friend class ::ExtACBuilderCoupling;
 
84515
  friend class ::ExtACSyntaxCoupling;
 
84516
  friend class ::ExtACTree;
 
84517
  friend class ::ExtACKeywords;
 
84518
  friend class ::ExtGnu;
 
84519
  friend class ::PragmaOnceUnitState;
 
84520
  friend class ::PragmaOnce;
 
84521
  friend class ::CMatchSyntax;
 
84522
 
 
84523
#line 1787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84524
 
 
84525
  CTree *_expr; // casted expression
 
84526
 
 
84527
public:
 
84528
  /** Constructor.
 
84529
   *  \param e The expression that is implicitely casted. */
 
84530
  CT_ImplicitCast (CTree *e) { AddSon (_expr, e); }
 
84531
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
84532
  static const char *NodeId ();
 
84533
  /** Get the name of the node. Can be compared with NodeId(). */
 
84534
  const char *NodeName () const { return NodeId (); }
 
84535
  /** Get the number of sons. */
 
84536
  int Sons () const { return 1; }
 
84537
  /** Get the n-th son.
 
84538
   *  \param n The index of the son.
 
84539
   *  \return The n-th son or NULL. */
 
84540
  CTree *Son (int n) const { return n == 0 ? _expr : (CTree*)0; }
 
84541
  /** Get the casted expression. */
 
84542
  CTree *Expr () const { return _expr; }
 
84543
  /** Replace a son.
 
84544
   *  \param old_son The son to replace.
 
84545
   *  \param new_son The new son. */
 
84546
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
84547
   { CTree::ReplaceSon (_expr, old_son, new_son); }
 
84548
   private:
 
84549
  typedef CT_ImplicitCast CCExprResolveExpr;
 
84550
 
 
84551
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
84552
 public :
 
84553
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
84554
  typedef CT_ImplicitCast CExprResolveExpr;
 
84555
 
 
84556
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
84557
 public :
 
84558
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
84559
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
84560
  const char *__attr_name (unsigned i) const {
 
84561
    static const char *names[] = { "_expr" }; return names[i];
 
84562
  }
 
84563
  const void *__attr (unsigned __i) const {
 
84564
    switch (__i) { case 0: return &_expr; default: return 0; }
 
84565
  }
 
84566
#line 1811 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84567
};
 
84568
 
 
84569
/** \class CT_TypeidExpr CTree.h Puma/CTree.h
 
84570
 *  Tree node representing a typeid expression.
 
84571
 *  Example: \code typeid(X) \endcode */
 
84572
 
 
84573
#line 84574 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84574
} // closed Puma
 
84575
class CCExprResolve;
 
84576
class CExprResolve;
 
84577
class WinIfExists;
 
84578
class WinImportHandler;
 
84579
class WinMacros;
 
84580
class WinAsm;
 
84581
class WinDeclSpecs;
 
84582
class WinMemberExplSpec;
 
84583
class WinTypeKeywords;
 
84584
class WinFriend;
 
84585
class ExtAC;
 
84586
class ExtACBuilderCoupling;
 
84587
class ExtACSyntaxCoupling;
 
84588
class ExtACTree;
 
84589
class ExtACKeywords;
 
84590
class ExtGnu;
 
84591
class PragmaOnceUnitState;
 
84592
class PragmaOnce;
 
84593
class CMatchSyntax;
 
84594
namespace Puma {
 
84595
 
 
84596
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84597
 
 
84598
#line 84599 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84599
} // closed Puma
 
84600
 
 
84601
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84602
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84603
#include "CCExprResolveH.ah"
 
84604
#endif
 
84605
namespace Puma {
 
84606
 
 
84607
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84608
 
 
84609
#line 84610 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84610
} // closed Puma
 
84611
 
 
84612
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84613
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84614
#include "CExprResolveH.ah"
 
84615
#endif
 
84616
namespace Puma {
 
84617
 
 
84618
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84619
class CT_TypeidExpr : public CT_Expression {
 
84620
#line 84621 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84621
  friend class ::CCExprResolve;
 
84622
  friend class ::CExprResolve;
 
84623
  friend class ::WinIfExists;
 
84624
  friend class ::WinImportHandler;
 
84625
  friend class ::WinMacros;
 
84626
  friend class ::WinAsm;
 
84627
  friend class ::WinDeclSpecs;
 
84628
  friend class ::WinMemberExplSpec;
 
84629
  friend class ::WinTypeKeywords;
 
84630
  friend class ::WinFriend;
 
84631
  friend class ::ExtAC;
 
84632
  friend class ::ExtACBuilderCoupling;
 
84633
  friend class ::ExtACSyntaxCoupling;
 
84634
  friend class ::ExtACTree;
 
84635
  friend class ::ExtACKeywords;
 
84636
  friend class ::ExtGnu;
 
84637
  friend class ::PragmaOnceUnitState;
 
84638
  friend class ::PragmaOnce;
 
84639
  friend class ::CMatchSyntax;
 
84640
 
 
84641
#line 1816 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84642
 
 
84643
  CTree *sons[4]; // typeid, open, type_id/expr, close
 
84644
 
 
84645
public:
 
84646
  /** Constructor.
 
84647
   *  \param tid The 'typeid' operator.
 
84648
   *  \param o The left parenthesis of the type name or expression.
 
84649
   *  \param e The expression or type name for which to get the type identifier.
 
84650
   *  \param c The right parenthesis of the type name or expression. */
 
84651
  CT_TypeidExpr (CTree *tid, CTree *o, CTree *e, CTree *c) {
 
84652
    AddSon (sons[0], tid); AddSon (sons[1], o); 
 
84653
    AddSon (sons[2], e); AddSon (sons[3], c);
 
84654
  }
 
84655
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
84656
  static const char *NodeId ();
 
84657
  /** Get the name of the node. Can be compared with NodeId(). */
 
84658
  const char *NodeName () const { return NodeId (); }
 
84659
  /** Get the number of sons. */
 
84660
  int Sons () const { return 4; }
 
84661
  /** Get the n-th son.
 
84662
   *  \param n The index of the son.
 
84663
   *  \return The n-th son or NULL. */
 
84664
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
84665
  /** Replace a son.
 
84666
   *  \param old_son The son to replace.
 
84667
   *  \param new_son The new son. */
 
84668
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
84669
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
84670
  }
 
84671
  /** Get the typeid argument, i.e. the expression or type name for
 
84672
   *  which to get the type identifier. */
 
84673
  CTree *Arg () const { return sons[2]; }
 
84674
   private:
 
84675
  typedef CT_TypeidExpr CCExprResolveExpr;
 
84676
 
 
84677
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
84678
 public :
 
84679
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
84680
  typedef CT_TypeidExpr CExprResolveExpr;
 
84681
 
 
84682
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
84683
 public :
 
84684
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
84685
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
84686
  const char *__attr_name (unsigned i) const {
 
84687
    static const char *names[] = { "sons" }; return names[i];
 
84688
  }
 
84689
  const void *__attr (unsigned __i) const {
 
84690
    switch (__i) { case 0: return &sons; default: return 0; }
 
84691
  }
 
84692
#line 1848 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84693
};
 
84694
 
 
84695
/** \class CT_SizeofExpr CTree.h Puma/CTree.h
 
84696
 *  Tree node representing a sizeof expression.
 
84697
 *  Example: \code sizeof(int*) \endcode */
 
84698
 
 
84699
#line 84700 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84700
} // closed Puma
 
84701
class CCExprResolve;
 
84702
class CExprResolve;
 
84703
class WinIfExists;
 
84704
class WinImportHandler;
 
84705
class WinMacros;
 
84706
class WinAsm;
 
84707
class WinDeclSpecs;
 
84708
class WinMemberExplSpec;
 
84709
class WinTypeKeywords;
 
84710
class WinFriend;
 
84711
class ExtAC;
 
84712
class ExtACBuilderCoupling;
 
84713
class ExtACSyntaxCoupling;
 
84714
class ExtACTree;
 
84715
class ExtACKeywords;
 
84716
class ExtGnu;
 
84717
class PragmaOnceUnitState;
 
84718
class PragmaOnce;
 
84719
class CMatchSyntax;
 
84720
namespace Puma {
 
84721
 
 
84722
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84723
 
 
84724
#line 84725 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84725
} // closed Puma
 
84726
 
 
84727
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84728
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84729
#include "CCExprResolveH.ah"
 
84730
#endif
 
84731
namespace Puma {
 
84732
 
 
84733
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84734
 
 
84735
#line 84736 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84736
} // closed Puma
 
84737
 
 
84738
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84739
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84740
#include "CExprResolveH.ah"
 
84741
#endif
 
84742
namespace Puma {
 
84743
 
 
84744
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84745
class CT_SizeofExpr : public CT_Expression {
 
84746
#line 84747 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84747
  friend class ::CCExprResolve;
 
84748
  friend class ::CExprResolve;
 
84749
  friend class ::WinIfExists;
 
84750
  friend class ::WinImportHandler;
 
84751
  friend class ::WinMacros;
 
84752
  friend class ::WinAsm;
 
84753
  friend class ::WinDeclSpecs;
 
84754
  friend class ::WinMemberExplSpec;
 
84755
  friend class ::WinTypeKeywords;
 
84756
  friend class ::WinFriend;
 
84757
  friend class ::ExtAC;
 
84758
  friend class ::ExtACBuilderCoupling;
 
84759
  friend class ::ExtACSyntaxCoupling;
 
84760
  friend class ::ExtACTree;
 
84761
  friend class ::ExtACKeywords;
 
84762
  friend class ::ExtGnu;
 
84763
  friend class ::PragmaOnceUnitState;
 
84764
  friend class ::PragmaOnce;
 
84765
  friend class ::CMatchSyntax;
 
84766
 
 
84767
#line 1853 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84768
 
 
84769
  CTree *sons[5]; // key, open, type, close, expr
 
84770
 
 
84771
public:
 
84772
  /** Constructor.
 
84773
   *  \param k The 'sizeof' keyword.
 
84774
   *  \param o Left parenthesis around the type name.
 
84775
   *  \param t The type from which to get the size.
 
84776
   *  \param c Right parenthesis around the type name. */
 
84777
  CT_SizeofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
84778
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
84779
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
84780
  }
 
84781
  /** Constructor.
 
84782
   *  \param k The 'sizeof' keyword.
 
84783
   *  \param e The expression from which to get the size. */
 
84784
  CT_SizeofExpr (CTree *k, CTree *e) {
 
84785
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
84786
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
84787
  }
 
84788
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
84789
  static const char *NodeId ();
 
84790
  /** Get the name of the node. Can be compared with NodeId(). */
 
84791
  const char *NodeName () const { return NodeId (); }
 
84792
  /** Get the number of sons. */
 
84793
  int Sons () const { return CTree::Sons (sons, 5); }
 
84794
  /** Get the n-th son.
 
84795
   *  \param n The index of the son.
 
84796
   *  \return The n-th son or NULL. */
 
84797
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
84798
  /** Replace a son.
 
84799
   *  \param old_son The son to replace.
 
84800
   *  \param new_son The new son. */
 
84801
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
84802
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
84803
  }
 
84804
  /** Get the expression. */
 
84805
  CTree *Expr () const { return sons[4]; }
 
84806
  /** Get the type name. */
 
84807
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
84808
   private:
 
84809
  typedef CT_SizeofExpr CCExprResolveExpr;
 
84810
 
 
84811
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
84812
 public :
 
84813
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
84814
  typedef CT_SizeofExpr CExprResolveExpr;
 
84815
 
 
84816
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
84817
 public :
 
84818
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
84819
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
84820
  const char *__attr_name (unsigned i) const {
 
84821
    static const char *names[] = { "sons" }; return names[i];
 
84822
  }
 
84823
  const void *__attr (unsigned __i) const {
 
84824
    switch (__i) { case 0: return &sons; default: return 0; }
 
84825
  }
 
84826
#line 1893 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84827
};
 
84828
 
 
84829
/** \class CT_IndexDesignator CTree.h Puma/CTree.h
 
84830
 *  Tree node representing an index designator.
 
84831
 *  Example: \code [1] \endcode */
 
84832
 
 
84833
#line 84834 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84834
} // closed Puma
 
84835
class CCExprResolve;
 
84836
class CExprResolve;
 
84837
class WinIfExists;
 
84838
class WinImportHandler;
 
84839
class WinMacros;
 
84840
class WinAsm;
 
84841
class WinDeclSpecs;
 
84842
class WinMemberExplSpec;
 
84843
class WinTypeKeywords;
 
84844
class WinFriend;
 
84845
class ExtAC;
 
84846
class ExtACBuilderCoupling;
 
84847
class ExtACSyntaxCoupling;
 
84848
class ExtACTree;
 
84849
class ExtACKeywords;
 
84850
class ExtGnu;
 
84851
class PragmaOnceUnitState;
 
84852
class PragmaOnce;
 
84853
class CMatchSyntax;
 
84854
namespace Puma {
 
84855
 
 
84856
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84857
 
 
84858
#line 84859 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84859
} // closed Puma
 
84860
 
 
84861
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84862
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84863
#include "CCExprResolveH.ah"
 
84864
#endif
 
84865
namespace Puma {
 
84866
 
 
84867
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84868
 
 
84869
#line 84870 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84870
} // closed Puma
 
84871
 
 
84872
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84873
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84874
#include "CExprResolveH.ah"
 
84875
#endif
 
84876
namespace Puma {
 
84877
 
 
84878
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84879
class CT_IndexDesignator : public CT_Expression {
 
84880
#line 84881 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84881
  friend class ::CCExprResolve;
 
84882
  friend class ::CExprResolve;
 
84883
  friend class ::WinIfExists;
 
84884
  friend class ::WinImportHandler;
 
84885
  friend class ::WinMacros;
 
84886
  friend class ::WinAsm;
 
84887
  friend class ::WinDeclSpecs;
 
84888
  friend class ::WinMemberExplSpec;
 
84889
  friend class ::WinTypeKeywords;
 
84890
  friend class ::WinFriend;
 
84891
  friend class ::ExtAC;
 
84892
  friend class ::ExtACBuilderCoupling;
 
84893
  friend class ::ExtACSyntaxCoupling;
 
84894
  friend class ::ExtACTree;
 
84895
  friend class ::ExtACKeywords;
 
84896
  friend class ::ExtGnu;
 
84897
  friend class ::PragmaOnceUnitState;
 
84898
  friend class ::PragmaOnce;
 
84899
  friend class ::CMatchSyntax;
 
84900
 
 
84901
#line 1898 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84902
 
 
84903
  CTree *sons[3]; // open, index, close
 
84904
 
 
84905
public:
 
84906
  /** Constructor.
 
84907
   *  \param o Left bracket of the index designator.
 
84908
   *  \param i The index expression.
 
84909
   *  \param c Right bracket of the index designator. */
 
84910
  CT_IndexDesignator (CTree *o, CTree *i, CTree *c) {
 
84911
    AddSon (sons[0], o); AddSon (sons[1], i); AddSon (sons[2], c);
 
84912
  }
 
84913
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
84914
  static const char *NodeId ();
 
84915
  /** Get the name of the node. Can be compared with NodeId(). */
 
84916
  const char *NodeName () const { return NodeId (); }
 
84917
  /** Get the number of sons. */
 
84918
  int Sons () const { return 3; }
 
84919
  /** Get the n-th son.
 
84920
   *  \param n The index of the son.
 
84921
   *  \return The n-th son or NULL. */
 
84922
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
84923
  /** Replace a son.
 
84924
   *  \param old_son The son to replace.
 
84925
   *  \param new_son The new son. */
 
84926
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
84927
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
84928
  }
 
84929
   private:
 
84930
  typedef CT_IndexDesignator CCExprResolveExpr;
 
84931
 
 
84932
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
84933
 public :
 
84934
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
84935
  typedef CT_IndexDesignator CExprResolveExpr;
 
84936
 
 
84937
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
84938
 public :
 
84939
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
84940
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
84941
  const char *__attr_name (unsigned i) const {
 
84942
    static const char *names[] = { "sons" }; return names[i];
 
84943
  }
 
84944
  const void *__attr (unsigned __i) const {
 
84945
    switch (__i) { case 0: return &sons; default: return 0; }
 
84946
  }
 
84947
#line 1925 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84948
};
 
84949
 
 
84950
/** \class CT_MembDesignator CTree.h Puma/CTree.h
 
84951
 *  Tree node representing a member designator.
 
84952
 *  Example: \code .a \endcode */
 
84953
 
 
84954
#line 84955 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84955
} // closed Puma
 
84956
class CCExprResolve;
 
84957
class CExprResolve;
 
84958
class WinIfExists;
 
84959
class WinImportHandler;
 
84960
class WinMacros;
 
84961
class WinAsm;
 
84962
class WinDeclSpecs;
 
84963
class WinMemberExplSpec;
 
84964
class WinTypeKeywords;
 
84965
class WinFriend;
 
84966
class ExtAC;
 
84967
class ExtACBuilderCoupling;
 
84968
class ExtACSyntaxCoupling;
 
84969
class ExtACTree;
 
84970
class ExtACKeywords;
 
84971
class ExtGnu;
 
84972
class PragmaOnceUnitState;
 
84973
class PragmaOnce;
 
84974
class CMatchSyntax;
 
84975
namespace Puma {
 
84976
 
 
84977
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84978
 
 
84979
#line 84980 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84980
} // closed Puma
 
84981
 
 
84982
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84983
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
84984
#include "CCExprResolveH.ah"
 
84985
#endif
 
84986
namespace Puma {
 
84987
 
 
84988
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
84989
 
 
84990
#line 84991 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
84991
} // closed Puma
 
84992
 
 
84993
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84994
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
84995
#include "CExprResolveH.ah"
 
84996
#endif
 
84997
namespace Puma {
 
84998
 
 
84999
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85000
class CT_MembDesignator : public CT_Expression {
 
85001
#line 85002 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85002
  friend class ::CCExprResolve;
 
85003
  friend class ::CExprResolve;
 
85004
  friend class ::WinIfExists;
 
85005
  friend class ::WinImportHandler;
 
85006
  friend class ::WinMacros;
 
85007
  friend class ::WinAsm;
 
85008
  friend class ::WinDeclSpecs;
 
85009
  friend class ::WinMemberExplSpec;
 
85010
  friend class ::WinTypeKeywords;
 
85011
  friend class ::WinFriend;
 
85012
  friend class ::ExtAC;
 
85013
  friend class ::ExtACBuilderCoupling;
 
85014
  friend class ::ExtACSyntaxCoupling;
 
85015
  friend class ::ExtACTree;
 
85016
  friend class ::ExtACKeywords;
 
85017
  friend class ::ExtGnu;
 
85018
  friend class ::PragmaOnceUnitState;
 
85019
  friend class ::PragmaOnce;
 
85020
  friend class ::CMatchSyntax;
 
85021
 
 
85022
#line 1930 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85023
 
 
85024
  CTree *sons[2]; // dot, member
 
85025
 
 
85026
public:
 
85027
  /** Constructor.
 
85028
   *  \param d The dot before the member name.
 
85029
   *  \param m The member name. */
 
85030
  CT_MembDesignator (CTree *d, CTree *m) { AddSon (sons[0], d); AddSon (sons[1], m); }
 
85031
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85032
  static const char *NodeId ();
 
85033
  /** Get the name of the node. Can be compared with NodeId(). */
 
85034
  const char *NodeName () const { return NodeId (); }
 
85035
  /** Get the number of sons. */
 
85036
  int Sons () const { return 2; }
 
85037
  /** Get the n-th son.
 
85038
   *  \param n The index of the son.
 
85039
   *  \return The n-th son or NULL. */
 
85040
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
85041
  /** Replace a son.
 
85042
   *  \param old_son The son to replace.
 
85043
   *  \param new_son The new son. */
 
85044
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
85045
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
85046
  }
 
85047
   private:
 
85048
  typedef CT_MembDesignator CCExprResolveExpr;
 
85049
 
 
85050
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
85051
 public :
 
85052
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
85053
  typedef CT_MembDesignator CExprResolveExpr;
 
85054
 
 
85055
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
85056
 public :
 
85057
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
85058
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
85059
  const char *__attr_name (unsigned i) const {
 
85060
    static const char *names[] = { "sons" }; return names[i];
 
85061
  }
 
85062
  const void *__attr (unsigned __i) const {
 
85063
    switch (__i) { case 0: return &sons; default: return 0; }
 
85064
  }
 
85065
#line 1954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85066
};
 
85067
 
 
85068
/** \class CT_DesignatorSeq CTree.h Puma/CTree.h
 
85069
 *  Tree node representing a designator sequence.
 
85070
 *  Example: \code .a.b.c \endcode */
 
85071
 
 
85072
#line 85073 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85073
} // closed Puma
 
85074
class CCExprResolve;
 
85075
class CExprResolve;
 
85076
class WinIfExists;
 
85077
class WinImportHandler;
 
85078
class WinMacros;
 
85079
class WinAsm;
 
85080
class WinDeclSpecs;
 
85081
class WinMemberExplSpec;
 
85082
class WinTypeKeywords;
 
85083
class WinFriend;
 
85084
class ExtAC;
 
85085
class ExtACBuilderCoupling;
 
85086
class ExtACSyntaxCoupling;
 
85087
class ExtACTree;
 
85088
class ExtACKeywords;
 
85089
class ExtGnu;
 
85090
class PragmaOnceUnitState;
 
85091
class PragmaOnce;
 
85092
class CMatchSyntax;
 
85093
namespace Puma {
 
85094
 
 
85095
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85096
class CT_DesignatorSeq : public CT_List, public CSemValue {
 
85097
#line 85098 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85098
  friend class ::CCExprResolve;
 
85099
  friend class ::CExprResolve;
 
85100
  friend class ::WinIfExists;
 
85101
  friend class ::WinImportHandler;
 
85102
  friend class ::WinMacros;
 
85103
  friend class ::WinAsm;
 
85104
  friend class ::WinDeclSpecs;
 
85105
  friend class ::WinMemberExplSpec;
 
85106
  friend class ::WinTypeKeywords;
 
85107
  friend class ::WinFriend;
 
85108
  friend class ::ExtAC;
 
85109
  friend class ::ExtACBuilderCoupling;
 
85110
  friend class ::ExtACSyntaxCoupling;
 
85111
  friend class ::ExtACTree;
 
85112
  friend class ::ExtACKeywords;
 
85113
  friend class ::ExtGnu;
 
85114
  friend class ::PragmaOnceUnitState;
 
85115
  friend class ::PragmaOnce;
 
85116
  friend class ::CMatchSyntax;
 
85117
 
 
85118
#line 1959 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85119
 
 
85120
public:
 
85121
  /** Constructor.
 
85122
   *  \param size Initial number of designators. */
 
85123
  CT_DesignatorSeq (int size = 1) : CT_List (size, 2) {}
 
85124
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85125
  static const char *NodeId ();
 
85126
  /** Get the name of the node. Can be compared with NodeId(). */
 
85127
  const char *NodeName () const { return NodeId (); }
 
85128
 
 
85129
  /** Get the type of the entity to initialize. */
 
85130
  CTypeInfo *Type () const { return type; }
 
85131
  /** Get the value of the entity to initialize. */
 
85132
  CExprValue *Value () const { return value; }
 
85133
  /** Get the semantic value object. */
 
85134
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
85135
public:
 
85136
  typedef AC::TLE __AttrTypes;
 
85137
  const char *__attr_name (unsigned i) const { return 0; }
 
85138
  const void *__attr (unsigned __i) const { return 0; }
 
85139
#line 1975 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85140
};
 
85141
 
 
85142
/*****************************************************************************/
 
85143
/*                                                                           */
 
85144
/*                         Declaration specifiers                            */
 
85145
/*                                                                           */
 
85146
/*****************************************************************************/
 
85147
 
 
85148
/** \class CT_DeclSpec CTree.h Puma/CTree.h
 
85149
 *  Base class for all tree nodes representing declaration specifiers. */
 
85150
 
 
85151
#line 85152 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85152
} // closed Puma
 
85153
class CCExprResolve;
 
85154
class CExprResolve;
 
85155
class WinIfExists;
 
85156
class WinImportHandler;
 
85157
class WinMacros;
 
85158
class WinAsm;
 
85159
class WinDeclSpecs;
 
85160
class WinMemberExplSpec;
 
85161
class WinTypeKeywords;
 
85162
class WinFriend;
 
85163
class ExtAC;
 
85164
class ExtACBuilderCoupling;
 
85165
class ExtACSyntaxCoupling;
 
85166
class ExtACTree;
 
85167
class ExtACKeywords;
 
85168
class ExtGnu;
 
85169
class PragmaOnceUnitState;
 
85170
class PragmaOnce;
 
85171
class CMatchSyntax;
 
85172
namespace Puma {
 
85173
 
 
85174
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85175
class CT_DeclSpec : public CTree {
 
85176
#line 85177 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85177
  friend class ::CCExprResolve;
 
85178
  friend class ::CExprResolve;
 
85179
  friend class ::WinIfExists;
 
85180
  friend class ::WinImportHandler;
 
85181
  friend class ::WinMacros;
 
85182
  friend class ::WinAsm;
 
85183
  friend class ::WinDeclSpecs;
 
85184
  friend class ::WinMemberExplSpec;
 
85185
  friend class ::WinTypeKeywords;
 
85186
  friend class ::WinFriend;
 
85187
  friend class ::ExtAC;
 
85188
  friend class ::ExtACBuilderCoupling;
 
85189
  friend class ::ExtACSyntaxCoupling;
 
85190
  friend class ::ExtACTree;
 
85191
  friend class ::ExtACKeywords;
 
85192
  friend class ::ExtGnu;
 
85193
  friend class ::PragmaOnceUnitState;
 
85194
  friend class ::PragmaOnce;
 
85195
  friend class ::CMatchSyntax;
 
85196
 
 
85197
#line 1985 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85198
 
 
85199
protected:
 
85200
  /** Constructor. */
 
85201
  CT_DeclSpec () {}
 
85202
public:
 
85203
  typedef AC::TLE __AttrTypes;
 
85204
  const char *__attr_name (unsigned i) const { return 0; }
 
85205
  const void *__attr (unsigned __i) const { return 0; }
 
85206
#line 1989 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85207
};
 
85208
 
 
85209
/** \class CT_PrimDeclSpec CTree.h Puma/CTree.h
 
85210
 *  Tree node representing a primitive declaration specifier. */
 
85211
 
 
85212
#line 85213 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85213
} // closed Puma
 
85214
class CCExprResolve;
 
85215
class CExprResolve;
 
85216
class WinIfExists;
 
85217
class WinImportHandler;
 
85218
class WinMacros;
 
85219
class WinAsm;
 
85220
class WinDeclSpecs;
 
85221
class WinMemberExplSpec;
 
85222
class WinTypeKeywords;
 
85223
class WinFriend;
 
85224
class ExtAC;
 
85225
class ExtACBuilderCoupling;
 
85226
class ExtACSyntaxCoupling;
 
85227
class ExtACTree;
 
85228
class ExtACKeywords;
 
85229
class ExtGnu;
 
85230
class PragmaOnceUnitState;
 
85231
class PragmaOnce;
 
85232
class CMatchSyntax;
 
85233
namespace Puma {
 
85234
 
 
85235
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85236
class CT_PrimDeclSpec : public CT_DeclSpec {
 
85237
#line 85238 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85238
  friend class ::CCExprResolve;
 
85239
  friend class ::CExprResolve;
 
85240
  friend class ::WinIfExists;
 
85241
  friend class ::WinImportHandler;
 
85242
  friend class ::WinMacros;
 
85243
  friend class ::WinAsm;
 
85244
  friend class ::WinDeclSpecs;
 
85245
  friend class ::WinMemberExplSpec;
 
85246
  friend class ::WinTypeKeywords;
 
85247
  friend class ::WinFriend;
 
85248
  friend class ::ExtAC;
 
85249
  friend class ::ExtACBuilderCoupling;
 
85250
  friend class ::ExtACSyntaxCoupling;
 
85251
  friend class ::ExtACTree;
 
85252
  friend class ::ExtACKeywords;
 
85253
  friend class ::ExtGnu;
 
85254
  friend class ::PragmaOnceUnitState;
 
85255
  friend class ::PragmaOnce;
 
85256
  friend class ::CMatchSyntax;
 
85257
 
 
85258
#line 1993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85259
 
 
85260
public:
 
85261
  /** Declaration specifier types. */
 
85262
  enum Type { 
 
85263
    PDS_FRIEND,    /** friend */
 
85264
    PDS_TYPEDEF,   /** typedef */
 
85265
    PDS_AUTO,      /** auto */
 
85266
    PDS_REGISTER,  /** register */
 
85267
    PDS_STATIC,    /** static */
 
85268
    PDS_EXTERN,    /** extern */
 
85269
    PDS_MUTABLE,   /** mutable */
 
85270
    PDS_INLINE,    /** inline */
 
85271
    PDS_VIRTUAL,   /** virtual */
 
85272
    PDS_EXPLICIT,  /** explicit */
 
85273
    PDS_CONST,     /** const */
 
85274
    PDS_VOLATILE,  /** volatile */
 
85275
    PDS_RESTRICT,  /** restrict */
 
85276
    PDS_CHAR,      /** char */
 
85277
    PDS_WCHAR_T,   /** wchar_t */
 
85278
    PDS_BOOL,      /** bool */
 
85279
    PDS_SHORT,     /** short */
 
85280
    PDS_INT,       /** int */
 
85281
    PDS_LONG,      /** long */
 
85282
    PDS_SIGNED,    /** signed */
 
85283
    PDS_UNSIGNED,  /** unsigned */
 
85284
    PDS_FLOAT,     /** float */
 
85285
    PDS_DOUBLE,    /** double */
 
85286
    PDS_VOID,      /** void */
 
85287
    // AspectC++ specific type specifier
 
85288
    PDS_UNKNOWN_T, /** unknown_t */
 
85289
    // Win specific declaration specifiers
 
85290
    PDS_CDECL,     /** __cdecl */
 
85291
    PDS_STDCALL,   /** __stdcall */
 
85292
    PDS_FASTCALL,  /** __fastcall */
 
85293
    PDS_INT64,     /** __int64 */
 
85294
    PDS_UNKNOWN,   /** Unknown declaration specifier. */
 
85295
    PDS_NUM        /** Number of declaration specifier types. */
 
85296
  };
 
85297
 
 
85298
private:
 
85299
  Type _type;
 
85300
  CTree *_token; // has to be a CT_Token
 
85301
 
 
85302
  void determine_type ();
 
85303
 
 
85304
public:
 
85305
  /** Constructor.
 
85306
   *  \param t The token containing the declaration specifier. */
 
85307
  CT_PrimDeclSpec (CT_Token *t) { AddSon (_token, (CTree*)t); determine_type (); }
 
85308
  /** Constructor.
 
85309
   *  \param t The declaration specifier type. */
 
85310
  CT_PrimDeclSpec (Type t) : _token (0) { _type = t; }
 
85311
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85312
  static const char *NodeId ();
 
85313
  /** Get the name of the node. Can be compared with NodeId(). */
 
85314
  const char *NodeName () const { return NodeId (); }
 
85315
  /** Get the number of sons. */
 
85316
  int Sons () const { return _token ? 1 : 0; }
 
85317
  /** Get the n-th son.
 
85318
   *  \param n The index of the son.
 
85319
   *  \return The n-th son or NULL. */
 
85320
  CTree *Son (int n) const 
 
85321
   { return (n == 0) ? _token : (CTree*)0; }
 
85322
  /** Get the textual representation of the declaration specifier.
 
85323
   *  \return The string representation or " ". */
 
85324
  const char *SpecText () const 
 
85325
   { return _token ? _token->token ()->text () : " "; }
 
85326
  /** Get the declaration specifier type. */
 
85327
  Type SpecType () const { return _type; }
 
85328
  /** Number of declaration specifier types. */
 
85329
  static const int NumTypes = PDS_NUM;
 
85330
  /** Replace a son.
 
85331
   *  \param old_son The son to replace.
 
85332
   *  \param new_son The new son. */
 
85333
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
85334
    CTree::ReplaceSon (_token, (CTree*)old_son, (CTree*)new_son);
 
85335
    determine_type ();
 
85336
  }
 
85337
public:
 
85338
  typedef AC::TL<Puma::CT_PrimDeclSpec::Type,AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
85339
  const char *__attr_name (unsigned i) const {
 
85340
    static const char *names[] = { "_type", "_token" }; return names[i];
 
85341
  }
 
85342
  const void *__attr (unsigned __i) const {
 
85343
    switch (__i) { case 31: return &_type; case 32: return &_token; default: return 0; }
 
85344
  }
 
85345
#line 2071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85346
};
 
85347
 
 
85348
/** \class CT_NamedType CTree.h Puma/CTree.h
 
85349
 *  Tree node representing a named type.
 
85350
 *  Example: \code (int*)a \endcode where int* is a 
 
85351
 *  type with a generated name. */
 
85352
 
 
85353
#line 85354 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85354
} // closed Puma
 
85355
class CCExprResolve;
 
85356
class CExprResolve;
 
85357
class WinIfExists;
 
85358
class WinImportHandler;
 
85359
class WinMacros;
 
85360
class WinAsm;
 
85361
class WinDeclSpecs;
 
85362
class WinMemberExplSpec;
 
85363
class WinTypeKeywords;
 
85364
class WinFriend;
 
85365
class ExtAC;
 
85366
class ExtACBuilderCoupling;
 
85367
class ExtACSyntaxCoupling;
 
85368
class ExtACTree;
 
85369
class ExtACKeywords;
 
85370
class ExtGnu;
 
85371
class PragmaOnceUnitState;
 
85372
class PragmaOnce;
 
85373
class CMatchSyntax;
 
85374
namespace Puma {
 
85375
 
 
85376
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85377
class CT_NamedType : public CT_DeclSpec, public CSemObject {
 
85378
#line 85379 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85379
  friend class ::CCExprResolve;
 
85380
  friend class ::CExprResolve;
 
85381
  friend class ::WinIfExists;
 
85382
  friend class ::WinImportHandler;
 
85383
  friend class ::WinMacros;
 
85384
  friend class ::WinAsm;
 
85385
  friend class ::WinDeclSpecs;
 
85386
  friend class ::WinMemberExplSpec;
 
85387
  friend class ::WinTypeKeywords;
 
85388
  friend class ::WinFriend;
 
85389
  friend class ::ExtAC;
 
85390
  friend class ::ExtACBuilderCoupling;
 
85391
  friend class ::ExtACSyntaxCoupling;
 
85392
  friend class ::ExtACTree;
 
85393
  friend class ::ExtACKeywords;
 
85394
  friend class ::ExtGnu;
 
85395
  friend class ::PragmaOnceUnitState;
 
85396
  friend class ::PragmaOnce;
 
85397
  friend class ::CMatchSyntax;
 
85398
 
 
85399
#line 2077 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85400
 
 
85401
  CTree *sons[2]; // declspecs, declarator
 
85402
 
 
85403
public:
 
85404
  /** Constructor.
 
85405
   *  \param dss The declaration specifier sequence of the type.
 
85406
   *  \param d The type declarator. */
 
85407
  CT_NamedType (CTree *dss, CTree *d) { AddSon (sons[0], dss); AddSon (sons[1], d); }
 
85408
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85409
  static const char *NodeId ();
 
85410
  /** Get the name of the node. Can be compared with NodeId(). */
 
85411
  const char *NodeName () const { return NodeId (); }
 
85412
  /** Get the number of sons. */
 
85413
  int Sons () const { return CTree::Sons (sons, 2); }
 
85414
  /** Get the n-th son.
 
85415
   *  \param n The index of the son.
 
85416
   *  \return The n-th son or NULL. */
 
85417
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
85418
  /** Get the declarator. */
 
85419
  CTree *Declarator () const { return sons[1]; }
 
85420
  /** Replace a son.
 
85421
   *  \param old_son The son to replace.
 
85422
   *  \param new_son The new son. */
 
85423
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
85424
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
85425
  }
 
85426
  /** Get the semantic information about the created temporary object. */
 
85427
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
85428
public:
 
85429
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
85430
  const char *__attr_name (unsigned i) const {
 
85431
    static const char *names[] = { "sons" }; return names[i];
 
85432
  }
 
85433
  const void *__attr (unsigned __i) const {
 
85434
    switch (__i) { case 0: return &sons; default: return 0; }
 
85435
  }
 
85436
#line 2105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85437
};
 
85438
      
 
85439
/** \class CT_ClassSpec CTree.h Puma/CTree.h
 
85440
 *  Tree node representing a class specifier.
 
85441
 *  Example: \code class X \endcode */
 
85442
 
 
85443
#line 85444 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85444
} // closed Puma
 
85445
class CCExprResolve;
 
85446
class CExprResolve;
 
85447
class WinIfExists;
 
85448
class WinImportHandler;
 
85449
class WinMacros;
 
85450
class WinAsm;
 
85451
class WinDeclSpecs;
 
85452
class WinMemberExplSpec;
 
85453
class WinTypeKeywords;
 
85454
class WinFriend;
 
85455
class ExtAC;
 
85456
class ExtACBuilderCoupling;
 
85457
class ExtACSyntaxCoupling;
 
85458
class ExtACTree;
 
85459
class ExtACKeywords;
 
85460
class ExtGnu;
 
85461
class PragmaOnceUnitState;
 
85462
class PragmaOnce;
 
85463
class CMatchSyntax;
 
85464
namespace Puma {
 
85465
 
 
85466
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85467
class CT_ClassSpec : public CT_DeclSpec, public CSemObject {
 
85468
#line 85469 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85469
  friend class ::CCExprResolve;
 
85470
  friend class ::CExprResolve;
 
85471
  friend class ::WinIfExists;
 
85472
  friend class ::WinImportHandler;
 
85473
  friend class ::WinMacros;
 
85474
  friend class ::WinAsm;
 
85475
  friend class ::WinDeclSpecs;
 
85476
  friend class ::WinMemberExplSpec;
 
85477
  friend class ::WinTypeKeywords;
 
85478
  friend class ::WinFriend;
 
85479
  friend class ::ExtAC;
 
85480
  friend class ::ExtACBuilderCoupling;
 
85481
  friend class ::ExtACSyntaxCoupling;
 
85482
  friend class ::ExtACTree;
 
85483
  friend class ::ExtACKeywords;
 
85484
  friend class ::ExtGnu;
 
85485
  friend class ::PragmaOnceUnitState;
 
85486
  friend class ::PragmaOnce;
 
85487
  friend class ::CMatchSyntax;
 
85488
 
 
85489
#line 2110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85490
 
 
85491
  CTree *sons[2]; // key, name
 
85492
  
 
85493
public:
 
85494
  /** Constructor.
 
85495
   *  \param k The 'class' or 'struct' keyword.
 
85496
   *  \param n The class name. */
 
85497
  CT_ClassSpec (CTree *k, CTree *n) { AddSon (sons[0], k); AddSon (sons[1], n); }
 
85498
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85499
  static const char *NodeId ();
 
85500
  /** Get the name of the node. Can be compared with NodeId(). */
 
85501
  const char *NodeName () const { return NodeId (); }
 
85502
  /** Get the number of sons. */
 
85503
  int Sons () const { return 2; }
 
85504
  /** Get the n-th son.
 
85505
   *  \param n The index of the son.
 
85506
   *  \return The n-th son or NULL. */
 
85507
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
85508
  /** Get the class name. */
 
85509
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
85510
  /** Get the semantic information about the class. */
 
85511
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
85512
  /** Replace a son.
 
85513
   *  \param old_son The son to replace.
 
85514
   *  \param new_son The new son. */
 
85515
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
85516
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
85517
  }
 
85518
public:
 
85519
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
85520
  const char *__attr_name (unsigned i) const {
 
85521
    static const char *names[] = { "sons" }; return names[i];
 
85522
  }
 
85523
  const void *__attr (unsigned __i) const {
 
85524
    switch (__i) { case 0: return &sons; default: return 0; }
 
85525
  }
 
85526
#line 2138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85527
};
 
85528
 
 
85529
/** \class CT_UnionSpec CTree.h Puma/CTree.h
 
85530
 *  Tree node representing a union specifier.
 
85531
 *  Example: \code union X \endcode */
 
85532
 
 
85533
#line 85534 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85534
} // closed Puma
 
85535
class CCExprResolve;
 
85536
class CExprResolve;
 
85537
class WinIfExists;
 
85538
class WinImportHandler;
 
85539
class WinMacros;
 
85540
class WinAsm;
 
85541
class WinDeclSpecs;
 
85542
class WinMemberExplSpec;
 
85543
class WinTypeKeywords;
 
85544
class WinFriend;
 
85545
class ExtAC;
 
85546
class ExtACBuilderCoupling;
 
85547
class ExtACSyntaxCoupling;
 
85548
class ExtACTree;
 
85549
class ExtACKeywords;
 
85550
class ExtGnu;
 
85551
class PragmaOnceUnitState;
 
85552
class PragmaOnce;
 
85553
class CMatchSyntax;
 
85554
namespace Puma {
 
85555
 
 
85556
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85557
class CT_UnionSpec : public CT_ClassSpec {
 
85558
#line 85559 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85559
  friend class ::CCExprResolve;
 
85560
  friend class ::CExprResolve;
 
85561
  friend class ::WinIfExists;
 
85562
  friend class ::WinImportHandler;
 
85563
  friend class ::WinMacros;
 
85564
  friend class ::WinAsm;
 
85565
  friend class ::WinDeclSpecs;
 
85566
  friend class ::WinMemberExplSpec;
 
85567
  friend class ::WinTypeKeywords;
 
85568
  friend class ::WinFriend;
 
85569
  friend class ::ExtAC;
 
85570
  friend class ::ExtACBuilderCoupling;
 
85571
  friend class ::ExtACSyntaxCoupling;
 
85572
  friend class ::ExtACTree;
 
85573
  friend class ::ExtACKeywords;
 
85574
  friend class ::ExtGnu;
 
85575
  friend class ::PragmaOnceUnitState;
 
85576
  friend class ::PragmaOnce;
 
85577
  friend class ::CMatchSyntax;
 
85578
 
 
85579
#line 2143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85580
 
 
85581
public:
 
85582
  /** Constructor.
 
85583
   *  \param k The 'union' keyword.
 
85584
   *  \param n The name of the union. */
 
85585
  CT_UnionSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
85586
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85587
  static const char *NodeId ();
 
85588
  /** Get the name of the node. Can be compared with NodeId(). */
 
85589
  const char *NodeName () const { return NodeId (); }
 
85590
public:
 
85591
  typedef AC::TLE __AttrTypes;
 
85592
  const char *__attr_name (unsigned i) const { return 0; }
 
85593
  const void *__attr (unsigned __i) const { return 0; }
 
85594
#line 2153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85595
};
 
85596
 
 
85597
/** \class CT_EnumSpec CTree.h Puma/CTree.h
 
85598
 *  Tree node representing an enumeration specifier.
 
85599
 *  Example: \code enum X \endcode */
 
85600
 
 
85601
#line 85602 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85602
} // closed Puma
 
85603
class CCExprResolve;
 
85604
class CExprResolve;
 
85605
class WinIfExists;
 
85606
class WinImportHandler;
 
85607
class WinMacros;
 
85608
class WinAsm;
 
85609
class WinDeclSpecs;
 
85610
class WinMemberExplSpec;
 
85611
class WinTypeKeywords;
 
85612
class WinFriend;
 
85613
class ExtAC;
 
85614
class ExtACBuilderCoupling;
 
85615
class ExtACSyntaxCoupling;
 
85616
class ExtACTree;
 
85617
class ExtACKeywords;
 
85618
class ExtGnu;
 
85619
class PragmaOnceUnitState;
 
85620
class PragmaOnce;
 
85621
class CMatchSyntax;
 
85622
namespace Puma {
 
85623
 
 
85624
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85625
class CT_EnumSpec : public CT_ClassSpec {
 
85626
#line 85627 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85627
  friend class ::CCExprResolve;
 
85628
  friend class ::CExprResolve;
 
85629
  friend class ::WinIfExists;
 
85630
  friend class ::WinImportHandler;
 
85631
  friend class ::WinMacros;
 
85632
  friend class ::WinAsm;
 
85633
  friend class ::WinDeclSpecs;
 
85634
  friend class ::WinMemberExplSpec;
 
85635
  friend class ::WinTypeKeywords;
 
85636
  friend class ::WinFriend;
 
85637
  friend class ::ExtAC;
 
85638
  friend class ::ExtACBuilderCoupling;
 
85639
  friend class ::ExtACSyntaxCoupling;
 
85640
  friend class ::ExtACTree;
 
85641
  friend class ::ExtACKeywords;
 
85642
  friend class ::ExtGnu;
 
85643
  friend class ::PragmaOnceUnitState;
 
85644
  friend class ::PragmaOnce;
 
85645
  friend class ::CMatchSyntax;
 
85646
 
 
85647
#line 2158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85648
 
 
85649
public:
 
85650
  /** Constructor.
 
85651
   *  \param k The 'enum' keyword. 
 
85652
   *  \param n The name of the enumeration. */
 
85653
  CT_EnumSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
85654
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85655
  static const char *NodeId ();
 
85656
  /** Get the name of the node. Can be compared with NodeId(). */
 
85657
  const char *NodeName () const { return NodeId (); }
 
85658
public:
 
85659
  typedef AC::TLE __AttrTypes;
 
85660
  const char *__attr_name (unsigned i) const { return 0; }
 
85661
  const void *__attr (unsigned __i) const { return 0; }
 
85662
#line 2168 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85663
};
 
85664
 
 
85665
/** \class CT_ExceptionSpec CTree.h Puma/CTree.h
 
85666
 *  Tree node representing an exception specifier.
 
85667
 *  Example: \code throw(std::exception) \endcode */
 
85668
 
 
85669
#line 85670 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85670
} // closed Puma
 
85671
class CCExprResolve;
 
85672
class CExprResolve;
 
85673
class WinIfExists;
 
85674
class WinImportHandler;
 
85675
class WinMacros;
 
85676
class WinAsm;
 
85677
class WinDeclSpecs;
 
85678
class WinMemberExplSpec;
 
85679
class WinTypeKeywords;
 
85680
class WinFriend;
 
85681
class ExtAC;
 
85682
class ExtACBuilderCoupling;
 
85683
class ExtACSyntaxCoupling;
 
85684
class ExtACTree;
 
85685
class ExtACKeywords;
 
85686
class ExtGnu;
 
85687
class PragmaOnceUnitState;
 
85688
class PragmaOnce;
 
85689
class CMatchSyntax;
 
85690
namespace Puma {
 
85691
 
 
85692
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85693
class CT_ExceptionSpec : public CT_DeclSpec {
 
85694
#line 85695 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85695
  friend class ::CCExprResolve;
 
85696
  friend class ::CExprResolve;
 
85697
  friend class ::WinIfExists;
 
85698
  friend class ::WinImportHandler;
 
85699
  friend class ::WinMacros;
 
85700
  friend class ::WinAsm;
 
85701
  friend class ::WinDeclSpecs;
 
85702
  friend class ::WinMemberExplSpec;
 
85703
  friend class ::WinTypeKeywords;
 
85704
  friend class ::WinFriend;
 
85705
  friend class ::ExtAC;
 
85706
  friend class ::ExtACBuilderCoupling;
 
85707
  friend class ::ExtACSyntaxCoupling;
 
85708
  friend class ::ExtACTree;
 
85709
  friend class ::ExtACKeywords;
 
85710
  friend class ::ExtGnu;
 
85711
  friend class ::PragmaOnceUnitState;
 
85712
  friend class ::PragmaOnce;
 
85713
  friend class ::CMatchSyntax;
 
85714
 
 
85715
#line 2173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85716
 
 
85717
  CTree *sons[2]; // throw, type_id_list
 
85718
  
 
85719
public:
 
85720
  /** Constructor.
 
85721
   *  \param k The 'throw' keyword.
 
85722
   *  \param l The type list for the exception type to throw. */
 
85723
  CT_ExceptionSpec (CTree *k, CTree *l) { AddSon (sons[0], k); AddSon (sons[1], l); }
 
85724
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85725
  static const char *NodeId ();
 
85726
  /** Get the name of the node. Can be compared with NodeId(). */
 
85727
  const char *NodeName () const { return NodeId (); }
 
85728
  /** Get the number of sons. */
 
85729
  int Sons () const { return 2; }
 
85730
  /** Get the n-th son.
 
85731
   *  \param n The index of the son.
 
85732
   *  \return The n-th son or NULL. */
 
85733
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
85734
  /** Get the exception type list. */
 
85735
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
85736
  /** Replace a son.
 
85737
   *  \param old_son The son to replace.
 
85738
   *  \param new_son The new son. */
 
85739
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
85740
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
85741
  }
 
85742
public:
 
85743
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
85744
  const char *__attr_name (unsigned i) const {
 
85745
    static const char *names[] = { "sons" }; return names[i];
 
85746
  }
 
85747
  const void *__attr (unsigned __i) const {
 
85748
    switch (__i) { case 0: return &sons; default: return 0; }
 
85749
  }
 
85750
#line 2199 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85751
};
 
85752
 
 
85753
/*****************************************************************************/
 
85754
/*                                                                           */
 
85755
/*                              Declarations                                 */
 
85756
/*                                                                           */
 
85757
/*****************************************************************************/
 
85758
 
 
85759
/** \class CT_Decl CTree.h Puma/CTree.h
 
85760
 *  Base class for all tree nodes representing declarations. */
 
85761
 
 
85762
#line 85763 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85763
} // closed Puma
 
85764
class CCExprResolve;
 
85765
class CExprResolve;
 
85766
class WinIfExists;
 
85767
class WinImportHandler;
 
85768
class WinMacros;
 
85769
class WinAsm;
 
85770
class WinDeclSpecs;
 
85771
class WinMemberExplSpec;
 
85772
class WinTypeKeywords;
 
85773
class WinFriend;
 
85774
class ExtAC;
 
85775
class ExtACBuilderCoupling;
 
85776
class ExtACSyntaxCoupling;
 
85777
class ExtACTree;
 
85778
class ExtACKeywords;
 
85779
class ExtGnu;
 
85780
class PragmaOnceUnitState;
 
85781
class PragmaOnce;
 
85782
class CMatchSyntax;
 
85783
namespace Puma {
 
85784
 
 
85785
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85786
class CT_Decl : public CTree {
 
85787
#line 85788 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85788
  friend class ::CCExprResolve;
 
85789
  friend class ::CExprResolve;
 
85790
  friend class ::WinIfExists;
 
85791
  friend class ::WinImportHandler;
 
85792
  friend class ::WinMacros;
 
85793
  friend class ::WinAsm;
 
85794
  friend class ::WinDeclSpecs;
 
85795
  friend class ::WinMemberExplSpec;
 
85796
  friend class ::WinTypeKeywords;
 
85797
  friend class ::WinFriend;
 
85798
  friend class ::ExtAC;
 
85799
  friend class ::ExtACBuilderCoupling;
 
85800
  friend class ::ExtACSyntaxCoupling;
 
85801
  friend class ::ExtACTree;
 
85802
  friend class ::ExtACKeywords;
 
85803
  friend class ::ExtGnu;
 
85804
  friend class ::PragmaOnceUnitState;
 
85805
  friend class ::PragmaOnce;
 
85806
  friend class ::CMatchSyntax;
 
85807
 
 
85808
#line 2209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85809
 
 
85810
  CT_LinkageSpec *_linkage;
 
85811
  
 
85812
protected:
 
85813
  /** Constructor. */
 
85814
  CT_Decl () : _linkage (0) {}
 
85815
  
 
85816
public:
 
85817
  /** Set the linkage of the declared entity.
 
85818
   *  \param l The linkage specifiers. */
 
85819
  void Linkage (CT_LinkageSpec *l) { _linkage = l; }
 
85820
  /** Get the linkage specifiers. */
 
85821
  CT_LinkageSpec *Linkage () const { return _linkage; }
 
85822
  /** Get this. */
 
85823
  virtual CT_Decl *IsDeclaration () { return this; }
 
85824
public:
 
85825
  typedef AC::TL<Puma::CT_LinkageSpec *,AC::TLE > __AttrTypes;
 
85826
  const char *__attr_name (unsigned i) const {
 
85827
    static const char *names[] = { "_linkage" }; return names[i];
 
85828
  }
 
85829
  const void *__attr (unsigned __i) const {
 
85830
    switch (__i) { case 0: return &_linkage; default: return 0; }
 
85831
  }
 
85832
#line 2224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85833
};
 
85834
 
 
85835
/** \class CT_Program CTree.h Puma/CTree.h
 
85836
 *  Root node of C/C++ syntax trees. */
 
85837
 
 
85838
#line 85839 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85839
} // closed Puma
 
85840
class CCExprResolve;
 
85841
class CExprResolve;
 
85842
class WinIfExists;
 
85843
class WinImportHandler;
 
85844
class WinMacros;
 
85845
class WinAsm;
 
85846
class WinDeclSpecs;
 
85847
class WinMemberExplSpec;
 
85848
class WinTypeKeywords;
 
85849
class WinFriend;
 
85850
class ExtAC;
 
85851
class ExtACBuilderCoupling;
 
85852
class ExtACSyntaxCoupling;
 
85853
class ExtACTree;
 
85854
class ExtACKeywords;
 
85855
class ExtGnu;
 
85856
class PragmaOnceUnitState;
 
85857
class PragmaOnce;
 
85858
class CMatchSyntax;
 
85859
namespace Puma {
 
85860
 
 
85861
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85862
class CT_Program : public CT_DeclList, public CSemScope {
 
85863
#line 85864 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85864
  friend class ::CCExprResolve;
 
85865
  friend class ::CExprResolve;
 
85866
  friend class ::WinIfExists;
 
85867
  friend class ::WinImportHandler;
 
85868
  friend class ::WinMacros;
 
85869
  friend class ::WinAsm;
 
85870
  friend class ::WinDeclSpecs;
 
85871
  friend class ::WinMemberExplSpec;
 
85872
  friend class ::WinTypeKeywords;
 
85873
  friend class ::WinFriend;
 
85874
  friend class ::ExtAC;
 
85875
  friend class ::ExtACBuilderCoupling;
 
85876
  friend class ::ExtACSyntaxCoupling;
 
85877
  friend class ::ExtACTree;
 
85878
  friend class ::ExtACKeywords;
 
85879
  friend class ::ExtGnu;
 
85880
  friend class ::PragmaOnceUnitState;
 
85881
  friend class ::PragmaOnce;
 
85882
  friend class ::CMatchSyntax;
 
85883
 
 
85884
#line 2228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85885
 
 
85886
public:
 
85887
  /** Constructor.
 
85888
   *  \param size The initial number of declarations in the program.
 
85889
   *  \param incr The initial increment count. */
 
85890
  CT_Program (int size = 20, int incr = 20) : CT_DeclList (size, incr) {}
 
85891
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85892
  static const char *NodeId ();
 
85893
  /** Get the name of the node. Can be compared with NodeId(). */
 
85894
  const char *NodeName () const { return NodeId (); }
 
85895
  /** Get the top scope. */
 
85896
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
85897
public:
 
85898
  typedef AC::TLE __AttrTypes;
 
85899
  const char *__attr_name (unsigned i) const { return 0; }
 
85900
  const void *__attr (unsigned __i) const { return 0; }
 
85901
#line 2240 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85902
};
 
85903
   
 
85904
/** \class CT_ObjDecl CTree.h Puma/CTree.h
 
85905
 *  Tree node representing an object declaration.
 
85906
 *  Example: \code int *i \endcode */
 
85907
 
 
85908
#line 85909 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85909
} // closed Puma
 
85910
class CCExprResolve;
 
85911
class CExprResolve;
 
85912
class WinIfExists;
 
85913
class WinImportHandler;
 
85914
class WinMacros;
 
85915
class WinAsm;
 
85916
class WinDeclSpecs;
 
85917
class WinMemberExplSpec;
 
85918
class WinTypeKeywords;
 
85919
class WinFriend;
 
85920
class ExtAC;
 
85921
class ExtACBuilderCoupling;
 
85922
class ExtACSyntaxCoupling;
 
85923
class ExtACTree;
 
85924
class ExtACKeywords;
 
85925
class ExtGnu;
 
85926
class PragmaOnceUnitState;
 
85927
class PragmaOnce;
 
85928
class CMatchSyntax;
 
85929
namespace Puma {
 
85930
 
 
85931
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85932
class CT_ObjDecl : public CT_Decl {
 
85933
#line 85934 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
85934
  friend class ::CCExprResolve;
 
85935
  friend class ::CExprResolve;
 
85936
  friend class ::WinIfExists;
 
85937
  friend class ::WinImportHandler;
 
85938
  friend class ::WinMacros;
 
85939
  friend class ::WinAsm;
 
85940
  friend class ::WinDeclSpecs;
 
85941
  friend class ::WinMemberExplSpec;
 
85942
  friend class ::WinTypeKeywords;
 
85943
  friend class ::WinFriend;
 
85944
  friend class ::ExtAC;
 
85945
  friend class ::ExtACBuilderCoupling;
 
85946
  friend class ::ExtACSyntaxCoupling;
 
85947
  friend class ::ExtACTree;
 
85948
  friend class ::ExtACKeywords;
 
85949
  friend class ::ExtGnu;
 
85950
  friend class ::PragmaOnceUnitState;
 
85951
  friend class ::PragmaOnce;
 
85952
  friend class ::CMatchSyntax;
 
85953
 
 
85954
#line 2245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85955
 
 
85956
  CTree *sons[3]; // declspecs, declarators, colon
 
85957
 
 
85958
public:
 
85959
  /** Constructor.
 
85960
   *  \param dsl The declaration specifier sequence.
 
85961
   *  \param dl The declarator list.
 
85962
   *  \param c Optional colon. */
 
85963
  CT_ObjDecl (CTree *dsl, CTree *dl, CTree *c) {
 
85964
    AddSon (sons[0], dsl); AddSon (sons[1], dl); AddSon (sons[2], c);
 
85965
  }
 
85966
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
85967
  static const char *NodeId ();
 
85968
  /** Get the name of the node. Can be compared with NodeId(). */
 
85969
  const char *NodeName () const { return NodeId (); }
 
85970
  /** Get the number of sons. */
 
85971
  int Sons () const { return 3; }
 
85972
  /** Get the n-th son.
 
85973
   *  \param n The index of the son.
 
85974
   *  \return The n-th son or NULL. */
 
85975
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
85976
  /** Get the declaration specifier sequence. */
 
85977
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
85978
  /** Get the declarator list. */
 
85979
  CT_DeclaratorList *Declarators () const { return (CT_DeclaratorList*)sons[1]; }
 
85980
  /** Replace a son.
 
85981
   *  \param old_son The son to replace.
 
85982
   *  \param new_son The new son. */
 
85983
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
85984
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
85985
  }
 
85986
public:
 
85987
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
85988
  const char *__attr_name (unsigned i) const {
 
85989
    static const char *names[] = { "sons" }; return names[i];
 
85990
  }
 
85991
  const void *__attr (unsigned __i) const {
 
85992
    switch (__i) { case 0: return &sons; default: return 0; }
 
85993
  }
 
85994
#line 2276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
85995
};
 
85996
 
 
85997
/** \class CT_TemplateDecl CTree.h Puma/CTree.h
 
85998
 *  Tree node representing a template declaration. */
 
85999
 
 
86000
#line 86001 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86001
} // closed Puma
 
86002
class CCExprResolve;
 
86003
class CExprResolve;
 
86004
class WinIfExists;
 
86005
class WinImportHandler;
 
86006
class WinMacros;
 
86007
class WinAsm;
 
86008
class WinDeclSpecs;
 
86009
class WinMemberExplSpec;
 
86010
class WinTypeKeywords;
 
86011
class WinFriend;
 
86012
class ExtAC;
 
86013
class ExtACBuilderCoupling;
 
86014
class ExtACSyntaxCoupling;
 
86015
class ExtACTree;
 
86016
class ExtACKeywords;
 
86017
class ExtGnu;
 
86018
class PragmaOnceUnitState;
 
86019
class PragmaOnce;
 
86020
class CMatchSyntax;
 
86021
namespace Puma {
 
86022
 
 
86023
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86024
class CT_TemplateDecl : public CT_Decl, public CSemScope {
 
86025
#line 86026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86026
  friend class ::CCExprResolve;
 
86027
  friend class ::CExprResolve;
 
86028
  friend class ::WinIfExists;
 
86029
  friend class ::WinImportHandler;
 
86030
  friend class ::WinMacros;
 
86031
  friend class ::WinAsm;
 
86032
  friend class ::WinDeclSpecs;
 
86033
  friend class ::WinMemberExplSpec;
 
86034
  friend class ::WinTypeKeywords;
 
86035
  friend class ::WinFriend;
 
86036
  friend class ::ExtAC;
 
86037
  friend class ::ExtACBuilderCoupling;
 
86038
  friend class ::ExtACSyntaxCoupling;
 
86039
  friend class ::ExtACTree;
 
86040
  friend class ::ExtACKeywords;
 
86041
  friend class ::ExtGnu;
 
86042
  friend class ::PragmaOnceUnitState;
 
86043
  friend class ::PragmaOnce;
 
86044
  friend class ::CMatchSyntax;
 
86045
 
 
86046
#line 2280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86047
 
 
86048
  CTree *sons[3]; // export, param_list, decl
 
86049
 
 
86050
public:
 
86051
  /** Constructor.
 
86052
   *  \param e Optional 'export' keyword. 
 
86053
   *  \param p The template parameter list.
 
86054
   *  \param d The class or function declaration. */
 
86055
  CT_TemplateDecl (CTree *e, CTree *p, CTree *d) {
 
86056
    AddSon (sons[0], e); AddSon (sons[1], p); AddSon (sons[2], d);
 
86057
  }
 
86058
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
86059
  static const char *NodeId ();
 
86060
  /** Get the name of the node. Can be compared with NodeId(). */
 
86061
  const char *NodeName () const { return NodeId (); }
 
86062
  /** Get the number of sons. */
 
86063
  int Sons () const { return CTree::Sons (sons, 3); }
 
86064
  /** Get the n-th son.
 
86065
   *  \param n The index of the son.
 
86066
   *  \return The n-th son or NULL. */
 
86067
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
86068
  /** Replace a son.
 
86069
   *  \param old_son The son to replace.
 
86070
   *  \param new_son The new son. */
 
86071
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
86072
    CTree::ReplaceSon (sons, 3, old_son, new_son); 
 
86073
  }
 
86074
  /** Get the 'export' keyword. */
 
86075
  CTree *Export () const { return sons[0]; }
 
86076
  /** Get the template parameter list. */
 
86077
  CT_TemplateParamList *Parameters () const { 
 
86078
    return (CT_TemplateParamList*)sons[1]; 
 
86079
  }
 
86080
  /** Get the class or function declaration. */
 
86081
  CTree *Declaration () const { return sons[2]; }
 
86082
  /** Get the scope opened by the template declaration. */
 
86083
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
86084
public:
 
86085
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
86086
  const char *__attr_name (unsigned i) const {
 
86087
    static const char *names[] = { "sons" }; return names[i];
 
86088
  }
 
86089
  const void *__attr (unsigned __i) const {
 
86090
    switch (__i) { case 0: return &sons; default: return 0; }
 
86091
  }
 
86092
#line 2317 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86093
};
 
86094
 
 
86095
/** \class CT_TemplateParamDecl CTree.h Puma/CTree.h
 
86096
 *  Base class for all tree nodesrepresenting a template parameter declaration. */
 
86097
 
 
86098
#line 86099 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86099
} // closed Puma
 
86100
class CCExprResolve;
 
86101
class CExprResolve;
 
86102
class WinIfExists;
 
86103
class WinImportHandler;
 
86104
class WinMacros;
 
86105
class WinAsm;
 
86106
class WinDeclSpecs;
 
86107
class WinMemberExplSpec;
 
86108
class WinTypeKeywords;
 
86109
class WinFriend;
 
86110
class ExtAC;
 
86111
class ExtACBuilderCoupling;
 
86112
class ExtACSyntaxCoupling;
 
86113
class ExtACTree;
 
86114
class ExtACKeywords;
 
86115
class ExtGnu;
 
86116
class PragmaOnceUnitState;
 
86117
class PragmaOnce;
 
86118
class CMatchSyntax;
 
86119
namespace Puma {
 
86120
 
 
86121
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86122
class CT_TemplateParamDecl : public CT_Decl, public CSemObject {
 
86123
#line 86124 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86124
  friend class ::CCExprResolve;
 
86125
  friend class ::CExprResolve;
 
86126
  friend class ::WinIfExists;
 
86127
  friend class ::WinImportHandler;
 
86128
  friend class ::WinMacros;
 
86129
  friend class ::WinAsm;
 
86130
  friend class ::WinDeclSpecs;
 
86131
  friend class ::WinMemberExplSpec;
 
86132
  friend class ::WinTypeKeywords;
 
86133
  friend class ::WinFriend;
 
86134
  friend class ::ExtAC;
 
86135
  friend class ::ExtACBuilderCoupling;
 
86136
  friend class ::ExtACSyntaxCoupling;
 
86137
  friend class ::ExtACTree;
 
86138
  friend class ::ExtACKeywords;
 
86139
  friend class ::ExtGnu;
 
86140
  friend class ::PragmaOnceUnitState;
 
86141
  friend class ::PragmaOnce;
 
86142
  friend class ::CMatchSyntax;
 
86143
 
 
86144
#line 2321 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86145
 
 
86146
protected:
 
86147
  /** Constructor. */
 
86148
  CT_TemplateParamDecl () {}
 
86149
  
 
86150
public:
 
86151
  /** Get the template default argument. */
 
86152
  virtual CT_ExprList *DefaultArgument () const = 0;
 
86153
  /** Get the semantic information about the template parameter. */
 
86154
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
86155
public:
 
86156
  typedef AC::TLE __AttrTypes;
 
86157
  const char *__attr_name (unsigned i) const { return 0; }
 
86158
  const void *__attr (unsigned __i) const { return 0; }
 
86159
#line 2331 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86160
};
 
86161
 
 
86162
/** \class CT_NonTypeParamDecl CTree.h Puma/CTree.h
 
86163
 *  Tree node representing a template non-type parameter declaration. */
 
86164
 
 
86165
#line 86166 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86166
} // closed Puma
 
86167
class CCExprResolve;
 
86168
class CExprResolve;
 
86169
class WinIfExists;
 
86170
class WinImportHandler;
 
86171
class WinMacros;
 
86172
class WinAsm;
 
86173
class WinDeclSpecs;
 
86174
class WinMemberExplSpec;
 
86175
class WinTypeKeywords;
 
86176
class WinFriend;
 
86177
class ExtAC;
 
86178
class ExtACBuilderCoupling;
 
86179
class ExtACSyntaxCoupling;
 
86180
class ExtACTree;
 
86181
class ExtACKeywords;
 
86182
class ExtGnu;
 
86183
class PragmaOnceUnitState;
 
86184
class PragmaOnce;
 
86185
class CMatchSyntax;
 
86186
namespace Puma {
 
86187
 
 
86188
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86189
class CT_NonTypeParamDecl : public CT_TemplateParamDecl {
 
86190
#line 86191 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86191
  friend class ::CCExprResolve;
 
86192
  friend class ::CExprResolve;
 
86193
  friend class ::WinIfExists;
 
86194
  friend class ::WinImportHandler;
 
86195
  friend class ::WinMacros;
 
86196
  friend class ::WinAsm;
 
86197
  friend class ::WinDeclSpecs;
 
86198
  friend class ::WinMemberExplSpec;
 
86199
  friend class ::WinTypeKeywords;
 
86200
  friend class ::WinFriend;
 
86201
  friend class ::ExtAC;
 
86202
  friend class ::ExtACBuilderCoupling;
 
86203
  friend class ::ExtACSyntaxCoupling;
 
86204
  friend class ::ExtACTree;
 
86205
  friend class ::ExtACKeywords;
 
86206
  friend class ::ExtGnu;
 
86207
  friend class ::PragmaOnceUnitState;
 
86208
  friend class ::PragmaOnce;
 
86209
  friend class ::CMatchSyntax;
 
86210
 
 
86211
#line 2335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86212
 
 
86213
  CTree *sons[3]; // declspecs, declarator, init
 
86214
 
 
86215
public:
 
86216
  /** Constructor.
 
86217
   *  \param dsl The declaration specifier sequence.
 
86218
   *  \param d The parameter declarator.
 
86219
   *  \param i The default template argument. */
 
86220
  CT_NonTypeParamDecl (CTree *dsl, CTree *d, CTree *i = (CTree*)0) {
 
86221
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], i);
 
86222
  }
 
86223
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
86224
  static const char *NodeId ();
 
86225
  /** Get the name of the node. Can be compared with NodeId(). */
 
86226
  const char *NodeName () const { return NodeId (); }
 
86227
  /** Get the number of sons. */
 
86228
  int Sons () const { return CTree::Sons (sons, 3); }
 
86229
  /** Get the n-th son.
 
86230
   *  \param n The index of the son.
 
86231
   *  \return The n-th son or NULL. */
 
86232
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
86233
  /** Get the declaration specifier sequence. */
 
86234
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
86235
  /** Get the parameter declarator. */
 
86236
  CTree *Declarator () const { return sons[1]; }
 
86237
  /** Get the default template argument. */
 
86238
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[2]; }
 
86239
  /** Get the semantic information about the template parameter. */
 
86240
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
86241
  /** Set the default template argument. 
 
86242
   *  \param i The default argument. */
 
86243
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
86244
  /** Replace a son.
 
86245
   *  \param old_son The son to replace.
 
86246
   *  \param new_son The new son. */
 
86247
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
86248
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
86249
  }
 
86250
public:
 
86251
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
86252
  const char *__attr_name (unsigned i) const {
 
86253
    static const char *names[] = { "sons" }; return names[i];
 
86254
  }
 
86255
  const void *__attr (unsigned __i) const {
 
86256
    switch (__i) { case 0: return &sons; default: return 0; }
 
86257
  }
 
86258
#line 2373 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86259
};
 
86260
 
 
86261
/** \class CT_TypeParamDecl CTree.h Puma/CTree.h
 
86262
 *  Tree node representing a template type parameter declaration. */
 
86263
 
 
86264
#line 86265 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86265
} // closed Puma
 
86266
class CCExprResolve;
 
86267
class CExprResolve;
 
86268
class WinIfExists;
 
86269
class WinImportHandler;
 
86270
class WinMacros;
 
86271
class WinAsm;
 
86272
class WinDeclSpecs;
 
86273
class WinMemberExplSpec;
 
86274
class WinTypeKeywords;
 
86275
class WinFriend;
 
86276
class ExtAC;
 
86277
class ExtACBuilderCoupling;
 
86278
class ExtACSyntaxCoupling;
 
86279
class ExtACTree;
 
86280
class ExtACKeywords;
 
86281
class ExtGnu;
 
86282
class PragmaOnceUnitState;
 
86283
class PragmaOnce;
 
86284
class CMatchSyntax;
 
86285
namespace Puma {
 
86286
 
 
86287
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86288
class CT_TypeParamDecl : public CT_TemplateParamDecl {
 
86289
#line 86290 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86290
  friend class ::CCExprResolve;
 
86291
  friend class ::CExprResolve;
 
86292
  friend class ::WinIfExists;
 
86293
  friend class ::WinImportHandler;
 
86294
  friend class ::WinMacros;
 
86295
  friend class ::WinAsm;
 
86296
  friend class ::WinDeclSpecs;
 
86297
  friend class ::WinMemberExplSpec;
 
86298
  friend class ::WinTypeKeywords;
 
86299
  friend class ::WinFriend;
 
86300
  friend class ::ExtAC;
 
86301
  friend class ::ExtACBuilderCoupling;
 
86302
  friend class ::ExtACSyntaxCoupling;
 
86303
  friend class ::ExtACTree;
 
86304
  friend class ::ExtACKeywords;
 
86305
  friend class ::ExtGnu;
 
86306
  friend class ::PragmaOnceUnitState;
 
86307
  friend class ::PragmaOnce;
 
86308
  friend class ::CMatchSyntax;
 
86309
 
 
86310
#line 2377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86311
 
 
86312
  CTree *sons[4]; // params, key, id, init
 
86313
 
 
86314
public:
 
86315
  /** Constructor.
 
86316
   *  \param pl The template parameter list of an template template parameter.
 
86317
   *  \param k The type keyword, i.e. 'class' or 'typename'.
 
86318
   *  \param id The parameter identifier.
 
86319
   *  \param i The default template argument. */
 
86320
  CT_TypeParamDecl (CTree *pl, CTree *k, CTree *id, CTree *i = (CTree*)0) { 
 
86321
    AddSon (sons[0], pl); AddSon (sons[1], k); 
 
86322
    AddSon (sons[2], id); AddSon (sons[3], i);
 
86323
  }
 
86324
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
86325
  static const char *NodeId ();
 
86326
  /** Get the name of the node. Can be compared with NodeId(). */
 
86327
  const char *NodeName () const { return NodeId (); }
 
86328
  /** Get the number of sons. */
 
86329
  int Sons () const { return CTree::Sons (sons, 4); }
 
86330
  /** Get the n-th son.
 
86331
   *  \param n The index of the son.
 
86332
   *  \return The n-th son or NULL. */
 
86333
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
86334
  /** Get the template parameter list of a template template parameter. */
 
86335
  CT_TemplateParamList *Parameters () const { 
 
86336
    return (CT_TemplateParamList*)sons[0]; 
 
86337
  }
 
86338
  /** Get the templare parameter name. */
 
86339
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
86340
  /** Get the template default argument. */
 
86341
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[3]; }
 
86342
  /** Set the template default argument.
 
86343
   *  \param i The default argument. */
 
86344
  void Initializer (CTree *i) { AddSon (sons[3], i); }
 
86345
  /** Replace a son.
 
86346
   *  \param old_son The son to replace.
 
86347
   *  \param new_son The new son. */
 
86348
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
86349
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
86350
  }
 
86351
public:
 
86352
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
86353
  const char *__attr_name (unsigned i) const {
 
86354
    static const char *names[] = { "sons" }; return names[i];
 
86355
  }
 
86356
  const void *__attr (unsigned __i) const {
 
86357
    switch (__i) { case 0: return &sons; default: return 0; }
 
86358
  }
 
86359
#line 2417 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86360
};
 
86361
 
 
86362
/** \class CT_EnumDef CTree.h Puma/CTree.h
 
86363
 *  Tree node representing the definition of an enumeration. 
 
86364
 *  Example: \code enum E { A, B, C } \endcode */
 
86365
 
 
86366
#line 86367 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86367
} // closed Puma
 
86368
class CCExprResolve;
 
86369
class CExprResolve;
 
86370
class WinIfExists;
 
86371
class WinImportHandler;
 
86372
class WinMacros;
 
86373
class WinAsm;
 
86374
class WinDeclSpecs;
 
86375
class WinMemberExplSpec;
 
86376
class WinTypeKeywords;
 
86377
class WinFriend;
 
86378
class ExtAC;
 
86379
class ExtACBuilderCoupling;
 
86380
class ExtACSyntaxCoupling;
 
86381
class ExtACTree;
 
86382
class ExtACKeywords;
 
86383
class ExtGnu;
 
86384
class PragmaOnceUnitState;
 
86385
class PragmaOnce;
 
86386
class CMatchSyntax;
 
86387
namespace Puma {
 
86388
 
 
86389
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86390
class CT_EnumDef : public CT_Decl, public CSemObject {
 
86391
#line 86392 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86392
  friend class ::CCExprResolve;
 
86393
  friend class ::CExprResolve;
 
86394
  friend class ::WinIfExists;
 
86395
  friend class ::WinImportHandler;
 
86396
  friend class ::WinMacros;
 
86397
  friend class ::WinAsm;
 
86398
  friend class ::WinDeclSpecs;
 
86399
  friend class ::WinMemberExplSpec;
 
86400
  friend class ::WinTypeKeywords;
 
86401
  friend class ::WinFriend;
 
86402
  friend class ::ExtAC;
 
86403
  friend class ::ExtACBuilderCoupling;
 
86404
  friend class ::ExtACSyntaxCoupling;
 
86405
  friend class ::ExtACTree;
 
86406
  friend class ::ExtACKeywords;
 
86407
  friend class ::ExtGnu;
 
86408
  friend class ::PragmaOnceUnitState;
 
86409
  friend class ::PragmaOnce;
 
86410
  friend class ::CMatchSyntax;
 
86411
 
 
86412
#line 2422 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86413
 
 
86414
  CTree *sons[3]; // key, name, enumerators
 
86415
 
 
86416
public:
 
86417
  /** Constructor.
 
86418
   *  \param k The keyword 'enum'.
 
86419
   *  \param n The name of the enumeration. */
 
86420
  CT_EnumDef (CTree *k, CTree *n) {
 
86421
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], 0); 
 
86422
  }
 
86423
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
86424
  static const char *NodeId ();
 
86425
  /** Get the name of the node. Can be compared with NodeId(). */
 
86426
  const char *NodeName () const { return NodeId (); }
 
86427
  /** Get the number of sons. */
 
86428
  int Sons () const { return CTree::Sons (sons, 3); }
 
86429
  /** Get the n-th son.
 
86430
   *  \param n The index of the son.
 
86431
   *  \return The n-th son or NULL. */
 
86432
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
86433
  /** Get the name of the enumeration. */
 
86434
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
86435
  /** Set the list of enumeration constants.
 
86436
   *  \param el The enumerator list. */
 
86437
  void Enumerators (CTree *el) { AddSon (sons[2], el); }
 
86438
  /** Get the list of enumeration constants. */
 
86439
  CT_EnumeratorList *Enumerators () const { return (CT_EnumeratorList*)sons[2]; }
 
86440
  /** Replace a son.
 
86441
   *  \param old_son The son to replace.
 
86442
   *  \param new_son The new son. */
 
86443
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
86444
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
86445
  }
 
86446
  /** Get the semantic information about the enumeration. */
 
86447
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
86448
public:
 
86449
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
86450
  const char *__attr_name (unsigned i) const {
 
86451
    static const char *names[] = { "sons" }; return names[i];
 
86452
  }
 
86453
  const void *__attr (unsigned __i) const {
 
86454
    switch (__i) { case 0: return &sons; default: return 0; }
 
86455
  }
 
86456
#line 2457 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86457
};
 
86458
 
 
86459
/** \class CT_Enumerator CTree.h Puma/CTree.h
 
86460
 *  Tree node representing a single enumeration constant. */
 
86461
 
 
86462
#line 86463 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86463
} // closed Puma
 
86464
class CCExprResolve;
 
86465
class CExprResolve;
 
86466
class WinIfExists;
 
86467
class WinImportHandler;
 
86468
class WinMacros;
 
86469
class WinAsm;
 
86470
class WinDeclSpecs;
 
86471
class WinMemberExplSpec;
 
86472
class WinTypeKeywords;
 
86473
class WinFriend;
 
86474
class ExtAC;
 
86475
class ExtACBuilderCoupling;
 
86476
class ExtACSyntaxCoupling;
 
86477
class ExtACTree;
 
86478
class ExtACKeywords;
 
86479
class ExtGnu;
 
86480
class PragmaOnceUnitState;
 
86481
class PragmaOnce;
 
86482
class CMatchSyntax;
 
86483
namespace Puma {
 
86484
 
 
86485
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86486
class CT_Enumerator : public CT_Decl, public CSemObject {
 
86487
#line 86488 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86488
  friend class ::CCExprResolve;
 
86489
  friend class ::CExprResolve;
 
86490
  friend class ::WinIfExists;
 
86491
  friend class ::WinImportHandler;
 
86492
  friend class ::WinMacros;
 
86493
  friend class ::WinAsm;
 
86494
  friend class ::WinDeclSpecs;
 
86495
  friend class ::WinMemberExplSpec;
 
86496
  friend class ::WinTypeKeywords;
 
86497
  friend class ::WinFriend;
 
86498
  friend class ::ExtAC;
 
86499
  friend class ::ExtACBuilderCoupling;
 
86500
  friend class ::ExtACSyntaxCoupling;
 
86501
  friend class ::ExtACTree;
 
86502
  friend class ::ExtACKeywords;
 
86503
  friend class ::ExtGnu;
 
86504
  friend class ::PragmaOnceUnitState;
 
86505
  friend class ::PragmaOnce;
 
86506
  friend class ::CMatchSyntax;
 
86507
 
 
86508
#line 2461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86509
 
 
86510
  CTree *sons[2]; // name, init
 
86511
 
 
86512
public:
 
86513
  /** Constructor.
 
86514
   *  \param n The name of the enumerator. */
 
86515
  CT_Enumerator (CTree *n) { AddSon (sons[0], n); AddSon (sons[1], 0); }
 
86516
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
86517
  static const char *NodeId ();
 
86518
  /** Get the name of the node. Can be compared with NodeId(). */
 
86519
  const char *NodeName () const { return NodeId (); }
 
86520
  /** Get the number of sons. */
 
86521
  int Sons () const { return CTree::Sons (sons, 2); }
 
86522
  /** Get the n-th son.
 
86523
   *  \param n The index of the son.
 
86524
   *  \return The n-th son or NULL. */
 
86525
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
86526
  /** Get the name of the enumerator. */
 
86527
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
86528
  /** Set the initializer expression of the enumerator. */
 
86529
  void Initializer (CTree *i) { AddSon (sons[1], i); }
 
86530
  /** Get the initializer expression of the enumerator. */
 
86531
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
86532
  /** Replace a son.
 
86533
   *  \param old_son The son to replace.
 
86534
   *  \param new_son The new son. */
 
86535
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
86536
    CTree::ReplaceSon (sons, 2, old_son, new_son); 
 
86537
  }
 
86538
  /** Get the semantic information about the enumerator. */
 
86539
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
86540
public:
 
86541
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
86542
  const char *__attr_name (unsigned i) const {
 
86543
    static const char *names[] = { "sons" }; return names[i];
 
86544
  }
 
86545
  const void *__attr (unsigned __i) const {
 
86546
    switch (__i) { case 0: return &sons; default: return 0; }
 
86547
  }
 
86548
#line 2492 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86549
};
 
86550
 
 
86551
/** \class CT_FctDef CTree.h Puma/CTree.h
 
86552
 *  Tree node representing a function definition. 
 
86553
 *  Example:
 
86554
 *  \code
 
86555
 * int mul(int x, int y) {
 
86556
 *   return x*y;
 
86557
 * }
 
86558
 *  \endcode */
 
86559
 
 
86560
#line 86561 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86561
} // closed Puma
 
86562
class CCExprResolve;
 
86563
class CExprResolve;
 
86564
class WinIfExists;
 
86565
class WinImportHandler;
 
86566
class WinMacros;
 
86567
class WinAsm;
 
86568
class WinDeclSpecs;
 
86569
class WinMemberExplSpec;
 
86570
class WinTypeKeywords;
 
86571
class WinFriend;
 
86572
class ExtAC;
 
86573
class ExtACBuilderCoupling;
 
86574
class ExtACSyntaxCoupling;
 
86575
class ExtACTree;
 
86576
class ExtACKeywords;
 
86577
class ExtGnu;
 
86578
class PragmaOnceUnitState;
 
86579
class PragmaOnce;
 
86580
class CMatchSyntax;
 
86581
namespace Puma {
 
86582
 
 
86583
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86584
class CT_FctDef : public CT_Decl, public CSemObject {
 
86585
#line 86586 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86586
  friend class ::CCExprResolve;
 
86587
  friend class ::CExprResolve;
 
86588
  friend class ::WinIfExists;
 
86589
  friend class ::WinImportHandler;
 
86590
  friend class ::WinMacros;
 
86591
  friend class ::WinAsm;
 
86592
  friend class ::WinDeclSpecs;
 
86593
  friend class ::WinMemberExplSpec;
 
86594
  friend class ::WinTypeKeywords;
 
86595
  friend class ::WinFriend;
 
86596
  friend class ::ExtAC;
 
86597
  friend class ::ExtACBuilderCoupling;
 
86598
  friend class ::ExtACSyntaxCoupling;
 
86599
  friend class ::ExtACTree;
 
86600
  friend class ::ExtACKeywords;
 
86601
  friend class ::ExtGnu;
 
86602
  friend class ::PragmaOnceUnitState;
 
86603
  friend class ::PragmaOnce;
 
86604
  friend class ::CMatchSyntax;
 
86605
 
 
86606
#line 2502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86607
 
 
86608
  CTree *sons[7]; // declspecs, declarator, try, ctor_init, args, body, handlers
 
86609
 
 
86610
public:
 
86611
  /** Constructor.
 
86612
   *  \param dss The declaration specifier sequence. 
 
86613
   *  \param d The function declarator.
 
86614
   *  \param t Optional keyword 'try' for a function try-block.
 
86615
   *  \param ci Optional constructor initializer list.
 
86616
   *  \param as Optional K&R argument declaration list.
 
86617
   *  \param b The function body.
 
86618
   *  \param hs Exception handler sequence for a function try-block. */
 
86619
  CT_FctDef (CTree *dss, CTree *d, CTree *t, CTree *ci, CTree *as, 
 
86620
             CTree *b, CTree *hs) {
 
86621
    AddSon (sons[0], dss); AddSon (sons[1], d); AddSon (sons[2], t); 
 
86622
    AddSon (sons[3], ci); AddSon (sons[4], as); AddSon (sons[5], b); 
 
86623
    AddSon (sons[6], hs); 
 
86624
  }
 
86625
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
86626
  static const char *NodeId ();
 
86627
  /** Get the name of the node. Can be compared with NodeId(). */
 
86628
  const char *NodeName () const { return NodeId (); }
 
86629
  /** Get the number of sons. */
 
86630
  int Sons () const { return CTree::Sons (sons, 7); }
 
86631
  /** Get the n-th son.
 
86632
   *  \param n The index of the son.
 
86633
   *  \return The n-th son or NULL. */
 
86634
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
86635
  /** Get the declaration specifier sequence. */
 
86636
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
86637
  /** Get the function declarator. */
 
86638
  CTree *Declarator () const { return sons[1]; }
 
86639
  /** Get the 'try' keyword of the function try-block. */
 
86640
  CT_Token *TryKey () const { return (CT_Token*)sons[2]; }
 
86641
  /** Get the constructor initializer list. */
 
86642
  CTree *CtorInit () const { return sons[3]; }
 
86643
  /** Get the K&R argument declaration sequence. */
 
86644
  CT_ArgDeclSeq *ArgDeclSeq () const { return (CT_ArgDeclSeq*)sons[4]; }
 
86645
  /** Get the function body. */
 
86646
  CT_CmpdStmt *Body () const { return (CT_CmpdStmt*)sons[5]; }
 
86647
  /** Get the exception handler sequence of a function try-block. */
 
86648
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[6]; }
 
86649
  /** Get the semantic information about the function. */
 
86650
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
86651
  /** Set the constructor initializer list. 
 
86652
   *  \param i The initializer list. */
 
86653
  void CtorInit (CTree *i) { AddSon (sons[3], i); }
 
86654
  /** Set the function body.
 
86655
   *  \param b The function body. */
 
86656
  void Body (CTree *b) { AddSon (sons[5], b); }
 
86657
  /** Set the function try-block.
 
86658
   *  \param t The keyword 'try'.
 
86659
   *  \param c Optional constructor initializer list.
 
86660
   *  \param b The function body.
 
86661
   *  \param h The exception handler sequence. */
 
86662
  void FctTryBlock (CTree *t, CTree *c, CTree *b, CTree *h) { 
 
86663
    AddSon (sons[2], t); AddSon (sons[3], c); 
 
86664
    AddSon (sons[5], b); AddSon (sons[6], h);
 
86665
  }
 
86666
  /** Replace a son.
 
86667
   *  \param old_son The son to replace.
 
86668
   *  \param new_son The new son. */
 
86669
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
86670
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
86671
  }
 
86672
public:
 
86673
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
86674
  const char *__attr_name (unsigned i) const {
 
86675
    static const char *names[] = { "sons" }; return names[i];
 
86676
  }
 
86677
  const void *__attr (unsigned __i) const {
 
86678
    switch (__i) { case 0: return &sons; default: return 0; }
 
86679
  }
 
86680
#line 2567 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86681
};
 
86682
 
 
86683
/** \class CT_AsmDef CTree.h Puma/CTree.h
 
86684
 *  Tree node representing an inline assembly definition. 
 
86685
 *  Example: \code asm("movl %ecx %eax"); \endcode */
 
86686
 
 
86687
#line 86688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86688
} // closed Puma
 
86689
class CCExprResolve;
 
86690
class CExprResolve;
 
86691
class WinIfExists;
 
86692
class WinImportHandler;
 
86693
class WinMacros;
 
86694
class WinAsm;
 
86695
class WinDeclSpecs;
 
86696
class WinMemberExplSpec;
 
86697
class WinTypeKeywords;
 
86698
class WinFriend;
 
86699
class ExtAC;
 
86700
class ExtACBuilderCoupling;
 
86701
class ExtACSyntaxCoupling;
 
86702
class ExtACTree;
 
86703
class ExtACKeywords;
 
86704
class ExtGnu;
 
86705
class PragmaOnceUnitState;
 
86706
class PragmaOnce;
 
86707
class CMatchSyntax;
 
86708
namespace Puma {
 
86709
 
 
86710
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86711
class CT_AsmDef : public CT_Decl {
 
86712
#line 86713 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86713
  friend class ::CCExprResolve;
 
86714
  friend class ::CExprResolve;
 
86715
  friend class ::WinIfExists;
 
86716
  friend class ::WinImportHandler;
 
86717
  friend class ::WinMacros;
 
86718
  friend class ::WinAsm;
 
86719
  friend class ::WinDeclSpecs;
 
86720
  friend class ::WinMemberExplSpec;
 
86721
  friend class ::WinTypeKeywords;
 
86722
  friend class ::WinFriend;
 
86723
  friend class ::ExtAC;
 
86724
  friend class ::ExtACBuilderCoupling;
 
86725
  friend class ::ExtACSyntaxCoupling;
 
86726
  friend class ::ExtACTree;
 
86727
  friend class ::ExtACKeywords;
 
86728
  friend class ::ExtGnu;
 
86729
  friend class ::PragmaOnceUnitState;
 
86730
  friend class ::PragmaOnce;
 
86731
  friend class ::CMatchSyntax;
 
86732
 
 
86733
#line 2572 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86734
 
 
86735
  CTree *sons[5]; // asm, open, str, close, semi_colon
 
86736
 
 
86737
public:
 
86738
  /** Constructor.
 
86739
   *  \param a The keyword 'asm'.
 
86740
   *  \param o Left parenthesis around the assembler code string. 
 
86741
   *  \param s The assembler code.
 
86742
   *  \param c Right parenthesis around the assembler code string.
 
86743
   *  \param sc Trailing semi-colon. */
 
86744
  CT_AsmDef (CTree *a, CTree *o, CTree *s, CTree *c, CTree *sc) {
 
86745
    AddSon (sons[0], a); AddSon (sons[1], o); AddSon (sons[2], s); 
 
86746
    AddSon (sons[3], c); AddSon (sons[4], sc); 
 
86747
  }
 
86748
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
86749
  static const char *NodeId ();
 
86750
  /** Get the name of the node. Can be compared with NodeId(). */
 
86751
  const char *NodeName () const { return NodeId (); }
 
86752
  /** Get the number of sons. */
 
86753
  int Sons () const { return 5; }
 
86754
  /** Get the n-th son.
 
86755
   *  \param n The index of the son.
 
86756
   *  \return The n-th son or NULL. */
 
86757
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
86758
  /** Get the assembler code. */
 
86759
  CT_String *Instructions () const { return (CT_String*)sons[2]; }
 
86760
  /** Replace a son.
 
86761
   *  \param old_son The son to replace.
 
86762
   *  \param new_son The new son. */
 
86763
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
86764
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
86765
  }
 
86766
public:
 
86767
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
86768
  const char *__attr_name (unsigned i) const {
 
86769
    static const char *names[] = { "sons" }; return names[i];
 
86770
  }
 
86771
  const void *__attr (unsigned __i) const {
 
86772
    switch (__i) { case 0: return &sons; default: return 0; }
 
86773
  }
 
86774
#line 2604 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86775
};
 
86776
 
 
86777
/** \class CT_Handler CTree.h Puma/CTree.h
 
86778
 *  Tree node representing an exception handler. */
 
86779
 
 
86780
#line 86781 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86781
} // closed Puma
 
86782
class CCExprResolve;
 
86783
class CExprResolve;
 
86784
class WinIfExists;
 
86785
class WinImportHandler;
 
86786
class WinMacros;
 
86787
class WinAsm;
 
86788
class WinDeclSpecs;
 
86789
class WinMemberExplSpec;
 
86790
class WinTypeKeywords;
 
86791
class WinFriend;
 
86792
class ExtAC;
 
86793
class ExtACBuilderCoupling;
 
86794
class ExtACSyntaxCoupling;
 
86795
class ExtACTree;
 
86796
class ExtACKeywords;
 
86797
class ExtGnu;
 
86798
class PragmaOnceUnitState;
 
86799
class PragmaOnce;
 
86800
class CMatchSyntax;
 
86801
namespace Puma {
 
86802
 
 
86803
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86804
class CT_Handler : public CT_Decl, public CSemScope {
 
86805
#line 86806 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86806
  friend class ::CCExprResolve;
 
86807
  friend class ::CExprResolve;
 
86808
  friend class ::WinIfExists;
 
86809
  friend class ::WinImportHandler;
 
86810
  friend class ::WinMacros;
 
86811
  friend class ::WinAsm;
 
86812
  friend class ::WinDeclSpecs;
 
86813
  friend class ::WinMemberExplSpec;
 
86814
  friend class ::WinTypeKeywords;
 
86815
  friend class ::WinFriend;
 
86816
  friend class ::ExtAC;
 
86817
  friend class ::ExtACBuilderCoupling;
 
86818
  friend class ::ExtACSyntaxCoupling;
 
86819
  friend class ::ExtACTree;
 
86820
  friend class ::ExtACKeywords;
 
86821
  friend class ::ExtGnu;
 
86822
  friend class ::PragmaOnceUnitState;
 
86823
  friend class ::PragmaOnce;
 
86824
  friend class ::CMatchSyntax;
 
86825
 
 
86826
#line 2608 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86827
 
 
86828
  CTree *sons[3]; // catch, exception_decl, stmt
 
86829
 
 
86830
public:
 
86831
  /** Constructor.
 
86832
   *  \param c The keyword 'catch'.
 
86833
   *  \param e The exception object declaration.
 
86834
   *  \param s The exception handling statement. */
 
86835
  CT_Handler (CTree *c, CTree *e, CTree *s) {
 
86836
    AddSon (sons[0], c); AddSon (sons[1], e); AddSon (sons[2], s);
 
86837
  }
 
86838
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
86839
  static const char *NodeId ();
 
86840
  /** Get the name of the node. Can be compared with NodeId(). */
 
86841
  const char *NodeName () const { return NodeId (); }
 
86842
  /** Get the number of sons. */
 
86843
  int Sons () const { return 3; }
 
86844
  /** Get the n-th son.
 
86845
   *  \param n The index of the son.
 
86846
   *  \return The n-th son or NULL. */
 
86847
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
86848
  /** Get the exception object declaration. */
 
86849
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
86850
  /** Get the exception handling statement. */
 
86851
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
86852
  /** Replace a son.
 
86853
   *  \param old_son The son to replace.
 
86854
   *  \param new_son The new son. */
 
86855
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
86856
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
86857
  }
 
86858
  /** Get the scope opened by the handler. */
 
86859
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
86860
public:
 
86861
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
86862
  const char *__attr_name (unsigned i) const {
 
86863
    static const char *names[] = { "sons" }; return names[i];
 
86864
  }
 
86865
  const void *__attr (unsigned __i) const {
 
86866
    switch (__i) { case 0: return &sons; default: return 0; }
 
86867
  }
 
86868
#line 2641 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86869
};
 
86870
 
 
86871
/** \class CT_LinkageSpec CTree.h Puma/CTree.h
 
86872
 *  Tree node representing a list of declaration with a specific linkage. */
 
86873
 
 
86874
#line 86875 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86875
} // closed Puma
 
86876
class CCExprResolve;
 
86877
class CExprResolve;
 
86878
class WinIfExists;
 
86879
class WinImportHandler;
 
86880
class WinMacros;
 
86881
class WinAsm;
 
86882
class WinDeclSpecs;
 
86883
class WinMemberExplSpec;
 
86884
class WinTypeKeywords;
 
86885
class WinFriend;
 
86886
class ExtAC;
 
86887
class ExtACBuilderCoupling;
 
86888
class ExtACSyntaxCoupling;
 
86889
class ExtACTree;
 
86890
class ExtACKeywords;
 
86891
class ExtGnu;
 
86892
class PragmaOnceUnitState;
 
86893
class PragmaOnce;
 
86894
class CMatchSyntax;
 
86895
namespace Puma {
 
86896
 
 
86897
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86898
class CT_LinkageSpec : public CT_Decl {
 
86899
#line 86900 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86900
  friend class ::CCExprResolve;
 
86901
  friend class ::CExprResolve;
 
86902
  friend class ::WinIfExists;
 
86903
  friend class ::WinImportHandler;
 
86904
  friend class ::WinMacros;
 
86905
  friend class ::WinAsm;
 
86906
  friend class ::WinDeclSpecs;
 
86907
  friend class ::WinMemberExplSpec;
 
86908
  friend class ::WinTypeKeywords;
 
86909
  friend class ::WinFriend;
 
86910
  friend class ::ExtAC;
 
86911
  friend class ::ExtACBuilderCoupling;
 
86912
  friend class ::ExtACSyntaxCoupling;
 
86913
  friend class ::ExtACTree;
 
86914
  friend class ::ExtACKeywords;
 
86915
  friend class ::ExtGnu;
 
86916
  friend class ::PragmaOnceUnitState;
 
86917
  friend class ::PragmaOnce;
 
86918
  friend class ::CMatchSyntax;
 
86919
 
 
86920
#line 2645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86921
 
 
86922
  CTree *sons[5]; // extern, str, open, decls, close
 
86923
 
 
86924
public:
 
86925
  /** Constructor.
 
86926
   *  \param e The keyword 'extern'.
 
86927
   *  \param s The linkage identifier, e.g. "C".
 
86928
   *  \param o Left parenthesis around the declaration list.
 
86929
   *  \param d The list of declarations.
 
86930
   *  \param c Right parenthesis around the declaration list. */
 
86931
  CT_LinkageSpec (CTree *e, CTree *s, CTree *o, CTree *d, CTree *c) {
 
86932
    AddSon (sons[0], e); AddSon (sons[1], s); AddSon (sons[2], o); 
 
86933
    AddSon (sons[3], d); AddSon (sons[4], c);
 
86934
    if (isList ())
 
86935
      ((CT_DeclList*)Decls ())->Linkage (this);
 
86936
    else
 
86937
      ((CT_Decl*)Decls ())->Linkage (this);
 
86938
  }
 
86939
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
86940
  static const char *NodeId ();
 
86941
  /** Get the name of the node. Can be compared with NodeId(). */
 
86942
  const char *NodeName () const { return NodeId (); }
 
86943
  /** Get the number of sons. */
 
86944
  int Sons () const { return CTree::Sons (sons, 5); }
 
86945
  /** Get the n-th son.
 
86946
   *  \param n The index of the son.
 
86947
   *  \return The n-th son or NULL. */
 
86948
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
86949
  /** Get the linkage identifier. */
 
86950
  CT_String *Linkage () const { return (CT_String*)sons[1]; }
 
86951
  /** Get the list declarations. */
 
86952
  CTree *Decls () const { return sons[3]; }
 
86953
  /** Check if there is more than one enclosed declaration. 
 
86954
   *  In this case the node returned by Decls() is a CT_DeclList
 
86955
   *  node. */
 
86956
  bool isList () const {
 
86957
    return Decls ()->NodeName () == CT_DeclList::NodeId ();
 
86958
  }
 
86959
  /** Replace a son.
 
86960
   *  \param old_son The son to replace.
 
86961
   *  \param new_son The new son. */
 
86962
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
86963
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
86964
  }
 
86965
public:
 
86966
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
86967
  const char *__attr_name (unsigned i) const {
 
86968
    static const char *names[] = { "sons" }; return names[i];
 
86969
  }
 
86970
  const void *__attr (unsigned __i) const {
 
86971
    switch (__i) { case 0: return &sons; default: return 0; }
 
86972
  }
 
86973
#line 2689 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
86974
};
 
86975
 
 
86976
/** \class CT_ArgDecl CTree.h Puma/CTree.h
 
86977
 *  Tree node representing the declaration of a function parameter. */
 
86978
 
 
86979
#line 86980 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
86980
} // closed Puma
 
86981
class CCExprResolve;
 
86982
class CExprResolve;
 
86983
class WinIfExists;
 
86984
class WinImportHandler;
 
86985
class WinMacros;
 
86986
class WinAsm;
 
86987
class WinDeclSpecs;
 
86988
class WinMemberExplSpec;
 
86989
class WinTypeKeywords;
 
86990
class WinFriend;
 
86991
class ExtAC;
 
86992
class ExtACBuilderCoupling;
 
86993
class ExtACSyntaxCoupling;
 
86994
class ExtACTree;
 
86995
class ExtACKeywords;
 
86996
class ExtGnu;
 
86997
class PragmaOnceUnitState;
 
86998
class PragmaOnce;
 
86999
class CMatchSyntax;
 
87000
namespace Puma {
 
87001
 
 
87002
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87003
class CT_ArgDecl : public CT_Decl, public CSemObject {
 
87004
#line 87005 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87005
  friend class ::CCExprResolve;
 
87006
  friend class ::CExprResolve;
 
87007
  friend class ::WinIfExists;
 
87008
  friend class ::WinImportHandler;
 
87009
  friend class ::WinMacros;
 
87010
  friend class ::WinAsm;
 
87011
  friend class ::WinDeclSpecs;
 
87012
  friend class ::WinMemberExplSpec;
 
87013
  friend class ::WinTypeKeywords;
 
87014
  friend class ::WinFriend;
 
87015
  friend class ::ExtAC;
 
87016
  friend class ::ExtACBuilderCoupling;
 
87017
  friend class ::ExtACSyntaxCoupling;
 
87018
  friend class ::ExtACTree;
 
87019
  friend class ::ExtACKeywords;
 
87020
  friend class ::ExtGnu;
 
87021
  friend class ::PragmaOnceUnitState;
 
87022
  friend class ::PragmaOnce;
 
87023
  friend class ::CMatchSyntax;
 
87024
 
 
87025
#line 2693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87026
 
 
87027
  CTree *sons[4]; // declspecs, declarator, init, ellipsis
 
87028
 
 
87029
public:
 
87030
  /** Constructor.
 
87031
   *  \param dsl The declaration specifier sequence.
 
87032
   *  \param d The parameter declarator. */
 
87033
  CT_ArgDecl (CTree *dsl, CTree *d) {
 
87034
    AddSon (sons[0], dsl); AddSon (sons[1], d); 
 
87035
    AddSon (sons[2], 0); AddSon (sons[3], 0); 
 
87036
  }
 
87037
  /** Constructor.
 
87038
   *  \param ellipsis The variable argument list operator "...". */
 
87039
  CT_ArgDecl (CTree *ellipsis) {
 
87040
    AddSon (sons[0], 0); AddSon (sons[1], 0); 
 
87041
    AddSon (sons[2], 0); AddSon (sons[3], ellipsis); 
 
87042
  }
 
87043
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87044
  static const char *NodeId ();
 
87045
  /** Get the name of the node. Can be compared with NodeId(). */
 
87046
  const char *NodeName () const { return NodeId (); }
 
87047
  /** Get the number of sons. */
 
87048
  int Sons () const { return CTree::Sons (sons, 4); }
 
87049
  /** Get the n-th son.
 
87050
   *  \param n The index of the son.
 
87051
   *  \return The n-th son or NULL. */
 
87052
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
87053
  /** Get the declaration specifier sequence. */
 
87054
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
87055
  /** Get the function parameter declarator. */
 
87056
  CTree *Declarator () const { return sons[1]; }
 
87057
  /** Get the default argument. */
 
87058
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
87059
  /** Get the variable argument list operator. */
 
87060
  CT_Token *Ellipsis () const { return (CT_Token*)sons[3]; }
 
87061
  /** Get the semantic information about the function parameter. */
 
87062
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
87063
  /** Set the default argument. */
 
87064
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
87065
  /** Replace a son.
 
87066
   *  \param old_son The son to replace.
 
87067
   *  \param new_son The new son. */
 
87068
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
87069
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
87070
  }
 
87071
public:
 
87072
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
87073
  const char *__attr_name (unsigned i) const {
 
87074
    static const char *names[] = { "sons" }; return names[i];
 
87075
  }
 
87076
  const void *__attr (unsigned __i) const {
 
87077
    switch (__i) { case 0: return &sons; default: return 0; }
 
87078
  }
 
87079
#line 2738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87080
};
 
87081
 
 
87082
/** \class CT_ArgDeclList CTree.h Puma/CTree.h
 
87083
 *  Tree node representing a function parameter list. */
 
87084
 
 
87085
#line 87086 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87086
} // closed Puma
 
87087
class CCExprResolve;
 
87088
class CExprResolve;
 
87089
class WinIfExists;
 
87090
class WinImportHandler;
 
87091
class WinMacros;
 
87092
class WinAsm;
 
87093
class WinDeclSpecs;
 
87094
class WinMemberExplSpec;
 
87095
class WinTypeKeywords;
 
87096
class WinFriend;
 
87097
class ExtAC;
 
87098
class ExtACBuilderCoupling;
 
87099
class ExtACSyntaxCoupling;
 
87100
class ExtACTree;
 
87101
class ExtACKeywords;
 
87102
class ExtGnu;
 
87103
class PragmaOnceUnitState;
 
87104
class PragmaOnce;
 
87105
class CMatchSyntax;
 
87106
namespace Puma {
 
87107
 
 
87108
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87109
class CT_ArgDeclList : public CT_DeclList, public CSemScope {
 
87110
#line 87111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87111
  friend class ::CCExprResolve;
 
87112
  friend class ::CExprResolve;
 
87113
  friend class ::WinIfExists;
 
87114
  friend class ::WinImportHandler;
 
87115
  friend class ::WinMacros;
 
87116
  friend class ::WinAsm;
 
87117
  friend class ::WinDeclSpecs;
 
87118
  friend class ::WinMemberExplSpec;
 
87119
  friend class ::WinTypeKeywords;
 
87120
  friend class ::WinFriend;
 
87121
  friend class ::ExtAC;
 
87122
  friend class ::ExtACBuilderCoupling;
 
87123
  friend class ::ExtACSyntaxCoupling;
 
87124
  friend class ::ExtACTree;
 
87125
  friend class ::ExtACKeywords;
 
87126
  friend class ::ExtGnu;
 
87127
  friend class ::PragmaOnceUnitState;
 
87128
  friend class ::PragmaOnce;
 
87129
  friend class ::CMatchSyntax;
 
87130
 
 
87131
#line 2742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87132
 
 
87133
public:
 
87134
  /** Constructor.
 
87135
   *  \param size The initial size of the list.
 
87136
   *  \param props The list properties. */
 
87137
  CT_ArgDeclList (int size = 2, int props = SEPARATORS | OPEN_CLOSE) : 
 
87138
   CT_DeclList (size, 2) { AddProperties (props); }
 
87139
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87140
  static const char *NodeId ();
 
87141
  /** Get the name of the node. Can be compared with NodeId(). */
 
87142
  const char *NodeName () const { return NodeId (); }
 
87143
  /** Get the scope opened by the parameter list. */
 
87144
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
87145
public:
 
87146
  typedef AC::TLE __AttrTypes;
 
87147
  const char *__attr_name (unsigned i) const { return 0; }
 
87148
  const void *__attr (unsigned __i) const { return 0; }
 
87149
#line 2755 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87150
};
 
87151
 
 
87152
/** \class CT_ArgDeclSeq CTree.h Puma/CTree.h
 
87153
 *  Tree node representing a K&R function parameter declarations list. */
 
87154
 
 
87155
#line 87156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87156
} // closed Puma
 
87157
class CCExprResolve;
 
87158
class CExprResolve;
 
87159
class WinIfExists;
 
87160
class WinImportHandler;
 
87161
class WinMacros;
 
87162
class WinAsm;
 
87163
class WinDeclSpecs;
 
87164
class WinMemberExplSpec;
 
87165
class WinTypeKeywords;
 
87166
class WinFriend;
 
87167
class ExtAC;
 
87168
class ExtACBuilderCoupling;
 
87169
class ExtACSyntaxCoupling;
 
87170
class ExtACTree;
 
87171
class ExtACKeywords;
 
87172
class ExtGnu;
 
87173
class PragmaOnceUnitState;
 
87174
class PragmaOnce;
 
87175
class CMatchSyntax;
 
87176
namespace Puma {
 
87177
 
 
87178
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87179
class CT_ArgDeclSeq : public CT_DeclList, public CSemScope {
 
87180
#line 87181 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87181
  friend class ::CCExprResolve;
 
87182
  friend class ::CExprResolve;
 
87183
  friend class ::WinIfExists;
 
87184
  friend class ::WinImportHandler;
 
87185
  friend class ::WinMacros;
 
87186
  friend class ::WinAsm;
 
87187
  friend class ::WinDeclSpecs;
 
87188
  friend class ::WinMemberExplSpec;
 
87189
  friend class ::WinTypeKeywords;
 
87190
  friend class ::WinFriend;
 
87191
  friend class ::ExtAC;
 
87192
  friend class ::ExtACBuilderCoupling;
 
87193
  friend class ::ExtACSyntaxCoupling;
 
87194
  friend class ::ExtACTree;
 
87195
  friend class ::ExtACKeywords;
 
87196
  friend class ::ExtGnu;
 
87197
  friend class ::PragmaOnceUnitState;
 
87198
  friend class ::PragmaOnce;
 
87199
  friend class ::CMatchSyntax;
 
87200
 
 
87201
#line 2759 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87202
 
 
87203
public:
 
87204
  /** Constructor.
 
87205
   *  \param size The initial size of the list. */
 
87206
  CT_ArgDeclSeq (int size = 2) : CT_DeclList (size, 2) {}
 
87207
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87208
  static const char *NodeId ();
 
87209
  /** Get the name of the node. Can be compared with NodeId(). */
 
87210
  const char *NodeName () const { return NodeId (); }
 
87211
  /** Get the scope opened by the parameter declarations list. */
 
87212
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
87213
public:
 
87214
  typedef AC::TLE __AttrTypes;
 
87215
  const char *__attr_name (unsigned i) const { return 0; }
 
87216
  const void *__attr (unsigned __i) const { return 0; }
 
87217
#line 2770 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87218
};
 
87219
 
 
87220
/** \class CT_ArgNameList CTree.h Puma/CTree.h
 
87221
 *  Tree node representing a K&R function parameter name list. */
 
87222
 
 
87223
#line 87224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87224
} // closed Puma
 
87225
class CCExprResolve;
 
87226
class CExprResolve;
 
87227
class WinIfExists;
 
87228
class WinImportHandler;
 
87229
class WinMacros;
 
87230
class WinAsm;
 
87231
class WinDeclSpecs;
 
87232
class WinMemberExplSpec;
 
87233
class WinTypeKeywords;
 
87234
class WinFriend;
 
87235
class ExtAC;
 
87236
class ExtACBuilderCoupling;
 
87237
class ExtACSyntaxCoupling;
 
87238
class ExtACTree;
 
87239
class ExtACKeywords;
 
87240
class ExtGnu;
 
87241
class PragmaOnceUnitState;
 
87242
class PragmaOnce;
 
87243
class CMatchSyntax;
 
87244
namespace Puma {
 
87245
 
 
87246
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87247
class CT_ArgNameList : public CT_ArgDeclList {
 
87248
#line 87249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87249
  friend class ::CCExprResolve;
 
87250
  friend class ::CExprResolve;
 
87251
  friend class ::WinIfExists;
 
87252
  friend class ::WinImportHandler;
 
87253
  friend class ::WinMacros;
 
87254
  friend class ::WinAsm;
 
87255
  friend class ::WinDeclSpecs;
 
87256
  friend class ::WinMemberExplSpec;
 
87257
  friend class ::WinTypeKeywords;
 
87258
  friend class ::WinFriend;
 
87259
  friend class ::ExtAC;
 
87260
  friend class ::ExtACBuilderCoupling;
 
87261
  friend class ::ExtACSyntaxCoupling;
 
87262
  friend class ::ExtACTree;
 
87263
  friend class ::ExtACKeywords;
 
87264
  friend class ::ExtGnu;
 
87265
  friend class ::PragmaOnceUnitState;
 
87266
  friend class ::PragmaOnce;
 
87267
  friend class ::CMatchSyntax;
 
87268
 
 
87269
#line 2774 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87270
 
 
87271
public:
 
87272
  /** Constructor. */
 
87273
  CT_ArgNameList () : CT_ArgDeclList () {}
 
87274
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87275
  static const char *NodeId ();
 
87276
  /** Get the name of the node. Can be compared with NodeId(). */
 
87277
  const char *NodeName () const { return NodeId (); }
 
87278
public:
 
87279
  typedef AC::TLE __AttrTypes;
 
87280
  const char *__attr_name (unsigned i) const { return 0; }
 
87281
  const void *__attr (unsigned __i) const { return 0; }
 
87282
#line 2782 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87283
};
 
87284
 
 
87285
/** \class CT_NamespaceDef CTree.h Puma/CTree.h
 
87286
 *  Tree node representing a namespace definition.
 
87287
 *  Example: \code namespace a {} \endcode */
 
87288
 
 
87289
#line 87290 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87290
} // closed Puma
 
87291
class CCExprResolve;
 
87292
class CExprResolve;
 
87293
class WinIfExists;
 
87294
class WinImportHandler;
 
87295
class WinMacros;
 
87296
class WinAsm;
 
87297
class WinDeclSpecs;
 
87298
class WinMemberExplSpec;
 
87299
class WinTypeKeywords;
 
87300
class WinFriend;
 
87301
class ExtAC;
 
87302
class ExtACBuilderCoupling;
 
87303
class ExtACSyntaxCoupling;
 
87304
class ExtACTree;
 
87305
class ExtACKeywords;
 
87306
class ExtGnu;
 
87307
class PragmaOnceUnitState;
 
87308
class PragmaOnce;
 
87309
class CMatchSyntax;
 
87310
namespace Puma {
 
87311
 
 
87312
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87313
class CT_NamespaceDef : public CT_Decl, public CSemObject {
 
87314
#line 87315 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87315
  friend class ::CCExprResolve;
 
87316
  friend class ::CExprResolve;
 
87317
  friend class ::WinIfExists;
 
87318
  friend class ::WinImportHandler;
 
87319
  friend class ::WinMacros;
 
87320
  friend class ::WinAsm;
 
87321
  friend class ::WinDeclSpecs;
 
87322
  friend class ::WinMemberExplSpec;
 
87323
  friend class ::WinTypeKeywords;
 
87324
  friend class ::WinFriend;
 
87325
  friend class ::ExtAC;
 
87326
  friend class ::ExtACBuilderCoupling;
 
87327
  friend class ::ExtACSyntaxCoupling;
 
87328
  friend class ::ExtACTree;
 
87329
  friend class ::ExtACKeywords;
 
87330
  friend class ::ExtGnu;
 
87331
  friend class ::PragmaOnceUnitState;
 
87332
  friend class ::PragmaOnce;
 
87333
  friend class ::CMatchSyntax;
 
87334
 
 
87335
#line 2787 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87336
 
 
87337
  CTree *sons[3]; // ns, name, members
 
87338
 
 
87339
public:
 
87340
  /** Constructor.
 
87341
   *  \param n The keyword 'namespace'.
 
87342
   *  \param nm The name of the namespace. */
 
87343
  CT_NamespaceDef (CTree *n, CTree *nm) {
 
87344
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], 0); 
 
87345
  }
 
87346
  /** Constructor.
 
87347
   *  \param n The keyword 'namespace'.
 
87348
   *  \param nm The name of the namespace. 
 
87349
   *  \param m The namespace member declarations list. */
 
87350
  CT_NamespaceDef (CTree *n, CTree *nm, CTree *m) {
 
87351
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], m); 
 
87352
  }
 
87353
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87354
  static const char *NodeId ();
 
87355
  /** Get the name of the node. Can be compared with NodeId(). */
 
87356
  const char *NodeName () const { return NodeId (); }
 
87357
  /** Get the number of sons. */
 
87358
  int Sons () const { return CTree::Sons (sons, 3); }
 
87359
  /** Get the n-th son.
 
87360
   *  \param n The index of the son.
 
87361
   *  \return The n-th son or NULL. */
 
87362
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
87363
  /** Set the namespace member declarations list. */
 
87364
  void Members (CTree *m) { AddSon (sons[2], m); }
 
87365
  /** Get the namespace member declarations list. */
 
87366
  CT_MembList *Members () const { return (CT_MembList*)sons[2]; }
 
87367
  /** Get the name of the namespace. */
 
87368
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
87369
  /** Get the semantic information about the namespace. */
 
87370
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
87371
  /** Replace a son.
 
87372
   *  \param old_son The son to replace.
 
87373
   *  \param new_son The new son. */
 
87374
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
87375
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
87376
  }
 
87377
public:
 
87378
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
87379
  const char *__attr_name (unsigned i) const {
 
87380
    static const char *names[] = { "sons" }; return names[i];
 
87381
  }
 
87382
  const void *__attr (unsigned __i) const {
 
87383
    switch (__i) { case 0: return &sons; default: return 0; }
 
87384
  }
 
87385
#line 2828 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87386
};
 
87387
 
 
87388
/** \class CT_NamespaceAliasDef CTree.h Puma/CTree.h
 
87389
 *  Tree node representing a namespace alias definition.
 
87390
 *  Example: \code namespace b = a; \endcode */
 
87391
 
 
87392
#line 87393 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87393
} // closed Puma
 
87394
class CCExprResolve;
 
87395
class CExprResolve;
 
87396
class WinIfExists;
 
87397
class WinImportHandler;
 
87398
class WinMacros;
 
87399
class WinAsm;
 
87400
class WinDeclSpecs;
 
87401
class WinMemberExplSpec;
 
87402
class WinTypeKeywords;
 
87403
class WinFriend;
 
87404
class ExtAC;
 
87405
class ExtACBuilderCoupling;
 
87406
class ExtACSyntaxCoupling;
 
87407
class ExtACTree;
 
87408
class ExtACKeywords;
 
87409
class ExtGnu;
 
87410
class PragmaOnceUnitState;
 
87411
class PragmaOnce;
 
87412
class CMatchSyntax;
 
87413
namespace Puma {
 
87414
 
 
87415
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87416
class CT_NamespaceAliasDef : public CT_Decl, public CSemObject {
 
87417
#line 87418 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87418
  friend class ::CCExprResolve;
 
87419
  friend class ::CExprResolve;
 
87420
  friend class ::WinIfExists;
 
87421
  friend class ::WinImportHandler;
 
87422
  friend class ::WinMacros;
 
87423
  friend class ::WinAsm;
 
87424
  friend class ::WinDeclSpecs;
 
87425
  friend class ::WinMemberExplSpec;
 
87426
  friend class ::WinTypeKeywords;
 
87427
  friend class ::WinFriend;
 
87428
  friend class ::ExtAC;
 
87429
  friend class ::ExtACBuilderCoupling;
 
87430
  friend class ::ExtACSyntaxCoupling;
 
87431
  friend class ::ExtACTree;
 
87432
  friend class ::ExtACKeywords;
 
87433
  friend class ::ExtGnu;
 
87434
  friend class ::PragmaOnceUnitState;
 
87435
  friend class ::PragmaOnce;
 
87436
  friend class ::CMatchSyntax;
 
87437
 
 
87438
#line 2833 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87439
 
 
87440
  CTree *sons[5]; // ns, alias, assign, name, semi_colon
 
87441
 
 
87442
public:
 
87443
  /** Constructor.
 
87444
   *  \param n The keyword 'namespace'.
 
87445
   *  \param a The name of the namespace alias.
 
87446
   *  \param as The assignment operator '='.
 
87447
   *  \param nm The name of the original namespace.
 
87448
   *  \param s The trailing semi-colon. */
 
87449
  CT_NamespaceAliasDef (CTree *n, CTree *a, CTree *as, CTree *nm, CTree *s) {
 
87450
    AddSon (sons[0], n); AddSon (sons[1], a); AddSon (sons[2], as); 
 
87451
    AddSon (sons[3], nm); AddSon (sons[4], s); 
 
87452
  }
 
87453
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87454
  static const char *NodeId ();
 
87455
  /** Get the name of the node. Can be compared with NodeId(). */
 
87456
  const char *NodeName () const { return NodeId (); }
 
87457
  /** Get the number of sons. */
 
87458
  int Sons () const { return 5; }
 
87459
  /** Get the n-th son.
 
87460
   *  \param n The index of the son.
 
87461
   *  \return The n-th son or NULL. */
 
87462
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
87463
  /** Get the name of the original namespace. */
 
87464
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[3]; }
 
87465
  /** Get the name of the namespace alias. */
 
87466
  CT_SimpleName *Alias () const { return (CT_SimpleName*)sons[1]; }
 
87467
  /** Get the semantic information about the namespace alias. */
 
87468
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
87469
  /** Replace a son.
 
87470
   *  \param old_son The son to replace.
 
87471
   *  \param new_son The new son. */
 
87472
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
87473
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
87474
  }
 
87475
public:
 
87476
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
87477
  const char *__attr_name (unsigned i) const {
 
87478
    static const char *names[] = { "sons" }; return names[i];
 
87479
  }
 
87480
  const void *__attr (unsigned __i) const {
 
87481
    switch (__i) { case 0: return &sons; default: return 0; }
 
87482
  }
 
87483
#line 2869 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87484
};
 
87485
 
 
87486
/** \class CT_UsingDirective CTree.h Puma/CTree.h
 
87487
 *  Tree node representing a namespace using directive.
 
87488
 *  Example: \code using namespace std; \endcode */
 
87489
 
 
87490
#line 87491 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87491
} // closed Puma
 
87492
class CCExprResolve;
 
87493
class CExprResolve;
 
87494
class WinIfExists;
 
87495
class WinImportHandler;
 
87496
class WinMacros;
 
87497
class WinAsm;
 
87498
class WinDeclSpecs;
 
87499
class WinMemberExplSpec;
 
87500
class WinTypeKeywords;
 
87501
class WinFriend;
 
87502
class ExtAC;
 
87503
class ExtACBuilderCoupling;
 
87504
class ExtACSyntaxCoupling;
 
87505
class ExtACTree;
 
87506
class ExtACKeywords;
 
87507
class ExtGnu;
 
87508
class PragmaOnceUnitState;
 
87509
class PragmaOnce;
 
87510
class CMatchSyntax;
 
87511
namespace Puma {
 
87512
 
 
87513
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87514
class CT_UsingDirective : public CT_Decl {
 
87515
#line 87516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87516
  friend class ::CCExprResolve;
 
87517
  friend class ::CExprResolve;
 
87518
  friend class ::WinIfExists;
 
87519
  friend class ::WinImportHandler;
 
87520
  friend class ::WinMacros;
 
87521
  friend class ::WinAsm;
 
87522
  friend class ::WinDeclSpecs;
 
87523
  friend class ::WinMemberExplSpec;
 
87524
  friend class ::WinTypeKeywords;
 
87525
  friend class ::WinFriend;
 
87526
  friend class ::ExtAC;
 
87527
  friend class ::ExtACBuilderCoupling;
 
87528
  friend class ::ExtACSyntaxCoupling;
 
87529
  friend class ::ExtACTree;
 
87530
  friend class ::ExtACKeywords;
 
87531
  friend class ::ExtGnu;
 
87532
  friend class ::PragmaOnceUnitState;
 
87533
  friend class ::PragmaOnce;
 
87534
  friend class ::CMatchSyntax;
 
87535
 
 
87536
#line 2874 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87537
 
 
87538
  CTree *sons[4]; // using, ns, name, semi_colon
 
87539
 
 
87540
public:
 
87541
  /** Constructor. 
 
87542
   *  \param u The keyword 'using'.
 
87543
   *  \param ns The keyword 'namespace'. 
 
87544
   *  \param n The name of the namespace.
 
87545
   *  \param s The trailing semi-colon. */
 
87546
  CT_UsingDirective (CTree *u, CTree *ns, CTree *n, CTree *s) {
 
87547
    AddSon (sons[0], u); AddSon (sons[1], ns); AddSon (sons[2], n); 
 
87548
    AddSon (sons[3], s); 
 
87549
  }
 
87550
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87551
  static const char *NodeId ();
 
87552
  /** Get the name of the node. Can be compared with NodeId(). */
 
87553
  const char *NodeName () const { return NodeId (); }
 
87554
  /** Get the number of sons. */
 
87555
  int Sons () const { return 4; }
 
87556
  /** Get the n-th son.
 
87557
   *  \param n The index of the son.
 
87558
   *  \return The n-th son or NULL. */
 
87559
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
87560
  /** Get the name of the namespace. */
 
87561
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
87562
  /** Replace a son.
 
87563
   *  \param old_son The son to replace.
 
87564
   *  \param new_son The new son. */
 
87565
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
87566
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
87567
  }
 
87568
public:
 
87569
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
87570
  const char *__attr_name (unsigned i) const {
 
87571
    static const char *names[] = { "sons" }; return names[i];
 
87572
  }
 
87573
  const void *__attr (unsigned __i) const {
 
87574
    switch (__i) { case 0: return &sons; default: return 0; }
 
87575
  }
 
87576
#line 2905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87577
};
 
87578
 
 
87579
/*****************************************************************************/
 
87580
/*                                                                           */
 
87581
/*                              Declarators                                  */
 
87582
/*                                                                           */
 
87583
/*****************************************************************************/
 
87584
 
 
87585
/** \class CT_Declarator CTree.h Puma/CTree.h
 
87586
 *  Base class for all tree nodes representing declarators. */
 
87587
 
 
87588
#line 87589 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87589
} // closed Puma
 
87590
class CCExprResolve;
 
87591
class CExprResolve;
 
87592
class WinIfExists;
 
87593
class WinImportHandler;
 
87594
class WinMacros;
 
87595
class WinAsm;
 
87596
class WinDeclSpecs;
 
87597
class WinMemberExplSpec;
 
87598
class WinTypeKeywords;
 
87599
class WinFriend;
 
87600
class ExtAC;
 
87601
class ExtACBuilderCoupling;
 
87602
class ExtACSyntaxCoupling;
 
87603
class ExtACTree;
 
87604
class ExtACKeywords;
 
87605
class ExtGnu;
 
87606
class PragmaOnceUnitState;
 
87607
class PragmaOnce;
 
87608
class CMatchSyntax;
 
87609
namespace Puma {
 
87610
 
 
87611
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87612
class CT_Declarator : public CTree {
 
87613
#line 87614 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87614
  friend class ::CCExprResolve;
 
87615
  friend class ::CExprResolve;
 
87616
  friend class ::WinIfExists;
 
87617
  friend class ::WinImportHandler;
 
87618
  friend class ::WinMacros;
 
87619
  friend class ::WinAsm;
 
87620
  friend class ::WinDeclSpecs;
 
87621
  friend class ::WinMemberExplSpec;
 
87622
  friend class ::WinTypeKeywords;
 
87623
  friend class ::WinFriend;
 
87624
  friend class ::ExtAC;
 
87625
  friend class ::ExtACBuilderCoupling;
 
87626
  friend class ::ExtACSyntaxCoupling;
 
87627
  friend class ::ExtACTree;
 
87628
  friend class ::ExtACKeywords;
 
87629
  friend class ::ExtGnu;
 
87630
  friend class ::PragmaOnceUnitState;
 
87631
  friend class ::PragmaOnce;
 
87632
  friend class ::CMatchSyntax;
 
87633
 
 
87634
#line 2915 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87635
 
 
87636
protected:
 
87637
  /** Constructor. */
 
87638
  CT_Declarator () {}
 
87639
 
 
87640
public:
 
87641
  /** Get the declarator. */
 
87642
  virtual CTree *Declarator () const = 0;
 
87643
  /** Get this. */
 
87644
  virtual CT_Declarator *IsDeclarator () { return this; }
 
87645
  /** Get the declared name. */
 
87646
  CT_SimpleName *Name ();
 
87647
  /** Get the declared name and set last_declarator to 
 
87648
   *  the declarator containing the name. 
 
87649
   *  \param last_declarator To be set to the declarator containing the name. */
 
87650
  CT_SimpleName *Name (CT_Declarator *&last_declarator);
 
87651
public:
 
87652
  typedef AC::TLE __AttrTypes;
 
87653
  const char *__attr_name (unsigned i) const { return 0; }
 
87654
  const void *__attr (unsigned __i) const { return 0; }
 
87655
#line 2931 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87656
};
 
87657
 
 
87658
/** \class CT_InitDeclarator CTree.h Puma/CTree.h
 
87659
 *  Tree node representing a declarator with initializer.
 
87660
 *  Example: \code int *i = 0; \endcode */
 
87661
 
 
87662
#line 87663 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87663
} // closed Puma
 
87664
class CCExprResolve;
 
87665
class CExprResolve;
 
87666
class WinIfExists;
 
87667
class WinImportHandler;
 
87668
class WinMacros;
 
87669
class WinAsm;
 
87670
class WinDeclSpecs;
 
87671
class WinMemberExplSpec;
 
87672
class WinTypeKeywords;
 
87673
class WinFriend;
 
87674
class ExtAC;
 
87675
class ExtACBuilderCoupling;
 
87676
class ExtACSyntaxCoupling;
 
87677
class ExtACTree;
 
87678
class ExtACKeywords;
 
87679
class ExtGnu;
 
87680
class PragmaOnceUnitState;
 
87681
class PragmaOnce;
 
87682
class CMatchSyntax;
 
87683
namespace Puma {
 
87684
 
 
87685
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87686
class CT_InitDeclarator : public CT_Declarator, public CSemObject {
 
87687
#line 87688 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87688
  friend class ::CCExprResolve;
 
87689
  friend class ::CExprResolve;
 
87690
  friend class ::WinIfExists;
 
87691
  friend class ::WinImportHandler;
 
87692
  friend class ::WinMacros;
 
87693
  friend class ::WinAsm;
 
87694
  friend class ::WinDeclSpecs;
 
87695
  friend class ::WinMemberExplSpec;
 
87696
  friend class ::WinTypeKeywords;
 
87697
  friend class ::WinFriend;
 
87698
  friend class ::ExtAC;
 
87699
  friend class ::ExtACBuilderCoupling;
 
87700
  friend class ::ExtACSyntaxCoupling;
 
87701
  friend class ::ExtACTree;
 
87702
  friend class ::ExtACKeywords;
 
87703
  friend class ::ExtGnu;
 
87704
  friend class ::PragmaOnceUnitState;
 
87705
  friend class ::PragmaOnce;
 
87706
  friend class ::CMatchSyntax;
 
87707
 
 
87708
#line 2936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87709
 
 
87710
  CTree *sons[3]; // declarator, ext, init
 
87711
  CTree *obj_decl;
 
87712
 
 
87713
public:
 
87714
  /** Constructor.
 
87715
   *  \param d The declarator.
 
87716
   *  \param e Optional extension list.
 
87717
   *  \param i The initializer. */
 
87718
  CT_InitDeclarator (CTree *d, CTree *e = 0, CTree *i = 0) {
 
87719
    AddSon (sons[0], d); AddSon (sons[1], e); AddSon (sons[2], i);
 
87720
    AddSon (obj_decl, 0); 
 
87721
  }
 
87722
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87723
  static const char *NodeId ();
 
87724
  /** Get the name of the node. Can be compared with NodeId(). */
 
87725
  const char *NodeName () const { return NodeId (); }
 
87726
  /** Get the number of sons. */
 
87727
  int Sons () const { return CTree::Sons (sons, 3); }
 
87728
  /** Get the n-th son.
 
87729
   *  \param n The index of the son.
 
87730
   *  \return The n-th son or NULL. */
 
87731
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
87732
  /** Get the declarator. */
 
87733
  CTree *Declarator () const { return sons[0]; }
 
87734
  /** Get the extensions list. */
 
87735
  CTree *Extension () const { return sons[1]; }
 
87736
  /** Get the initializer. */
 
87737
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
87738
  /** Get the semantic information about the declared object. */
 
87739
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
87740
  /** Get the object declaration node containing the declarator. */
 
87741
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
87742
  /** Set the initializer. */
 
87743
  void Initializer (CTree* i) { AddSon (sons[2], i); }
 
87744
  /** Set the extensions list. */
 
87745
  void Extension (CTree* e) { AddSon (sons[1], e); }
 
87746
  /** Set the object declaration node containing the declarator. 
 
87747
   *  \param od The object declaration node. */
 
87748
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
87749
  /** Replace a son.
 
87750
   *  \param old_son The son to replace.
 
87751
   *  \param new_son The new son. */
 
87752
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
87753
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
87754
  }
 
87755
public:
 
87756
  typedef AC::TL<Puma::CTree * [3],AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
87757
  const char *__attr_name (unsigned i) const {
 
87758
    static const char *names[] = { "sons", "obj_decl" }; return names[i];
 
87759
  }
 
87760
  const void *__attr (unsigned __i) const {
 
87761
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; default: return 0; }
 
87762
  }
 
87763
#line 2982 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87764
};
 
87765
 
 
87766
/** \class CT_BracedDeclarator CTree.h Puma/CTree.h
 
87767
 *  Tree node representing a braced declarator.
 
87768
 *  Example: \code int (i); \endcode */
 
87769
 
 
87770
#line 87771 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87771
} // closed Puma
 
87772
class CCExprResolve;
 
87773
class CExprResolve;
 
87774
class WinIfExists;
 
87775
class WinImportHandler;
 
87776
class WinMacros;
 
87777
class WinAsm;
 
87778
class WinDeclSpecs;
 
87779
class WinMemberExplSpec;
 
87780
class WinTypeKeywords;
 
87781
class WinFriend;
 
87782
class ExtAC;
 
87783
class ExtACBuilderCoupling;
 
87784
class ExtACSyntaxCoupling;
 
87785
class ExtACTree;
 
87786
class ExtACKeywords;
 
87787
class ExtGnu;
 
87788
class PragmaOnceUnitState;
 
87789
class PragmaOnce;
 
87790
class CMatchSyntax;
 
87791
namespace Puma {
 
87792
 
 
87793
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87794
class CT_BracedDeclarator : public CT_Declarator {
 
87795
#line 87796 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87796
  friend class ::CCExprResolve;
 
87797
  friend class ::CExprResolve;
 
87798
  friend class ::WinIfExists;
 
87799
  friend class ::WinImportHandler;
 
87800
  friend class ::WinMacros;
 
87801
  friend class ::WinAsm;
 
87802
  friend class ::WinDeclSpecs;
 
87803
  friend class ::WinMemberExplSpec;
 
87804
  friend class ::WinTypeKeywords;
 
87805
  friend class ::WinFriend;
 
87806
  friend class ::ExtAC;
 
87807
  friend class ::ExtACBuilderCoupling;
 
87808
  friend class ::ExtACSyntaxCoupling;
 
87809
  friend class ::ExtACTree;
 
87810
  friend class ::ExtACKeywords;
 
87811
  friend class ::ExtGnu;
 
87812
  friend class ::PragmaOnceUnitState;
 
87813
  friend class ::PragmaOnce;
 
87814
  friend class ::CMatchSyntax;
 
87815
 
 
87816
#line 2987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87817
 
 
87818
  CTree *sons[4]; // open, win_specs, declarator, close
 
87819
 
 
87820
public:
 
87821
  /** Constructor.
 
87822
   *  \param o Left parenthesis around the declarator.
 
87823
   *  \param d The declarator.
 
87824
   *  \param c Right parenthesis around the declarator. */
 
87825
  CT_BracedDeclarator (CTree *o, CTree *d, CTree *c) {
 
87826
    AddSon (sons[0], o); AddSon (sons[1], 0); 
 
87827
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
87828
  }
 
87829
  /** Constructor.
 
87830
   *  \param o Left parenthesis around the declarator.
 
87831
   *  \param ws Declaration specifiers.
 
87832
   *  \param d The declarator.
 
87833
   *  \param c Right parenthesis around the declarator. */
 
87834
  CT_BracedDeclarator (CTree *o, CTree *ws, CTree *d, CTree *c) {
 
87835
    AddSon (sons[0], o); AddSon (sons[1], ws); 
 
87836
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
87837
  }
 
87838
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87839
  static const char *NodeId ();
 
87840
  /** Get the name of the node. Can be compared with NodeId(). */
 
87841
  const char *NodeName () const { return NodeId (); }
 
87842
  /** Get the number of sons. */
 
87843
  int Sons () const { return CTree::Sons (sons, 4); }
 
87844
  /** Get the n-th son.
 
87845
   *  \param n The index of the son.
 
87846
   *  \return The n-th son or NULL. */
 
87847
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
87848
  /** Get the declarator. */
 
87849
  CTree *Declarator () const { return sons[2]; }
 
87850
  /** Replace a son.
 
87851
   *  \param old_son The son to replace.
 
87852
   *  \param new_son The new son. */
 
87853
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
87854
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
87855
  }
 
87856
public:
 
87857
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
87858
  const char *__attr_name (unsigned i) const {
 
87859
    static const char *names[] = { "sons" }; return names[i];
 
87860
  }
 
87861
  const void *__attr (unsigned __i) const {
 
87862
    switch (__i) { case 0: return &sons; default: return 0; }
 
87863
  }
 
87864
#line 3026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87865
};
 
87866
 
 
87867
/** \class CT_ArrayDelimiter CTree.h Puma/CTree.h
 
87868
 *  Tree node representing an array delimiter.
 
87869
 *  Example: \code [10] \endcode or \code [*] \endcode */
 
87870
 
 
87871
#line 87872 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87872
} // closed Puma
 
87873
class CCExprResolve;
 
87874
class CExprResolve;
 
87875
class WinIfExists;
 
87876
class WinImportHandler;
 
87877
class WinMacros;
 
87878
class WinAsm;
 
87879
class WinDeclSpecs;
 
87880
class WinMemberExplSpec;
 
87881
class WinTypeKeywords;
 
87882
class WinFriend;
 
87883
class ExtAC;
 
87884
class ExtACBuilderCoupling;
 
87885
class ExtACSyntaxCoupling;
 
87886
class ExtACTree;
 
87887
class ExtACKeywords;
 
87888
class ExtGnu;
 
87889
class PragmaOnceUnitState;
 
87890
class PragmaOnce;
 
87891
class CMatchSyntax;
 
87892
namespace Puma {
 
87893
 
 
87894
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87895
class CT_ArrayDelimiter : public CTree {
 
87896
#line 87897 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87897
  friend class ::CCExprResolve;
 
87898
  friend class ::CExprResolve;
 
87899
  friend class ::WinIfExists;
 
87900
  friend class ::WinImportHandler;
 
87901
  friend class ::WinMacros;
 
87902
  friend class ::WinAsm;
 
87903
  friend class ::WinDeclSpecs;
 
87904
  friend class ::WinMemberExplSpec;
 
87905
  friend class ::WinTypeKeywords;
 
87906
  friend class ::WinFriend;
 
87907
  friend class ::ExtAC;
 
87908
  friend class ::ExtACBuilderCoupling;
 
87909
  friend class ::ExtACSyntaxCoupling;
 
87910
  friend class ::ExtACTree;
 
87911
  friend class ::ExtACKeywords;
 
87912
  friend class ::ExtGnu;
 
87913
  friend class ::PragmaOnceUnitState;
 
87914
  friend class ::PragmaOnce;
 
87915
  friend class ::CMatchSyntax;
 
87916
 
 
87917
#line 3031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87918
 
 
87919
  CTree *sons[4]; // star, static, quals, expr
 
87920
  bool pos0;
 
87921
 
 
87922
public:
 
87923
  /** Constructor.
 
87924
   *  \param m The operator '*'.
 
87925
   *  \param s The keyword 'static'.
 
87926
   *  \param q The const/volatile qualifier sequence. 
 
87927
   *  \param e The array size expression. 
 
87928
   *  \param p Position of keyword 'static', true means before the
 
87929
   *           qualifier sequence and false means behind it. */
 
87930
  CT_ArrayDelimiter (CTree *m, CTree *s, CTree *q, CTree *e, bool p = false) {
 
87931
    AddSon (sons[0], m); AddSon (sons[1], s); 
 
87932
    AddSon (sons[2], q); AddSon (sons[3], e); pos0 = p;
 
87933
  }
 
87934
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
87935
  static const char *NodeId ();
 
87936
  /** Get the name of the node. Can be compared with NodeId(). */
 
87937
  const char *NodeName () const { return NodeId (); }
 
87938
  /** Get the number of sons. */
 
87939
  int Sons () const { return CTree::Sons (sons, 4); }
 
87940
  /** Get the n-th son.
 
87941
   *  \param n The index of the son.
 
87942
   *  \return The n-th son or NULL. */
 
87943
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
87944
  /** Get the operator '*'. */
 
87945
  CT_Token *Star () const { return (CT_Token*)sons[0]; }
 
87946
  /** Get the keyword 'static'. */
 
87947
  CT_Token *Static () const { return (CT_Token*)sons[pos0?2:1]; }
 
87948
  /** Get the const/volatile qualifier sequence. */
 
87949
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[pos0?1:2]; }
 
87950
  /** Get the array size expression. */
 
87951
  CTree *Expr () const { return sons[3]; }
 
87952
  /** Replace a son.
 
87953
   *  \param old_son The son to replace.
 
87954
   *  \param new_son The new son. */
 
87955
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
87956
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
87957
  }
 
87958
public:
 
87959
  typedef AC::TL<Puma::CTree * [4],AC::TL<bool,AC::TLE > > __AttrTypes;
 
87960
  const char *__attr_name (unsigned i) const {
 
87961
    static const char *names[] = { "sons", "pos0" }; return names[i];
 
87962
  }
 
87963
  const void *__attr (unsigned __i) const {
 
87964
    switch (__i) { case 0: return &sons; case 1: return &pos0; default: return 0; }
 
87965
  }
 
87966
#line 3071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87967
};
 
87968
 
 
87969
/** \class CT_ArrayDeclarator CTree.h Puma/CTree.h
 
87970
 *  Tree node representing an array declarator.
 
87971
 *  Example: \code a[10] \endcode */
 
87972
 
 
87973
#line 87974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87974
} // closed Puma
 
87975
class CCExprResolve;
 
87976
class CExprResolve;
 
87977
class WinIfExists;
 
87978
class WinImportHandler;
 
87979
class WinMacros;
 
87980
class WinAsm;
 
87981
class WinDeclSpecs;
 
87982
class WinMemberExplSpec;
 
87983
class WinTypeKeywords;
 
87984
class WinFriend;
 
87985
class ExtAC;
 
87986
class ExtACBuilderCoupling;
 
87987
class ExtACSyntaxCoupling;
 
87988
class ExtACTree;
 
87989
class ExtACKeywords;
 
87990
class ExtGnu;
 
87991
class PragmaOnceUnitState;
 
87992
class PragmaOnce;
 
87993
class CMatchSyntax;
 
87994
namespace Puma {
 
87995
 
 
87996
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
87997
class CT_ArrayDeclarator : public CT_Declarator, public CSemValue {
 
87998
#line 87999 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
87999
  friend class ::CCExprResolve;
 
88000
  friend class ::CExprResolve;
 
88001
  friend class ::WinIfExists;
 
88002
  friend class ::WinImportHandler;
 
88003
  friend class ::WinMacros;
 
88004
  friend class ::WinAsm;
 
88005
  friend class ::WinDeclSpecs;
 
88006
  friend class ::WinMemberExplSpec;
 
88007
  friend class ::WinTypeKeywords;
 
88008
  friend class ::WinFriend;
 
88009
  friend class ::ExtAC;
 
88010
  friend class ::ExtACBuilderCoupling;
 
88011
  friend class ::ExtACSyntaxCoupling;
 
88012
  friend class ::ExtACTree;
 
88013
  friend class ::ExtACKeywords;
 
88014
  friend class ::ExtGnu;
 
88015
  friend class ::PragmaOnceUnitState;
 
88016
  friend class ::PragmaOnce;
 
88017
  friend class ::CMatchSyntax;
 
88018
 
 
88019
#line 3076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88020
 
 
88021
  CTree *sons[4]; // declarator, open, delim, close
 
88022
 
 
88023
public:
 
88024
  /** Constructor.
 
88025
   *  \param d The array declarator.
 
88026
   *  \param o Left bracket around the delimiter.
 
88027
   *  \param ad The array delimiter.
 
88028
   *  \param c Right bracket around the delimiter. */
 
88029
  CT_ArrayDeclarator (CTree *d, CTree *o, CTree *ad, CTree *c) {
 
88030
    AddSon (sons[0], d); AddSon (sons[1], o); 
 
88031
    AddSon (sons[2], ad); AddSon (sons[3], c); 
 
88032
  }
 
88033
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88034
  static const char *NodeId ();
 
88035
  /** Get the name of the node. Can be compared with NodeId(). */
 
88036
  const char *NodeName () const { return NodeId (); }
 
88037
  /** Get the number of sons. */
 
88038
  int Sons () const { return 4; }
 
88039
  /** Get the n-th son.
 
88040
   *  \param n The index of the son.
 
88041
   *  \return The n-th son or NULL. */
 
88042
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
88043
  /** Get the array declarator. */
 
88044
  CTree *Declarator () const { return sons[0]; }
 
88045
  /** Get the array delimiter. */
 
88046
  CT_ArrayDelimiter *Delimiter () const 
 
88047
   { return (CT_ArrayDelimiter*)sons[2]; }
 
88048
  /** Replace a son.
 
88049
   *  \param old_son The son to replace.
 
88050
   *  \param new_son The new son. */
 
88051
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
88052
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
88053
  }
 
88054
  /** Get the semantic information for the type of the declared array. */
 
88055
  CTypeInfo *Type () const { return type; }
 
88056
  /** Get the semantic information for the value of the declared array. */
 
88057
  CExprValue *Value () const { return value; }
 
88058
  /** Get the semantic information object. */
 
88059
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
88060
public:
 
88061
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
88062
  const char *__attr_name (unsigned i) const {
 
88063
    static const char *names[] = { "sons" }; return names[i];
 
88064
  }
 
88065
  const void *__attr (unsigned __i) const {
 
88066
    switch (__i) { case 0: return &sons; default: return 0; }
 
88067
  }
 
88068
#line 3116 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88069
};
 
88070
 
 
88071
/** \class CT_FctDeclarator CTree.h Puma/CTree.h
 
88072
 *  Tree node representing a function declarator.
 
88073
 *  Example: \code f(int a) const \endcode */
 
88074
 
 
88075
#line 88076 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88076
} // closed Puma
 
88077
class CCExprResolve;
 
88078
class CExprResolve;
 
88079
class WinIfExists;
 
88080
class WinImportHandler;
 
88081
class WinMacros;
 
88082
class WinAsm;
 
88083
class WinDeclSpecs;
 
88084
class WinMemberExplSpec;
 
88085
class WinTypeKeywords;
 
88086
class WinFriend;
 
88087
class ExtAC;
 
88088
class ExtACBuilderCoupling;
 
88089
class ExtACSyntaxCoupling;
 
88090
class ExtACTree;
 
88091
class ExtACKeywords;
 
88092
class ExtGnu;
 
88093
class PragmaOnceUnitState;
 
88094
class PragmaOnce;
 
88095
class CMatchSyntax;
 
88096
namespace Puma {
 
88097
 
 
88098
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88099
class CT_FctDeclarator : public CT_Declarator {
 
88100
#line 88101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88101
  friend class ::CCExprResolve;
 
88102
  friend class ::CExprResolve;
 
88103
  friend class ::WinIfExists;
 
88104
  friend class ::WinImportHandler;
 
88105
  friend class ::WinMacros;
 
88106
  friend class ::WinAsm;
 
88107
  friend class ::WinDeclSpecs;
 
88108
  friend class ::WinMemberExplSpec;
 
88109
  friend class ::WinTypeKeywords;
 
88110
  friend class ::WinFriend;
 
88111
  friend class ::ExtAC;
 
88112
  friend class ::ExtACBuilderCoupling;
 
88113
  friend class ::ExtACSyntaxCoupling;
 
88114
  friend class ::ExtACTree;
 
88115
  friend class ::ExtACKeywords;
 
88116
  friend class ::ExtGnu;
 
88117
  friend class ::PragmaOnceUnitState;
 
88118
  friend class ::PragmaOnce;
 
88119
  friend class ::CMatchSyntax;
 
88120
 
 
88121
#line 3121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88122
 
 
88123
  CTree *sons[4]; // declarator, args, cv_quals, exception_specs
 
88124
 
 
88125
public:
 
88126
  /** Constructor.
 
88127
   *  \param d The function declarator.
 
88128
   *  \param args The function parameter list.
 
88129
   *  \param cv The function qualifiers.
 
88130
   *  \param es The exception specifier. */
 
88131
  CT_FctDeclarator (CTree *d, CTree *args, CTree *cv, CTree *es) {
 
88132
    AddSon (sons[0], d); AddSon (sons[1], args); 
 
88133
    AddSon (sons[2], cv); AddSon (sons[3], es); 
 
88134
  }
 
88135
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88136
  static const char *NodeId ();
 
88137
  /** Get the name of the node. Can be compared with NodeId(). */
 
88138
  const char *NodeName () const { return NodeId (); }
 
88139
  /** Get the number of sons. */
 
88140
  int Sons () const { return CTree::Sons (sons, 4); }
 
88141
  /** Get the n-th son.
 
88142
   *  \param n The index of the son.
 
88143
   *  \return The n-th son or NULL. */
 
88144
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
88145
  /** Get the function declarator. */
 
88146
  CTree *Declarator () const { return sons[0]; }
 
88147
  /** Get the function parameter list. */
 
88148
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
88149
  /** Get the function qualifier list. */
 
88150
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[2]; }
 
88151
  /** Get the exception specifier. */
 
88152
  CT_ExceptionSpec *ExceptionSpecs () const { return (CT_ExceptionSpec*)sons[3]; }
 
88153
  /** Replace a son.
 
88154
   *  \param old_son The son to replace.
 
88155
   *  \param new_son The new son. */
 
88156
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
88157
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
88158
  }
 
88159
public:
 
88160
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
88161
  const char *__attr_name (unsigned i) const {
 
88162
    static const char *names[] = { "sons" }; return names[i];
 
88163
  }
 
88164
  const void *__attr (unsigned __i) const {
 
88165
    switch (__i) { case 0: return &sons; default: return 0; }
 
88166
  }
 
88167
#line 3158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88168
};
 
88169
 
 
88170
/** \class CT_RefDeclarator CTree.h Puma/CTree.h
 
88171
 *  Tree node representing a reference declarator.
 
88172
 *  Example: \code &a \endcode */
 
88173
 
 
88174
#line 88175 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88175
} // closed Puma
 
88176
class CCExprResolve;
 
88177
class CExprResolve;
 
88178
class WinIfExists;
 
88179
class WinImportHandler;
 
88180
class WinMacros;
 
88181
class WinAsm;
 
88182
class WinDeclSpecs;
 
88183
class WinMemberExplSpec;
 
88184
class WinTypeKeywords;
 
88185
class WinFriend;
 
88186
class ExtAC;
 
88187
class ExtACBuilderCoupling;
 
88188
class ExtACSyntaxCoupling;
 
88189
class ExtACTree;
 
88190
class ExtACKeywords;
 
88191
class ExtGnu;
 
88192
class PragmaOnceUnitState;
 
88193
class PragmaOnce;
 
88194
class CMatchSyntax;
 
88195
namespace Puma {
 
88196
 
 
88197
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88198
class CT_RefDeclarator : public CT_Declarator {
 
88199
#line 88200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88200
  friend class ::CCExprResolve;
 
88201
  friend class ::CExprResolve;
 
88202
  friend class ::WinIfExists;
 
88203
  friend class ::WinImportHandler;
 
88204
  friend class ::WinMacros;
 
88205
  friend class ::WinAsm;
 
88206
  friend class ::WinDeclSpecs;
 
88207
  friend class ::WinMemberExplSpec;
 
88208
  friend class ::WinTypeKeywords;
 
88209
  friend class ::WinFriend;
 
88210
  friend class ::ExtAC;
 
88211
  friend class ::ExtACBuilderCoupling;
 
88212
  friend class ::ExtACSyntaxCoupling;
 
88213
  friend class ::ExtACTree;
 
88214
  friend class ::ExtACKeywords;
 
88215
  friend class ::ExtGnu;
 
88216
  friend class ::PragmaOnceUnitState;
 
88217
  friend class ::PragmaOnce;
 
88218
  friend class ::CMatchSyntax;
 
88219
 
 
88220
#line 3163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88221
 
 
88222
  CTree *sons[2]; // ref, declarator
 
88223
 
 
88224
public:
 
88225
  /** Constructor.
 
88226
   *  \param r The reference operator '&'.
 
88227
   *  \param d The declarator. */
 
88228
  CT_RefDeclarator (CTree *r, CTree *d) { AddSon (sons[0], r); AddSon (sons[1], d); }
 
88229
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88230
  static const char *NodeId ();
 
88231
  /** Get the name of the node. Can be compared with NodeId(). */
 
88232
  const char *NodeName () const { return NodeId (); }
 
88233
  /** Get the number of sons. */
 
88234
  int Sons () const { return 2; }
 
88235
  /** Get the n-th son.
 
88236
   *  \param n The index of the son.
 
88237
   *  \return The n-th son or NULL. */
 
88238
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
88239
  /** Get the declarator. */
 
88240
  CTree *Declarator () const { return sons[1]; }
 
88241
  /** Replace a son.
 
88242
   *  \param old_son The son to replace.
 
88243
   *  \param new_son The new son. */
 
88244
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
88245
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
88246
  }
 
88247
public:
 
88248
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
88249
  const char *__attr_name (unsigned i) const {
 
88250
    static const char *names[] = { "sons" }; return names[i];
 
88251
  }
 
88252
  const void *__attr (unsigned __i) const {
 
88253
    switch (__i) { case 0: return &sons; default: return 0; }
 
88254
  }
 
88255
#line 3189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88256
};
 
88257
 
 
88258
/** \class CT_PtrDeclarator CTree.h Puma/CTree.h
 
88259
 *  Tree node representing a pointer declarator.
 
88260
 *  Example: \code *a \endcode */
 
88261
 
 
88262
#line 88263 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88263
} // closed Puma
 
88264
class CCExprResolve;
 
88265
class CExprResolve;
 
88266
class WinIfExists;
 
88267
class WinImportHandler;
 
88268
class WinMacros;
 
88269
class WinAsm;
 
88270
class WinDeclSpecs;
 
88271
class WinMemberExplSpec;
 
88272
class WinTypeKeywords;
 
88273
class WinFriend;
 
88274
class ExtAC;
 
88275
class ExtACBuilderCoupling;
 
88276
class ExtACSyntaxCoupling;
 
88277
class ExtACTree;
 
88278
class ExtACKeywords;
 
88279
class ExtGnu;
 
88280
class PragmaOnceUnitState;
 
88281
class PragmaOnce;
 
88282
class CMatchSyntax;
 
88283
namespace Puma {
 
88284
 
 
88285
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88286
class CT_PtrDeclarator : public CT_Declarator {
 
88287
#line 88288 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88288
  friend class ::CCExprResolve;
 
88289
  friend class ::CExprResolve;
 
88290
  friend class ::WinIfExists;
 
88291
  friend class ::WinImportHandler;
 
88292
  friend class ::WinMacros;
 
88293
  friend class ::WinAsm;
 
88294
  friend class ::WinDeclSpecs;
 
88295
  friend class ::WinMemberExplSpec;
 
88296
  friend class ::WinTypeKeywords;
 
88297
  friend class ::WinFriend;
 
88298
  friend class ::ExtAC;
 
88299
  friend class ::ExtACBuilderCoupling;
 
88300
  friend class ::ExtACSyntaxCoupling;
 
88301
  friend class ::ExtACTree;
 
88302
  friend class ::ExtACKeywords;
 
88303
  friend class ::ExtGnu;
 
88304
  friend class ::PragmaOnceUnitState;
 
88305
  friend class ::PragmaOnce;
 
88306
  friend class ::CMatchSyntax;
 
88307
 
 
88308
#line 3194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88309
 
 
88310
  CTree *sons[3]; // ptr, cv_quals, declarator
 
88311
 
 
88312
public:
 
88313
  /** Constructor.
 
88314
   *  \param p The pointer operator '*'.
 
88315
   *  \param c The const/volatile pointer qualifier sequence.
 
88316
   *  \param d The declarator. */
 
88317
  CT_PtrDeclarator (CTree *p, CTree *c, CTree *d) {
 
88318
    AddSon (sons[0], p); AddSon (sons[1], c); AddSon (sons[2], d); 
 
88319
  }
 
88320
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88321
  static const char *NodeId ();
 
88322
  /** Get the name of the node. Can be compared with NodeId(). */
 
88323
  const char *NodeName () const { return NodeId (); }
 
88324
  /** Get the number of sons. */
 
88325
  int Sons () const { return CTree::Sons (sons, 3); }
 
88326
  /** Get the n-th son.
 
88327
   *  \param n The index of the son.
 
88328
   *  \return The n-th son or NULL. */
 
88329
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
88330
  /** Get the declarator. */
 
88331
  CTree *Declarator () const { return sons[2]; }
 
88332
  /** Get the const/volatile qualifier sequence. */
 
88333
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[1]; }
 
88334
  /** Replace a son.
 
88335
   *  \param old_son The son to replace.
 
88336
   *  \param new_son The new son. */
 
88337
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
88338
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
88339
  }
 
88340
public:
 
88341
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
88342
  const char *__attr_name (unsigned i) const {
 
88343
    static const char *names[] = { "sons" }; return names[i];
 
88344
  }
 
88345
  const void *__attr (unsigned __i) const {
 
88346
    switch (__i) { case 0: return &sons; default: return 0; }
 
88347
  }
 
88348
#line 3225 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88349
};
 
88350
 
 
88351
/** \class CT_MembPtrDeclarator CTree.h Puma/CTree.h
 
88352
 *  Tree node representing a member pointer declarator.
 
88353
 *  Example: \code *X::a \endcode */
 
88354
 
 
88355
#line 88356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88356
} // closed Puma
 
88357
class CCExprResolve;
 
88358
class CExprResolve;
 
88359
class WinIfExists;
 
88360
class WinImportHandler;
 
88361
class WinMacros;
 
88362
class WinAsm;
 
88363
class WinDeclSpecs;
 
88364
class WinMemberExplSpec;
 
88365
class WinTypeKeywords;
 
88366
class WinFriend;
 
88367
class ExtAC;
 
88368
class ExtACBuilderCoupling;
 
88369
class ExtACSyntaxCoupling;
 
88370
class ExtACTree;
 
88371
class ExtACKeywords;
 
88372
class ExtGnu;
 
88373
class PragmaOnceUnitState;
 
88374
class PragmaOnce;
 
88375
class CMatchSyntax;
 
88376
namespace Puma {
 
88377
 
 
88378
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88379
class CT_MembPtrDeclarator : public CT_Declarator {
 
88380
#line 88381 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88381
  friend class ::CCExprResolve;
 
88382
  friend class ::CExprResolve;
 
88383
  friend class ::WinIfExists;
 
88384
  friend class ::WinImportHandler;
 
88385
  friend class ::WinMacros;
 
88386
  friend class ::WinAsm;
 
88387
  friend class ::WinDeclSpecs;
 
88388
  friend class ::WinMemberExplSpec;
 
88389
  friend class ::WinTypeKeywords;
 
88390
  friend class ::WinFriend;
 
88391
  friend class ::ExtAC;
 
88392
  friend class ::ExtACBuilderCoupling;
 
88393
  friend class ::ExtACSyntaxCoupling;
 
88394
  friend class ::ExtACTree;
 
88395
  friend class ::ExtACKeywords;
 
88396
  friend class ::ExtGnu;
 
88397
  friend class ::PragmaOnceUnitState;
 
88398
  friend class ::PragmaOnce;
 
88399
  friend class ::CMatchSyntax;
 
88400
 
 
88401
#line 3230 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88402
 
 
88403
  CTree *sons[5]; // class, colon, ptr, cv_quals, declarator
 
88404
 
 
88405
public:
 
88406
  /** Constructor.
 
88407
   *  \param c The class name.
 
88408
   *  \param cc The scope operator '::'.
 
88409
   *  \param p The name of the pointer.
 
88410
   *  \param q The const/volatile pointer qualifier sequence.
 
88411
   *  \param d The declarator. */
 
88412
  CT_MembPtrDeclarator (CTree *c, CTree *cc, CTree *p, CTree *q, CTree *d) {
 
88413
    AddSon (sons[0], c); AddSon (sons[1], cc); AddSon (sons[2], p); 
 
88414
    AddSon (sons[3], q); AddSon (sons[4], d); 
 
88415
  }
 
88416
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88417
  static const char *NodeId ();
 
88418
  /** Get the name of the node. Can be compared with NodeId(). */
 
88419
  const char *NodeName () const { return NodeId (); }
 
88420
  /** Get the number of sons. */
 
88421
  int Sons () const { return CTree::Sons (sons, 5); }
 
88422
  /** Get the n-th son.
 
88423
   *  \param n The index of the son.
 
88424
   *  \return The n-th son or NULL. */
 
88425
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
88426
  /** Get the name of the declared pointer. */
 
88427
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
88428
  /** Get the declarator. */
 
88429
  CTree *Declarator () const { return sons[4]; }
 
88430
  /** Get the const/volatile qualifier sequence. */
 
88431
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[3]; }
 
88432
  /** Replace a son.
 
88433
   *  \param old_son The son to replace.
 
88434
   *  \param new_son The new son. */
 
88435
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
88436
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
88437
  }
 
88438
public:
 
88439
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
88440
  const char *__attr_name (unsigned i) const {
 
88441
    static const char *names[] = { "sons" }; return names[i];
 
88442
  }
 
88443
  const void *__attr (unsigned __i) const {
 
88444
    switch (__i) { case 0: return &sons; default: return 0; }
 
88445
  }
 
88446
#line 3266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88447
};
 
88448
 
 
88449
/** \class CT_BitFieldDeclarator CTree.h Puma/CTree.h
 
88450
 *  Tree node representing a bit-field declarator.
 
88451
 *  Example: \code a : 2 \endcode */
 
88452
 
 
88453
#line 88454 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88454
} // closed Puma
 
88455
class CCExprResolve;
 
88456
class CExprResolve;
 
88457
class WinIfExists;
 
88458
class WinImportHandler;
 
88459
class WinMacros;
 
88460
class WinAsm;
 
88461
class WinDeclSpecs;
 
88462
class WinMemberExplSpec;
 
88463
class WinTypeKeywords;
 
88464
class WinFriend;
 
88465
class ExtAC;
 
88466
class ExtACBuilderCoupling;
 
88467
class ExtACSyntaxCoupling;
 
88468
class ExtACTree;
 
88469
class ExtACKeywords;
 
88470
class ExtGnu;
 
88471
class PragmaOnceUnitState;
 
88472
class PragmaOnce;
 
88473
class CMatchSyntax;
 
88474
namespace Puma {
 
88475
 
 
88476
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88477
class CT_BitFieldDeclarator : public CT_Declarator, public CSemObject {
 
88478
#line 88479 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88479
  friend class ::CCExprResolve;
 
88480
  friend class ::CExprResolve;
 
88481
  friend class ::WinIfExists;
 
88482
  friend class ::WinImportHandler;
 
88483
  friend class ::WinMacros;
 
88484
  friend class ::WinAsm;
 
88485
  friend class ::WinDeclSpecs;
 
88486
  friend class ::WinMemberExplSpec;
 
88487
  friend class ::WinTypeKeywords;
 
88488
  friend class ::WinFriend;
 
88489
  friend class ::ExtAC;
 
88490
  friend class ::ExtACBuilderCoupling;
 
88491
  friend class ::ExtACSyntaxCoupling;
 
88492
  friend class ::ExtACTree;
 
88493
  friend class ::ExtACKeywords;
 
88494
  friend class ::ExtGnu;
 
88495
  friend class ::PragmaOnceUnitState;
 
88496
  friend class ::PragmaOnce;
 
88497
  friend class ::CMatchSyntax;
 
88498
 
 
88499
#line 3271 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88500
 
 
88501
  CTree *sons[3]; // declarator, colon, expr
 
88502
 
 
88503
public:
 
88504
  /** Constructor.
 
88505
   *  \param d The declarator.
 
88506
   *  \param c The colon between the declarator and the bit count.
 
88507
   *  \param e The expression specifying the number of bits. */
 
88508
  CT_BitFieldDeclarator (CTree *d, CTree *c, CTree *e = 0) {
 
88509
    AddSon (sons[0], d); AddSon (sons[1], c); AddSon (sons[2], e); 
 
88510
  }
 
88511
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88512
  static const char *NodeId ();
 
88513
  /** Get the name of the node. Can be compared with NodeId(). */
 
88514
  const char *NodeName () const { return NodeId (); }
 
88515
  /** Get the number of sons. */
 
88516
  int Sons () const { return CTree::Sons (sons, 3); }
 
88517
  /** Get the n-th son.
 
88518
   *  \param n The index of the son.
 
88519
   *  \return The n-th son or NULL. */
 
88520
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
88521
  /** Get the declarator. */
 
88522
  CTree *Declarator () const { return sons[0]; }
 
88523
  /** Get the expression specifying the number of bits. */
 
88524
  CTree *Expr () const { return sons[2]; }
 
88525
  /** Set the expression specifying the number of bits. */
 
88526
  void FieldSize (CTree *s) { AddSon (sons[2], s); }
 
88527
  /** Get the semantic information about the declared bit-field. */
 
88528
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
88529
  /** Replace a son.
 
88530
   *  \param old_son The son to replace.
 
88531
   *  \param new_son The new son. */
 
88532
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
88533
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
88534
  }
 
88535
public:
 
88536
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
88537
  const char *__attr_name (unsigned i) const {
 
88538
    static const char *names[] = { "sons" }; return names[i];
 
88539
  }
 
88540
  const void *__attr (unsigned __i) const {
 
88541
    switch (__i) { case 0: return &sons; default: return 0; }
 
88542
  }
 
88543
#line 3306 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88544
};
 
88545
 
 
88546
/*****************************************************************************/
 
88547
/*                                                                           */
 
88548
/*                              Statements                                   */
 
88549
/*                                                                           */
 
88550
/*****************************************************************************/
 
88551
 
 
88552
/** \class CT_Statement CTree.h Puma/CTree.h
 
88553
 *  Base class for all tree nodes representing statements. */
 
88554
 
 
88555
#line 88556 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88556
} // closed Puma
 
88557
class CCExprResolve;
 
88558
class CExprResolve;
 
88559
class WinIfExists;
 
88560
class WinImportHandler;
 
88561
class WinMacros;
 
88562
class WinAsm;
 
88563
class WinDeclSpecs;
 
88564
class WinMemberExplSpec;
 
88565
class WinTypeKeywords;
 
88566
class WinFriend;
 
88567
class ExtAC;
 
88568
class ExtACBuilderCoupling;
 
88569
class ExtACSyntaxCoupling;
 
88570
class ExtACTree;
 
88571
class ExtACKeywords;
 
88572
class ExtGnu;
 
88573
class PragmaOnceUnitState;
 
88574
class PragmaOnce;
 
88575
class CMatchSyntax;
 
88576
namespace Puma {
 
88577
 
 
88578
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88579
class CT_Statement : public CTree {
 
88580
#line 88581 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88581
  friend class ::CCExprResolve;
 
88582
  friend class ::CExprResolve;
 
88583
  friend class ::WinIfExists;
 
88584
  friend class ::WinImportHandler;
 
88585
  friend class ::WinMacros;
 
88586
  friend class ::WinAsm;
 
88587
  friend class ::WinDeclSpecs;
 
88588
  friend class ::WinMemberExplSpec;
 
88589
  friend class ::WinTypeKeywords;
 
88590
  friend class ::WinFriend;
 
88591
  friend class ::ExtAC;
 
88592
  friend class ::ExtACBuilderCoupling;
 
88593
  friend class ::ExtACSyntaxCoupling;
 
88594
  friend class ::ExtACTree;
 
88595
  friend class ::ExtACKeywords;
 
88596
  friend class ::ExtGnu;
 
88597
  friend class ::PragmaOnceUnitState;
 
88598
  friend class ::PragmaOnce;
 
88599
  friend class ::CMatchSyntax;
 
88600
 
 
88601
#line 3316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88602
 
 
88603
protected:
 
88604
  /** Constructor. */
 
88605
  CT_Statement () {}
 
88606
  /** Get this. */
 
88607
  virtual CT_Statement *IsStatement () { return this; }
 
88608
public:
 
88609
  typedef AC::TLE __AttrTypes;
 
88610
  const char *__attr_name (unsigned i) const { return 0; }
 
88611
  const void *__attr (unsigned __i) const { return 0; }
 
88612
#line 3322 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88613
};
 
88614
 
 
88615
/** \class CT_LabelStmt CTree.h Puma/CTree.h
 
88616
 *  Tree node representing a label statement.
 
88617
 *  Example: \code incr_a: a++; \endcode */
 
88618
 
 
88619
#line 88620 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88620
} // closed Puma
 
88621
class CCExprResolve;
 
88622
class CExprResolve;
 
88623
class WinIfExists;
 
88624
class WinImportHandler;
 
88625
class WinMacros;
 
88626
class WinAsm;
 
88627
class WinDeclSpecs;
 
88628
class WinMemberExplSpec;
 
88629
class WinTypeKeywords;
 
88630
class WinFriend;
 
88631
class ExtAC;
 
88632
class ExtACBuilderCoupling;
 
88633
class ExtACSyntaxCoupling;
 
88634
class ExtACTree;
 
88635
class ExtACKeywords;
 
88636
class ExtGnu;
 
88637
class PragmaOnceUnitState;
 
88638
class PragmaOnce;
 
88639
class CMatchSyntax;
 
88640
namespace Puma {
 
88641
 
 
88642
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88643
class CT_LabelStmt : public CT_Statement {
 
88644
#line 88645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88645
  friend class ::CCExprResolve;
 
88646
  friend class ::CExprResolve;
 
88647
  friend class ::WinIfExists;
 
88648
  friend class ::WinImportHandler;
 
88649
  friend class ::WinMacros;
 
88650
  friend class ::WinAsm;
 
88651
  friend class ::WinDeclSpecs;
 
88652
  friend class ::WinMemberExplSpec;
 
88653
  friend class ::WinTypeKeywords;
 
88654
  friend class ::WinFriend;
 
88655
  friend class ::ExtAC;
 
88656
  friend class ::ExtACBuilderCoupling;
 
88657
  friend class ::ExtACSyntaxCoupling;
 
88658
  friend class ::ExtACTree;
 
88659
  friend class ::ExtACKeywords;
 
88660
  friend class ::ExtGnu;
 
88661
  friend class ::PragmaOnceUnitState;
 
88662
  friend class ::PragmaOnce;
 
88663
  friend class ::CMatchSyntax;
 
88664
 
 
88665
#line 3327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88666
 
 
88667
  CTree *sons[3]; // id, colon, stmt
 
88668
 
 
88669
public:
 
88670
  /** Constructor.
 
88671
   *  \param id The name of the label.
 
88672
   *  \param c The colon behind the label.
 
88673
   *  \param stmt The statement following the label. */
 
88674
  CT_LabelStmt (CTree *id, CTree *c, CTree *stmt) {
 
88675
    AddSon (sons[0], id); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
88676
  }
 
88677
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88678
  static const char *NodeId ();
 
88679
  /** Get the name of the node. Can be compared with NodeId(). */
 
88680
  const char *NodeName () const { return NodeId (); }
 
88681
  /** Get the number of sons. */
 
88682
  int Sons () const { return 3; }
 
88683
  /** Get the n-th son.
 
88684
   *  \param n The index of the son.
 
88685
   *  \return The n-th son or NULL. */
 
88686
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
88687
  /** Get the statement. */
 
88688
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
88689
  /** Get the name of the label. */
 
88690
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[0]; }
 
88691
  /** Replace a son.
 
88692
   *  \param old_son The son to replace.
 
88693
   *  \param new_son The new son. */
 
88694
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
88695
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
88696
  }
 
88697
public:
 
88698
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
88699
  const char *__attr_name (unsigned i) const {
 
88700
    static const char *names[] = { "sons" }; return names[i];
 
88701
  }
 
88702
  const void *__attr (unsigned __i) const {
 
88703
    switch (__i) { case 0: return &sons; default: return 0; }
 
88704
  }
 
88705
#line 3358 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88706
};
 
88707
 
 
88708
/** \class CT_DefaultStmt CTree.h Puma/CTree.h
 
88709
 *  Tree node representing a default statement of a switch statement.
 
88710
 *  Example: \code default: break; \endcode */
 
88711
 
 
88712
#line 88713 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88713
} // closed Puma
 
88714
class CCExprResolve;
 
88715
class CExprResolve;
 
88716
class WinIfExists;
 
88717
class WinImportHandler;
 
88718
class WinMacros;
 
88719
class WinAsm;
 
88720
class WinDeclSpecs;
 
88721
class WinMemberExplSpec;
 
88722
class WinTypeKeywords;
 
88723
class WinFriend;
 
88724
class ExtAC;
 
88725
class ExtACBuilderCoupling;
 
88726
class ExtACSyntaxCoupling;
 
88727
class ExtACTree;
 
88728
class ExtACKeywords;
 
88729
class ExtGnu;
 
88730
class PragmaOnceUnitState;
 
88731
class PragmaOnce;
 
88732
class CMatchSyntax;
 
88733
namespace Puma {
 
88734
 
 
88735
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88736
class CT_DefaultStmt : public CT_Statement {
 
88737
#line 88738 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88738
  friend class ::CCExprResolve;
 
88739
  friend class ::CExprResolve;
 
88740
  friend class ::WinIfExists;
 
88741
  friend class ::WinImportHandler;
 
88742
  friend class ::WinMacros;
 
88743
  friend class ::WinAsm;
 
88744
  friend class ::WinDeclSpecs;
 
88745
  friend class ::WinMemberExplSpec;
 
88746
  friend class ::WinTypeKeywords;
 
88747
  friend class ::WinFriend;
 
88748
  friend class ::ExtAC;
 
88749
  friend class ::ExtACBuilderCoupling;
 
88750
  friend class ::ExtACSyntaxCoupling;
 
88751
  friend class ::ExtACTree;
 
88752
  friend class ::ExtACKeywords;
 
88753
  friend class ::ExtGnu;
 
88754
  friend class ::PragmaOnceUnitState;
 
88755
  friend class ::PragmaOnce;
 
88756
  friend class ::CMatchSyntax;
 
88757
 
 
88758
#line 3363 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88759
 
 
88760
  CTree *sons[3]; // keyword, colon, stmt
 
88761
 
 
88762
public:
 
88763
  /** Constructor.
 
88764
   *  \param kw The keyword 'default'.
 
88765
   *  \param c The colon behind the keyword.
 
88766
   *  \param stmt The statement of the default case. */
 
88767
  CT_DefaultStmt (CTree *kw, CTree *c, CTree *stmt) {
 
88768
    AddSon (sons[0], kw); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
88769
  }
 
88770
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88771
  static const char *NodeId ();
 
88772
  /** Get the name of the node. Can be compared with NodeId(). */
 
88773
  const char *NodeName () const { return NodeId (); }
 
88774
  /** Get the number of sons. */
 
88775
  int Sons () const { return 3; }
 
88776
  /** Get the n-th son.
 
88777
   *  \param n The index of the son.
 
88778
   *  \return The n-th son or NULL. */
 
88779
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
88780
  /** Get the statement. */
 
88781
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
88782
  /** Replace a son.
 
88783
   *  \param old_son The son to replace.
 
88784
   *  \param new_son The new son. */
 
88785
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
88786
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
88787
  }
 
88788
public:
 
88789
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
88790
  const char *__attr_name (unsigned i) const {
 
88791
    static const char *names[] = { "sons" }; return names[i];
 
88792
  }
 
88793
  const void *__attr (unsigned __i) const {
 
88794
    switch (__i) { case 0: return &sons; default: return 0; }
 
88795
  }
 
88796
#line 3392 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88797
};
 
88798
 
 
88799
/** \class CT_TryStmt CTree.h Puma/CTree.h
 
88800
 *  Tree node representing a try-catch statement.
 
88801
 *  Example: \code try { f(); } catch (...) {} \endcode */
 
88802
 
 
88803
#line 88804 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88804
} // closed Puma
 
88805
class CCExprResolve;
 
88806
class CExprResolve;
 
88807
class WinIfExists;
 
88808
class WinImportHandler;
 
88809
class WinMacros;
 
88810
class WinAsm;
 
88811
class WinDeclSpecs;
 
88812
class WinMemberExplSpec;
 
88813
class WinTypeKeywords;
 
88814
class WinFriend;
 
88815
class ExtAC;
 
88816
class ExtACBuilderCoupling;
 
88817
class ExtACSyntaxCoupling;
 
88818
class ExtACTree;
 
88819
class ExtACKeywords;
 
88820
class ExtGnu;
 
88821
class PragmaOnceUnitState;
 
88822
class PragmaOnce;
 
88823
class CMatchSyntax;
 
88824
namespace Puma {
 
88825
 
 
88826
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88827
class CT_TryStmt : public CT_Statement {
 
88828
#line 88829 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88829
  friend class ::CCExprResolve;
 
88830
  friend class ::CExprResolve;
 
88831
  friend class ::WinIfExists;
 
88832
  friend class ::WinImportHandler;
 
88833
  friend class ::WinMacros;
 
88834
  friend class ::WinAsm;
 
88835
  friend class ::WinDeclSpecs;
 
88836
  friend class ::WinMemberExplSpec;
 
88837
  friend class ::WinTypeKeywords;
 
88838
  friend class ::WinFriend;
 
88839
  friend class ::ExtAC;
 
88840
  friend class ::ExtACBuilderCoupling;
 
88841
  friend class ::ExtACSyntaxCoupling;
 
88842
  friend class ::ExtACTree;
 
88843
  friend class ::ExtACKeywords;
 
88844
  friend class ::ExtGnu;
 
88845
  friend class ::PragmaOnceUnitState;
 
88846
  friend class ::PragmaOnce;
 
88847
  friend class ::CMatchSyntax;
 
88848
 
 
88849
#line 3397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88850
 
 
88851
  CTree *sons[3]; // try, stmt, handlers
 
88852
 
 
88853
public:
 
88854
  /** Constructor.
 
88855
   *  \param t The keyword 'try'.
 
88856
   *  \param s The statement enclosed in the try-catch block.
 
88857
   *  \param h The exception handler sequence. */
 
88858
  CT_TryStmt (CTree *t, CTree *s, CTree *h) {
 
88859
    AddSon (sons[0], t); AddSon (sons[1], s); AddSon (sons[2], h); 
 
88860
  }
 
88861
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88862
  static const char *NodeId ();
 
88863
  /** Get the name of the node. Can be compared with NodeId(). */
 
88864
  const char *NodeName () const { return NodeId (); }
 
88865
  /** Get the number of sons. */
 
88866
  int Sons () const { return 3; }
 
88867
  /** Get the n-th son.
 
88868
   *  \param n The index of the son.
 
88869
   *  \return The n-th son or NULL. */
 
88870
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
88871
  /** Get the enclosed statement. */
 
88872
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
88873
  /** Get the exception handler sequence. */
 
88874
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[2]; }
 
88875
  /** Replace a son.
 
88876
   *  \param old_son The son to replace.
 
88877
   *  \param new_son The new son. */
 
88878
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
88879
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
88880
  }
 
88881
public:
 
88882
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
88883
  const char *__attr_name (unsigned i) const {
 
88884
    static const char *names[] = { "sons" }; return names[i];
 
88885
  }
 
88886
  const void *__attr (unsigned __i) const {
 
88887
    switch (__i) { case 0: return &sons; default: return 0; }
 
88888
  }
 
88889
#line 3428 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88890
};
 
88891
 
 
88892
/** \class CT_CaseStmt CTree.h Puma/CTree.h
 
88893
 *  Tree node representing a case statement.
 
88894
 *  Example: \code case 42: a=42; \endcode */
 
88895
 
 
88896
#line 88897 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88897
} // closed Puma
 
88898
class CCExprResolve;
 
88899
class CExprResolve;
 
88900
class WinIfExists;
 
88901
class WinImportHandler;
 
88902
class WinMacros;
 
88903
class WinAsm;
 
88904
class WinDeclSpecs;
 
88905
class WinMemberExplSpec;
 
88906
class WinTypeKeywords;
 
88907
class WinFriend;
 
88908
class ExtAC;
 
88909
class ExtACBuilderCoupling;
 
88910
class ExtACSyntaxCoupling;
 
88911
class ExtACTree;
 
88912
class ExtACKeywords;
 
88913
class ExtGnu;
 
88914
class PragmaOnceUnitState;
 
88915
class PragmaOnce;
 
88916
class CMatchSyntax;
 
88917
namespace Puma {
 
88918
 
 
88919
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88920
class CT_CaseStmt : public CT_Statement {
 
88921
#line 88922 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88922
  friend class ::CCExprResolve;
 
88923
  friend class ::CExprResolve;
 
88924
  friend class ::WinIfExists;
 
88925
  friend class ::WinImportHandler;
 
88926
  friend class ::WinMacros;
 
88927
  friend class ::WinAsm;
 
88928
  friend class ::WinDeclSpecs;
 
88929
  friend class ::WinMemberExplSpec;
 
88930
  friend class ::WinTypeKeywords;
 
88931
  friend class ::WinFriend;
 
88932
  friend class ::ExtAC;
 
88933
  friend class ::ExtACBuilderCoupling;
 
88934
  friend class ::ExtACSyntaxCoupling;
 
88935
  friend class ::ExtACTree;
 
88936
  friend class ::ExtACKeywords;
 
88937
  friend class ::ExtGnu;
 
88938
  friend class ::PragmaOnceUnitState;
 
88939
  friend class ::PragmaOnce;
 
88940
  friend class ::CMatchSyntax;
 
88941
 
 
88942
#line 3433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88943
 
 
88944
  CTree *sons[4]; // keyword, expr, colon, stmt
 
88945
 
 
88946
public:
 
88947
  /** Constructor.
 
88948
   *  \param kw The keyword 'case'.
 
88949
   *  \param expr The constant expression specifying the case value.
 
88950
   *  \param c The colon.
 
88951
   *  \param stmt The statement of the case. */
 
88952
  CT_CaseStmt (CTree *kw, CTree *expr, CTree *c, CTree *stmt) {
 
88953
    AddSon (sons[0], kw); AddSon (sons[1], expr); 
 
88954
    AddSon (sons[2], c); AddSon (sons[3], stmt); 
 
88955
  }
 
88956
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
88957
  static const char *NodeId ();
 
88958
  /** Get the name of the node. Can be compared with NodeId(). */
 
88959
  const char *NodeName () const { return NodeId (); }
 
88960
  /** Get the number of sons. */
 
88961
  int Sons () const { return 4; }
 
88962
  /** Get the n-th son.
 
88963
   *  \param n The index of the son.
 
88964
   *  \return The n-th son or NULL. */
 
88965
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
88966
  /** Get the statement. */
 
88967
  CT_Statement *Statement () const { return (CT_Statement*)sons[3]; }
 
88968
  /** Get the expression specifying the case value. */
 
88969
  CTree *Expr () const { return sons[1]; }
 
88970
  /** Replace a son.
 
88971
   *  \param old_son The son to replace.
 
88972
   *  \param new_son The new son. */
 
88973
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
88974
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
88975
  }
 
88976
public:
 
88977
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
88978
  const char *__attr_name (unsigned i) const {
 
88979
    static const char *names[] = { "sons" }; return names[i];
 
88980
  }
 
88981
  const void *__attr (unsigned __i) const {
 
88982
    switch (__i) { case 0: return &sons; default: return 0; }
 
88983
  }
 
88984
#line 3466 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
88985
};
 
88986
 
 
88987
/** \class CT_ExprStmt CTree.h Puma/CTree.h
 
88988
 *  Tree node representing an expression statement.
 
88989
 *  Example: \code a+b; \endcode */
 
88990
 
 
88991
#line 88992 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
88992
} // closed Puma
 
88993
class CCExprResolve;
 
88994
class CExprResolve;
 
88995
class WinIfExists;
 
88996
class WinImportHandler;
 
88997
class WinMacros;
 
88998
class WinAsm;
 
88999
class WinDeclSpecs;
 
89000
class WinMemberExplSpec;
 
89001
class WinTypeKeywords;
 
89002
class WinFriend;
 
89003
class ExtAC;
 
89004
class ExtACBuilderCoupling;
 
89005
class ExtACSyntaxCoupling;
 
89006
class ExtACTree;
 
89007
class ExtACKeywords;
 
89008
class ExtGnu;
 
89009
class PragmaOnceUnitState;
 
89010
class PragmaOnce;
 
89011
class CMatchSyntax;
 
89012
namespace Puma {
 
89013
 
 
89014
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89015
class CT_ExprStmt : public CT_Statement {
 
89016
#line 89017 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89017
  friend class ::CCExprResolve;
 
89018
  friend class ::CExprResolve;
 
89019
  friend class ::WinIfExists;
 
89020
  friend class ::WinImportHandler;
 
89021
  friend class ::WinMacros;
 
89022
  friend class ::WinAsm;
 
89023
  friend class ::WinDeclSpecs;
 
89024
  friend class ::WinMemberExplSpec;
 
89025
  friend class ::WinTypeKeywords;
 
89026
  friend class ::WinFriend;
 
89027
  friend class ::ExtAC;
 
89028
  friend class ::ExtACBuilderCoupling;
 
89029
  friend class ::ExtACSyntaxCoupling;
 
89030
  friend class ::ExtACTree;
 
89031
  friend class ::ExtACKeywords;
 
89032
  friend class ::ExtGnu;
 
89033
  friend class ::PragmaOnceUnitState;
 
89034
  friend class ::PragmaOnce;
 
89035
  friend class ::CMatchSyntax;
 
89036
 
 
89037
#line 3471 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89038
 
 
89039
  CTree *sons[2]; // expr, semi_colon
 
89040
 
 
89041
public:
 
89042
  /** Constructor.
 
89043
   *  \param expr The expression.
 
89044
   *  \param sc The trailing semi-colon. */
 
89045
  CT_ExprStmt (CTree *expr, CTree *sc) { AddSon (sons[0], expr); AddSon (sons[1], sc); }
 
89046
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89047
  static const char *NodeId ();
 
89048
  /** Get the name of the node. Can be compared with NodeId(). */
 
89049
  const char *NodeName () const { return NodeId (); }
 
89050
  /** Get the number of sons. */
 
89051
  int Sons () const { return CTree::Sons (sons, 2); }
 
89052
  /** Get the n-th son.
 
89053
   *  \param n The index of the son.
 
89054
   *  \return The n-th son or NULL. */
 
89055
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
89056
  /** Get the expression. */
 
89057
  CTree *Expr () const { return sons[0]; }
 
89058
  /** Replace a son.
 
89059
   *  \param old_son The son to replace.
 
89060
   *  \param new_son The new son. */
 
89061
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89062
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
89063
  }
 
89064
public:
 
89065
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
89066
  const char *__attr_name (unsigned i) const {
 
89067
    static const char *names[] = { "sons" }; return names[i];
 
89068
  }
 
89069
  const void *__attr (unsigned __i) const {
 
89070
    switch (__i) { case 0: return &sons; default: return 0; }
 
89071
  }
 
89072
#line 3497 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89073
};
 
89074
 
 
89075
/** \class CT_DeclStmt CTree.h Puma/CTree.h
 
89076
 *  Tree node representing a declaration statement.
 
89077
 *  Example: \code int i = 0; \endcode */
 
89078
 
 
89079
#line 89080 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89080
} // closed Puma
 
89081
class CCExprResolve;
 
89082
class CExprResolve;
 
89083
class WinIfExists;
 
89084
class WinImportHandler;
 
89085
class WinMacros;
 
89086
class WinAsm;
 
89087
class WinDeclSpecs;
 
89088
class WinMemberExplSpec;
 
89089
class WinTypeKeywords;
 
89090
class WinFriend;
 
89091
class ExtAC;
 
89092
class ExtACBuilderCoupling;
 
89093
class ExtACSyntaxCoupling;
 
89094
class ExtACTree;
 
89095
class ExtACKeywords;
 
89096
class ExtGnu;
 
89097
class PragmaOnceUnitState;
 
89098
class PragmaOnce;
 
89099
class CMatchSyntax;
 
89100
namespace Puma {
 
89101
 
 
89102
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89103
class CT_DeclStmt : public CT_Statement {
 
89104
#line 89105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89105
  friend class ::CCExprResolve;
 
89106
  friend class ::CExprResolve;
 
89107
  friend class ::WinIfExists;
 
89108
  friend class ::WinImportHandler;
 
89109
  friend class ::WinMacros;
 
89110
  friend class ::WinAsm;
 
89111
  friend class ::WinDeclSpecs;
 
89112
  friend class ::WinMemberExplSpec;
 
89113
  friend class ::WinTypeKeywords;
 
89114
  friend class ::WinFriend;
 
89115
  friend class ::ExtAC;
 
89116
  friend class ::ExtACBuilderCoupling;
 
89117
  friend class ::ExtACSyntaxCoupling;
 
89118
  friend class ::ExtACTree;
 
89119
  friend class ::ExtACKeywords;
 
89120
  friend class ::ExtGnu;
 
89121
  friend class ::PragmaOnceUnitState;
 
89122
  friend class ::PragmaOnce;
 
89123
  friend class ::CMatchSyntax;
 
89124
 
 
89125
#line 3502 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89126
 
 
89127
  CTree *_decl;
 
89128
 
 
89129
public:
 
89130
  /** Constructor.
 
89131
   *  \param decl The declaration. */
 
89132
  CT_DeclStmt (CTree *decl) { AddSon (_decl, decl); }
 
89133
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89134
  static const char *NodeId ();
 
89135
  /** Get the name of the node. Can be compared with NodeId(). */
 
89136
  const char *NodeName () const { return NodeId (); }
 
89137
  /** Get the number of sons. */
 
89138
  int Sons () const { return 1; }
 
89139
  /** Get the n-th son.
 
89140
   *  \param n The index of the son.
 
89141
   *  \return The n-th son or NULL. */
 
89142
  CTree *Son (int n) const { return n == 0 ? _decl : (CTree*)0; }
 
89143
  /** Replace a son.
 
89144
   *  \param old_son The son to replace.
 
89145
   *  \param new_son The new son. */
 
89146
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
89147
   { CTree::ReplaceSon (_decl, old_son, new_son); }
 
89148
public:
 
89149
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
89150
  const char *__attr_name (unsigned i) const {
 
89151
    static const char *names[] = { "_decl" }; return names[i];
 
89152
  }
 
89153
  const void *__attr (unsigned __i) const {
 
89154
    switch (__i) { case 0: return &_decl; default: return 0; }
 
89155
  }
 
89156
#line 3524 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89157
};
 
89158
 
 
89159
/** \class CT_SwitchStmt CTree.h Puma/CTree.h
 
89160
 *  Tree node representing a switch statement.
 
89161
 *  Example: \code switch(a) { case 0: a++; } \endcode */
 
89162
 
 
89163
#line 89164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89164
} // closed Puma
 
89165
class CCExprResolve;
 
89166
class CExprResolve;
 
89167
class WinIfExists;
 
89168
class WinImportHandler;
 
89169
class WinMacros;
 
89170
class WinAsm;
 
89171
class WinDeclSpecs;
 
89172
class WinMemberExplSpec;
 
89173
class WinTypeKeywords;
 
89174
class WinFriend;
 
89175
class ExtAC;
 
89176
class ExtACBuilderCoupling;
 
89177
class ExtACSyntaxCoupling;
 
89178
class ExtACTree;
 
89179
class ExtACKeywords;
 
89180
class ExtGnu;
 
89181
class PragmaOnceUnitState;
 
89182
class PragmaOnce;
 
89183
class CMatchSyntax;
 
89184
namespace Puma {
 
89185
 
 
89186
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89187
class CT_SwitchStmt : public CT_Statement, public CSemScope {
 
89188
#line 89189 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89189
  friend class ::CCExprResolve;
 
89190
  friend class ::CExprResolve;
 
89191
  friend class ::WinIfExists;
 
89192
  friend class ::WinImportHandler;
 
89193
  friend class ::WinMacros;
 
89194
  friend class ::WinAsm;
 
89195
  friend class ::WinDeclSpecs;
 
89196
  friend class ::WinMemberExplSpec;
 
89197
  friend class ::WinTypeKeywords;
 
89198
  friend class ::WinFriend;
 
89199
  friend class ::ExtAC;
 
89200
  friend class ::ExtACBuilderCoupling;
 
89201
  friend class ::ExtACSyntaxCoupling;
 
89202
  friend class ::ExtACTree;
 
89203
  friend class ::ExtACKeywords;
 
89204
  friend class ::ExtGnu;
 
89205
  friend class ::PragmaOnceUnitState;
 
89206
  friend class ::PragmaOnce;
 
89207
  friend class ::CMatchSyntax;
 
89208
 
 
89209
#line 3529 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89210
 
 
89211
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
89212
 
 
89213
public:
 
89214
  /** Constructor.
 
89215
   *  \param kw The keyword 'switch'.
 
89216
   *  \param o Left parenthesis before the condition.
 
89217
   *  \param cond The switch-expression. 
 
89218
   *  \param c Right parenthesis behind the condition. 
 
89219
   *  \param stmt The cases of the switch-statement. */
 
89220
  CT_SwitchStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
89221
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
89222
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
89223
  }
 
89224
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89225
  static const char *NodeId ();
 
89226
  /** Get the name of the node. Can be compared with NodeId(). */
 
89227
  const char *NodeName () const { return NodeId (); }
 
89228
  /** Get the number of sons. */
 
89229
  int Sons () const { return 5; }
 
89230
  /** Get the n-th son.
 
89231
   *  \param n The index of the son.
 
89232
   *  \return The n-th son or NULL. */
 
89233
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
89234
  /** Get the cases. */
 
89235
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
89236
  /** Get the switch-expression. */
 
89237
  CTree *Condition () const { return sons[2]; }
 
89238
  /** Replace a son.
 
89239
   *  \param old_son The son to replace.
 
89240
   *  \param new_son The new son. */
 
89241
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89242
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
89243
  }
 
89244
  /** Get the scope opened by the switch-statement. */
 
89245
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
89246
public:
 
89247
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
89248
  const char *__attr_name (unsigned i) const {
 
89249
    static const char *names[] = { "sons" }; return names[i];
 
89250
  }
 
89251
  const void *__attr (unsigned __i) const {
 
89252
    switch (__i) { case 0: return &sons; default: return 0; }
 
89253
  }
 
89254
#line 3565 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89255
};
 
89256
 
 
89257
/** \class CT_IfStmt CTree.h Puma/CTree.h
 
89258
 *  Tree node representing a if-statement.
 
89259
 *  Example: \code if(a==0) a++; \endcode */
 
89260
 
 
89261
#line 89262 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89262
} // closed Puma
 
89263
class CCExprResolve;
 
89264
class CExprResolve;
 
89265
class WinIfExists;
 
89266
class WinImportHandler;
 
89267
class WinMacros;
 
89268
class WinAsm;
 
89269
class WinDeclSpecs;
 
89270
class WinMemberExplSpec;
 
89271
class WinTypeKeywords;
 
89272
class WinFriend;
 
89273
class ExtAC;
 
89274
class ExtACBuilderCoupling;
 
89275
class ExtACSyntaxCoupling;
 
89276
class ExtACTree;
 
89277
class ExtACKeywords;
 
89278
class ExtGnu;
 
89279
class PragmaOnceUnitState;
 
89280
class PragmaOnce;
 
89281
class CMatchSyntax;
 
89282
namespace Puma {
 
89283
 
 
89284
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89285
class CT_IfStmt : public CT_Statement, public CSemScope {
 
89286
#line 89287 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89287
  friend class ::CCExprResolve;
 
89288
  friend class ::CExprResolve;
 
89289
  friend class ::WinIfExists;
 
89290
  friend class ::WinImportHandler;
 
89291
  friend class ::WinMacros;
 
89292
  friend class ::WinAsm;
 
89293
  friend class ::WinDeclSpecs;
 
89294
  friend class ::WinMemberExplSpec;
 
89295
  friend class ::WinTypeKeywords;
 
89296
  friend class ::WinFriend;
 
89297
  friend class ::ExtAC;
 
89298
  friend class ::ExtACBuilderCoupling;
 
89299
  friend class ::ExtACSyntaxCoupling;
 
89300
  friend class ::ExtACTree;
 
89301
  friend class ::ExtACKeywords;
 
89302
  friend class ::ExtGnu;
 
89303
  friend class ::PragmaOnceUnitState;
 
89304
  friend class ::PragmaOnce;
 
89305
  friend class ::CMatchSyntax;
 
89306
 
 
89307
#line 3570 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89308
 
 
89309
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
89310
 
 
89311
public:
 
89312
  /** Constructor.
 
89313
   *  \param kw The keyword 'if'.
 
89314
   *  \param o Left parenthesis before the condition.
 
89315
   *  \param cond The condition.
 
89316
   *  \param c Right parenthesis behind the condition.
 
89317
   *  \param stmt The controlled statement. */
 
89318
  CT_IfStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
89319
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
89320
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
89321
  }
 
89322
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89323
  static const char *NodeId ();
 
89324
  /** Get the name of the node. Can be compared with NodeId(). */
 
89325
  const char *NodeName () const { return NodeId (); }
 
89326
  /** Get the number of sons. */
 
89327
  int Sons () const { return 5; }
 
89328
  /** Get the n-th son.
 
89329
   *  \param n The index of the son.
 
89330
   *  \return The n-th son or NULL. */
 
89331
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
89332
  /** Get the controlled statement. */
 
89333
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
89334
  /** Get the condition. */
 
89335
  CTree *Condition () const { return sons[2]; }
 
89336
  /** Replace a son.
 
89337
   *  \param old_son The son to replace.
 
89338
   *  \param new_son The new son. */
 
89339
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89340
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
89341
  }
 
89342
  /** Get the scope opened by the if-statement. */
 
89343
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
89344
public:
 
89345
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
89346
  const char *__attr_name (unsigned i) const {
 
89347
    static const char *names[] = { "sons" }; return names[i];
 
89348
  }
 
89349
  const void *__attr (unsigned __i) const {
 
89350
    switch (__i) { case 0: return &sons; default: return 0; }
 
89351
  }
 
89352
#line 3606 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89353
};
 
89354
 
 
89355
/** \class CT_IfElseStmt CTree.h Puma/CTree.h
 
89356
 *  Tree node representing a if-else-statement.
 
89357
 *  Example: \code if(a==0) a++; else a=0; \endcode */
 
89358
 
 
89359
#line 89360 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89360
} // closed Puma
 
89361
class CCExprResolve;
 
89362
class CExprResolve;
 
89363
class WinIfExists;
 
89364
class WinImportHandler;
 
89365
class WinMacros;
 
89366
class WinAsm;
 
89367
class WinDeclSpecs;
 
89368
class WinMemberExplSpec;
 
89369
class WinTypeKeywords;
 
89370
class WinFriend;
 
89371
class ExtAC;
 
89372
class ExtACBuilderCoupling;
 
89373
class ExtACSyntaxCoupling;
 
89374
class ExtACTree;
 
89375
class ExtACKeywords;
 
89376
class ExtGnu;
 
89377
class PragmaOnceUnitState;
 
89378
class PragmaOnce;
 
89379
class CMatchSyntax;
 
89380
namespace Puma {
 
89381
 
 
89382
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89383
class CT_IfElseStmt : public CT_Statement, public CSemScope {
 
89384
#line 89385 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89385
  friend class ::CCExprResolve;
 
89386
  friend class ::CExprResolve;
 
89387
  friend class ::WinIfExists;
 
89388
  friend class ::WinImportHandler;
 
89389
  friend class ::WinMacros;
 
89390
  friend class ::WinAsm;
 
89391
  friend class ::WinDeclSpecs;
 
89392
  friend class ::WinMemberExplSpec;
 
89393
  friend class ::WinTypeKeywords;
 
89394
  friend class ::WinFriend;
 
89395
  friend class ::ExtAC;
 
89396
  friend class ::ExtACBuilderCoupling;
 
89397
  friend class ::ExtACSyntaxCoupling;
 
89398
  friend class ::ExtACTree;
 
89399
  friend class ::ExtACKeywords;
 
89400
  friend class ::ExtGnu;
 
89401
  friend class ::PragmaOnceUnitState;
 
89402
  friend class ::PragmaOnce;
 
89403
  friend class ::CMatchSyntax;
 
89404
 
 
89405
#line 3611 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89406
 
 
89407
  CTree *sons[7]; // if, open, cond, close, if_stmt, else, else_stmt
 
89408
 
 
89409
public:
 
89410
  /** Constructor.
 
89411
   *  \param i The keyword 'if'.
 
89412
   *  \param o Left parenthesis before the condition.
 
89413
   *  \param cond The condition.
 
89414
   *  \param c Right parenthesis behind the condition.
 
89415
   *  \param is The statement controlled by the if-branch.
 
89416
   *  \param e The keyword 'else'.
 
89417
   *  \param es The statement controlled by the else-branch. */
 
89418
  CT_IfElseStmt (CTree *i, CTree *o, CTree *cond, CTree *c, 
 
89419
                 CTree *is, CTree *e, CTree *es) {
 
89420
    AddSon (sons[0], i); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
89421
    AddSon (sons[3], c); AddSon (sons[4], is); AddSon (sons[5], e); 
 
89422
    AddSon (sons[6], es); 
 
89423
  }
 
89424
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89425
  static const char *NodeId ();
 
89426
  /** Get the name of the node. Can be compared with NodeId(). */
 
89427
  const char *NodeName () const { return NodeId (); }
 
89428
  /** Get the number of sons. */
 
89429
  int Sons () const { return 7; }
 
89430
  /** Get the n-th son.
 
89431
   *  \param n The index of the son.
 
89432
   *  \return The n-th son or NULL. */
 
89433
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
89434
  /** Get the condition. */
 
89435
  CTree *Condition () const { return sons[2]; }
 
89436
  /** Get the statement controlled by the if-branch. */
 
89437
  CT_Statement *IfPart () const { return (CT_Statement*)sons[4]; }
 
89438
  /** Get the statement controlled by the else-branch. */
 
89439
  CT_Statement *ElsePart () const { return (CT_Statement*)sons[6]; }
 
89440
  /** Replace a son.
 
89441
   *  \param old_son The son to replace.
 
89442
   *  \param new_son The new son. */
 
89443
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89444
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
89445
  }
 
89446
  /** Get the scope opened by the if-statement. */
 
89447
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
89448
public:
 
89449
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
89450
  const char *__attr_name (unsigned i) const {
 
89451
    static const char *names[] = { "sons" }; return names[i];
 
89452
  }
 
89453
  const void *__attr (unsigned __i) const {
 
89454
    switch (__i) { case 0: return &sons; default: return 0; }
 
89455
  }
 
89456
#line 3653 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89457
};
 
89458
 
 
89459
/** \class CT_BreakStmt CTree.h Puma/CTree.h
 
89460
 *  Tree node representing a break-statement.
 
89461
 *  Example: \code break; \endcode */
 
89462
 
 
89463
#line 89464 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89464
} // closed Puma
 
89465
class CCExprResolve;
 
89466
class CExprResolve;
 
89467
class WinIfExists;
 
89468
class WinImportHandler;
 
89469
class WinMacros;
 
89470
class WinAsm;
 
89471
class WinDeclSpecs;
 
89472
class WinMemberExplSpec;
 
89473
class WinTypeKeywords;
 
89474
class WinFriend;
 
89475
class ExtAC;
 
89476
class ExtACBuilderCoupling;
 
89477
class ExtACSyntaxCoupling;
 
89478
class ExtACTree;
 
89479
class ExtACKeywords;
 
89480
class ExtGnu;
 
89481
class PragmaOnceUnitState;
 
89482
class PragmaOnce;
 
89483
class CMatchSyntax;
 
89484
namespace Puma {
 
89485
 
 
89486
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89487
class CT_BreakStmt : public CT_Statement {
 
89488
#line 89489 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89489
  friend class ::CCExprResolve;
 
89490
  friend class ::CExprResolve;
 
89491
  friend class ::WinIfExists;
 
89492
  friend class ::WinImportHandler;
 
89493
  friend class ::WinMacros;
 
89494
  friend class ::WinAsm;
 
89495
  friend class ::WinDeclSpecs;
 
89496
  friend class ::WinMemberExplSpec;
 
89497
  friend class ::WinTypeKeywords;
 
89498
  friend class ::WinFriend;
 
89499
  friend class ::ExtAC;
 
89500
  friend class ::ExtACBuilderCoupling;
 
89501
  friend class ::ExtACSyntaxCoupling;
 
89502
  friend class ::ExtACTree;
 
89503
  friend class ::ExtACKeywords;
 
89504
  friend class ::ExtGnu;
 
89505
  friend class ::PragmaOnceUnitState;
 
89506
  friend class ::PragmaOnce;
 
89507
  friend class ::CMatchSyntax;
 
89508
 
 
89509
#line 3658 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89510
 
 
89511
  CTree *sons[2]; // key, semi_colon
 
89512
 
 
89513
public:
 
89514
  /** Constructor.
 
89515
   *  \param key The keyword 'break'.
 
89516
   *  \param sc The trailing semi-colon. */
 
89517
  CT_BreakStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
89518
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89519
  static const char *NodeId ();
 
89520
  /** Get the name of the node. Can be compared with NodeId(). */
 
89521
  const char *NodeName () const { return NodeId (); }
 
89522
  /** Get the number of sons. */
 
89523
  int Sons () const { return 2; }
 
89524
  /** Get the n-th son.
 
89525
   *  \param n The index of the son.
 
89526
   *  \return The n-th son or NULL. */
 
89527
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
89528
  /** Replace a son.
 
89529
   *  \param old_son The son to replace.
 
89530
   *  \param new_son The new son. */
 
89531
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89532
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
89533
  }
 
89534
public:
 
89535
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
89536
  const char *__attr_name (unsigned i) const {
 
89537
    static const char *names[] = { "sons" }; return names[i];
 
89538
  }
 
89539
  const void *__attr (unsigned __i) const {
 
89540
    switch (__i) { case 0: return &sons; default: return 0; }
 
89541
  }
 
89542
#line 3682 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89543
};
 
89544
 
 
89545
/** \class CT_ContinueStmt CTree.h Puma/CTree.h
 
89546
 *  Tree node representing a continue-statement.
 
89547
 *  Example: \code continue; \endcode */
 
89548
 
 
89549
#line 89550 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89550
} // closed Puma
 
89551
class CCExprResolve;
 
89552
class CExprResolve;
 
89553
class WinIfExists;
 
89554
class WinImportHandler;
 
89555
class WinMacros;
 
89556
class WinAsm;
 
89557
class WinDeclSpecs;
 
89558
class WinMemberExplSpec;
 
89559
class WinTypeKeywords;
 
89560
class WinFriend;
 
89561
class ExtAC;
 
89562
class ExtACBuilderCoupling;
 
89563
class ExtACSyntaxCoupling;
 
89564
class ExtACTree;
 
89565
class ExtACKeywords;
 
89566
class ExtGnu;
 
89567
class PragmaOnceUnitState;
 
89568
class PragmaOnce;
 
89569
class CMatchSyntax;
 
89570
namespace Puma {
 
89571
 
 
89572
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89573
class CT_ContinueStmt : public CT_Statement {
 
89574
#line 89575 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89575
  friend class ::CCExprResolve;
 
89576
  friend class ::CExprResolve;
 
89577
  friend class ::WinIfExists;
 
89578
  friend class ::WinImportHandler;
 
89579
  friend class ::WinMacros;
 
89580
  friend class ::WinAsm;
 
89581
  friend class ::WinDeclSpecs;
 
89582
  friend class ::WinMemberExplSpec;
 
89583
  friend class ::WinTypeKeywords;
 
89584
  friend class ::WinFriend;
 
89585
  friend class ::ExtAC;
 
89586
  friend class ::ExtACBuilderCoupling;
 
89587
  friend class ::ExtACSyntaxCoupling;
 
89588
  friend class ::ExtACTree;
 
89589
  friend class ::ExtACKeywords;
 
89590
  friend class ::ExtGnu;
 
89591
  friend class ::PragmaOnceUnitState;
 
89592
  friend class ::PragmaOnce;
 
89593
  friend class ::CMatchSyntax;
 
89594
 
 
89595
#line 3687 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89596
 
 
89597
  CTree *sons[2]; // key, semi_colon
 
89598
 
 
89599
public:
 
89600
  /** Constructor.
 
89601
   *  \param key The keyword 'continue'.
 
89602
   *  \param sc The trailing semi-colon. */
 
89603
  CT_ContinueStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
89604
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89605
  static const char *NodeId ();
 
89606
  /** Get the name of the node. Can be compared with NodeId(). */
 
89607
  const char *NodeName () const { return NodeId (); }
 
89608
  /** Get the number of sons. */
 
89609
  int Sons () const { return 2; }
 
89610
  /** Get the n-th son.
 
89611
   *  \param n The index of the son.
 
89612
   *  \return The n-th son or NULL. */
 
89613
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
89614
  /** Replace a son.
 
89615
   *  \param old_son The son to replace.
 
89616
   *  \param new_son The new son. */
 
89617
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89618
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
89619
  }
 
89620
public:
 
89621
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
89622
  const char *__attr_name (unsigned i) const {
 
89623
    static const char *names[] = { "sons" }; return names[i];
 
89624
  }
 
89625
  const void *__attr (unsigned __i) const {
 
89626
    switch (__i) { case 0: return &sons; default: return 0; }
 
89627
  }
 
89628
#line 3711 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89629
};
 
89630
 
 
89631
/** \class CT_GotoStmt CTree.h Puma/CTree.h
 
89632
 *  Tree node representing a goto-stmt.
 
89633
 *  Example: \code goto incr_a; \endcode */
 
89634
 
 
89635
#line 89636 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89636
} // closed Puma
 
89637
class CCExprResolve;
 
89638
class CExprResolve;
 
89639
class WinIfExists;
 
89640
class WinImportHandler;
 
89641
class WinMacros;
 
89642
class WinAsm;
 
89643
class WinDeclSpecs;
 
89644
class WinMemberExplSpec;
 
89645
class WinTypeKeywords;
 
89646
class WinFriend;
 
89647
class ExtAC;
 
89648
class ExtACBuilderCoupling;
 
89649
class ExtACSyntaxCoupling;
 
89650
class ExtACTree;
 
89651
class ExtACKeywords;
 
89652
class ExtGnu;
 
89653
class PragmaOnceUnitState;
 
89654
class PragmaOnce;
 
89655
class CMatchSyntax;
 
89656
namespace Puma {
 
89657
 
 
89658
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89659
class CT_GotoStmt : public CT_Statement {
 
89660
#line 89661 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89661
  friend class ::CCExprResolve;
 
89662
  friend class ::CExprResolve;
 
89663
  friend class ::WinIfExists;
 
89664
  friend class ::WinImportHandler;
 
89665
  friend class ::WinMacros;
 
89666
  friend class ::WinAsm;
 
89667
  friend class ::WinDeclSpecs;
 
89668
  friend class ::WinMemberExplSpec;
 
89669
  friend class ::WinTypeKeywords;
 
89670
  friend class ::WinFriend;
 
89671
  friend class ::ExtAC;
 
89672
  friend class ::ExtACBuilderCoupling;
 
89673
  friend class ::ExtACSyntaxCoupling;
 
89674
  friend class ::ExtACTree;
 
89675
  friend class ::ExtACKeywords;
 
89676
  friend class ::ExtGnu;
 
89677
  friend class ::PragmaOnceUnitState;
 
89678
  friend class ::PragmaOnce;
 
89679
  friend class ::CMatchSyntax;
 
89680
 
 
89681
#line 3716 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89682
 
 
89683
  CTree *sons[3]; // key, label, semi_colon
 
89684
 
 
89685
public:
 
89686
  /** Constructor.
 
89687
   *  \param key The keyword 'goto'.
 
89688
   *  \param l The name of the jump label.
 
89689
   *  \param sc The trailing semi-colon. */
 
89690
  CT_GotoStmt (CTree *key, CTree *l, CTree *sc) {
 
89691
    AddSon (sons[0], key); AddSon (sons[1], l); AddSon (sons[2], sc); 
 
89692
  }
 
89693
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89694
  static const char *NodeId ();
 
89695
  /** Get the name of the node. Can be compared with NodeId(). */
 
89696
  const char *NodeName () const { return NodeId (); }
 
89697
  /** Get the number of sons. */
 
89698
  int Sons () const { return 3; }
 
89699
  /** Get the n-th son.
 
89700
   *  \param n The index of the son.
 
89701
   *  \return The n-th son or NULL. */
 
89702
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
89703
  /** Get the name of the jump label. */
 
89704
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[1]; }
 
89705
  /** Replace a son.
 
89706
   *  \param old_son The son to replace.
 
89707
   *  \param new_son The new son. */
 
89708
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89709
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
89710
  }
 
89711
public:
 
89712
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
89713
  const char *__attr_name (unsigned i) const {
 
89714
    static const char *names[] = { "sons" }; return names[i];
 
89715
  }
 
89716
  const void *__attr (unsigned __i) const {
 
89717
    switch (__i) { case 0: return &sons; default: return 0; }
 
89718
  }
 
89719
#line 3745 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89720
};
 
89721
 
 
89722
/** \class CT_ReturnStmt CTree.h Puma/CTree.h
 
89723
 *  Tree node representing a return-statement.
 
89724
 *  Example: \code return 1; \endcode */
 
89725
 
 
89726
#line 89727 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89727
} // closed Puma
 
89728
class CCExprResolve;
 
89729
class CExprResolve;
 
89730
class WinIfExists;
 
89731
class WinImportHandler;
 
89732
class WinMacros;
 
89733
class WinAsm;
 
89734
class WinDeclSpecs;
 
89735
class WinMemberExplSpec;
 
89736
class WinTypeKeywords;
 
89737
class WinFriend;
 
89738
class ExtAC;
 
89739
class ExtACBuilderCoupling;
 
89740
class ExtACSyntaxCoupling;
 
89741
class ExtACTree;
 
89742
class ExtACKeywords;
 
89743
class ExtGnu;
 
89744
class PragmaOnceUnitState;
 
89745
class PragmaOnce;
 
89746
class CMatchSyntax;
 
89747
namespace Puma {
 
89748
 
 
89749
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89750
class CT_ReturnStmt : public CT_Statement {
 
89751
#line 89752 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89752
  friend class ::CCExprResolve;
 
89753
  friend class ::CExprResolve;
 
89754
  friend class ::WinIfExists;
 
89755
  friend class ::WinImportHandler;
 
89756
  friend class ::WinMacros;
 
89757
  friend class ::WinAsm;
 
89758
  friend class ::WinDeclSpecs;
 
89759
  friend class ::WinMemberExplSpec;
 
89760
  friend class ::WinTypeKeywords;
 
89761
  friend class ::WinFriend;
 
89762
  friend class ::ExtAC;
 
89763
  friend class ::ExtACBuilderCoupling;
 
89764
  friend class ::ExtACSyntaxCoupling;
 
89765
  friend class ::ExtACTree;
 
89766
  friend class ::ExtACKeywords;
 
89767
  friend class ::ExtGnu;
 
89768
  friend class ::PragmaOnceUnitState;
 
89769
  friend class ::PragmaOnce;
 
89770
  friend class ::CMatchSyntax;
 
89771
 
 
89772
#line 3750 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89773
 
 
89774
  CTree *sons[3]; // key, expr, semi_colon
 
89775
 
 
89776
public:
 
89777
  /** Constructor.
 
89778
   *  \param key The keyword 'return'.
 
89779
   *  \param e The expression specifying the return value. 
 
89780
   *  \param sc The trailing semi-colon. */
 
89781
  CT_ReturnStmt (CTree *key, CTree *e, CTree *sc) {
 
89782
    AddSon (sons[0], key); AddSon (sons[1], e); AddSon (sons[2], sc); 
 
89783
  }
 
89784
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89785
  static const char *NodeId ();
 
89786
  /** Get the name of the node. Can be compared with NodeId(). */
 
89787
  const char *NodeName () const { return NodeId (); }
 
89788
  /** Get the number of sons. */
 
89789
  int Sons () const { return CTree::Sons (sons, 3); }
 
89790
  /** Get the n-th son.
 
89791
   *  \param n The index of the son.
 
89792
   *  \return The n-th son or NULL. */
 
89793
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
89794
  /** Get the expression specifying the return value. */
 
89795
  CTree *Expr () const { return sons[1]; }
 
89796
  /** Replace a son.
 
89797
   *  \param old_son The son to replace.
 
89798
   *  \param new_son The new son. */
 
89799
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89800
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
89801
  }
 
89802
public:
 
89803
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
89804
  const char *__attr_name (unsigned i) const {
 
89805
    static const char *names[] = { "sons" }; return names[i];
 
89806
  }
 
89807
  const void *__attr (unsigned __i) const {
 
89808
    switch (__i) { case 0: return &sons; default: return 0; }
 
89809
  }
 
89810
#line 3779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89811
};
 
89812
 
 
89813
/** \class CT_WhileStmt CTree.h Puma/CTree.h
 
89814
 *  Tree node representing a while-statement.
 
89815
 *  Example: \code while(a>0) a--; \endcode */
 
89816
 
 
89817
#line 89818 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89818
} // closed Puma
 
89819
class CCExprResolve;
 
89820
class CExprResolve;
 
89821
class WinIfExists;
 
89822
class WinImportHandler;
 
89823
class WinMacros;
 
89824
class WinAsm;
 
89825
class WinDeclSpecs;
 
89826
class WinMemberExplSpec;
 
89827
class WinTypeKeywords;
 
89828
class WinFriend;
 
89829
class ExtAC;
 
89830
class ExtACBuilderCoupling;
 
89831
class ExtACSyntaxCoupling;
 
89832
class ExtACTree;
 
89833
class ExtACKeywords;
 
89834
class ExtGnu;
 
89835
class PragmaOnceUnitState;
 
89836
class PragmaOnce;
 
89837
class CMatchSyntax;
 
89838
namespace Puma {
 
89839
 
 
89840
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89841
class CT_WhileStmt : public CT_Statement, public CSemScope {
 
89842
#line 89843 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89843
  friend class ::CCExprResolve;
 
89844
  friend class ::CExprResolve;
 
89845
  friend class ::WinIfExists;
 
89846
  friend class ::WinImportHandler;
 
89847
  friend class ::WinMacros;
 
89848
  friend class ::WinAsm;
 
89849
  friend class ::WinDeclSpecs;
 
89850
  friend class ::WinMemberExplSpec;
 
89851
  friend class ::WinTypeKeywords;
 
89852
  friend class ::WinFriend;
 
89853
  friend class ::ExtAC;
 
89854
  friend class ::ExtACBuilderCoupling;
 
89855
  friend class ::ExtACSyntaxCoupling;
 
89856
  friend class ::ExtACTree;
 
89857
  friend class ::ExtACKeywords;
 
89858
  friend class ::ExtGnu;
 
89859
  friend class ::PragmaOnceUnitState;
 
89860
  friend class ::PragmaOnce;
 
89861
  friend class ::CMatchSyntax;
 
89862
 
 
89863
#line 3784 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89864
 
 
89865
  CTree *sons[5]; // key, open, cond, close, stmt
 
89866
 
 
89867
public:
 
89868
  /** Constructor.
 
89869
   *  \param kw The keyword 'while'.
 
89870
   *  \param o Left parenthesis before the condition.
 
89871
   *  \param cond The loop condition. 
 
89872
   *  \param c Right parenthesis behind the condition. 
 
89873
   *  \param stmt The controlled statement. */
 
89874
  CT_WhileStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
89875
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
89876
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
89877
  }
 
89878
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89879
  static const char *NodeId ();
 
89880
  /** Get the name of the node. Can be compared with NodeId(). */
 
89881
  const char *NodeName () const { return NodeId (); }
 
89882
  /** Get the number of sons. */
 
89883
  int Sons () const { return 5; }
 
89884
  /** Get the n-th son.
 
89885
   *  \param n The index of the son.
 
89886
   *  \return The n-th son or NULL. */
 
89887
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
89888
  /** Get the controlled statement. */
 
89889
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
89890
  /** Get the loop condition. */
 
89891
  CTree *Condition () const { return sons[2]; }
 
89892
  /** Replace a son.
 
89893
   *  \param old_son The son to replace.
 
89894
   *  \param new_son The new son. */
 
89895
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89896
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
89897
  }
 
89898
  /** Get the scope opened by the while-statement. */
 
89899
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
89900
public:
 
89901
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
89902
  const char *__attr_name (unsigned i) const {
 
89903
    static const char *names[] = { "sons" }; return names[i];
 
89904
  }
 
89905
  const void *__attr (unsigned __i) const {
 
89906
    switch (__i) { case 0: return &sons; default: return 0; }
 
89907
  }
 
89908
#line 3820 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89909
};
 
89910
 
 
89911
/** \class CT_DoStmt CTree.h Puma/CTree.h
 
89912
 *  Tree node representing a do-while-statement.
 
89913
 *  Example: \code do a--; while(a>0); \endcode */
 
89914
 
 
89915
#line 89916 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89916
} // closed Puma
 
89917
class CCExprResolve;
 
89918
class CExprResolve;
 
89919
class WinIfExists;
 
89920
class WinImportHandler;
 
89921
class WinMacros;
 
89922
class WinAsm;
 
89923
class WinDeclSpecs;
 
89924
class WinMemberExplSpec;
 
89925
class WinTypeKeywords;
 
89926
class WinFriend;
 
89927
class ExtAC;
 
89928
class ExtACBuilderCoupling;
 
89929
class ExtACSyntaxCoupling;
 
89930
class ExtACTree;
 
89931
class ExtACKeywords;
 
89932
class ExtGnu;
 
89933
class PragmaOnceUnitState;
 
89934
class PragmaOnce;
 
89935
class CMatchSyntax;
 
89936
namespace Puma {
 
89937
 
 
89938
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89939
class CT_DoStmt : public CT_Statement {
 
89940
#line 89941 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
89941
  friend class ::CCExprResolve;
 
89942
  friend class ::CExprResolve;
 
89943
  friend class ::WinIfExists;
 
89944
  friend class ::WinImportHandler;
 
89945
  friend class ::WinMacros;
 
89946
  friend class ::WinAsm;
 
89947
  friend class ::WinDeclSpecs;
 
89948
  friend class ::WinMemberExplSpec;
 
89949
  friend class ::WinTypeKeywords;
 
89950
  friend class ::WinFriend;
 
89951
  friend class ::ExtAC;
 
89952
  friend class ::ExtACBuilderCoupling;
 
89953
  friend class ::ExtACSyntaxCoupling;
 
89954
  friend class ::ExtACTree;
 
89955
  friend class ::ExtACKeywords;
 
89956
  friend class ::ExtGnu;
 
89957
  friend class ::PragmaOnceUnitState;
 
89958
  friend class ::PragmaOnce;
 
89959
  friend class ::CMatchSyntax;
 
89960
 
 
89961
#line 3825 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
89962
 
 
89963
  CTree *sons[7]; // do, stmt, while, open, expr, close, semi_colon
 
89964
 
 
89965
public:
 
89966
  /** Constructor.
 
89967
   *  \param d The keyword 'do'.
 
89968
   *  \param stmt The controlled statement.
 
89969
   *  \param w The keyword 'while'.
 
89970
   *  \param o Left parenthesis before the loop condition.
 
89971
   *  \param e The loop condition.
 
89972
   *  \param c Right parenthesis behind the loop condition.
 
89973
   *  \param sc The trailing semi-colon. */
 
89974
  CT_DoStmt (CTree *d, CTree *stmt, CTree *w, CTree *o, CTree *e, 
 
89975
             CTree *c, CTree *sc) {
 
89976
    AddSon (sons[0], d); AddSon (sons[1], stmt); AddSon (sons[2], w); 
 
89977
    AddSon (sons[3], o); AddSon (sons[4], e); AddSon (sons[5], c); 
 
89978
    AddSon (sons[6], sc); 
 
89979
  }
 
89980
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
89981
  static const char *NodeId ();
 
89982
  /** Get the name of the node. Can be compared with NodeId(). */
 
89983
  const char *NodeName () const { return NodeId (); }
 
89984
  /** Get the number of sons. */
 
89985
  int Sons () const { return 7; }
 
89986
  /** Get the n-th son.
 
89987
   *  \param n The index of the son.
 
89988
   *  \return The n-th son or NULL. */
 
89989
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
89990
  /** Get the controlled statement. */
 
89991
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
89992
  /** Get the loop condition. */
 
89993
  CTree *Expr () const { return sons[4]; }
 
89994
  /** Replace a son.
 
89995
   *  \param old_son The son to replace.
 
89996
   *  \param new_son The new son. */
 
89997
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
89998
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
89999
  }
 
90000
public:
 
90001
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
90002
  const char *__attr_name (unsigned i) const {
 
90003
    static const char *names[] = { "sons" }; return names[i];
 
90004
  }
 
90005
  const void *__attr (unsigned __i) const {
 
90006
    switch (__i) { case 0: return &sons; default: return 0; }
 
90007
  }
 
90008
#line 3863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90009
};
 
90010
 
 
90011
/** \class CT_ForStmt CTree.h Puma/CTree.h
 
90012
 *  Tree node representing a for-statement.
 
90013
 *  Example: \code for(int i=0; i<10; i++) f(i); \endcode */
 
90014
 
 
90015
#line 90016 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90016
} // closed Puma
 
90017
class CCExprResolve;
 
90018
class CExprResolve;
 
90019
class WinIfExists;
 
90020
class WinImportHandler;
 
90021
class WinMacros;
 
90022
class WinAsm;
 
90023
class WinDeclSpecs;
 
90024
class WinMemberExplSpec;
 
90025
class WinTypeKeywords;
 
90026
class WinFriend;
 
90027
class ExtAC;
 
90028
class ExtACBuilderCoupling;
 
90029
class ExtACSyntaxCoupling;
 
90030
class ExtACTree;
 
90031
class ExtACKeywords;
 
90032
class ExtGnu;
 
90033
class PragmaOnceUnitState;
 
90034
class PragmaOnce;
 
90035
class CMatchSyntax;
 
90036
namespace Puma {
 
90037
 
 
90038
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90039
class CT_ForStmt : public CT_Statement, public CSemScope {
 
90040
#line 90041 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90041
  friend class ::CCExprResolve;
 
90042
  friend class ::CExprResolve;
 
90043
  friend class ::WinIfExists;
 
90044
  friend class ::WinImportHandler;
 
90045
  friend class ::WinMacros;
 
90046
  friend class ::WinAsm;
 
90047
  friend class ::WinDeclSpecs;
 
90048
  friend class ::WinMemberExplSpec;
 
90049
  friend class ::WinTypeKeywords;
 
90050
  friend class ::WinFriend;
 
90051
  friend class ::ExtAC;
 
90052
  friend class ::ExtACBuilderCoupling;
 
90053
  friend class ::ExtACSyntaxCoupling;
 
90054
  friend class ::ExtACTree;
 
90055
  friend class ::ExtACKeywords;
 
90056
  friend class ::ExtGnu;
 
90057
  friend class ::PragmaOnceUnitState;
 
90058
  friend class ::PragmaOnce;
 
90059
  friend class ::CMatchSyntax;
 
90060
 
 
90061
#line 3868 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90062
 
 
90063
  CTree *sons[8]; // key, open, init, cond, semi_colon, expr, close, stmt
 
90064
 
 
90065
public:
 
90066
  /** Constructor.
 
90067
   *  \param k The keyword 'for'.
 
90068
   *  \param o Left parenthesis.
 
90069
   *  \param i The loop initializer statement.
 
90070
   *  \param co The loop condition.
 
90071
   *  \param sc The semi-colon behind the loop condition.
 
90072
   *  \param e The loop counter expression.
 
90073
   *  \param c Right parenthesis.
 
90074
   *  \param stmt The controlled statement. */
 
90075
  CT_ForStmt (CTree *k, CTree *o, CTree *i, CTree *co, CTree *sc,
 
90076
              CTree *e, CTree *c, CTree *stmt) {
 
90077
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], i); 
 
90078
    AddSon (sons[3], co); AddSon (sons[4], sc); AddSon (sons[5], e); 
 
90079
    AddSon (sons[6], c); AddSon (sons[7], stmt); 
 
90080
  }
 
90081
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
90082
  static const char *NodeId ();
 
90083
  /** Get the name of the node. Can be compared with NodeId(). */
 
90084
  const char *NodeName () const { return NodeId (); }
 
90085
  /** Get the number of sons. */
 
90086
  int Sons () const { return CTree::Sons (sons, 8); }
 
90087
  /** Get the n-th son.
 
90088
   *  \param n The index of the son.
 
90089
   *  \return The n-th son or NULL. */
 
90090
  CTree *Son (int n) const { return CTree::Son (sons, 8, n); }
 
90091
  /** Get the loop initializer. */
 
90092
  CTree *InitStmt () const { return sons[2]; }
 
90093
  /** Get the loop condition. */
 
90094
  CTree *Condition () const { return sons[3]; }
 
90095
  /** Get the loop counter expression. */
 
90096
  CTree *Expr () const { return sons[5]; }
 
90097
  /** Get the controlled statement. */
 
90098
  CT_Statement *Statement () const { return (CT_Statement*)sons[7]; }
 
90099
  /** Replace a son.
 
90100
   *  \param old_son The son to replace.
 
90101
   *  \param new_son The new son. */
 
90102
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
90103
    CTree::ReplaceSon (sons, 8, old_son, new_son);
 
90104
  }
 
90105
  /** Get the scope opened by the for-statement. */
 
90106
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
90107
public:
 
90108
  typedef AC::TL<Puma::CTree * [8],AC::TLE > __AttrTypes;
 
90109
  const char *__attr_name (unsigned i) const {
 
90110
    static const char *names[] = { "sons" }; return names[i];
 
90111
  }
 
90112
  const void *__attr (unsigned __i) const {
 
90113
    switch (__i) { case 0: return &sons; default: return 0; }
 
90114
  }
 
90115
#line 3913 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90116
};
 
90117
 
 
90118
/** \class CT_Condition CTree.h Puma/CTree.h
 
90119
 *  Tree node representing a control-statement condition.
 
90120
 *  Example: \code int i = 0 \endcode */
 
90121
 
 
90122
#line 90123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90123
} // closed Puma
 
90124
class CCExprResolve;
 
90125
class CExprResolve;
 
90126
class WinIfExists;
 
90127
class WinImportHandler;
 
90128
class WinMacros;
 
90129
class WinAsm;
 
90130
class WinDeclSpecs;
 
90131
class WinMemberExplSpec;
 
90132
class WinTypeKeywords;
 
90133
class WinFriend;
 
90134
class ExtAC;
 
90135
class ExtACBuilderCoupling;
 
90136
class ExtACSyntaxCoupling;
 
90137
class ExtACTree;
 
90138
class ExtACKeywords;
 
90139
class ExtGnu;
 
90140
class PragmaOnceUnitState;
 
90141
class PragmaOnce;
 
90142
class CMatchSyntax;
 
90143
namespace Puma {
 
90144
 
 
90145
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90146
class CT_Condition : public CT_Decl, public CSemObject {
 
90147
#line 90148 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90148
  friend class ::CCExprResolve;
 
90149
  friend class ::CExprResolve;
 
90150
  friend class ::WinIfExists;
 
90151
  friend class ::WinImportHandler;
 
90152
  friend class ::WinMacros;
 
90153
  friend class ::WinAsm;
 
90154
  friend class ::WinDeclSpecs;
 
90155
  friend class ::WinMemberExplSpec;
 
90156
  friend class ::WinTypeKeywords;
 
90157
  friend class ::WinFriend;
 
90158
  friend class ::ExtAC;
 
90159
  friend class ::ExtACBuilderCoupling;
 
90160
  friend class ::ExtACSyntaxCoupling;
 
90161
  friend class ::ExtACTree;
 
90162
  friend class ::ExtACKeywords;
 
90163
  friend class ::ExtGnu;
 
90164
  friend class ::PragmaOnceUnitState;
 
90165
  friend class ::PragmaOnce;
 
90166
  friend class ::CMatchSyntax;
 
90167
 
 
90168
#line 3918 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90169
 
 
90170
  CTree *sons[3]; // declspecs, declarator, init
 
90171
 
 
90172
public:
 
90173
  /** Constructor.
 
90174
   *  \param dsl The declaration specifier sequence. 
 
90175
   *  \param d The variable declarator. */
 
90176
  CT_Condition (CTree *dsl, CTree *d) {
 
90177
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], 0);
 
90178
  }
 
90179
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
90180
  static const char *NodeId ();
 
90181
  /** Get the name of the node. Can be compared with NodeId(). */
 
90182
  const char *NodeName () const { return NodeId (); }
 
90183
  /** Get the number of sons. */
 
90184
  int Sons () const { return CTree::Sons (sons, 3); }
 
90185
  /** Get the n-th son.
 
90186
   *  \param n The index of the son.
 
90187
   *  \return The n-th son or NULL. */
 
90188
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
90189
  /** Get the declaration specifier sequence. */
 
90190
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
90191
  /** Get the declarator. */
 
90192
  CTree *Declarator () const { return sons[1]; }
 
90193
  /** Get the initializer of the declaration. */
 
90194
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
90195
  /** Get the semantic information of the declared object. */
 
90196
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
90197
  /** Set the initializer. */
 
90198
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
90199
  /** Replace a son.
 
90200
   *  \param old_son The son to replace.
 
90201
   *  \param new_son The new son. */
 
90202
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
90203
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
90204
  }
 
90205
public:
 
90206
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
90207
  const char *__attr_name (unsigned i) const {
 
90208
    static const char *names[] = { "sons" }; return names[i];
 
90209
  }
 
90210
  const void *__attr (unsigned __i) const {
 
90211
    switch (__i) { case 0: return &sons; default: return 0; }
 
90212
  }
 
90213
#line 3954 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90214
};
 
90215
 
 
90216
/*****************************************************************************/
 
90217
/*                                                                           */
 
90218
/*                              Classes                                      */
 
90219
/*                                                                           */
 
90220
/*****************************************************************************/
 
90221
 
 
90222
/** \class CT_ClassDef CTree.h Puma/CTree.h
 
90223
 *  Tree node representing a class definition.
 
90224
 *  Example: \code class X : Y { int x; } \endcode */
 
90225
 
 
90226
#line 90227 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90227
} // closed Puma
 
90228
class CCExprResolve;
 
90229
class CExprResolve;
 
90230
class WinIfExists;
 
90231
class WinImportHandler;
 
90232
class WinMacros;
 
90233
class WinAsm;
 
90234
class WinDeclSpecs;
 
90235
class WinMemberExplSpec;
 
90236
class WinTypeKeywords;
 
90237
class WinFriend;
 
90238
class ExtAC;
 
90239
class ExtACBuilderCoupling;
 
90240
class ExtACSyntaxCoupling;
 
90241
class ExtACTree;
 
90242
class ExtACKeywords;
 
90243
class ExtGnu;
 
90244
class PragmaOnceUnitState;
 
90245
class PragmaOnce;
 
90246
class CMatchSyntax;
 
90247
namespace Puma {
 
90248
 
 
90249
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90250
 
 
90251
#line 90252 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90252
} // closed Puma
 
90253
 
 
90254
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
90255
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
90256
#include "ExtACTree.ah"
 
90257
#endif
 
90258
namespace Puma {
 
90259
 
 
90260
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90261
class CT_ClassDef : public CT_Decl, public CSemObject {
 
90262
#line 90263 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90263
  friend class ::CCExprResolve;
 
90264
  friend class ::CExprResolve;
 
90265
  friend class ::WinIfExists;
 
90266
  friend class ::WinImportHandler;
 
90267
  friend class ::WinMacros;
 
90268
  friend class ::WinAsm;
 
90269
  friend class ::WinDeclSpecs;
 
90270
  friend class ::WinMemberExplSpec;
 
90271
  friend class ::WinTypeKeywords;
 
90272
  friend class ::WinFriend;
 
90273
  friend class ::ExtAC;
 
90274
  friend class ::ExtACBuilderCoupling;
 
90275
  friend class ::ExtACSyntaxCoupling;
 
90276
  friend class ::ExtACTree;
 
90277
  friend class ::ExtACKeywords;
 
90278
  friend class ::ExtGnu;
 
90279
  friend class ::PragmaOnceUnitState;
 
90280
  friend class ::PragmaOnce;
 
90281
  friend class ::CMatchSyntax;
 
90282
 
 
90283
#line 3965 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90284
 
 
90285
   
 
90286
#line 90287 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90287
 
 
90288
  struct __ac_wrapper_sons {
 
90289
    typedef ::Puma::CTree * E; typedef E A[4]; A _data;
 
90290
    operator A& () { return _data; }
 
90291
    operator A& () const { return (A&)*(::Puma::CTree * *)_data; }
 
90292
    operator const A& () { return _data; }
 
90293
    operator const A& () const { return _data; }
 
90294
    operator void* () { return _data; }
 
90295
    operator void* () const { return (void*)_data; }
 
90296
    operator const void* () { return _data; }
 
90297
    operator const void* () const { return _data; }
 
90298
    template <typename I> E& operator [] (I i) { return _data[i]; } // for VC++ 2003
 
90299
    template <typename I> const E& operator [] (I i) const { return _data[i]; } // for VC++ 2003
 
90300
  } sons
 
90301
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90302
 
 
90303
#line 3966 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90304
; // key, name, bases, members
 
90305
  CTree *obj_decl;
 
90306
 
 
90307
public:
 
90308
  /** Constructor.
 
90309
   *  \param k The keyword 'class' or 'struct'.
 
90310
   *  \param n The name of the class.
 
90311
   *  \param b The base class list. */
 
90312
  
 
90313
#line 90314 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90314
 
 
90315
 
 
90316
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 {
 
90317
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 __TJP;
 
90318
  typedef TResult Result;
 
90319
  typedef TThat   That;
 
90320
  typedef TTarget Target;
 
90321
  enum { ARGS = TArgs::ARGS };
 
90322
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
90323
  static const int JPID = 55;
 
90324
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
90325
  struct Res {
 
90326
    typedef void Type;
 
90327
    typedef void ReferredType;
 
90328
  };
 
90329
 
 
90330
  That *_that;
 
90331
 
 
90332
  inline That *that() {return (That*)_that;}
 
90333
 
 
90334
};
 
90335
 
 
90336
 
 
90337
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90338
CT_ClassDef (CTree * arg0, CTree * arg1, CTree * arg2 = (CTree*)0) 
 
90339
#line 90340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90340
{
 
90341
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TLE > > > > __TJP;
 
90342
    __TJP tjp;
 
90343
  tjp._that =  (__TJP::That*)this;
 
90344
    this->__exec_old_C1(arg0, arg1, arg2);
 
90345
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
90346
  
 
90347
}
 
90348
__attribute__((always_inline)) inline void __exec_old_C1(::Puma::CTree * k,::Puma::CTree * n,::Puma::CTree * b)
 
90349
#line 3974 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90350
{
 
90351
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], b); 
 
90352
    AddSon (sons[3], 0); AddSon (obj_decl, 0); 
 
90353
  }
 
90354
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
90355
  static const char *NodeId ();
 
90356
  /** Get the name of the node. Can be compared with NodeId(). */
 
90357
  const char *NodeName () const { return NodeId (); }
 
90358
  /** Get the number of sons. */
 
90359
  int Sons () const { return CTree::Sons (sons, 4); }
 
90360
  /** Get the n-th son.
 
90361
   *  \param n The index of the son.
 
90362
   *  \return The n-th son or NULL. */
 
90363
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
90364
  /** Get the name of the class. */
 
90365
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
90366
  /** Get the member declarations list. */
 
90367
  CT_MembList *Members () const { return (CT_MembList*)sons[3]; }
 
90368
  /** Get the base class specifiers list. */
 
90369
  CT_BaseSpecList *BaseClasses () const { return (CT_BaseSpecList*)sons[2]; }
 
90370
  /** Get the object declaration node containing the class definition. */
 
90371
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
90372
  /** Get the semantic information about the declared class. */
 
90373
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
90374
  /** Set the member declarations list. */
 
90375
  void Members (CTree *m) { AddSon (sons[3], m); }
 
90376
  /** Set the base class specifiers list. */
 
90377
  void BaseClasses (CTree *bc) { AddSon (sons[2], bc); }
 
90378
  /** Set the object declaration containing the class definition. */
 
90379
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
90380
  /** Replace a son.
 
90381
   *  \param old_son The son to replace.
 
90382
   *  \param new_son The new son. */
 
90383
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
90384
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
90385
  }
 
90386
   private:
 
90387
 
 
90388
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
90389
 Puma :: CTree * _intro_members ;
 
90390
Puma :: CTree * _base_intros ;
 
90391
public :
 
90392
Puma :: CTree * IntroMembers ( ) const { return _intro_members ; }
 
90393
void IntroMembers ( Puma :: CTree * members ) { _intro_members = members ; }
 
90394
Puma :: CTree * BaseIntros ( ) const { return _base_intros ; }
 
90395
void BaseIntros ( Puma :: CTree * bases ) { _base_intros = bases ; }public:
 
90396
  typedef AC::TL<Puma::CTree * [4],AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
90397
  const char *__attr_name (unsigned i) const {
 
90398
    static const char *names[] = { "sons", "obj_decl", "_intro_members", "_base_intros" }; return names[i];
 
90399
  }
 
90400
  const void *__attr (unsigned __i) const {
 
90401
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; case 2: return &_intro_members; case 3: return &_base_intros; default: return 0; }
 
90402
  }
 
90403
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90404
 
 
90405
#line 90406 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90406
 
 
90407
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 {
 
90408
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 __TJP;
 
90409
  typedef TResult Result;
 
90410
  typedef TThat   That;
 
90411
  typedef TTarget Target;
 
90412
  enum { ARGS = TArgs::ARGS };
 
90413
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
90414
  static const int JPID = 7557;
 
90415
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
90416
  struct Res {
 
90417
    typedef void Type;
 
90418
    typedef void ReferredType;
 
90419
  };
 
90420
 
 
90421
  That *_that;
 
90422
 
 
90423
  inline That *that() {return (That*)_that;}
 
90424
 
 
90425
};
 
90426
 
 
90427
 
 
90428
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90429
 
 
90430
#line 90431 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90431
 
 
90432
public:
 
90433
inline CT_ClassDef (const Puma::CT_ClassDef & arg0) : Puma::CT_Decl (arg0), Puma::CSemObject (arg0), sons (arg0.sons), obj_decl (arg0.obj_decl), _intro_members (arg0._intro_members), _base_intros (arg0._base_intros) {
 
90434
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< const ::Puma::CT_ClassDef & , AC::TLE > > __TJP;
 
90435
  __TJP tjp;
 
90436
  tjp._that =  (__TJP::That*)this;
 
90437
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
90438
 
 
90439
}
 
90440
 
 
90441
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90442
 
 
90443
#line 90444 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90444
 
 
90445
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefD1Ev_0 {
 
90446
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0 __TJP;
 
90447
  typedef TResult Result;
 
90448
  typedef TThat   That;
 
90449
  typedef TTarget Target;
 
90450
  enum { ARGS = TArgs::ARGS };
 
90451
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
90452
  static const int JPID = 7555;
 
90453
  static const AC::JPType JPTYPE = (AC::JPType)32;
 
90454
  struct Res {
 
90455
    typedef void Type;
 
90456
    typedef void ReferredType;
 
90457
  };
 
90458
 
 
90459
  That *_that;
 
90460
 
 
90461
  inline That *that() {return (That*)_that;}
 
90462
 
 
90463
};
 
90464
 
 
90465
 
 
90466
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90467
 
 
90468
#line 90469 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90469
 
 
90470
public:
 
90471
inline ~CT_ClassDef () {
 
90472
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TLE > __TJP;
 
90473
  __TJP tjp;
 
90474
  tjp._that =  (__TJP::That*)this;
 
90475
  AC::invoke_ExtACTree_ExtACTree_a1_before<__TJP> (&tjp);
 
90476
 
 
90477
}
 
90478
 
 
90479
#line 4010 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90480
};
 
90481
      
 
90482
/** \class CT_UnionDef CTree.h Puma/CTree.h
 
90483
 *  Tree node representing the definition of a union.
 
90484
 *  Example: \code union U { int i; } \endcode */
 
90485
 
 
90486
#line 90487 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90487
} // closed Puma
 
90488
class CCExprResolve;
 
90489
class CExprResolve;
 
90490
class WinIfExists;
 
90491
class WinImportHandler;
 
90492
class WinMacros;
 
90493
class WinAsm;
 
90494
class WinDeclSpecs;
 
90495
class WinMemberExplSpec;
 
90496
class WinTypeKeywords;
 
90497
class WinFriend;
 
90498
class ExtAC;
 
90499
class ExtACBuilderCoupling;
 
90500
class ExtACSyntaxCoupling;
 
90501
class ExtACTree;
 
90502
class ExtACKeywords;
 
90503
class ExtGnu;
 
90504
class PragmaOnceUnitState;
 
90505
class PragmaOnce;
 
90506
class CMatchSyntax;
 
90507
namespace Puma {
 
90508
 
 
90509
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90510
class CT_UnionDef : public CT_ClassDef {
 
90511
#line 90512 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90512
  friend class ::CCExprResolve;
 
90513
  friend class ::CExprResolve;
 
90514
  friend class ::WinIfExists;
 
90515
  friend class ::WinImportHandler;
 
90516
  friend class ::WinMacros;
 
90517
  friend class ::WinAsm;
 
90518
  friend class ::WinDeclSpecs;
 
90519
  friend class ::WinMemberExplSpec;
 
90520
  friend class ::WinTypeKeywords;
 
90521
  friend class ::WinFriend;
 
90522
  friend class ::ExtAC;
 
90523
  friend class ::ExtACBuilderCoupling;
 
90524
  friend class ::ExtACSyntaxCoupling;
 
90525
  friend class ::ExtACTree;
 
90526
  friend class ::ExtACKeywords;
 
90527
  friend class ::ExtGnu;
 
90528
  friend class ::PragmaOnceUnitState;
 
90529
  friend class ::PragmaOnce;
 
90530
  friend class ::CMatchSyntax;
 
90531
 
 
90532
#line 4015 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90533
 
 
90534
public:
 
90535
  /** Constructor.
 
90536
   *  \param k The keyword 'union'.
 
90537
   *  \param n The name of the union.
 
90538
   *  \param b The base union list. */
 
90539
  CT_UnionDef (CTree *k, CTree *n, CTree *b = 0) : CT_ClassDef (k, n, b) {}
 
90540
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
90541
  static const char *NodeId ();
 
90542
  /** Get the name of the node. Can be compared with NodeId(). */
 
90543
  const char *NodeName () const { return NodeId (); }
 
90544
public:
 
90545
  typedef AC::TLE __AttrTypes;
 
90546
  const char *__attr_name (unsigned i) const { return 0; }
 
90547
  const void *__attr (unsigned __i) const { return 0; }
 
90548
#line 4026 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90549
};
 
90550
      
 
90551
/** \class CT_MembList CTree.h Puma/CTree.h
 
90552
 *  Tree node representing a member declarations list. */ 
 
90553
 
 
90554
#line 90555 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90555
} // closed Puma
 
90556
class CCExprResolve;
 
90557
class CExprResolve;
 
90558
class WinIfExists;
 
90559
class WinImportHandler;
 
90560
class WinMacros;
 
90561
class WinAsm;
 
90562
class WinDeclSpecs;
 
90563
class WinMemberExplSpec;
 
90564
class WinTypeKeywords;
 
90565
class WinFriend;
 
90566
class ExtAC;
 
90567
class ExtACBuilderCoupling;
 
90568
class ExtACSyntaxCoupling;
 
90569
class ExtACTree;
 
90570
class ExtACKeywords;
 
90571
class ExtGnu;
 
90572
class PragmaOnceUnitState;
 
90573
class PragmaOnce;
 
90574
class CMatchSyntax;
 
90575
namespace Puma {
 
90576
 
 
90577
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90578
class CT_MembList : public CT_DeclList, public CSemScope {
 
90579
#line 90580 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90580
  friend class ::CCExprResolve;
 
90581
  friend class ::CExprResolve;
 
90582
  friend class ::WinIfExists;
 
90583
  friend class ::WinImportHandler;
 
90584
  friend class ::WinMacros;
 
90585
  friend class ::WinAsm;
 
90586
  friend class ::WinDeclSpecs;
 
90587
  friend class ::WinMemberExplSpec;
 
90588
  friend class ::WinTypeKeywords;
 
90589
  friend class ::WinFriend;
 
90590
  friend class ::ExtAC;
 
90591
  friend class ::ExtACBuilderCoupling;
 
90592
  friend class ::ExtACSyntaxCoupling;
 
90593
  friend class ::ExtACTree;
 
90594
  friend class ::ExtACKeywords;
 
90595
  friend class ::ExtGnu;
 
90596
  friend class ::PragmaOnceUnitState;
 
90597
  friend class ::PragmaOnce;
 
90598
  friend class ::CMatchSyntax;
 
90599
 
 
90600
#line 4030 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90601
 
 
90602
public:
 
90603
  CT_MembList (int size = 10, int incr = 10) : 
 
90604
    CT_DeclList (size, incr) {}
 
90605
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
90606
  static const char *NodeId ();
 
90607
  /** Get the name of the node. Can be compared with NodeId(). */
 
90608
  const char *NodeName () const { return NodeId (); }
 
90609
  /** Get the scope opened by the member declarations list. */
 
90610
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
90611
public:
 
90612
  typedef AC::TLE __AttrTypes;
 
90613
  const char *__attr_name (unsigned i) const { return 0; }
 
90614
  const void *__attr (unsigned __i) const { return 0; }
 
90615
#line 4040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90616
};
 
90617
 
 
90618
/** \class CT_MembInitList CTree.h Puma/CTree.h
 
90619
 *  Tree node representing a constructor initializer list.
 
90620
 *  Example: \code : Base(), m_Member(0) \endcode */
 
90621
 
 
90622
#line 90623 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90623
} // closed Puma
 
90624
class CCExprResolve;
 
90625
class CExprResolve;
 
90626
class WinIfExists;
 
90627
class WinImportHandler;
 
90628
class WinMacros;
 
90629
class WinAsm;
 
90630
class WinDeclSpecs;
 
90631
class WinMemberExplSpec;
 
90632
class WinTypeKeywords;
 
90633
class WinFriend;
 
90634
class ExtAC;
 
90635
class ExtACBuilderCoupling;
 
90636
class ExtACSyntaxCoupling;
 
90637
class ExtACTree;
 
90638
class ExtACKeywords;
 
90639
class ExtGnu;
 
90640
class PragmaOnceUnitState;
 
90641
class PragmaOnce;
 
90642
class CMatchSyntax;
 
90643
namespace Puma {
 
90644
 
 
90645
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90646
class CT_MembInitList : public CT_List, public CSemScope {
 
90647
#line 90648 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90648
  friend class ::CCExprResolve;
 
90649
  friend class ::CExprResolve;
 
90650
  friend class ::WinIfExists;
 
90651
  friend class ::WinImportHandler;
 
90652
  friend class ::WinMacros;
 
90653
  friend class ::WinAsm;
 
90654
  friend class ::WinDeclSpecs;
 
90655
  friend class ::WinMemberExplSpec;
 
90656
  friend class ::WinTypeKeywords;
 
90657
  friend class ::WinFriend;
 
90658
  friend class ::ExtAC;
 
90659
  friend class ::ExtACBuilderCoupling;
 
90660
  friend class ::ExtACSyntaxCoupling;
 
90661
  friend class ::ExtACTree;
 
90662
  friend class ::ExtACKeywords;
 
90663
  friend class ::ExtGnu;
 
90664
  friend class ::PragmaOnceUnitState;
 
90665
  friend class ::PragmaOnce;
 
90666
  friend class ::CMatchSyntax;
 
90667
 
 
90668
#line 4045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90669
 
 
90670
public:
 
90671
  /** Constructor.
 
90672
   *  \param size The initial size of the list. */
 
90673
  CT_MembInitList (int size = 2) : 
 
90674
    CT_List (size, 2, CT_List::OPEN) {}
 
90675
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
90676
  static const char *NodeId ();
 
90677
  /** Get the name of the node. Can be compared with NodeId(). */
 
90678
  const char *NodeName () const { return NodeId (); }
 
90679
  /** Get the scope opened by the member initializer list. */
 
90680
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
90681
public:
 
90682
  typedef AC::TLE __AttrTypes;
 
90683
  const char *__attr_name (unsigned i) const { return 0; }
 
90684
  const void *__attr (unsigned __i) const { return 0; }
 
90685
#line 4057 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90686
};
 
90687
 
 
90688
/** \class CT_MembInit CTree.h Puma/CTree.h
 
90689
 *  Tree node representing a member initializer.
 
90690
 *  Example: \code m_Member(0) \endcode */
 
90691
 
 
90692
#line 90693 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90693
} // closed Puma
 
90694
class CCExprResolve;
 
90695
class CExprResolve;
 
90696
class WinIfExists;
 
90697
class WinImportHandler;
 
90698
class WinMacros;
 
90699
class WinAsm;
 
90700
class WinDeclSpecs;
 
90701
class WinMemberExplSpec;
 
90702
class WinTypeKeywords;
 
90703
class WinFriend;
 
90704
class ExtAC;
 
90705
class ExtACBuilderCoupling;
 
90706
class ExtACSyntaxCoupling;
 
90707
class ExtACTree;
 
90708
class ExtACKeywords;
 
90709
class ExtGnu;
 
90710
class PragmaOnceUnitState;
 
90711
class PragmaOnce;
 
90712
class CMatchSyntax;
 
90713
namespace Puma {
 
90714
 
 
90715
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90716
 
 
90717
#line 90718 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90718
} // closed Puma
 
90719
 
 
90720
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
90721
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
90722
#include "CCExprResolveH.ah"
 
90723
#endif
 
90724
namespace Puma {
 
90725
 
 
90726
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90727
 
 
90728
#line 90729 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90729
} // closed Puma
 
90730
 
 
90731
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
90732
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
90733
#include "CExprResolveH.ah"
 
90734
#endif
 
90735
namespace Puma {
 
90736
 
 
90737
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90738
class CT_MembInit : public CT_Expression, public CSemObject {
 
90739
#line 90740 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90740
  friend class ::CCExprResolve;
 
90741
  friend class ::CExprResolve;
 
90742
  friend class ::WinIfExists;
 
90743
  friend class ::WinImportHandler;
 
90744
  friend class ::WinMacros;
 
90745
  friend class ::WinAsm;
 
90746
  friend class ::WinDeclSpecs;
 
90747
  friend class ::WinMemberExplSpec;
 
90748
  friend class ::WinTypeKeywords;
 
90749
  friend class ::WinFriend;
 
90750
  friend class ::ExtAC;
 
90751
  friend class ::ExtACBuilderCoupling;
 
90752
  friend class ::ExtACSyntaxCoupling;
 
90753
  friend class ::ExtACTree;
 
90754
  friend class ::ExtACKeywords;
 
90755
  friend class ::ExtGnu;
 
90756
  friend class ::PragmaOnceUnitState;
 
90757
  friend class ::PragmaOnce;
 
90758
  friend class ::CMatchSyntax;
 
90759
 
 
90760
#line 4062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90761
 
 
90762
  CTree *sons[2]; // name, init
 
90763
 
 
90764
public:
 
90765
  /** Constructor.
 
90766
   *  \param n The name of the member.
 
90767
   *  \param i The member initializer. */
 
90768
  CT_MembInit (CTree *n, CTree *i) { AddSon (sons[0], n); AddSon (sons[1], i); }
 
90769
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
90770
  static const char *NodeId ();
 
90771
  /** Get the name of the node. Can be compared with NodeId(). */
 
90772
  const char *NodeName () const { return NodeId (); }
 
90773
  /** Get the number of sons. */
 
90774
  int Sons () const { return 2; }
 
90775
  /** Get the n-th son.
 
90776
   *  \param n The index of the son.
 
90777
   *  \return The n-th son or NULL. */
 
90778
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
90779
  /** Replace a son.
 
90780
   *  \param old_son The son to replace.
 
90781
   *  \param new_son The new son. */
 
90782
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
90783
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
90784
  }
 
90785
  /** Get the name of the member. */
 
90786
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
90787
  /** Get the initializer. */
 
90788
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
90789
  /** Get the semantic information about the initialized member. */
 
90790
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
90791
   private:
 
90792
  typedef CT_MembInit CCExprResolveExpr;
 
90793
 
 
90794
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
90795
 public :
 
90796
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
90797
  typedef CT_MembInit CExprResolveExpr;
 
90798
 
 
90799
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
90800
 public :
 
90801
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
90802
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
90803
  const char *__attr_name (unsigned i) const {
 
90804
    static const char *names[] = { "sons" }; return names[i];
 
90805
  }
 
90806
  const void *__attr (unsigned __i) const {
 
90807
    switch (__i) { case 0: return &sons; default: return 0; }
 
90808
  }
 
90809
#line 4092 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90810
};
 
90811
 
 
90812
/** \class CT_BaseSpecList CTree.h Puma/CTree.h
 
90813
 *  Tree node representing a base specifier list.
 
90814
 *  Example: \code : X, Y, Z \endcode */
 
90815
 
 
90816
#line 90817 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90817
} // closed Puma
 
90818
class CCExprResolve;
 
90819
class CExprResolve;
 
90820
class WinIfExists;
 
90821
class WinImportHandler;
 
90822
class WinMacros;
 
90823
class WinAsm;
 
90824
class WinDeclSpecs;
 
90825
class WinMemberExplSpec;
 
90826
class WinTypeKeywords;
 
90827
class WinFriend;
 
90828
class ExtAC;
 
90829
class ExtACBuilderCoupling;
 
90830
class ExtACSyntaxCoupling;
 
90831
class ExtACTree;
 
90832
class ExtACKeywords;
 
90833
class ExtGnu;
 
90834
class PragmaOnceUnitState;
 
90835
class PragmaOnce;
 
90836
class CMatchSyntax;
 
90837
namespace Puma {
 
90838
 
 
90839
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90840
class CT_BaseSpecList : public CT_List {
 
90841
#line 90842 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90842
  friend class ::CCExprResolve;
 
90843
  friend class ::CExprResolve;
 
90844
  friend class ::WinIfExists;
 
90845
  friend class ::WinImportHandler;
 
90846
  friend class ::WinMacros;
 
90847
  friend class ::WinAsm;
 
90848
  friend class ::WinDeclSpecs;
 
90849
  friend class ::WinMemberExplSpec;
 
90850
  friend class ::WinTypeKeywords;
 
90851
  friend class ::WinFriend;
 
90852
  friend class ::ExtAC;
 
90853
  friend class ::ExtACBuilderCoupling;
 
90854
  friend class ::ExtACSyntaxCoupling;
 
90855
  friend class ::ExtACTree;
 
90856
  friend class ::ExtACKeywords;
 
90857
  friend class ::ExtGnu;
 
90858
  friend class ::PragmaOnceUnitState;
 
90859
  friend class ::PragmaOnce;
 
90860
  friend class ::CMatchSyntax;
 
90861
 
 
90862
#line 4097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90863
 
 
90864
public:
 
90865
  /** Constructor.
 
90866
   *  \param size The initial size of the list. */
 
90867
  CT_BaseSpecList (int size = 2) : 
 
90868
    CT_List (size, 2, CT_List::OPEN|CT_List::SEPARATORS) {}
 
90869
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
90870
  static const char *NodeId ();
 
90871
  /** Get the name of the node. Can be compared with NodeId(). */
 
90872
  const char *NodeName () const { return NodeId (); }
 
90873
public:
 
90874
  typedef AC::TLE __AttrTypes;
 
90875
  const char *__attr_name (unsigned i) const { return 0; }
 
90876
  const void *__attr (unsigned __i) const { return 0; }
 
90877
#line 4107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90878
};
 
90879
 
 
90880
/** \class CT_AccessSpec CTree.h Puma/CTree.h
 
90881
 *  Tree node representing an access specifier.
 
90882
 *  Example: \code public: \endcode */
 
90883
 
 
90884
#line 90885 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90885
} // closed Puma
 
90886
class CCExprResolve;
 
90887
class CExprResolve;
 
90888
class WinIfExists;
 
90889
class WinImportHandler;
 
90890
class WinMacros;
 
90891
class WinAsm;
 
90892
class WinDeclSpecs;
 
90893
class WinMemberExplSpec;
 
90894
class WinTypeKeywords;
 
90895
class WinFriend;
 
90896
class ExtAC;
 
90897
class ExtACBuilderCoupling;
 
90898
class ExtACSyntaxCoupling;
 
90899
class ExtACTree;
 
90900
class ExtACKeywords;
 
90901
class ExtGnu;
 
90902
class PragmaOnceUnitState;
 
90903
class PragmaOnce;
 
90904
class CMatchSyntax;
 
90905
namespace Puma {
 
90906
 
 
90907
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90908
class CT_AccessSpec : public CTree {
 
90909
#line 90910 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90910
  friend class ::CCExprResolve;
 
90911
  friend class ::CExprResolve;
 
90912
  friend class ::WinIfExists;
 
90913
  friend class ::WinImportHandler;
 
90914
  friend class ::WinMacros;
 
90915
  friend class ::WinAsm;
 
90916
  friend class ::WinDeclSpecs;
 
90917
  friend class ::WinMemberExplSpec;
 
90918
  friend class ::WinTypeKeywords;
 
90919
  friend class ::WinFriend;
 
90920
  friend class ::ExtAC;
 
90921
  friend class ::ExtACBuilderCoupling;
 
90922
  friend class ::ExtACSyntaxCoupling;
 
90923
  friend class ::ExtACTree;
 
90924
  friend class ::ExtACKeywords;
 
90925
  friend class ::ExtGnu;
 
90926
  friend class ::PragmaOnceUnitState;
 
90927
  friend class ::PragmaOnce;
 
90928
  friend class ::CMatchSyntax;
 
90929
 
 
90930
#line 4112 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90931
 
 
90932
  CTree *sons[2]; // access, colon
 
90933
 
 
90934
public:
 
90935
  /** Constructor.
 
90936
   *  \param a The access specifier, i.e. 'public', 'private', or 'protected'.
 
90937
   *  \param c The trailing colon. */
 
90938
  CT_AccessSpec (CTree *a, CTree *c) { AddSon (sons[0], a); AddSon (sons[1], c); }
 
90939
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
90940
  static const char *NodeId ();
 
90941
  /** Get the name of the node. Can be compared with NodeId(). */
 
90942
  const char *NodeName () const { return NodeId (); }
 
90943
  /** Get the number of sons. */
 
90944
  int Sons () const { return 2; }
 
90945
  /** Get the n-th son.
 
90946
   *  \param n The index of the son.
 
90947
   *  \return The n-th son or NULL. */
 
90948
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
90949
  /** Get the access specifier type (token type). */
 
90950
  int Access () const { return sons[0]->token ()->type (); }
 
90951
  /** Replace a son.
 
90952
   *  \param old_son The son to replace.
 
90953
   *  \param new_son The new son. */
 
90954
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
90955
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
90956
  }
 
90957
public:
 
90958
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
90959
  const char *__attr_name (unsigned i) const {
 
90960
    static const char *names[] = { "sons" }; return names[i];
 
90961
  }
 
90962
  const void *__attr (unsigned __i) const {
 
90963
    switch (__i) { case 0: return &sons; default: return 0; }
 
90964
  }
 
90965
#line 4138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90966
};
 
90967
 
 
90968
/** \class CT_BaseSpec CTree.h Puma/CTree.h
 
90969
 *  Tree node representing a base class specifier.
 
90970
 *  Example: \code public X \endcode */
 
90971
 
 
90972
#line 90973 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90973
} // closed Puma
 
90974
class CCExprResolve;
 
90975
class CExprResolve;
 
90976
class WinIfExists;
 
90977
class WinImportHandler;
 
90978
class WinMacros;
 
90979
class WinAsm;
 
90980
class WinDeclSpecs;
 
90981
class WinMemberExplSpec;
 
90982
class WinTypeKeywords;
 
90983
class WinFriend;
 
90984
class ExtAC;
 
90985
class ExtACBuilderCoupling;
 
90986
class ExtACSyntaxCoupling;
 
90987
class ExtACTree;
 
90988
class ExtACKeywords;
 
90989
class ExtGnu;
 
90990
class PragmaOnceUnitState;
 
90991
class PragmaOnce;
 
90992
class CMatchSyntax;
 
90993
namespace Puma {
 
90994
 
 
90995
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
90996
class CT_BaseSpec : public CTree {
 
90997
#line 90998 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
90998
  friend class ::CCExprResolve;
 
90999
  friend class ::CExprResolve;
 
91000
  friend class ::WinIfExists;
 
91001
  friend class ::WinImportHandler;
 
91002
  friend class ::WinMacros;
 
91003
  friend class ::WinAsm;
 
91004
  friend class ::WinDeclSpecs;
 
91005
  friend class ::WinMemberExplSpec;
 
91006
  friend class ::WinTypeKeywords;
 
91007
  friend class ::WinFriend;
 
91008
  friend class ::ExtAC;
 
91009
  friend class ::ExtACBuilderCoupling;
 
91010
  friend class ::ExtACSyntaxCoupling;
 
91011
  friend class ::ExtACTree;
 
91012
  friend class ::ExtACKeywords;
 
91013
  friend class ::ExtGnu;
 
91014
  friend class ::PragmaOnceUnitState;
 
91015
  friend class ::PragmaOnce;
 
91016
  friend class ::CMatchSyntax;
 
91017
 
 
91018
#line 4143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91019
 
 
91020
  CTree *sons[3]; // virtual, access, name
 
91021
 
 
91022
public:
 
91023
  /** Constructor.
 
91024
   *  \param v Optional keyword 'virtual'.
 
91025
   *  \param a The optional access specifier.
 
91026
   *  \param n The name of the base class. */
 
91027
  CT_BaseSpec (CTree *v, CTree *a, CTree *n) {
 
91028
    AddSon (sons[0], v); AddSon (sons[1], a); AddSon (sons[2], n); 
 
91029
  }
 
91030
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
91031
  static const char *NodeId ();
 
91032
  /** Get the name of the node. Can be compared with NodeId(). */
 
91033
  const char *NodeName () const { return NodeId (); }
 
91034
  /** Get the number of sons. */
 
91035
  int Sons () const { return CTree::Sons (sons, 3); }
 
91036
  /** Get the n-th son.
 
91037
   *  \param n The index of the son.
 
91038
   *  \return The n-th son or NULL. */
 
91039
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
91040
  /** Get the type of the access specifier (token type). */
 
91041
  int Access () const { return sons[1]->token ()->type (); }
 
91042
  /** The access specifier. */
 
91043
  CTree *AccessSpec () const { return sons[1]; }
 
91044
  /** Get the keyword 'virtual'. */
 
91045
  CTree *Virtual () const { return sons[0]; }
 
91046
  /** Get the name of the base class. */
 
91047
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
91048
  /** Replace a son.
 
91049
   *  \param old_son The son to replace.
 
91050
   *  \param new_son The new son. */
 
91051
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
91052
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
91053
  }
 
91054
public:
 
91055
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
91056
  const char *__attr_name (unsigned i) const {
 
91057
    static const char *names[] = { "sons" }; return names[i];
 
91058
  }
 
91059
  const void *__attr (unsigned __i) const {
 
91060
    switch (__i) { case 0: return &sons; default: return 0; }
 
91061
  }
 
91062
#line 4178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91063
};
 
91064
 
 
91065
/** \class CT_AccessDecl CTree.h Puma/CTree.h
 
91066
 *  Tree node representing a member access declaration.
 
91067
 *  Example: \code m_BaseClassMember; \endcode */
 
91068
 
 
91069
#line 91070 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91070
} // closed Puma
 
91071
class CCExprResolve;
 
91072
class CExprResolve;
 
91073
class WinIfExists;
 
91074
class WinImportHandler;
 
91075
class WinMacros;
 
91076
class WinAsm;
 
91077
class WinDeclSpecs;
 
91078
class WinMemberExplSpec;
 
91079
class WinTypeKeywords;
 
91080
class WinFriend;
 
91081
class ExtAC;
 
91082
class ExtACBuilderCoupling;
 
91083
class ExtACSyntaxCoupling;
 
91084
class ExtACTree;
 
91085
class ExtACKeywords;
 
91086
class ExtGnu;
 
91087
class PragmaOnceUnitState;
 
91088
class PragmaOnce;
 
91089
class CMatchSyntax;
 
91090
namespace Puma {
 
91091
 
 
91092
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91093
class CT_AccessDecl : public CT_Decl {
 
91094
#line 91095 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91095
  friend class ::CCExprResolve;
 
91096
  friend class ::CExprResolve;
 
91097
  friend class ::WinIfExists;
 
91098
  friend class ::WinImportHandler;
 
91099
  friend class ::WinMacros;
 
91100
  friend class ::WinAsm;
 
91101
  friend class ::WinDeclSpecs;
 
91102
  friend class ::WinMemberExplSpec;
 
91103
  friend class ::WinTypeKeywords;
 
91104
  friend class ::WinFriend;
 
91105
  friend class ::ExtAC;
 
91106
  friend class ::ExtACBuilderCoupling;
 
91107
  friend class ::ExtACSyntaxCoupling;
 
91108
  friend class ::ExtACTree;
 
91109
  friend class ::ExtACKeywords;
 
91110
  friend class ::ExtGnu;
 
91111
  friend class ::PragmaOnceUnitState;
 
91112
  friend class ::PragmaOnce;
 
91113
  friend class ::CMatchSyntax;
 
91114
 
 
91115
#line 4183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91116
 
 
91117
  CTree *sons[2]; // name, semi_colon
 
91118
 
 
91119
public:
 
91120
  /** Constructor.
 
91121
   *  \param n The name of the base class member.
 
91122
   *  \param s The trailing semi-colon. */
 
91123
  CT_AccessDecl (CTree *n, CTree *s) { AddSon (sons[0], n); AddSon (sons[1], s); }
 
91124
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
91125
  static const char *NodeId ();
 
91126
  /** Get the name of the node. Can be compared with NodeId(). */
 
91127
  const char *NodeName () const { return NodeId (); }
 
91128
  /** Get the number of sons. */
 
91129
  int Sons () const { return 2; }
 
91130
  /** Get the n-th son.
 
91131
   *  \param n The index of the son.
 
91132
   *  \return The n-th son or NULL. */
 
91133
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
91134
  /** Get the name of the base class member. */
 
91135
  CT_QualName *Member () const { return (CT_QualName*)sons[0]; }
 
91136
  /** Replace a son.
 
91137
   *  \param old_son The son to replace.
 
91138
   *  \param new_son The new son. */
 
91139
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
91140
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
91141
  }
 
91142
public:
 
91143
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
91144
  const char *__attr_name (unsigned i) const {
 
91145
    static const char *names[] = { "sons" }; return names[i];
 
91146
  }
 
91147
  const void *__attr (unsigned __i) const {
 
91148
    switch (__i) { case 0: return &sons; default: return 0; }
 
91149
  }
 
91150
#line 4209 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91151
};
 
91152
 
 
91153
/** \class CT_UsingDecl CTree.h Puma/CTree.h
 
91154
 *  Tree node representing a using declaration.
 
91155
 *  Example: \code using Base::m_Member; \endcode */
 
91156
 
 
91157
#line 91158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91158
} // closed Puma
 
91159
class CCExprResolve;
 
91160
class CExprResolve;
 
91161
class WinIfExists;
 
91162
class WinImportHandler;
 
91163
class WinMacros;
 
91164
class WinAsm;
 
91165
class WinDeclSpecs;
 
91166
class WinMemberExplSpec;
 
91167
class WinTypeKeywords;
 
91168
class WinFriend;
 
91169
class ExtAC;
 
91170
class ExtACBuilderCoupling;
 
91171
class ExtACSyntaxCoupling;
 
91172
class ExtACTree;
 
91173
class ExtACKeywords;
 
91174
class ExtGnu;
 
91175
class PragmaOnceUnitState;
 
91176
class PragmaOnce;
 
91177
class CMatchSyntax;
 
91178
namespace Puma {
 
91179
 
 
91180
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91181
class CT_UsingDecl : public CT_AccessDecl {
 
91182
#line 91183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91183
  friend class ::CCExprResolve;
 
91184
  friend class ::CExprResolve;
 
91185
  friend class ::WinIfExists;
 
91186
  friend class ::WinImportHandler;
 
91187
  friend class ::WinMacros;
 
91188
  friend class ::WinAsm;
 
91189
  friend class ::WinDeclSpecs;
 
91190
  friend class ::WinMemberExplSpec;
 
91191
  friend class ::WinTypeKeywords;
 
91192
  friend class ::WinFriend;
 
91193
  friend class ::ExtAC;
 
91194
  friend class ::ExtACBuilderCoupling;
 
91195
  friend class ::ExtACSyntaxCoupling;
 
91196
  friend class ::ExtACTree;
 
91197
  friend class ::ExtACKeywords;
 
91198
  friend class ::ExtGnu;
 
91199
  friend class ::PragmaOnceUnitState;
 
91200
  friend class ::PragmaOnce;
 
91201
  friend class ::CMatchSyntax;
 
91202
 
 
91203
#line 4214 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91204
 
 
91205
  CTree *sons[2]; // using, typename
 
91206
 
 
91207
public:
 
91208
  /** Constructor.
 
91209
   *  \param u The keyword 'using'.
 
91210
   *  \param n The name of the entity.
 
91211
   *  \param s The trailing semi-colon. */
 
91212
  CT_UsingDecl (CTree *u, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
91213
    AddSon (sons[0], u); AddSon (sons[1], 0); 
 
91214
  }
 
91215
  /** Constructor.
 
91216
   *  \param u The keyword 'using'.
 
91217
   *  \param t The keyword 'typename'.
 
91218
   *  \param n The name of the entity.
 
91219
   *  \param s The trailing semi-colon. */
 
91220
  CT_UsingDecl (CTree *u, CTree *t, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
91221
    AddSon (sons[0], u); AddSon (sons[1], t); 
 
91222
  }
 
91223
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
91224
  static const char *NodeId ();
 
91225
  /** Get the name of the node. Can be compared with NodeId(). */
 
91226
  const char *NodeName () const { return NodeId (); }
 
91227
  /** Get the number of sons. */
 
91228
  int Sons () const { return CTree::Sons (sons, 2) + CT_AccessDecl::Sons (); }
 
91229
  /** Get the n-th son.
 
91230
   *  \param n The index of the son.
 
91231
   *  \return The n-th son or NULL. */
 
91232
  CTree *Son (int n) const {
 
91233
    int num = CTree::Sons (sons, 2);
 
91234
    CTree *result = CTree::Son (sons, 2, n);
 
91235
    return result ? result : CT_AccessDecl::Son (n-num);
 
91236
  }
 
91237
  /** Get the keyword 'typename'. */
 
91238
  CTree *Typename () const { return sons[1]; }
 
91239
  /** Replace a son.
 
91240
   *  \param old_son The son to replace.
 
91241
   *  \param new_son The new son. */
 
91242
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
91243
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
91244
    CT_AccessDecl::ReplaceSon (old_son, new_son);
 
91245
  }
 
91246
public:
 
91247
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
91248
  const char *__attr_name (unsigned i) const {
 
91249
    static const char *names[] = { "sons" }; return names[i];
 
91250
  }
 
91251
  const void *__attr (unsigned __i) const {
 
91252
    switch (__i) { case 0: return &sons; default: return 0; }
 
91253
  }
 
91254
#line 4256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91255
};
 
91256
 
 
91257
/*****************************************************************************/
 
91258
/*                                                                           */
 
91259
/*                              Wildcards                                    */
 
91260
/*                                                                           */
 
91261
/*****************************************************************************/
 
91262
 
 
91263
/** \class CT_Any CTree.h Puma/CTree.h
 
91264
 *  Tree node representing a wildcard. */
 
91265
 
 
91266
#line 91267 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91267
} // closed Puma
 
91268
class CCExprResolve;
 
91269
class CExprResolve;
 
91270
class WinIfExists;
 
91271
class WinImportHandler;
 
91272
class WinMacros;
 
91273
class WinAsm;
 
91274
class WinDeclSpecs;
 
91275
class WinMemberExplSpec;
 
91276
class WinTypeKeywords;
 
91277
class WinFriend;
 
91278
class ExtAC;
 
91279
class ExtACBuilderCoupling;
 
91280
class ExtACSyntaxCoupling;
 
91281
class ExtACTree;
 
91282
class ExtACKeywords;
 
91283
class ExtGnu;
 
91284
class PragmaOnceUnitState;
 
91285
class PragmaOnce;
 
91286
class CMatchSyntax;
 
91287
namespace Puma {
 
91288
 
 
91289
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91290
class CT_Any : public CTree {
 
91291
#line 91292 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91292
  friend class ::CCExprResolve;
 
91293
  friend class ::CExprResolve;
 
91294
  friend class ::WinIfExists;
 
91295
  friend class ::WinImportHandler;
 
91296
  friend class ::WinMacros;
 
91297
  friend class ::WinAsm;
 
91298
  friend class ::WinDeclSpecs;
 
91299
  friend class ::WinMemberExplSpec;
 
91300
  friend class ::WinTypeKeywords;
 
91301
  friend class ::WinFriend;
 
91302
  friend class ::ExtAC;
 
91303
  friend class ::ExtACBuilderCoupling;
 
91304
  friend class ::ExtACSyntaxCoupling;
 
91305
  friend class ::ExtACTree;
 
91306
  friend class ::ExtACKeywords;
 
91307
  friend class ::ExtGnu;
 
91308
  friend class ::PragmaOnceUnitState;
 
91309
  friend class ::PragmaOnce;
 
91310
  friend class ::CMatchSyntax;
 
91311
 
 
91312
#line 4266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91313
 
 
91314
  CTree *sons[2]; // keyword, extension
 
91315
 
 
91316
public:
 
91317
  /** Constructor.
 
91318
   *  \param k The wildcard keyword.
 
91319
   *  \param e The extension. */
 
91320
  CT_Any (CTree *k, CTree *e = (CTree*)0) { AddSon (sons[0], k); AddSon (sons[1], e); }
 
91321
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
91322
  static const char *NodeId ();
 
91323
  /** Get the name of the node. Can be compared with NodeId(). */
 
91324
  const char *NodeName () const { return NodeId (); }
 
91325
  /** Get the number of sons. */
 
91326
  int Sons () const { return CTree::Sons (sons, 2); }
 
91327
  /** Get the n-th son.
 
91328
   *  \param n The index of the son.
 
91329
   *  \return The n-th son or NULL. */
 
91330
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
91331
  /** Replace a son.
 
91332
   *  \param old_son The son to replace.
 
91333
   *  \param new_son The new son. */
 
91334
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
91335
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
91336
  }
 
91337
  /** Get the type of the wildcard (token type). */
 
91338
  int AnyType () const { return sons[0]->token ()->type (); }
 
91339
  /** Get the extension. */
 
91340
  CT_AnyExtension *Extension () const { return (CT_AnyExtension*)sons[1]; }
 
91341
public:
 
91342
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
91343
  const char *__attr_name (unsigned i) const {
 
91344
    static const char *names[] = { "sons" }; return names[i];
 
91345
  }
 
91346
  const void *__attr (unsigned __i) const {
 
91347
    switch (__i) { case 0: return &sons; default: return 0; }
 
91348
  }
 
91349
#line 4294 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91350
};
 
91351
 
 
91352
/** \class CT_AnyList CTree.h Puma/CTree.h
 
91353
 *  Tree node representing a list wildcard. */
 
91354
 
 
91355
#line 91356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91356
} // closed Puma
 
91357
class CCExprResolve;
 
91358
class CExprResolve;
 
91359
class WinIfExists;
 
91360
class WinImportHandler;
 
91361
class WinMacros;
 
91362
class WinAsm;
 
91363
class WinDeclSpecs;
 
91364
class WinMemberExplSpec;
 
91365
class WinTypeKeywords;
 
91366
class WinFriend;
 
91367
class ExtAC;
 
91368
class ExtACBuilderCoupling;
 
91369
class ExtACSyntaxCoupling;
 
91370
class ExtACTree;
 
91371
class ExtACKeywords;
 
91372
class ExtGnu;
 
91373
class PragmaOnceUnitState;
 
91374
class PragmaOnce;
 
91375
class CMatchSyntax;
 
91376
namespace Puma {
 
91377
 
 
91378
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91379
class CT_AnyList : public CT_Any {
 
91380
#line 91381 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91381
  friend class ::CCExprResolve;
 
91382
  friend class ::CExprResolve;
 
91383
  friend class ::WinIfExists;
 
91384
  friend class ::WinImportHandler;
 
91385
  friend class ::WinMacros;
 
91386
  friend class ::WinAsm;
 
91387
  friend class ::WinDeclSpecs;
 
91388
  friend class ::WinMemberExplSpec;
 
91389
  friend class ::WinTypeKeywords;
 
91390
  friend class ::WinFriend;
 
91391
  friend class ::ExtAC;
 
91392
  friend class ::ExtACBuilderCoupling;
 
91393
  friend class ::ExtACSyntaxCoupling;
 
91394
  friend class ::ExtACTree;
 
91395
  friend class ::ExtACKeywords;
 
91396
  friend class ::ExtGnu;
 
91397
  friend class ::PragmaOnceUnitState;
 
91398
  friend class ::PragmaOnce;
 
91399
  friend class ::CMatchSyntax;
 
91400
 
 
91401
#line 4298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91402
 
 
91403
public:
 
91404
  /** Constructor.
 
91405
   *  \param k The wildcard keyword.
 
91406
   *  \param e The extension. */
 
91407
  CT_AnyList (CTree *k, CTree *e = (CTree*)0) : CT_Any (k, e) {}
 
91408
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
91409
  static const char *NodeId ();
 
91410
  /** Get the name of the node. Can be compared with NodeId(). */
 
91411
  const char *NodeName () const { return NodeId (); }
 
91412
public:
 
91413
  typedef AC::TLE __AttrTypes;
 
91414
  const char *__attr_name (unsigned i) const { return 0; }
 
91415
  const void *__attr (unsigned __i) const { return 0; }
 
91416
#line 4308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91417
};
 
91418
 
 
91419
/** \class CT_AnyExtension CTree.h Puma/CTree.h
 
91420
 *  Tree node representing a wildcard extension. */
 
91421
 
 
91422
#line 91423 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91423
} // closed Puma
 
91424
class CCExprResolve;
 
91425
class CExprResolve;
 
91426
class WinIfExists;
 
91427
class WinImportHandler;
 
91428
class WinMacros;
 
91429
class WinAsm;
 
91430
class WinDeclSpecs;
 
91431
class WinMemberExplSpec;
 
91432
class WinTypeKeywords;
 
91433
class WinFriend;
 
91434
class ExtAC;
 
91435
class ExtACBuilderCoupling;
 
91436
class ExtACSyntaxCoupling;
 
91437
class ExtACTree;
 
91438
class ExtACKeywords;
 
91439
class ExtGnu;
 
91440
class PragmaOnceUnitState;
 
91441
class PragmaOnce;
 
91442
class CMatchSyntax;
 
91443
namespace Puma {
 
91444
 
 
91445
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91446
class CT_AnyExtension : public CTree, public CSemValue {
 
91447
#line 91448 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91448
  friend class ::CCExprResolve;
 
91449
  friend class ::CExprResolve;
 
91450
  friend class ::WinIfExists;
 
91451
  friend class ::WinImportHandler;
 
91452
  friend class ::WinMacros;
 
91453
  friend class ::WinAsm;
 
91454
  friend class ::WinDeclSpecs;
 
91455
  friend class ::WinMemberExplSpec;
 
91456
  friend class ::WinTypeKeywords;
 
91457
  friend class ::WinFriend;
 
91458
  friend class ::ExtAC;
 
91459
  friend class ::ExtACBuilderCoupling;
 
91460
  friend class ::ExtACSyntaxCoupling;
 
91461
  friend class ::ExtACTree;
 
91462
  friend class ::ExtACKeywords;
 
91463
  friend class ::ExtGnu;
 
91464
  friend class ::PragmaOnceUnitState;
 
91465
  friend class ::PragmaOnce;
 
91466
  friend class ::CMatchSyntax;
 
91467
 
 
91468
#line 4312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91469
 
 
91470
  CTree *sons[5]; // open, string, comma, cond, close
 
91471
 
 
91472
public:
 
91473
  /** Constructor.
 
91474
   *  \param o Left parenthesis before the extension. 
 
91475
   *  \param n The name of the extension.
 
91476
   *  \param co The comma between the name and the condition. 
 
91477
   *  \param c The condition.
 
91478
   *  \param cr Right parenthesis behind the extension. */
 
91479
  CT_AnyExtension (CTree *o, CTree *n, CTree *co, CTree *c, CTree *cr) {
 
91480
    AddSon (sons[0], o); AddSon (sons[1], n); AddSon (sons[2], co); 
 
91481
    AddSon (sons[3], c); AddSon (sons[4], cr); 
 
91482
  }
 
91483
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
91484
  static const char *NodeId ();
 
91485
  /** Get the name of the node. Can be compared with NodeId(). */
 
91486
  const char *NodeName () const { return NodeId (); }
 
91487
  /** Get the number of sons. */
 
91488
  int Sons () const { return CTree::Sons (sons, 5); }
 
91489
  /** Get the n-th son.
 
91490
   *  \param n The index of the son.
 
91491
   *  \return The n-th son or NULL. */
 
91492
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
91493
  /** Replace a son.
 
91494
   *  \param old_son The son to replace.
 
91495
   *  \param new_son The new son. */
 
91496
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
91497
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
91498
  }
 
91499
  /** Get the condition. */
 
91500
  CTree *Condition () const { return sons[3]; }
 
91501
  /** Get the name string. */
 
91502
  CT_Token *String () const { return (CT_Token*)sons[1]; }
 
91503
  /** Get the extension name. */
 
91504
  const char *Name () const { return value ? value->StrLiteral ()->String () : (const char*)0; }
 
91505
  /** Get the value of the extension (the name). */
 
91506
  CExprValue *Value () const { return value; }
 
91507
  /** Get the semantic value information object. */
 
91508
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
91509
public:
 
91510
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
91511
  const char *__attr_name (unsigned i) const {
 
91512
    static const char *names[] = { "sons" }; return names[i];
 
91513
  }
 
91514
  const void *__attr (unsigned __i) const {
 
91515
    switch (__i) { case 0: return &sons; default: return 0; }
 
91516
  }
 
91517
#line 4352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91518
};
 
91519
 
 
91520
/** \class CT_AnyCondition CTree.h Puma/CTree.h
 
91521
 *  Tree node representing the condition of a wildcard. */
 
91522
 
 
91523
#line 91524 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91524
} // closed Puma
 
91525
class CCExprResolve;
 
91526
class CExprResolve;
 
91527
class WinIfExists;
 
91528
class WinImportHandler;
 
91529
class WinMacros;
 
91530
class WinAsm;
 
91531
class WinDeclSpecs;
 
91532
class WinMemberExplSpec;
 
91533
class WinTypeKeywords;
 
91534
class WinFriend;
 
91535
class ExtAC;
 
91536
class ExtACBuilderCoupling;
 
91537
class ExtACSyntaxCoupling;
 
91538
class ExtACTree;
 
91539
class ExtACKeywords;
 
91540
class ExtGnu;
 
91541
class PragmaOnceUnitState;
 
91542
class PragmaOnce;
 
91543
class CMatchSyntax;
 
91544
namespace Puma {
 
91545
 
 
91546
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91547
class CT_AnyCondition : public CTree {
 
91548
#line 91549 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91549
  friend class ::CCExprResolve;
 
91550
  friend class ::CExprResolve;
 
91551
  friend class ::WinIfExists;
 
91552
  friend class ::WinImportHandler;
 
91553
  friend class ::WinMacros;
 
91554
  friend class ::WinAsm;
 
91555
  friend class ::WinDeclSpecs;
 
91556
  friend class ::WinMemberExplSpec;
 
91557
  friend class ::WinTypeKeywords;
 
91558
  friend class ::WinFriend;
 
91559
  friend class ::ExtAC;
 
91560
  friend class ::ExtACBuilderCoupling;
 
91561
  friend class ::ExtACSyntaxCoupling;
 
91562
  friend class ::ExtACTree;
 
91563
  friend class ::ExtACKeywords;
 
91564
  friend class ::ExtGnu;
 
91565
  friend class ::PragmaOnceUnitState;
 
91566
  friend class ::PragmaOnce;
 
91567
  friend class ::CMatchSyntax;
 
91568
 
 
91569
#line 4356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91570
 
 
91571
  CTree *sons[3]; // arg1, arg2, arg3
 
91572
 
 
91573
public:
 
91574
  /** Constructor.
 
91575
   *  \param a1 The first argument.
 
91576
   *  \param a2 The optional second argument.
 
91577
   *  \param a3 The optional third argument. */
 
91578
  CT_AnyCondition (CTree *a1, CTree *a2 = (CTree*)0, CTree *a3 = (CTree*)0) {
 
91579
    AddSon (sons[0], a1); AddSon (sons[1], a2); AddSon (sons[2], a3); 
 
91580
  }
 
91581
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
91582
  static const char *NodeId ();
 
91583
  /** Get the name of the node. Can be compared with NodeId(). */
 
91584
  const char *NodeName () const { return NodeId (); }
 
91585
  /** Get the number of sons. */
 
91586
  int Sons () const { return CTree::Sons (sons, 3); }
 
91587
  /** Get the n-th son.
 
91588
   *  \param n The index of the son.
 
91589
   *  \return The n-th son or NULL. */
 
91590
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
91591
  /** Replace a son.
 
91592
   *  \param old_son The son to replace.
 
91593
   *  \param new_son The new son. */
 
91594
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
91595
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
91596
  }
 
91597
public:
 
91598
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
91599
  const char *__attr_name (unsigned i) const {
 
91600
    static const char *names[] = { "sons" }; return names[i];
 
91601
  }
 
91602
  const void *__attr (unsigned __i) const {
 
91603
    switch (__i) { case 0: return &sons; default: return 0; }
 
91604
  }
 
91605
#line 4383 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTree.h"
 
91606
};
 
91607
 
 
91608
 
 
91609
} // namespace Puma
 
91610
 
 
91611
#endif /* __CTree_h__ */
 
91612
 
 
91613
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91614
namespace Puma {
 
91615
 
 
91616
 
 
91617
class ErrorSink;
 
91618
 
 
91619
 
 
91620
/** \class CSemDeclSpecs CSemDeclSpecs.h Puma/CSemDeclSpecs.h
 
91621
 *  Class for analysing a sequence of declaration specifiers.
 
91622
 *  The result of the analysis is a type, i.e. the type of 
 
91623
 *  the declared entity (function, object, etc). */
 
91624
 
 
91625
#line 91626 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91626
} // closed Puma
 
91627
class CCExprResolve;
 
91628
class CExprResolve;
 
91629
class WinIfExists;
 
91630
class WinImportHandler;
 
91631
class WinMacros;
 
91632
class WinAsm;
 
91633
class WinDeclSpecs;
 
91634
class WinMemberExplSpec;
 
91635
class WinTypeKeywords;
 
91636
class WinFriend;
 
91637
class ExtAC;
 
91638
class ExtACBuilderCoupling;
 
91639
class ExtACSyntaxCoupling;
 
91640
class ExtACTree;
 
91641
class ExtACKeywords;
 
91642
class ExtGnu;
 
91643
class PragmaOnceUnitState;
 
91644
class PragmaOnce;
 
91645
class CMatchSyntax;
 
91646
namespace Puma {
 
91647
 
 
91648
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91649
 
 
91650
#line 91651 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91651
} // closed Puma
 
91652
 
 
91653
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
91654
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
91655
 
 
91656
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnuCSemDeclSpecs.ah"
 
91657
// This file is part of PUMA.
 
91658
// Copyright (C) 1999-2003  The PUMA developer team.
 
91659
//                                                                
 
91660
// This program is free software;  you can redistribute it and/or 
 
91661
// modify it under the terms of the GNU General Public License as 
 
91662
// published by the Free Software Foundation; either version 2 of 
 
91663
// the License, or (at your option) any later version.            
 
91664
//                                                                
 
91665
// This program is distributed in the hope that it will be useful,
 
91666
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
91667
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
91668
// GNU General Public License for more details.                   
 
91669
//                                                                
 
91670
// You should have received a copy of the GNU General Public      
 
91671
// License along with this program; if not, write to the Free     
 
91672
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
91673
// MA  02111-1307  USA                                            
 
91674
 
 
91675
#ifndef __ext_gnu_csem_decl_specs_ah__
 
91676
#define __ext_gnu_csem_decl_specs_ah__
 
91677
 
 
91678
 
 
91679
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnuCSemDeclSpecs.ah"
 
91680
namespace Puma {
 
91681
  
 
91682
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnuCSemDeclSpecs.ah"
 
91683
 
 
91684
}
 
91685
 
 
91686
#endif /* __ext_gnu_csem_decl_specs_ah__ */
 
91687
 
 
91688
#line 8 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91689
#endif
 
91690
namespace Puma {
 
91691
 
 
91692
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91693
class CSemDeclSpecs {
 
91694
#line 91695 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91695
  friend class ::CCExprResolve;
 
91696
  friend class ::CExprResolve;
 
91697
  friend class ::WinIfExists;
 
91698
  friend class ::WinImportHandler;
 
91699
  friend class ::WinMacros;
 
91700
  friend class ::WinAsm;
 
91701
  friend class ::WinDeclSpecs;
 
91702
  friend class ::WinMemberExplSpec;
 
91703
  friend class ::WinTypeKeywords;
 
91704
  friend class ::WinFriend;
 
91705
  friend class ::ExtAC;
 
91706
  friend class ::ExtACBuilderCoupling;
 
91707
  friend class ::ExtACSyntaxCoupling;
 
91708
  friend class ::ExtACTree;
 
91709
  friend class ::ExtACKeywords;
 
91710
  friend class ::ExtGnu;
 
91711
  friend class ::PragmaOnceUnitState;
 
91712
  friend class ::PragmaOnce;
 
91713
  friend class ::CMatchSyntax;
 
91714
 
 
91715
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91716
 
 
91717
  // initialization context
 
91718
  ErrorSink *_err;
 
91719
  CT_DeclSpecSeq *_dss;
 
91720
  
 
91721
  // analysis results:
 
91722
  // -----------------
 
91723
  // counters
 
91724
  int _names;
 
91725
  int _class_specs;
 
91726
  int _union_specs;
 
91727
  int _enum_specs;
 
91728
  // nodes/objects
 
91729
  int _prim_map[CT_PrimDeclSpec::NumTypes];
 
91730
  Token *_prim_token[CT_PrimDeclSpec::NumTypes];
 
91731
  CT_SimpleName *_name;
 
91732
 
 
91733
  // final results after all checks:
 
91734
  // -------------------------------
 
91735
  CTypeInfo *_type;
 
91736
  bool _def_class, _def_union, _def_enum;
 
91737
 
 
91738
  // analyses the syntax tree nodes of the decl-spec sequence. Return false
 
91739
  // if an error was detected. 
 
91740
  
 
91741
#line 91742 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91742
public: __attribute__((always_inline)) inline bool __exec_old_analyze_seq();
 
91743
private:
 
91744
 
 
91745
#line 62 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91746
bool analyze_seq ();
 
91747
  
 
91748
  // analyzes the current declaration specifier in the sequence and set some
 
91749
  // attributes according to the result. Returns false if the specifier type
 
91750
  // is unknown.
 
91751
  
 
91752
#line 91753 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91753
public: __attribute__((always_inline)) inline bool __exec_old_analyze(::Puma::CTree * spec);
 
91754
private:
 
91755
 
 
91756
#line 67 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91757
bool analyze (CTree *spec);
 
91758
 
 
91759
  // check functions (used after analyse_seq()
 
91760
  bool check_prim_decl_specs (bool &have_type);
 
91761
  
 
91762
#line 91763 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91763
public: __attribute__((always_inline)) inline bool __exec_old_check_complex_decl_specs(bool & have_type);
 
91764
private:
 
91765
 
 
91766
#line 71 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91767
bool check_complex_decl_specs (bool &have_type);  
 
91768
  bool check_storage_class ();
 
91769
  
 
91770
#line 91771 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91771
public: __attribute__((always_inline)) inline bool __exec_old_check_signed_unsigned();
 
91772
private:
 
91773
 
 
91774
#line 73 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91775
bool check_signed_unsigned ();
 
91776
  bool check_long_short (); 
 
91777
  
 
91778
#line 91779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91779
public: __attribute__((always_inline)) inline bool __exec_old_check_finally();
 
91780
private:
 
91781
 
 
91782
#line 75 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91783
bool check_finally ();
 
91784
  
 
91785
  // type creation code
 
91786
  
 
91787
#line 91788 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91788
public: __attribute__((always_inline)) inline ::Puma::CTypeInfo * __exec_old_create_type();
 
91789
private:
 
91790
 
 
91791
#line 78 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91792
CTypeInfo *create_type ();
 
91793
  CTypeInfo *create_qualifiers (CTypeInfo *type);
 
91794
  
 
91795
public:
 
91796
  /** Constructor.
 
91797
   *  \param es The error stream on which to report errors.
 
91798
   *  \param dss The declaration specifier sequence to be analysed.
 
91799
   *  \param support_implicit_int True if implicit type int shall be supported. */
 
91800
  CSemDeclSpecs (ErrorSink *es, CT_DeclSpecSeq *dss, bool support_implicit_int = false);
 
91801
  /** Destructor. Destroys the created type. */
 
91802
  ~CSemDeclSpecs ();
 
91803
 
 
91804
  /** Get a copy of the resulting type. 
 
91805
   *  \return The copy of the type. Has to be destroyed by the caller. */
 
91806
  CTypeInfo *make_type () const;
 
91807
  /** Get the declaration specifier sequence. */
 
91808
  CT_DeclSpecSeq *DeclSpecSeq () const;
 
91809
 
 
91810
  /** Check if the given declaration specifier was declared.
 
91811
   *  \param dst The declaration specifier type. */
 
91812
  bool declared (CT_PrimDeclSpec::Type dst) const;
 
91813
  /** Check if a class was defined in the declaration specifier sequence. */
 
91814
  bool defClass () const;
 
91815
  /** Check if an union was defined in the declaration specifier sequence. */
 
91816
  bool defUnion () const;
 
91817
  /** Check if an enumeration was defined in the declaration specifier sequence. */
 
91818
  bool defEnum () const;
 
91819
   private:
 
91820
  typedef CSemDeclSpecs ExtGnuCSemDeclSpecs;
 
91821
 
 
91822
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnuCSemDeclSpecs.ah"
 
91823
 public :
 
91824
int _typeofs ;
 
91825
CT_GnuTypeof * _typeof_node ;public:
 
91826
  typedef AC::TL<Puma::ErrorSink *,AC::TL<Puma::CT_DeclSpecSeq *,AC::TL<int,AC::TL<int,AC::TL<int,AC::TL<int,AC::TL<int [30],AC::TL<Puma::Token * [30],AC::TL<Puma::CT_SimpleName *,AC::TL<Puma::CTypeInfo *,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<int,AC::TL<Puma::CT_GnuTypeof *,AC::TLE > > > > > > > > > > > > > > > __AttrTypes;
 
91827
  const char *__attr_name (unsigned i) const {
 
91828
    static const char *names[] = { "_err", "_dss", "_names", "_class_specs", "_union_specs", "_enum_specs", "_prim_map", "_prim_token", "_name", "_type", "_def_class", "_def_union", "_def_enum", "_typeofs", "_typeof_node" }; return names[i];
 
91829
  }
 
91830
  const void *__attr (unsigned __i) const {
 
91831
    switch (__i) { case 0: return &_err; case 1: return &_dss; case 2: return &_names; case 3: return &_class_specs; case 4: return &_union_specs; case 5: return &_enum_specs; case 6: return &_prim_map; case 7: return &_prim_token; case 8: return &_name; case 9: return &_type; case 10: return &_def_class; case 11: return &_def_union; case 12: return &_def_enum; case 13: return &_typeofs; case 14: return &_typeof_node; default: return 0; }
 
91832
  }
 
91833
#line 105 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
91834
};
 
91835
 
 
91836
inline CSemDeclSpecs::~CSemDeclSpecs () 
 
91837
 { if (_type) CTypeInfo::Destroy (_type); }
 
91838
  
 
91839
inline CTypeInfo *CSemDeclSpecs::make_type () const 
 
91840
 { return CTypeInfo::Duplicate (_type); }
 
91841
inline CT_DeclSpecSeq *CSemDeclSpecs::DeclSpecSeq () const 
 
91842
 { return _dss; }
 
91843
 
 
91844
inline bool CSemDeclSpecs::declared (CT_PrimDeclSpec::Type as) const 
 
91845
 { return _prim_map[as] > 0; }
 
91846
 
 
91847
inline bool CSemDeclSpecs::defClass () const
 
91848
 { return _def_class; }
 
91849
inline bool CSemDeclSpecs::defUnion () const
 
91850
 { return _def_union; }
 
91851
inline bool CSemDeclSpecs::defEnum () const
 
91852
 { return _def_enum; }
 
91853
 
 
91854
 
 
91855
} // namespace Puma
 
91856
 
 
91857
#endif /* __c_sem_decl_specs_h__ */
 
91858
 
 
91859
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91860
namespace Puma {
 
91861
  class CCSyntax;
 
91862
  class CSyntax;
 
91863
}
 
91864
 
 
91865
 
 
91866
namespace Puma {
 
91867
  
 
91868
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91869
 
 
91870
  
 
91871
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91872
 
 
91873
  
 
91874
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91875
 
 
91876
  
 
91877
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91878
 
 
91879
  
 
91880
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91881
 
 
91882
  
 
91883
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91884
 
 
91885
  
 
91886
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91887
 
 
91888
  
 
91889
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91890
 
 
91891
  
 
91892
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91893
 
 
91894
  
 
91895
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91896
 
 
91897
}
 
91898
 
 
91899
 
 
91900
#line 91901 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91901
class CCExprResolve;
 
91902
class CExprResolve;
 
91903
class WinIfExists;
 
91904
class WinImportHandler;
 
91905
class WinMacros;
 
91906
class WinAsm;
 
91907
class WinDeclSpecs;
 
91908
class WinMemberExplSpec;
 
91909
class WinTypeKeywords;
 
91910
class WinFriend;
 
91911
class ExtAC;
 
91912
class ExtACBuilderCoupling;
 
91913
class ExtACSyntaxCoupling;
 
91914
class ExtACTree;
 
91915
class ExtACKeywords;
 
91916
class PragmaOnceUnitState;
 
91917
class PragmaOnce;
 
91918
class CMatchSyntax;
 
91919
 
 
91920
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91921
class ExtGnu {
 
91922
#line 91923 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91923
 
 
91924
public:
 
91925
  static ExtGnu *aspectof () {
 
91926
    static ExtGnu __instance;
 
91927
    return &__instance;
 
91928
  }
 
91929
  static ExtGnu *aspectOf () {
 
91930
    return aspectof ();
 
91931
  }
 
91932
private:
 
91933
 
 
91934
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91935
 
 
91936
#line 91937 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
91937
  friend class ::CCExprResolve;
 
91938
  friend class ::CExprResolve;
 
91939
  friend class ::WinIfExists;
 
91940
  friend class ::WinImportHandler;
 
91941
  friend class ::WinMacros;
 
91942
  friend class ::WinAsm;
 
91943
  friend class ::WinDeclSpecs;
 
91944
  friend class ::WinMemberExplSpec;
 
91945
  friend class ::WinTypeKeywords;
 
91946
  friend class ::WinFriend;
 
91947
  friend class ::ExtAC;
 
91948
  friend class ::ExtACBuilderCoupling;
 
91949
  friend class ::ExtACSyntaxCoupling;
 
91950
  friend class ::ExtACTree;
 
91951
  friend class ::ExtACKeywords;
 
91952
  friend class ::PragmaOnceUnitState;
 
91953
  friend class ::PragmaOnce;
 
91954
  friend class ::CMatchSyntax;
 
91955
 
 
91956
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91957
 
 
91958
 
 
91959
  // flags to enable/disable certain Gnu features
 
91960
  bool extended_asm;
 
91961
  bool extended_cv_qual;
 
91962
  bool gnu_builtins;
 
91963
  bool std_hack;
 
91964
  bool typeof_keyword;
 
91965
  bool statement_exprs;
 
91966
  bool labels_as_values;
 
91967
 
 
91968
  // pointcut definitions
 
91969
  
 
91970
#line 63 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91971
 
 
91972
  
 
91973
#line 64 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91974
 
 
91975
  
 
91976
#line 65 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91977
 
 
91978
  
 
91979
#line 66 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91980
 
 
91981
  
 
91982
#line 67 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91983
 
 
91984
  
 
91985
#line 68 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91986
 
 
91987
 
 
91988
  // ----------------------------------------------------
 
91989
  // the Gnu ASM syntax
 
91990
  // ----------------------------------------------------
 
91991
 
 
91992
  // structural extensions
 
91993
  
 
91994
#line 75 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91995
 
 
91996
  
 
91997
#line 76 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
91998
 
 
91999
 
 
92000
  // extended asm statement
 
92001
  
 
92002
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92003
 
 
92004
public: template<class JoinPoint> void __a0_around 
 
92005
#line 80 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92006
 
 
92007
#line 80 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92008
(JoinPoint *tjp, Puma::CSyntax *syn)
 
92009
#line 80 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92010
 {
 
92011
#line 92012 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92012
 
 
92013
  typedef typename JoinPoint::That __JP_That;
 
92014
  typedef typename JoinPoint::Target __JP_Target;
 
92015
  typedef typename JoinPoint::Result __JP_Result;
 
92016
 
 
92017
#line 80 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92018
 
 
92019
    if (extended_asm)
 
92020
      *tjp->result () = ((__JP_That
 
92021
#line 82 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92022
*)syn)->gnu_asm_def ();
 
92023
    else
 
92024
      tjp->proceed ();
 
92025
  }
 
92026
#line 92027 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92027
 
 
92028
private:
 
92029
 
 
92030
#line 85 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92031
 
 
92032
 
 
92033
  // extended asm init declarator syntax
 
92034
  
 
92035
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92036
 
 
92037
public: template<class JoinPoint> void __a1_after 
 
92038
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92039
 
 
92040
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92041
(JoinPoint *tjp, Puma::CSyntax *syn)
 
92042
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92043
 {
 
92044
#line 92045 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92045
 
 
92046
  typedef typename JoinPoint::That __JP_That;
 
92047
  typedef typename JoinPoint::Target __JP_Target;
 
92048
  typedef typename JoinPoint::Result __JP_Result;
 
92049
 
 
92050
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92051
 
 
92052
    Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
92053
    if (extended_asm && !result &&
 
92054
        ((__JP_That
 
92055
#line 93 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92056
*)syn)->look_ahead (Puma::TOK_ASM))
 
92057
      result = ((__JP_That
 
92058
#line 94 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92059
*)syn)->gnu_asm_spec ();
 
92060
  }
 
92061
#line 92062 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92062
 
 
92063
private:
 
92064
 
 
92065
#line 95 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92066
 
 
92067
 
 
92068
//   // asm declaration specifiers
 
92069
//   advice within (derived (syntax ())) &&
 
92070
//          execution ("% Puma::%::init_simple_type_spec()") : after () {
 
92071
//     if (extended_asm)
 
92072
//       tjp->that ()->_simple_type_spec_1.set (Puma::TOK_ASM);
 
92073
//   }
 
92074
//   advice execution ("% Puma::CSyntax::rule_simple_type_spec()") : after () {
 
92075
//     Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
92076
//     if (extended_asm && !result && tjp->that ()->look_ahead (Puma::TOK_ASM) &&
 
92077
//         tjp->that ()->parse (&JoinPoint::That::gnu_asm_spec))
 
92078
//       result = tjp->that ()->builder ().gnu_asm_spec ();
 
92079
//   }
 
92080
//   advice execution ("% Puma::CCSyntax::rule_simple_type_spec()") : after () {
 
92081
//     Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
92082
//     if (extended_asm && !result && tjp->that ()->look_ahead (Puma::TOK_ASM) &&
 
92083
//         tjp->that ()->parse (&JoinPoint::That::gnu_asm_spec))
 
92084
//       result = tjp->that ()->semantic ().simple_type_spec ();
 
92085
//   }
 
92086
//   // make the analysis function aware of 'asm(...)'
 
92087
//   advice execution("bool Puma::%::analyze(...)") && within (csemdeclspecs ()) &&
 
92088
//          args (spec): after (Puma::CTree *spec) {
 
92089
//     bool &result = *tjp->result ();
 
92090
//     if (!result && spec->NodeName () == Puma::CT_GnuAsmSpec::NodeId ())
 
92091
//       result = true;
 
92092
//   }
 
92093
 
 
92094
  // ----------------------------------------------------
 
92095
  // the 'restrict' keyword
 
92096
  // ----------------------------------------------------
 
92097
 
 
92098
  // extended cv qualifier
 
92099
  
 
92100
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92101
 
 
92102
public: template<class JoinPoint> void __a2_after 
 
92103
#line 128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92104
 
 
92105
#line 128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92106
(JoinPoint *tjp)
 
92107
#line 128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92108
 {
 
92109
#line 92110 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92110
 
 
92111
  typedef typename JoinPoint::That __JP_That;
 
92112
  typedef typename JoinPoint::Target __JP_Target;
 
92113
  typedef typename JoinPoint::Result __JP_Result;
 
92114
 
 
92115
#line 128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92116
 
 
92117
    if (extended_cv_qual)
 
92118
      tjp->that ()->_cv_qual_1.set (Puma::TOK_RESTRICT);
 
92119
  }
 
92120
#line 92121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92121
 
 
92122
private:
 
92123
 
 
92124
#line 131 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92125
 
 
92126
 
 
92127
  // -------------------------
 
92128
  // Gnu statement expressions 
 
92129
  // -------------------------
 
92130
 
 
92131
  // pointcut definitions
 
92132
  
 
92133
#line 138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92134
 
 
92135
  
 
92136
#line 139 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92137
 
 
92138
 
 
92139
  // structural extensions
 
92140
  
 
92141
#line 142 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92142
 
 
92143
  
 
92144
#line 143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92145
 
 
92146
  
 
92147
#line 144 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92148
 
 
92149
 
 
92150
  // extended primary expression syntax
 
92151
  
 
92152
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92153
 
 
92154
public: template<class JoinPoint> void __a3_around 
 
92155
#line 148 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92156
 
 
92157
#line 148 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92158
(JoinPoint *tjp)
 
92159
#line 148 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92160
 {
 
92161
#line 92162 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92162
 
 
92163
  typedef typename JoinPoint::That __JP_That;
 
92164
  typedef typename JoinPoint::Target __JP_Target;
 
92165
  typedef typename JoinPoint::Result __JP_Result;
 
92166
 
 
92167
#line 148 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92168
 
 
92169
    __JP_That
 
92170
#line 149 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92171
 *syntax = tjp->that ();
 
92172
    if (statement_exprs &&
 
92173
        ((__JP_That
 
92174
#line 151 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92175
*)syntax)->look_ahead (Puma::TOK_OPEN_ROUND) &&
 
92176
        ((__JP_That
 
92177
#line 152 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92178
*)syntax)->look_ahead (Puma::TOK_OPEN_CURLY, 2)) {
 
92179
      Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
92180
      ((__JP_That
 
92181
#line 154 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92182
*)syntax)->consume (); // skip the Puma::TOK_OPEN_ROUND
 
92183
      result =
 
92184
        (((__JP_That
 
92185
#line 156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92186
*)syntax)->parse (&__JP_That
 
92187
#line 156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92188
::cmpd_stmt) &&
 
92189
        ((__JP_That
 
92190
#line 157 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92191
*)syntax)->parse (Puma::TOK_CLOSE_ROUND)) ?
 
92192
        ((__JP_That
 
92193
#line 158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92194
*)syntax)->builder().gnu_statement_expr () : 0;
 
92195
    }
 
92196
    else
 
92197
      tjp->proceed ();
 
92198
  }
 
92199
#line 92200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92200
 
 
92201
private:
 
92202
 
 
92203
#line 162 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92204
 
 
92205
 
 
92206
  // ----------------------------------------
 
92207
  // support for "labels as values" extension 
 
92208
  // ----------------------------------------
 
92209
 
 
92210
  // extended goto syntax
 
92211
  
 
92212
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92213
 
 
92214
public: template<class JoinPoint> void __a4_around 
 
92215
#line 170 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92216
 
 
92217
#line 170 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92218
(JoinPoint *tjp)
 
92219
#line 170 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92220
 {
 
92221
#line 92222 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92222
 
 
92223
  typedef typename JoinPoint::That __JP_That;
 
92224
  typedef typename JoinPoint::Target __JP_Target;
 
92225
  typedef typename JoinPoint::Result __JP_Result;
 
92226
 
 
92227
#line 170 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92228
 
 
92229
    __JP_That
 
92230
#line 171 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92231
 *syntax = tjp->that ();
 
92232
    if (labels_as_values && 
 
92233
        syntax->look_ahead (Puma::TOK_GOTO) &&
 
92234
        syntax->look_ahead (Puma::TOK_MUL, 2)) {
 
92235
      syntax->consume (); // skip the 'goto' keyword
 
92236
      Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
92237
      result = (syntax->parse (&__JP_That
 
92238
#line 177 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92239
::expr) &&
 
92240
                syntax->parse (Puma::TOK_SEMI_COLON)) ?
 
92241
               syntax->builder().jump_stmt () : 0;
 
92242
    }
 
92243
    else
 
92244
      tjp->proceed ();
 
92245
  }
 
92246
#line 92247 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92247
 
 
92248
private:
 
92249
 
 
92250
#line 183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92251
 
 
92252
 
 
92253
  // the address of a label
 
92254
    
 
92255
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92256
 
 
92257
public: template<class JoinPoint> void __a5_around 
 
92258
#line 187 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92259
 
 
92260
#line 187 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92261
(JoinPoint *tjp)
 
92262
#line 187 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92263
 {
 
92264
#line 92265 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92265
 
 
92266
  typedef typename JoinPoint::That __JP_That;
 
92267
  typedef typename JoinPoint::Target __JP_Target;
 
92268
  typedef typename JoinPoint::Result __JP_Result;
 
92269
 
 
92270
#line 187 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92271
 
 
92272
      __JP_That
 
92273
#line 188 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92274
 *syntax = tjp->that ();
 
92275
      if (labels_as_values && 
 
92276
          syntax->look_ahead (Puma::TOK_AND_AND)) {
 
92277
        syntax->consume (); // consume the '&&' token, already checked
 
92278
        Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
92279
        result = syntax->identifier () ? syntax->builder().unary_expr () : 0;
 
92280
      }
 
92281
      else
 
92282
        tjp->proceed ();
 
92283
    }
 
92284
#line 92285 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92285
 
 
92286
private:
 
92287
 
 
92288
#line 197 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92289
 
 
92290
 
 
92291
  // extended semantic analysis
 
92292
  
 
92293
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92294
 
 
92295
public: template<class JoinPoint> void __a6_around 
 
92296
#line 202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92297
 
 
92298
#line 202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92299
(JoinPoint *tjp, Puma::CTree *tree)
 
92300
#line 202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92301
 {
 
92302
#line 92303 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92303
 
 
92304
  typedef typename JoinPoint::That __JP_That;
 
92305
  typedef typename JoinPoint::Target __JP_Target;
 
92306
  typedef typename JoinPoint::Result __JP_Result;
 
92307
 
 
92308
#line 202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92309
 
 
92310
    if (tree->NodeName () == Puma::CT_SimpleName::NodeId ())
 
92311
      tjp->proceed ();
 
92312
    else if (tree->NodeName () == Puma::CT_DerefExpr::NodeId ())
 
92313
      tjp->that ()->resolveExpr (((Puma::CT_DerefExpr*)tree)->Expr (), tree);
 
92314
  }
 
92315
#line 92316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92316
 
 
92317
private:
 
92318
 
 
92319
#line 207 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92320
 
 
92321
 
 
92322
  // label address has type void*
 
92323
  
 
92324
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92325
 
 
92326
public: template<class JoinPoint> void __a7_around 
 
92327
#line 211 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92328
 
 
92329
#line 211 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92330
(JoinPoint *tjp)
 
92331
#line 211 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92332
 {
 
92333
#line 92334 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92334
 
 
92335
  typedef typename JoinPoint::That __JP_That;
 
92336
  typedef typename JoinPoint::Target __JP_Target;
 
92337
  typedef typename JoinPoint::Result __JP_Result;
 
92338
 
 
92339
#line 211 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92340
 
 
92341
      int oper = (*tjp->template arg<0>())->token ()->type ();
 
92342
      if (oper == Puma::TOK_AND_AND) {
 
92343
        // TODO: It would be better to whether the label really exists, but
 
92344
        //       at the moment I don't see a way how to do that.
 
92345
        //       (In the gcc extension the label can be defined anywhere in
 
92346
        //        the translation unit!)
 
92347
        //       It is also not possible to use the error handling macros here.
 
92348
        Puma::CTypeInfo *t = new Puma::CTypePointer (&Puma::CTYPE_VOID);
 
92349
        (*tjp->template arg<0>())->setType (t);
 
92350
        *tjp->result () = t;
 
92351
      }
 
92352
      else
 
92353
        tjp->proceed ();
 
92354
  }
 
92355
#line 92356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92356
 
 
92357
private:
 
92358
 
 
92359
#line 225 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92360
 
 
92361
 
 
92362
  // ----------------------
 
92363
  // TYPEOF keyword support
 
92364
  // ----------------------
 
92365
 
 
92366
  // structural extensions
 
92367
  
 
92368
#line 232 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92369
 
 
92370
  
 
92371
#line 233 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92372
 
 
92373
  
 
92374
#line 234 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92375
 
 
92376
  
 
92377
#line 235 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92378
 
 
92379
 
 
92380
  // introduce new state into CSemDeclSpecs
 
92381
  
 
92382
#line 238 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92383
 
 
92384
 
 
92385
  // syntax extension
 
92386
  
 
92387
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92388
 
 
92389
public: template<class JoinPoint> void __a8_after 
 
92390
#line 242 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92391
 
 
92392
#line 242 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92393
(JoinPoint *tjp)
 
92394
#line 242 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92395
 {
 
92396
#line 92397 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92397
 
 
92398
  typedef typename JoinPoint::That __JP_That;
 
92399
  typedef typename JoinPoint::Target __JP_Target;
 
92400
  typedef typename JoinPoint::Result __JP_Result;
 
92401
 
 
92402
#line 242 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92403
 
 
92404
    if (typeof_keyword)
 
92405
      tjp->that ()->_simple_type_spec_1.set (Puma::TOK_TYPEOF);
 
92406
  }
 
92407
#line 92408 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92408
 
 
92409
private:
 
92410
 
 
92411
#line 245 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92412
 
 
92413
  
 
92414
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92415
 
 
92416
public: template<class JoinPoint> void __a9_after 
 
92417
#line 246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92418
 
 
92419
#line 246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92420
(JoinPoint *tjp)
 
92421
#line 246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92422
 {
 
92423
#line 92424 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92424
 
 
92425
  typedef typename JoinPoint::That __JP_That;
 
92426
  typedef typename JoinPoint::Target __JP_Target;
 
92427
  typedef typename JoinPoint::Result __JP_Result;
 
92428
 
 
92429
#line 246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92430
 
 
92431
    Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
92432
    if (typeof_keyword && !result && tjp->that ()->look_ahead (Puma::TOK_TYPEOF) &&
 
92433
        tjp->that ()->parse (&__JP_That
 
92434
#line 249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92435
::gnu_typeof))
 
92436
      result = tjp->that ()->builder ().simple_type_spec ();
 
92437
  }
 
92438
#line 92439 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92439
 
 
92440
private:
 
92441
 
 
92442
#line 251 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92443
 
 
92444
  
 
92445
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92446
 
 
92447
public: template<class JoinPoint> void __a10_after 
 
92448
#line 252 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92449
 
 
92450
#line 252 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92451
(JoinPoint *tjp)
 
92452
#line 252 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92453
 {
 
92454
#line 92455 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92455
 
 
92456
  typedef typename JoinPoint::That __JP_That;
 
92457
  typedef typename JoinPoint::Target __JP_Target;
 
92458
  typedef typename JoinPoint::Result __JP_Result;
 
92459
 
 
92460
#line 252 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92461
 
 
92462
    Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
92463
    if (typeof_keyword && !result && tjp->that ()->look_ahead (Puma::TOK_TYPEOF) &&
 
92464
        tjp->that ()->parse (&__JP_That
 
92465
#line 255 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92466
::gnu_typeof))
 
92467
      result = tjp->that ()->semantic ().simple_type_spec ();
 
92468
  }
 
92469
#line 92470 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92470
 
 
92471
private:
 
92472
 
 
92473
#line 257 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92474
 
 
92475
 
 
92476
  // initialize the new state before an analysis starts
 
92477
  
 
92478
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92479
 
 
92480
public: void __a11_before 
 
92481
#line 261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92482
 
 
92483
#line 261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92484
(Puma::CSemDeclSpecs &csd)
 
92485
#line 261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92486
 {
 
92487
    csd._typeofs = 0;
 
92488
    csd._typeof_node = 0;
 
92489
  }
 
92490
#line 92491 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92491
 
 
92492
private:
 
92493
 
 
92494
#line 264 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92495
 
 
92496
 
 
92497
  // make the analysis function aware of 'typeof'
 
92498
  
 
92499
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92500
 
 
92501
public: template<class JoinPoint> void __a12_after 
 
92502
#line 268 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92503
 
 
92504
#line 268 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92505
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd, Puma::CTree *spec)
 
92506
#line 268 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92507
 {
 
92508
#line 92509 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92509
 
 
92510
  typedef typename JoinPoint::That __JP_That;
 
92511
  typedef typename JoinPoint::Target __JP_Target;
 
92512
  typedef typename JoinPoint::Result __JP_Result;
 
92513
 
 
92514
#line 268 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92515
 
 
92516
    bool &result = *tjp->result ();
 
92517
    if (!result && spec->NodeName () == Puma::CT_GnuTypeof::NodeId ()) {
 
92518
      csd._typeofs++;      
 
92519
      csd._typeof_node = (Puma::CT_GnuTypeof*)spec;
 
92520
      result = true;
 
92521
    }
 
92522
  }
 
92523
#line 92524 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92524
 
 
92525
private:
 
92526
 
 
92527
#line 275 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92528
 
 
92529
  
 
92530
  // make the check functions aware of 'typeof'
 
92531
  
 
92532
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92533
 
 
92534
public: template<class JoinPoint> void __a13_after 
 
92535
#line 280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92536
 
 
92537
#line 280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92538
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd, bool &have_type)
 
92539
#line 280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92540
 {
 
92541
#line 92542 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92542
 
 
92543
  typedef typename JoinPoint::That __JP_That;
 
92544
  typedef typename JoinPoint::Target __JP_Target;
 
92545
  typedef typename JoinPoint::Result __JP_Result;
 
92546
 
 
92547
#line 280 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92548
 
 
92549
    bool &result = *tjp->result ();
 
92550
    if (result && !have_type && csd._typeofs) {
 
92551
      have_type = true;
 
92552
      result    = true;
 
92553
    }
 
92554
  }
 
92555
#line 92556 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92556
 
 
92557
private:
 
92558
 
 
92559
#line 286 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92560
 
 
92561
  
 
92562
  
 
92563
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92564
 
 
92565
public: template<class JoinPoint> void __a14_after 
 
92566
#line 289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92567
 
 
92568
#line 289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92569
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd)
 
92570
#line 289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92571
 {
 
92572
#line 92573 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92573
 
 
92574
  typedef typename JoinPoint::That __JP_That;
 
92575
  typedef typename JoinPoint::Target __JP_Target;
 
92576
  typedef typename JoinPoint::Result __JP_Result;
 
92577
 
 
92578
#line 289 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92579
 
 
92580
    bool &result = *tjp->result ();
 
92581
    if (result) {
 
92582
      if ((csd._prim_map[Puma::CT_PrimDeclSpec::PDS_SIGNED] || 
 
92583
           csd._prim_map[Puma::CT_PrimDeclSpec::PDS_UNSIGNED]) &&
 
92584
          csd._typeofs) {
 
92585
        *csd._err << Puma::sev_error << csd._dss->token ()->location () 
 
92586
                  << "`signed' or `unsigned' invalid for 'typeof'"
 
92587
                  << Puma::endMessage;
 
92588
        result = false;
 
92589
      }
 
92590
    }
 
92591
  }
 
92592
#line 92593 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92593
 
 
92594
private:
 
92595
 
 
92596
#line 301 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92597
 
 
92598
 
 
92599
  
 
92600
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92601
 
 
92602
public: template<class JoinPoint> void __a15_after 
 
92603
#line 304 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92604
 
 
92605
#line 304 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92606
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd)
 
92607
#line 304 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92608
 {
 
92609
#line 92610 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92610
 
 
92611
  typedef typename JoinPoint::That __JP_That;
 
92612
  typedef typename JoinPoint::Target __JP_Target;
 
92613
  typedef typename JoinPoint::Result __JP_Result;
 
92614
 
 
92615
#line 304 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92616
 
 
92617
    bool &result = *tjp->result ();
 
92618
    if (result && csd._typeofs > 0) {
 
92619
      *csd._err << Puma::sev_error << csd._dss->token ()->location () 
 
92620
                << "invalid type specified in declaration"
 
92621
                << Puma::endMessage;
 
92622
      result = false;
 
92623
    }
 
92624
  }
 
92625
#line 92626 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92626
 
 
92627
private:
 
92628
 
 
92629
#line 312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92630
 
 
92631
 
 
92632
  // make the type creation function aware of 'typeof'
 
92633
  
 
92634
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92635
 
 
92636
public: template<class JoinPoint> void __a16_after 
 
92637
#line 316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92638
 
 
92639
#line 316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92640
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd)
 
92641
#line 316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92642
 {
 
92643
#line 92644 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92644
 
 
92645
  typedef typename JoinPoint::That __JP_That;
 
92646
  typedef typename JoinPoint::Target __JP_Target;
 
92647
  typedef typename JoinPoint::Result __JP_Result;
 
92648
 
 
92649
#line 316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92650
 
 
92651
    Puma::CTypeInfo *&result = *tjp->result ();
 
92652
    if (result->isUndefined () && csd._typeofs) {
 
92653
      csd._typeofs--;
 
92654
      if (csd._typeof_node->Type ()) {
 
92655
        result = Puma::CTypeInfo::Duplicate (csd._typeof_node->Type ());
 
92656
      }
 
92657
    }
 
92658
  }
 
92659
#line 92660 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92660
 
 
92661
private:
 
92662
 
 
92663
#line 324 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92664
 
 
92665
  
 
92666
  // ----------------------
 
92667
  // Gnu builtin functions
 
92668
  // ----------------------
 
92669
 
 
92670
  // structural extensions
 
92671
  
 
92672
#line 331 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92673
 
 
92674
 
 
92675
  
 
92676
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92677
 
 
92678
public: template<class JoinPoint> void __a17_after 
 
92679
#line 334 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92680
 
 
92681
#line 334 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92682
(JoinPoint *tjp)
 
92683
#line 334 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92684
 {
 
92685
#line 92686 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92686
 
 
92687
  typedef typename JoinPoint::That __JP_That;
 
92688
  typedef typename JoinPoint::Target __JP_Target;
 
92689
  typedef typename JoinPoint::Result __JP_Result;
 
92690
 
 
92691
#line 334 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92692
 
 
92693
    if (gnu_builtins)
 
92694
      tjp->that ()->define_gnu_builtins ();
 
92695
  }
 
92696
#line 92697 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92697
 
 
92698
private:
 
92699
 
 
92700
#line 337 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92701
 
 
92702
 
 
92703
  // ----------------------------------------------------
 
92704
  // std hack: if a lookup in 'std' fails, look into '::'
 
92705
  // ----------------------------------------------------
 
92706
 
 
92707
  
 
92708
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92709
 
 
92710
public: template<class JoinPoint> void __a18_before 
 
92711
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92712
 
 
92713
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92714
(JoinPoint *tjp)
 
92715
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92716
 {
 
92717
#line 92718 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92718
 
 
92719
  typedef typename JoinPoint::That __JP_That;
 
92720
  typedef typename JoinPoint::Target __JP_Target;
 
92721
  typedef typename JoinPoint::Result __JP_Result;
 
92722
 
 
92723
#line 344 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92724
 
 
92725
    if (std_hack) {
 
92726
      Puma::CStructure *&scope = *(Puma::CStructure**)tjp->arg (0);
 
92727
      bool &nested = *(bool*)tjp->arg (1);
 
92728
      if (scope->Parent ()->GlobalScope () &&
 
92729
          strcmp (scope->Name (), "std") == 0)
 
92730
        nested = true;
 
92731
    }
 
92732
  }
 
92733
#line 92734 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92734
 
 
92735
private:
 
92736
 
 
92737
#line 352 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92738
 
 
92739
  
 
92740
  // get the configuration and check whether the GNU mode is enabled
 
92741
  
 
92742
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92743
 
 
92744
public: void __a19_before 
 
92745
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92746
 
 
92747
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92748
(Puma::Config &config)
 
92749
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92750
 {
 
92751
    if (config.Option ("--gnu") || config.Option ("--gnu-2.95")) {
 
92752
      extended_asm     = true;
 
92753
      extended_cv_qual = true;
 
92754
      gnu_builtins     = true;
 
92755
      typeof_keyword   = true;
 
92756
      statement_exprs  = true;
 
92757
      labels_as_values = true;
 
92758
    }
 
92759
    if (config.Option ("--gnu-extended-asm"))
 
92760
      extended_asm = true;
 
92761
    if (config.Option ("--gnu-2.95") || config.Option ("--gnu-std-hack"))
 
92762
      std_hack = true;
 
92763
  }
 
92764
#line 92765 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92765
 
 
92766
private:
 
92767
 
 
92768
#line 369 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92769
 
 
92770
 
 
92771
  // --------------------------------------------------
 
92772
  // support for unnamed struct/union members
 
92773
  // --------------------------------------------------
 
92774
  
 
92775
  
 
92776
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92777
 
 
92778
public: template<class JoinPoint> void __a20_around 
 
92779
#line 375 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92780
 
 
92781
#line 375 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92782
(JoinPoint *tjp)
 
92783
#line 375 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92784
 {
 
92785
#line 92786 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92786
 
 
92787
  typedef typename JoinPoint::That __JP_That;
 
92788
  typedef typename JoinPoint::Target __JP_Target;
 
92789
  typedef typename JoinPoint::Result __JP_Result;
 
92790
 
 
92791
#line 375 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92792
 
 
92793
    // 2: type_spec_seq                          ;
 
92794
    // 3: type_spec_seq  member_declarator_list  ;
 
92795
    Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
92796
    if (! (tjp->that ()->parse (&__JP_That
 
92797
#line 379 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92798
::type_spec_seq) && 
 
92799
           tjp->that ()->opt(tjp->that ()->parse (&__JP_That
 
92800
#line 380 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92801
::member_declarator_list)) && 
 
92802
           tjp->that ()->parse (Puma::TOK_SEMI_COLON))) {
 
92803
      result = (Puma::CTree*)0;
 
92804
    } else {
 
92805
      tjp->that ()->semantic ().finish_decl ();
 
92806
      result = tjp->that ()->builder ().member_decl (); 
 
92807
    }
 
92808
  }
 
92809
#line 92810 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92810
 
 
92811
private:
 
92812
 
 
92813
#line 387 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92814
 
 
92815
 
 
92816
protected:
 
92817
  ExtGnu () : extended_asm (false), extended_cv_qual (false),
 
92818
    gnu_builtins (false), std_hack (false), typeof_keyword (false),
 
92819
    statement_exprs (false)
 
92820
  {}
 
92821
public:
 
92822
  typedef AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TLE > > > > > > > __AttrTypes;
 
92823
  const char *__attr_name (unsigned i) const {
 
92824
    static const char *names[] = { "extended_asm", "extended_cv_qual", "gnu_builtins", "std_hack", "typeof_keyword", "statement_exprs", "labels_as_values" }; return names[i];
 
92825
  }
 
92826
  const void *__attr (unsigned __i) const {
 
92827
    switch (__i) { case 0: return &extended_asm; case 1: return &extended_cv_qual; case 2: return &gnu_builtins; case 3: return &std_hack; case 4: return &typeof_keyword; case 5: return &statement_exprs; case 6: return &labels_as_values; default: return 0; }
 
92828
  }
 
92829
#line 394 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92830
};
 
92831
#line 92832 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
92832
 
 
92833
namespace AC {
 
92834
  template <class JoinPoint>
 
92835
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp) {
 
92836
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a0_around::template Arg<0> Arg0;
 
92837
    ::ExtGnu::aspectof()->__a0_around (tjp, (Puma::CSyntax *)Arg0::val (tjp));
 
92838
  }
 
92839
  template <class JoinPoint>
 
92840
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp) {
 
92841
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a1_after::template Arg<0> Arg0;
 
92842
    ::ExtGnu::aspectof()->__a1_after (tjp, (Puma::CSyntax *)Arg0::val (tjp));
 
92843
  }
 
92844
  template <class JoinPoint>
 
92845
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_after (JoinPoint *tjp) {
 
92846
    ::ExtGnu::aspectof()->__a2_after (tjp);
 
92847
  }
 
92848
  template <class JoinPoint>
 
92849
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_around (JoinPoint *tjp) {
 
92850
    ::ExtGnu::aspectof()->__a3_around (tjp);
 
92851
  }
 
92852
  template <class JoinPoint>
 
92853
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp) {
 
92854
    ::ExtGnu::aspectof()->__a4_around (tjp);
 
92855
  }
 
92856
  template <class JoinPoint>
 
92857
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp) {
 
92858
    ::ExtGnu::aspectof()->__a5_around (tjp);
 
92859
  }
 
92860
  template <class JoinPoint>
 
92861
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp) {
 
92862
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a6_around::template Arg<0> Arg0;
 
92863
    ::ExtGnu::aspectof()->__a6_around (tjp, (Puma::CTree *)Arg0::val (tjp));
 
92864
  }
 
92865
  template <class JoinPoint>
 
92866
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp) {
 
92867
    ::ExtGnu::aspectof()->__a7_around (tjp);
 
92868
  }
 
92869
  template <class JoinPoint>
 
92870
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_after (JoinPoint *tjp) {
 
92871
    ::ExtGnu::aspectof()->__a8_after (tjp);
 
92872
  }
 
92873
  template <class JoinPoint>
 
92874
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp) {
 
92875
    ::ExtGnu::aspectof()->__a9_after (tjp);
 
92876
  }
 
92877
  template <class JoinPoint>
 
92878
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp) {
 
92879
    ::ExtGnu::aspectof()->__a10_after (tjp);
 
92880
  }
 
92881
  template <class JoinPoint>
 
92882
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_before (JoinPoint *tjp) {
 
92883
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a11_before::template Arg<0> Arg0;
 
92884
    ::ExtGnu::aspectof()->__a11_before ((Puma::CSemDeclSpecs &)Arg0::val (tjp));
 
92885
  }
 
92886
  template <class JoinPoint>
 
92887
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp) {
 
92888
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a12_after::template Arg<0> Arg0;
 
92889
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a12_after::template Arg<1> Arg1;
 
92890
    ::ExtGnu::aspectof()->__a12_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp), (Puma::CTree *)Arg1::val (tjp));
 
92891
  }
 
92892
  template <class JoinPoint>
 
92893
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_after (JoinPoint *tjp) {
 
92894
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a13_after::template Arg<0> Arg0;
 
92895
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a13_after::template Arg<1> Arg1;
 
92896
    ::ExtGnu::aspectof()->__a13_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp), (bool &)Arg1::val (tjp));
 
92897
  }
 
92898
  template <class JoinPoint>
 
92899
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp) {
 
92900
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a14_after::template Arg<0> Arg0;
 
92901
    ::ExtGnu::aspectof()->__a14_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp));
 
92902
  }
 
92903
  template <class JoinPoint>
 
92904
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp) {
 
92905
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a15_after::template Arg<0> Arg0;
 
92906
    ::ExtGnu::aspectof()->__a15_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp));
 
92907
  }
 
92908
  template <class JoinPoint>
 
92909
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp) {
 
92910
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a16_after::template Arg<0> Arg0;
 
92911
    ::ExtGnu::aspectof()->__a16_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp));
 
92912
  }
 
92913
  template <class JoinPoint>
 
92914
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp) {
 
92915
    ::ExtGnu::aspectof()->__a17_after (tjp);
 
92916
  }
 
92917
  template <class JoinPoint>
 
92918
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_before (JoinPoint *tjp) {
 
92919
    ::ExtGnu::aspectof()->__a18_before (tjp);
 
92920
  }
 
92921
  template <class JoinPoint>
 
92922
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_before (JoinPoint *tjp) {
 
92923
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a19_before::template Arg<0> Arg0;
 
92924
    ::ExtGnu::aspectof()->__a19_before ((Puma::Config &)Arg0::val (tjp));
 
92925
  }
 
92926
  template <class JoinPoint>
 
92927
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_around (JoinPoint *tjp) {
 
92928
    ::ExtGnu::aspectof()->__a20_around (tjp);
 
92929
  }
 
92930
 
92931
 
 
92932
#line 394 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92933
 
 
92934
 
 
92935
 
 
92936
// ----------------------------------------------------
 
92937
// the Gnu ASM syntax
 
92938
// ----------------------------------------------------
 
92939
 
 
92940
// add rules to the C Syntax
 
92941
 
 
92942
#line 409 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92943
 
 
92944
 
 
92945
 
 
92946
#line 417 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92947
 
 
92948
 
 
92949
 
 
92950
#line 427 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92951
 
 
92952
 
 
92953
 
 
92954
#line 433 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92955
 
 
92956
 
 
92957
 
 
92958
#line 439 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92959
 
 
92960
 
 
92961
 
 
92962
#line 444 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92963
 
 
92964
 
 
92965
// extend the C Builder
 
92966
 
 
92967
#line 454 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92968
 
 
92969
 
 
92970
 
 
92971
#line 459 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92972
 
 
92973
 
 
92974
 
 
92975
#line 473 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92976
 
 
92977
 
 
92978
 
 
92979
#line 477 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92980
 
 
92981
 
 
92982
 
 
92983
#line 482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92984
 
 
92985
        
 
92986
 
 
92987
#line 486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92988
 
 
92989
 
 
92990
// -------------------------
 
92991
// Gnu statement expressions 
 
92992
// -------------------------
 
92993
 
 
92994
// C Builder extension
 
92995
 
 
92996
#line 496 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
92997
 
 
92998
 
 
92999
 
 
93000
#line 500 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93001
 
 
93002
 
 
93003
// C semantic extension
 
93004
 
 
93005
#line 506 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93006
 
 
93007
 
 
93008
// the necessary #include "..CSemVisitor.h" in CSemExpr.cc will is inserted
 
93009
// manually (for now)!
 
93010
 
 
93011
#line 540 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93012
 
 
93013
 
 
93014
// C++ semantic extension
 
93015
 
 
93016
#line 546 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93017
 
 
93018
 
 
93019
// the necessary #include "..CCSemVisitor.h" in CCSemExpr.cc will is inserted
 
93020
// manually (for now)!
 
93021
 
 
93022
#line 580 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93023
 
 
93024
 
 
93025
// ----------------------
 
93026
// TYPEOF keyword support
 
93027
// ----------------------
 
93028
 
 
93029
// add rules to the C Syntax for the Gnu Typeof syntax
 
93030
 
 
93031
#line 590 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93032
 
 
93033
 
 
93034
 
 
93035
#line 596 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93036
 
 
93037
 
 
93038
// add rules to the C Builder for the Gnu Typeof syntax
 
93039
 
 
93040
#line 602 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93041
 
 
93042
 
 
93043
// builder extension
 
93044
 
 
93045
#line 615 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93046
 
 
93047
 
 
93048
// C semantic extension
 
93049
 
 
93050
#line 621 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93051
 
 
93052
 
 
93053
 
 
93054
#line 639 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93055
 
 
93056
 
 
93057
// C++ semantic extension
 
93058
 
 
93059
#line 645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93060
 
 
93061
 
 
93062
 
 
93063
#line 662 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93064
 
 
93065
 
 
93066
 
 
93067
// ----------------------
 
93068
// Gnu builtin functions
 
93069
// ----------------------
 
93070
 
 
93071
// extend the C/C++ semantic
 
93072
 
 
93073
#line 673 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93074
 
 
93075
 
 
93076
 
 
93077
#line 1012 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
93078
 
 
93079
 
 
93080
 
 
93081
#endif /* __ext_gnu_h__ */
 
93082
 
 
93083
#line 115 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
93084
#endif
 
93085
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
93086
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
93087
 
 
93088
#line 119 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
93089
#endif
 
93090
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
93091
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
93092
 
 
93093
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93094
// This file is part of PUMA.
 
93095
// Copyright (C) 1999-2003  The PUMA developer team.
 
93096
//                                                                
 
93097
// This program is free software;  you can redistribute it and/or 
 
93098
// modify it under the terms of the GNU General Public License as 
 
93099
// published by the Free Software Foundation; either version 2 of 
 
93100
// the License, or (at your option) any later version.            
 
93101
//                                                                
 
93102
// This program is distributed in the hope that it will be useful,
 
93103
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
93104
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
93105
// GNU General Public License for more details.                   
 
93106
//                                                                
 
93107
// You should have received a copy of the GNU General Public      
 
93108
// License along with this program; if not, write to the Free     
 
93109
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
93110
// MA  02111-1307  USA                                            
 
93111
 
 
93112
#ifndef __CMatchSyntax_ah__
 
93113
#define __CMatchSyntax_ah__
 
93114
 
 
93115
 
 
93116
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CWildcardTokens.h"
 
93117
// This file is part of PUMA.
 
93118
// Copyright (C) 1999-2003  The PUMA developer team.
 
93119
//                                                                
 
93120
// This program is free software;  you can redistribute it and/or 
 
93121
// modify it under the terms of the GNU General Public License as 
 
93122
// published by the Free Software Foundation; either version 2 of 
 
93123
// the License, or (at your option) any later version.            
 
93124
//                                                                
 
93125
// This program is distributed in the hope that it will be useful,
 
93126
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
93127
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
93128
// GNU General Public License for more details.                   
 
93129
//                                                                
 
93130
// You should have received a copy of the GNU General Public      
 
93131
// License along with this program; if not, write to the Free     
 
93132
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
93133
// MA  02111-1307  USA                                            
 
93134
 
 
93135
#ifndef __C_WILDCARD_TOKENS__
 
93136
#define __C_WILDCARD_TOKENS__
 
93137
 
 
93138
/** \file
 
93139
 *  Wildcard token types. */
 
93140
 
 
93141
namespace Puma {
 
93142
 
 
93143
 
 
93144
/** Types of wildcard tokens. These types
 
93145
 *  can be compared to Puma::Token::type(). */
 
93146
enum CWildcardTokens {
 
93147
  TOK_WC_AND = 500,
 
93148
  TOK_WC_OR,
 
93149
  TOK_WC_XOR,
 
93150
  TOK_WC_SEQ,
 
93151
  TOK_WC_IF,
 
93152
  TOK_WC_ELIF,
 
93153
  TOK_WC_ENDIF,
 
93154
  TOK_WC_NOT,
 
93155
  TOK_WC_EXACT,
 
93156
  TOK_WC_FIRST,
 
93157
  TOK_WC_LAST,
 
93158
  TOK_WC_LEAF,
 
93159
  TOK_WC_PRUNE,
 
93160
  TOK_WC_COLLECT,
 
93161
  TOK_WC_NODENAME,
 
93162
  TOK_WC_ELEMENT,
 
93163
 
 
93164
  TOK_DO_EXPR,
 
93165
  TOK_DO_EXPR_LIST,
 
93166
  TOK_DO_ID_EXPR,
 
93167
  TOK_DO_IDENTIFIER,
 
93168
  TOK_DO_DECL_SPEC,
 
93169
  TOK_DO_DECL_SPEC_SEQ,
 
93170
  TOK_DO_INIT_DECLARATOR_LIST,
 
93171
  TOK_DO_INIT_DECLARATOR,
 
93172
  TOK_DO_DECLARATOR,
 
93173
  TOK_DO_INIT,
 
93174
  TOK_DO_ARG_DECL_SEQ,
 
93175
  TOK_DO_FCT_BODY,
 
93176
  TOK_DO_CLASS_SPEC,
 
93177
  TOK_DO_MEMBER_SPEC,
 
93178
  TOK_DO_MEMBER_DECL,
 
93179
  TOK_DO_BASE_CLAUSE,
 
93180
  TOK_DO_CTOR_INIT,
 
93181
  TOK_DO_MEM_INIT,
 
93182
  TOK_DO_STMT,
 
93183
  TOK_DO_STMT_SEQ,
 
93184
 
 
93185
  TOK_ANY_EXPR,
 
93186
  TOK_ANY_EXPR_LIST,
 
93187
  TOK_ANY_ID_EXPR,
 
93188
  TOK_ANY_IDENTIFIER,
 
93189
  TOK_ANY_DECL_SPEC,
 
93190
  TOK_ANY_DECL_SPEC_SEQ,
 
93191
  TOK_ANY_INIT_DECLARATOR_LIST,
 
93192
  TOK_ANY_INIT_DECLARATOR,
 
93193
  TOK_ANY_DECLARATOR,
 
93194
  TOK_ANY_INIT,
 
93195
  TOK_ANY_ARG_DECL_SEQ,
 
93196
  TOK_ANY_FCT_BODY,
 
93197
  TOK_ANY_CLASS_SPEC,
 
93198
  TOK_ANY_MEMBER_SPEC,
 
93199
  TOK_ANY_MEMBER_DECL,
 
93200
  TOK_ANY_BASE_CLAUSE,
 
93201
  TOK_ANY_CTOR_INIT,
 
93202
  TOK_ANY_MEM_INIT,
 
93203
  TOK_ANY_STMT,
 
93204
  TOK_ANY_STMT_SEQ,
 
93205
  
 
93206
  TOK_IS_CLASS,
 
93207
  TOK_IS_ENUM,
 
93208
  TOK_IS_TYPEDEF
 
93209
};
 
93210
 
 
93211
 
 
93212
} // namespace Puma
 
93213
 
 
93214
#endif /* __WILDCARD_TOKENS__ */
 
93215
 
 
93216
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93217
namespace Puma {
 
93218
  class CSyntax;
 
93219
  class CCSyntax;
 
93220
  class CBuilder;
 
93221
  class CSemantic;
 
93222
  class Container;
 
93223
  class CTree;
 
93224
  class CStrLiteral;
 
93225
  class CT_Any;
 
93226
  class CT_AnyList;
 
93227
  class CT_AnyExtension;
 
93228
  class CT_AnyCondition;
 
93229
  class CT_SimpleName;
 
93230
} // namespace Puma
 
93231
 
 
93232
 
 
93233
namespace Puma {
 
93234
  
 
93235
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93236
 
 
93237
  
 
93238
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93239
 
 
93240
  
 
93241
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93242
 
 
93243
}
 
93244
 
 
93245
 
 
93246
#line 93247 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93247
class CCExprResolve;
 
93248
class CExprResolve;
 
93249
class WinIfExists;
 
93250
class WinImportHandler;
 
93251
class WinMacros;
 
93252
class WinAsm;
 
93253
class WinDeclSpecs;
 
93254
class WinMemberExplSpec;
 
93255
class WinTypeKeywords;
 
93256
class WinFriend;
 
93257
class ExtAC;
 
93258
class ExtACBuilderCoupling;
 
93259
class ExtACSyntaxCoupling;
 
93260
class ExtACTree;
 
93261
class ExtACKeywords;
 
93262
class ExtGnu;
 
93263
class PragmaOnceUnitState;
 
93264
class PragmaOnce;
 
93265
 
 
93266
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93267
class CMatchSyntax {
 
93268
#line 93269 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93269
 
 
93270
public:
 
93271
  static CMatchSyntax *aspectof () {
 
93272
    static CMatchSyntax __instance;
 
93273
    return &__instance;
 
93274
  }
 
93275
  static CMatchSyntax *aspectOf () {
 
93276
    return aspectof ();
 
93277
  }
 
93278
private:
 
93279
 
 
93280
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93281
 
 
93282
#line 93283 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93283
  friend class ::CCExprResolve;
 
93284
  friend class ::CExprResolve;
 
93285
  friend class ::WinIfExists;
 
93286
  friend class ::WinImportHandler;
 
93287
  friend class ::WinMacros;
 
93288
  friend class ::WinAsm;
 
93289
  friend class ::WinDeclSpecs;
 
93290
  friend class ::WinMemberExplSpec;
 
93291
  friend class ::WinTypeKeywords;
 
93292
  friend class ::WinFriend;
 
93293
  friend class ::ExtAC;
 
93294
  friend class ::ExtACBuilderCoupling;
 
93295
  friend class ::ExtACSyntaxCoupling;
 
93296
  friend class ::ExtACTree;
 
93297
  friend class ::ExtACKeywords;
 
93298
  friend class ::ExtGnu;
 
93299
  friend class ::PragmaOnceUnitState;
 
93300
  friend class ::PragmaOnce;
 
93301
 
 
93302
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93303
 
 
93304
  
 
93305
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93306
 
 
93307
  
 
93308
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93309
  
 
93310
  
 
93311
#line 55 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93312
 
 
93313
  
 
93314
#line 56 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93315
 
 
93316
 
 
93317
protected:
 
93318
  // flag to enable/disable parsing match expressions
 
93319
  bool match_expr;
 
93320
 
 
93321
protected:
 
93322
  CMatchSyntax () : match_expr (false) {}
 
93323
  
 
93324
  // introduce wildcard rules to CSyntax and CCSyntax
 
93325
  
 
93326
#line 66 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93327
 
 
93328
  
 
93329
#line 67 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93330
 
 
93331
 
 
93332
  // extend CBuilder
 
93333
  
 
93334
#line 70 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93335
 
 
93336
 
 
93337
  // extend CSemantic
 
93338
  
 
93339
#line 85 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93340
 
 
93341
 
 
93342
  // let first parse wildcards before parsing anything else
 
93343
  
 
93344
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93345
 
 
93346
public: template<class JoinPoint> void __a0_around 
 
93347
#line 89 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93348
 
 
93349
#line 89 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93350
(JoinPoint *tjp)
 
93351
#line 89 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93352
 {
 
93353
#line 93354 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93354
 
 
93355
  JoinPoint *&thisJoinPoint = tjp;
 
93356
 
 
93357
#line 89 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93358
 
 
93359
#line 93360 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93360
 
 
93361
  typedef typename JoinPoint::That __JP_That;
 
93362
  typedef typename JoinPoint::Target __JP_Target;
 
93363
  typedef typename JoinPoint::Result __JP_Result;
 
93364
 
 
93365
#line 89 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93366
 
 
93367
    if (match_expr &&
 
93368
        thisJoinPoint->that ()->parse (&__JP_That
 
93369
#line 91 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93370
::wildcards)) 
 
93371
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93372
        thisJoinPoint->that ()->builder ().get_node (); 
 
93373
    else 
 
93374
      thisJoinPoint->action ().trigger (); 
 
93375
  }
 
93376
#line 93377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93377
 
 
93378
protected:
 
93379
 
 
93380
#line 96 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93381
 
 
93382
 
 
93383
  // extend the syntax to parse ANYs
 
93384
 
 
93385
  
 
93386
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93387
 
 
93388
public: template<class JoinPoint> void __a1_around 
 
93389
#line 101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93390
 
 
93391
#line 101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93392
(JoinPoint *tjp)
 
93393
#line 101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93394
 {
 
93395
#line 93396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93396
 
 
93397
  JoinPoint *&thisJoinPoint = tjp;
 
93398
 
 
93399
#line 101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93400
 
 
93401
#line 93402 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93402
 
 
93403
  typedef typename JoinPoint::That __JP_That;
 
93404
  typedef typename JoinPoint::Target __JP_Target;
 
93405
  typedef typename JoinPoint::Result __JP_Result;
 
93406
 
 
93407
#line 101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93408
 
 
93409
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_EXPR)) {
 
93410
      thisJoinPoint->that ()->parse (&__JP_That
 
93411
#line 103 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93412
::wc_extension); 
 
93413
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93414
        thisJoinPoint->that ()->builder ().any (); 
 
93415
    } else 
 
93416
      thisJoinPoint->action ().trigger (); 
 
93417
  }
 
93418
#line 93419 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93419
 
 
93420
protected:
 
93421
 
 
93422
#line 108 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93423
 
 
93424
 
 
93425
  
 
93426
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93427
 
 
93428
public: template<class JoinPoint> void __a2_around 
 
93429
#line 111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93430
 
 
93431
#line 111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93432
(JoinPoint *tjp)
 
93433
#line 111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93434
 {
 
93435
#line 93436 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93436
 
 
93437
  JoinPoint *&thisJoinPoint = tjp;
 
93438
 
 
93439
#line 111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93440
 
 
93441
#line 93442 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93442
 
 
93443
  typedef typename JoinPoint::That __JP_That;
 
93444
  typedef typename JoinPoint::Target __JP_Target;
 
93445
  typedef typename JoinPoint::Result __JP_Result;
 
93446
 
 
93447
#line 111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93448
 
 
93449
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_EXPR_LIST)) {
 
93450
      thisJoinPoint->that ()->parse (&__JP_That
 
93451
#line 113 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93452
::wc_extension); 
 
93453
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93454
        thisJoinPoint->that ()->builder ().any_list (); 
 
93455
    } else 
 
93456
      thisJoinPoint->action ().trigger (); 
 
93457
  }
 
93458
#line 93459 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93459
 
 
93460
protected:
 
93461
 
 
93462
#line 118 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93463
 
 
93464
 
 
93465
  
 
93466
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93467
 
 
93468
public: template<class JoinPoint> void __a3_around 
 
93469
#line 121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93470
 
 
93471
#line 121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93472
(JoinPoint *tjp)
 
93473
#line 121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93474
 {
 
93475
#line 93476 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93476
 
 
93477
  JoinPoint *&thisJoinPoint = tjp;
 
93478
 
 
93479
#line 121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93480
 
 
93481
#line 93482 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93482
 
 
93483
  typedef typename JoinPoint::That __JP_That;
 
93484
  typedef typename JoinPoint::Target __JP_Target;
 
93485
  typedef typename JoinPoint::Result __JP_Result;
 
93486
 
 
93487
#line 121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93488
 
 
93489
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_ID_EXPR)) {
 
93490
      thisJoinPoint->that ()->parse (&__JP_That
 
93491
#line 123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93492
::wc_extension); 
 
93493
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93494
        thisJoinPoint->that ()->builder ().any (); 
 
93495
    } else 
 
93496
      thisJoinPoint->action ().trigger (); 
 
93497
  }
 
93498
#line 93499 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93499
 
 
93500
protected:
 
93501
 
 
93502
#line 128 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93503
 
 
93504
 
 
93505
  
 
93506
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93507
 
 
93508
public: template<class JoinPoint> void __a4_around 
 
93509
#line 131 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93510
 
 
93511
#line 131 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93512
(JoinPoint *tjp)
 
93513
#line 131 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93514
 {
 
93515
#line 93516 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93516
 
 
93517
  JoinPoint *&thisJoinPoint = tjp;
 
93518
 
 
93519
#line 131 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93520
 
 
93521
#line 93522 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93522
 
 
93523
  typedef typename JoinPoint::That __JP_That;
 
93524
  typedef typename JoinPoint::Target __JP_Target;
 
93525
  typedef typename JoinPoint::Result __JP_Result;
 
93526
 
 
93527
#line 131 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93528
 
 
93529
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_IDENTIFIER)) {
 
93530
      thisJoinPoint->that ()->parse (&__JP_That
 
93531
#line 133 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93532
::wc_extension); 
 
93533
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93534
        thisJoinPoint->that ()->builder ().any (); 
 
93535
    } else 
 
93536
      thisJoinPoint->action ().trigger (); 
 
93537
  }
 
93538
#line 93539 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93539
 
 
93540
protected:
 
93541
 
 
93542
#line 138 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93543
 
 
93544
 
 
93545
  
 
93546
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93547
 
 
93548
public: template<class JoinPoint> void __a5_after 
 
93549
#line 141 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93550
 
 
93551
#line 141 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93552
(JoinPoint *tjp)
 
93553
#line 141 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93554
 {
 
93555
#line 93556 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93556
 
 
93557
  typedef typename JoinPoint::That __JP_That;
 
93558
  typedef typename JoinPoint::Target __JP_Target;
 
93559
  typedef typename JoinPoint::Result __JP_Result;
 
93560
 
 
93561
#line 141 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93562
 
 
93563
      tjp->that ()->_decl_spec_1.set (Puma::TOK_ANY_DECL_SPEC);
 
93564
  }
 
93565
#line 93566 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93566
 
 
93567
protected:
 
93568
 
 
93569
#line 143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93570
 
 
93571
  
 
93572
  
 
93573
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93574
 
 
93575
public: template<class JoinPoint> void __a6_after 
 
93576
#line 146 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93577
 
 
93578
#line 146 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93579
(JoinPoint *tjp)
 
93580
#line 146 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93581
 {
 
93582
#line 93583 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93583
 
 
93584
  typedef typename JoinPoint::That __JP_That;
 
93585
  typedef typename JoinPoint::Target __JP_Target;
 
93586
  typedef typename JoinPoint::Result __JP_Result;
 
93587
 
 
93588
#line 146 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93589
 
 
93590
    Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
93591
    if (match_expr && !result &&
 
93592
        tjp->that ()->parse (Puma::TOK_ANY_DECL_SPEC) &&
 
93593
        tjp->that ()->parse (&__JP_That
 
93594
#line 150 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93595
::wc_extension)) {
 
93596
      result = tjp->that ()->builder().any ();
 
93597
    }
 
93598
  }
 
93599
#line 93600 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93600
 
 
93601
protected:
 
93602
 
 
93603
#line 153 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93604
 
 
93605
 
 
93606
  
 
93607
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93608
 
 
93609
public: template<class JoinPoint> void __a7_around 
 
93610
#line 156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93611
 
 
93612
#line 156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93613
(JoinPoint *tjp)
 
93614
#line 156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93615
 {
 
93616
#line 93617 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93617
 
 
93618
  JoinPoint *&thisJoinPoint = tjp;
 
93619
 
 
93620
#line 156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93621
 
 
93622
#line 93623 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93623
 
 
93624
  typedef typename JoinPoint::That __JP_That;
 
93625
  typedef typename JoinPoint::Target __JP_Target;
 
93626
  typedef typename JoinPoint::Result __JP_Result;
 
93627
 
 
93628
#line 156 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93629
 
 
93630
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_DECL_SPEC_SEQ)) {
 
93631
      thisJoinPoint->that ()->parse (&__JP_That
 
93632
#line 158 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93633
::wc_extension); 
 
93634
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93635
        thisJoinPoint->that ()->builder ().any_list (); 
 
93636
    } else 
 
93637
      thisJoinPoint->action ().trigger (); 
 
93638
  }
 
93639
#line 93640 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93640
 
 
93641
protected:
 
93642
 
 
93643
#line 163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93644
 
 
93645
 
 
93646
  
 
93647
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93648
 
 
93649
public: template<class JoinPoint> void __a8_around 
 
93650
#line 166 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93651
 
 
93652
#line 166 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93653
(JoinPoint *tjp)
 
93654
#line 166 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93655
 {
 
93656
#line 93657 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93657
 
 
93658
  JoinPoint *&thisJoinPoint = tjp;
 
93659
 
 
93660
#line 166 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93661
 
 
93662
#line 93663 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93663
 
 
93664
  typedef typename JoinPoint::That __JP_That;
 
93665
  typedef typename JoinPoint::Target __JP_Target;
 
93666
  typedef typename JoinPoint::Result __JP_Result;
 
93667
 
 
93668
#line 166 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93669
 
 
93670
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_INIT_DECLARATOR_LIST)) {
 
93671
      thisJoinPoint->that ()->parse (&__JP_That
 
93672
#line 168 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93673
::wc_extension); 
 
93674
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93675
        thisJoinPoint->that ()->builder ().any_list (); 
 
93676
    } else 
 
93677
      thisJoinPoint->action ().trigger (); 
 
93678
  }
 
93679
#line 93680 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93680
 
 
93681
protected:
 
93682
 
 
93683
#line 173 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93684
 
 
93685
 
 
93686
  
 
93687
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93688
 
 
93689
public: template<class JoinPoint> void __a9_around 
 
93690
#line 176 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93691
 
 
93692
#line 176 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93693
(JoinPoint *tjp)
 
93694
#line 176 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93695
 {
 
93696
#line 93697 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93697
 
 
93698
  JoinPoint *&thisJoinPoint = tjp;
 
93699
 
 
93700
#line 176 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93701
 
 
93702
#line 93703 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93703
 
 
93704
  typedef typename JoinPoint::That __JP_That;
 
93705
  typedef typename JoinPoint::Target __JP_Target;
 
93706
  typedef typename JoinPoint::Result __JP_Result;
 
93707
 
 
93708
#line 176 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93709
 
 
93710
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_INIT_DECLARATOR)) {
 
93711
      thisJoinPoint->that ()->parse (&__JP_That
 
93712
#line 178 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93713
::wc_extension); 
 
93714
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93715
        thisJoinPoint->that ()->builder ().any (); 
 
93716
    } else 
 
93717
      thisJoinPoint->action ().trigger (); 
 
93718
  }
 
93719
#line 93720 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93720
 
 
93721
protected:
 
93722
 
 
93723
#line 183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93724
 
 
93725
 
 
93726
  
 
93727
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93728
 
 
93729
public: template<class JoinPoint> void __a10_around 
 
93730
#line 186 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93731
 
 
93732
#line 186 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93733
(JoinPoint *tjp)
 
93734
#line 186 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93735
 {
 
93736
#line 93737 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93737
 
 
93738
  JoinPoint *&thisJoinPoint = tjp;
 
93739
 
 
93740
#line 186 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93741
 
 
93742
#line 93743 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93743
 
 
93744
  typedef typename JoinPoint::That __JP_That;
 
93745
  typedef typename JoinPoint::Target __JP_Target;
 
93746
  typedef typename JoinPoint::Result __JP_Result;
 
93747
 
 
93748
#line 186 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93749
 
 
93750
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_DECLARATOR)) {
 
93751
      thisJoinPoint->that ()->parse (&__JP_That
 
93752
#line 188 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93753
::wc_extension); 
 
93754
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93755
        thisJoinPoint->that ()->builder ().any (); 
 
93756
    } else 
 
93757
      thisJoinPoint->action ().trigger (); 
 
93758
  }
 
93759
#line 93760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93760
 
 
93761
protected:
 
93762
 
 
93763
#line 193 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93764
 
 
93765
 
 
93766
  
 
93767
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93768
 
 
93769
public: template<class JoinPoint> void __a11_around 
 
93770
#line 196 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93771
 
 
93772
#line 196 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93773
(JoinPoint *tjp)
 
93774
#line 196 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93775
 {
 
93776
#line 93777 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93777
 
 
93778
  JoinPoint *&thisJoinPoint = tjp;
 
93779
 
 
93780
#line 196 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93781
 
 
93782
#line 93783 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93783
 
 
93784
  typedef typename JoinPoint::That __JP_That;
 
93785
  typedef typename JoinPoint::Target __JP_Target;
 
93786
  typedef typename JoinPoint::Result __JP_Result;
 
93787
 
 
93788
#line 196 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93789
 
 
93790
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_INIT)) {
 
93791
      thisJoinPoint->that ()->parse (&__JP_That
 
93792
#line 198 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93793
::wc_extension); 
 
93794
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93795
        thisJoinPoint->that ()->builder ().any (); 
 
93796
    } else 
 
93797
      thisJoinPoint->action ().trigger (); 
 
93798
  }
 
93799
#line 93800 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93800
 
 
93801
protected:
 
93802
 
 
93803
#line 203 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93804
 
 
93805
 
 
93806
  
 
93807
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93808
 
 
93809
public: template<class JoinPoint> void __a12_around 
 
93810
#line 206 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93811
 
 
93812
#line 206 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93813
(JoinPoint *tjp)
 
93814
#line 206 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93815
 {
 
93816
#line 93817 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93817
 
 
93818
  JoinPoint *&thisJoinPoint = tjp;
 
93819
 
 
93820
#line 206 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93821
 
 
93822
#line 93823 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93823
 
 
93824
  typedef typename JoinPoint::That __JP_That;
 
93825
  typedef typename JoinPoint::Target __JP_Target;
 
93826
  typedef typename JoinPoint::Result __JP_Result;
 
93827
 
 
93828
#line 206 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93829
 
 
93830
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_ARG_DECL_SEQ)) {
 
93831
      thisJoinPoint->that ()->parse (&__JP_That
 
93832
#line 208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93833
::wc_extension); 
 
93834
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93835
        thisJoinPoint->that ()->builder ().any_list (); 
 
93836
    } else 
 
93837
      thisJoinPoint->action ().trigger (); 
 
93838
  }
 
93839
#line 93840 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93840
 
 
93841
protected:
 
93842
 
 
93843
#line 213 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93844
 
 
93845
 
 
93846
  
 
93847
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93848
 
 
93849
public: template<class JoinPoint> void __a13_around 
 
93850
#line 216 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93851
 
 
93852
#line 216 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93853
(JoinPoint *tjp)
 
93854
#line 216 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93855
 {
 
93856
#line 93857 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93857
 
 
93858
  JoinPoint *&thisJoinPoint = tjp;
 
93859
 
 
93860
#line 216 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93861
 
 
93862
#line 93863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93863
 
 
93864
  typedef typename JoinPoint::That __JP_That;
 
93865
  typedef typename JoinPoint::Target __JP_Target;
 
93866
  typedef typename JoinPoint::Result __JP_Result;
 
93867
 
 
93868
#line 216 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93869
 
 
93870
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_FCT_BODY)) {
 
93871
      thisJoinPoint->that ()->parse (&__JP_That
 
93872
#line 218 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93873
::wc_extension); 
 
93874
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93875
        thisJoinPoint->that ()->builder ().any (); 
 
93876
    } else 
 
93877
      thisJoinPoint->action ().trigger (); 
 
93878
  }
 
93879
#line 93880 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93880
 
 
93881
protected:
 
93882
 
 
93883
#line 223 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93884
 
 
93885
 
 
93886
  
 
93887
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93888
 
 
93889
public: template<class JoinPoint> void __a14_around 
 
93890
#line 226 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93891
 
 
93892
#line 226 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93893
(JoinPoint *tjp)
 
93894
#line 226 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93895
 {
 
93896
#line 93897 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93897
 
 
93898
  JoinPoint *&thisJoinPoint = tjp;
 
93899
 
 
93900
#line 226 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93901
 
 
93902
#line 93903 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93903
 
 
93904
  typedef typename JoinPoint::That __JP_That;
 
93905
  typedef typename JoinPoint::Target __JP_Target;
 
93906
  typedef typename JoinPoint::Result __JP_Result;
 
93907
 
 
93908
#line 226 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93909
 
 
93910
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_CLASS_SPEC)) {
 
93911
      thisJoinPoint->that ()->parse (&__JP_That
 
93912
#line 228 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93913
::wc_extension); 
 
93914
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93915
        thisJoinPoint->that ()->builder ().any (); 
 
93916
    } else 
 
93917
      thisJoinPoint->action ().trigger (); 
 
93918
  }
 
93919
#line 93920 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93920
 
 
93921
protected:
 
93922
 
 
93923
#line 233 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93924
 
 
93925
 
 
93926
  
 
93927
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93928
 
 
93929
public: template<class JoinPoint> void __a15_around 
 
93930
#line 236 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93931
 
 
93932
#line 236 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93933
(JoinPoint *tjp)
 
93934
#line 236 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93935
 {
 
93936
#line 93937 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93937
 
 
93938
  JoinPoint *&thisJoinPoint = tjp;
 
93939
 
 
93940
#line 236 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93941
 
 
93942
#line 93943 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93943
 
 
93944
  typedef typename JoinPoint::That __JP_That;
 
93945
  typedef typename JoinPoint::Target __JP_Target;
 
93946
  typedef typename JoinPoint::Result __JP_Result;
 
93947
 
 
93948
#line 236 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93949
 
 
93950
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_MEMBER_SPEC)) {
 
93951
      thisJoinPoint->that ()->parse (&__JP_That
 
93952
#line 238 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93953
::wc_extension); 
 
93954
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93955
        thisJoinPoint->that ()->builder ().any_list (); 
 
93956
    } else 
 
93957
      thisJoinPoint->action ().trigger (); 
 
93958
  }
 
93959
#line 93960 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93960
 
 
93961
protected:
 
93962
 
 
93963
#line 243 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93964
 
 
93965
 
 
93966
  
 
93967
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93968
 
 
93969
public: template<class JoinPoint> void __a16_around 
 
93970
#line 246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93971
 
 
93972
#line 246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93973
(JoinPoint *tjp)
 
93974
#line 246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93975
 {
 
93976
#line 93977 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93977
 
 
93978
  JoinPoint *&thisJoinPoint = tjp;
 
93979
 
 
93980
#line 246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93981
 
 
93982
#line 93983 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
93983
 
 
93984
  typedef typename JoinPoint::That __JP_That;
 
93985
  typedef typename JoinPoint::Target __JP_Target;
 
93986
  typedef typename JoinPoint::Result __JP_Result;
 
93987
 
 
93988
#line 246 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93989
 
 
93990
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_MEMBER_DECL)) {
 
93991
      thisJoinPoint->that ()->parse (&__JP_That
 
93992
#line 248 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
93993
::wc_extension); 
 
93994
      *(Puma::CTree**)thisJoinPoint->result () = 
 
93995
        thisJoinPoint->that ()->builder ().any (); 
 
93996
    } else 
 
93997
      thisJoinPoint->action ().trigger (); 
 
93998
  }
 
93999
#line 94000 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94000
 
 
94001
protected:
 
94002
 
 
94003
#line 253 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94004
 
 
94005
 
 
94006
  
 
94007
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94008
 
 
94009
public: template<class JoinPoint> void __a17_around 
 
94010
#line 256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94011
 
 
94012
#line 256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94013
(JoinPoint *tjp)
 
94014
#line 256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94015
 {
 
94016
#line 94017 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94017
 
 
94018
  JoinPoint *&thisJoinPoint = tjp;
 
94019
 
 
94020
#line 256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94021
 
 
94022
#line 94023 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94023
 
 
94024
  typedef typename JoinPoint::That __JP_That;
 
94025
  typedef typename JoinPoint::Target __JP_Target;
 
94026
  typedef typename JoinPoint::Result __JP_Result;
 
94027
 
 
94028
#line 256 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94029
 
 
94030
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_STMT)) {
 
94031
      thisJoinPoint->that ()->parse (&__JP_That
 
94032
#line 258 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94033
::wc_extension); 
 
94034
      *(Puma::CTree**)thisJoinPoint->result () = 
 
94035
        thisJoinPoint->that ()->builder ().any (); 
 
94036
    } else 
 
94037
      thisJoinPoint->action ().trigger (); 
 
94038
  }
 
94039
#line 94040 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94040
 
 
94041
protected:
 
94042
 
 
94043
#line 263 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94044
 
 
94045
 
 
94046
  
 
94047
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94048
 
 
94049
public: template<class JoinPoint> void __a18_around 
 
94050
#line 266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94051
 
 
94052
#line 266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94053
(JoinPoint *tjp)
 
94054
#line 266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94055
 {
 
94056
#line 94057 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94057
 
 
94058
  JoinPoint *&thisJoinPoint = tjp;
 
94059
 
 
94060
#line 266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94061
 
 
94062
#line 94063 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94063
 
 
94064
  typedef typename JoinPoint::That __JP_That;
 
94065
  typedef typename JoinPoint::Target __JP_Target;
 
94066
  typedef typename JoinPoint::Result __JP_Result;
 
94067
 
 
94068
#line 266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94069
 
 
94070
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_STMT_SEQ)) {
 
94071
      thisJoinPoint->that ()->parse (&__JP_That
 
94072
#line 268 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94073
::wc_extension); 
 
94074
      *(Puma::CTree**)thisJoinPoint->result () = 
 
94075
        thisJoinPoint->that ()->builder ().any_list (); 
 
94076
    } else 
 
94077
      thisJoinPoint->action ().trigger (); 
 
94078
  }
 
94079
#line 94080 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94080
 
 
94081
protected:
 
94082
 
 
94083
#line 273 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94084
 
 
94085
 
 
94086
  
 
94087
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94088
 
 
94089
public: template<class JoinPoint> void __a19_around 
 
94090
#line 276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94091
 
 
94092
#line 276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94093
(JoinPoint *tjp)
 
94094
#line 276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94095
 {
 
94096
#line 94097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94097
 
 
94098
  JoinPoint *&thisJoinPoint = tjp;
 
94099
 
 
94100
#line 276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94101
 
 
94102
#line 94103 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94103
 
 
94104
  typedef typename JoinPoint::That __JP_That;
 
94105
  typedef typename JoinPoint::Target __JP_Target;
 
94106
  typedef typename JoinPoint::Result __JP_Result;
 
94107
 
 
94108
#line 276 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94109
 
 
94110
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_BASE_CLAUSE)) {
 
94111
      thisJoinPoint->that ()->parse (&__JP_That
 
94112
#line 278 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94113
::wc_extension); 
 
94114
      *(Puma::CTree**)thisJoinPoint->result () = 
 
94115
        thisJoinPoint->that ()->builder ().any_list (); 
 
94116
    } else 
 
94117
      thisJoinPoint->action ().trigger (); 
 
94118
  }
 
94119
#line 94120 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94120
 
 
94121
protected:
 
94122
 
 
94123
#line 283 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94124
 
 
94125
 
 
94126
  
 
94127
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94128
 
 
94129
public: template<class JoinPoint> void __a20_around 
 
94130
#line 286 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94131
 
 
94132
#line 286 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94133
(JoinPoint *tjp)
 
94134
#line 286 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94135
 {
 
94136
#line 94137 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94137
 
 
94138
  JoinPoint *&thisJoinPoint = tjp;
 
94139
 
 
94140
#line 286 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94141
 
 
94142
#line 94143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94143
 
 
94144
  typedef typename JoinPoint::That __JP_That;
 
94145
  typedef typename JoinPoint::Target __JP_Target;
 
94146
  typedef typename JoinPoint::Result __JP_Result;
 
94147
 
 
94148
#line 286 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94149
 
 
94150
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_CTOR_INIT)) {
 
94151
      thisJoinPoint->that ()->parse (&__JP_That
 
94152
#line 288 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94153
::wc_extension); 
 
94154
      *(Puma::CTree**)thisJoinPoint->result () = 
 
94155
        thisJoinPoint->that ()->builder ().any (); 
 
94156
    } else 
 
94157
      thisJoinPoint->action ().trigger (); 
 
94158
  }
 
94159
#line 94160 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94160
 
 
94161
protected:
 
94162
 
 
94163
#line 293 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94164
 
 
94165
 
 
94166
  
 
94167
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94168
 
 
94169
public: template<class JoinPoint> void __a21_around 
 
94170
#line 296 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94171
 
 
94172
#line 296 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94173
(JoinPoint *tjp)
 
94174
#line 296 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94175
 {
 
94176
#line 94177 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94177
 
 
94178
  JoinPoint *&thisJoinPoint = tjp;
 
94179
 
 
94180
#line 296 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94181
 
 
94182
#line 94183 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94183
 
 
94184
  typedef typename JoinPoint::That __JP_That;
 
94185
  typedef typename JoinPoint::Target __JP_Target;
 
94186
  typedef typename JoinPoint::Result __JP_Result;
 
94187
 
 
94188
#line 296 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94189
 
 
94190
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_ANY_MEM_INIT)) {
 
94191
      thisJoinPoint->that ()->parse (&__JP_That
 
94192
#line 298 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94193
::wc_extension); 
 
94194
      *(Puma::CTree**)thisJoinPoint->result () = 
 
94195
        thisJoinPoint->that ()->builder ().any (); 
 
94196
    } else 
 
94197
      thisJoinPoint->action ().trigger (); 
 
94198
  }
 
94199
#line 94200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94200
 
 
94201
protected:
 
94202
 
 
94203
#line 303 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94204
 
 
94205
 
 
94206
  // extend the syntax to be able to parse match trees
 
94207
 
 
94208
  
 
94209
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94210
 
 
94211
public: template<class JoinPoint> void __a22_around 
 
94212
#line 308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94213
 
 
94214
#line 308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94215
(JoinPoint *tjp)
 
94216
#line 308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94217
 {
 
94218
#line 94219 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94219
 
 
94220
  JoinPoint *&thisJoinPoint = tjp;
 
94221
 
 
94222
#line 308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94223
 
 
94224
#line 94225 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94225
 
 
94226
  typedef typename JoinPoint::That __JP_That;
 
94227
  typedef typename JoinPoint::Target __JP_Target;
 
94228
  typedef typename JoinPoint::Result __JP_Result;
 
94229
 
 
94230
#line 308 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94231
 
 
94232
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_IS_TYPEDEF)) {
 
94233
      *(Puma::CTree**)thisJoinPoint->result () = 
 
94234
        thisJoinPoint->that ()->parse (Puma::TOK_ID) ? 
 
94235
        thisJoinPoint->that ()->builder ().is_name () : (Puma::CTree*)0; 
 
94236
    } else 
 
94237
      thisJoinPoint->action ().trigger (); 
 
94238
  }
 
94239
#line 94240 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94240
 
 
94241
protected:
 
94242
 
 
94243
#line 315 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94244
 
 
94245
 
 
94246
  
 
94247
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94248
 
 
94249
public: template<class JoinPoint> void __a23_around 
 
94250
#line 318 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94251
 
 
94252
#line 318 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94253
(JoinPoint *tjp)
 
94254
#line 318 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94255
 {
 
94256
#line 94257 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94257
 
 
94258
  JoinPoint *&thisJoinPoint = tjp;
 
94259
 
 
94260
#line 318 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94261
 
 
94262
#line 94263 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94263
 
 
94264
  typedef typename JoinPoint::That __JP_That;
 
94265
  typedef typename JoinPoint::Target __JP_Target;
 
94266
  typedef typename JoinPoint::Result __JP_Result;
 
94267
 
 
94268
#line 318 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94269
 
 
94270
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_IS_CLASS)) {
 
94271
      *(Puma::CTree**)thisJoinPoint->result () = 
 
94272
        thisJoinPoint->that ()->parse (Puma::TOK_ID) ? 
 
94273
        thisJoinPoint->that ()->builder ().is_name () : (Puma::CTree*)0; 
 
94274
    } else 
 
94275
      thisJoinPoint->action ().trigger (); 
 
94276
  }
 
94277
#line 94278 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94278
 
 
94279
protected:
 
94280
 
 
94281
#line 325 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94282
 
 
94283
 
 
94284
  
 
94285
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94286
 
 
94287
public: template<class JoinPoint> void __a24_around 
 
94288
#line 328 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94289
 
 
94290
#line 328 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94291
(JoinPoint *tjp)
 
94292
#line 328 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94293
 {
 
94294
#line 94295 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94295
 
 
94296
  JoinPoint *&thisJoinPoint = tjp;
 
94297
 
 
94298
#line 328 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94299
 
 
94300
#line 94301 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94301
 
 
94302
  typedef typename JoinPoint::That __JP_That;
 
94303
  typedef typename JoinPoint::Target __JP_Target;
 
94304
  typedef typename JoinPoint::Result __JP_Result;
 
94305
 
 
94306
#line 328 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94307
 
 
94308
    if (match_expr && thisJoinPoint->that ()->parse (Puma::TOK_IS_ENUM)) {
 
94309
      *(Puma::CTree**)thisJoinPoint->result () = 
 
94310
        thisJoinPoint->that ()->parse (Puma::TOK_ID) ? 
 
94311
        thisJoinPoint->that ()->builder ().is_name () : (Puma::CTree*)0; 
 
94312
    } else 
 
94313
      thisJoinPoint->action ().trigger (); 
 
94314
  }
 
94315
#line 94316 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94316
 
 
94317
protected:
 
94318
 
 
94319
#line 335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94320
 
 
94321
 
 
94322
  // configure parsing match expressions
 
94323
  
 
94324
  
 
94325
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94326
 
 
94327
public: void __a25_before 
 
94328
#line 340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94329
 
 
94330
#line 340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94331
(Puma::Config &config)
 
94332
#line 340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94333
 {
 
94334
    match_expr = (config.Option ("--match-expr"));
 
94335
  }
 
94336
#line 94337 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94337
 
 
94338
protected:
 
94339
 
 
94340
#line 342 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94341
 
 
94342
public:
 
94343
  typedef AC::TL<bool,AC::TLE > __AttrTypes;
 
94344
  const char *__attr_name (unsigned i) const {
 
94345
    static const char *names[] = { "match_expr" }; return names[i];
 
94346
  }
 
94347
  const void *__attr (unsigned __i) const {
 
94348
    switch (__i) { case 0: return &match_expr; default: return 0; }
 
94349
  }
 
94350
#line 343 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94351
};
 
94352
#line 94353 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CSemDatabase.cc"
 
94353
 
 
94354
namespace AC {
 
94355
  template <class JoinPoint>
 
94356
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a0_around (JoinPoint *tjp) {
 
94357
    ::CMatchSyntax::aspectof()->__a0_around (tjp);
 
94358
  }
 
94359
  template <class JoinPoint>
 
94360
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a1_around (JoinPoint *tjp) {
 
94361
    ::CMatchSyntax::aspectof()->__a1_around (tjp);
 
94362
  }
 
94363
  template <class JoinPoint>
 
94364
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a2_around (JoinPoint *tjp) {
 
94365
    ::CMatchSyntax::aspectof()->__a2_around (tjp);
 
94366
  }
 
94367
  template <class JoinPoint>
 
94368
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a3_around (JoinPoint *tjp) {
 
94369
    ::CMatchSyntax::aspectof()->__a3_around (tjp);
 
94370
  }
 
94371
  template <class JoinPoint>
 
94372
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a4_around (JoinPoint *tjp) {
 
94373
    ::CMatchSyntax::aspectof()->__a4_around (tjp);
 
94374
  }
 
94375
  template <class JoinPoint>
 
94376
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a5_after (JoinPoint *tjp) {
 
94377
    ::CMatchSyntax::aspectof()->__a5_after (tjp);
 
94378
  }
 
94379
  template <class JoinPoint>
 
94380
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a6_after (JoinPoint *tjp) {
 
94381
    ::CMatchSyntax::aspectof()->__a6_after (tjp);
 
94382
  }
 
94383
  template <class JoinPoint>
 
94384
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a7_around (JoinPoint *tjp) {
 
94385
    ::CMatchSyntax::aspectof()->__a7_around (tjp);
 
94386
  }
 
94387
  template <class JoinPoint>
 
94388
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a8_around (JoinPoint *tjp) {
 
94389
    ::CMatchSyntax::aspectof()->__a8_around (tjp);
 
94390
  }
 
94391
  template <class JoinPoint>
 
94392
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a9_around (JoinPoint *tjp) {
 
94393
    ::CMatchSyntax::aspectof()->__a9_around (tjp);
 
94394
  }
 
94395
  template <class JoinPoint>
 
94396
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a10_around (JoinPoint *tjp) {
 
94397
    ::CMatchSyntax::aspectof()->__a10_around (tjp);
 
94398
  }
 
94399
  template <class JoinPoint>
 
94400
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a11_around (JoinPoint *tjp) {
 
94401
    ::CMatchSyntax::aspectof()->__a11_around (tjp);
 
94402
  }
 
94403
  template <class JoinPoint>
 
94404
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a12_around (JoinPoint *tjp) {
 
94405
    ::CMatchSyntax::aspectof()->__a12_around (tjp);
 
94406
  }
 
94407
  template <class JoinPoint>
 
94408
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a13_around (JoinPoint *tjp) {
 
94409
    ::CMatchSyntax::aspectof()->__a13_around (tjp);
 
94410
  }
 
94411
  template <class JoinPoint>
 
94412
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a14_around (JoinPoint *tjp) {
 
94413
    ::CMatchSyntax::aspectof()->__a14_around (tjp);
 
94414
  }
 
94415
  template <class JoinPoint>
 
94416
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a15_around (JoinPoint *tjp) {
 
94417
    ::CMatchSyntax::aspectof()->__a15_around (tjp);
 
94418
  }
 
94419
  template <class JoinPoint>
 
94420
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a16_around (JoinPoint *tjp) {
 
94421
    ::CMatchSyntax::aspectof()->__a16_around (tjp);
 
94422
  }
 
94423
  template <class JoinPoint>
 
94424
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a17_around (JoinPoint *tjp) {
 
94425
    ::CMatchSyntax::aspectof()->__a17_around (tjp);
 
94426
  }
 
94427
  template <class JoinPoint>
 
94428
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a18_around (JoinPoint *tjp) {
 
94429
    ::CMatchSyntax::aspectof()->__a18_around (tjp);
 
94430
  }
 
94431
  template <class JoinPoint>
 
94432
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a19_around (JoinPoint *tjp) {
 
94433
    ::CMatchSyntax::aspectof()->__a19_around (tjp);
 
94434
  }
 
94435
  template <class JoinPoint>
 
94436
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a20_around (JoinPoint *tjp) {
 
94437
    ::CMatchSyntax::aspectof()->__a20_around (tjp);
 
94438
  }
 
94439
  template <class JoinPoint>
 
94440
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a21_around (JoinPoint *tjp) {
 
94441
    ::CMatchSyntax::aspectof()->__a21_around (tjp);
 
94442
  }
 
94443
  template <class JoinPoint>
 
94444
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a22_around (JoinPoint *tjp) {
 
94445
    ::CMatchSyntax::aspectof()->__a22_around (tjp);
 
94446
  }
 
94447
  template <class JoinPoint>
 
94448
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a23_around (JoinPoint *tjp) {
 
94449
    ::CMatchSyntax::aspectof()->__a23_around (tjp);
 
94450
  }
 
94451
  template <class JoinPoint>
 
94452
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a24_around (JoinPoint *tjp) {
 
94453
    ::CMatchSyntax::aspectof()->__a24_around (tjp);
 
94454
  }
 
94455
  template <class JoinPoint>
 
94456
  __attribute((always_inline)) inline void invoke_CMatchSyntax_CMatchSyntax_a25_before (JoinPoint *tjp) {
 
94457
    typedef typename JoinPoint::Binding_CMatchSyntax_CMatchSyntax_a25_before::template Arg<0> Arg0;
 
94458
    ::CMatchSyntax::aspectof()->__a25_before ((Puma::Config &)Arg0::val (tjp));
 
94459
  }
 
94460
 
94461
 
 
94462
#line 343 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94463
 
 
94464
 
 
94465
// introduce wildcard rules to CSyntax
 
94466
 
 
94467
#line 356 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94468
 
 
94469
 
 
94470
// introduce wildcard rules to CCSyntax
 
94471
 
 
94472
#line 362 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94473
 
 
94474
 
 
94475
// extend CBuilder
 
94476
 
 
94477
#line 378 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94478
 
 
94479
 
 
94480
 
 
94481
#line 400 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94482
 
 
94483
         
 
94484
 
 
94485
#line 414 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94486
 
 
94487
 
 
94488
 
 
94489
#line 420 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94490
 
 
94491
 
 
94492
 
 
94493
#line 426 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94494
 
 
94495
 
 
94496
 
 
94497
#line 432 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94498
 
 
94499
 
 
94500
 
 
94501
#line 437 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94502
 
 
94503
 
 
94504
/*****************************************************************************/
 
94505
/*                                                                           */
 
94506
/*                              wildcard rules                               */
 
94507
/*                                                                           */
 
94508
/*****************************************************************************/
 
94509
 
 
94510
 
 
94511
#line 449 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94512
 
 
94513
 
 
94514
 
 
94515
#line 470 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94516
 
 
94517
 
 
94518
 
 
94519
#line 477 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94520
 
 
94521
 
 
94522
 
 
94523
#line 481 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94524
 
 
94525
 
 
94526
 
 
94527
#line 487 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94528
 
 
94529
 
 
94530
 
 
94531
#line 494 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94532
 
 
94533
 
 
94534
 
 
94535
#line 510 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94536
 
 
94537
            
 
94538
 
 
94539
#line 523 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94540
 
 
94541
 
 
94542
 
 
94543
#line 532 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94544
 
 
94545
 
 
94546
 
 
94547
#line 540 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94548
 
 
94549
 
 
94550
 
 
94551
#line 550 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94552
 
 
94553
 
 
94554
 
 
94555
#line 563 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94556
 
 
94557
 
 
94558
 
 
94559
#line 569 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94560
 
 
94561
 
 
94562
 
 
94563
#line 575 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/CMatchSyntax.ah"
 
94564
 
 
94565
 
 
94566
#endif /* __CMatchSyntax_ah__ */
 
94567
 
 
94568
#line 123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CSemDatabase.cc"
 
94569
#endif
 
94570
#endif
 
94571
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
 
94572
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
 
94573
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
 
94574
#include "ExtACBuilderH.ah"
 
94575
#endif
 
94576
#endif
 
94577
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
 
94578
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
 
94579
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
 
94580
#include "ExtACBuilderCC.ah"
 
94581
#endif
 
94582
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
94583
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
94584
#include "ExtACTree.ah"
 
94585
#endif
 
94586
#endif
 
94587
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
 
94588
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
 
94589
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
 
94590
#include "ExtACSyntaxH.ah"
 
94591
#endif
 
94592
#endif
 
94593
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
 
94594
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
 
94595
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
 
94596
#include "ExtACSyntaxCC.ah"
 
94597
#endif
 
94598
#endif
 
94599
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
94600
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
94601
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
94602
#include "ExtACTree.ah"
 
94603
#endif
 
94604
#endif
 
94605
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
94606
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
94607
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
94608
#include "ExtACKeywords.ah"
 
94609
#endif
 
94610
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
94611
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
94612
#include "PragmaOnceUnitState.ah"
 
94613
#endif
 
94614
#endif
 
94615
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
94616
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
94617
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
94618
#include "ExtACTree.ah"
 
94619
#endif
 
94620
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
94621
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
94622
#include "ExtGnu.ah"
 
94623
#endif
 
94624
#endif
 
94625
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
94626
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
94627
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
94628
#include "ExtACTree.ah"
 
94629
#endif
 
94630
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
94631
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
94632
#include "ExtGnuCSemDeclSpecs.ah"
 
94633
#endif
 
94634
#endif
 
94635
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
94636
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
94637
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
94638
#include "PragmaOnceUnitState.ah"
 
94639
#endif
 
94640
#endif
 
94641
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
94642
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
94643
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
94644
#include "PragmaOnceUnitState.ah"
 
94645
#endif
 
94646
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
94647
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
94648
#include "PragmaOnce.ah"
 
94649
#endif
 
94650
#endif
 
94651
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
94652
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
94653
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
94654
#include "TraceSyntax.ah"
 
94655
#endif
 
94656
#endif
 
94657
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
94658
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
94659
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
94660
#include "CMatchSyntax.ah"
 
94661
#endif
 
94662
#endif
 
94663
#undef __ac_FIRST__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1__
 
94664
#undef __ac_FIRST_FILE__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_src_CSemDatabase_cc__
 
94665
#endif // __ac_FIRST_FILE__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_src_CSemDatabase_cc__