33
54
inline void * operator new (__SIZE_TYPE__, AC::AnyResultBuffer *p) { return p; }
34
55
inline void operator delete (void *, AC::AnyResultBuffer *) { } // for VC++
36
// This file is part of PUMA.
37
// Copyright (C) 1999-2003 The PUMA developer team.
39
// This program is free software; you can redistribute it and/or
40
// modify it under the terms of the GNU General Public License as
41
// published by the Free Software Foundation; either version 2 of
42
// the License, or (at your option) any later version.
44
// This program is distributed in the hope that it will be useful,
45
// but WITHOUT ANY WARRANTY; without even the implied warranty of
46
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47
// GNU General Public License for more details.
49
// You should have received a copy of the GNU General Public
50
// License along with this program; if not, write to the Free
51
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
54
#ifndef __WinIfExists__
55
#define __WinIfExists__
57
/********************************************************/
58
/* Win __if_exists and __if_not_exists support aspect */
59
/********************************************************/
61
// This file is part of PUMA.
62
// Copyright (C) 1999-2003 The PUMA developer team.
64
// This program is free software; you can redistribute it and/or
65
// modify it under the terms of the GNU General Public License as
66
// published by the Free Software Foundation; either version 2 of
67
// the License, or (at your option) any later version.
69
// This program is distributed in the hope that it will be useful,
70
// but WITHOUT ANY WARRANTY; without even the implied warranty of
71
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
72
// GNU General Public License for more details.
74
// You should have received a copy of the GNU General Public
75
// License along with this program; if not, write to the Free
76
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
82
// This file is part of PUMA.
83
// Copyright (C) 1999-2003 The PUMA developer team.
85
// This program is free software; you can redistribute it and/or
86
// modify it under the terms of the GNU General Public License as
87
// published by the Free Software Foundation; either version 2 of
88
// the License, or (at your option) any later version.
90
// This program is distributed in the hope that it will be useful,
91
// but WITHOUT ANY WARRANTY; without even the implied warranty of
92
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
93
// GNU General Public License for more details.
95
// You should have received a copy of the GNU General Public
96
// License along with this program; if not, write to the Free
97
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
59
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/PreParser.cc"
61
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/PreParser.cc"
62
/* Driver template for the LEMON parser generator.
63
** Copyright 1991-1995 by D. Richard Hipp.
65
** This library is free software; you can redistribute it and/or
66
** modify it under the terms of the GNU Library General Public
67
** License as published by the Free Software Foundation; either
68
** version 2 of the License, or (at your option) any later version.
70
** This library is distributed in the hope that it will be useful,
71
** but WITHOUT ANY WARRANTY; without even the implied warranty of
72
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
73
** Library General Public License for more details.
75
** You should have received a copy of the GNU Library General Public
76
** License along with this library; if not, write to the
77
** Free Software Foundation, Inc., 59 Temple Place - Suite 330,
78
** Boston, MA 02111-1307, USA.
80
** Modified 1997 to make it suitable for use with makeheaders.
82
/* First off, code is include which follows the "include" declaration
83
** in the input file. */
85
#line 27 "cpp/PreParser.lem"
88
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/List.h"
89
// This file is part of PUMA.
90
// Copyright (C) 1999-2003 The PUMA developer team.
92
// This program is free software; you can redistribute it and/or
93
// modify it under the terms of the GNU General Public License as
94
// published by the Free Software Foundation; either version 2 of
95
// the License, or (at your option) any later version.
97
// This program is distributed in the hope that it will be useful,
98
// but WITHOUT ANY WARRANTY; without even the implied warranty of
99
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
100
// GNU General Public License for more details.
102
// You should have received a copy of the GNU General Public
103
// License along with this program; if not, write to the Free
104
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
111
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ListElement.h"
112
// This file is part of PUMA.
113
// Copyright (C) 1999-2003 The PUMA developer team.
115
// This program is free software; you can redistribute it and/or
116
// modify it under the terms of the GNU General Public License as
117
// published by the Free Software Foundation; either version 2 of
118
// the License, or (at your option) any later version.
120
// This program is distributed in the hope that it will be useful,
121
// but WITHOUT ANY WARRANTY; without even the implied warranty of
122
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
123
// GNU General Public License for more details.
125
// You should have received a copy of the GNU General Public
126
// License along with this program; if not, write to the Free
127
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
130
#ifndef __list_element_h__
131
#define __list_element_h__
133
// Base class for objects that may be inserted into a List. Lists
134
// autonomously delete or copy list element. So it's necessary to
135
// define a destructor and a duplicate method in the derived
103
138
#include <assert.h>
109
class WinImportHandler;
114
class ExtACBuilderCoupling;
115
class ExtACSyntaxCoupling;
120
class WinMemberExplSpec;
121
class WinTypeKeywords;
122
class PragmaOnceUnitState;
127
template <class Item>
128
class Array { friend class ::WinIfExists;
129
friend class ::WinImportHandler;
130
friend class ::WinMacros;
131
friend class ::CMatchSyntax;
132
friend class ::ExtGnu;
133
friend class ::ExtAC;
134
friend class ::ExtACBuilderCoupling;
135
friend class ::ExtACSyntaxCoupling;
136
friend class ::ExtACTree;
137
friend class ::ExtACKeywords;
138
friend class ::WinAsm;
139
friend class ::WinDeclSpecs;
140
friend class ::WinMemberExplSpec;
141
friend class ::WinTypeKeywords;
142
friend class ::PragmaOnceUnitState;
143
friend class ::PragmaOnce;
144
friend class ::CCExprResolve;
145
friend class ::CExprResolve;
148
static const long default_init_size = 5;
149
static const long default_increment = 5;
152
Array (long is = default_init_size, long incr = default_increment);
153
Array (const Array<Item>& array);
154
Array<Item>& operator =(const Array<Item>&);
156
void append (const Item& item);
157
void insert (long index, const Item& item);
158
void prepend (const Item& item);
159
void remove (long index);
161
Item& get (long index);
162
Item& operator[] (long index);
163
Item fetch (long index) const;
164
Item& lookup (long index) const;
165
long length () const;
146
#line 147 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
151
class WinImportHandler;
155
class WinMemberExplSpec;
156
class WinTypeKeywords;
159
class ExtACBuilderCoupling;
160
class ExtACSyntaxCoupling;
164
class PragmaOnceUnitState;
169
#line 34 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ListElement.h"
171
#line 172 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
172
friend class ::CCExprResolve;
173
friend class ::CExprResolve;
174
friend class ::WinIfExists;
175
friend class ::WinImportHandler;
176
friend class ::WinMacros;
177
friend class ::WinAsm;
178
friend class ::WinDeclSpecs;
179
friend class ::WinMemberExplSpec;
180
friend class ::WinTypeKeywords;
181
friend class ::WinFriend;
182
friend class ::ExtAC;
183
friend class ::ExtACBuilderCoupling;
184
friend class ::ExtACSyntaxCoupling;
185
friend class ::ExtACTree;
186
friend class ::ExtACKeywords;
187
friend class ::ExtGnu;
188
friend class ::PragmaOnceUnitState;
189
friend class ::PragmaOnce;
190
friend class ::CMatchSyntax;
192
#line 34 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/ListElement.h"
201
ListElement () : _belonging_to ((List*)0) {}
202
virtual ~ListElement () { assert (! _belonging_to); };
204
virtual ListElement *duplicate () = 0;
205
List *belonging_to () const { return _belonging_to; }
211
#endif /* __list_element_h__ */
213
#line 24 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/List.h"
218
#line 219 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
223
class WinImportHandler;
227
class WinMemberExplSpec;
228
class WinTypeKeywords;
231
class ExtACBuilderCoupling;
232
class ExtACSyntaxCoupling;
236
class PragmaOnceUnitState;
241
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/List.h"
243
#line 244 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
244
friend class ::CCExprResolve;
245
friend class ::CExprResolve;
246
friend class ::WinIfExists;
247
friend class ::WinImportHandler;
248
friend class ::WinMacros;
249
friend class ::WinAsm;
250
friend class ::WinDeclSpecs;
251
friend class ::WinMemberExplSpec;
252
friend class ::WinTypeKeywords;
253
friend class ::WinFriend;
254
friend class ::ExtAC;
255
friend class ::ExtACBuilderCoupling;
256
friend class ::ExtACSyntaxCoupling;
257
friend class ::ExtACTree;
258
friend class ::ExtACKeywords;
259
friend class ::ExtGnu;
260
friend class ::PragmaOnceUnitState;
261
friend class ::PragmaOnce;
262
friend class ::CMatchSyntax;
264
#line 27 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/List.h"
270
List () : _first ((ListElement*)0), _last ((ListElement*)0) {}
274
List &operator = (const List &);
275
List &operator += (const List &);
276
List operator + (const List &);
280
void append (ListElement &);
281
void prepend (ListElement &);
282
void insert (ListElement *at, ListElement &element);
283
void remove (ListElement *element);
284
void kill (ListElement *from, ListElement *to = (ListElement*)0)
285
{ List discard; cut (discard, from, to); }
287
void cut (List &out, ListElement *from, ListElement *to = (ListElement*)0);
288
//List *cut (ListElement *from, ListElement *to = (ListElement*)0);
289
List *copy (ListElement *from = (ListElement*)0,
290
ListElement *to = (ListElement*)0);
291
void paste (ListElement *at, const List &l);
292
void paste_before (ListElement *at, const List &l);
293
void move (ListElement *at, List &l);
294
void move_before (ListElement *at, List &l);
296
bool empty () const { return _first == (ListElement*)0; }
297
const ListElement *first () const { return _first; }
298
const ListElement *last () const { return _last; }
299
const ListElement *next (const ListElement *element) const
300
{ return element ? element->_next : 0; }
301
const ListElement *prev (const ListElement *element) const
302
{ return element ? element->_prev : 0; }
308
#endif /* __list_h__ */
310
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Unit.h"
311
// This file is part of PUMA.
312
// Copyright (C) 1999-2003 The PUMA developer team.
314
// This program is free software; you can redistribute it and/or
315
// modify it under the terms of the GNU General Public License as
316
// published by the Free Software Foundation; either version 2 of
317
// the License, or (at your option) any later version.
319
// This program is distributed in the hope that it will be useful,
320
// but WITHOUT ANY WARRANTY; without even the implied warranty of
321
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
322
// GNU General Public License for more details.
324
// You should have received a copy of the GNU General Public
325
// License along with this program; if not, write to the Free
326
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
333
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Printable.h"
334
// This file is part of PUMA.
335
// Copyright (C) 1999-2003 The PUMA developer team.
337
// This program is free software; you can redistribute it and/or
338
// modify it under the terms of the GNU General Public License as
339
// published by the Free Software Foundation; either version 2 of
340
// the License, or (at your option) any later version.
342
// This program is distributed in the hope that it will be useful,
343
// but WITHOUT ANY WARRANTY; without even the implied warranty of
344
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
345
// GNU General Public License for more details.
347
// You should have received a copy of the GNU General Public
348
// License along with this program; if not, write to the Free
349
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
352
#ifndef __printable_h__
353
#define __printable_h__
362
#line 363 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
367
class WinImportHandler;
371
class WinMemberExplSpec;
372
class WinTypeKeywords;
375
class ExtACBuilderCoupling;
376
class ExtACSyntaxCoupling;
380
class PragmaOnceUnitState;
385
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Printable.h"
387
#line 388 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
388
friend class ::CCExprResolve;
389
friend class ::CExprResolve;
390
friend class ::WinIfExists;
391
friend class ::WinImportHandler;
392
friend class ::WinMacros;
393
friend class ::WinAsm;
394
friend class ::WinDeclSpecs;
395
friend class ::WinMemberExplSpec;
396
friend class ::WinTypeKeywords;
397
friend class ::WinFriend;
398
friend class ::ExtAC;
399
friend class ::ExtACBuilderCoupling;
400
friend class ::ExtACSyntaxCoupling;
401
friend class ::ExtACTree;
402
friend class ::ExtACKeywords;
403
friend class ::ExtGnu;
404
friend class ::PragmaOnceUnitState;
405
friend class ::PragmaOnce;
406
friend class ::CMatchSyntax;
408
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Printable.h"
411
virtual ~Printable () {}
412
virtual void print (ostream &os) const = 0;
416
inline ostream &operator << (ostream &os, const Printable &object) {
424
#endif /* __printable_h__ */
426
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
428
#line 429 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
430
#ifndef __ac_fwd_PragmaOnceUnitState__
431
#define __ac_fwd_PragmaOnceUnitState__
432
class PragmaOnceUnitState;
434
template <class JoinPoint>
435
__attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp);
436
template <class JoinPoint>
437
__attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after (JoinPoint *tjp);
441
#ifndef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
442
#define __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
445
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
446
// This file is part of PUMA.
447
// Copyright (C) 1999-2003 The PUMA developer team.
449
// This program is free software; you can redistribute it and/or
450
// modify it under the terms of the GNU General Public License as
451
// published by the Free Software Foundation; either version 2 of
452
// the License, or (at your option) any later version.
454
// This program is distributed in the hope that it will be useful,
455
// but WITHOUT ANY WARRANTY; without even the implied warranty of
456
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
457
// GNU General Public License for more details.
459
// You should have received a copy of the GNU General Public
460
// License along with this program; if not, write to the Free
461
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
464
#ifndef __UnitState__
465
#define __UnitState__
467
// The state of a unit:
468
// 1. modified by manipulations and not updated at the class registry
469
// 2. modified by manipulations and updated at the class registry
470
// 3. unmodified by manipulations and not updated at the class registry
471
// 4. unmodified by manipulations and updated at the class registry
477
#line 478 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
482
class WinImportHandler;
486
class WinMemberExplSpec;
487
class WinTypeKeywords;
490
class ExtACBuilderCoupling;
491
class ExtACSyntaxCoupling;
495
class PragmaOnceUnitState;
500
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
502
#line 503 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
505
#ifndef __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
506
#define __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
508
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
509
// This file is part of PUMA.
510
// Copyright (C) 1999-2003 The PUMA developer team.
512
// This program is free software; you can redistribute it and/or
513
// modify it under the terms of the GNU General Public License as
514
// published by the Free Software Foundation; either version 2 of
515
// the License, or (at your option) any later version.
517
// This program is distributed in the hope that it will be useful,
518
// but WITHOUT ANY WARRANTY; without even the implied warranty of
519
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
520
// GNU General Public License for more details.
522
// You should have received a copy of the GNU General Public
523
// License along with this program; if not, write to the Free
524
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
527
#ifndef __PragmaOnceUnitState__
528
#define __PragmaOnceUnitState__
531
#line 532 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
535
class WinImportHandler;
539
class WinMemberExplSpec;
540
class WinTypeKeywords;
543
class ExtACBuilderCoupling;
544
class ExtACSyntaxCoupling;
551
#line 22 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
552
class PragmaOnceUnitState {
553
#line 554 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
556
static PragmaOnceUnitState *aspectof () {
557
static PragmaOnceUnitState __instance;
560
static PragmaOnceUnitState *aspectOf () {
565
#line 22 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
567
#line 568 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
568
friend class ::CCExprResolve;
569
friend class ::CExprResolve;
570
friend class ::WinIfExists;
571
friend class ::WinImportHandler;
572
friend class ::WinMacros;
573
friend class ::WinAsm;
574
friend class ::WinDeclSpecs;
575
friend class ::WinMemberExplSpec;
576
friend class ::WinTypeKeywords;
577
friend class ::WinFriend;
578
friend class ::ExtAC;
579
friend class ::ExtACBuilderCoupling;
580
friend class ::ExtACSyntaxCoupling;
581
friend class ::ExtACTree;
582
friend class ::ExtACKeywords;
583
friend class ::ExtGnu;
584
friend class ::PragmaOnce;
585
friend class ::CMatchSyntax;
587
#line 22 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
589
/******************************************************/
590
/* specific #pragma once unit state */
591
/******************************************************/
593
// pointcut definitions
595
#line 28 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
599
#line 37 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
602
// initialize new state flag
604
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
606
public: template<class JoinPoint> void __a0_after
607
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
609
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
611
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
613
#line 614 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
615
JoinPoint *&thisJoinPoint = tjp;
617
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
619
#line 620 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
621
typedef typename JoinPoint::That __JP_That;
622
typedef typename JoinPoint::Target __JP_Target;
623
typedef typename JoinPoint::Result __JP_Result;
625
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
627
thisJoinPoint->that ()->_once = false;
629
#line 630 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
633
#line 42 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
636
// initialize new flag for all managed units
638
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
640
public: template<class JoinPoint> void __a1_after
641
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
643
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
645
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
647
#line 648 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
649
typedef typename JoinPoint::That __JP_That;
650
typedef typename JoinPoint::Target __JP_Target;
651
typedef typename JoinPoint::Result __JP_Result;
653
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
655
// go through the whole unit hash table and reset the
656
// `#pragma once' state of the units
658
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
660
for (iter = tjp->that()->_umap.begin (); iter != tjp->that()->_umap.end (); ++iter)
661
(*iter).second->state ().onlyOnce (false);
663
#line 664 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
667
#line 51 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
671
// this aspect should never be instantiated directly
672
PragmaOnceUnitState () {}
674
#line 675 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
677
template <class JoinPoint>
678
__attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp) {
679
::PragmaOnceUnitState::aspectof()->__a0_after (tjp);
681
template <class JoinPoint>
682
__attribute((always_inline)) inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a1_after (JoinPoint *tjp) {
683
::PragmaOnceUnitState::aspectof()->__a1_after (tjp);
687
#line 56 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
691
#endif /* __PragmaOnceUnitState__ */
693
#line 8 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
697
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
699
#line 700 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
700
friend class ::CCExprResolve;
701
friend class ::CExprResolve;
702
friend class ::WinIfExists;
703
friend class ::WinImportHandler;
704
friend class ::WinMacros;
705
friend class ::WinAsm;
706
friend class ::WinDeclSpecs;
707
friend class ::WinMemberExplSpec;
708
friend class ::WinTypeKeywords;
709
friend class ::WinFriend;
710
friend class ::ExtAC;
711
friend class ::ExtACBuilderCoupling;
712
friend class ::ExtACSyntaxCoupling;
713
friend class ::ExtACTree;
714
friend class ::ExtACKeywords;
715
friend class ::ExtGnu;
716
friend class ::PragmaOnceUnitState;
717
friend class ::PragmaOnce;
718
friend class ::CMatchSyntax;
720
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
728
#line 729 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
729
public: __attribute__((always_inline)) inline void __exec_old_C1();
731
#line 37 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
734
bool isModified () const;
735
bool isUpdated () const;
736
long lastModified () const;
738
// Is modified and has to be updated.
740
void lastModified (long);
173
void check (long wanted);
176
template <class Item>
177
inline Array<Item>::Array (long is, long incr)
182
data = new Item[size];
185
template <class Item>
186
Array<Item>::Array (const Array<Item>& array)
190
data = new Item[size];
191
increment = array.increment;
193
for (int pos = 0; pos < array.length (); pos++)
194
append (array.lookup (pos));
197
template <class Item>
198
Array<Item>& Array<Item>::operator =(const Array<Item>& array)
204
data = new Item[size];
205
increment = array.increment;
207
for (int pos = 0; pos < array.length (); pos++)
208
append (array.lookup (pos));
212
template <class Item>
213
Array<Item>::~Array ()
219
template <class Item>
220
inline void Array<Item>::check (long wanted)
226
while (wanted >= size)
231
new_data = new Item[size];
232
for (int pos = 0; pos < count; pos++)
233
new_data[pos] = data[pos];
239
template <class Item>
240
inline void Array<Item>::append (const Item& item)
243
data[count++] = item;
246
template <class Item>
247
void Array<Item>::prepend (const Item& item)
252
template <class Item>
253
void Array<Item>::insert (long index, const Item& item)
256
for (int pos = count; pos > index; pos--)
257
data[pos] = data[pos - 1];
262
template <class Item>
263
inline Item& Array<Item>::get (long index)
271
template <class Item>
272
inline Item& Array<Item>::operator[] (long index)
277
template <class Item>
278
inline Item Array<Item>::fetch (long index) const
280
assert(index < count);
284
template <class Item>
285
inline long Array<Item>::length () const
290
template <class Item>
291
inline void Array<Item>::remove (long index)
293
if (index < count && count > 0)
295
for (int pos = index; pos < count - 1; pos++)
296
data[pos] = data[pos + 1];
303
inline void Array<int>::reset () {
308
template <class Item>
309
void Array<Item>::reset ()
314
size = default_init_size;
315
increment = default_increment;
316
data = new Item[size];
319
template <class Item>
320
inline Item& Array<Item>::lookup (long index) const
322
assert(index >= 0 && index < count);
323
// if (index >= count) index = count - 1;
324
// if (index < 0) index = 0;
331
// Array specialization for pointer types sharing method definitions
335
#include "Puma/VoidPtrArray.h"
340
template <class Item>
341
class Array<Item*> : private VoidPtrArray {
342
typedef VoidPtrArray Base;
745
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
749
bool onlyOnce ( ) const { return _once ; }
750
void onlyOnce ( bool v ) { _once = v ; }
751
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
753
#line 754 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
755
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 {
756
typedef TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 __TJP;
757
typedef TResult Result;
759
typedef TTarget Target;
760
enum { ARGS = TArgs::ARGS };
761
template <int I> struct Arg : AC::Arg<TArgs, I> {};
762
static const int JPID = 3641;
763
static const AC::JPType JPTYPE = (AC::JPType)16;
766
typedef void ReferredType;
771
inline That *that() {return (That*)_that;}
776
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
778
#line 779 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
345
Array (long is = default_init_size, long incr = default_increment) :
347
Array (const Array<Item*> &array) :
349
Array<Item*> &operator= (const Array<Item*> &array)
350
{ return (Array<Item*>&)Base::operator= (array); }
354
void append (const Item *item) { Base::append ((void*)item); }
355
void insert (long idx, const Item *item) { Base::insert (idx, (void*)item); }
356
void prepend (const Item *item) { Base::prepend ((void*)item); }
357
void remove (long idx) { Base::remove (idx); }
358
void reset () { Base::reset (); }
360
Item *&get (long idx) { return (Item*&)Base::get (idx); }
361
Item *&operator[] (long idx) { return (Item*&)Base::operator[] (idx); }
362
Item *fetch (long idx) const { return (Item*)Base::fetch (idx); }
363
Item *&lookup (long idx) const { return (Item*&)Base::lookup (idx); }
364
long length () const { return Base::length (); }
781
inline UnitState (const Puma::UnitState & arg0) : _modified (arg0._modified), _updated (arg0._updated), _lastModified (arg0._lastModified), _once (arg0._once) {
782
typedef TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0< void, ::Puma::UnitState , ::Puma::UnitState , AC::TL< const ::Puma::UnitState & , AC::TLE > > __TJP;
784
tjp._that = (__TJP::That*)this;
785
AC::invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after<__TJP> (&tjp);
789
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
793
#line 794 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
796
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma9UnitStateC1Ev_0 {
797
typedef TJP__ZN4Puma9UnitStateC1Ev_0 __TJP;
798
typedef TResult Result;
800
typedef TTarget Target;
801
enum { ARGS = TArgs::ARGS };
802
template <int I> struct Arg : AC::Arg<TArgs, I> {};
803
static const int JPID = 3617;
804
static const AC::JPType JPTYPE = (AC::JPType)16;
807
typedef void ReferredType;
812
inline That *that() {return (That*)_that;}
817
#line 50 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
818
inline UnitState::UnitState ()
820
#line 821 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
822
typedef TJP__ZN4Puma9UnitStateC1Ev_0< void, ::Puma::UnitState , ::Puma::UnitState , AC::TLE > __TJP;
824
tjp._that = (__TJP::That*)this;
825
this->__exec_old_C1();
826
AC::invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after<__TJP> (&tjp);
829
__attribute__((always_inline)) inline void Puma::UnitState::__exec_old_C1()
830
#line 51 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/UnitState.h"
831
{ _modified = false; _updated = false; _lastModified = 0; }
833
inline bool UnitState::isModified () const
834
{ return _modified; }
835
inline bool UnitState::isUpdated () const
837
inline long UnitState::lastModified () const
838
{ return _lastModified; }
840
inline void UnitState::modified ()
841
{ _modified = true; _updated = false; _lastModified = 0; }
842
inline void UnitState::unmodified ()
843
{ _modified = false; }
844
inline void UnitState::updated ()
846
inline void UnitState::lastModified (long when)
847
{ _lastModified = when; }
368
850
} // namespace Puma
852
#endif /* __UnitState__ */
372
#endif /* __array_h__ */
854
#line 26 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Unit.h"
859
#line 860 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
376
863
class WinIfExists;
377
864
class WinImportHandler;
868
class WinMemberExplSpec;
869
class WinTypeKeywords;
382
872
class ExtACBuilderCoupling;
383
873
class ExtACSyntaxCoupling;
385
875
class ExtACKeywords;
388
class WinMemberExplSpec;
389
class WinTypeKeywords;
390
877
class PragmaOnceUnitState;
391
878
class PragmaOnce;
395
template <class Item>
396
class Stack : private Array<Item> { friend class ::WinIfExists;
882
#line 29 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Unit.h"
883
class Unit : public List, public Printable {
884
#line 885 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
885
friend class ::CCExprResolve;
886
friend class ::CExprResolve;
887
friend class ::WinIfExists;
397
888
friend class ::WinImportHandler;
398
889
friend class ::WinMacros;
399
friend class ::CMatchSyntax;
400
friend class ::ExtGnu;
890
friend class ::WinAsm;
891
friend class ::WinDeclSpecs;
892
friend class ::WinMemberExplSpec;
893
friend class ::WinTypeKeywords;
894
friend class ::WinFriend;
401
895
friend class ::ExtAC;
402
896
friend class ::ExtACBuilderCoupling;
403
897
friend class ::ExtACSyntaxCoupling;
404
898
friend class ::ExtACTree;
405
899
friend class ::ExtACKeywords;
406
friend class ::WinAsm;
407
friend class ::WinDeclSpecs;
408
friend class ::WinMemberExplSpec;
409
friend class ::WinTypeKeywords;
900
friend class ::ExtGnu;
410
901
friend class ::PragmaOnceUnitState;
411
902
friend class ::PragmaOnce;
412
friend class ::CCExprResolve;
413
friend class ::CExprResolve;
903
friend class ::CMatchSyntax;
905
#line 29 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Unit.h"
416
Stack (long is = 8192, long incr = 8192) :
417
Array<Item> (is, incr) {}
418
void push (Item f) { Array<Item>::append (f); }
419
Item &top () const { long len = Array<Item>::length ()-1;
420
return Array<Item>::lookup (len >= 0 ? len : 0); }
421
void pop () { Array<Item>::remove (Array<Item>::length () - 1); }
422
long length () const { return Array<Item>::length (); }
423
void reset () { Array<Item>::reset (); }
428
#endif /* __stack_h__ */
429
// This file is part of PUMA.
430
// Copyright (C) 1999-2003 The PUMA developer team.
432
// This program is free software; you can redistribute it and/or
433
// modify it under the terms of the GNU General Public License as
434
// published by the Free Software Foundation; either version 2 of
435
// the License, or (at your option) any later version.
437
// This program is distributed in the hope that it will be useful,
438
// but WITHOUT ANY WARRANTY; without even the implied warranty of
439
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
440
// GNU General Public License for more details.
442
// You should have received a copy of the GNU General Public
443
// License along with this program; if not, write to the Free
444
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
454
// core tokens, i.e. numbers, operator symbols, brackets, etc.
508
TOK_LAST_CORE = TOK_ELLIPSIS, // this is a group separator for the scanner!
548
// C compatibility keywords
568
// C win specific keywords
580
TOK_LAST_C = TOK_IF_NOT_EXISTS,
582
// a boolean constant:
614
// C++ alternative representation of operators (ISO 646):
628
TOK_LAST_CC = TOK_XOR_EQ_ISO_646,
630
// AspectC++ keywords:
638
TOK_LAST_AC = TOK_UNKNOWN_T,
640
// further [A](C|C++) token
645
// These two always have to be the ** last ** token listed here!!!
653
#endif /* __C_TOKENS__ */
911
Unit () : List (), _name ((char*)0) {}
912
Unit (const List &list) : List (list), _name ((char*)0) {}
914
virtual void name (const char *);
915
char *name () const { return _name; }
916
virtual void print (ostream &os) const;
917
virtual bool isFile () const { return false; }
918
virtual bool isMacroExp () const { return false; }
919
UnitState &state () { return _state; }
925
#endif /* __unit_h__ */
927
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Token.h"
654
928
// This file is part of PUMA.
655
929
// Copyright (C) 1999-2003 The PUMA developer team.
1888
2168
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
1889
2169
// MA 02111-1307 USA
1891
#ifndef __list_element_h__
1892
#define __list_element_h__
1894
// Base class for objects that may be inserted into a List. Lists
1895
// autonomously delete or copy list element. So it's necessary to
1896
// define a destructor and a duplicate method in the derived
1908
class WinImportHandler;
1913
class ExtACBuilderCoupling;
1914
class ExtACSyntaxCoupling;
1916
class ExtACKeywords;
1919
class WinMemberExplSpec;
1920
class WinTypeKeywords;
1921
class PragmaOnceUnitState;
1923
class CCExprResolve;
1926
class ListElement { friend class ::WinIfExists;
1927
friend class ::WinImportHandler;
1928
friend class ::WinMacros;
1929
friend class ::CMatchSyntax;
1930
friend class ::ExtGnu;
1931
friend class ::ExtAC;
1932
friend class ::ExtACBuilderCoupling;
1933
friend class ::ExtACSyntaxCoupling;
1934
friend class ::ExtACTree;
1935
friend class ::ExtACKeywords;
1936
friend class ::WinAsm;
1937
friend class ::WinDeclSpecs;
1938
friend class ::WinMemberExplSpec;
1939
friend class ::WinTypeKeywords;
1940
friend class ::PragmaOnceUnitState;
1941
friend class ::PragmaOnce;
1942
friend class ::CCExprResolve;
1943
friend class ::CExprResolve;
1947
List *_belonging_to;
1952
ListElement () : _belonging_to ((List*)0) {}
1953
virtual ~ListElement () { assert (! _belonging_to); };
1955
virtual ListElement *duplicate () = 0;
1956
List *belonging_to () const { return _belonging_to; }
1962
#endif /* __list_element_h__ */
1969
class WinImportHandler;
1974
class ExtACBuilderCoupling;
1975
class ExtACSyntaxCoupling;
1977
class ExtACKeywords;
1980
class WinMemberExplSpec;
1981
class WinTypeKeywords;
1982
class PragmaOnceUnitState;
1984
class CCExprResolve;
1987
class Token : public ListElement { friend class ::WinIfExists;
1988
friend class ::WinImportHandler;
1989
friend class ::WinMacros;
1990
friend class ::CMatchSyntax;
1991
friend class ::ExtGnu;
1992
friend class ::ExtAC;
1993
friend class ::ExtACBuilderCoupling;
1994
friend class ::ExtACSyntaxCoupling;
1995
friend class ::ExtACTree;
1996
friend class ::ExtACKeywords;
1997
friend class ::WinAsm;
1998
friend class ::WinDeclSpecs;
1999
friend class ::WinMemberExplSpec;
2000
friend class ::WinTypeKeywords;
2001
friend class ::PragmaOnceUnitState;
2002
friend class ::PragmaOnce;
2003
friend class ::CCExprResolve;
2004
friend class ::CExprResolve;
2178
template <class Item>
2181
static const long default_init_size = 5;
2182
static const long default_increment = 5;
2185
Array (long is = default_init_size, long incr = default_increment);
2186
Array (const Array<Item>& array);
2187
Array<Item>& operator =(const Array<Item>&);
2189
void append (const Item& item);
2190
void insert (long index, const Item& item);
2191
void prepend (const Item& item);
2192
void remove (long index);
2194
Item& get (long index);
2195
Item& operator[] (long index);
2196
Item fetch (long index) const;
2197
Item& lookup (long index) const;
2198
long length () const;
2206
void grow (long wanted);
2209
template <class Item>
2210
inline Array<Item>::Array (long is, long incr) {
2217
template <class Item>
2218
Array<Item>::Array (const Array<Item>& array) {
2221
increment = array.increment;
2223
if (size && array.data) {
2224
data = new Item[size];
2225
for (; count < array.count; count++) {
2226
data[count] = array.data[count];
2232
template <class Item>
2233
Array<Item>& Array<Item>::operator =(const Array<Item>& array) {
2239
increment = array.increment;
2241
if (size && array.data) {
2242
data = new Item[size];
2243
for (; count < array.count; count++) {
2244
data[count] = array.data[count];
2252
template <class Item>
2253
Array<Item>::~Array () {
2258
template <class Item>
2259
inline void Array<Item>::grow (long wanted) {
2263
} while (wanted >= size);
2266
Item* new_data = new Item[size];
2267
for (long i = 0; i < count; i++) {
2268
new_data[i] = data[i];
2273
data = new Item[size];
2276
template <class Item>
2277
inline void Array<Item>::append (const Item& item) {
2278
if (count >= size || ! data) {
2281
data[count++] = item;
2284
template <class Item>
2285
void Array<Item>::prepend (const Item& item) {
2289
template <class Item>
2290
void Array<Item>::insert (long index, const Item& item) {
2291
if (count >= size || ! data) {
2294
for (long i = count; i > index; i--)
2295
data[i] = data[i - 1];
2300
template <class Item>
2301
inline Item& Array<Item>::get (long index) {
2302
if (index >= size || ! data) {
2310
template <class Item>
2311
inline Item& Array<Item>::operator[] (long index) {
2315
template <class Item>
2316
inline Item Array<Item>::fetch (long index) const {
2317
assert(index < count && data);
2321
template <class Item>
2322
inline long Array<Item>::length () const {
2326
template <class Item>
2327
inline void Array<Item>::remove (long index) {
2328
if (index < count && count > 0) {
2329
for (long i = index; i < count - 1; i++)
2330
data[i] = data[i + 1];
2337
inline void Array<int>::reset () {
2342
template <class Item>
2343
void Array<Item>::reset () {
2348
size = default_init_size;
2349
increment = default_increment;
2350
data = new Item[size];
2353
template <class Item>
2354
inline Item& Array<Item>::lookup (long index) const {
2355
assert(index >= 0 && index < count);
2362
// Array specialization for pointer types sharing method definitions
2366
#include "Puma/VoidPtrArray.h"
2371
template <class Item>
2372
class Array<Item*> : private VoidPtrArray {
2373
typedef VoidPtrArray Base;
2376
Array (long is = default_init_size, long incr = default_increment) :
2378
Array (const Array<Item*> &array) :
2380
Array<Item*> &operator= (const Array<Item*> &array)
2381
{ return (Array<Item*>&)Base::operator= (array); }
2385
void append (const Item *item) { Base::append ((void*)item); }
2386
void insert (long idx, const Item *item) { Base::insert (idx, (void*)item); }
2387
void prepend (const Item *item) { Base::prepend ((void*)item); }
2388
void remove (long idx) { Base::remove (idx); }
2389
void reset () { Base::reset (); }
2391
Item *&get (long idx) { return (Item*&)Base::get (idx); }
2392
Item *&operator[] (long idx) { return (Item*&)Base::operator[] (idx); }
2393
Item *fetch (long idx) const { return (Item*)Base::fetch (idx); }
2394
Item *&lookup (long idx) const { return (Item*&)Base::lookup (idx); }
2395
long length () const { return Base::length (); }
2403
#endif /* __array_h__ */
2405
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Token.h"
2408
#line 36 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Token.h"
2413
#line 2414 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
2415
class CCExprResolve;
2418
class WinImportHandler;
2422
class WinMemberExplSpec;
2423
class WinTypeKeywords;
2426
class ExtACBuilderCoupling;
2427
class ExtACSyntaxCoupling;
2429
class ExtACKeywords;
2431
class PragmaOnceUnitState;
2436
#line 39 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Token.h"
2437
class Token : public ListElement {
2438
#line 2439 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
2439
friend class ::CCExprResolve;
2440
friend class ::CExprResolve;
2441
friend class ::WinIfExists;
2442
friend class ::WinImportHandler;
2443
friend class ::WinMacros;
2444
friend class ::WinAsm;
2445
friend class ::WinDeclSpecs;
2446
friend class ::WinMemberExplSpec;
2447
friend class ::WinTypeKeywords;
2448
friend class ::WinFriend;
2449
friend class ::ExtAC;
2450
friend class ::ExtACBuilderCoupling;
2451
friend class ::ExtACSyntaxCoupling;
2452
friend class ::ExtACTree;
2453
friend class ::ExtACKeywords;
2454
friend class ::ExtGnu;
2455
friend class ::PragmaOnceUnitState;
2456
friend class ::PragmaOnce;
2457
friend class ::CMatchSyntax;
2459
#line 39 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Token.h"
2006
2461
int _type, _real_type;
2008
2463
Location _location;
2009
2464
LanguageID _language;
2466
mutable DString _dtext;
2012
2468
Array<int> *_cont_lines;
2124
2581
} // namespace Puma
2126
2583
#endif /* __Token_h__ */
2127
using namespace Puma;
2133
class WinImportHandler;
2138
class ExtACBuilderCoupling;
2139
class ExtACSyntaxCoupling;
2141
class ExtACKeywords;
2144
class WinMemberExplSpec;
2145
class WinTypeKeywords;
2146
class PragmaOnceUnitState;
2148
class CCExprResolve;
2152
static WinIfExists *aspectof () {
2153
static WinIfExists __instance;
2156
static WinIfExists *aspectOf () {
2160
friend class ::WinImportHandler;
2161
friend class ::WinMacros;
2162
friend class ::CMatchSyntax;
2163
friend class ::ExtGnu;
2164
friend class ::ExtAC;
2165
friend class ::ExtACBuilderCoupling;
2166
friend class ::ExtACSyntaxCoupling;
2167
friend class ::ExtACTree;
2168
friend class ::ExtACKeywords;
2169
friend class ::WinAsm;
2170
friend class ::WinDeclSpecs;
2171
friend class ::WinMemberExplSpec;
2172
friend class ::WinTypeKeywords;
2173
friend class ::PragmaOnceUnitState;
2174
friend class ::PragmaOnce;
2175
friend class ::CCExprResolve;
2176
friend class ::CExprResolve;
2178
/********************************************************/
2179
/* Win __if_exists and __if_not_exists */
2180
/********************************************************/
2182
// pointcut definitions
2185
// structural extensions
2188
// preprocess __if_exists and __if_not_exists statements
2190
public: template<class JoinPoint> void __a0_around (JoinPoint *tjp) {
2191
JoinPoint *&thisJoinPoint = tjp;
2193
typedef typename JoinPoint::That __JP_That;
2194
typedef typename JoinPoint::Target __JP_Target;
2195
typedef typename JoinPoint::Result __JP_Result;
2199
__JP_That *preparser;
2201
preparser = tjp->that ();
2202
tjp->proceed (); // get the next token
2203
token = *tjp->result ();
2205
type = token->type ();
2206
// __if_exists (...) { ... }
2207
if (type == TOK_IF_EXISTS) {
2208
preparser->skip_up_to (TOK_CLOSE_CURLY);
2209
*(Token**)thisJoinPoint->result () = preparser->next ();
2211
// __if_not_exists (...) { ... }
2212
} else if (type == TOK_IF_NOT_EXISTS) {
2213
preparser->skip_up_to (TOK_OPEN_CURLY);
2214
preparser->_depth.push (1);
2215
*(Token**)thisJoinPoint->result () = preparser->next ();
2218
// skip closing `}' of __if_not_exists
2219
if (preparser->_depth.length ()) {
2220
if (type == TOK_OPEN_CURLY)
2221
preparser->_depth.top () = preparser->_depth.top () + 1;
2222
else if (type == TOK_CLOSE_CURLY) {
2223
preparser->_depth.top () = preparser->_depth.top () - 1;
2224
if (preparser->_depth.top () == 0) {
2225
preparser->_depth.pop ();
2226
*(Token**)thisJoinPoint->result () = preparser->next ();
2240
template <class JoinPoint>
2241
inline void invoke_WinIfExists_WinIfExists_a0_around (JoinPoint *tjp) {
2242
::WinIfExists::aspectof()->__a0_around (tjp);
2250
// skip __if_exists resp. __if_not_exists statement
2254
#endif /* __WinIfExists__ */
2256
#ifndef __ac_fwd_PragmaOnce__
2257
#define __ac_fwd_PragmaOnce__
2260
template <class JoinPoint>
2261
inline void invoke_PragmaOnce_PragmaOnce_a0_after (JoinPoint *tjp);
2262
template <class JoinPoint>
2263
inline void invoke_PragmaOnce_PragmaOnce_a1_after (JoinPoint *tjp);
2264
template <class JoinPoint, class Binding>
2265
inline void invoke_PragmaOnce_PragmaOnce_a2_around (JoinPoint *tjp);
2266
template <class JoinPoint>
2267
inline void invoke_PragmaOnce_PragmaOnce_a3_after (JoinPoint *tjp);
2271
#ifndef __ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnce_ah__
2272
#define __ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnce_ah__
2274
/* Driver template for the LEMON parser generator.
2275
** Copyright 1991-1995 by D. Richard Hipp.
2277
** This library is free software; you can redistribute it and/or
2278
** modify it under the terms of the GNU Library General Public
2279
** License as published by the Free Software Foundation; either
2280
** version 2 of the License, or (at your option) any later version.
2282
** This library is distributed in the hope that it will be useful,
2283
** but WITHOUT ANY WARRANTY; without even the implied warranty of
2284
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2285
** Library General Public License for more details.
2287
** You should have received a copy of the GNU Library General Public
2288
** License along with this library; if not, write to the
2289
** Free Software Foundation, Inc., 59 Temple Place - Suite 330,
2290
** Boston, MA 02111-1307, USA.
2292
** Modified 1997 to make it suitable for use with makeheaders.
2294
/* First off, code is include which follows the "include" declaration
2295
** in the input file. */
2297
#line 27 "cpp/PreParser.lem"
2299
// This file is part of PUMA.
2300
// Copyright (C) 1999-2003 The PUMA developer team.
2302
// This program is free software; you can redistribute it and/or
2303
// modify it under the terms of the GNU General Public License as
2304
// published by the Free Software Foundation; either version 2 of
2305
// the License, or (at your option) any later version.
2307
// This program is distributed in the hope that it will be useful,
2308
// but WITHOUT ANY WARRANTY; without even the implied warranty of
2309
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2310
// GNU General Public License for more details.
2312
// You should have received a copy of the GNU General Public
2313
// License along with this program; if not, write to the Free
2314
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
2315
// MA 02111-1307 USA
2325
class WinImportHandler;
2330
class ExtACBuilderCoupling;
2331
class ExtACSyntaxCoupling;
2333
class ExtACKeywords;
2336
class WinMemberExplSpec;
2337
class WinTypeKeywords;
2338
class PragmaOnceUnitState;
2340
class CCExprResolve;
2343
class List { friend class ::WinIfExists;
2344
friend class ::WinImportHandler;
2345
friend class ::WinMacros;
2346
friend class ::CMatchSyntax;
2347
friend class ::ExtGnu;
2348
friend class ::ExtAC;
2349
friend class ::ExtACBuilderCoupling;
2350
friend class ::ExtACSyntaxCoupling;
2351
friend class ::ExtACTree;
2352
friend class ::ExtACKeywords;
2353
friend class ::WinAsm;
2354
friend class ::WinDeclSpecs;
2355
friend class ::WinMemberExplSpec;
2356
friend class ::WinTypeKeywords;
2357
friend class ::PragmaOnceUnitState;
2358
friend class ::PragmaOnce;
2359
friend class ::CCExprResolve;
2360
friend class ::CExprResolve;
2362
ListElement *_first;
2366
List () : _first ((ListElement*)0), _last ((ListElement*)0) {}
2367
List (const List &);
2370
List &operator = (const List &);
2371
List &operator += (const List &);
2372
List operator + (const List &);
2376
void append (ListElement &);
2377
void prepend (ListElement &);
2378
void insert (ListElement *at, ListElement &element);
2379
void remove (ListElement *element);
2380
void kill (ListElement *from, ListElement *to = (ListElement*)0)
2381
{ List discard; cut (discard, from, to); }
2383
void cut (List &out, ListElement *from, ListElement *to = (ListElement*)0);
2384
//List *cut (ListElement *from, ListElement *to = (ListElement*)0);
2385
List *copy (ListElement *from = (ListElement*)0,
2386
ListElement *to = (ListElement*)0);
2387
void paste (ListElement *at, const List &l);
2388
void paste_before (ListElement *at, const List &l);
2389
void move (ListElement *at, List &l);
2390
void move_before (ListElement *at, List &l);
2392
bool empty () const { return _first == (ListElement*)0; }
2393
const ListElement *first () const { return _first; }
2394
const ListElement *last () const { return _last; }
2395
const ListElement *next (const ListElement *element) const
2396
{ return element->_next; }
2397
const ListElement *prev (const ListElement *element) const
2398
{ return element->_prev; }
2404
#endif /* __list_h__ */
2405
// This file is part of PUMA.
2406
// Copyright (C) 1999-2003 The PUMA developer team.
2408
// This program is free software; you can redistribute it and/or
2409
// modify it under the terms of the GNU General Public License as
2410
// published by the Free Software Foundation; either version 2 of
2411
// the License, or (at your option) any later version.
2413
// This program is distributed in the hope that it will be useful,
2414
// but WITHOUT ANY WARRANTY; without even the implied warranty of
2415
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2416
// GNU General Public License for more details.
2418
// You should have received a copy of the GNU General Public
2419
// License along with this program; if not, write to the Free
2420
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
2421
// MA 02111-1307 USA
2427
#ifndef __ac_fwd_PragmaOnceUnitState__
2428
#define __ac_fwd_PragmaOnceUnitState__
2429
class PragmaOnceUnitState;
2431
template <class JoinPoint>
2432
inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp);
2436
#ifndef __ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
2437
#define __ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
2439
// This file is part of PUMA.
2440
// Copyright (C) 1999-2003 The PUMA developer team.
2442
// This program is free software; you can redistribute it and/or
2443
// modify it under the terms of the GNU General Public License as
2444
// published by the Free Software Foundation; either version 2 of
2445
// the License, or (at your option) any later version.
2447
// This program is distributed in the hope that it will be useful,
2448
// but WITHOUT ANY WARRANTY; without even the implied warranty of
2449
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2450
// GNU General Public License for more details.
2452
// You should have received a copy of the GNU General Public
2453
// License along with this program; if not, write to the Free
2454
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
2455
// MA 02111-1307 USA
2457
#ifndef __PragmaOnceUnitState__
2458
#define __PragmaOnceUnitState__
2460
using namespace Puma;
2463
class WinImportHandler;
2468
class ExtACBuilderCoupling;
2469
class ExtACSyntaxCoupling;
2471
class ExtACKeywords;
2474
class WinMemberExplSpec;
2475
class WinTypeKeywords;
2477
class CCExprResolve;
2479
class PragmaOnceUnitState {
2481
static PragmaOnceUnitState *aspectof () {
2482
static PragmaOnceUnitState __instance;
2485
static PragmaOnceUnitState *aspectOf () {
2489
friend class ::WinIfExists;
2490
friend class ::WinImportHandler;
2491
friend class ::WinMacros;
2492
friend class ::CMatchSyntax;
2493
friend class ::ExtGnu;
2494
friend class ::ExtAC;
2495
friend class ::ExtACBuilderCoupling;
2496
friend class ::ExtACSyntaxCoupling;
2497
friend class ::ExtACTree;
2498
friend class ::ExtACKeywords;
2499
friend class ::WinAsm;
2500
friend class ::WinDeclSpecs;
2501
friend class ::WinMemberExplSpec;
2502
friend class ::WinTypeKeywords;
2503
friend class ::PragmaOnce;
2504
friend class ::CCExprResolve;
2505
friend class ::CExprResolve;
2507
/******************************************************/
2508
/* specific #pragma once unit state */
2509
/******************************************************/
2511
// pointcut definitions
2516
// initialize new state flag
2518
public: template<class JoinPoint> void __a0_after (JoinPoint *tjp) {
2519
JoinPoint *&thisJoinPoint = tjp;
2521
typedef typename JoinPoint::That __JP_That;
2522
typedef typename JoinPoint::Target __JP_Target;
2523
typedef typename JoinPoint::Result __JP_Result;
2525
thisJoinPoint->that ()->_once = false;
2531
// this aspect should never be instantiated directly
2532
PragmaOnceUnitState () {}
2535
template <class JoinPoint>
2536
inline void invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after (JoinPoint *tjp) {
2537
::PragmaOnceUnitState::aspectof()->__a0_after (tjp);
2543
#endif /* __PragmaOnceUnitState__ */
2544
#ifndef __ac_guard__tmp_AOP_LIN_AOP_Puma_gen45release_step1_inc_Puma_UnitState_h__
2545
#define __ac_guard__tmp_AOP_LIN_AOP_Puma_gen45release_step1_inc_Puma_UnitState_h__
2546
// This file is part of PUMA.
2547
// Copyright (C) 1999-2003 The PUMA developer team.
2549
// This program is free software; you can redistribute it and/or
2550
// modify it under the terms of the GNU General Public License as
2551
// published by the Free Software Foundation; either version 2 of
2552
// the License, or (at your option) any later version.
2554
// This program is distributed in the hope that it will be useful,
2555
// but WITHOUT ANY WARRANTY; without even the implied warranty of
2556
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2557
// GNU General Public License for more details.
2559
// You should have received a copy of the GNU General Public
2560
// License along with this program; if not, write to the Free
2561
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
2562
// MA 02111-1307 USA
2564
#ifndef __UnitState__
2565
#define __UnitState__
2567
// The state of a unit:
2568
// 1. modified by manipulations and not updated at the class registry
2569
// 2. modified by manipulations and updated at the class registry
2570
// 3. unmodified by manipulations and not updated at the class registry
2571
// 4. unmodified by manipulations and updated at the class registry
2578
class WinImportHandler;
2583
class ExtACBuilderCoupling;
2584
class ExtACSyntaxCoupling;
2586
class ExtACKeywords;
2589
class WinMemberExplSpec;
2590
class WinTypeKeywords;
2591
class PragmaOnceUnitState;
2593
class CCExprResolve;
2596
class UnitState { friend class ::WinIfExists;
2597
friend class ::WinImportHandler;
2598
friend class ::WinMacros;
2599
friend class ::CMatchSyntax;
2600
friend class ::ExtGnu;
2601
friend class ::ExtAC;
2602
friend class ::ExtACBuilderCoupling;
2603
friend class ::ExtACSyntaxCoupling;
2604
friend class ::ExtACTree;
2605
friend class ::ExtACKeywords;
2606
friend class ::WinAsm;
2607
friend class ::WinDeclSpecs;
2608
friend class ::WinMemberExplSpec;
2609
friend class ::WinTypeKeywords;
2610
friend class ::PragmaOnceUnitState;
2611
friend class ::PragmaOnce;
2612
friend class ::CCExprResolve;
2613
friend class ::CExprResolve;
2620
public: inline void __exec_old_C1();
2623
bool isModified () const;
2624
bool isUpdated () const;
2625
long lastModified () const;
2627
// Is modified and has to be updated.
2629
void lastModified (long);
2636
bool onlyOnce ( ) const { return _once ; }
2637
void onlyOnce ( bool v ) { _once = v ; }
2638
struct TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 {
2639
typedef void Result;
2640
typedef ::Puma::UnitState That;
2641
typedef ::Puma::UnitState Target;
2642
static const int JPID = 5;
2643
static const AC::JPType JPTYPE = (AC::JPType)16;
2646
typedef void ReferredType;
2649
template <int I, int DUMMY = 0> struct Arg {
2651
typedef void ReferredType;
2653
template <int DUMMY> struct Arg<0, DUMMY> {
2654
typedef const ::Puma::UnitState & Type;
2655
typedef const ::Puma::UnitState ReferredType;
2660
inline That *that() {return (That*)_that;}
2666
inline UnitState (const Puma::UnitState & arg0) : _modified (arg0._modified), _updated (arg0._updated), _lastModified (arg0._lastModified), _once (arg0._once) {
2667
TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 tjp;
2668
tjp._that = (TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0::That*)this;
2669
AC::invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after<TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0> (&tjp);
2676
struct TJP__ZN4Puma9UnitStateC1Ev_0 {
2677
typedef void Result;
2678
typedef ::Puma::UnitState That;
2679
typedef ::Puma::UnitState Target;
2680
static const int JPID = 5;
2681
static const AC::JPType JPTYPE = (AC::JPType)16;
2684
typedef void ReferredType;
2687
template <int I, int DUMMY = 0> struct Arg {
2689
typedef void ReferredType;
2694
inline That *that() {return (That*)_that;}
2698
inline UnitState::UnitState ()
2700
TJP__ZN4Puma9UnitStateC1Ev_0 tjp;
2701
tjp._that = (TJP__ZN4Puma9UnitStateC1Ev_0::That*)this;
2702
this->__exec_old_C1();
2703
AC::invoke_PragmaOnceUnitState_PragmaOnceUnitState_a0_after<TJP__ZN4Puma9UnitStateC1Ev_0> (&tjp);
2706
inline void Puma::UnitState::__exec_old_C1(){ _modified = false; _updated = false; _lastModified = 0; }
2708
inline bool UnitState::isModified () const
2709
{ return _modified; }
2710
inline bool UnitState::isUpdated () const
2711
{ return _updated; }
2712
inline long UnitState::lastModified () const
2713
{ return _lastModified; }
2715
inline void UnitState::modified ()
2716
{ _modified = true; _updated = false; _lastModified = 0; }
2717
inline void UnitState::unmodified ()
2718
{ _modified = false; }
2719
inline void UnitState::updated ()
2720
{ _updated = true; }
2721
inline void UnitState::lastModified (long when)
2722
{ _lastModified = when; }
2727
#endif /* __UnitState__ */
2728
#endif // __ac_guard__tmp_AOP_LIN_AOP_Puma_gen45release_step1_inc_Puma_UnitState_h__
2734
class WinImportHandler;
2739
class ExtACBuilderCoupling;
2740
class ExtACSyntaxCoupling;
2742
class ExtACKeywords;
2745
class WinMemberExplSpec;
2746
class WinTypeKeywords;
2747
class PragmaOnceUnitState;
2749
class CCExprResolve;
2752
class Unit : public List, public Printable { friend class ::WinIfExists;
2753
friend class ::WinImportHandler;
2754
friend class ::WinMacros;
2755
friend class ::CMatchSyntax;
2756
friend class ::ExtGnu;
2757
friend class ::ExtAC;
2758
friend class ::ExtACBuilderCoupling;
2759
friend class ::ExtACSyntaxCoupling;
2760
friend class ::ExtACTree;
2761
friend class ::ExtACKeywords;
2762
friend class ::WinAsm;
2763
friend class ::WinDeclSpecs;
2764
friend class ::WinMemberExplSpec;
2765
friend class ::WinTypeKeywords;
2766
friend class ::PragmaOnceUnitState;
2767
friend class ::PragmaOnce;
2768
friend class ::CCExprResolve;
2769
friend class ::CExprResolve;
2775
Unit () : List (), _name ((char*)0) {}
2776
Unit (const List &list) : List (list), _name ((char*)0) {}
2778
virtual void name (const char *);
2779
char *name () const { return _name; }
2780
virtual void print (ostream &os) const;
2781
virtual bool isFile () const { return false; }
2782
virtual bool isMacroExp () const { return false; }
2783
UnitState &state () { return _state; }
2789
#endif /* __unit_h__ */
2585
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/PreExpr.h"
2790
2586
// This file is part of PUMA.
2791
2587
// Copyright (C) 1999-2003 The PUMA developer team.
4443
4332
#ifndef __SimpleParser_h__
4444
4333
#define __SimpleParser_h__
4336
#line 23 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
4446
4337
#include <vector>
4447
4338
using namespace std;
4449
4340
namespace Puma {
4344
* Simple string parser.
4345
* \class SimpleParser SimpleParser.h Puma/common/SimpleParser.h
4348
#line 4349 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
4452
4349
} // closed Puma
4350
class CCExprResolve;
4453
4352
class WinIfExists;
4454
4353
class WinImportHandler;
4455
4354
class WinMacros;
4357
class WinMemberExplSpec;
4358
class WinTypeKeywords;
4459
4361
class ExtACBuilderCoupling;
4460
4362
class ExtACSyntaxCoupling;
4461
4363
class ExtACTree;
4462
4364
class ExtACKeywords;
4465
class WinMemberExplSpec;
4466
class WinTypeKeywords;
4467
4366
class PragmaOnceUnitState;
4468
4367
class PragmaOnce;
4469
class CCExprResolve;
4471
4369
namespace Puma {
4472
class SimpleParser { friend class ::WinIfExists;
4371
#line 33 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
4372
class SimpleParser {
4373
#line 4374 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
4374
friend class ::CCExprResolve;
4375
friend class ::CExprResolve;
4376
friend class ::WinIfExists;
4473
4377
friend class ::WinImportHandler;
4474
4378
friend class ::WinMacros;
4475
friend class ::CMatchSyntax;
4476
friend class ::ExtGnu;
4379
friend class ::WinAsm;
4380
friend class ::WinDeclSpecs;
4381
friend class ::WinMemberExplSpec;
4382
friend class ::WinTypeKeywords;
4383
friend class ::WinFriend;
4477
4384
friend class ::ExtAC;
4478
4385
friend class ::ExtACBuilderCoupling;
4479
4386
friend class ::ExtACSyntaxCoupling;
4480
4387
friend class ::ExtACTree;
4481
4388
friend class ::ExtACKeywords;
4482
friend class ::WinAsm;
4483
friend class ::WinDeclSpecs;
4484
friend class ::WinMemberExplSpec;
4485
friend class ::WinTypeKeywords;
4389
friend class ::ExtGnu;
4486
4390
friend class ::PragmaOnceUnitState;
4487
4391
friend class ::PragmaOnce;
4488
friend class ::CCExprResolve;
4489
friend class ::CExprResolve;
4392
friend class ::CMatchSyntax;
4394
#line 33 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
4495
static int tokenize (const string &, vector<string> &,
4496
const string &delimiters = " ");
4497
static string strip (const string &);
4398
* Remove enclosing double-quotes from a string.
4399
* \param str The string to strip.
4400
* \return String without the enclosing double-quotes.
4402
static string strip (const string& str);
4404
* Splits a given string into tokens recognized by the given delimiters.
4405
* \param str The string to split.
4406
* \param tokens A vector for the tokens.
4407
* \param delimiters A string with the delimiters. Default is a space or tab.
4408
* \return Number of recognized tokens.
4410
static int tokenize (const string& str, vector<string>& tokens, const string& delimiters = " ");
4414
* Get the position of the next token.
4415
* \param line The string to tokenize.
4416
* \param delimiters A string with the token delimiters.
4417
* \param pos The current position in the string.
4418
* \param lastPos The last position in the string.
4419
* \return The position of the next token.
4421
static string::size_type next (const string& line, const string& delimiters, string::size_type pos, string::size_type& lastPos);
4423
* Get the begin of the next token.
4424
* \param line The string to tokenize.
4425
* \param delimiters A string with the token delimiters.
4426
* \param pos The current position in the string.
4427
* \return The begin of the next token.
4429
static string::size_type findBeginOfNextToken (const string& line, const string& delimiters, string::size_type pos);
4431
* Get the end of the next token.
4432
* \param line The string to tokenize.
4433
* \param delimiters A string with the token delimiters.
4434
* \param lastPos The last position in the string, i.e. the begin of the next token.
4435
* \return The end of the next token.
4437
static string::size_type findEndOfNextToken (const string& line, const string& delimiters, string::size_type lastPos);
4501
4441
} // namespace Puma
4503
4443
#endif /* __SimpleParser_h__ */
4445
#line 25 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/OptsParser.h"
4504
4446
using namespace std;
4506
4448
namespace Puma {
4451
/** \brief The %Options %Parser searches command line parameters for options and
4452
* handles their option arguments, if applicable.
4455
#line 4456 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
4509
4456
} // closed Puma
4457
class CCExprResolve;
4510
4459
class WinIfExists;
4511
4460
class WinImportHandler;
4512
4461
class WinMacros;
4464
class WinMemberExplSpec;
4465
class WinTypeKeywords;
4516
4468
class ExtACBuilderCoupling;
4517
4469
class ExtACSyntaxCoupling;
4518
4470
class ExtACTree;
4519
4471
class ExtACKeywords;
4522
class WinMemberExplSpec;
4523
class WinTypeKeywords;
4524
4473
class PragmaOnceUnitState;
4525
4474
class PragmaOnce;
4526
class CCExprResolve;
4528
4476
namespace Puma {
4529
class OptsParser : public SimpleParser { friend class ::WinIfExists;
4478
#line 33 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/OptsParser.h"
4479
class OptsParser : public SimpleParser {
4480
#line 4481 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
4481
friend class ::CCExprResolve;
4482
friend class ::CExprResolve;
4483
friend class ::WinIfExists;
4530
4484
friend class ::WinImportHandler;
4531
4485
friend class ::WinMacros;
4532
friend class ::CMatchSyntax;
4533
friend class ::ExtGnu;
4486
friend class ::WinAsm;
4487
friend class ::WinDeclSpecs;
4488
friend class ::WinMemberExplSpec;
4489
friend class ::WinTypeKeywords;
4490
friend class ::WinFriend;
4534
4491
friend class ::ExtAC;
4535
4492
friend class ::ExtACBuilderCoupling;
4536
4493
friend class ::ExtACSyntaxCoupling;
4537
4494
friend class ::ExtACTree;
4538
4495
friend class ::ExtACKeywords;
4539
friend class ::WinAsm;
4540
friend class ::WinDeclSpecs;
4541
friend class ::WinMemberExplSpec;
4542
friend class ::WinTypeKeywords;
4496
friend class ::ExtGnu;
4543
4497
friend class ::PragmaOnceUnitState;
4544
4498
friend class ::PragmaOnce;
4545
friend class ::CCExprResolve;
4546
friend class ::CExprResolve;
4499
friend class ::CMatchSyntax;
4501
#line 33 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/OptsParser.h"
4505
/** \brief Vector holding the commandline parameters.
4507
* This vector is filled in the constructor
4548
4509
vector<string> m_argv;
4511
/** \brief Position of current parameter analyzed by the
4549
4514
unsigned int m_curarg;
4516
/** \brief The increment added to m_curarg used to get to the next
4517
* entry of m_argv which shall be analysed.
4550
4519
unsigned int m_tonext;
4521
/** \brief %Option number of currently processed element of m_argv
4525
/** \brief Name of current option
4529
/** \brief Value of current option argument
4558
enum {NOARG =-4, ERR = -3, NOOPTION = -2, UNKNOWN = -1, FINISH = 0 };
4560
enum ArgType { AT_NONE = 0, AT_MANDATORY = 1, AT_OPTIONAL = 2 };
4562
struct Option { friend class ::WinIfExists;
4537
* Return codes for OptsParser::getOption() and OptsParser::getArgument()
4540
NOARG =-4, /**< %Option has no argument */
4541
ERR = -3, /**< Error when parsing option */
4542
NOOPTION = -2, /**< Command line parameter is not an option */
4543
UNKNOWN = -1, /**< Parameter is an unknown option */
4544
FINISH = 0 /**< All options are handled */
4548
* Type of argument associated to an option
4551
AT_NONE = 0, /**< %Option receives no argument */
4552
AT_MANDATORY = 1, /**< %Option requires an argument */
4553
AT_OPTIONAL = 2 /**< %Option has optionally an argument */
4557
* Type for specifying an array of options recognized by the %Option %Parser.
4558
* An array of this type has to be passed to the constructor OptsParser::OptsParser()
4561
#line 4562 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
4562
friend class ::CCExprResolve;
4563
friend class ::CExprResolve;
4564
friend class ::WinIfExists;
4563
4565
friend class ::WinImportHandler;
4564
4566
friend class ::WinMacros;
4565
friend class ::CMatchSyntax;
4566
friend class ::ExtGnu;
4567
friend class ::WinAsm;
4568
friend class ::WinDeclSpecs;
4569
friend class ::WinMemberExplSpec;
4570
friend class ::WinTypeKeywords;
4571
friend class ::WinFriend;
4567
4572
friend class ::ExtAC;
4568
4573
friend class ::ExtACBuilderCoupling;
4569
4574
friend class ::ExtACSyntaxCoupling;
4570
4575
friend class ::ExtACTree;
4571
4576
friend class ::ExtACKeywords;
4572
friend class ::WinAsm;
4573
friend class ::WinDeclSpecs;
4574
friend class ::WinMemberExplSpec;
4575
friend class ::WinTypeKeywords;
4577
friend class ::ExtGnu;
4576
4578
friend class ::PragmaOnceUnitState;
4577
4579
friend class ::PragmaOnce;
4578
friend class ::CCExprResolve;
4579
friend class ::CExprResolve;
4580
friend class ::CMatchSyntax;
4582
#line 91 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/OptsParser.h"
4584
int number; /**< Number associated with this option */
4585
const char *shortName; /**< Short name of this option. Should ideally not contain more than one character */
4586
const char *longName; /**< Long namen of this option */
4587
const char *desc; /**< Description of this option **/
4588
ArgType argType; /**< Type of argument for this option */
4592
/** Pointer to array of available options. This value is set to the value of the
4593
* parameter passed to the constructor OptsParser::OptsParser()
4589
4595
const Option *m_opts;
4592
OptsParser (int, char **, const Option *);
4593
OptsParser (const string &, const Option *);
4598
/** \brief Constructor of OptsParser
4600
* \param argc Number of parameters to be analyzed
4601
* \param argv Parameters to be analyzed
4602
* \param opts Pointer to array of options which shall be
4603
* recognized by the options parser
4606
OptsParser (int argc, char **argv, const Option *opts);
4608
/** \brief Constructor of OptsParser
4610
* \param line Reference to string with parameters to analyse
4611
* The paramaters are extracted from the string by splitting it up
4617
* \param opts Pointer to array of options which shall be
4618
* recognized by the options parser
4620
OptsParser (const string &line, const Option *);
4595
int getCurrentArgNum () const;
4596
int getNextArgNum () const;
4623
/** Get next parameter without modification.
4624
* No option parsing is done
4626
* \return OptsParser::NOOPTION or OptsParser::FINISH
4628
int getRawOption ();
4630
/** \brief Get next option
4632
* This function processes the next parameter passed to the constructor
4633
* OptsParser::OptsParser().
4634
* That is, search for options and eventually process
4635
* option and option arguement.
4637
* \return Number of option recognized by the options parser or
4638
* OptsParser::NOARG, OptsParser::ERR, OptsParser::NOOPTION,
4639
* OptsParser::UNKNOWN or OptsParser::FINISH.
4597
4642
int getOption ();
4644
/** \brief Get result of last processed parameter
4646
* The number returned by this function is identical to the number
4647
* returned by the last call of OptsParser::getOption
4649
* \return Number of option recognized by the options parser or
4650
* OptsParser::NOARG, OptsParser::ERR, OptsParser::NOOPTION,
4651
* OptsParser::UNKNOWN or OptsParser::FINISH.
4598
4654
int getResult () const;
4656
/** \brief Get option argument of last processed parameter
4658
* This function returns the argument of the option processed during
4659
* OptsParser::getOption. If the option does not provide any argument
4660
* the string will be empty.
4662
* If OptsParser::getOption or respectively OptsParser::getResult returns with
4663
* OptsParser::NOOPTION this function (OptsParser::getArgument) returns the last processed parameter,
4664
* which is no option, of course.
4666
* \return Argument of last processed parameter
4600
4668
const string &getArgument () const;
4670
/** \brief Get option name of last processed parameter
4672
* If the last processed parameter did not contain an option the string
4673
* returned by this function is empty.
4675
* \return Name of last processed parameter
4601
4678
const string &getOptionName () const;
4680
/** \brief Get position of current argument
4682
* \return Position of currently processed parameter previously passed to OptsParser::OptsParser()
4685
int getCurrentArgNum () const;
4687
/** \brief Get position of next argument
4689
* \return Position of next parameter which will be processed by the %Options %Parser
4692
int getNextArgNum () const;
4603
bool revokeArgument();
4606
int getShortOption (const string &);
4607
int getLongOption (const string &);
4608
bool processOption (const string &, unsigned int,ArgType argtype);
4695
/** Search for an option in m_argv at position m_curarg
4697
* \param arg Currently processed parameter
4699
const Option* findOption(const string &arg, bool isLong);
4701
/** Process an option found by OptsParser::findOption().
4703
bool processOption (const string &arg, const Option* curOpt, bool isLong);
4612
4707
} // namespace Puma
4614
4709
#endif /* __OptsParser_h__ */
4711
#line 30 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Config.h"
4615
4712
using namespace std;
4617
4714
namespace Puma {
4718
#line 4719 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
4620
4719
} // closed Puma
4720
class CCExprResolve;
4621
4722
class WinIfExists;
4622
4723
class WinImportHandler;
4623
4724
class WinMacros;
4727
class WinMemberExplSpec;
4728
class WinTypeKeywords;
4627
4731
class ExtACBuilderCoupling;
4628
4732
class ExtACSyntaxCoupling;
4629
4733
class ExtACTree;
4630
4734
class ExtACKeywords;
4633
class WinMemberExplSpec;
4634
class WinTypeKeywords;
4635
4736
class PragmaOnceUnitState;
4636
4737
class PragmaOnce;
4637
class CCExprResolve;
4639
4739
namespace Puma {
4640
class Config { friend class ::WinIfExists;
4741
#line 35 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Config.h"
4743
#line 4744 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
4744
friend class ::CCExprResolve;
4745
friend class ::CExprResolve;
4746
friend class ::WinIfExists;
4641
4747
friend class ::WinImportHandler;
4642
4748
friend class ::WinMacros;
4643
friend class ::CMatchSyntax;
4644
friend class ::ExtGnu;
4749
friend class ::WinAsm;
4750
friend class ::WinDeclSpecs;
4751
friend class ::WinMemberExplSpec;
4752
friend class ::WinTypeKeywords;
4753
friend class ::WinFriend;
4645
4754
friend class ::ExtAC;
4646
4755
friend class ::ExtACBuilderCoupling;
4647
4756
friend class ::ExtACSyntaxCoupling;
4648
4757
friend class ::ExtACTree;
4649
4758
friend class ::ExtACKeywords;
4650
friend class ::WinAsm;
4651
friend class ::WinDeclSpecs;
4652
friend class ::WinMemberExplSpec;
4653
friend class ::WinTypeKeywords;
4759
friend class ::ExtGnu;
4654
4760
friend class ::PragmaOnceUnitState;
4655
4761
friend class ::PragmaOnce;
4656
friend class ::CCExprResolve;
4657
friend class ::CExprResolve;
4762
friend class ::CMatchSyntax;
4764
#line 35 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/Config.h"
4660
4767
ErrorStream &_err;
6311
6889
class PragmaOnce;
6313
6891
template <class JoinPoint>
6314
inline void invoke_PragmaOnce_PragmaOnce_a0_after (JoinPoint *tjp);
6315
template <class JoinPoint>
6316
inline void invoke_PragmaOnce_PragmaOnce_a1_after (JoinPoint *tjp);
6317
template <class JoinPoint, class Binding>
6318
inline void invoke_PragmaOnce_PragmaOnce_a2_around (JoinPoint *tjp);
6319
template <class JoinPoint>
6320
inline void invoke_PragmaOnce_PragmaOnce_a3_after (JoinPoint *tjp);
6324
#ifndef __ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnce_ah__
6325
#define __ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnce_ah__
6328
#ifndef __ac_fwd_WinMacros__
6329
#define __ac_fwd_WinMacros__
6332
template <class JoinPoint, class Binding>
6333
inline void invoke_WinMacros_WinMacros_a0_before (JoinPoint *tjp);
6337
#ifndef __ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMacros_ah__
6338
#define __ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMacros_ah__
6340
// This file is part of PUMA.
6341
// Copyright (C) 1999-2003 The PUMA developer team.
6343
// This program is free software; you can redistribute it and/or
6344
// modify it under the terms of the GNU General Public License as
6345
// published by the Free Software Foundation; either version 2 of
6346
// the License, or (at your option) any later version.
6348
// This program is distributed in the hope that it will be useful,
6349
// but WITHOUT ANY WARRANTY; without even the implied warranty of
6350
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6351
// GNU General Public License for more details.
6353
// You should have received a copy of the GNU General Public
6354
// License along with this program; if not, write to the Free
6355
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
6356
// MA 02111-1307 USA
6358
#ifndef __WinImportHandler__
6359
#define __WinImportHandler__
6361
/********************************************************/
6362
/* Win #import directive support */
6363
/********************************************************/
6365
using namespace Puma;
6373
class ExtACBuilderCoupling;
6374
class ExtACSyntaxCoupling;
6376
class ExtACKeywords;
6379
class WinMemberExplSpec;
6380
class WinTypeKeywords;
6381
class PragmaOnceUnitState;
6383
class CCExprResolve;
6385
class WinImportHandler {
6387
static WinImportHandler *aspectof () {
6388
static WinImportHandler __instance;
6391
static WinImportHandler *aspectOf () {
6395
friend class ::WinIfExists;
6396
friend class ::WinMacros;
6397
friend class ::CMatchSyntax;
6398
friend class ::ExtGnu;
6399
friend class ::ExtAC;
6400
friend class ::ExtACBuilderCoupling;
6401
friend class ::ExtACSyntaxCoupling;
6402
friend class ::ExtACTree;
6403
friend class ::ExtACKeywords;
6404
friend class ::WinAsm;
6405
friend class ::WinDeclSpecs;
6406
friend class ::WinMemberExplSpec;
6407
friend class ::WinTypeKeywords;
6408
friend class ::PragmaOnceUnitState;
6409
friend class ::PragmaOnce;
6410
friend class ::CCExprResolve;
6411
friend class ::CExprResolve;
6413
/********************************************************/
6414
/* Win #import directive */
6415
/********************************************************/
6420
// add access method for _importHandler data member
6423
// handle --import-handler option
6425
public: template<class JoinPoint> void __a0_before (JoinPoint *tjp, const Config &config, bool process_includes) {
6426
JoinPoint *&thisJoinPoint = tjp;
6428
typedef typename JoinPoint::That __JP_That;
6429
typedef typename JoinPoint::Target __JP_Target;
6430
typedef typename JoinPoint::Result __JP_Result;
6432
const ConfOption *opt;
6435
if (process_includes) {
6436
opt = config.Option ("--import-handler");
6437
if (opt && opt->Arguments ()) {
6438
// delete old import handler
6439
if (thisJoinPoint->that ()->_importHandler)
6440
delete[] thisJoinPoint->that ()->_importHandler;
6442
// get new import handler
6443
tmp = new char[strlen (opt->Argument (0))+1];
6444
strcpy (tmp, opt->Argument (0));
6445
thisJoinPoint->that ()->_importHandler = tmp;
6453
WinImportHandler () {}
6456
template <class JoinPoint, class Binding>
6457
inline void invoke_WinImportHandler_WinImportHandler_a0_before (JoinPoint *tjp) {
6458
typedef typename Binding::template Arg<0> Arg0;
6459
typedef typename Binding::template Arg<1> Arg1;
6460
::WinImportHandler::aspectof()->__a0_before (tjp, (const Puma::Config &)Arg0::val (tjp), (bool)Arg1::val (tjp));
6466
#endif /* __WinImportHandler__ */
6467
// This file is part of PUMA.
6468
// Copyright (C) 1999-2003 The PUMA developer team.
6470
// This program is free software; you can redistribute it and/or
6471
// modify it under the terms of the GNU General Public License as
6472
// published by the Free Software Foundation; either version 2 of
6473
// the License, or (at your option) any later version.
6475
// This program is distributed in the hope that it will be useful,
6476
// but WITHOUT ANY WARRANTY; without even the implied warranty of
6477
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
6478
// GNU General Public License for more details.
6480
// You should have received a copy of the GNU General Public
6481
// License along with this program; if not, write to the Free
6482
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
6483
// MA 02111-1307 USA
6485
#ifndef __PragmaOnce__
6486
#define __PragmaOnce__
6488
/********************************************************/
6489
/* Win #pragma once support aspect */
6490
/********************************************************/
6495
using namespace Puma;
6499
class WinImportHandler;
6504
class ExtACBuilderCoupling;
6505
class ExtACSyntaxCoupling;
6507
class ExtACKeywords;
6510
class WinMemberExplSpec;
6511
class WinTypeKeywords;
6512
class PragmaOnceUnitState;
6513
class CCExprResolve;
6517
static PragmaOnce *aspectof () {
6518
static PragmaOnce __instance;
6521
static PragmaOnce *aspectOf () {
6525
friend class ::WinIfExists;
6526
friend class ::WinImportHandler;
6527
friend class ::WinMacros;
6528
friend class ::CMatchSyntax;
6529
friend class ::ExtGnu;
6530
friend class ::ExtAC;
6531
friend class ::ExtACBuilderCoupling;
6532
friend class ::ExtACSyntaxCoupling;
6533
friend class ::ExtACTree;
6534
friend class ::ExtACKeywords;
6535
friend class ::WinAsm;
6536
friend class ::WinDeclSpecs;
6537
friend class ::WinMemberExplSpec;
6538
friend class ::WinTypeKeywords;
6539
friend class ::PragmaOnceUnitState;
6540
friend class ::CCExprResolve;
6541
friend class ::CExprResolve;
6543
/******************************************************/
6544
/* detect #pragma once in the token stream of cpp */
6545
/******************************************************/
6547
// pointcut definitions
6551
// extend the preprocessor parser by the filter state
6554
// initialize the filter state
6556
public: template<class JoinPoint> void __a0_after (JoinPoint *tjp) {
6557
typedef typename JoinPoint::That __JP_That;
6558
typedef typename JoinPoint::Target __JP_Target;
6559
typedef typename JoinPoint::Result __JP_Result;
6561
// TODO: it would be better to have construction advice -> but in lem file
6562
tjp->that ()->_pragma_token = 0;
6567
// filter #pragma once
6569
public: template<class JoinPoint> void __a1_after (JoinPoint *tjp) {
6570
typedef typename JoinPoint::That __JP_That;
6571
typedef typename JoinPoint::Target __JP_Target;
6572
typedef typename JoinPoint::Result __JP_Result;
6574
Token *tok = *tjp->result ();
6575
__JP_That &that = *tjp->that ();
6576
if (!tok || !tok->is_directive ()) {
6577
that._pragma_token = 0;
6580
if (strcmp ("#pragma", tok->text ()) == 0) {
6581
that._pragma_token = tok;
6583
else if (that._pragma_token && strcmp ("once", tok->text ()) == 0) {
6584
Unit *unit = (Unit*)tok->belonging_to ();
6586
unit->state ().onlyOnce (true);
6592
/********************************************************/
6593
/* block the handling of pragma once files */
6594
/********************************************************/
6596
// don't let file includer include files twice
6597
// to be precise: the file is included again, but the inclusion produces
6600
public: template<class JoinPoint> void __a2_around (JoinPoint *tjp, Unit *unit) {
6601
typedef typename JoinPoint::That __JP_That;
6602
typedef typename JoinPoint::Target __JP_Target;
6603
typedef typename JoinPoint::Result __JP_Result;
6605
if (! unit || ! unit->state ().onlyOnce ())
6611
// includeFile shall return 0 if the file was not included
6613
public: template<class JoinPoint> void __a3_after (JoinPoint *tjp) {
6614
typedef typename JoinPoint::That __JP_That;
6615
typedef typename JoinPoint::Target __JP_Target;
6616
typedef typename JoinPoint::Result __JP_Result;
6618
Unit *&unit = *tjp->result ();
6619
if (unit && unit->state ().onlyOnce ())
6626
// this aspect should never be instantiated directly
6630
template <class JoinPoint>
6631
inline void invoke_PragmaOnce_PragmaOnce_a0_after (JoinPoint *tjp) {
6632
::PragmaOnce::aspectof()->__a0_after (tjp);
6634
template <class JoinPoint>
6635
inline void invoke_PragmaOnce_PragmaOnce_a1_after (JoinPoint *tjp) {
6636
::PragmaOnce::aspectof()->__a1_after (tjp);
6638
template <class JoinPoint, class Binding>
6639
inline void invoke_PragmaOnce_PragmaOnce_a2_around (JoinPoint *tjp) {
6640
typedef typename Binding::template Arg<0> Arg0;
6641
::PragmaOnce::aspectof()->__a2_around (tjp, (Puma::Unit *)Arg0::val (tjp));
6643
template <class JoinPoint>
6644
inline void invoke_PragmaOnce_PragmaOnce_a3_after (JoinPoint *tjp) {
6645
::PragmaOnce::aspectof()->__a3_after (tjp);
6651
#endif /* __PragmaOnce__ */
6652
#ifndef __ac_guard__tmp_AOP_LIN_AOP_Puma_gen45release_step1_inc_Puma_PreprocessorParser_h__
6653
#define __ac_guard__tmp_AOP_LIN_AOP_Puma_gen45release_step1_inc_Puma_PreprocessorParser_h__
6892
__attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a0_after (JoinPoint *tjp);
6893
template <class JoinPoint>
6894
__attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a1_after (JoinPoint *tjp);
6895
template <class JoinPoint>
6896
__attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a2_around (JoinPoint *tjp);
6897
template <class JoinPoint>
6898
__attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a3_after (JoinPoint *tjp);
6902
#ifndef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnce_ah__
6903
#define __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnce_ah__
6906
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
6654
6907
// This file is part of PUMA.
6655
6908
// Copyright (C) 1999-2003 The PUMA developer team.
7352
7765
class PreFileIncluder;
7353
7766
class PrePredicateManager;
7357
class WinImportHandler;
7362
class ExtACBuilderCoupling;
7363
class ExtACSyntaxCoupling;
7365
class ExtACKeywords;
7368
class WinMemberExplSpec;
7369
class WinTypeKeywords;
7370
class PragmaOnceUnitState;
7372
class CCExprResolve;
7375
class PreprocessorParser : public PumaTokenSource { friend class ::WinIfExists;
7376
friend class ::WinImportHandler;
7377
friend class ::WinMacros;
7378
friend class ::CMatchSyntax;
7379
friend class ::ExtGnu;
7380
friend class ::ExtAC;
7381
friend class ::ExtACBuilderCoupling;
7382
friend class ::ExtACSyntaxCoupling;
7383
friend class ::ExtACTree;
7384
friend class ::ExtACKeywords;
7385
friend class ::WinAsm;
7386
friend class ::WinDeclSpecs;
7387
friend class ::WinMemberExplSpec;
7388
friend class ::WinTypeKeywords;
7389
friend class ::PragmaOnceUnitState;
7390
friend class ::PragmaOnce;
7391
friend class ::CCExprResolve;
7392
friend class ::CExprResolve;
7769
#line 7770 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
7771
class CCExprResolve;
7774
class WinImportHandler;
7778
class WinMemberExplSpec;
7779
class WinTypeKeywords;
7782
class ExtACBuilderCoupling;
7783
class ExtACSyntaxCoupling;
7785
class ExtACKeywords;
7787
class PragmaOnceUnitState;
7792
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7794
#line 7795 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
7797
#ifndef __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
7798
#define __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
7800
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7801
// This file is part of PUMA.
7802
// Copyright (C) 1999-2003 The PUMA developer team.
7804
// This program is free software; you can redistribute it and/or
7805
// modify it under the terms of the GNU General Public License as
7806
// published by the Free Software Foundation; either version 2 of
7807
// the License, or (at your option) any later version.
7809
// This program is distributed in the hope that it will be useful,
7810
// but WITHOUT ANY WARRANTY; without even the implied warranty of
7811
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
7812
// GNU General Public License for more details.
7814
// You should have received a copy of the GNU General Public
7815
// License along with this program; if not, write to the Free
7816
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
7817
// MA 02111-1307 USA
7819
#ifndef __WinIfExists__
7820
#define __WinIfExists__
7822
/********************************************************/
7823
/* Win __if_exists and __if_not_exists support aspect */
7824
/********************************************************/
7827
#line 30 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7830
#line 31 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7835
#line 7836 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
7836
class CCExprResolve;
7838
class WinImportHandler;
7842
class WinMemberExplSpec;
7843
class WinTypeKeywords;
7846
class ExtACBuilderCoupling;
7847
class ExtACSyntaxCoupling;
7849
class ExtACKeywords;
7851
class PragmaOnceUnitState;
7855
#line 34 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7857
#line 7858 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
7860
static WinIfExists *aspectof () {
7861
static WinIfExists __instance;
7864
static WinIfExists *aspectOf () {
7869
#line 34 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7871
#line 7872 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
7872
friend class ::CCExprResolve;
7873
friend class ::CExprResolve;
7874
friend class ::WinImportHandler;
7875
friend class ::WinMacros;
7876
friend class ::WinAsm;
7877
friend class ::WinDeclSpecs;
7878
friend class ::WinMemberExplSpec;
7879
friend class ::WinTypeKeywords;
7880
friend class ::WinFriend;
7881
friend class ::ExtAC;
7882
friend class ::ExtACBuilderCoupling;
7883
friend class ::ExtACSyntaxCoupling;
7884
friend class ::ExtACTree;
7885
friend class ::ExtACKeywords;
7886
friend class ::ExtGnu;
7887
friend class ::PragmaOnceUnitState;
7888
friend class ::PragmaOnce;
7889
friend class ::CMatchSyntax;
7891
#line 34 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7893
/********************************************************/
7894
/* Win __if_exists and __if_not_exists */
7895
/********************************************************/
7897
// pointcut definitions
7899
#line 40 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7902
// structural extensions
7904
#line 43 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7907
// preprocess __if_exists and __if_not_exists statements
7909
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7911
public: template<class JoinPoint> void __a0_around
7912
#line 46 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7914
#line 46 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7916
#line 46 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7918
#line 7919 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
7920
JoinPoint *&thisJoinPoint = tjp;
7922
#line 46 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7924
#line 7925 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
7926
typedef typename JoinPoint::That __JP_That;
7927
typedef typename JoinPoint::Target __JP_Target;
7928
typedef typename JoinPoint::Result __JP_Result;
7930
#line 46 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7935
#line 49 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7938
preparser = tjp->that ();
7939
tjp->proceed (); // get the next token
7940
token = *tjp->result ();
7942
type = token->type ();
7943
// __if_exists (...) { ... }
7944
if (type == Puma::TOK_IF_EXISTS) {
7945
preparser->skip_up_to (Puma::TOK_CLOSE_CURLY);
7946
*(Puma::Token**)thisJoinPoint->result () = preparser->next ();
7948
// __if_not_exists (...) { ... }
7949
} else if (type == Puma::TOK_IF_NOT_EXISTS) {
7950
preparser->skip_up_to (Puma::TOK_OPEN_CURLY);
7951
preparser->_depth.push (1);
7952
*(Puma::Token**)thisJoinPoint->result () = preparser->next ();
7955
// skip closing `}' of __if_not_exists
7956
if (preparser->_depth.length ()) {
7957
if (type == Puma::TOK_OPEN_CURLY)
7958
preparser->_depth.top () = preparser->_depth.top () + 1;
7959
else if (type == Puma::TOK_CLOSE_CURLY) {
7960
preparser->_depth.top () = preparser->_depth.top () - 1;
7961
if (preparser->_depth.top () == 0) {
7962
preparser->_depth.pop ();
7963
*(Puma::Token**)thisJoinPoint->result () = preparser->next ();
7970
#line 7971 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
7974
#line 82 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7980
#line 7981 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
7983
template <class JoinPoint>
7984
__attribute((always_inline)) inline void invoke_WinIfExists_WinIfExists_a0_around (JoinPoint *tjp) {
7985
::WinIfExists::aspectof()->__a0_around (tjp);
7989
#line 86 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7994
#line 95 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
7997
// skip __if_exists resp. __if_not_exists statement
7999
#line 135 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
8003
#endif /* __WinIfExists__ */
8005
#line 8 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
8009
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
8011
#line 8012 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8014
#ifndef __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnce_ah__
8015
#define __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_PragmaOnce_ah__
8017
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8018
// This file is part of PUMA.
8019
// Copyright (C) 1999-2003 The PUMA developer team.
8021
// This program is free software; you can redistribute it and/or
8022
// modify it under the terms of the GNU General Public License as
8023
// published by the Free Software Foundation; either version 2 of
8024
// the License, or (at your option) any later version.
8026
// This program is distributed in the hope that it will be useful,
8027
// but WITHOUT ANY WARRANTY; without even the implied warranty of
8028
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8029
// GNU General Public License for more details.
8031
// You should have received a copy of the GNU General Public
8032
// License along with this program; if not, write to the Free
8033
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
8034
// MA 02111-1307 USA
8036
#ifndef __PragmaOnce__
8037
#define __PragmaOnce__
8039
/********************************************************/
8040
/* Win #pragma once support aspect */
8041
/********************************************************/
8044
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8046
#line 8047 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8047
class CCExprResolve;
8050
class WinImportHandler;
8054
class WinMemberExplSpec;
8055
class WinTypeKeywords;
8058
class ExtACBuilderCoupling;
8059
class ExtACSyntaxCoupling;
8061
class ExtACKeywords;
8063
class PragmaOnceUnitState;
8066
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8068
#line 8069 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8071
static PragmaOnce *aspectof () {
8072
static PragmaOnce __instance;
8075
static PragmaOnce *aspectOf () {
8080
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8082
#line 8083 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8083
friend class ::CCExprResolve;
8084
friend class ::CExprResolve;
8085
friend class ::WinIfExists;
8086
friend class ::WinImportHandler;
8087
friend class ::WinMacros;
8088
friend class ::WinAsm;
8089
friend class ::WinDeclSpecs;
8090
friend class ::WinMemberExplSpec;
8091
friend class ::WinTypeKeywords;
8092
friend class ::WinFriend;
8093
friend class ::ExtAC;
8094
friend class ::ExtACBuilderCoupling;
8095
friend class ::ExtACSyntaxCoupling;
8096
friend class ::ExtACTree;
8097
friend class ::ExtACKeywords;
8098
friend class ::ExtGnu;
8099
friend class ::PragmaOnceUnitState;
8100
friend class ::CMatchSyntax;
8102
#line 32 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8104
/******************************************************/
8105
/* detect #pragma once in the token stream of cpp */
8106
/******************************************************/
8108
// pointcut definitions
8110
#line 38 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8113
#line 39 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8116
// extend the preprocessor parser by the filter state
8118
#line 42 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8121
// initialize the filter state
8123
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8125
public: template<class JoinPoint> void __a0_after
8126
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8128
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8130
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8132
#line 8133 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8134
typedef typename JoinPoint::That __JP_That;
8135
typedef typename JoinPoint::Target __JP_Target;
8136
typedef typename JoinPoint::Result __JP_Result;
8138
#line 45 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8140
// TODO: it would be better to have construction advice -> but in lem file
8141
tjp->that ()->_pragma_token = 0;
8143
#line 8144 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8147
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8150
// filter #pragma once
8152
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8154
public: template<class JoinPoint> void __a1_after
8155
#line 51 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8157
#line 51 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8159
#line 51 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8161
#line 8162 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8163
typedef typename JoinPoint::That __JP_That;
8164
typedef typename JoinPoint::Target __JP_Target;
8165
typedef typename JoinPoint::Result __JP_Result;
8167
#line 51 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8169
Puma::Token *tok = *tjp->result ();
8171
#line 53 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8172
&that = *tjp->that ();
8173
if (!tok || !tok->is_directive ()) {
8174
that._pragma_token = 0;
8177
if (strcmp ("#pragma", tok->text ()) == 0) {
8178
that._pragma_token = tok;
8180
else if (that._pragma_token && strcmp ("once", tok->text ()) == 0) {
8181
Puma::Unit *unit = (Puma::Unit*)tok->belonging_to ();
8183
unit->state ().onlyOnce (true);
8186
#line 8187 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8190
#line 66 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8193
/********************************************************/
8194
/* block the handling of pragma once files */
8195
/********************************************************/
8197
// don't let file includer include files twice
8198
// to be precise: the file is included again, but the inclusion produces
8201
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8203
public: template<class JoinPoint> void __a2_around
8204
#line 77 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8206
#line 77 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8207
(JoinPoint *tjp, Puma::Unit *unit)
8208
#line 77 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8210
#line 8211 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8212
typedef typename JoinPoint::That __JP_That;
8213
typedef typename JoinPoint::Target __JP_Target;
8214
typedef typename JoinPoint::Result __JP_Result;
8216
#line 77 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8218
if (! unit || ! unit->state ().onlyOnce ())
8221
#line 8222 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8225
#line 80 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8228
// includeFile shall return 0 if the file was not included
8230
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8232
public: template<class JoinPoint> void __a3_after
8233
#line 84 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8235
#line 84 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8237
#line 84 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8239
#line 8240 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8241
typedef typename JoinPoint::That __JP_That;
8242
typedef typename JoinPoint::Target __JP_Target;
8243
typedef typename JoinPoint::Result __JP_Result;
8245
#line 84 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8247
Puma::Unit *&unit = *tjp->result ();
8248
if (unit && unit->state ().onlyOnce ())
8250
tjp->that ()->_guarded = true;
8252
#line 8253 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8256
#line 89 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8260
// this aspect should never be instantiated directly
8263
#line 8264 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8266
template <class JoinPoint>
8267
__attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a0_after (JoinPoint *tjp) {
8268
::PragmaOnce::aspectof()->__a0_after (tjp);
8270
template <class JoinPoint>
8271
__attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a1_after (JoinPoint *tjp) {
8272
::PragmaOnce::aspectof()->__a1_after (tjp);
8274
template <class JoinPoint>
8275
__attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a2_around (JoinPoint *tjp) {
8276
typedef typename JoinPoint::Binding_PragmaOnce_PragmaOnce_a2_around::template Arg<0> Arg0;
8277
::PragmaOnce::aspectof()->__a2_around (tjp, (Puma::Unit *)Arg0::val (tjp));
8279
template <class JoinPoint>
8280
__attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a3_after (JoinPoint *tjp) {
8281
::PragmaOnce::aspectof()->__a3_after (tjp);
8285
#line 94 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/PragmaOnce.ah"
8289
#endif /* __PragmaOnce__ */
8291
#line 8 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
8295
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
8296
class PreprocessorParser : public PumaTokenSource {
8297
#line 8298 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
8298
friend class ::CCExprResolve;
8299
friend class ::CExprResolve;
8300
friend class ::WinIfExists;
8301
friend class ::WinImportHandler;
8302
friend class ::WinMacros;
8303
friend class ::WinAsm;
8304
friend class ::WinDeclSpecs;
8305
friend class ::WinMemberExplSpec;
8306
friend class ::WinTypeKeywords;
8307
friend class ::WinFriend;
8308
friend class ::ExtAC;
8309
friend class ::ExtACBuilderCoupling;
8310
friend class ::ExtACSyntaxCoupling;
8311
friend class ::ExtACTree;
8312
friend class ::ExtACKeywords;
8313
friend class ::ExtGnu;
8314
friend class ::PragmaOnceUnitState;
8315
friend class ::PragmaOnce;
8316
friend class ::CMatchSyntax;
8318
#line 48 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7395
8321
// The current mode for token preprocessing
12814
struct TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_0_0 {
12815
typedef ::Puma::Token * Result;
12816
typedef ::Puma::PreprocessorParser That;
12817
typedef ::Puma::PreprocessorParser Target;
12818
static const int JPID = 138;
12819
static const AC::JPType JPTYPE = (AC::JPType)4;
12821
typedef ::Puma::Token * Type;
12822
typedef ::Puma::Token * ReferredType;
12825
template <int I, int DUMMY = 0> struct Arg {
12827
typedef void ReferredType;
12833
inline Result *result() {return (Result*)_result;}
12834
inline That *that() {return (That*)_that;}
12839
struct TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_2_0 {
12840
typedef ::Puma::Token * Result;
12841
typedef ::Puma::PreprocessorParser That;
12842
typedef ::Puma::PreprocessorParser Target;
12843
static const int JPID = 139;
12844
static const AC::JPType JPTYPE = (AC::JPType)4;
12846
typedef ::Puma::Token * Type;
12847
typedef ::Puma::Token * ReferredType;
12850
template <int I, int DUMMY = 0> struct Arg {
12852
typedef void ReferredType;
12858
inline Result *result() {return (Result*)_result;}
12859
inline That *that() {return (That*)_that;}
12863
void Puma::PreprocessorParser ::skip_up_to (int end_token) {
12865
struct __call__ZN4Puma18PreprocessorParser10skip_up_toEi_2_0 {
12866
static inline ::Puma::Token * invoke (::Puma::PreprocessorParser *srcthis, ::Puma::PreprocessorParser *dstthis){
12867
AC::ResultBuffer< ::Puma::Token * > result;
12868
TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_2_0 tjp;
12869
tjp._result = &(TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_2_0::Result&)result;
12870
tjp._that = (TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_2_0::That*)srcthis;
12871
::new (&result) ::Puma::Token * (dstthis->parseToken());
12872
AC::invoke_PragmaOnce_PragmaOnce_a1_after<TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_2_0> (&tjp);
12873
return (::Puma::Token * &)result;
12878
struct __call__ZN4Puma18PreprocessorParser10skip_up_toEi_0_0 {
12879
static inline ::Puma::Token * invoke (::Puma::PreprocessorParser *srcthis, ::Puma::PreprocessorParser *dstthis){
12880
AC::ResultBuffer< ::Puma::Token * > result;
12881
TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_0_0 tjp;
12882
tjp._result = &(TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_0_0::Result&)result;
12883
tjp._that = (TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_0_0::That*)srcthis;
12884
::new (&result) ::Puma::Token * (dstthis->parseToken());
12885
AC::invoke_PragmaOnce_PragmaOnce_a1_after<TJP__ZN4Puma18PreprocessorParser10skip_up_toEi_0_0> (&tjp);
12886
return (::Puma::Token * &)result;
12890
unsigned parenthesis = 0, curlies = 0;
12894
// skip up to the first non-nested `{'
12895
while ((token = __call__ZN4Puma18PreprocessorParser10skip_up_toEi_0_0::invoke ((::Puma::PreprocessorParser*)this,(::Puma::PreprocessorParser*)this ))) {
12896
type = token->type ();
12897
if (type == TOK_OPEN_CURLY) {
12898
if (parenthesis == 0 && curlies == 0)
12901
} else if (type == TOK_CLOSE_CURLY)
12903
else if (type == TOK_OPEN_ROUND)
12905
else if (type == TOK_CLOSE_ROUND)
12909
// skip up to the first non-nested `}'
12910
if (end_token == TOK_CLOSE_CURLY) {
12911
parenthesis = curlies = 0;
12912
while ((token = __call__ZN4Puma18PreprocessorParser10skip_up_toEi_2_0::invoke ((::Puma::PreprocessorParser*)this,(::Puma::PreprocessorParser*)this ))) {
12913
type = token->type ();
12914
if (type == TOK_OPEN_CURLY)
12916
else if (type == TOK_CLOSE_CURLY) {
12917
if (parenthesis == 0 && curlies == 0)
12920
} else if (type == TOK_OPEN_ROUND)
12922
else if (type == TOK_CLOSE_ROUND)
14127
#line 14128 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
14129
#ifndef __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
14130
#define __ac_guard__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
14131
#include "WinIfExists.ah"
14134
#line 2972 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/PreParser.cc"
14136
#line 98 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinIfExists.ah"
14137
void Puma::PreprocessorParser :: skip_up_to ( int end_token ) {
14138
unsigned parenthesis = 0 , curlies = 0 ;
14139
Puma :: Token * token ;
14143
while ( ( token = parseToken ( ) ) ) {
14144
type = token -> type ( ) ;
14145
if ( type == Puma :: TOK_OPEN_CURLY ) {
14146
if ( parenthesis == 0 && curlies == 0 )
14149
} else if ( type == Puma :: TOK_CLOSE_CURLY )
14151
else if ( type == Puma :: TOK_OPEN_ROUND )
14153
else if ( type == Puma :: TOK_CLOSE_ROUND )
14158
if ( end_token == Puma :: TOK_CLOSE_CURLY ) {
14159
parenthesis = curlies = 0 ;
14160
while ( ( token = parseToken ( ) ) ) {
14161
type = token -> type ( ) ;
14162
if ( type == Puma :: TOK_OPEN_CURLY )
14164
else if ( type == Puma :: TOK_CLOSE_CURLY ) {
14165
if ( parenthesis == 0 && curlies == 0 )
14168
} else if ( type == Puma :: TOK_OPEN_ROUND )
14170
else if ( type == Puma :: TOK_CLOSE_ROUND )
14175
#line 14176 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
14177
#ifdef __ac_FIRST_FILE__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_src_PreParser_cc__
14178
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
14179
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
14180
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
14181
#include "CCExprResolveCC.ah"
14183
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
14184
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
14185
#include "ExtACTree.ah"
14187
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
14188
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
14189
#include "ExtGnu.ah"
14192
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
14193
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
14194
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
14195
#include "CCExprResolveH.ah"
14198
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
14199
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
14200
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
14201
#include "CExprResolveCC.ah"
14203
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
14204
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtACTree_ah__
14205
#include "ExtACTree.ah"
14207
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
14208
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_ExtGnu_ah__
14209
#include "ExtGnu.ah"
14212
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveH_ah__
14213
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveH_ah__
14214
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_CExprResolveH_ah__
14215
#include "CExprResolveH.ah"
14218
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
14219
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
14220
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinIfExists_ah__
14222
#line 47 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/PreParser.cc"
14225
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinImportHandler_ah__
14226
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinImportHandler_ah__
14227
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinImportHandler_ah__
14229
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14230
// This file is part of PUMA.
14231
// Copyright (C) 1999-2003 The PUMA developer team.
14233
// This program is free software; you can redistribute it and/or
14234
// modify it under the terms of the GNU General Public License as
14235
// published by the Free Software Foundation; either version 2 of
14236
// the License, or (at your option) any later version.
14238
// This program is distributed in the hope that it will be useful,
14239
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14240
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14241
// GNU General Public License for more details.
14243
// You should have received a copy of the GNU General Public
14244
// License along with this program; if not, write to the Free
14245
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
14246
// MA 02111-1307 USA
14248
#ifndef __WinImportHandler__
14249
#define __WinImportHandler__
14251
/********************************************************/
14252
/* Win #import directive support */
14253
/********************************************************/
14256
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14258
#line 14259 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
14259
class CCExprResolve;
14260
class CExprResolve;
14264
class WinDeclSpecs;
14265
class WinMemberExplSpec;
14266
class WinTypeKeywords;
14269
class ExtACBuilderCoupling;
14270
class ExtACSyntaxCoupling;
14272
class ExtACKeywords;
14274
class PragmaOnceUnitState;
14276
class CMatchSyntax;
14278
#line 30 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14279
class WinImportHandler {
14280
#line 14281 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
14283
static WinImportHandler *aspectof () {
14284
static WinImportHandler __instance;
14285
return &__instance;
14287
static WinImportHandler *aspectOf () {
14288
return aspectof ();
14292
#line 30 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14294
#line 14295 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
14295
friend class ::CCExprResolve;
14296
friend class ::CExprResolve;
14297
friend class ::WinIfExists;
14298
friend class ::WinMacros;
14299
friend class ::WinAsm;
14300
friend class ::WinDeclSpecs;
14301
friend class ::WinMemberExplSpec;
14302
friend class ::WinTypeKeywords;
14303
friend class ::WinFriend;
14304
friend class ::ExtAC;
14305
friend class ::ExtACBuilderCoupling;
14306
friend class ::ExtACSyntaxCoupling;
14307
friend class ::ExtACTree;
14308
friend class ::ExtACKeywords;
14309
friend class ::ExtGnu;
14310
friend class ::PragmaOnceUnitState;
14311
friend class ::PragmaOnce;
14312
friend class ::CMatchSyntax;
14314
#line 30 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14316
/********************************************************/
14317
/* Win #import directive */
14318
/********************************************************/
14322
#line 36 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14325
// handle --import-handler option
14327
#line 3 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14329
public: template<class JoinPoint> void __a0_before
14330
#line 41 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14332
#line 41 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14333
(JoinPoint *tjp, const Puma::Config &config, bool process_includes)
14334
#line 41 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14336
#line 14337 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
14338
JoinPoint *&thisJoinPoint = tjp;
14340
#line 41 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14342
#line 14343 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
14344
typedef typename JoinPoint::That __JP_That;
14345
typedef typename JoinPoint::Target __JP_Target;
14346
typedef typename JoinPoint::Result __JP_Result;
14348
#line 41 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14350
const Puma::ConfOption *opt;
14353
if (process_includes) {
14354
opt = config.Option ("--import-handler");
14355
if (opt && opt->Arguments ()) {
14356
// delete old import handler
14357
if (thisJoinPoint->that ()->_importHandler)
14358
delete[] thisJoinPoint->that ()->_importHandler;
14360
// get new import handler
14361
tmp = new char[strlen (opt->Argument (0))+1];
14362
strcpy (tmp, opt->Argument (0));
14363
thisJoinPoint->that ()->_importHandler = tmp;
12927
#ifdef __ac_FIRST_FILE__tmp_AOP_LIN_AOP_Puma_gen45release_step1_src_PreParser_cc__
12928
/*** begin of aspect includes ***/
12929
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinIfExists_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinIfExists_ah__)
12930
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinIfExists_ah__
12932
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinImportHandler_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinImportHandler_ah__)
12933
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinImportHandler_ah__
12935
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMacros_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMacros_ah__)
12936
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMacros_ah__
14367
#line 14368 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
14371
#line 58 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14375
WinImportHandler () {}
14377
#line 14378 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step2/src/PreParser.cc"
14380
template <class JoinPoint>
14381
__attribute((always_inline)) inline void invoke_WinImportHandler_WinImportHandler_a0_before (JoinPoint *tjp) {
14382
typedef typename JoinPoint::Binding_WinImportHandler_WinImportHandler_a0_before::template Arg<0> Arg0;
14383
typedef typename JoinPoint::Binding_WinImportHandler_WinImportHandler_a0_before::template Arg<1> Arg1;
14384
::WinImportHandler::aspectof()->__a0_before (tjp, (const Puma::Config &)Arg0::val (tjp), (bool)Arg1::val (tjp));
14388
#line 62 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinImportHandler.ah"
14392
#endif /* __WinImportHandler__ */
14394
#line 53 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/src/PreParser.cc"
14397
#ifdef __ac_need__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinMacros_ah__
14398
#ifndef __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinMacros_ah__
14399
#define __ac_have__tmp_tmp_KxXqa14641_aspectc4343_svn20080409_Puma_gen45release_step1_aspects_WinMacros_ah__
14401
#line 1 "/tmp/tmp.KxXqa14641/aspectc++.svn20080409/Puma/gen-release/step1/aspects/WinMacros.ah"
12937
14402
// This file is part of PUMA.
12938
14403
// Copyright (C) 1999-2003 The PUMA developer team.