~ubuntu-branches/ubuntu/quantal/aspectc++/quantal

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2008-04-10 17:40:52 UTC
  • mto: This revision was merged to the branch mainline in revision 10.
  • Revision ID: james.westby@ubuntu.com-20080410174052-dbne39zue793jgrh
Tags: upstream-1.0pre4~svn.20080409+dfsg
ImportĀ upstreamĀ versionĀ 1.0pre4~svn.20080409+dfsg

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
// This file is part of PUMA.
2
 
// Copyright (C) 1999-2003  The PUMA developer team.
3
 
//                                                                
4
 
// This program is free software;  you can redistribute it and/or 
5
 
// modify it under the terms of the GNU General Public License as 
6
 
// published by the Free Software Foundation; either version 2 of 
7
 
// the License, or (at your option) any later version.            
8
 
//                                                                
9
 
// This program is distributed in the hope that it will be useful,
10
 
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
11
 
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
12
 
// GNU General Public License for more details.                   
13
 
//                                                                
14
 
// You should have received a copy of the GNU General Public      
15
 
// License along with this program; if not, write to the Free     
16
 
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
17
 
// MA  02111-1307  USA                                            
18
 
 
19
 
#include "Puma/Unit.h"
20
 
#include "Puma/Source.h"
21
 
#include "Puma/SysCall.h"
22
 
#include "Puma/FileUnit.h"
23
 
#include "Puma/FileSource.h"
24
 
#include "Puma/ErrorStream.h"
25
 
#include "Puma/UnitManager.h"
26
 
#include "Puma/Tokenizer.h"
 
1
 
 
2
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/UnitManager.cc"
 
3
#ifndef __ac_FIRST__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1__
 
4
#define __ac_FIRST__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1__
 
5
#define __ac_FIRST_FILE__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_src_UnitManager_cc__
 
6
#endif // __ac_FIRST__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1__
 
7
 
 
8
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/UnitManager.cc"
 
9
 
 
10
#line 11 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.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 <class Aspect, int Index>
 
44
  struct CFlow {
 
45
    static int &instance () {
 
46
      static int counter = 0;
 
47
      return counter;
 
48
    }
 
49
    CFlow () { instance ()++; }
 
50
    ~CFlow () { instance ()--; }
 
51
    static bool active () { return instance () > 0; }
 
52
  };
 
53
}
 
54
inline void * operator new (__SIZE_TYPE__, AC::AnyResultBuffer *p) { return p; }
 
55
inline void operator delete (void *, AC::AnyResultBuffer *) { } // for VC++
 
56
#endif // __cplusplus
 
57
#endif // __ac_h_
 
58
 
 
59
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/UnitManager.cc"
 
60
 
 
61
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/UnitManager.cc"
 
62
 
 
63
#line 64 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
64
 
 
65
#ifndef __ac_fwd_PragmaOnceUnitState__
 
66
#define __ac_fwd_PragmaOnceUnitState__
 
67
class PragmaOnceUnitState;
 
68
namespace AC {
 
69
  template <class JoinPoint>
 
70
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp);
 
71
  template <class JoinPoint>
 
72
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after (JoinPoint *tjp);
 
73
}
 
74
#endif
 
75
 
 
76
#ifndef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
77
#define __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
78
#endif
 
79
 
 
80
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/UnitManager.cc"
 
81
// This file is part of PUMA.
 
82
// Copyright (C) 1999-2003  The PUMA developer team.
 
83
//                                                                
 
84
// This program is free software;  you can redistribute it and/or 
 
85
// modify it under the terms of the GNU General Public License as 
 
86
// published by the Free Software Foundation; either version 2 of 
 
87
// the License, or (at your option) any later version.            
 
88
//                                                                
 
89
// This program is distributed in the hope that it will be useful,
 
90
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
91
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
92
// GNU General Public License for more details.                   
 
93
//                                                                
 
94
// You should have received a copy of the GNU General Public      
 
95
// License along with this program; if not, write to the Free     
 
96
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
97
// MA  02111-1307  USA                                            
 
98
 
 
99
 
 
100
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Unit.h"
 
101
// This file is part of PUMA.
 
102
// Copyright (C) 1999-2003  The PUMA developer team.
 
103
//                                                                
 
104
// This program is free software;  you can redistribute it and/or 
 
105
// modify it under the terms of the GNU General Public License as 
 
106
// published by the Free Software Foundation; either version 2 of 
 
107
// the License, or (at your option) any later version.            
 
108
//                                                                
 
109
// This program is distributed in the hope that it will be useful,
 
110
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
111
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
112
// GNU General Public License for more details.                   
 
113
//                                                                
 
114
// You should have received a copy of the GNU General Public      
 
115
// License along with this program; if not, write to the Free     
 
116
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
117
// MA  02111-1307  USA                                            
 
118
 
 
119
#ifndef __unit_h__
 
120
#define __unit_h__
 
121
 
 
122
 
 
123
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/List.h"
 
124
// This file is part of PUMA.
 
125
// Copyright (C) 1999-2003  The PUMA developer team.
 
126
//                                                                
 
127
// This program is free software;  you can redistribute it and/or 
 
128
// modify it under the terms of the GNU General Public License as 
 
129
// published by the Free Software Foundation; either version 2 of 
 
130
// the License, or (at your option) any later version.            
 
131
//                                                                
 
132
// This program is distributed in the hope that it will be useful,
 
133
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
134
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
135
// GNU General Public License for more details.                   
 
136
//                                                                
 
137
// You should have received a copy of the GNU General Public      
 
138
// License along with this program; if not, write to the Free     
 
139
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
140
// MA  02111-1307  USA                                            
 
141
 
 
142
#ifndef __list_h__
 
143
#define __list_h__
 
144
 
 
145
 
 
146
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
147
// This file is part of PUMA.
 
148
// Copyright (C) 1999-2003  The PUMA developer team.
 
149
//                                                                
 
150
// This program is free software;  you can redistribute it and/or 
 
151
// modify it under the terms of the GNU General Public License as 
 
152
// published by the Free Software Foundation; either version 2 of 
 
153
// the License, or (at your option) any later version.            
 
154
//                                                                
 
155
// This program is distributed in the hope that it will be useful,
 
156
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
157
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
158
// GNU General Public License for more details.                   
 
159
//                                                                
 
160
// You should have received a copy of the GNU General Public      
 
161
// License along with this program; if not, write to the Free     
 
162
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
163
// MA  02111-1307  USA                                            
 
164
 
 
165
#ifndef __list_element_h__
 
166
#define __list_element_h__
 
167
 
 
168
// Base class for objects that may be inserted into a List. Lists
 
169
// autonomously delete or copy list element. So it's necessary to
 
170
// define a destructor and a duplicate method in the derived
 
171
// classes.
 
172
 
 
173
#include <assert.h>
 
174
 
 
175
namespace Puma {
 
176
 
 
177
 
 
178
class List;
 
179
 
 
180
 
 
181
#line 182 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
182
} // closed Puma
 
183
class CCExprResolve;
 
184
class CExprResolve;
 
185
class WinIfExists;
 
186
class WinImportHandler;
 
187
class WinMacros;
 
188
class WinAsm;
 
189
class WinDeclSpecs;
 
190
class WinMemberExplSpec;
 
191
class WinTypeKeywords;
 
192
class WinFriend;
 
193
class ExtAC;
 
194
class ExtACBuilderCoupling;
 
195
class ExtACSyntaxCoupling;
 
196
class ExtACTree;
 
197
class ExtACKeywords;
 
198
class ExtGnu;
 
199
class PragmaOnceUnitState;
 
200
class PragmaOnce;
 
201
class CMatchSyntax;
 
202
namespace Puma {
 
203
 
 
204
#line 34 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
205
class ListElement {
 
206
#line 207 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
207
  friend class ::CCExprResolve;
 
208
  friend class ::CExprResolve;
 
209
  friend class ::WinIfExists;
 
210
  friend class ::WinImportHandler;
 
211
  friend class ::WinMacros;
 
212
  friend class ::WinAsm;
 
213
  friend class ::WinDeclSpecs;
 
214
  friend class ::WinMemberExplSpec;
 
215
  friend class ::WinTypeKeywords;
 
216
  friend class ::WinFriend;
 
217
  friend class ::ExtAC;
 
218
  friend class ::ExtACBuilderCoupling;
 
219
  friend class ::ExtACSyntaxCoupling;
 
220
  friend class ::ExtACTree;
 
221
  friend class ::ExtACKeywords;
 
222
  friend class ::ExtGnu;
 
223
  friend class ::PragmaOnceUnitState;
 
224
  friend class ::PragmaOnce;
 
225
  friend class ::CMatchSyntax;
 
226
 
 
227
#line 34 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
228
 
 
229
  friend class List;
 
230
 
 
231
  List        *_belonging_to;
 
232
  ListElement *_next;
 
233
  ListElement *_prev;
 
234
 
 
235
public:
 
236
  ListElement () : _belonging_to ((List*)0) {}
 
237
  virtual ~ListElement () { assert (! _belonging_to); };
 
238
 
 
239
  virtual ListElement *duplicate () = 0;
 
240
  List *belonging_to () const { return _belonging_to; }
 
241
};
 
242
 
 
243
 
 
244
} // namespace Puma
 
245
 
 
246
#endif /* __list_element_h__ */
 
247
 
 
248
#line 24 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/List.h"
 
249
namespace Puma {
 
250
 
 
251
 
 
252
 
 
253
#line 254 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
254
} // closed Puma
 
255
class CCExprResolve;
 
256
class CExprResolve;
 
257
class WinIfExists;
 
258
class WinImportHandler;
 
259
class WinMacros;
 
260
class WinAsm;
 
261
class WinDeclSpecs;
 
262
class WinMemberExplSpec;
 
263
class WinTypeKeywords;
 
264
class WinFriend;
 
265
class ExtAC;
 
266
class ExtACBuilderCoupling;
 
267
class ExtACSyntaxCoupling;
 
268
class ExtACTree;
 
269
class ExtACKeywords;
 
270
class ExtGnu;
 
271
class PragmaOnceUnitState;
 
272
class PragmaOnce;
 
273
class CMatchSyntax;
 
274
namespace Puma {
 
275
 
 
276
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/List.h"
 
277
class List {
 
278
#line 279 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
279
  friend class ::CCExprResolve;
 
280
  friend class ::CExprResolve;
 
281
  friend class ::WinIfExists;
 
282
  friend class ::WinImportHandler;
 
283
  friend class ::WinMacros;
 
284
  friend class ::WinAsm;
 
285
  friend class ::WinDeclSpecs;
 
286
  friend class ::WinMemberExplSpec;
 
287
  friend class ::WinTypeKeywords;
 
288
  friend class ::WinFriend;
 
289
  friend class ::ExtAC;
 
290
  friend class ::ExtACBuilderCoupling;
 
291
  friend class ::ExtACSyntaxCoupling;
 
292
  friend class ::ExtACTree;
 
293
  friend class ::ExtACKeywords;
 
294
  friend class ::ExtGnu;
 
295
  friend class ::PragmaOnceUnitState;
 
296
  friend class ::PragmaOnce;
 
297
  friend class ::CMatchSyntax;
 
298
 
 
299
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/List.h"
 
300
 
 
301
  ListElement *_first;
 
302
  ListElement *_last;
 
303
 
 
304
public:
 
305
  List () : _first ((ListElement*)0), _last ((ListElement*)0) {}
 
306
  List (const List &);
 
307
  ~List();
 
308
 
 
309
  List &operator = (const List &);
 
310
  List &operator += (const List &);
 
311
  List operator + (const List &);
 
312
 
 
313
  void clear ();
 
314
 
 
315
  void append (ListElement &);
 
316
  void prepend (ListElement &);
 
317
  void insert (ListElement *at, ListElement &element);
 
318
  void remove (ListElement *element);
 
319
  void kill (ListElement *from, ListElement *to = (ListElement*)0)
 
320
   { List discard; cut (discard, from, to); }
 
321
 
 
322
  void cut (List &out, ListElement *from, ListElement *to = (ListElement*)0);
 
323
  //List *cut (ListElement *from, ListElement *to = (ListElement*)0);
 
324
  List *copy (ListElement *from = (ListElement*)0, 
 
325
              ListElement *to = (ListElement*)0);
 
326
  void paste (ListElement *at, const List &l);
 
327
  void paste_before (ListElement *at, const List &l);
 
328
  void move (ListElement *at, List &l);
 
329
  void move_before (ListElement *at, List &l);
 
330
 
 
331
  bool empty () const { return _first == (ListElement*)0; }
 
332
  const ListElement *first () const { return _first; }
 
333
  const ListElement *last () const { return _last; }
 
334
  const ListElement *next (const ListElement *element) const
 
335
   { return element ? element->_next : 0; }
 
336
  const ListElement *prev (const ListElement *element) const 
 
337
   { return element ? element->_prev : 0; }
 
338
};
 
339
 
 
340
 
 
341
} // namespace Puma
 
342
 
 
343
#endif /* __list_h__ */
 
344
 
 
345
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Printable.h"
 
346
// This file is part of PUMA.
 
347
// Copyright (C) 1999-2003  The PUMA developer team.
 
348
//                                                                
 
349
// This program is free software;  you can redistribute it and/or 
 
350
// modify it under the terms of the GNU General Public License as 
 
351
// published by the Free Software Foundation; either version 2 of 
 
352
// the License, or (at your option) any later version.            
 
353
//                                                                
 
354
// This program is distributed in the hope that it will be useful,
 
355
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
356
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
357
// GNU General Public License for more details.                   
 
358
//                                                                
 
359
// You should have received a copy of the GNU General Public      
 
360
// License along with this program; if not, write to the Free     
 
361
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
362
// MA  02111-1307  USA                                            
 
363
 
 
364
#ifndef __printable_h__
 
365
#define __printable_h__
 
366
 
 
367
#include <iostream>
 
368
using namespace std;
 
369
 
 
370
namespace Puma {
 
371
 
 
372
 
 
373
 
 
374
#line 375 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
375
} // closed Puma
 
376
class CCExprResolve;
 
377
class CExprResolve;
 
378
class WinIfExists;
 
379
class WinImportHandler;
 
380
class WinMacros;
 
381
class WinAsm;
 
382
class WinDeclSpecs;
 
383
class WinMemberExplSpec;
 
384
class WinTypeKeywords;
 
385
class WinFriend;
 
386
class ExtAC;
 
387
class ExtACBuilderCoupling;
 
388
class ExtACSyntaxCoupling;
 
389
class ExtACTree;
 
390
class ExtACKeywords;
 
391
class ExtGnu;
 
392
class PragmaOnceUnitState;
 
393
class PragmaOnce;
 
394
class CMatchSyntax;
 
395
namespace Puma {
 
396
 
 
397
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Printable.h"
 
398
class Printable {
 
399
#line 400 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
400
  friend class ::CCExprResolve;
 
401
  friend class ::CExprResolve;
 
402
  friend class ::WinIfExists;
 
403
  friend class ::WinImportHandler;
 
404
  friend class ::WinMacros;
 
405
  friend class ::WinAsm;
 
406
  friend class ::WinDeclSpecs;
 
407
  friend class ::WinMemberExplSpec;
 
408
  friend class ::WinTypeKeywords;
 
409
  friend class ::WinFriend;
 
410
  friend class ::ExtAC;
 
411
  friend class ::ExtACBuilderCoupling;
 
412
  friend class ::ExtACSyntaxCoupling;
 
413
  friend class ::ExtACTree;
 
414
  friend class ::ExtACKeywords;
 
415
  friend class ::ExtGnu;
 
416
  friend class ::PragmaOnceUnitState;
 
417
  friend class ::PragmaOnce;
 
418
  friend class ::CMatchSyntax;
 
419
 
 
420
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Printable.h"
 
421
 
 
422
public:
 
423
  virtual ~Printable () {}
 
424
  virtual void print (ostream &os) const = 0;
 
425
};
 
426
 
 
427
 
 
428
inline ostream &operator << (ostream &os, const Printable &object) {
 
429
  object.print (os);
 
430
  return os;
 
431
}
 
432
 
 
433
 
 
434
} // namespace Puma
 
435
 
 
436
#endif /* __printable_h__ */
 
437
 
 
438
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
439
 
 
440
#line 441 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
441
 
 
442
#ifndef __ac_fwd_PragmaOnceUnitState__
 
443
#define __ac_fwd_PragmaOnceUnitState__
 
444
class PragmaOnceUnitState;
 
445
namespace AC {
 
446
  template <class JoinPoint>
 
447
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp);
 
448
  template <class JoinPoint>
 
449
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after (JoinPoint *tjp);
 
450
}
 
451
#endif
 
452
 
 
453
#ifndef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
454
#define __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
455
#endif
 
456
 
 
457
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
458
// This file is part of PUMA.
 
459
// Copyright (C) 1999-2003  The PUMA developer team.
 
460
//                                                                
 
461
// This program is free software;  you can redistribute it and/or 
 
462
// modify it under the terms of the GNU General Public License as 
 
463
// published by the Free Software Foundation; either version 2 of 
 
464
// the License, or (at your option) any later version.            
 
465
//                                                                
 
466
// This program is distributed in the hope that it will be useful,
 
467
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
468
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
469
// GNU General Public License for more details.                   
 
470
//                                                                
 
471
// You should have received a copy of the GNU General Public      
 
472
// License along with this program; if not, write to the Free     
 
473
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
474
// MA  02111-1307  USA                                            
 
475
 
 
476
#ifndef __UnitState__
 
477
#define __UnitState__
 
478
 
 
479
// The state of a unit: 
 
480
// 1. modified by manipulations and not updated at the class registry
 
481
// 2. modified by manipulations and updated at the class registry
 
482
// 3. unmodified by manipulations and not updated at the class registry
 
483
// 4. unmodified by manipulations and updated at the class registry
 
484
 
 
485
namespace Puma {
 
486
 
 
487
 
 
488
 
 
489
#line 490 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
490
} // closed Puma
 
491
class CCExprResolve;
 
492
class CExprResolve;
 
493
class WinIfExists;
 
494
class WinImportHandler;
 
495
class WinMacros;
 
496
class WinAsm;
 
497
class WinDeclSpecs;
 
498
class WinMemberExplSpec;
 
499
class WinTypeKeywords;
 
500
class WinFriend;
 
501
class ExtAC;
 
502
class ExtACBuilderCoupling;
 
503
class ExtACSyntaxCoupling;
 
504
class ExtACTree;
 
505
class ExtACKeywords;
 
506
class ExtGnu;
 
507
class PragmaOnceUnitState;
 
508
class PragmaOnce;
 
509
class CMatchSyntax;
 
510
namespace Puma {
 
511
 
 
512
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
513
 
 
514
#line 515 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
515
} // closed Puma
 
516
 
 
517
#ifndef __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
518
#define __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
519
 
 
520
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
521
// This file is part of PUMA.
 
522
// Copyright (C) 1999-2003  The PUMA developer team.
 
523
//                                                                
 
524
// This program is free software;  you can redistribute it and/or 
 
525
// modify it under the terms of the GNU General Public License as 
 
526
// published by the Free Software Foundation; either version 2 of 
 
527
// the License, or (at your option) any later version.            
 
528
//                                                                
 
529
// This program is distributed in the hope that it will be useful,
 
530
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
531
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
532
// GNU General Public License for more details.                   
 
533
//                                                                
 
534
// You should have received a copy of the GNU General Public      
 
535
// License along with this program; if not, write to the Free     
 
536
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
537
// MA  02111-1307  USA                                            
 
538
 
 
539
#ifndef __PragmaOnceUnitState__
 
540
#define __PragmaOnceUnitState__
 
541
 
 
542
 
 
543
#line 544 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
544
class CCExprResolve;
 
545
class CExprResolve;
 
546
class WinIfExists;
 
547
class WinImportHandler;
 
548
class WinMacros;
 
549
class WinAsm;
 
550
class WinDeclSpecs;
 
551
class WinMemberExplSpec;
 
552
class WinTypeKeywords;
 
553
class WinFriend;
 
554
class ExtAC;
 
555
class ExtACBuilderCoupling;
 
556
class ExtACSyntaxCoupling;
 
557
class ExtACTree;
 
558
class ExtACKeywords;
 
559
class ExtGnu;
 
560
class PragmaOnce;
 
561
class CMatchSyntax;
 
562
 
 
563
#line 22 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
564
class PragmaOnceUnitState {
 
565
#line 566 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
566
 
 
567
public:
 
568
  static PragmaOnceUnitState *aspectof () {
 
569
    static PragmaOnceUnitState __instance;
 
570
    return &__instance;
 
571
  }
 
572
  static PragmaOnceUnitState *aspectOf () {
 
573
    return aspectof ();
 
574
  }
 
575
private:
 
576
 
 
577
#line 22 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
578
 
 
579
#line 580 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
580
  friend class ::CCExprResolve;
 
581
  friend class ::CExprResolve;
 
582
  friend class ::WinIfExists;
 
583
  friend class ::WinImportHandler;
 
584
  friend class ::WinMacros;
 
585
  friend class ::WinAsm;
 
586
  friend class ::WinDeclSpecs;
 
587
  friend class ::WinMemberExplSpec;
 
588
  friend class ::WinTypeKeywords;
 
589
  friend class ::WinFriend;
 
590
  friend class ::ExtAC;
 
591
  friend class ::ExtACBuilderCoupling;
 
592
  friend class ::ExtACSyntaxCoupling;
 
593
  friend class ::ExtACTree;
 
594
  friend class ::ExtACKeywords;
 
595
  friend class ::ExtGnu;
 
596
  friend class ::PragmaOnce;
 
597
  friend class ::CMatchSyntax;
 
598
 
 
599
#line 22 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
600
 
 
601
  /******************************************************/
 
602
  /* specific #pragma once unit state                   */
 
603
  /******************************************************/
 
604
 
 
605
  // pointcut definitions
 
606
  
 
607
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
608
 
 
609
 
 
610
  
 
611
#line 37 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
612
 
 
613
  
 
614
  // initialize new state flag
 
615
  
 
616
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
617
 
 
618
public: template<class JoinPoint> void __a0_after 
 
619
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
620
 
 
621
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
622
(JoinPoint *tjp)
 
623
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
624
 {
 
625
#line 626 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
626
 
 
627
  JoinPoint *&thisJoinPoint = tjp;
 
628
 
 
629
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
630
 
 
631
#line 632 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
632
 
 
633
  typedef typename JoinPoint::That __JP_That;
 
634
  typedef typename JoinPoint::Target __JP_Target;
 
635
  typedef typename JoinPoint::Result __JP_Result;
 
636
 
 
637
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
638
 
 
639
    thisJoinPoint->that ()->_once = false;
 
640
  }
 
641
#line 642 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
642
 
 
643
private:
 
644
 
 
645
#line 42 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
646
 
 
647
  
 
648
  // initialize new flag for all managed units 
 
649
  
 
650
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
651
 
 
652
public: template<class JoinPoint> void __a1_after 
 
653
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
654
 
 
655
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
656
(JoinPoint *tjp)
 
657
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
658
 {
 
659
#line 660 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
660
 
 
661
  typedef typename JoinPoint::That __JP_That;
 
662
  typedef typename JoinPoint::Target __JP_Target;
 
663
  typedef typename JoinPoint::Result __JP_Result;
 
664
 
 
665
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
666
 
 
667
    // go through the whole unit hash table and reset the 
 
668
    // `#pragma once' state of the units
 
669
    typename __JP_That
 
670
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
671
::UMapIter iter;
 
672
    for (iter = tjp->that()->_umap.begin (); iter != tjp->that()->_umap.end (); ++iter)
 
673
      (*iter).second->state ().onlyOnce (false);
 
674
  }
 
675
#line 676 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
676
 
 
677
private:
 
678
 
 
679
#line 51 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
680
 
 
681
 
 
682
protected:
 
683
  // this aspect should never be instantiated directly
 
684
  PragmaOnceUnitState () {}
 
685
};
 
686
#line 687 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
687
 
 
688
namespace AC {
 
689
  template <class JoinPoint>
 
690
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp) {
 
691
    ::PragmaOnceUnitState::aspectof()->__a0_after (tjp);
 
692
  }
 
693
  template <class JoinPoint>
 
694
  __attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after (JoinPoint *tjp) {
 
695
    ::PragmaOnceUnitState::aspectof()->__a1_after (tjp);
 
696
  }
 
697
 
698
 
 
699
#line 56 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
700
 
 
701
 
 
702
 
 
703
#endif /* __PragmaOnceUnitState__ */
 
704
 
 
705
#line 8 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
706
#endif
 
707
namespace Puma {
 
708
 
 
709
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
710
class UnitState {
 
711
#line 712 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
712
  friend class ::CCExprResolve;
 
713
  friend class ::CExprResolve;
 
714
  friend class ::WinIfExists;
 
715
  friend class ::WinImportHandler;
 
716
  friend class ::WinMacros;
 
717
  friend class ::WinAsm;
 
718
  friend class ::WinDeclSpecs;
 
719
  friend class ::WinMemberExplSpec;
 
720
  friend class ::WinTypeKeywords;
 
721
  friend class ::WinFriend;
 
722
  friend class ::ExtAC;
 
723
  friend class ::ExtACBuilderCoupling;
 
724
  friend class ::ExtACSyntaxCoupling;
 
725
  friend class ::ExtACTree;
 
726
  friend class ::ExtACKeywords;
 
727
  friend class ::ExtGnu;
 
728
  friend class ::PragmaOnceUnitState;
 
729
  friend class ::PragmaOnce;
 
730
  friend class ::CMatchSyntax;
 
731
 
 
732
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
733
 
 
734
  bool _modified;
 
735
  bool _updated;
 
736
  long _lastModified;
 
737
      
 
738
public:
 
739
  
 
740
#line 741 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
741
public: __attribute__((always_inline)) inline void __exec_old_C1();
 
742
 
 
743
#line 37 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
744
UnitState ();
 
745
      
 
746
  bool isModified () const;
 
747
  bool isUpdated () const;
 
748
  long lastModified () const;
 
749
 
 
750
  // Is modified and has to be updated.
 
751
  void modified ();
 
752
  void lastModified (long);
 
753
  void unmodified ();
 
754
  void updated ();
 
755
   private:
 
756
 
 
757
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
758
 bool _once ;
 
759
public :
 
760
 
 
761
bool onlyOnce ( ) const { return _once ; }
 
762
void onlyOnce ( bool v ) { _once = v ; }
 
763
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
764
 
 
765
#line 766 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
766
 
 
767
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 {
 
768
  typedef TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 __TJP;
 
769
  typedef TResult Result;
 
770
  typedef TThat   That;
 
771
  typedef TTarget Target;
 
772
  enum { ARGS = TArgs::ARGS };
 
773
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
774
  static const int JPID = 3280;
 
775
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
776
  struct Res {
 
777
    typedef void Type;
 
778
    typedef void ReferredType;
 
779
  };
 
780
 
 
781
  That *_that;
 
782
 
 
783
  inline That *that() {return (That*)_that;}
 
784
 
 
785
};
 
786
 
 
787
 
 
788
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
789
 
 
790
#line 791 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
791
 
 
792
public:
 
793
inline UnitState (const Puma::UnitState & arg0) : _modified (arg0._modified), _updated (arg0._updated), _lastModified (arg0._lastModified), _once (arg0._once) {
 
794
  typedef TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0< void, ::Puma::UnitState , ::Puma::UnitState ,  AC::TL< const ::Puma::UnitState & , AC::TLE > > __TJP;
 
795
  __TJP tjp;
 
796
  tjp._that =  (__TJP::That*)this;
 
797
  AC::invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after<__TJP> (&tjp);
 
798
 
 
799
}
 
800
 
 
801
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
802
};
 
803
 
 
804
 
 
805
#line 806 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
806
 
 
807
 
 
808
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma9UnitStateC1Ev_0 {
 
809
  typedef TJP__ZN4Puma9UnitStateC1Ev_0 __TJP;
 
810
  typedef TResult Result;
 
811
  typedef TThat   That;
 
812
  typedef TTarget Target;
 
813
  enum { ARGS = TArgs::ARGS };
 
814
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
815
  static const int JPID = 3256;
 
816
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
817
  struct Res {
 
818
    typedef void Type;
 
819
    typedef void ReferredType;
 
820
  };
 
821
 
 
822
  That *_that;
 
823
 
 
824
  inline That *that() {return (That*)_that;}
 
825
 
 
826
};
 
827
 
 
828
 
 
829
#line 50 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
830
inline UnitState::UnitState ()
 
831
 
 
832
#line 833 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
833
{
 
834
  typedef TJP__ZN4Puma9UnitStateC1Ev_0< void, ::Puma::UnitState , ::Puma::UnitState ,  AC::TLE > __TJP;
 
835
    __TJP tjp;
 
836
  tjp._that =  (__TJP::That*)this;
 
837
    this->__exec_old_C1();
 
838
  AC::invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after<__TJP> (&tjp);
 
839
  
 
840
}
 
841
__attribute__((always_inline)) inline void Puma::UnitState::__exec_old_C1()
 
842
#line 51 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
843
{ _modified = false; _updated = false; _lastModified = 0; }
 
844
 
 
845
inline bool UnitState::isModified () const 
 
846
 { return _modified; }
 
847
inline bool UnitState::isUpdated () const 
 
848
 { return _updated; }
 
849
inline long UnitState::lastModified () const
 
850
 { return _lastModified; }
 
851
 
 
852
inline void UnitState::modified () 
 
853
 { _modified = true; _updated = false; _lastModified = 0; }
 
854
inline void UnitState::unmodified () 
 
855
 { _modified = false; }
 
856
inline void UnitState::updated () 
 
857
 { _updated = true; }
 
858
inline void UnitState::lastModified (long when) 
 
859
 { _lastModified = when; }
 
860
 
 
861
 
 
862
} // namespace Puma
 
863
 
 
864
#endif /* __UnitState__ */
 
865
 
 
866
#line 26 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Unit.h"
 
867
namespace Puma {
 
868
 
 
869
 
 
870
 
 
871
#line 872 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
872
} // closed Puma
 
873
class CCExprResolve;
 
874
class CExprResolve;
 
875
class WinIfExists;
 
876
class WinImportHandler;
 
877
class WinMacros;
 
878
class WinAsm;
 
879
class WinDeclSpecs;
 
880
class WinMemberExplSpec;
 
881
class WinTypeKeywords;
 
882
class WinFriend;
 
883
class ExtAC;
 
884
class ExtACBuilderCoupling;
 
885
class ExtACSyntaxCoupling;
 
886
class ExtACTree;
 
887
class ExtACKeywords;
 
888
class ExtGnu;
 
889
class PragmaOnceUnitState;
 
890
class PragmaOnce;
 
891
class CMatchSyntax;
 
892
namespace Puma {
 
893
 
 
894
#line 29 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Unit.h"
 
895
class Unit : public List, public Printable {
 
896
#line 897 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
897
  friend class ::CCExprResolve;
 
898
  friend class ::CExprResolve;
 
899
  friend class ::WinIfExists;
 
900
  friend class ::WinImportHandler;
 
901
  friend class ::WinMacros;
 
902
  friend class ::WinAsm;
 
903
  friend class ::WinDeclSpecs;
 
904
  friend class ::WinMemberExplSpec;
 
905
  friend class ::WinTypeKeywords;
 
906
  friend class ::WinFriend;
 
907
  friend class ::ExtAC;
 
908
  friend class ::ExtACBuilderCoupling;
 
909
  friend class ::ExtACSyntaxCoupling;
 
910
  friend class ::ExtACTree;
 
911
  friend class ::ExtACKeywords;
 
912
  friend class ::ExtGnu;
 
913
  friend class ::PragmaOnceUnitState;
 
914
  friend class ::PragmaOnce;
 
915
  friend class ::CMatchSyntax;
 
916
 
 
917
#line 29 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Unit.h"
 
918
 
 
919
  char *_name;
 
920
  UnitState _state;
 
921
 
 
922
public:
 
923
  Unit () : List (), _name ((char*)0) {}
 
924
  Unit (const List &list) : List (list), _name ((char*)0) {}
 
925
  virtual ~Unit ();
 
926
  virtual void name (const char *);
 
927
  char *name () const { return _name; }
 
928
  virtual void print (ostream &os) const;
 
929
  virtual bool isFile () const { return false; }
 
930
  virtual bool isMacroExp () const { return false; }
 
931
  UnitState &state () { return _state; }
 
932
};
 
933
 
 
934
 
 
935
} // namespace Puma
 
936
 
 
937
#endif /* __unit_h__ */
 
938
 
 
939
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Source.h"
 
940
// This file is part of PUMA.
 
941
// Copyright (C) 1999-2003  The PUMA developer team.
 
942
//                                                                
 
943
// This program is free software;  you can redistribute it and/or 
 
944
// modify it under the terms of the GNU General Public License as 
 
945
// published by the Free Software Foundation; either version 2 of 
 
946
// the License, or (at your option) any later version.            
 
947
//                                                                
 
948
// This program is distributed in the hope that it will be useful,
 
949
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
950
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
951
// GNU General Public License for more details.                   
 
952
//                                                                
 
953
// You should have received a copy of the GNU General Public      
 
954
// License along with this program; if not, write to the Free     
 
955
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
956
// MA  02111-1307  USA                                            
 
957
 
 
958
#ifndef __source_h__
 
959
#define __source_h__
 
960
 
 
961
namespace Puma {
 
962
 
 
963
 
 
964
 
 
965
#line 966 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
966
} // closed Puma
 
967
class CCExprResolve;
 
968
class CExprResolve;
 
969
class WinIfExists;
 
970
class WinImportHandler;
 
971
class WinMacros;
 
972
class WinAsm;
 
973
class WinDeclSpecs;
 
974
class WinMemberExplSpec;
 
975
class WinTypeKeywords;
 
976
class WinFriend;
 
977
class ExtAC;
 
978
class ExtACBuilderCoupling;
 
979
class ExtACSyntaxCoupling;
 
980
class ExtACTree;
 
981
class ExtACKeywords;
 
982
class ExtGnu;
 
983
class PragmaOnceUnitState;
 
984
class PragmaOnce;
 
985
class CMatchSyntax;
 
986
namespace Puma {
 
987
 
 
988
#line 25 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Source.h"
 
989
class Source {
 
990
#line 991 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
991
  friend class ::CCExprResolve;
 
992
  friend class ::CExprResolve;
 
993
  friend class ::WinIfExists;
 
994
  friend class ::WinImportHandler;
 
995
  friend class ::WinMacros;
 
996
  friend class ::WinAsm;
 
997
  friend class ::WinDeclSpecs;
 
998
  friend class ::WinMemberExplSpec;
 
999
  friend class ::WinTypeKeywords;
 
1000
  friend class ::WinFriend;
 
1001
  friend class ::ExtAC;
 
1002
  friend class ::ExtACBuilderCoupling;
 
1003
  friend class ::ExtACSyntaxCoupling;
 
1004
  friend class ::ExtACTree;
 
1005
  friend class ::ExtACKeywords;
 
1006
  friend class ::ExtGnu;
 
1007
  friend class ::PragmaOnceUnitState;
 
1008
  friend class ::PragmaOnce;
 
1009
  friend class ::CMatchSyntax;
 
1010
 
 
1011
#line 25 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Source.h"
 
1012
 
 
1013
public:
 
1014
  Source () {}
 
1015
  virtual ~Source () {}
 
1016
  virtual int read (char *dest, int n) = 0;
 
1017
  virtual int size () { return -1; }
 
1018
};
 
1019
 
 
1020
 
 
1021
} // namespace Puma
 
1022
 
 
1023
#endif /* __source_h__ */
 
1024
 
 
1025
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
1026
// This file is part of PUMA.
 
1027
// Copyright (C) 1999-2003  The PUMA developer team.
 
1028
//                                                                
 
1029
// This program is free software;  you can redistribute it and/or 
 
1030
// modify it under the terms of the GNU General Public License as 
 
1031
// published by the Free Software Foundation; either version 2 of 
 
1032
// the License, or (at your option) any later version.            
 
1033
//                                                                
 
1034
// This program is distributed in the hope that it will be useful,
 
1035
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1036
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1037
// GNU General Public License for more details.                   
 
1038
//                                                                
 
1039
// You should have received a copy of the GNU General Public      
 
1040
// License along with this program; if not, write to the Free     
 
1041
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1042
// MA  02111-1307  USA                                            
 
1043
 
 
1044
#ifndef __SysCall_h__
 
1045
#define __SysCall_h__
 
1046
 
 
1047
// Encapsulate some system calls. 
 
1048
 
 
1049
#include <time.h>
 
1050
#include <stdio.h>
 
1051
#include <stddef.h>
 
1052
#include <sys/stat.h>
 
1053
 
 
1054
#line 29 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
1055
#ifdef _MSC_VER
27
1056
#include <string.h>
 
1057
#include <stdlib.h>
 
1058
#else
 
1059
#include <dirent.h>
 
1060
#endif // _MSVC
 
1061
 
 
1062
 
 
1063
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Filename.h"
 
1064
// This file is part of PUMA.
 
1065
// Copyright (C) 1999-2003  The PUMA developer team.
 
1066
//                                                                
 
1067
// This program is free software;  you can redistribute it and/or 
 
1068
// modify it under the terms of the GNU General Public License as 
 
1069
// published by the Free Software Foundation; either version 2 of 
 
1070
// the License, or (at your option) any later version.            
 
1071
//                                                                
 
1072
// This program is distributed in the hope that it will be useful,
 
1073
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1074
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1075
// GNU General Public License for more details.                   
 
1076
//                                                                
 
1077
// You should have received a copy of the GNU General Public      
 
1078
// License along with this program; if not, write to the Free     
 
1079
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1080
// MA  02111-1307  USA                                            
 
1081
 
 
1082
#ifndef __filename_h__
 
1083
#define __filename_h__
 
1084
 
 
1085
 
 
1086
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
1087
// This file is part of PUMA.
 
1088
// Copyright (C) 1999-2003  The PUMA developer team.
 
1089
//                                                                
 
1090
// This program is free software;  you can redistribute it and/or 
 
1091
// modify it under the terms of the GNU General Public License as 
 
1092
// published by the Free Software Foundation; either version 2 of 
 
1093
// the License, or (at your option) any later version.            
 
1094
//                                                                
 
1095
// This program is distributed in the hope that it will be useful,
 
1096
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1097
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1098
// GNU General Public License for more details.                   
 
1099
//                                                                
 
1100
// You should have received a copy of the GNU General Public      
 
1101
// License along with this program; if not, write to the Free     
 
1102
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1103
// MA  02111-1307  USA                                            
 
1104
 
 
1105
#ifndef __smart_ptr_h__
 
1106
#define __smart_ptr_h__
 
1107
 
 
1108
 
 
1109
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
1110
// This file is part of PUMA.
 
1111
// Copyright (C) 1999-2003  The PUMA developer team.
 
1112
//                                                                
 
1113
// This program is free software;  you can redistribute it and/or 
 
1114
// modify it under the terms of the GNU General Public License as 
 
1115
// published by the Free Software Foundation; either version 2 of 
 
1116
// the License, or (at your option) any later version.            
 
1117
//                                                                
 
1118
// This program is distributed in the hope that it will be useful,
 
1119
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1120
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1121
// GNU General Public License for more details.                   
 
1122
//                                                                
 
1123
// You should have received a copy of the GNU General Public      
 
1124
// License along with this program; if not, write to the Free     
 
1125
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1126
// MA  02111-1307  USA                                            
 
1127
 
 
1128
#ifndef __ref_cnt_h__
 
1129
#define __ref_cnt_h__
 
1130
 
 
1131
namespace Puma {
 
1132
 
 
1133
 
 
1134
 
 
1135
#line 1136 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1136
} // closed Puma
 
1137
class CCExprResolve;
 
1138
class CExprResolve;
 
1139
class WinIfExists;
 
1140
class WinImportHandler;
 
1141
class WinMacros;
 
1142
class WinAsm;
 
1143
class WinDeclSpecs;
 
1144
class WinMemberExplSpec;
 
1145
class WinTypeKeywords;
 
1146
class WinFriend;
 
1147
class ExtAC;
 
1148
class ExtACBuilderCoupling;
 
1149
class ExtACSyntaxCoupling;
 
1150
class ExtACTree;
 
1151
class ExtACKeywords;
 
1152
class ExtGnu;
 
1153
class PragmaOnceUnitState;
 
1154
class PragmaOnce;
 
1155
class CMatchSyntax;
 
1156
namespace Puma {
 
1157
 
 
1158
#line 25 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
1159
class RefCnt {
 
1160
#line 1161 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1161
  friend class ::CCExprResolve;
 
1162
  friend class ::CExprResolve;
 
1163
  friend class ::WinIfExists;
 
1164
  friend class ::WinImportHandler;
 
1165
  friend class ::WinMacros;
 
1166
  friend class ::WinAsm;
 
1167
  friend class ::WinDeclSpecs;
 
1168
  friend class ::WinMemberExplSpec;
 
1169
  friend class ::WinTypeKeywords;
 
1170
  friend class ::WinFriend;
 
1171
  friend class ::ExtAC;
 
1172
  friend class ::ExtACBuilderCoupling;
 
1173
  friend class ::ExtACSyntaxCoupling;
 
1174
  friend class ::ExtACTree;
 
1175
  friend class ::ExtACKeywords;
 
1176
  friend class ::ExtGnu;
 
1177
  friend class ::PragmaOnceUnitState;
 
1178
  friend class ::PragmaOnce;
 
1179
  friend class ::CMatchSyntax;
 
1180
 
 
1181
#line 25 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
1182
 
 
1183
  int _counter;
 
1184
 
 
1185
public:
 
1186
  RefCnt () : _counter (0) {}
 
1187
  virtual ~RefCnt () {}
 
1188
  
 
1189
  void ref () { _counter++; }
 
1190
  void deref () { _counter--; }
 
1191
  int counter () { return _counter; }
 
1192
};
 
1193
 
 
1194
 
 
1195
} // namespace Puma
 
1196
 
 
1197
#endif /* __ref_cnt_h__ */
 
1198
 
 
1199
#line 24 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
1200
namespace Puma {
 
1201
 
 
1202
 
 
1203
 
 
1204
#line 1205 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1205
} // closed Puma
 
1206
class CCExprResolve;
 
1207
class CExprResolve;
 
1208
class WinIfExists;
 
1209
class WinImportHandler;
 
1210
class WinMacros;
 
1211
class WinAsm;
 
1212
class WinDeclSpecs;
 
1213
class WinMemberExplSpec;
 
1214
class WinTypeKeywords;
 
1215
class WinFriend;
 
1216
class ExtAC;
 
1217
class ExtACBuilderCoupling;
 
1218
class ExtACSyntaxCoupling;
 
1219
class ExtACTree;
 
1220
class ExtACKeywords;
 
1221
class ExtGnu;
 
1222
class PragmaOnceUnitState;
 
1223
class PragmaOnce;
 
1224
class CMatchSyntax;
 
1225
namespace Puma {
 
1226
 
 
1227
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
1228
class SmartPtr {
 
1229
#line 1230 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1230
  friend class ::CCExprResolve;
 
1231
  friend class ::CExprResolve;
 
1232
  friend class ::WinIfExists;
 
1233
  friend class ::WinImportHandler;
 
1234
  friend class ::WinMacros;
 
1235
  friend class ::WinAsm;
 
1236
  friend class ::WinDeclSpecs;
 
1237
  friend class ::WinMemberExplSpec;
 
1238
  friend class ::WinTypeKeywords;
 
1239
  friend class ::WinFriend;
 
1240
  friend class ::ExtAC;
 
1241
  friend class ::ExtACBuilderCoupling;
 
1242
  friend class ::ExtACSyntaxCoupling;
 
1243
  friend class ::ExtACTree;
 
1244
  friend class ::ExtACKeywords;
 
1245
  friend class ::ExtGnu;
 
1246
  friend class ::PragmaOnceUnitState;
 
1247
  friend class ::PragmaOnce;
 
1248
  friend class ::CMatchSyntax;
 
1249
 
 
1250
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
1251
 
 
1252
  RefCnt *_data;
 
1253
 
 
1254
public:
 
1255
  SmartPtr () : _data ((RefCnt*)0) {}
 
1256
  ~SmartPtr () { clear (); }
 
1257
  SmartPtr (const SmartPtr &copy);
 
1258
  SmartPtr (RefCnt *rc) : _data (rc) {}
 
1259
  SmartPtr &operator = (const SmartPtr &copy);
 
1260
 
 
1261
  void data (RefCnt *d);
 
1262
  void clear ();
 
1263
  RefCnt *data () const { return _data; }
 
1264
  bool is_defined () const { return _data != (RefCnt*)0; }
 
1265
};
 
1266
 
 
1267
 
 
1268
} // namespace Puma
 
1269
 
 
1270
#endif /* __smart_ptr_h__ */
 
1271
 
 
1272
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
1273
// This file is part of PUMA.
 
1274
// Copyright (C) 1999-2003  The PUMA developer team.
 
1275
//                                                                
 
1276
// This program is free software;  you can redistribute it and/or 
 
1277
// modify it under the terms of the GNU General Public License as 
 
1278
// published by the Free Software Foundation; either version 2 of 
 
1279
// the License, or (at your option) any later version.            
 
1280
//                                                                
 
1281
// This program is distributed in the hope that it will be useful,
 
1282
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1283
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1284
// GNU General Public License for more details.                   
 
1285
//                                                                
 
1286
// You should have received a copy of the GNU General Public      
 
1287
// License along with this program; if not, write to the Free     
 
1288
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1289
// MA  02111-1307  USA                                            
 
1290
 
 
1291
#ifndef __filename_info_h__
 
1292
#define __filename_info_h__
 
1293
 
 
1294
 
 
1295
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/DString.h"
 
1296
// This file is part of PUMA.
 
1297
// Copyright (C) 1999-2003  The PUMA developer team.
 
1298
//                                                                
 
1299
// This program is free software;  you can redistribute it and/or 
 
1300
// modify it under the terms of the GNU General Public License as 
 
1301
// published by the Free Software Foundation; either version 2 of 
 
1302
// the License, or (at your option) any later version.            
 
1303
//                                                                
 
1304
// This program is distributed in the hope that it will be useful,
 
1305
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1306
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1307
// GNU General Public License for more details.                   
 
1308
//                                                                
 
1309
// You should have received a copy of the GNU General Public      
 
1310
// License along with this program; if not, write to the Free     
 
1311
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1312
// MA  02111-1307  USA                                            
 
1313
 
 
1314
#ifndef __DString_h__
 
1315
#define __DString_h__
 
1316
 
 
1317
 
 
1318
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1319
// This file is part of PUMA.
 
1320
// Copyright (C) 1999-2003  The PUMA developer team.
 
1321
//                                                                
 
1322
// This program is free software;  you can redistribute it and/or 
 
1323
// modify it under the terms of the GNU General Public License as 
 
1324
// published by the Free Software Foundation; either version 2 of 
 
1325
// the License, or (at your option) any later version.            
 
1326
//                                                                
 
1327
// This program is distributed in the hope that it will be useful,
 
1328
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1329
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1330
// GNU General Public License for more details.                   
 
1331
//                                                                
 
1332
// You should have received a copy of the GNU General Public      
 
1333
// License along with this program; if not, write to the Free     
 
1334
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1335
// MA  02111-1307  USA                                            
 
1336
 
 
1337
#ifndef __StrHashTable_h__
 
1338
#define __StrHashTable_h__
 
1339
 
 
1340
 
 
1341
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1342
// This file is part of PUMA.
 
1343
// Copyright (C) 1999-2003  The PUMA developer team.
 
1344
//                                                                
 
1345
// This program is free software;  you can redistribute it and/or 
 
1346
// modify it under the terms of the GNU General Public License as 
 
1347
// published by the Free Software Foundation; either version 2 of 
 
1348
// the License, or (at your option) any later version.            
 
1349
//                                                                
 
1350
// This program is distributed in the hope that it will be useful,
 
1351
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1352
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1353
// GNU General Public License for more details.                   
 
1354
//                                                                
 
1355
// You should have received a copy of the GNU General Public      
 
1356
// License along with this program; if not, write to the Free     
 
1357
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1358
// MA  02111-1307  USA                                            
 
1359
 
 
1360
#ifndef __StrHashKey_h__
 
1361
#define __StrHashKey_h__
 
1362
 
 
1363
 
 
1364
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
1365
// This file is part of PUMA.
 
1366
// Copyright (C) 1999-2003  The PUMA developer team.
 
1367
//                                                                
 
1368
// This program is free software;  you can redistribute it and/or 
 
1369
// modify it under the terms of the GNU General Public License as 
 
1370
// published by the Free Software Foundation; either version 2 of 
 
1371
// the License, or (at your option) any later version.            
 
1372
//                                                                
 
1373
// This program is distributed in the hope that it will be useful,
 
1374
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1375
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1376
// GNU General Public License for more details.                   
 
1377
//                                                                
 
1378
// You should have received a copy of the GNU General Public      
 
1379
// License along with this program; if not, write to the Free     
 
1380
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1381
// MA  02111-1307  USA                                            
 
1382
 
 
1383
#ifndef __str_col__
 
1384
#define __str_col__
 
1385
 
 
1386
// Collection of functions handling strings.
 
1387
 
 
1388
namespace Puma {
 
1389
 
 
1390
 
 
1391
class Unit;
 
1392
 
 
1393
 
 
1394
#line 1395 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1395
} // closed Puma
 
1396
class CCExprResolve;
 
1397
class CExprResolve;
 
1398
class WinIfExists;
 
1399
class WinImportHandler;
 
1400
class WinMacros;
 
1401
class WinAsm;
 
1402
class WinDeclSpecs;
 
1403
class WinMemberExplSpec;
 
1404
class WinTypeKeywords;
 
1405
class WinFriend;
 
1406
class ExtAC;
 
1407
class ExtACBuilderCoupling;
 
1408
class ExtACSyntaxCoupling;
 
1409
class ExtACTree;
 
1410
class ExtACKeywords;
 
1411
class ExtGnu;
 
1412
class PragmaOnceUnitState;
 
1413
class PragmaOnce;
 
1414
class CMatchSyntax;
 
1415
namespace Puma {
 
1416
 
 
1417
#line 29 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
1418
class StrCol {
 
1419
#line 1420 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1420
  friend class ::CCExprResolve;
 
1421
  friend class ::CExprResolve;
 
1422
  friend class ::WinIfExists;
 
1423
  friend class ::WinImportHandler;
 
1424
  friend class ::WinMacros;
 
1425
  friend class ::WinAsm;
 
1426
  friend class ::WinDeclSpecs;
 
1427
  friend class ::WinMemberExplSpec;
 
1428
  friend class ::WinTypeKeywords;
 
1429
  friend class ::WinFriend;
 
1430
  friend class ::ExtAC;
 
1431
  friend class ::ExtACBuilderCoupling;
 
1432
  friend class ::ExtACSyntaxCoupling;
 
1433
  friend class ::ExtACTree;
 
1434
  friend class ::ExtACKeywords;
 
1435
  friend class ::ExtGnu;
 
1436
  friend class ::PragmaOnceUnitState;
 
1437
  friend class ::PragmaOnce;
 
1438
  friend class ::CMatchSyntax;
 
1439
 
 
1440
#line 29 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
1441
 
 
1442
protected:
 
1443
  StrCol () {}
 
1444
        
 
1445
public:
 
1446
  // Return true if c is a white space character.
 
1447
  static bool isSpace (const char c);
 
1448
 
 
1449
  // Return true if the string consists only of spaces.
 
1450
  static bool onlySpaces (const char *);
 
1451
 
 
1452
  // Return true if the two strings differ not only in spaces.
 
1453
  static bool effectivelyDifferent (const char *, const char *);
 
1454
 
 
1455
  // Build a string from a unit.
 
1456
  static char *buildString (Unit *);
 
1457
        
 
1458
  // Duplicate a string
 
1459
  static char *dup (const char *);
 
1460
  static char *dup (const char *, int);
 
1461
};
 
1462
 
 
1463
 
 
1464
} // namespace Puma
 
1465
 
 
1466
#endif /* __str_col__ */
 
1467
 
 
1468
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1469
// This file is part of PUMA.
 
1470
// Copyright (C) 1999-2003  The PUMA developer team.
 
1471
//                                                                
 
1472
// This program is free software;  you can redistribute it and/or 
 
1473
// modify it under the terms of the GNU General Public License as 
 
1474
// published by the Free Software Foundation; either version 2 of 
 
1475
// the License, or (at your option) any later version.            
 
1476
//                                                                
 
1477
// This program is distributed in the hope that it will be useful,
 
1478
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
1479
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
1480
// GNU General Public License for more details.                   
 
1481
//                                                                
 
1482
// You should have received a copy of the GNU General Public      
 
1483
// License along with this program; if not, write to the Free     
 
1484
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
1485
// MA  02111-1307  USA                                            
 
1486
 
 
1487
#ifndef __Chain_h__
 
1488
#define __Chain_h__
 
1489
 
 
1490
//
 
1491
// implements a simple chain
 
1492
// 
 
1493
 
 
1494
#ifndef __puma
 
1495
#include <iostream>
 
1496
using namespace std;
 
1497
#endif 
 
1498
 
 
1499
namespace Puma {
 
1500
 
 
1501
 
 
1502
 
 
1503
#line 1504 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1504
} // closed Puma
 
1505
class CCExprResolve;
 
1506
class CExprResolve;
 
1507
class WinIfExists;
 
1508
class WinImportHandler;
 
1509
class WinMacros;
 
1510
class WinAsm;
 
1511
class WinDeclSpecs;
 
1512
class WinMemberExplSpec;
 
1513
class WinTypeKeywords;
 
1514
class WinFriend;
 
1515
class ExtAC;
 
1516
class ExtACBuilderCoupling;
 
1517
class ExtACSyntaxCoupling;
 
1518
class ExtACTree;
 
1519
class ExtACKeywords;
 
1520
class ExtGnu;
 
1521
class PragmaOnceUnitState;
 
1522
class PragmaOnce;
 
1523
class CMatchSyntax;
 
1524
namespace Puma {
 
1525
 
 
1526
#line 34 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1527
class Chain {
 
1528
#line 1529 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1529
  friend class ::CCExprResolve;
 
1530
  friend class ::CExprResolve;
 
1531
  friend class ::WinIfExists;
 
1532
  friend class ::WinImportHandler;
 
1533
  friend class ::WinMacros;
 
1534
  friend class ::WinAsm;
 
1535
  friend class ::WinDeclSpecs;
 
1536
  friend class ::WinMemberExplSpec;
 
1537
  friend class ::WinTypeKeywords;
 
1538
  friend class ::WinFriend;
 
1539
  friend class ::ExtAC;
 
1540
  friend class ::ExtACBuilderCoupling;
 
1541
  friend class ::ExtACSyntaxCoupling;
 
1542
  friend class ::ExtACTree;
 
1543
  friend class ::ExtACKeywords;
 
1544
  friend class ::ExtGnu;
 
1545
  friend class ::PragmaOnceUnitState;
 
1546
  friend class ::PragmaOnce;
 
1547
  friend class ::CMatchSyntax;
 
1548
 
 
1549
#line 34 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1550
 
 
1551
  Chain *next;
 
1552
 
 
1553
public:
 
1554
  Chain () { next = 0; }
 
1555
   
 
1556
  void select (Chain *c) { next = c; }
 
1557
  Chain *select () const { return next; }
 
1558
 
 
1559
  Chain *unlink () {
 
1560
    Chain *res = next;
 
1561
    if (next) {
 
1562
      next = next->select ();
 
1563
    }
 
1564
    return res;
 
1565
  }
 
1566
 
 
1567
  void insert (Chain *c) {
 
1568
    c->select (next);
 
1569
    next = c;
 
1570
  }
 
1571
};
 
1572
 
 
1573
#ifndef __puma
 
1574
 
 
1575
 
 
1576
//
 
1577
// Chain with useage/max counter
 
1578
// 
 
1579
 
 
1580
class ChainCnt : public Chain {
 
1581
  const char* name;
 
1582
 
 
1583
public:
 
1584
  long long max, use;
 
1585
  
 
1586
  ChainCnt (const char *n) : name (n) { max = use = 0; }
 
1587
  ~ChainCnt () {
 
1588
    cout << "max list " << name << ": " << max << endl;
 
1589
  }
 
1590
 
 
1591
  Chain *unlink () {
 
1592
    Chain *c = Chain::unlink ();
 
1593
    if (c) 
 
1594
      use--;
 
1595
    return c;
 
1596
  }
 
1597
  
 
1598
  void insert (Chain *c) {
 
1599
    use++;
 
1600
    if(use > max) 
 
1601
      max = use;
 
1602
    Chain::insert (c);
 
1603
  }
 
1604
};
 
1605
 
 
1606
#endif /* __puma */
 
1607
 
 
1608
 
 
1609
} // namespace Puma
 
1610
 
 
1611
#endif /* __Chain_h__ */
 
1612
 
 
1613
#line 25 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1614
namespace Puma {
 
1615
 
 
1616
 
 
1617
 
 
1618
#line 1619 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1619
} // closed Puma
 
1620
class CCExprResolve;
 
1621
class CExprResolve;
 
1622
class WinIfExists;
 
1623
class WinImportHandler;
 
1624
class WinMacros;
 
1625
class WinAsm;
 
1626
class WinDeclSpecs;
 
1627
class WinMemberExplSpec;
 
1628
class WinTypeKeywords;
 
1629
class WinFriend;
 
1630
class ExtAC;
 
1631
class ExtACBuilderCoupling;
 
1632
class ExtACSyntaxCoupling;
 
1633
class ExtACTree;
 
1634
class ExtACKeywords;
 
1635
class ExtGnu;
 
1636
class PragmaOnceUnitState;
 
1637
class PragmaOnce;
 
1638
class CMatchSyntax;
 
1639
namespace Puma {
 
1640
 
 
1641
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1642
class StrHashKey : public Chain {
 
1643
#line 1644 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1644
  friend class ::CCExprResolve;
 
1645
  friend class ::CExprResolve;
 
1646
  friend class ::WinIfExists;
 
1647
  friend class ::WinImportHandler;
 
1648
  friend class ::WinMacros;
 
1649
  friend class ::WinAsm;
 
1650
  friend class ::WinDeclSpecs;
 
1651
  friend class ::WinMemberExplSpec;
 
1652
  friend class ::WinTypeKeywords;
 
1653
  friend class ::WinFriend;
 
1654
  friend class ::ExtAC;
 
1655
  friend class ::ExtACBuilderCoupling;
 
1656
  friend class ::ExtACSyntaxCoupling;
 
1657
  friend class ::ExtACTree;
 
1658
  friend class ::ExtACKeywords;
 
1659
  friend class ::ExtGnu;
 
1660
  friend class ::PragmaOnceUnitState;
 
1661
  friend class ::PragmaOnce;
 
1662
  friend class ::CMatchSyntax;
 
1663
 
 
1664
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1665
 
 
1666
  unsigned int m_Magic;
 
1667
  unsigned int m_Len;
 
1668
  const char  *m_Str;
 
1669
 
 
1670
  StrHashKey () : m_Len (0), m_Str (0) {}
 
1671
 
 
1672
public:
 
1673
  StrHashKey (int m, const char *s, int l) : 
 
1674
    m_Magic (m), m_Len (l), m_Str (StrCol::dup (s, l)) {}
 
1675
  ~StrHashKey () { if (m_Str) delete[] m_Str; }
 
1676
 
 
1677
  unsigned int getMagic () const { return m_Magic; }
 
1678
  unsigned int length () const { return m_Len; }
 
1679
  const char  *c_str () const { return m_Str; }
 
1680
};
 
1681
 
 
1682
 
 
1683
} // namespace Puma
 
1684
 
 
1685
#endif /* __StrHashKey_h__ */
 
1686
 
 
1687
#line 23 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1688
#include <assert.h>
 
1689
 
 
1690
namespace Puma {
 
1691
 
 
1692
 
 
1693
 
 
1694
#line 1695 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1695
} // closed Puma
 
1696
class CCExprResolve;
 
1697
class CExprResolve;
 
1698
class WinIfExists;
 
1699
class WinImportHandler;
 
1700
class WinMacros;
 
1701
class WinAsm;
 
1702
class WinDeclSpecs;
 
1703
class WinMemberExplSpec;
 
1704
class WinTypeKeywords;
 
1705
class WinFriend;
 
1706
class ExtAC;
 
1707
class ExtACBuilderCoupling;
 
1708
class ExtACSyntaxCoupling;
 
1709
class ExtACTree;
 
1710
class ExtACKeywords;
 
1711
class ExtGnu;
 
1712
class PragmaOnceUnitState;
 
1713
class PragmaOnce;
 
1714
class CMatchSyntax;
 
1715
namespace Puma {
 
1716
 
 
1717
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1718
class StrHashTable {
 
1719
#line 1720 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1720
  friend class ::CCExprResolve;
 
1721
  friend class ::CExprResolve;
 
1722
  friend class ::WinIfExists;
 
1723
  friend class ::WinImportHandler;
 
1724
  friend class ::WinMacros;
 
1725
  friend class ::WinAsm;
 
1726
  friend class ::WinDeclSpecs;
 
1727
  friend class ::WinMemberExplSpec;
 
1728
  friend class ::WinTypeKeywords;
 
1729
  friend class ::WinFriend;
 
1730
  friend class ::ExtAC;
 
1731
  friend class ::ExtACBuilderCoupling;
 
1732
  friend class ::ExtACSyntaxCoupling;
 
1733
  friend class ::ExtACTree;
 
1734
  friend class ::ExtACKeywords;
 
1735
  friend class ::ExtGnu;
 
1736
  friend class ::PragmaOnceUnitState;
 
1737
  friend class ::PragmaOnce;
 
1738
  friend class ::CMatchSyntax;
 
1739
 
 
1740
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1741
 
 
1742
  StrHashKey *_emptyKey;
 
1743
 
 
1744
public:
 
1745
  StrHashTable () {
 
1746
    _emptyKey = insert ("");
 
1747
    assert (_emptyKey);
 
1748
  }
 
1749
 
 
1750
  StrHashKey *empty () const { assert (_emptyKey); return _emptyKey; }
 
1751
  StrHashKey *insert (const char *);
 
1752
  void remove (StrHashKey *);
 
1753
  void clear ();
 
1754
 
 
1755
  enum { STRHASHTABLE_SIZE=0xffff };
 
1756
  
 
1757
private:
 
1758
  Chain m_Table[STRHASHTABLE_SIZE];
 
1759
 
 
1760
  StrHashKey *find (unsigned int, const char *, unsigned int);
 
1761
  unsigned int hash (const char *, unsigned int &);
 
1762
};
 
1763
 
 
1764
 
 
1765
} // namespace Puma
 
1766
 
 
1767
#endif /* __StrHashTable_h__ */
 
1768
 
 
1769
#line 23 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/DString.h"
 
1770
#include <assert.h>
 
1771
 
 
1772
namespace Puma {
 
1773
 
 
1774
 
 
1775
extern StrHashTable ___str_dict;
 
1776
 
 
1777
 
 
1778
#line 1779 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1779
} // closed Puma
 
1780
class CCExprResolve;
 
1781
class CExprResolve;
 
1782
class WinIfExists;
 
1783
class WinImportHandler;
 
1784
class WinMacros;
 
1785
class WinAsm;
 
1786
class WinDeclSpecs;
 
1787
class WinMemberExplSpec;
 
1788
class WinTypeKeywords;
 
1789
class WinFriend;
 
1790
class ExtAC;
 
1791
class ExtACBuilderCoupling;
 
1792
class ExtACSyntaxCoupling;
 
1793
class ExtACTree;
 
1794
class ExtACKeywords;
 
1795
class ExtGnu;
 
1796
class PragmaOnceUnitState;
 
1797
class PragmaOnce;
 
1798
class CMatchSyntax;
 
1799
namespace Puma {
 
1800
 
 
1801
#line 30 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/DString.h"
 
1802
class DString {
 
1803
#line 1804 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1804
  friend class ::CCExprResolve;
 
1805
  friend class ::CExprResolve;
 
1806
  friend class ::WinIfExists;
 
1807
  friend class ::WinImportHandler;
 
1808
  friend class ::WinMacros;
 
1809
  friend class ::WinAsm;
 
1810
  friend class ::WinDeclSpecs;
 
1811
  friend class ::WinMemberExplSpec;
 
1812
  friend class ::WinTypeKeywords;
 
1813
  friend class ::WinFriend;
 
1814
  friend class ::ExtAC;
 
1815
  friend class ::ExtACBuilderCoupling;
 
1816
  friend class ::ExtACSyntaxCoupling;
 
1817
  friend class ::ExtACTree;
 
1818
  friend class ::ExtACKeywords;
 
1819
  friend class ::ExtGnu;
 
1820
  friend class ::PragmaOnceUnitState;
 
1821
  friend class ::PragmaOnce;
 
1822
  friend class ::CMatchSyntax;
 
1823
 
 
1824
#line 30 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/DString.h"
 
1825
 
 
1826
  StrHashKey *m_Key;
 
1827
 
 
1828
public:
 
1829
  DString () {
 
1830
    m_Key = ___str_dict.empty ();
 
1831
    assert (m_Key);
 
1832
  }
 
1833
  DString (const char *s) {
 
1834
    if(s == 0) {
 
1835
      m_Key = ___str_dict.empty ();
 
1836
    } else {
 
1837
      m_Key = ___str_dict.insert (s);
 
1838
    }
 
1839
    assert (m_Key);
 
1840
  }
 
1841
  DString (const DString &s) : m_Key (s.m_Key) {
 
1842
    assert (s.m_Key);
 
1843
  }
 
1844
  
 
1845
  DString &operator = (const DString &s) {
 
1846
    assert (s.m_Key);
 
1847
    m_Key = s.m_Key;
 
1848
    return *this;
 
1849
  }
 
1850
  
 
1851
  DString &operator = (const char *s) {
 
1852
    if(s == 0) {
 
1853
      m_Key = ___str_dict.empty ();
 
1854
    } else {
 
1855
      m_Key = ___str_dict.insert (s);
 
1856
    }
 
1857
    assert (m_Key);
 
1858
    return *this;
 
1859
  }
 
1860
 
 
1861
  bool operator == (const DString &s) const { 
 
1862
    assert (m_Key && s.m_Key);
 
1863
    return m_Key == s.m_Key; 
 
1864
  }
 
1865
  bool operator != (const DString &s) const { 
 
1866
    assert (m_Key && s.m_Key);
 
1867
    return m_Key != s.m_Key; 
 
1868
  }
 
1869
 
 
1870
  const char *c_str() const { 
 
1871
    assert (m_Key);
 
1872
    return m_Key->c_str (); 
 
1873
  }
 
1874
  unsigned int length () const { 
 
1875
    assert (m_Key);
 
1876
    return m_Key->length (); 
 
1877
  }
 
1878
  bool empty () const {
 
1879
    assert (m_Key);
 
1880
    return m_Key->length () == 0;
 
1881
  }
 
1882
  unsigned int magic () const { 
 
1883
    assert (m_Key);
 
1884
    return m_Key->getMagic (); 
 
1885
  }
 
1886
 
 
1887
  operator const char *() const {
 
1888
    assert (m_Key);
 
1889
    return c_str ();
 
1890
  }
 
1891
  
 
1892
  static void clearDict() {
 
1893
    ___str_dict.clear ();
 
1894
  }
 
1895
};
 
1896
 
 
1897
 
 
1898
} // namespace Puma
 
1899
 
 
1900
#endif /* __DString_h__ */
 
1901
 
 
1902
#line 25 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
1903
namespace Puma {
 
1904
 
 
1905
 
 
1906
 
 
1907
#line 1908 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1908
} // closed Puma
 
1909
class CCExprResolve;
 
1910
class CExprResolve;
 
1911
class WinIfExists;
 
1912
class WinImportHandler;
 
1913
class WinMacros;
 
1914
class WinAsm;
 
1915
class WinDeclSpecs;
 
1916
class WinMemberExplSpec;
 
1917
class WinTypeKeywords;
 
1918
class WinFriend;
 
1919
class ExtAC;
 
1920
class ExtACBuilderCoupling;
 
1921
class ExtACSyntaxCoupling;
 
1922
class ExtACTree;
 
1923
class ExtACKeywords;
 
1924
class ExtGnu;
 
1925
class PragmaOnceUnitState;
 
1926
class PragmaOnce;
 
1927
class CMatchSyntax;
 
1928
namespace Puma {
 
1929
 
 
1930
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
1931
class FilenameInfo : public RefCnt {
 
1932
#line 1933 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1933
  friend class ::CCExprResolve;
 
1934
  friend class ::CExprResolve;
 
1935
  friend class ::WinIfExists;
 
1936
  friend class ::WinImportHandler;
 
1937
  friend class ::WinMacros;
 
1938
  friend class ::WinAsm;
 
1939
  friend class ::WinDeclSpecs;
 
1940
  friend class ::WinMemberExplSpec;
 
1941
  friend class ::WinTypeKeywords;
 
1942
  friend class ::WinFriend;
 
1943
  friend class ::ExtAC;
 
1944
  friend class ::ExtACBuilderCoupling;
 
1945
  friend class ::ExtACSyntaxCoupling;
 
1946
  friend class ::ExtACTree;
 
1947
  friend class ::ExtACKeywords;
 
1948
  friend class ::ExtGnu;
 
1949
  friend class ::PragmaOnceUnitState;
 
1950
  friend class ::PragmaOnce;
 
1951
  friend class ::CMatchSyntax;
 
1952
 
 
1953
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
1954
 
 
1955
  DString _name;
 
1956
  const char *_path;
 
1957
  const char *_root;
 
1958
 
 
1959
public:
 
1960
  FilenameInfo () : _path ((const char*)0), _root ((const char*)0) {}
 
1961
  ~FilenameInfo ();
 
1962
  void name (const char *n);
 
1963
//  void name (const DString &dsn) { _name = dsn; }
 
1964
  const char *name () const { return _name.c_str (); }
 
1965
  const char *path ();
 
1966
  const char *root ();
 
1967
  bool is_absolute () const;
 
1968
  bool operator == (const FilenameInfo &rc) const {
 
1969
    return _name == rc._name;
 
1970
  }
 
1971
};
 
1972
 
 
1973
 
 
1974
} // namespace Puma
 
1975
 
 
1976
#endif /* __filename_info_h__ */
 
1977
 
 
1978
#line 26 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Filename.h"
 
1979
namespace Puma {
 
1980
 
 
1981
 
 
1982
 
 
1983
#line 1984 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
1984
} // closed Puma
 
1985
class CCExprResolve;
 
1986
class CExprResolve;
 
1987
class WinIfExists;
 
1988
class WinImportHandler;
 
1989
class WinMacros;
 
1990
class WinAsm;
 
1991
class WinDeclSpecs;
 
1992
class WinMemberExplSpec;
 
1993
class WinTypeKeywords;
 
1994
class WinFriend;
 
1995
class ExtAC;
 
1996
class ExtACBuilderCoupling;
 
1997
class ExtACSyntaxCoupling;
 
1998
class ExtACTree;
 
1999
class ExtACKeywords;
 
2000
class ExtGnu;
 
2001
class PragmaOnceUnitState;
 
2002
class PragmaOnce;
 
2003
class CMatchSyntax;
 
2004
namespace Puma {
 
2005
 
 
2006
#line 29 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Filename.h"
 
2007
class Filename : public SmartPtr, public Printable {
 
2008
#line 2009 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2009
  friend class ::CCExprResolve;
 
2010
  friend class ::CExprResolve;
 
2011
  friend class ::WinIfExists;
 
2012
  friend class ::WinImportHandler;
 
2013
  friend class ::WinMacros;
 
2014
  friend class ::WinAsm;
 
2015
  friend class ::WinDeclSpecs;
 
2016
  friend class ::WinMemberExplSpec;
 
2017
  friend class ::WinTypeKeywords;
 
2018
  friend class ::WinFriend;
 
2019
  friend class ::ExtAC;
 
2020
  friend class ::ExtACBuilderCoupling;
 
2021
  friend class ::ExtACSyntaxCoupling;
 
2022
  friend class ::ExtACTree;
 
2023
  friend class ::ExtACKeywords;
 
2024
  friend class ::ExtGnu;
 
2025
  friend class ::PragmaOnceUnitState;
 
2026
  friend class ::PragmaOnce;
 
2027
  friend class ::CMatchSyntax;
 
2028
 
 
2029
#line 29 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Filename.h"
 
2030
 
 
2031
  FilenameInfo *info () const { return (FilenameInfo*)data (); }
 
2032
 
 
2033
public:
 
2034
  Filename () {}
 
2035
  Filename (const char *n) { name (n); }
 
2036
  Filename &operator = (const char *n) { name (n); return *this; }
 
2037
  bool operator ~ () const { return info () != 0; }
 
2038
  void name (const char *n);
 
2039
  const char *name () const;
 
2040
  const char *path () const;
 
2041
  const char *root () const;
 
2042
  bool is_absolute () const;
 
2043
  bool operator == (const Filename &f) const;
 
2044
  bool operator != (const Filename &f) const { return !(*this == f); }
 
2045
  virtual void print (ostream &os) const { if (info ()) os << name (); }
 
2046
};
 
2047
 
 
2048
 
 
2049
} // namespace Puma
 
2050
 
 
2051
#endif /* __filename_h__ */
 
2052
 
 
2053
#line 38 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
2054
namespace Puma {
 
2055
 
 
2056
class SysCall;
 
2057
 
 
2058
 
 
2059
#line 2060 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2060
} // closed Puma
 
2061
class CCExprResolve;
 
2062
class CExprResolve;
 
2063
class WinIfExists;
 
2064
class WinImportHandler;
 
2065
class WinMacros;
 
2066
class WinAsm;
 
2067
class WinDeclSpecs;
 
2068
class WinMemberExplSpec;
 
2069
class WinTypeKeywords;
 
2070
class WinFriend;
 
2071
class ExtAC;
 
2072
class ExtACBuilderCoupling;
 
2073
class ExtACSyntaxCoupling;
 
2074
class ExtACTree;
 
2075
class ExtACKeywords;
 
2076
class ExtGnu;
 
2077
class PragmaOnceUnitState;
 
2078
class PragmaOnce;
 
2079
class CMatchSyntax;
 
2080
namespace Puma {
 
2081
 
 
2082
#line 42 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
2083
class FileInfo {
 
2084
#line 2085 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2085
  friend class ::CCExprResolve;
 
2086
  friend class ::CExprResolve;
 
2087
  friend class ::WinIfExists;
 
2088
  friend class ::WinImportHandler;
 
2089
  friend class ::WinMacros;
 
2090
  friend class ::WinAsm;
 
2091
  friend class ::WinDeclSpecs;
 
2092
  friend class ::WinMemberExplSpec;
 
2093
  friend class ::WinTypeKeywords;
 
2094
  friend class ::WinFriend;
 
2095
  friend class ::ExtAC;
 
2096
  friend class ::ExtACBuilderCoupling;
 
2097
  friend class ::ExtACSyntaxCoupling;
 
2098
  friend class ::ExtACTree;
 
2099
  friend class ::ExtACKeywords;
 
2100
  friend class ::ExtGnu;
 
2101
  friend class ::PragmaOnceUnitState;
 
2102
  friend class ::PragmaOnce;
 
2103
  friend class ::CMatchSyntax;
 
2104
 
 
2105
#line 42 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
2106
 
 
2107
  friend class SysCall;
 
2108
#ifndef _MSC_VER
 
2109
  struct stat _info;
 
2110
#else
 
2111
  struct _stat _info;
 
2112
#endif
 
2113
 
 
2114
public:
 
2115
  bool is_dir () const {
 
2116
#ifdef _MSC_VER
 
2117
    return _S_IFDIR & _info.st_mode;
 
2118
#else
 
2119
    return S_ISDIR (_info.st_mode);
 
2120
#endif // _MSC_VER
 
2121
  }
 
2122
  time_t modi_time () const { return _info.st_mtime; }
 
2123
  int size () const { return _info.st_size; }
 
2124
};
 
2125
 
 
2126
#ifdef _MSC_VER
 
2127
struct DIR {
 
2128
  long _handle;
 
2129
  DIR (long h) : _handle (h) {}
 
2130
};
 
2131
#endif // _MSC_VER
 
2132
 
 
2133
typedef DIR *DirHandle;
 
2134
typedef FILE *FileHandle;
 
2135
 
 
2136
class ErrorSink;
 
2137
 
 
2138
 
 
2139
#line 2140 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2140
} // closed Puma
 
2141
class CCExprResolve;
 
2142
class CExprResolve;
 
2143
class WinIfExists;
 
2144
class WinImportHandler;
 
2145
class WinMacros;
 
2146
class WinAsm;
 
2147
class WinDeclSpecs;
 
2148
class WinMemberExplSpec;
 
2149
class WinTypeKeywords;
 
2150
class WinFriend;
 
2151
class ExtAC;
 
2152
class ExtACBuilderCoupling;
 
2153
class ExtACSyntaxCoupling;
 
2154
class ExtACTree;
 
2155
class ExtACKeywords;
 
2156
class ExtGnu;
 
2157
class PragmaOnceUnitState;
 
2158
class PragmaOnce;
 
2159
class CMatchSyntax;
 
2160
namespace Puma {
 
2161
 
 
2162
#line 74 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
2163
class SysCall {
 
2164
#line 2165 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2165
  friend class ::CCExprResolve;
 
2166
  friend class ::CExprResolve;
 
2167
  friend class ::WinIfExists;
 
2168
  friend class ::WinImportHandler;
 
2169
  friend class ::WinMacros;
 
2170
  friend class ::WinAsm;
 
2171
  friend class ::WinDeclSpecs;
 
2172
  friend class ::WinMemberExplSpec;
 
2173
  friend class ::WinTypeKeywords;
 
2174
  friend class ::WinFriend;
 
2175
  friend class ::ExtAC;
 
2176
  friend class ::ExtACBuilderCoupling;
 
2177
  friend class ::ExtACSyntaxCoupling;
 
2178
  friend class ::ExtACTree;
 
2179
  friend class ::ExtACKeywords;
 
2180
  friend class ::ExtGnu;
 
2181
  friend class ::PragmaOnceUnitState;
 
2182
  friend class ::PragmaOnce;
 
2183
  friend class ::CMatchSyntax;
 
2184
 
 
2185
#line 74 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
2186
 
 
2187
  static void printerror (ErrorSink *, const char *, 
 
2188
                          const char * = (const char *)0);
 
2189
  static void printerror (ErrorSink *, const char *, int);
 
2190
 
 
2191
public:
 
2192
  SysCall () {}
 
2193
        
 
2194
  // create temporary file name, needs to be freed by caller
 
2195
  static const char* mktemp (const char *prefix, ErrorSink * = (ErrorSink *)0);
 
2196
 
 
2197
  // open/create/close file with exclusive file locking
 
2198
  static int open_excl (const char *, int, ErrorSink * = (ErrorSink *)0);
 
2199
  static int create_excl (const char *, int, ErrorSink * = (ErrorSink *)0);
 
2200
  static bool close_excl (int, ErrorSink * = (ErrorSink *)0);
 
2201
        
 
2202
  // open/create/close file
 
2203
  static int open (const char *, int, ErrorSink * = (ErrorSink *)0);
 
2204
  static int create (const char *, int, ErrorSink * = (ErrorSink *)0);
 
2205
  static bool close (int, ErrorSink * = (ErrorSink *)0);
 
2206
        
 
2207
  // read from file descriptor
 
2208
  static long read (int, void *, size_t, ErrorSink * = (ErrorSink *)0);
 
2209
        
 
2210
  // get file status
 
2211
  static bool stat (const char *, FileInfo &, ErrorSink * = (ErrorSink *)0);
 
2212
  static bool fstat (int, FileInfo &, ErrorSink * = (ErrorSink *)0);
 
2213
  static char* readlink (const char*, char*, size_t, ErrorSink * = (ErrorSink *)0);
 
2214
        
 
2215
  // open/close file stream
 
2216
  static FileHandle fopen (const char *, const char *, ErrorSink * = (ErrorSink *)0);
 
2217
  static bool fclose (FileHandle, ErrorSink * = (ErrorSink *)0);
 
2218
 
 
2219
  // open/close directory stream
 
2220
  static DirHandle opendir (const char *, ErrorSink * = (ErrorSink *)0);
 
2221
  static bool closedir (DirHandle, ErrorSink * = (ErrorSink *)0);
 
2222
 
 
2223
  // read from directory stream
 
2224
  static const char *readdir (DirHandle, ErrorSink * = (ErrorSink *)0);
 
2225
        
 
2226
  // change directory 
 
2227
  static bool chdir (const char *, ErrorSink * = (ErrorSink *)0);
 
2228
        
 
2229
  // create directory
 
2230
  static bool mkdir (const char *, ErrorSink * = (ErrorSink *)0);
 
2231
        
 
2232
  // get current working directory
 
2233
  static char *getcwd (char *, size_t, ErrorSink * = (ErrorSink *)0);
 
2234
        
 
2235
  // get current time
 
2236
  static time_t time (time_t *, ErrorSink * = (ErrorSink *)0);
 
2237
 
 
2238
  // platform depended path handling
 
2239
  static void MakeUnixPath (char*);
 
2240
  static void MakeDosPath  (char*);
 
2241
  
 
2242
#ifdef WIN32
 
2243
  // normalize an absolute Win32 filename of an exisiting file
 
2244
  static bool normalize (Filename filename, Filename &norm, ErrorSink *err);
 
2245
#endif // WIN32
 
2246
 
 
2247
  // return a canonical path name for an exisiting file
 
2248
  static bool canonical (Filename filename, Filename &result, ErrorSink * = 0);
 
2249
};
 
2250
 
 
2251
 
 
2252
} // namespace Puma
 
2253
 
 
2254
#endif /* __SysCall_h__ */
 
2255
 
 
2256
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
2257
// This file is part of PUMA.
 
2258
// Copyright (C) 1999-2003  The PUMA developer team.
 
2259
//                                                                
 
2260
// This program is free software;  you can redistribute it and/or 
 
2261
// modify it under the terms of the GNU General Public License as 
 
2262
// published by the Free Software Foundation; either version 2 of 
 
2263
// the License, or (at your option) any later version.            
 
2264
//                                                                
 
2265
// This program is distributed in the hope that it will be useful,
 
2266
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
2267
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
2268
// GNU General Public License for more details.                   
 
2269
//                                                                
 
2270
// You should have received a copy of the GNU General Public      
 
2271
// License along with this program; if not, write to the Free     
 
2272
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
2273
// MA  02111-1307  USA                                            
 
2274
 
 
2275
#ifndef __FileUnit__
 
2276
#define __FileUnit__
 
2277
 
 
2278
// Special Unit for files. Knows its last save location and the
 
2279
// absolute path of the corresponding file.
 
2280
 
 
2281
 
 
2282
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
2283
namespace Puma {
 
2284
 
 
2285
 
 
2286
class Project;
 
2287
 
 
2288
 
 
2289
#line 2290 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2290
} // closed Puma
 
2291
class CCExprResolve;
 
2292
class CExprResolve;
 
2293
class WinIfExists;
 
2294
class WinImportHandler;
 
2295
class WinMacros;
 
2296
class WinAsm;
 
2297
class WinDeclSpecs;
 
2298
class WinMemberExplSpec;
 
2299
class WinTypeKeywords;
 
2300
class WinFriend;
 
2301
class ExtAC;
 
2302
class ExtACBuilderCoupling;
 
2303
class ExtACSyntaxCoupling;
 
2304
class ExtACTree;
 
2305
class ExtACKeywords;
 
2306
class ExtGnu;
 
2307
class PragmaOnceUnitState;
 
2308
class PragmaOnce;
 
2309
class CMatchSyntax;
 
2310
namespace Puma {
 
2311
 
 
2312
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
2313
class FileUnit : public Unit {
 
2314
#line 2315 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2315
  friend class ::CCExprResolve;
 
2316
  friend class ::CExprResolve;
 
2317
  friend class ::WinIfExists;
 
2318
  friend class ::WinImportHandler;
 
2319
  friend class ::WinMacros;
 
2320
  friend class ::WinAsm;
 
2321
  friend class ::WinDeclSpecs;
 
2322
  friend class ::WinMemberExplSpec;
 
2323
  friend class ::WinTypeKeywords;
 
2324
  friend class ::WinFriend;
 
2325
  friend class ::ExtAC;
 
2326
  friend class ::ExtACBuilderCoupling;
 
2327
  friend class ::ExtACSyntaxCoupling;
 
2328
  friend class ::ExtACTree;
 
2329
  friend class ::ExtACKeywords;
 
2330
  friend class ::ExtGnu;
 
2331
  friend class ::PragmaOnceUnitState;
 
2332
  friend class ::PragmaOnce;
 
2333
  friend class ::CMatchSyntax;
 
2334
 
 
2335
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
2336
 
 
2337
  char *_lastLocation; 
 
2338
  char *_absolutePath;
 
2339
  
 
2340
  Project *_project;
 
2341
  bool _isBelow;
 
2342
 
 
2343
public:
 
2344
  FileUnit ();
 
2345
  FileUnit (Unit &);
 
2346
  FileUnit (const List &);
 
2347
  virtual ~FileUnit ();
 
2348
            
 
2349
  virtual void name (const char *);        
 
2350
  void setLocation (const char *);    
 
2351
        
 
2352
  char *lastLocation () const;
 
2353
  char *absolutePath () const;
 
2354
  bool isFile () const;
 
2355
  
 
2356
  // Generates the absolute pathname to the file.
 
2357
  static char *absolutePath (const char *);
 
2358
  static char *resolvePath (const char *);
 
2359
  
 
2360
  // File belongs to given project?
 
2361
  bool belongsTo (Project &);
 
2362
};
 
2363
 
 
2364
inline FileUnit::FileUnit () : 
 
2365
  Unit (), 
 
2366
  _lastLocation ((char*)0), 
 
2367
  _absolutePath ((char*)0),
 
2368
  _project (0),
 
2369
  _isBelow (false)
 
2370
 {}
 
2371
inline FileUnit::FileUnit (Unit &unit) : 
 
2372
  Unit (unit), 
 
2373
  _lastLocation ((char*)0), 
 
2374
  _absolutePath ((char*)0),
 
2375
  _project (0),
 
2376
  _isBelow (false)
 
2377
 {}
 
2378
inline FileUnit::FileUnit (const List &list) : 
 
2379
  Unit (list), 
 
2380
  _lastLocation ((char*)0), 
 
2381
  _absolutePath ((char*)0),
 
2382
  _project (0),
 
2383
  _isBelow (false)  
 
2384
 {}
 
2385
inline FileUnit::~FileUnit () 
 
2386
 { if (_lastLocation) delete[] _lastLocation; 
 
2387
   if (_absolutePath) delete[] _absolutePath; }
 
2388
            
 
2389
inline char *FileUnit::lastLocation () const 
 
2390
 { return _lastLocation; }
 
2391
inline char *FileUnit::absolutePath () const 
 
2392
 { return _absolutePath; }
 
2393
inline bool FileUnit::isFile () const 
 
2394
 { return true; }
 
2395
 
 
2396
 
 
2397
} // namespace Puma
 
2398
 
 
2399
#endif /* __FileUnit__ */
 
2400
 
 
2401
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FileSource.h"
 
2402
// This file is part of PUMA.
 
2403
// Copyright (C) 1999-2003  The PUMA developer team.
 
2404
//                                                                
 
2405
// This program is free software;  you can redistribute it and/or 
 
2406
// modify it under the terms of the GNU General Public License as 
 
2407
// published by the Free Software Foundation; either version 2 of 
 
2408
// the License, or (at your option) any later version.            
 
2409
//                                                                
 
2410
// This program is distributed in the hope that it will be useful,
 
2411
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
2412
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
2413
// GNU General Public License for more details.                   
 
2414
//                                                                
 
2415
// You should have received a copy of the GNU General Public      
 
2416
// License along with this program; if not, write to the Free     
 
2417
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
2418
// MA  02111-1307  USA                                            
 
2419
 
 
2420
#ifndef __file_source_h__
 
2421
#define __file_source_h__
 
2422
 
 
2423
 
 
2424
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2425
// This file is part of PUMA.
 
2426
// Copyright (C) 1999-2003  The PUMA developer team.
 
2427
//                                                                
 
2428
// This program is free software;  you can redistribute it and/or 
 
2429
// modify it under the terms of the GNU General Public License as 
 
2430
// published by the Free Software Foundation; either version 2 of 
 
2431
// the License, or (at your option) any later version.            
 
2432
//                                                                
 
2433
// This program is distributed in the hope that it will be useful,
 
2434
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
2435
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
2436
// GNU General Public License for more details.                   
 
2437
//                                                                
 
2438
// You should have received a copy of the GNU General Public      
 
2439
// License along with this program; if not, write to the Free     
 
2440
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
2441
// MA  02111-1307  USA                                            
 
2442
 
 
2443
#ifndef __error_sink_h__
 
2444
#define __error_sink_h__
 
2445
 
 
2446
// This is an interface for classes that may be used to consume error
 
2447
// messages during a process where many errors can occur like parsing
 
2448
// a program.
 
2449
// The error information is handed over to the ErrorSink in stream-like
 
2450
// style. Different severities of errors are predefined and can be used
 
2451
// to classify error information that follows. Also a location can be
 
2452
// handed over to the ErrorSink to specify where the error was found
 
2453
// (filename, line, etc.). The error information itself can be of any
 
2454
// standard data type or anything that is "Printable".
 
2455
// Specializations of this class could either build and print error
 
2456
// messages or collect them for a later processing.
 
2457
 
 
2458
 
 
2459
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
2460
// This file is part of PUMA.
 
2461
// Copyright (C) 1999-2003  The PUMA developer team.
 
2462
//                                                                
 
2463
// This program is free software;  you can redistribute it and/or 
 
2464
// modify it under the terms of the GNU General Public License as 
 
2465
// published by the Free Software Foundation; either version 2 of 
 
2466
// the License, or (at your option) any later version.            
 
2467
//                                                                
 
2468
// This program is distributed in the hope that it will be useful,
 
2469
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
2470
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
2471
// GNU General Public License for more details.                   
 
2472
//                                                                
 
2473
// You should have received a copy of the GNU General Public      
 
2474
// License along with this program; if not, write to the Free     
 
2475
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
2476
// MA  02111-1307  USA                                            
 
2477
 
 
2478
#ifndef __error_severity_h__
 
2479
#define __error_severity_h__
 
2480
 
 
2481
// Severity of errors: represented by a short integer and a text
 
2482
 
 
2483
namespace Puma {
 
2484
 
 
2485
 
 
2486
 
 
2487
#line 2488 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2488
} // closed Puma
 
2489
class CCExprResolve;
 
2490
class CExprResolve;
 
2491
class WinIfExists;
 
2492
class WinImportHandler;
 
2493
class WinMacros;
 
2494
class WinAsm;
 
2495
class WinDeclSpecs;
 
2496
class WinMemberExplSpec;
 
2497
class WinTypeKeywords;
 
2498
class WinFriend;
 
2499
class ExtAC;
 
2500
class ExtACBuilderCoupling;
 
2501
class ExtACSyntaxCoupling;
 
2502
class ExtACTree;
 
2503
class ExtACKeywords;
 
2504
class ExtGnu;
 
2505
class PragmaOnceUnitState;
 
2506
class PragmaOnce;
 
2507
class CMatchSyntax;
 
2508
namespace Puma {
 
2509
 
 
2510
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
2511
class ErrorSeverity {
 
2512
#line 2513 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2513
  friend class ::CCExprResolve;
 
2514
  friend class ::CExprResolve;
 
2515
  friend class ::WinIfExists;
 
2516
  friend class ::WinImportHandler;
 
2517
  friend class ::WinMacros;
 
2518
  friend class ::WinAsm;
 
2519
  friend class ::WinDeclSpecs;
 
2520
  friend class ::WinMemberExplSpec;
 
2521
  friend class ::WinTypeKeywords;
 
2522
  friend class ::WinFriend;
 
2523
  friend class ::ExtAC;
 
2524
  friend class ::ExtACBuilderCoupling;
 
2525
  friend class ::ExtACSyntaxCoupling;
 
2526
  friend class ::ExtACTree;
 
2527
  friend class ::ExtACKeywords;
 
2528
  friend class ::ExtGnu;
 
2529
  friend class ::PragmaOnceUnitState;
 
2530
  friend class ::PragmaOnce;
 
2531
  friend class ::CMatchSyntax;
 
2532
 
 
2533
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
2534
 
 
2535
  unsigned short _severity;
 
2536
  const char *_text;
 
2537
 
 
2538
public:
 
2539
  ErrorSeverity (unsigned short s = 0, const char* t = (const char*)0) :
 
2540
    _severity (s), _text (t) {}
 
2541
  ErrorSeverity (const ErrorSeverity &s) :
 
2542
    _severity (s._severity), _text (s._text) {}
 
2543
  ErrorSeverity &operator =(const ErrorSeverity &s) 
 
2544
    { _severity = s._severity; _text = s._text; return *this; }
 
2545
 
 
2546
  int operator < (const ErrorSeverity &s) const
 
2547
   { return _severity < s._severity; }
 
2548
  int operator > (const ErrorSeverity &s) const
 
2549
   { return _severity > s._severity; }
 
2550
  int operator <= (const ErrorSeverity &s) const
 
2551
   { return _severity < s._severity || _severity == s._severity; }
 
2552
  int operator >= (const ErrorSeverity &s) const
 
2553
   { return _severity > s._severity || _severity == s._severity; }
 
2554
  int operator == (const ErrorSeverity &s) const
 
2555
   { return _severity == s._severity; }
 
2556
  int operator != (const ErrorSeverity &s) const
 
2557
   { return _severity != s._severity; }
 
2558
  const char *text () const
 
2559
   { return _text; }
 
2560
};
 
2561
 
 
2562
extern const ErrorSeverity sev_none;
 
2563
extern const ErrorSeverity sev_message;
 
2564
extern const ErrorSeverity sev_warning;
 
2565
extern const ErrorSeverity sev_error;
 
2566
extern const ErrorSeverity sev_fatal;
 
2567
      
 
2568
 
 
2569
} // namespace Puma
 
2570
 
 
2571
#endif /* __error_severity_h__ */
 
2572
 
 
2573
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Location.h"
 
2574
// This file is part of PUMA.
 
2575
// Copyright (C) 1999-2003  The PUMA developer team.
 
2576
//                                                                
 
2577
// This program is free software;  you can redistribute it and/or 
 
2578
// modify it under the terms of the GNU General Public License as 
 
2579
// published by the Free Software Foundation; either version 2 of 
 
2580
// the License, or (at your option) any later version.            
 
2581
//                                                                
 
2582
// This program is distributed in the hope that it will be useful,
 
2583
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
2584
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
2585
// GNU General Public License for more details.                   
 
2586
//                                                                
 
2587
// You should have received a copy of the GNU General Public      
 
2588
// License along with this program; if not, write to the Free     
 
2589
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
2590
// MA  02111-1307  USA                                            
 
2591
 
 
2592
#ifndef __location_h__
 
2593
#define __location_h__
 
2594
 
 
2595
 
 
2596
#line 24 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Location.h"
 
2597
namespace Puma {
 
2598
 
 
2599
 
 
2600
 
 
2601
#line 2602 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2602
} // closed Puma
 
2603
class CCExprResolve;
 
2604
class CExprResolve;
 
2605
class WinIfExists;
 
2606
class WinImportHandler;
 
2607
class WinMacros;
 
2608
class WinAsm;
 
2609
class WinDeclSpecs;
 
2610
class WinMemberExplSpec;
 
2611
class WinTypeKeywords;
 
2612
class WinFriend;
 
2613
class ExtAC;
 
2614
class ExtACBuilderCoupling;
 
2615
class ExtACSyntaxCoupling;
 
2616
class ExtACTree;
 
2617
class ExtACKeywords;
 
2618
class ExtGnu;
 
2619
class PragmaOnceUnitState;
 
2620
class PragmaOnce;
 
2621
class CMatchSyntax;
 
2622
namespace Puma {
 
2623
 
 
2624
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Location.h"
 
2625
class Location {
 
2626
#line 2627 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2627
  friend class ::CCExprResolve;
 
2628
  friend class ::CExprResolve;
 
2629
  friend class ::WinIfExists;
 
2630
  friend class ::WinImportHandler;
 
2631
  friend class ::WinMacros;
 
2632
  friend class ::WinAsm;
 
2633
  friend class ::WinDeclSpecs;
 
2634
  friend class ::WinMemberExplSpec;
 
2635
  friend class ::WinTypeKeywords;
 
2636
  friend class ::WinFriend;
 
2637
  friend class ::ExtAC;
 
2638
  friend class ::ExtACBuilderCoupling;
 
2639
  friend class ::ExtACSyntaxCoupling;
 
2640
  friend class ::ExtACTree;
 
2641
  friend class ::ExtACKeywords;
 
2642
  friend class ::ExtGnu;
 
2643
  friend class ::PragmaOnceUnitState;
 
2644
  friend class ::PragmaOnce;
 
2645
  friend class ::CMatchSyntax;
 
2646
 
 
2647
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Location.h"
 
2648
 
 
2649
  Filename _filename;
 
2650
  int _line;
 
2651
  int _column;
 
2652
 
 
2653
public:
 
2654
  Location () : _filename (), _line (0), _column (0) {}
 
2655
  Location (Filename f, int l, int c = 0) { setup (f, l, c); }
 
2656
  void setup (Filename f, int l, int c = 0) {
 
2657
    _filename = f;
 
2658
    _line     = l;
 
2659
    _column   = c;
 
2660
  }
 
2661
  const Filename &filename () const { return _filename; }
 
2662
  int line () const { return _line; }
 
2663
  int column () const { return _column; }
 
2664
  bool operator == (const Location &l) const {
 
2665
    return filename () == l.filename () && line () == l.line () &&
 
2666
      column () == l.column ();
 
2667
  }
 
2668
  bool operator != (const Location &l) const { return ! (*this == l); }
 
2669
  bool operator < (const Location &l) const {
 
2670
    // TODO: does it make sense to compare the filenames? better assert?
 
2671
    if (filename () != l.filename ())
 
2672
      return false;
 
2673
    return line () < l.line () && column () < l.column ();
 
2674
  }
 
2675
};
 
2676
 
 
2677
inline std::ostream &operator << (std::ostream &os, const Location &loc) {
 
2678
#ifdef VISUAL_STUDIO
 
2679
  os << loc.filename () << "(" << loc.line () << ")";
 
2680
#else
 
2681
  os << loc.filename () << ":" << loc.line ();
 
2682
#endif
 
2683
  return os;  
 
2684
}
 
2685
} // namespace Puma
 
2686
 
 
2687
#endif /* __location_h__ */
 
2688
 
 
2689
#line 38 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2690
namespace Puma {
 
2691
 
 
2692
 
 
2693
 
 
2694
#line 2695 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2695
} // closed Puma
 
2696
class CCExprResolve;
 
2697
class CExprResolve;
 
2698
class WinIfExists;
 
2699
class WinImportHandler;
 
2700
class WinMacros;
 
2701
class WinAsm;
 
2702
class WinDeclSpecs;
 
2703
class WinMemberExplSpec;
 
2704
class WinTypeKeywords;
 
2705
class WinFriend;
 
2706
class ExtAC;
 
2707
class ExtACBuilderCoupling;
 
2708
class ExtACSyntaxCoupling;
 
2709
class ExtACTree;
 
2710
class ExtACKeywords;
 
2711
class ExtGnu;
 
2712
class PragmaOnceUnitState;
 
2713
class PragmaOnce;
 
2714
class CMatchSyntax;
 
2715
namespace Puma {
 
2716
 
 
2717
#line 41 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2718
class ErrorSink {
 
2719
#line 2720 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2720
  friend class ::CCExprResolve;
 
2721
  friend class ::CExprResolve;
 
2722
  friend class ::WinIfExists;
 
2723
  friend class ::WinImportHandler;
 
2724
  friend class ::WinMacros;
 
2725
  friend class ::WinAsm;
 
2726
  friend class ::WinDeclSpecs;
 
2727
  friend class ::WinMemberExplSpec;
 
2728
  friend class ::WinTypeKeywords;
 
2729
  friend class ::WinFriend;
 
2730
  friend class ::ExtAC;
 
2731
  friend class ::ExtACBuilderCoupling;
 
2732
  friend class ::ExtACSyntaxCoupling;
 
2733
  friend class ::ExtACTree;
 
2734
  friend class ::ExtACKeywords;
 
2735
  friend class ::ExtGnu;
 
2736
  friend class ::PragmaOnceUnitState;
 
2737
  friend class ::PragmaOnce;
 
2738
  friend class ::CMatchSyntax;
 
2739
 
 
2740
#line 41 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2741
 
 
2742
public:
 
2743
  virtual ~ErrorSink () {}
 
2744
  virtual ErrorSink &operator << (const char *) = 0;
 
2745
  virtual ErrorSink &operator << (long) = 0;
 
2746
  virtual ErrorSink &operator << (unsigned) = 0;
 
2747
  virtual ErrorSink &operator << (int) = 0;
 
2748
  virtual ErrorSink &operator << (short) = 0;
 
2749
  virtual ErrorSink &operator << (char) = 0;
 
2750
  virtual ErrorSink &operator << (double) = 0;
 
2751
  virtual ErrorSink &operator << (const ErrorSeverity &) = 0;
 
2752
  virtual ErrorSink &operator << (Location) = 0;
 
2753
  virtual ErrorSink &operator << (const Printable &) = 0;
 
2754
  virtual ErrorSink &operator << (void (*f)(ErrorSink &)) = 0;
 
2755
  virtual void endMessage () = 0;
 
2756
};
 
2757
 
 
2758
void endMessage (ErrorSink &);
 
2759
 
 
2760
 
 
2761
} // namespace Puma
 
2762
 
 
2763
#endif /* __error_sink_h__ */
 
2764
 
 
2765
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FdSource.h"
 
2766
// This file is part of PUMA.
 
2767
// Copyright (C) 1999-2003  The PUMA developer team.
 
2768
//                                                                
 
2769
// This program is free software;  you can redistribute it and/or 
 
2770
// modify it under the terms of the GNU General Public License as 
 
2771
// published by the Free Software Foundation; either version 2 of 
 
2772
// the License, or (at your option) any later version.            
 
2773
//                                                                
 
2774
// This program is distributed in the hope that it will be useful,
 
2775
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
2776
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
2777
// GNU General Public License for more details.                   
 
2778
//                                                                
 
2779
// You should have received a copy of the GNU General Public      
 
2780
// License along with this program; if not, write to the Free     
 
2781
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
2782
// MA  02111-1307  USA                                            
 
2783
 
 
2784
#ifndef __fd_source_h__
 
2785
#define __fd_source_h__
 
2786
 
 
2787
 
 
2788
#line 25 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FdSource.h"
 
2789
namespace Puma {
 
2790
 
 
2791
 
 
2792
 
 
2793
#line 2794 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2794
} // closed Puma
 
2795
class CCExprResolve;
 
2796
class CExprResolve;
 
2797
class WinIfExists;
 
2798
class WinImportHandler;
 
2799
class WinMacros;
 
2800
class WinAsm;
 
2801
class WinDeclSpecs;
 
2802
class WinMemberExplSpec;
 
2803
class WinTypeKeywords;
 
2804
class WinFriend;
 
2805
class ExtAC;
 
2806
class ExtACBuilderCoupling;
 
2807
class ExtACSyntaxCoupling;
 
2808
class ExtACTree;
 
2809
class ExtACKeywords;
 
2810
class ExtGnu;
 
2811
class PragmaOnceUnitState;
 
2812
class PragmaOnce;
 
2813
class CMatchSyntax;
 
2814
namespace Puma {
 
2815
 
 
2816
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FdSource.h"
 
2817
class FdSource : public Source {
 
2818
#line 2819 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2819
  friend class ::CCExprResolve;
 
2820
  friend class ::CExprResolve;
 
2821
  friend class ::WinIfExists;
 
2822
  friend class ::WinImportHandler;
 
2823
  friend class ::WinMacros;
 
2824
  friend class ::WinAsm;
 
2825
  friend class ::WinDeclSpecs;
 
2826
  friend class ::WinMemberExplSpec;
 
2827
  friend class ::WinTypeKeywords;
 
2828
  friend class ::WinFriend;
 
2829
  friend class ::ExtAC;
 
2830
  friend class ::ExtACBuilderCoupling;
 
2831
  friend class ::ExtACSyntaxCoupling;
 
2832
  friend class ::ExtACTree;
 
2833
  friend class ::ExtACKeywords;
 
2834
  friend class ::ExtGnu;
 
2835
  friend class ::PragmaOnceUnitState;
 
2836
  friend class ::PragmaOnce;
 
2837
  friend class ::CMatchSyntax;
 
2838
 
 
2839
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FdSource.h"
 
2840
 
 
2841
  int _fd;
 
2842
 
 
2843
public:
 
2844
  FdSource () : _fd (-1) {}
 
2845
  FdSource (int fdesc) : _fd (fdesc) {}
 
2846
  virtual ~FdSource () {}
 
2847
 
 
2848
  virtual int read (char *dest, int n)
 
2849
   { return SysCall::read (_fd, dest, n); }
 
2850
 
 
2851
  void fd (int fdesc) { _fd = fdesc; }
 
2852
  int fd () { return _fd; }
 
2853
 
 
2854
  int size () {
 
2855
    FileInfo fileinfo;
 
2856
    return (SysCall::fstat (_fd, fileinfo)) ? fileinfo.size () : -1;
 
2857
  }
 
2858
};
 
2859
 
 
2860
 
 
2861
} // namespace Puma
 
2862
 
 
2863
#endif /* __fd_source_h__ */
 
2864
 
 
2865
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FileSource.h"
 
2866
#include <fcntl.h>
 
2867
 
 
2868
namespace Puma {
 
2869
 
 
2870
 
 
2871
 
 
2872
#line 2873 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2873
} // closed Puma
 
2874
class CCExprResolve;
 
2875
class CExprResolve;
 
2876
class WinIfExists;
 
2877
class WinImportHandler;
 
2878
class WinMacros;
 
2879
class WinAsm;
 
2880
class WinDeclSpecs;
 
2881
class WinMemberExplSpec;
 
2882
class WinTypeKeywords;
 
2883
class WinFriend;
 
2884
class ExtAC;
 
2885
class ExtACBuilderCoupling;
 
2886
class ExtACSyntaxCoupling;
 
2887
class ExtACTree;
 
2888
class ExtACKeywords;
 
2889
class ExtGnu;
 
2890
class PragmaOnceUnitState;
 
2891
class PragmaOnce;
 
2892
class CMatchSyntax;
 
2893
namespace Puma {
 
2894
 
 
2895
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FileSource.h"
 
2896
class FileSource : public FdSource {
 
2897
#line 2898 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2898
  friend class ::CCExprResolve;
 
2899
  friend class ::CExprResolve;
 
2900
  friend class ::WinIfExists;
 
2901
  friend class ::WinImportHandler;
 
2902
  friend class ::WinMacros;
 
2903
  friend class ::WinAsm;
 
2904
  friend class ::WinDeclSpecs;
 
2905
  friend class ::WinMemberExplSpec;
 
2906
  friend class ::WinTypeKeywords;
 
2907
  friend class ::WinFriend;
 
2908
  friend class ::ExtAC;
 
2909
  friend class ::ExtACBuilderCoupling;
 
2910
  friend class ::ExtACSyntaxCoupling;
 
2911
  friend class ::ExtACTree;
 
2912
  friend class ::ExtACKeywords;
 
2913
  friend class ::ExtGnu;
 
2914
  friend class ::PragmaOnceUnitState;
 
2915
  friend class ::PragmaOnce;
 
2916
  friend class ::CMatchSyntax;
 
2917
 
 
2918
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/FileSource.h"
 
2919
 
 
2920
public:
 
2921
  FileSource (const char *name, ErrorSink *err = (ErrorSink*)0)
 
2922
   { fd (SysCall::open (name, O_RDONLY, err)); }
 
2923
  ~FileSource ()
 
2924
   { SysCall::close (fd ()); }
 
2925
 
 
2926
  virtual int read (char *dest, int n)
 
2927
   { return FdSource::read (dest, n); }
 
2928
};
 
2929
 
 
2930
 
 
2931
} // namespace Puma
 
2932
 
 
2933
#endif /* __file_source_h__ */
 
2934
 
 
2935
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2936
// This file is part of PUMA.
 
2937
// Copyright (C) 1999-2003  The PUMA developer team.
 
2938
//                                                                
 
2939
// This program is free software;  you can redistribute it and/or 
 
2940
// modify it under the terms of the GNU General Public License as 
 
2941
// published by the Free Software Foundation; either version 2 of 
 
2942
// the License, or (at your option) any later version.            
 
2943
//                                                                
 
2944
// This program is distributed in the hope that it will be useful,
 
2945
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
2946
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
2947
// GNU General Public License for more details.                   
 
2948
//                                                                
 
2949
// You should have received a copy of the GNU General Public      
 
2950
// License along with this program; if not, write to the Free     
 
2951
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
2952
// MA  02111-1307  USA                                            
 
2953
 
 
2954
#ifndef __error_stream_h__
 
2955
#define __error_stream_h__
 
2956
 
 
2957
// An ErrorStream is a special ErrorSink that prints out an error message
 
2958
// as soon as it complete. It also stores the maximum error severity.
 
2959
// The ErrorStream can be reset to it's initial state.
 
2960
 
 
2961
#include <sstream>
 
2962
 
 
2963
#line 30 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2964
using namespace std;
 
2965
 
 
2966
namespace Puma {
 
2967
 
 
2968
 
 
2969
 
 
2970
#line 2971 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2971
} // closed Puma
 
2972
class CCExprResolve;
 
2973
class CExprResolve;
 
2974
class WinIfExists;
 
2975
class WinImportHandler;
 
2976
class WinMacros;
 
2977
class WinAsm;
 
2978
class WinDeclSpecs;
 
2979
class WinMemberExplSpec;
 
2980
class WinTypeKeywords;
 
2981
class WinFriend;
 
2982
class ExtAC;
 
2983
class ExtACBuilderCoupling;
 
2984
class ExtACSyntaxCoupling;
 
2985
class ExtACTree;
 
2986
class ExtACKeywords;
 
2987
class ExtGnu;
 
2988
class PragmaOnceUnitState;
 
2989
class PragmaOnce;
 
2990
class CMatchSyntax;
 
2991
namespace Puma {
 
2992
 
 
2993
#line 35 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2994
class ErrorStream : public ErrorSink {
 
2995
#line 2996 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
2996
  friend class ::CCExprResolve;
 
2997
  friend class ::CExprResolve;
 
2998
  friend class ::WinIfExists;
 
2999
  friend class ::WinImportHandler;
 
3000
  friend class ::WinMacros;
 
3001
  friend class ::WinAsm;
 
3002
  friend class ::WinDeclSpecs;
 
3003
  friend class ::WinMemberExplSpec;
 
3004
  friend class ::WinTypeKeywords;
 
3005
  friend class ::WinFriend;
 
3006
  friend class ::ExtAC;
 
3007
  friend class ::ExtACBuilderCoupling;
 
3008
  friend class ::ExtACSyntaxCoupling;
 
3009
  friend class ::ExtACTree;
 
3010
  friend class ::ExtACKeywords;
 
3011
  friend class ::ExtGnu;
 
3012
  friend class ::PragmaOnceUnitState;
 
3013
  friend class ::PragmaOnce;
 
3014
  friend class ::CMatchSyntax;
 
3015
 
 
3016
#line 35 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
3017
 
 
3018
  ostream *_ostream;
 
3019
  ErrorSeverity _max_severity;
 
3020
  ErrorSeverity _curr_severity;
 
3021
  Location _location;
 
3022
  bool _have_location;
 
3023
  std::ostringstream *_msg;
 
3024
  bool _silently;
 
3025
 
 
3026
  void output ();
 
3027
  void clear ();
 
3028
 
 
3029
public:
 
3030
  ErrorStream (std::ostream &s = cerr) : _ostream (&s), _msg ((std::ostringstream*)0)
 
3031
   { reset (); _silently = false; }
 
3032
  virtual ~ErrorStream () { delete _msg; }
 
3033
 
 
3034
  ErrorStream &operator << (const char *);
 
3035
  ErrorStream &operator << (long);
 
3036
  ErrorStream &operator << (unsigned);
 
3037
  ErrorStream &operator << (int);
 
3038
  ErrorStream &operator << (short);
 
3039
  ErrorStream &operator << (char);
 
3040
  ErrorStream &operator << (double);
 
3041
  ErrorStream &operator << (const ErrorSeverity &);
 
3042
  ErrorStream &operator << (Location);
 
3043
  ErrorStream &operator << (const Printable &);
 
3044
  ErrorStream &operator << (void (*f)(ErrorSink &));
 
3045
 
 
3046
  void endMessage ();
 
3047
  void reset ();
 
3048
  void silent ();
 
3049
  void loud ();
 
3050
 
 
3051
  ErrorSeverity severity () const { return _max_severity; }
 
3052
};
 
3053
 
 
3054
 
 
3055
} // namespace Puma
 
3056
 
 
3057
#endif /* __error_stream_h__ */
 
3058
 
 
3059
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
3060
// This file is part of PUMA.
 
3061
// Copyright (C) 1999-2003  The PUMA developer team.
 
3062
//                                                                
 
3063
// This program is free software;  you can redistribute it and/or 
 
3064
// modify it under the terms of the GNU General Public License as 
 
3065
// published by the Free Software Foundation; either version 2 of 
 
3066
// the License, or (at your option) any later version.            
 
3067
//                                                                
 
3068
// This program is distributed in the hope that it will be useful,
 
3069
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
3070
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
3071
// GNU General Public License for more details.                   
 
3072
//                                                                
 
3073
// You should have received a copy of the GNU General Public      
 
3074
// License along with this program; if not, write to the Free     
 
3075
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
3076
// MA  02111-1307  USA                                            
 
3077
 
 
3078
#ifndef __UnitManager__
 
3079
#define __UnitManager__
 
3080
 
 
3081
// Class UnitManager helps you to have control of all units built.
 
3082
 
 
3083
 
 
3084
#line 25 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
3085
#include <list>
 
3086
#include <map>
 
3087
 
 
3088
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
3089
using namespace std;
 
3090
 
 
3091
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
3092
namespace Puma {
 
3093
 
 
3094
 
 
3095
class Unit;
 
3096
class Source;
 
3097
class Tokenizer;
 
3098
 
 
3099
 
 
3100
#line 3101 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
3101
} // closed Puma
 
3102
class CCExprResolve;
 
3103
class CExprResolve;
 
3104
class WinIfExists;
 
3105
class WinImportHandler;
 
3106
class WinMacros;
 
3107
class WinAsm;
 
3108
class WinDeclSpecs;
 
3109
class WinMemberExplSpec;
 
3110
class WinTypeKeywords;
 
3111
class WinFriend;
 
3112
class ExtAC;
 
3113
class ExtACBuilderCoupling;
 
3114
class ExtACSyntaxCoupling;
 
3115
class ExtACTree;
 
3116
class ExtACKeywords;
 
3117
class ExtGnu;
 
3118
class PragmaOnceUnitState;
 
3119
class PragmaOnce;
 
3120
class CMatchSyntax;
 
3121
namespace Puma {
 
3122
 
 
3123
#line 38 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
3124
class UnitManager {
 
3125
#line 3126 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
3126
  friend class ::CCExprResolve;
 
3127
  friend class ::CExprResolve;
 
3128
  friend class ::WinIfExists;
 
3129
  friend class ::WinImportHandler;
 
3130
  friend class ::WinMacros;
 
3131
  friend class ::WinAsm;
 
3132
  friend class ::WinDeclSpecs;
 
3133
  friend class ::WinMemberExplSpec;
 
3134
  friend class ::WinTypeKeywords;
 
3135
  friend class ::WinFriend;
 
3136
  friend class ::ExtAC;
 
3137
  friend class ::ExtACBuilderCoupling;
 
3138
  friend class ::ExtACSyntaxCoupling;
 
3139
  friend class ::ExtACTree;
 
3140
  friend class ::ExtACKeywords;
 
3141
  friend class ::ExtGnu;
 
3142
  friend class ::PragmaOnceUnitState;
 
3143
  friend class ::PragmaOnce;
 
3144
  friend class ::CMatchSyntax;
 
3145
 
 
3146
#line 38 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
3147
 
 
3148
public:
 
3149
  typedef map<string, Unit*> UMap;
 
3150
private:
 
3151
  ErrorStream *_err;        // For error messages.
 
3152
  list<Unit*> _nonames;     // Noname units list.
 
3153
  mutable UMap _umap;       // Named units, map supports fast lookup by name
 
3154
  typedef UMap::value_type UMapPair;
 
3155
  Tokenizer *_tokenizer;    // File scanner.
 
3156
 
 
3157
public:
 
3158
  UnitManager (ErrorStream &err) : _err (&err), _tokenizer (0) {}
 
3159
        
 
3160
  // Destructor: Delete all units.
 
3161
  virtual ~UnitManager ();
 
3162
        
 
3163
  // Get the unit hash table.
 
3164
  UMap &getTable () const { return _umap; }
 
3165
  typedef UMap::iterator UMapIter;
 
3166
        
 
3167
  // Get/Set the file scanner that is used by newUnit
 
3168
  Tokenizer *tokenizer () const { return _tokenizer; }
 
3169
  void tokenizer (Tokenizer *t) { _tokenizer = t; }
 
3170
 
 
3171
  // Add a unit to manager.
 
3172
  void addUnit (Unit *unit);
 
3173
        
 
3174
  // Remove (and destroy) a unit from hash table. If the name
 
3175
  // is NULL remove all (but not the nonames).
 
3176
  void removeUnit (const char *name = (const char*) 0, bool = false, 
 
3177
                   bool destroy = true) const;
 
3178
 
 
3179
  // Empty a unit. Don't remove from hash table.
 
3180
  // Preserve the last save location information.
 
3181
  void closeUnit (const char *name = (const char*) 0, bool = false) const;
 
3182
 
 
3183
  // Build and add a new unit. 
 
3184
  Unit *newUnit (const char *, Source *in = (Source*) 0, bool = false);
 
3185
        
 
3186
  // Get a unit by name. 
 
3187
  Unit *getUnit (const char *name, bool = false) const;
 
3188
                        
 
3189
  // Print given unit to the given outstream. If no
 
3190
  // name is given, print all units.
 
3191
  void print (const char *name = (const char*) 0, bool = false, 
 
3192
              ostream &out = cout) const;
 
3193
 
 
3194
  // Destroy all noname units.
 
3195
  void removeNonames ();
 
3196
      
 
3197
  // Initialize the unit manager and the managed 
 
3198
  // units for the next parse process.
 
3199
  
 
3200
#line 3201 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
3201
public: __attribute__((always_inline)) inline void __exec_old_init();
 
3202
 
 
3203
#line 90 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
3204
void init ();
 
3205
};
 
3206
 
 
3207
 
 
3208
} // namespace Puma
 
3209
 
 
3210
#endif /* __UnitManager__ */
 
3211
 
 
3212
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
3213
// This file is part of PUMA.
 
3214
// Copyright (C) 1999-2003  The PUMA developer team.
 
3215
//                                                                
 
3216
// This program is free software;  you can redistribute it and/or 
 
3217
// modify it under the terms of the GNU General Public License as 
 
3218
// published by the Free Software Foundation; either version 2 of 
 
3219
// the License, or (at your option) any later version.            
 
3220
//                                                                
 
3221
// This program is distributed in the hope that it will be useful,
 
3222
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
3223
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
3224
// GNU General Public License for more details.                   
 
3225
//                                                                
 
3226
// You should have received a copy of the GNU General Public      
 
3227
// License along with this program; if not, write to the Free     
 
3228
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
3229
// MA  02111-1307  USA                                            
 
3230
 
 
3231
#ifndef __Tokenizer_h__
 
3232
#define __Tokenizer_h__
 
3233
 
 
3234
// Tokenizer interface. Tokenizer read input from a "Source" and
 
3235
// form tokens, which used to fill a "Unit".
 
3236
 
 
3237
 
 
3238
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
3239
namespace Puma {
 
3240
 
 
3241
 
 
3242
 
 
3243
#line 3244 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
3244
} // closed Puma
 
3245
class CCExprResolve;
 
3246
class CExprResolve;
 
3247
class WinIfExists;
 
3248
class WinImportHandler;
 
3249
class WinMacros;
 
3250
class WinAsm;
 
3251
class WinDeclSpecs;
 
3252
class WinMemberExplSpec;
 
3253
class WinTypeKeywords;
 
3254
class WinFriend;
 
3255
class ExtAC;
 
3256
class ExtACBuilderCoupling;
 
3257
class ExtACSyntaxCoupling;
 
3258
class ExtACTree;
 
3259
class ExtACKeywords;
 
3260
class ExtGnu;
 
3261
class PragmaOnceUnitState;
 
3262
class PragmaOnce;
 
3263
class CMatchSyntax;
 
3264
namespace Puma {
 
3265
 
 
3266
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
3267
class Tokenizer {
 
3268
#line 3269 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
3269
  friend class ::CCExprResolve;
 
3270
  friend class ::CExprResolve;
 
3271
  friend class ::WinIfExists;
 
3272
  friend class ::WinImportHandler;
 
3273
  friend class ::WinMacros;
 
3274
  friend class ::WinAsm;
 
3275
  friend class ::WinDeclSpecs;
 
3276
  friend class ::WinMemberExplSpec;
 
3277
  friend class ::WinTypeKeywords;
 
3278
  friend class ::WinFriend;
 
3279
  friend class ::ExtAC;
 
3280
  friend class ::ExtACBuilderCoupling;
 
3281
  friend class ::ExtACSyntaxCoupling;
 
3282
  friend class ::ExtACTree;
 
3283
  friend class ::ExtACKeywords;
 
3284
  friend class ::ExtGnu;
 
3285
  friend class ::PragmaOnceUnitState;
 
3286
  friend class ::PragmaOnce;
 
3287
  friend class ::CMatchSyntax;
 
3288
 
 
3289
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
3290
 
 
3291
public:
 
3292
  virtual ~Tokenizer () {}
 
3293
  virtual void fill_unit (Source &in, Unit &unit) = 0;
 
3294
};
 
3295
 
 
3296
 
 
3297
} // namespace Puma
 
3298
 
 
3299
#endif /* __Tokenizer_h__ */
 
3300
 
 
3301
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/UnitManager.cc"
28
3302
#include <assert.h>
29
3303
 
30
3304
namespace Puma {
220
3494
  }
221
3495
}
222
3496
 
223
 
void UnitManager::init () {
224
 
  /* not yet used directly */
 
3497
 
 
3498
#line 3499 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
3499
 
 
3500
 
 
3501
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11UnitManager4initEv_0 {
 
3502
  typedef TJP__ZN4Puma11UnitManager4initEv_0 __TJP;
 
3503
  typedef TResult Result;
 
3504
  typedef TThat   That;
 
3505
  typedef TTarget Target;
 
3506
  enum { ARGS = TArgs::ARGS };
 
3507
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
3508
  static const int JPID = 3674;
 
3509
  static const AC::JPType JPTYPE = (AC::JPType)8;
 
3510
  struct Res {
 
3511
    typedef TResult Type;
 
3512
    typedef TResult ReferredType;
 
3513
  };
 
3514
 
 
3515
  That *_that;
 
3516
 
 
3517
  inline That *that() {return (That*)_that;}
 
3518
 
 
3519
};
 
3520
 
 
3521
 
 
3522
#line 223 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/UnitManager.cc"
 
3523
void UnitManager::init () 
 
3524
#line 3525 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
3525
{
 
3526
  typedef TJP__ZN4Puma11UnitManager4initEv_0< void, ::Puma::UnitManager , ::Puma::UnitManager ,  AC::TLE > __TJP;
 
3527
    __TJP tjp;
 
3528
  tjp._that =  (__TJP::That*)this;
 
3529
    this->__exec_old_init();
 
3530
  AC::invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after<__TJP> (&tjp);
225
3531
  
226
 
  // go through the whole hash table and reset the 
227
 
  // `#pragma once' state of the units
228
 
  for (UMapIter iter = _umap.begin (); iter != _umap.end (); ++iter)
229
 
    (*iter).second->state ().onlyOnce (false);
 
3532
}
 
3533
__attribute__((always_inline)) inline void Puma::UnitManager::__exec_old_init()
 
3534
#line 223 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/UnitManager.cc"
 
3535
{
230
3536
}
231
3537
 
232
3538
 
233
3539
} // namespace Puma
 
3540
 
 
3541
#line 3542 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/UnitManager.cc"
 
3542
 
 
3543
#ifdef __ac_FIRST_FILE__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_src_UnitManager_cc__
 
3544
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
 
3545
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
 
3546
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
 
3547
#include "CCExprResolveCC.ah"
 
3548
#endif
 
3549
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3550
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3551
#include "ExtACTree.ah"
 
3552
#endif
 
3553
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3554
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3555
#include "ExtGnu.ah"
 
3556
#endif
 
3557
#endif
 
3558
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
3559
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
3560
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
3561
#include "CCExprResolveH.ah"
 
3562
#endif
 
3563
#endif
 
3564
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
 
3565
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
 
3566
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
 
3567
#include "CExprResolveCC.ah"
 
3568
#endif
 
3569
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3570
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3571
#include "ExtACTree.ah"
 
3572
#endif
 
3573
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3574
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3575
#include "ExtGnu.ah"
 
3576
#endif
 
3577
#endif
 
3578
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
3579
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
3580
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
3581
#include "CExprResolveH.ah"
 
3582
#endif
 
3583
#endif
 
3584
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
3585
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
3586
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
3587
#include "WinIfExists.ah"
 
3588
#endif
 
3589
#endif
 
3590
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
3591
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
3592
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
3593
#include "WinImportHandler.ah"
 
3594
#endif
 
3595
#endif
 
3596
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinMacros_ah__
 
3597
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinMacros_ah__
 
3598
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinMacros_ah__
 
3599
#include "WinMacros.ah"
 
3600
#endif
 
3601
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3602
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3603
#include "PragmaOnceUnitState.ah"
 
3604
#endif
 
3605
#endif
 
3606
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinAsm_ah__
 
3607
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinAsm_ah__
 
3608
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinAsm_ah__
 
3609
#include "WinAsm.ah"
 
3610
#endif
 
3611
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3612
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3613
#include "ExtACTree.ah"
 
3614
#endif
 
3615
#endif
 
3616
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
3617
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
3618
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
3619
#include "WinDeclSpecs.ah"
 
3620
#endif
 
3621
#endif
 
3622
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
3623
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
3624
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
3625
#include "WinMemberExplSpec.ah"
 
3626
#endif
 
3627
#endif
 
3628
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
3629
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
3630
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
3631
#include "WinTypeKeywords.ah"
 
3632
#endif
 
3633
#endif
 
3634
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinFriend_ah__
 
3635
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinFriend_ah__
 
3636
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinFriend_ah__
 
3637
#include "WinFriend.ah"
 
3638
#endif
 
3639
#endif
 
3640
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtAC_ah__
 
3641
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtAC_ah__
 
3642
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtAC_ah__
 
3643
#include "ExtAC.ah"
 
3644
#endif
 
3645
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3646
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3647
#include "ExtACTree.ah"
 
3648
#endif
 
3649
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
3650
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
3651
#include "ExtACKeywords.ah"
 
3652
#endif
 
3653
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3654
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3655
#include "ExtGnu.ah"
 
3656
#endif
 
3657
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3658
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3659
#include "PragmaOnceUnitState.ah"
 
3660
#endif
 
3661
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
3662
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
3663
#include "CMatchSyntax.ah"
 
3664
#endif
 
3665
#endif
 
3666
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
 
3667
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
 
3668
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
 
3669
#include "ExtACBuilderH.ah"
 
3670
#endif
 
3671
#endif
 
3672
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
 
3673
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
 
3674
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
 
3675
#include "ExtACBuilderCC.ah"
 
3676
#endif
 
3677
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3678
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3679
#include "ExtACTree.ah"
 
3680
#endif
 
3681
#endif
 
3682
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
 
3683
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
 
3684
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
 
3685
#include "ExtACSyntaxH.ah"
 
3686
#endif
 
3687
#endif
 
3688
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
 
3689
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
 
3690
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
 
3691
#include "ExtACSyntaxCC.ah"
 
3692
#endif
 
3693
#endif
 
3694
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3695
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3696
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3697
#include "ExtACTree.ah"
 
3698
#endif
 
3699
#endif
 
3700
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
3701
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
3702
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
3703
#include "ExtACKeywords.ah"
 
3704
#endif
 
3705
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3706
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3707
#include "PragmaOnceUnitState.ah"
 
3708
#endif
 
3709
#endif
 
3710
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3711
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3712
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3713
#include "ExtACTree.ah"
 
3714
#endif
 
3715
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3716
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3717
#include "ExtGnu.ah"
 
3718
#endif
 
3719
#endif
 
3720
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
3721
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3722
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
3723
#include "ExtACTree.ah"
 
3724
#endif
 
3725
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
3726
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
3727
#include "ExtGnuCSemDeclSpecs.ah"
 
3728
#endif
 
3729
#endif
 
3730
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3731
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3732
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3733
 
 
3734
#line 193 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/UnitManager.cc"
 
3735
#endif
 
3736
#endif
 
3737
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
3738
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3739
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
3740
#include "PragmaOnceUnitState.ah"
 
3741
#endif
 
3742
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
3743
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
3744
#include "PragmaOnce.ah"
 
3745
#endif
 
3746
#endif
 
3747
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
3748
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
3749
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
3750
#include "TraceSyntax.ah"
 
3751
#endif
 
3752
#endif
 
3753
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
3754
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
3755
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
3756
#include "CMatchSyntax.ah"
 
3757
#endif
 
3758
#endif
 
3759
#undef __ac_FIRST__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1__
 
3760
#undef __ac_FIRST_FILE__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_src_UnitManager_cc__
 
3761
#endif // __ac_FIRST_FILE__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_src_UnitManager_cc__