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

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler
  • Date: 2009-06-15 10:17:02 UTC
  • mfrom: (1.2.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20090615101702-qsr30iptwbxylmo2
Tags: 1.0pre4~svn.20090615-1
* New upstream release.
* don't ignore errors in the postrm script
* avoid spurious creation of empty dir ./usr/sbin/
* improve short descriptions of libpuma-doc and libpuma-dev
* bump Standards-Version to 3.8.1
* bump debhelper compat level to level 7 (latest in stable)

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
 
2
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
3
 
#ifndef __ac_FIRST__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1__
4
 
#define __ac_FIRST__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1__
5
 
#define __ac_FIRST_FILE__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_src_CProject_cc__
6
 
#endif // __ac_FIRST__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1__
7
 
 
8
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
9
 
 
10
 
#line 11 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
3
#ifndef __ac_FIRST__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1__
 
4
#define __ac_FIRST__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1__
 
5
#define __ac_FIRST_FILE__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_src_CProject_cc__
 
6
#endif // __ac_FIRST__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1__
 
7
 
 
8
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
9
 
 
10
#line 11 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11
11
 
12
12
#ifndef __ac_h_
13
13
#define __ac_h_
77
77
#endif // __cplusplus
78
78
#endif // __ac_h_
79
79
 
80
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
81
 
 
82
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
83
 
 
84
 
#line 85 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
80
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
81
 
 
82
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
83
 
 
84
#line 85 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
85
85
 
86
86
#ifndef __ac_fwd_ExtACKeywords__
87
87
#define __ac_fwd_ExtACKeywords__
96
96
}
97
97
#endif
98
98
 
99
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
100
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
99
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
100
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
101
101
#endif
102
102
 
103
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
 
103
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
104
104
// This file is part of PUMA.
105
105
// Copyright (C) 1999-2003  The PUMA developer team.
106
106
//                                                                
120
120
// MA  02111-1307  USA                                            
121
121
 
122
122
 
123
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
124
 
 
125
 
#line 126 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
126
 
 
127
 
#ifndef __ac_fwd_PragmaOnce__
128
 
#define __ac_fwd_PragmaOnce__
129
 
class PragmaOnce;
130
 
namespace AC {
131
 
  template <class JoinPoint>
132
 
  __attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a0_after (JoinPoint *tjp);
133
 
  template <class JoinPoint>
134
 
  __attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a1_after (JoinPoint *tjp);
135
 
  template <class JoinPoint>
136
 
  __attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a2_around (JoinPoint *tjp);
137
 
  template <class JoinPoint>
138
 
  __attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a3_after (JoinPoint *tjp);
139
 
}
140
 
#endif
141
 
 
142
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
143
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
144
 
#endif
 
123
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
124
 
 
125
#line 126 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
145
126
 
146
127
#ifndef __ac_fwd_WinIfExists__
147
128
#define __ac_fwd_WinIfExists__
152
133
}
153
134
#endif
154
135
 
155
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
156
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
136
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
137
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinIfExists_ah__
157
138
#endif
158
139
 
159
140
#ifndef __ac_fwd_WinImportHandler__
165
146
}
166
147
#endif
167
148
 
168
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinImportHandler_ah__
169
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
149
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
150
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinImportHandler_ah__
170
151
#endif
171
152
 
172
153
#ifndef __ac_fwd_WinMacros__
178
159
}
179
160
#endif
180
161
 
181
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMacros_ah__
182
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMacros_ah__
183
 
#endif
184
 
 
185
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
162
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinMacros_ah__
 
163
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinMacros_ah__
 
164
#endif
 
165
 
 
166
#ifndef __ac_fwd_ExtGnu__
 
167
#define __ac_fwd_ExtGnu__
 
168
class ExtGnu;
 
169
namespace AC {
 
170
  template <class JoinPoint>
 
171
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
172
  template <class JoinPoint>
 
173
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
174
  template <class JoinPoint>
 
175
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_around (JoinPoint *tjp);
 
176
  template <class JoinPoint>
 
177
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_after (JoinPoint *tjp);
 
178
  template <class JoinPoint>
 
179
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
180
  template <class JoinPoint>
 
181
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
182
  template <class JoinPoint>
 
183
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
184
  template <class JoinPoint>
 
185
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
186
  template <class JoinPoint>
 
187
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_around (JoinPoint *tjp);
 
188
  template <class JoinPoint>
 
189
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
190
  template <class JoinPoint>
 
191
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
192
  template <class JoinPoint>
 
193
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_after (JoinPoint *tjp);
 
194
  template <class JoinPoint>
 
195
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
196
  template <class JoinPoint>
 
197
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_before (JoinPoint *tjp);
 
198
  template <class JoinPoint>
 
199
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
200
  template <class JoinPoint>
 
201
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
202
  template <class JoinPoint>
 
203
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
204
  template <class JoinPoint>
 
205
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
206
  template <class JoinPoint>
 
207
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_after (JoinPoint *tjp);
 
208
  template <class JoinPoint>
 
209
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_after (JoinPoint *tjp);
 
210
  template <class JoinPoint>
 
211
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_before (JoinPoint *tjp);
 
212
  template <class JoinPoint>
 
213
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a21_around (JoinPoint *tjp);
 
214
  template <class JoinPoint>
 
215
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a22_after (JoinPoint *tjp);
 
216
  template <class JoinPoint>
 
217
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a23_before (JoinPoint *tjp);
 
218
  template <class JoinPoint>
 
219
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a24_around (JoinPoint *tjp);
 
220
  template <class JoinPoint>
 
221
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a25_after (JoinPoint *tjp);
 
222
}
 
223
#endif
 
224
 
 
225
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
226
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
227
#endif
 
228
 
 
229
#ifndef __ac_fwd_PragmaOnce__
 
230
#define __ac_fwd_PragmaOnce__
 
231
class PragmaOnce;
 
232
namespace AC {
 
233
  template <class JoinPoint>
 
234
  __attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a0_after (JoinPoint *tjp);
 
235
  template <class JoinPoint>
 
236
  __attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a1_after (JoinPoint *tjp);
 
237
  template <class JoinPoint>
 
238
  __attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a2_around (JoinPoint *tjp);
 
239
  template <class JoinPoint>
 
240
  __attribute((always_inline)) inline void invoke_PragmaOnce_PragmaOnce_a3_after (JoinPoint *tjp);
 
241
}
 
242
#endif
 
243
 
 
244
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
245
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
246
#endif
 
247
 
 
248
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
186
249
// This file is part of PUMA.
187
250
// Copyright (C) 1999-2003  The PUMA developer team.
188
251
//                                                                
208
271
// be added last to the composite parser of a translation unit !!!
209
272
 
210
273
 
211
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Stack.h"
 
274
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Stack.h"
212
275
// This file is part of PUMA.
213
276
// Copyright (C) 1999-2003  The PUMA developer team.
214
277
//                                                                
231
294
#define __stack_h__
232
295
 
233
296
 
234
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Array.h"
 
297
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Array.h"
235
298
// This file is part of PUMA.
236
299
// Copyright (C) 1999-2003  The PUMA developer team.
237
300
//                                                                
528
591
 
529
592
#endif /* __array_h__ */
530
593
 
531
 
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Stack.h"
 
594
#line 24 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Stack.h"
532
595
namespace Puma {
533
596
 
534
597
template <class Item>
548
611
 
549
612
#endif /* __stack_h__ */
550
613
 
551
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
614
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Config.h"
552
615
// This file is part of PUMA.
553
616
// Copyright (C) 1999-2003  The PUMA developer team.
554
 
//                                                                
555
 
// This program is free software;  you can redistribute it and/or 
556
 
// modify it under the terms of the GNU General Public License as 
557
 
// published by the Free Software Foundation; either version 2 of 
558
 
// the License, or (at your option) any later version.            
559
 
//                                                                
 
617
//
 
618
// This program is free software;  you can redistribute it and/or
 
619
// modify it under the terms of the GNU General Public License as
 
620
// published by the Free Software Foundation; either version 2 of
 
621
// the License, or (at your option) any later version.
 
622
//
560
623
// This program is distributed in the hope that it will be useful,
561
 
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
562
 
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
563
 
// GNU General Public License for more details.                   
564
 
//                                                                
565
 
// You should have received a copy of the GNU General Public      
566
 
// License along with this program; if not, write to the Free     
567
 
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
568
 
// MA  02111-1307  USA                                            
 
624
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 
625
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
626
// GNU General Public License for more details.
 
627
//
 
628
// You should have received a copy of the GNU General Public
 
629
// License along with this program; if not, write to the Free
 
630
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 
631
// MA  02111-1307  USA
569
632
 
570
633
#ifndef __Config_h__
571
634
#define __Config_h__
574
637
 *  Configuration information from file or command line. */
575
638
 
576
639
 
577
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Flags.h"
 
640
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Flags.h"
578
641
// This file is part of PUMA.
579
642
// Copyright (C) 1999-2003  The PUMA developer team.
580
643
//                                                                
600
663
 
601
664
 
602
665
 
603
 
#line 604 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
666
#line 667 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
604
667
} // closed Puma
605
668
class CCExprResolve;
606
669
class CExprResolve;
623
686
class CMatchSyntax;
624
687
namespace Puma {
625
688
 
626
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Flags.h"
 
689
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Flags.h"
627
690
class Flags {
628
 
#line 629 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
691
#line 692 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
629
692
  friend class ::CCExprResolve;
630
693
  friend class ::CExprResolve;
631
694
  friend class ::WinIfExists;
646
709
  friend class ::PragmaOnce;
647
710
  friend class ::CMatchSyntax;
648
711
 
649
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Flags.h"
 
712
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Flags.h"
650
713
 
651
714
public:
652
715
  enum Flag {
694
757
  const void *__attr (unsigned __i) const {
695
758
    switch (__i) { case 16: return &_Flags; default: return 0; }
696
759
  }
697
 
#line 64 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Flags.h"
 
760
#line 64 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Flags.h"
698
761
};
699
762
 
700
763
inline Flags::Flags () : _Flags (NONE) 
719
782
 
720
783
#endif /* __Flags_h__ */
721
784
 
722
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
785
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ConfOption.h"
723
786
// This file is part of PUMA.
724
787
// Copyright (C) 1999-2003  The PUMA developer team.
725
788
//                                                                
742
805
#define __ConfOption_h__
743
806
 
744
807
 
745
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
808
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrCol.h"
746
809
// This file is part of PUMA.
747
810
// Copyright (C) 1999-2003  The PUMA developer team.
748
811
//                                                                
772
835
class Unit;
773
836
 
774
837
 
775
 
#line 776 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
838
#line 839 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
776
839
} // closed Puma
777
840
class CCExprResolve;
778
841
class CExprResolve;
795
858
class CMatchSyntax;
796
859
namespace Puma {
797
860
 
798
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
861
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrCol.h"
799
862
class StrCol {
800
 
#line 801 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
863
#line 864 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
801
864
  friend class ::CCExprResolve;
802
865
  friend class ::CExprResolve;
803
866
  friend class ::WinIfExists;
818
881
  friend class ::PragmaOnce;
819
882
  friend class ::CMatchSyntax;
820
883
 
821
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
884
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrCol.h"
822
885
 
823
886
protected:
824
887
  StrCol () {}
843
906
  typedef AC::TLE __AttrTypes;
844
907
  const char *__attr_name (unsigned i) const { return 0; }
845
908
  const void *__attr (unsigned __i) const { return 0; }
846
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrCol.h"
 
909
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrCol.h"
847
910
};
848
911
 
849
912
 
851
914
 
852
915
#endif /* __str_col__ */
853
916
 
854
 
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
917
#line 24 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ConfOption.h"
855
918
#include <stdlib.h>
856
919
 
857
920
namespace Puma {
858
921
 
859
922
 
860
923
 
861
 
#line 862 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
924
#line 925 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
862
925
} // closed Puma
863
926
class CCExprResolve;
864
927
class CExprResolve;
881
944
class CMatchSyntax;
882
945
namespace Puma {
883
946
 
884
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
947
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ConfOption.h"
885
948
class ConfOption {
886
 
#line 887 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
949
#line 950 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
887
950
  friend class ::CCExprResolve;
888
951
  friend class ::CExprResolve;
889
952
  friend class ::WinIfExists;
904
967
  friend class ::PragmaOnce;
905
968
  friend class ::CMatchSyntax;
906
969
 
907
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
970
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ConfOption.h"
908
971
 
909
972
  const char *_name;
910
973
  Array<const char *> _args;
928
991
  const void *__attr (unsigned __i) const {
929
992
    switch (__i) { case 0: return &_name; case 2: return &_args; default: return 0; }
930
993
  }
931
 
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ConfOption.h"
 
994
#line 44 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ConfOption.h"
932
995
};
933
996
 
934
997
inline ConfOption::ConfOption (const char *n) : _args (1, 1) 
959
1022
 
960
1023
#endif /* __ConfOption_h__ */
961
1024
 
962
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
1025
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
963
1026
// This file is part of PUMA.
964
1027
// Copyright (C) 1999-2003  The PUMA developer team.
965
1028
//                                                                
987
1050
 
988
1051
#include <sstream>
989
1052
 
990
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
1053
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
991
1054
// This file is part of PUMA.
992
1055
// Copyright (C) 1999-2003  The PUMA developer team.
993
1056
//                                                                
1022
1085
// messages or collect them for a later processing.
1023
1086
 
1024
1087
 
1025
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
1088
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
1026
1089
// This file is part of PUMA.
1027
1090
// Copyright (C) 1999-2003  The PUMA developer team.
1028
1091
//                                                                
1050
1113
 
1051
1114
 
1052
1115
 
1053
 
#line 1054 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1116
#line 1117 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1054
1117
} // closed Puma
1055
1118
class CCExprResolve;
1056
1119
class CExprResolve;
1073
1136
class CMatchSyntax;
1074
1137
namespace Puma {
1075
1138
 
1076
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
1139
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
1077
1140
class ErrorSeverity {
1078
 
#line 1079 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1141
#line 1142 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1079
1142
  friend class ::CCExprResolve;
1080
1143
  friend class ::CExprResolve;
1081
1144
  friend class ::WinIfExists;
1096
1159
  friend class ::PragmaOnce;
1097
1160
  friend class ::CMatchSyntax;
1098
1161
 
1099
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
1162
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
1100
1163
 
1101
1164
  unsigned short _severity;
1102
1165
  const char *_text;
1131
1194
  const void *__attr (unsigned __i) const {
1132
1195
    switch (__i) { case 0: return &_severity; case 1: return &_text; default: return 0; }
1133
1196
  }
1134
 
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
 
1197
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorSeverity.h"
1135
1198
};
1136
1199
 
1137
1200
extern const ErrorSeverity sev_none;
1145
1208
 
1146
1209
#endif /* __error_severity_h__ */
1147
1210
 
1148
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Printable.h"
 
1211
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Printable.h"
1149
1212
// This file is part of PUMA.
1150
1213
// Copyright (C) 1999-2003  The PUMA developer team.
1151
1214
//                                                                
1196
1259
 * std::cout << adam << std::endl;  // prints "[name: adam]\n"
1197
1260
 *  \endcode */
1198
1261
 
1199
 
#line 1200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1262
#line 1263 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1200
1263
} // closed Puma
1201
1264
class CCExprResolve;
1202
1265
class CExprResolve;
1219
1282
class CMatchSyntax;
1220
1283
namespace Puma {
1221
1284
 
1222
 
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Printable.h"
 
1285
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Printable.h"
1223
1286
class Printable {
1224
 
#line 1225 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1287
#line 1288 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1225
1288
  friend class ::CCExprResolve;
1226
1289
  friend class ::CExprResolve;
1227
1290
  friend class ::WinIfExists;
1242
1305
  friend class ::PragmaOnce;
1243
1306
  friend class ::CMatchSyntax;
1244
1307
 
1245
 
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Printable.h"
 
1308
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Printable.h"
1246
1309
 
1247
1310
public:
1248
1311
  /** Destructor. */
1254
1317
  typedef AC::TLE __AttrTypes;
1255
1318
  const char *__attr_name (unsigned i) const { return 0; }
1256
1319
  const void *__attr (unsigned __i) const { return 0; }
1257
 
#line 57 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Printable.h"
 
1320
#line 57 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Printable.h"
1258
1321
};
1259
1322
 
1260
1323
 
1272
1335
 
1273
1336
#endif /* __printable_h__ */
1274
1337
 
1275
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
1338
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Location.h"
1276
1339
// This file is part of PUMA.
1277
1340
// Copyright (C) 1999-2003  The PUMA developer team.
1278
1341
//                                                                
1295
1358
#define __location_h__
1296
1359
 
1297
1360
 
1298
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
1361
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Filename.h"
1299
1362
// This file is part of PUMA.
1300
1363
// Copyright (C) 1999-2003  The PUMA developer team.
1301
1364
//                                                                
1318
1381
#define __filename_h__
1319
1382
 
1320
1383
 
1321
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
1384
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
1322
1385
// This file is part of PUMA.
1323
1386
// Copyright (C) 1999-2003  The PUMA developer team.
1324
1387
//                                                                
1341
1404
#define __smart_ptr_h__
1342
1405
 
1343
1406
 
1344
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
1407
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/RefCnt.h"
1345
1408
// This file is part of PUMA.
1346
1409
// Copyright (C) 1999-2003  The PUMA developer team.
1347
1410
//                                                                
1367
1430
 
1368
1431
 
1369
1432
 
1370
 
#line 1371 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1433
#line 1434 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1371
1434
} // closed Puma
1372
1435
class CCExprResolve;
1373
1436
class CExprResolve;
1390
1453
class CMatchSyntax;
1391
1454
namespace Puma {
1392
1455
 
1393
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
1456
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/RefCnt.h"
1394
1457
class RefCnt {
1395
 
#line 1396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1458
#line 1459 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1396
1459
  friend class ::CCExprResolve;
1397
1460
  friend class ::CExprResolve;
1398
1461
  friend class ::WinIfExists;
1413
1476
  friend class ::PragmaOnce;
1414
1477
  friend class ::CMatchSyntax;
1415
1478
 
1416
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
1479
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/RefCnt.h"
1417
1480
 
1418
1481
  int _counter;
1419
1482
 
1432
1495
  const void *__attr (unsigned __i) const {
1433
1496
    switch (__i) { case 0: return &_counter; default: return 0; }
1434
1497
  }
1435
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/RefCnt.h"
 
1498
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/RefCnt.h"
1436
1499
};
1437
1500
 
1438
1501
 
1440
1503
 
1441
1504
#endif /* __ref_cnt_h__ */
1442
1505
 
1443
 
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
1506
#line 24 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
1444
1507
namespace Puma {
1445
1508
 
1446
1509
 
1447
1510
 
1448
 
#line 1449 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1511
#line 1512 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1449
1512
} // closed Puma
1450
1513
class CCExprResolve;
1451
1514
class CExprResolve;
1468
1531
class CMatchSyntax;
1469
1532
namespace Puma {
1470
1533
 
1471
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
1534
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
1472
1535
class SmartPtr {
1473
 
#line 1474 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1536
#line 1537 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1474
1537
  friend class ::CCExprResolve;
1475
1538
  friend class ::CExprResolve;
1476
1539
  friend class ::WinIfExists;
1491
1554
  friend class ::PragmaOnce;
1492
1555
  friend class ::CMatchSyntax;
1493
1556
 
1494
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
1557
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
1495
1558
 
1496
1559
  RefCnt *_data;
1497
1560
 
1514
1577
  const void *__attr (unsigned __i) const {
1515
1578
    switch (__i) { case 0: return &_data; default: return 0; }
1516
1579
  }
1517
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
 
1580
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SmartPtr.h"
1518
1581
};
1519
1582
 
1520
1583
 
1522
1585
 
1523
1586
#endif /* __smart_ptr_h__ */
1524
1587
 
1525
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
1588
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
1526
1589
// This file is part of PUMA.
1527
1590
// Copyright (C) 1999-2003  The PUMA developer team.
1528
1591
//                                                                
1545
1608
#define __filename_info_h__
1546
1609
 
1547
1610
 
1548
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
1611
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/DString.h"
1549
1612
// This file is part of PUMA.
1550
1613
// Copyright (C) 1999-2003  The PUMA developer team.
1551
1614
//                                                                
1571
1634
 *  Global hash table based string container. */
1572
1635
 
1573
1636
 
1574
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1637
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
1575
1638
// This file is part of PUMA.
1576
1639
// Copyright (C) 1999-2003  The PUMA developer team.
1577
1640
//                                                                
1594
1657
#define __StrHashTable_h__
1595
1658
 
1596
1659
 
1597
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1660
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
1598
1661
// This file is part of PUMA.
1599
1662
// Copyright (C) 1999-2003  The PUMA developer team.
1600
1663
//                                                                
1617
1680
#define __StrHashKey_h__
1618
1681
 
1619
1682
 
1620
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1683
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Chain.h"
1621
1684
// This file is part of PUMA.
1622
1685
// Copyright (C) 1999-2003  The PUMA developer team.
1623
1686
//                                                                
1652
1715
 
1653
1716
 
1654
1717
 
1655
 
#line 1656 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1718
#line 1719 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1656
1719
} // closed Puma
1657
1720
class CCExprResolve;
1658
1721
class CExprResolve;
1675
1738
class CMatchSyntax;
1676
1739
namespace Puma {
1677
1740
 
1678
 
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1741
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Chain.h"
1679
1742
class Chain {
1680
 
#line 1681 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1743
#line 1744 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1681
1744
  friend class ::CCExprResolve;
1682
1745
  friend class ::CExprResolve;
1683
1746
  friend class ::WinIfExists;
1698
1761
  friend class ::PragmaOnce;
1699
1762
  friend class ::CMatchSyntax;
1700
1763
 
1701
 
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1764
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Chain.h"
1702
1765
 
1703
1766
  Chain *next;
1704
1767
 
1728
1791
  const void *__attr (unsigned __i) const {
1729
1792
    switch (__i) { case 0: return &next; default: return 0; }
1730
1793
  }
1731
 
#line 55 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Chain.h"
 
1794
#line 55 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Chain.h"
1732
1795
};
1733
1796
 
1734
1797
#ifndef __puma
1771
1834
 
1772
1835
#endif /* __Chain_h__ */
1773
1836
 
1774
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1837
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
1775
1838
namespace Puma {
1776
1839
 
1777
1840
 
1778
1841
 
1779
 
#line 1780 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1842
#line 1843 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1780
1843
} // closed Puma
1781
1844
class CCExprResolve;
1782
1845
class CExprResolve;
1799
1862
class CMatchSyntax;
1800
1863
namespace Puma {
1801
1864
 
1802
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1865
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
1803
1866
class StrHashKey : public Chain {
1804
 
#line 1805 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1867
#line 1868 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1805
1868
  friend class ::CCExprResolve;
1806
1869
  friend class ::CExprResolve;
1807
1870
  friend class ::WinIfExists;
1822
1885
  friend class ::PragmaOnce;
1823
1886
  friend class ::CMatchSyntax;
1824
1887
 
1825
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1888
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
1826
1889
 
1827
1890
  unsigned int m_Magic;
1828
1891
  unsigned int m_Len;
1846
1909
  const void *__attr (unsigned __i) const {
1847
1910
    switch (__i) { case 0: return &m_Magic; case 1: return &m_Len; case 2: return &m_Str; default: return 0; }
1848
1911
  }
1849
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
 
1912
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashKey.h"
1850
1913
};
1851
1914
 
1852
1915
 
1854
1917
 
1855
1918
#endif /* __StrHashKey_h__ */
1856
1919
 
1857
 
#line 23 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1920
#line 23 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
1858
1921
#include <assert.h>
1859
1922
 
1860
1923
namespace Puma {
1861
1924
 
1862
1925
 
1863
1926
 
1864
 
#line 1865 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1927
#line 1928 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1865
1928
} // closed Puma
1866
1929
class CCExprResolve;
1867
1930
class CExprResolve;
1884
1947
class CMatchSyntax;
1885
1948
namespace Puma {
1886
1949
 
1887
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1950
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
1888
1951
class StrHashTable {
1889
 
#line 1890 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
1952
#line 1953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1890
1953
  friend class ::CCExprResolve;
1891
1954
  friend class ::CExprResolve;
1892
1955
  friend class ::WinIfExists;
1907
1970
  friend class ::PragmaOnce;
1908
1971
  friend class ::CMatchSyntax;
1909
1972
 
1910
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
1973
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
1911
1974
 
1912
1975
  StrHashKey *_emptyKey;
1913
1976
 
1927
1990
private:
1928
1991
  Chain m_Table[STRHASHTABLE_SIZE];
1929
1992
 
1930
 
  StrHashKey *find (unsigned int, const char *, unsigned int);
1931
 
  unsigned int hash (const char *, unsigned int &);
 
1993
  StrHashKey *find (unsigned long, const char *, unsigned long);
 
1994
  unsigned long hash (const char *, unsigned long &);
1932
1995
public:
1933
1996
  typedef AC::TL<Puma::StrHashKey *,AC::TL<Puma::Chain [65535],AC::TLE > > __AttrTypes;
1934
1997
  const char *__attr_name (unsigned i) const {
1937
2000
  const void *__attr (unsigned __i) const {
1938
2001
    switch (__i) { case 0: return &_emptyKey; case 2: return &m_Table; default: return 0; }
1939
2002
  }
1940
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
 
2003
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StrHashTable.h"
1941
2004
};
1942
2005
 
1943
2006
 
1945
2008
 
1946
2009
#endif /* __StrHashTable_h__ */
1947
2010
 
1948
 
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
2011
#line 26 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/DString.h"
1949
2012
#include <assert.h>
1950
2013
 
1951
2014
namespace Puma {
1958
2021
/** \class DString DString.h Puma/DString.h
1959
2022
 *  Global hash table based string container. */
1960
2023
 
1961
 
#line 1962 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2024
#line 2025 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1962
2025
} // closed Puma
1963
2026
class CCExprResolve;
1964
2027
class CExprResolve;
1981
2044
class CMatchSyntax;
1982
2045
namespace Puma {
1983
2046
 
1984
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
2047
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/DString.h"
1985
2048
class DString {
1986
 
#line 1987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2049
#line 2050 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
1987
2050
  friend class ::CCExprResolve;
1988
2051
  friend class ::CExprResolve;
1989
2052
  friend class ::WinIfExists;
2004
2067
  friend class ::PragmaOnce;
2005
2068
  friend class ::CMatchSyntax;
2006
2069
 
2007
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
2070
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/DString.h"
2008
2071
 
2009
2072
  StrHashKey *m_Key;
2010
2073
 
2106
2169
  const void *__attr (unsigned __i) const {
2107
2170
    switch (__i) { case 0: return &m_Key; default: return 0; }
2108
2171
  }
2109
 
#line 130 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/DString.h"
 
2172
#line 130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/DString.h"
2110
2173
};
2111
2174
 
2112
2175
 
2114
2177
 
2115
2178
#endif /* __DString_h__ */
2116
2179
 
2117
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
2180
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
2118
2181
namespace Puma {
2119
2182
 
2120
2183
 
2121
2184
 
2122
 
#line 2123 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2185
#line 2186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2123
2186
} // closed Puma
2124
2187
class CCExprResolve;
2125
2188
class CExprResolve;
2142
2205
class CMatchSyntax;
2143
2206
namespace Puma {
2144
2207
 
2145
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
2208
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
2146
2209
class FilenameInfo : public RefCnt {
2147
 
#line 2148 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2210
#line 2211 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2148
2211
  friend class ::CCExprResolve;
2149
2212
  friend class ::CExprResolve;
2150
2213
  friend class ::WinIfExists;
2165
2228
  friend class ::PragmaOnce;
2166
2229
  friend class ::CMatchSyntax;
2167
2230
 
2168
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
2231
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
2169
2232
 
2170
2233
  DString _name;
2171
2234
  const char *_path;
2191
2254
  const void *__attr (unsigned __i) const {
2192
2255
    switch (__i) { case 0: return &_name; case 1: return &_path; case 2: return &_root; default: return 0; }
2193
2256
  }
2194
 
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
 
2257
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FilenameInfo.h"
2195
2258
};
2196
2259
 
2197
2260
 
2199
2262
 
2200
2263
#endif /* __filename_info_h__ */
2201
2264
 
2202
 
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
2265
#line 26 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Filename.h"
2203
2266
namespace Puma {
2204
2267
 
2205
2268
 
2206
2269
 
2207
 
#line 2208 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2270
#line 2271 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2208
2271
} // closed Puma
2209
2272
class CCExprResolve;
2210
2273
class CExprResolve;
2227
2290
class CMatchSyntax;
2228
2291
namespace Puma {
2229
2292
 
2230
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
2293
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Filename.h"
2231
2294
class Filename : public SmartPtr, public Printable {
2232
 
#line 2233 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2295
#line 2296 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2233
2296
  friend class ::CCExprResolve;
2234
2297
  friend class ::CExprResolve;
2235
2298
  friend class ::WinIfExists;
2250
2313
  friend class ::PragmaOnce;
2251
2314
  friend class ::CMatchSyntax;
2252
2315
 
2253
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
2316
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Filename.h"
2254
2317
 
2255
2318
  FilenameInfo *info () const { return (FilenameInfo*)data (); }
2256
2319
 
2271
2334
  typedef AC::TLE __AttrTypes;
2272
2335
  const char *__attr_name (unsigned i) const { return 0; }
2273
2336
  const void *__attr (unsigned __i) const { return 0; }
2274
 
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Filename.h"
 
2337
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Filename.h"
2275
2338
};
2276
2339
 
2277
2340
 
2279
2342
 
2280
2343
#endif /* __filename_h__ */
2281
2344
 
2282
 
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
2345
#line 24 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Location.h"
2283
2346
namespace Puma {
2284
2347
 
2285
2348
 
2286
2349
 
2287
 
#line 2288 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2350
#line 2351 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2288
2351
} // closed Puma
2289
2352
class CCExprResolve;
2290
2353
class CExprResolve;
2307
2370
class CMatchSyntax;
2308
2371
namespace Puma {
2309
2372
 
2310
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
2373
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Location.h"
2311
2374
class Location {
2312
 
#line 2313 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2375
#line 2376 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2313
2376
  friend class ::CCExprResolve;
2314
2377
  friend class ::CExprResolve;
2315
2378
  friend class ::WinIfExists;
2330
2393
  friend class ::PragmaOnce;
2331
2394
  friend class ::CMatchSyntax;
2332
2395
 
2333
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
2396
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Location.h"
2334
2397
 
2335
2398
  Filename _filename;
2336
2399
  int _line;
2366
2429
  const void *__attr (unsigned __i) const {
2367
2430
    switch (__i) { case 0: return &_filename; case 1: return &_line; case 2: return &_column; default: return 0; }
2368
2431
  }
2369
 
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Location.h"
 
2432
#line 54 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Location.h"
2370
2433
};
2371
2434
 
2372
2435
inline std::ostream &operator << (std::ostream &os, const Location &loc) {
2381
2444
 
2382
2445
#endif /* __location_h__ */
2383
2446
 
2384
 
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2447
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
2385
2448
namespace Puma {
2386
2449
 
2387
2450
 
2388
2451
 
2389
 
#line 2390 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2452
#line 2453 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2390
2453
} // closed Puma
2391
2454
class CCExprResolve;
2392
2455
class CExprResolve;
2409
2472
class CMatchSyntax;
2410
2473
namespace Puma {
2411
2474
 
2412
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2475
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
2413
2476
class ErrorSink {
2414
 
#line 2415 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2477
#line 2478 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2415
2478
  friend class ::CCExprResolve;
2416
2479
  friend class ::CExprResolve;
2417
2480
  friend class ::WinIfExists;
2432
2495
  friend class ::PragmaOnce;
2433
2496
  friend class ::CMatchSyntax;
2434
2497
 
2435
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2498
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
2436
2499
 
2437
2500
public:
2438
2501
  virtual ~ErrorSink () {}
2452
2515
  typedef AC::TLE __AttrTypes;
2453
2516
  const char *__attr_name (unsigned i) const { return 0; }
2454
2517
  const void *__attr (unsigned __i) const { return 0; }
2455
 
#line 56 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
 
2518
#line 56 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorSink.h"
2456
2519
};
2457
2520
 
2458
2521
void endMessage (ErrorSink &);
2462
2525
 
2463
2526
#endif /* __error_sink_h__ */
2464
2527
 
2465
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2528
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
2466
2529
using namespace std;
2467
2530
 
2468
2531
namespace Puma {
2469
2532
 
2470
2533
 
2471
2534
 
2472
 
#line 2473 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2535
#line 2536 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2473
2536
} // closed Puma
2474
2537
class CCExprResolve;
2475
2538
class CExprResolve;
2492
2555
class CMatchSyntax;
2493
2556
namespace Puma {
2494
2557
 
2495
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2558
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
2496
2559
class ErrorStream : public ErrorSink {
2497
 
#line 2498 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2560
#line 2561 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2498
2561
  friend class ::CCExprResolve;
2499
2562
  friend class ::CExprResolve;
2500
2563
  friend class ::WinIfExists;
2515
2578
  friend class ::PragmaOnce;
2516
2579
  friend class ::CMatchSyntax;
2517
2580
 
2518
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2581
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
2519
2582
 
2520
2583
  ostream *_ostream;
2521
2584
  ErrorSeverity _max_severity;
2559
2622
  const void *__attr (unsigned __i) const {
2560
2623
    switch (__i) { case 0: return &_ostream; case 1: return &_max_severity; case 2: return &_curr_severity; case 3: return &_location; case 4: return &_have_location; case 5: return &_msg; case 6: return &_silently; default: return 0; }
2561
2624
  }
2562
 
#line 70 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
 
2625
#line 70 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ErrorStream.h"
2563
2626
};
2564
2627
 
2565
2628
 
2567
2630
 
2568
2631
#endif /* __error_stream_h__ */
2569
2632
 
2570
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
2633
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/OptsParser.h"
2571
2634
// This file is part of PUMA.
2572
2635
// Copyright (C) 1999-2003  The PUMA developer team.
2573
2636
//                                                                
2590
2653
#define __OptsParser_h__
2591
2654
 
2592
2655
 
2593
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
2656
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
2594
2657
// This file is part of PUMA.
2595
2658
// Copyright (C) 1999-2003  The PUMA developer team.
2596
2659
//                                                                
2613
2676
#define __SimpleParser_h__
2614
2677
 
2615
2678
 
2616
 
#line 23 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
2679
#line 23 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
2617
2680
#include <vector>
2618
2681
using namespace std;
2619
2682
 
2625
2688
 * \class SimpleParser SimpleParser.h Puma/common/SimpleParser.h
2626
2689
 */
2627
2690
 
2628
 
#line 2629 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2691
#line 2692 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2629
2692
} // closed Puma
2630
2693
class CCExprResolve;
2631
2694
class CExprResolve;
2648
2711
class CMatchSyntax;
2649
2712
namespace Puma {
2650
2713
 
2651
 
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
2714
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
2652
2715
class SimpleParser {
2653
 
#line 2654 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2716
#line 2717 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2654
2717
  friend class ::CCExprResolve;
2655
2718
  friend class ::CExprResolve;
2656
2719
  friend class ::WinIfExists;
2671
2734
  friend class ::PragmaOnce;
2672
2735
  friend class ::CMatchSyntax;
2673
2736
 
2674
 
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
2737
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
2675
2738
 
2676
2739
public:
2677
2740
  /**
2719
2782
  typedef AC::TLE __AttrTypes;
2720
2783
  const char *__attr_name (unsigned i) const { return 0; }
2721
2784
  const void *__attr (unsigned __i) const { return 0; }
2722
 
#line 76 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
 
2785
#line 76 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SimpleParser.h"
2723
2786
};
2724
2787
 
2725
2788
 
2727
2790
 
2728
2791
#endif /* __SimpleParser_h__ */
2729
2792
 
2730
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
2793
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/OptsParser.h"
2731
2794
using namespace std;
2732
2795
 
2733
2796
namespace Puma {
2737
2800
 *  handles their option arguments, if applicable.
2738
2801
 */
2739
2802
 
2740
 
#line 2741 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2803
#line 2804 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2741
2804
} // closed Puma
2742
2805
class CCExprResolve;
2743
2806
class CExprResolve;
2760
2823
class CMatchSyntax;
2761
2824
namespace Puma {
2762
2825
 
2763
 
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
2826
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/OptsParser.h"
2764
2827
class OptsParser : public SimpleParser {
2765
 
#line 2766 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2828
#line 2829 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2766
2829
  friend class ::CCExprResolve;
2767
2830
  friend class ::CExprResolve;
2768
2831
  friend class ::WinIfExists;
2783
2846
  friend class ::PragmaOnce;
2784
2847
  friend class ::CMatchSyntax;
2785
2848
 
2786
 
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
2849
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/OptsParser.h"
2787
2850
 
2788
2851
  
2789
2852
  
2843
2906
   *  An array of this type has to be passed to the constructor OptsParser::OptsParser()
2844
2907
   */
2845
2908
  struct Option {
2846
 
#line 2847 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
2909
#line 2910 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
2847
2910
  friend class ::CCExprResolve;
2848
2911
  friend class ::CExprResolve;
2849
2912
  friend class ::WinIfExists;
2864
2927
  friend class ::PragmaOnce;
2865
2928
  friend class ::CMatchSyntax;
2866
2929
 
2867
 
#line 91 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
2930
#line 91 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/OptsParser.h"
2868
2931
 
2869
2932
    int number; /**< Number associated with this option */
2870
2933
    const char *shortName; /**< Short name of this option. Should ideally not contain more than one character */
2879
2942
  const void *__attr (unsigned __i) const {
2880
2943
    switch (__i) { case 0: return &number; case 1: return &shortName; case 2: return &longName; case 3: return &desc; case 4: return &argType; default: return 0; }
2881
2944
  }
2882
 
#line 97 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
2945
#line 97 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/OptsParser.h"
2883
2946
};
2884
2947
 
2885
2948
private:
3003
3066
  const void *__attr (unsigned __i) const {
3004
3067
    switch (__i) { case 1: return &m_argv; case 2: return &m_curarg; case 3: return &m_tonext; case 4: return &m_number; case 5: return &m_opt; case 6: return &m_arg; case 15: return &m_opts; default: return 0; }
3005
3068
  }
3006
 
#line 212 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OptsParser.h"
 
3069
#line 212 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/OptsParser.h"
3007
3070
};
3008
3071
 
3009
3072
 
3011
3074
 
3012
3075
#endif /* __OptsParser_h__ */
3013
3076
 
3014
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
3077
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Config.h"
 
3078
#include <map>
3015
3079
using namespace std;
3016
3080
 
3017
3081
namespace Puma {
3018
3082
 
3019
3083
 
3020
3084
/** \class Config Config.h Puma/Config.h
3021
 
 *  %Puma configuration information. Can read the 
 
3085
 *  %Puma configuration information. Can read the
3022
3086
 *  configuration from file or command line. */
3023
3087
 
3024
 
#line 3025 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3088
#line 3089 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3025
3089
} // closed Puma
3026
3090
class CCExprResolve;
3027
3091
class CExprResolve;
3044
3108
class CMatchSyntax;
3045
3109
namespace Puma {
3046
3110
 
3047
 
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
3111
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Config.h"
3048
3112
class Config {
3049
 
#line 3050 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3113
#line 3114 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3050
3114
  friend class ::CCExprResolve;
3051
3115
  friend class ::CExprResolve;
3052
3116
  friend class ::WinIfExists;
3067
3131
  friend class ::PragmaOnce;
3068
3132
  friend class ::CMatchSyntax;
3069
3133
 
3070
 
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
3134
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Config.h"
3071
3135
 
3072
3136
  Flags _flags;
3073
3137
  ErrorStream &_err;
3074
3138
  Array<const ConfOption *> _options;
3075
 
  
 
3139
  typedef std::map<std::string,const ConfOption*> OptionMap;
 
3140
  OptionMap _optnamemap;
 
3141
 
3076
3142
public:
3077
3143
  enum OPTIONS {
3078
3144
    PRE_ASSERT = 1,
3079
 
    PRE_DEFINE, 
3080
 
    PRE_UNDEFINE, 
 
3145
    PRE_DEFINE,
 
3146
    PRE_UNDEFINE,
3081
3147
    PRE_LOCK_MACRO,
3082
3148
    PRE_INCLUDE,
3083
 
    CFG_FILE, 
3084
 
    PROJ_PATH, 
 
3149
    CFG_FILE,
 
3150
    PROJ_PATH,
3085
3151
    PROJ_DESTINATION,
3086
 
    SET_SUFFIX, 
3087
 
    SET_EXTENSION, 
 
3152
    SET_SUFFIX,
 
3153
    SET_EXTENSION,
3088
3154
    SET_WRITE_PROTECTED,
3089
 
    SET_OPTION, 
 
3155
    GNU,
 
3156
    SET_OPTION,
3090
3157
    SET_OPTION_ARG
3091
3158
  };
3092
 
   
 
3159
 
3093
3160
public:
3094
3161
  Config (ErrorStream &);
3095
3162
  Config (const Config &);
3096
3163
  ~Config ();
3097
 
  
 
3164
 
3098
3165
  // read config file
3099
3166
  Config (ErrorStream &, const char *);
3100
3167
  // read command line
3101
3168
  Config (ErrorStream &, int &, char **&);
3102
3169
  // read config file and command line
3103
3170
  Config (ErrorStream &, const char *, int &, char **&);
3104
 
        
 
3171
 
3105
3172
  // join with another configuration
3106
3173
  void Join (const Config &);
3107
3174
 
3123
3190
  const ConfOption *Option (const char *) const;
3124
3191
 
3125
3192
  Flags FlagTable () const;
3126
 
  
 
3193
 
 
3194
  // print the options
 
3195
  void PrintOptions(std::ostream& os) const;
 
3196
  // print a single option
 
3197
  void PrintOption(OptsParser::Option& o, std::ostream& os) const;
 
3198
 
 
3199
  // replace environment variables of the form ${ENVVAR}
 
3200
  std::string& ReplaceEnvVars(std::string& s) const;
 
3201
 
3127
3202
private:
3128
3203
  bool Valid (const char *, const char * = (const char *)0) const;
3129
3204
 
3134
3209
  bool ProcessUndefine (const string&);
3135
3210
  bool ProcessConfigFile (const string&,const string&);
3136
3211
  bool ProcessArgument (const string&,const string&);
 
3212
  bool ProcessOptionalArgument (const string&,const string&);
3137
3213
  bool ProcessPathArgument (const string&,const string&);
3138
3214
 
3139
3215
  string Unescape(const string&);
3140
3216
public:
3141
 
  typedef AC::TL<Puma::Flags,AC::TL<Puma::ErrorStream &,AC::TL<Puma::Array< const Puma::ConfOption * >,AC::TLE > > > __AttrTypes;
 
3217
  typedef AC::TL<Puma::Flags,AC::TL<Puma::ErrorStream &,AC::TL<Puma::Array< const Puma::ConfOption * >,AC::TL<std::map< std::basic_string< char >,const Puma::ConfOption * >,AC::TLE > > > > __AttrTypes;
3142
3218
  const char *__attr_name (unsigned i) const {
3143
 
    static const char *names[] = { "_flags", "_err", "_options" }; return names[i];
 
3219
    static const char *names[] = { "_flags", "_err", "_options", "_optnamemap" }; return names[i];
3144
3220
  }
3145
3221
  const void *__attr (unsigned __i) const {
3146
 
    switch (__i) { case 0: return &_flags; case 1: return &_err; case 3: return &_options; default: return 0; }
 
3222
    switch (__i) { case 0: return &_flags; case 1: return &_err; case 3: return &_options; case 6: return &_optnamemap; default: return 0; }
3147
3223
  }
3148
 
#line 107 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Config.h"
 
3224
#line 121 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Config.h"
3149
3225
};
3150
3226
 
3151
3227
inline Config::Config (ErrorStream &e) : _err (e)
3152
3228
 {}
3153
3229
inline Config::Config (const Config &c) : _err (c._err)
3154
3230
 { Join (c); }
3155
 
  
 
3231
 
3156
3232
inline Config::Config (ErrorStream &e, const char *file) : _err (e)
3157
3233
 { Read (file); }
3158
3234
inline Config::Config (ErrorStream &e, int &argc, char **&argv) : _err (e)
3165
3241
     delete (ConfOption *) Option (i);
3166
3242
 }
3167
3243
 
3168
 
inline void Config::Add (const ConfOption *o) 
3169
 
 { _options.append (o); }
 
3244
inline void Config::Add (const ConfOption *o)
 
3245
 { _options.append (o); _optnamemap[o->Name()] = o; }
3170
3246
inline void Config::Add (const char *n)
3171
3247
 { Add (new ConfOption (n)); }
3172
3248
inline void Config::Add (const char *n, const char *a1)
3187
3263
 
3188
3264
#endif /* __Config_h__ */
3189
3265
 
3190
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
3266
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
3191
3267
 
3192
 
#line 3193 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3268
#line 3269 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3193
3269
 
3194
3270
#ifndef __ac_fwd_ExtACKeywords__
3195
3271
#define __ac_fwd_ExtACKeywords__
3204
3280
}
3205
3281
#endif
3206
3282
 
3207
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
3208
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
3209
 
#endif
3210
 
 
3211
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
3283
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
3284
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
3285
#endif
 
3286
 
 
3287
#ifndef __ac_fwd_ExtGnu__
 
3288
#define __ac_fwd_ExtGnu__
 
3289
class ExtGnu;
 
3290
namespace AC {
 
3291
  template <class JoinPoint>
 
3292
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
3293
  template <class JoinPoint>
 
3294
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
3295
  template <class JoinPoint>
 
3296
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_around (JoinPoint *tjp);
 
3297
  template <class JoinPoint>
 
3298
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_after (JoinPoint *tjp);
 
3299
  template <class JoinPoint>
 
3300
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
3301
  template <class JoinPoint>
 
3302
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
3303
  template <class JoinPoint>
 
3304
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
3305
  template <class JoinPoint>
 
3306
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
3307
  template <class JoinPoint>
 
3308
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_around (JoinPoint *tjp);
 
3309
  template <class JoinPoint>
 
3310
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
3311
  template <class JoinPoint>
 
3312
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
3313
  template <class JoinPoint>
 
3314
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_after (JoinPoint *tjp);
 
3315
  template <class JoinPoint>
 
3316
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
3317
  template <class JoinPoint>
 
3318
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_before (JoinPoint *tjp);
 
3319
  template <class JoinPoint>
 
3320
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
3321
  template <class JoinPoint>
 
3322
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
3323
  template <class JoinPoint>
 
3324
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
3325
  template <class JoinPoint>
 
3326
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
3327
  template <class JoinPoint>
 
3328
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_after (JoinPoint *tjp);
 
3329
  template <class JoinPoint>
 
3330
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_after (JoinPoint *tjp);
 
3331
  template <class JoinPoint>
 
3332
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_before (JoinPoint *tjp);
 
3333
  template <class JoinPoint>
 
3334
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a21_around (JoinPoint *tjp);
 
3335
  template <class JoinPoint>
 
3336
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a22_after (JoinPoint *tjp);
 
3337
  template <class JoinPoint>
 
3338
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a23_before (JoinPoint *tjp);
 
3339
  template <class JoinPoint>
 
3340
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a24_around (JoinPoint *tjp);
 
3341
  template <class JoinPoint>
 
3342
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a25_after (JoinPoint *tjp);
 
3343
}
 
3344
#endif
 
3345
 
 
3346
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3347
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
3348
#endif
 
3349
 
 
3350
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
3212
3351
// This file is part of PUMA.
3213
3352
// Copyright (C) 1999-2003  The PUMA developer team.
3214
3353
//                                                                
3231
3370
#define __c_scanner_h__
3232
3371
 
3233
3372
 
3234
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
3373
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
3235
3374
// This file is part of PUMA.
3236
3375
// Copyright (C) 1999-2003  The PUMA developer team.
3237
3376
//                                                                
3254
3393
#define __c_recognizer_h__
3255
3394
 
3256
3395
 
3257
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
3396
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
3258
3397
// This file is part of PUMA.
3259
3398
// Copyright (C) 1999-2003  The PUMA developer team.
3260
3399
//                                                                
3277
3416
#define __CScanBuffer_h__
3278
3417
 
3279
3418
 
3280
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
3419
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
3281
3420
// This file is part of PUMA.
3282
3421
// Copyright (C) 1999-2003  The PUMA developer team.
3283
3422
//                                                                
3300
3439
#define __scan_buffer_h__
3301
3440
 
3302
3441
 
3303
 
#line 23 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
3442
#line 23 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
3304
3443
using namespace std;
3305
3444
 
3306
3445
namespace Puma {
3307
3446
 
3308
3447
 
3309
 
#line 3310 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3448
#line 3449 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3310
3449
} // closed Puma
3311
3450
class CCExprResolve;
3312
3451
class CExprResolve;
3329
3468
class CMatchSyntax;
3330
3469
namespace Puma {
3331
3470
 
3332
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
3471
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
3333
3472
class ScanBuffer {
3334
 
#line 3335 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3473
#line 3474 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3335
3474
  friend class ::CCExprResolve;
3336
3475
  friend class ::CExprResolve;
3337
3476
  friend class ::WinIfExists;
3352
3491
  friend class ::PragmaOnce;
3353
3492
  friend class ::CMatchSyntax;
3354
3493
 
3355
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
3494
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
3356
3495
 
3357
3496
public:
3358
3497
  typedef enum { STATE_NEW, STATE_END, STATE_ERROR, STATE_OK } State;
3394
3533
  const void *__attr (unsigned __i) const {
3395
3534
    switch (__i) { case 4: return &_token; case 5: return &_pos; case 6: return &_buffer; case 7: return &_buff_size; default: return 0; }
3396
3535
  }
3397
 
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
 
3536
#line 60 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ScanBuffer.h"
3398
3537
};
3399
3538
 
3400
3539
 
3402
3541
 
3403
3542
#endif /* __scan_buffer_h__ */
3404
3543
 
3405
 
#line 24 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
3544
#line 24 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
3406
3545
namespace Puma {
3407
3546
 
3408
3547
 
3409
3548
 
3410
 
#line 3411 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3549
#line 3550 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3411
3550
} // closed Puma
3412
3551
class CCExprResolve;
3413
3552
class CExprResolve;
3430
3569
class CMatchSyntax;
3431
3570
namespace Puma {
3432
3571
 
3433
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
3572
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
3434
3573
class CScanBuffer : public ScanBuffer {
3435
 
#line 3436 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3574
#line 3575 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3436
3575
  friend class ::CCExprResolve;
3437
3576
  friend class ::CExprResolve;
3438
3577
  friend class ::WinIfExists;
3453
3592
  friend class ::PragmaOnce;
3454
3593
  friend class ::CMatchSyntax;
3455
3594
 
3456
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
3595
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
3457
3596
 
3458
3597
 
3459
3598
  int _new_line_pos;
3474
3613
  const void *__attr (unsigned __i) const {
3475
3614
    switch (__i) { case 0: return &_new_line_pos; default: return 0; }
3476
3615
  }
3477
 
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
 
3616
#line 39 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanBuffer.h"
3478
3617
};
3479
3618
 
3480
3619
 
3512
3651
 
3513
3652
#endif // __CScanBuffer_h__
3514
3653
 
3515
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
3654
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
3516
3655
// This file is part of PUMA.
3517
3656
// Copyright (C) 1999-2003  The PUMA developer team.
3518
3657
//                                                                
3535
3674
#define __c_comment_recognizer_h__
3536
3675
 
3537
3676
 
3538
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
 
3677
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
3539
3678
// This file is part of PUMA.
3540
3679
// Copyright (C) 1999-2003  The PUMA developer team.
3541
3680
//                                                                
3562
3701
// generated mapping table
3563
3702
 
3564
3703
 
3565
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/OrangeRecognizer.h"
 
3704
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/OrangeRecognizer.h"
3566
3705
// This file is part of PUMA.
3567
3706
// Copyright (C) 1999-2003  The PUMA developer team.
3568
3707
//                                                                
3688
3827
 
3689
3828
#endif /* __orange_recognizer_h__ */
3690
3829
 
3691
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
 
3830
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/MappedOrangeRecognizer.h"
3692
3831
namespace Puma {
3693
3832
 
3694
3833
 
3723
3862
 
3724
3863
#endif // __mapped_orange_recognizer_h__
3725
3864
 
3726
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
3865
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
3727
3866
namespace Puma {
3728
3867
 
3729
3868
 
3730
3869
 
3731
 
#line 3732 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3870
#line 3871 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3732
3871
} // closed Puma
3733
3872
class CCExprResolve;
3734
3873
class CExprResolve;
3751
3890
class CMatchSyntax;
3752
3891
namespace Puma {
3753
3892
 
3754
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
3893
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
3755
3894
class CCommentRecognizer {
3756
 
#line 3757 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3895
#line 3896 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3757
3896
  friend class ::CCExprResolve;
3758
3897
  friend class ::CExprResolve;
3759
3898
  friend class ::WinIfExists;
3774
3913
  friend class ::PragmaOnce;
3775
3914
  friend class ::CMatchSyntax;
3776
3915
 
3777
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
3916
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
3778
3917
 
3779
3918
public:
3780
3919
  typedef enum { NO_COMMENT, SL_COMMENT, ML_COMMENT } Mode;
3798
3937
  const void *__attr (unsigned __i) const {
3799
3938
    switch (__i) { default: return 0; }
3800
3939
  }
3801
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
 
3940
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CCommentRecognizer.h"
3802
3941
};
3803
3942
 
3804
3943
 
3806
3945
 
3807
3946
#endif /* __c_comment_recognizer_h__ */
3808
3947
 
3809
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
3948
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
3810
3949
// This file is part of PUMA.
3811
3950
// Copyright (C) 1999-2003  The PUMA developer team.
3812
3951
//                                                                
3829
3968
#define __keyword_recognizer_h__
3830
3969
 
3831
3970
 
3832
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
3971
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
3833
3972
namespace Puma {
3834
3973
 
3835
3974
 
3836
3975
 
3837
 
#line 3838 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
3976
#line 3977 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3838
3977
} // closed Puma
3839
3978
class CCExprResolve;
3840
3979
class CExprResolve;
3857
3996
class CMatchSyntax;
3858
3997
namespace Puma {
3859
3998
 
3860
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
3999
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
3861
4000
class KeywordRecognizer {
3862
 
#line 3863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4001
#line 4002 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3863
4002
  friend class ::CCExprResolve;
3864
4003
  friend class ::CExprResolve;
3865
4004
  friend class ::WinIfExists;
3880
4019
  friend class ::PragmaOnce;
3881
4020
  friend class ::CMatchSyntax;
3882
4021
 
3883
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
4022
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
3884
4023
 
3885
4024
protected:
3886
4025
  virtual MappedOrangeRecognizer<CScanBuffer> &recognizer() = 0;
3896
4035
  const void *__attr (unsigned __i) const {
3897
4036
    switch (__i) { default: return 0; }
3898
4037
  }
3899
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
 
4038
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/KeywordRecognizer.h"
3900
4039
};
3901
4040
 
3902
4041
 
3904
4043
 
3905
4044
#endif /* __keyword_recognizer_h__ */
3906
4045
 
3907
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
4046
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
3908
4047
namespace Puma {
3909
4048
 
3910
4049
 
3911
4050
 
3912
 
#line 3913 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4051
#line 4052 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3913
4052
} // closed Puma
3914
4053
class CCExprResolve;
3915
4054
class CExprResolve;
3932
4071
class CMatchSyntax;
3933
4072
namespace Puma {
3934
4073
 
3935
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
4074
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
3936
4075
class CRecognizer {
3937
 
#line 3938 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4076
#line 4077 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
3938
4077
  friend class ::CCExprResolve;
3939
4078
  friend class ::CExprResolve;
3940
4079
  friend class ::WinIfExists;
3955
4094
  friend class ::PragmaOnce;
3956
4095
  friend class ::CMatchSyntax;
3957
4096
 
3958
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
4097
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
3959
4098
 
3960
4099
  CCommentRecognizer comment_recognizer;
3961
4100
  Array<KeywordRecognizer*> additional_keyword_recognizers;
3969
4108
 
3970
4109
  CRecognizer () : directives(true), wildcards (false),
3971
4110
    aspectc (false), macro_ops (false),
3972
 
    std_c (true), std_cplusplus (true) {}
3973
 
  void allow_directives (bool flag = true)    { directives = flag; }
3974
 
  void allow_wildcards (bool flag = true)     { wildcards = flag; }
3975
 
  void allow_aspectc (bool flag = true)       { aspectc   = flag; } 
3976
 
  void allow_macro_ops (bool flag = true)     { macro_ops = flag; }
3977
 
  void allow_std_c (bool flag = true)         { std_c = flag; }
3978
 
  void allow_std_cplusplus (bool flag = true) { std_cplusplus = flag; }
 
4111
    std_c (true), std_cplusplus (true),
 
4112
    gnu_c (false), gnu_cplusplus (false),
 
4113
    visual_c (false), visual_cplusplus (false),
 
4114
    type_traits (false) {}
 
4115
 
 
4116
  void allow_directives (bool flag = true)       { directives = flag; }
 
4117
  void allow_wildcards (bool flag = true)        { wildcards = flag; }
 
4118
  void allow_aspectc (bool flag = true)          { aspectc   = flag; } 
 
4119
  void allow_macro_ops (bool flag = true)        { macro_ops = flag; }
 
4120
  void allow_std_c (bool flag = true)            { std_c = flag; }
 
4121
  void allow_std_cplusplus (bool flag = true)    { std_cplusplus = flag; }
 
4122
  void allow_gnu_c (bool flag = true)            { gnu_c = flag; }
 
4123
  void allow_gnu_cplusplus (bool flag = true)    { gnu_cplusplus = flag; }
 
4124
  void allow_visual_c (bool flag = true)         { visual_c = flag; }
 
4125
  void allow_visual_cplusplus (bool flag = true) { visual_cplusplus = flag; }
 
4126
  void allow_type_traits (bool flag = true)      { type_traits = flag; }
 
4127
 
3979
4128
  void setup ();
3980
4129
  int recognize (Lang &lang, int &expr, int &len);
3981
4130
  Mode mode () const { return scan_mode; }
3999
4148
  bool macro_ops;
4000
4149
  bool std_c;
4001
4150
  bool std_cplusplus;
 
4151
  bool gnu_c;
 
4152
  bool gnu_cplusplus;
 
4153
  bool visual_c;
 
4154
  bool visual_cplusplus;
 
4155
  bool type_traits;
4002
4156
public:
4003
 
  typedef AC::TL<Puma::CCommentRecognizer,AC::TL<Puma::Array< Puma::KeywordRecognizer * >,AC::TL<Puma::CScanBuffer,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TLE > > > > > > > > > __AttrTypes;
 
4157
  typedef AC::TL<Puma::CCommentRecognizer,AC::TL<Puma::Array< Puma::KeywordRecognizer * >,AC::TL<Puma::CScanBuffer,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TLE > > > > > > > > > > > > > > __AttrTypes;
4004
4158
  const char *__attr_name (unsigned i) const {
4005
 
    static const char *names[] = { "comment_recognizer", "additional_keyword_recognizers", "scan_buffer", "directives", "wildcards", "aspectc", "macro_ops", "std_c", "std_cplusplus" }; return names[i];
 
4159
    static const char *names[] = { "comment_recognizer", "additional_keyword_recognizers", "scan_buffer", "directives", "wildcards", "aspectc", "macro_ops", "std_c", "std_cplusplus", "gnu_c", "gnu_cplusplus", "visual_c", "visual_cplusplus", "type_traits" }; return names[i];
4006
4160
  }
4007
4161
  const void *__attr (unsigned __i) const {
4008
 
    switch (__i) { case 0: return &comment_recognizer; case 2: return &additional_keyword_recognizers; case 3: return &scan_buffer; case 30: return &directives; case 31: return &wildcards; case 32: return &aspectc; case 33: return &macro_ops; case 34: return &std_c; case 35: return &std_cplusplus; default: return 0; }
 
4162
    switch (__i) { case 0: return &comment_recognizer; case 2: return &additional_keyword_recognizers; case 3: return &scan_buffer; case 30: return &directives; case 31: return &wildcards; case 32: return &aspectc; case 33: return &macro_ops; case 34: return &std_c; case 35: return &std_cplusplus; case 36: return &gnu_c; case 37: return &gnu_cplusplus; case 38: return &visual_c; case 39: return &visual_cplusplus; case 40: return &type_traits; default: return 0; }
4009
4163
  }
4010
 
#line 73 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
 
4164
#line 88 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CRecognizer.h"
4011
4165
};
4012
4166
 
4013
4167
 
4015
4169
 
4016
4170
#endif /* __c_recognizer_h__ */
4017
4171
 
4018
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/LanguageID.h"
 
4172
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/LanguageID.h"
4019
4173
// This file is part of PUMA.
4020
4174
// Copyright (C) 1999-2003  The PUMA developer team.
4021
4175
//                                                                
4043
4197
 
4044
4198
 
4045
4199
 
4046
 
#line 4047 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4200
#line 4201 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4047
4201
} // closed Puma
4048
4202
class CCExprResolve;
4049
4203
class CExprResolve;
4066
4220
class CMatchSyntax;
4067
4221
namespace Puma {
4068
4222
 
4069
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/LanguageID.h"
 
4223
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/LanguageID.h"
4070
4224
class LanguageID {
4071
 
#line 4072 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4225
#line 4226 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4072
4226
  friend class ::CCExprResolve;
4073
4227
  friend class ::CExprResolve;
4074
4228
  friend class ::WinIfExists;
4089
4243
  friend class ::PragmaOnce;
4090
4244
  friend class ::CMatchSyntax;
4091
4245
 
4092
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/LanguageID.h"
 
4246
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/LanguageID.h"
4093
4247
 
4094
4248
  const char *_id;
4095
4249
 
4107
4261
  const void *__attr (unsigned __i) const {
4108
4262
    switch (__i) { case 0: return &_id; default: return 0; }
4109
4263
  }
4110
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/LanguageID.h"
 
4264
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/LanguageID.h"
4111
4265
};
4112
4266
 
4113
4267
 
4115
4269
 
4116
4270
#endif /* __language_id_h__ */
4117
4271
 
4118
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
4272
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
4119
4273
// This file is part of PUMA.
4120
4274
// Copyright (C) 1999-2003  The PUMA developer team.
4121
4275
//                                                                
4141
4295
// form tokens, which used to fill a "Unit".
4142
4296
 
4143
4297
 
4144
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Source.h"
 
4298
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Source.h"
4145
4299
// This file is part of PUMA.
4146
4300
// Copyright (C) 1999-2003  The PUMA developer team.
4147
4301
//                                                                
4167
4321
 
4168
4322
 
4169
4323
 
4170
 
#line 4171 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4324
#line 4325 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4171
4325
} // closed Puma
4172
4326
class CCExprResolve;
4173
4327
class CExprResolve;
4190
4344
class CMatchSyntax;
4191
4345
namespace Puma {
4192
4346
 
4193
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Source.h"
 
4347
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Source.h"
4194
4348
class Source {
4195
 
#line 4196 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4349
#line 4350 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4196
4350
  friend class ::CCExprResolve;
4197
4351
  friend class ::CExprResolve;
4198
4352
  friend class ::WinIfExists;
4213
4367
  friend class ::PragmaOnce;
4214
4368
  friend class ::CMatchSyntax;
4215
4369
 
4216
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Source.h"
 
4370
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Source.h"
4217
4371
 
4218
4372
public:
4219
4373
  Source () {}
4224
4378
  typedef AC::TLE __AttrTypes;
4225
4379
  const char *__attr_name (unsigned i) const { return 0; }
4226
4380
  const void *__attr (unsigned __i) const { return 0; }
4227
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Source.h"
 
4381
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Source.h"
4228
4382
};
4229
4383
 
4230
4384
 
4232
4386
 
4233
4387
#endif /* __source_h__ */
4234
4388
 
4235
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
4389
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Unit.h"
4236
4390
// This file is part of PUMA.
4237
4391
// Copyright (C) 1999-2003  The PUMA developer team.
4238
4392
//                                                                
4258
4412
 *  Token chain abstraction. */
4259
4413
 
4260
4414
 
4261
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
4415
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/List.h"
4262
4416
// This file is part of PUMA.
4263
4417
// Copyright (C) 1999-2003  The PUMA developer team.
4264
4418
//                                                                
4284
4438
 *  Double-linked list implementation. */
4285
4439
 
4286
4440
 
4287
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
4441
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ListElement.h"
4288
4442
// This file is part of PUMA.
4289
4443
// Copyright (C) 1999-2003  The PUMA developer team.
4290
4444
//                                                                
4321
4475
 *  Double-linked list element type to be used as elements
4322
4476
 *  for Puma::List. To be derived for concrete list elements. */
4323
4477
 
4324
 
#line 4325 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4478
#line 4479 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4325
4479
} // closed Puma
4326
4480
class CCExprResolve;
4327
4481
class CExprResolve;
4344
4498
class CMatchSyntax;
4345
4499
namespace Puma {
4346
4500
 
4347
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
4501
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ListElement.h"
4348
4502
class ListElement {
4349
 
#line 4350 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4503
#line 4504 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4350
4504
  friend class ::CCExprResolve;
4351
4505
  friend class ::CExprResolve;
4352
4506
  friend class ::WinIfExists;
4367
4521
  friend class ::PragmaOnce;
4368
4522
  friend class ::CMatchSyntax;
4369
4523
 
4370
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
4524
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ListElement.h"
4371
4525
 
4372
4526
  friend class List;
4373
4527
 
4394
4548
  const void *__attr (unsigned __i) const {
4395
4549
    switch (__i) { case 0: return &_belonging_to; case 1: return &_next; case 2: return &_prev; default: return 0; }
4396
4550
  }
4397
 
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ListElement.h"
 
4551
#line 54 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ListElement.h"
4398
4552
};
4399
4553
 
4400
4554
 
4402
4556
 
4403
4557
#endif /* __list_element_h__ */
4404
4558
 
4405
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
4559
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/List.h"
4406
4560
namespace Puma {
4407
4561
 
4408
4562
 
4409
4563
/** \class List List.h Puma/List.h
4410
4564
 *  Double-linked list implementation. */
4411
4565
 
4412
 
#line 4413 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4566
#line 4567 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4413
4567
} // closed Puma
4414
4568
class CCExprResolve;
4415
4569
class CExprResolve;
4432
4586
class CMatchSyntax;
4433
4587
namespace Puma {
4434
4588
 
4435
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
4589
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/List.h"
4436
4590
class List {
4437
 
#line 4438 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4591
#line 4592 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4438
4592
  friend class ::CCExprResolve;
4439
4593
  friend class ::CExprResolve;
4440
4594
  friend class ::WinIfExists;
4455
4609
  friend class ::PragmaOnce;
4456
4610
  friend class ::CMatchSyntax;
4457
4611
 
4458
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
4612
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/List.h"
4459
4613
 
4460
4614
  ListElement *_first;
4461
4615
  ListElement *_last;
4561
4715
  const void *__attr (unsigned __i) const {
4562
4716
    switch (__i) { case 0: return &_first; case 1: return &_last; default: return 0; }
4563
4717
  }
4564
 
#line 129 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/List.h"
 
4718
#line 129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/List.h"
4565
4719
};
4566
4720
 
4567
4721
 
4569
4723
 
4570
4724
#endif /* __list_h__ */
4571
4725
 
4572
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
4726
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4573
4727
 
4574
 
#line 4575 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4728
#line 4729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4575
4729
 
4576
4730
#ifndef __ac_fwd_PragmaOnceUnitState__
4577
4731
#define __ac_fwd_PragmaOnceUnitState__
4584
4738
}
4585
4739
#endif
4586
4740
 
4587
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
4588
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
4741
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
4742
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
4589
4743
#endif
4590
4744
 
4591
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
4745
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4592
4746
// This file is part of PUMA.
4593
4747
// Copyright (C) 1999-2003  The PUMA developer team.
4594
4748
//                                                                
4620
4774
 
4621
4775
 
4622
4776
 
4623
 
#line 4624 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4777
#line 4778 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4624
4778
} // closed Puma
4625
4779
class CCExprResolve;
4626
4780
class CExprResolve;
4643
4797
class CMatchSyntax;
4644
4798
namespace Puma {
4645
4799
 
4646
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
4800
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4647
4801
 
4648
 
#line 4649 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4802
#line 4803 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4649
4803
} // closed Puma
4650
4804
 
4651
 
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
4652
 
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
4805
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
4806
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
4653
4807
 
4654
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4808
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4655
4809
// This file is part of PUMA.
4656
4810
// Copyright (C) 1999-2003  The PUMA developer team.
4657
4811
//                                                                
4674
4828
#define __PragmaOnceUnitState__
4675
4829
 
4676
4830
 
4677
 
#line 4678 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4831
#line 4832 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4678
4832
class CCExprResolve;
4679
4833
class CExprResolve;
4680
4834
class WinIfExists;
4694
4848
class PragmaOnce;
4695
4849
class CMatchSyntax;
4696
4850
 
4697
 
#line 22 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4851
#line 22 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4698
4852
class PragmaOnceUnitState {
4699
 
#line 4700 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4853
#line 4854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4700
4854
 
4701
4855
public:
4702
4856
  static PragmaOnceUnitState *aspectof () {
4708
4862
  }
4709
4863
private:
4710
4864
 
4711
 
#line 22 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4865
#line 22 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4712
4866
 
4713
 
#line 4714 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4867
#line 4868 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4714
4868
  friend class ::CCExprResolve;
4715
4869
  friend class ::CExprResolve;
4716
4870
  friend class ::WinIfExists;
4730
4884
  friend class ::PragmaOnce;
4731
4885
  friend class ::CMatchSyntax;
4732
4886
 
4733
 
#line 22 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4887
#line 22 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4734
4888
 
4735
4889
  /******************************************************/
4736
4890
  /* specific #pragma once unit state                   */
4738
4892
 
4739
4893
  // pointcut definitions
4740
4894
  
4741
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4895
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4742
4896
 
4743
4897
 
4744
4898
  
4745
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4899
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4746
4900
 
4747
4901
  
4748
4902
  // initialize new state flag
4749
4903
  
4750
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4904
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4751
4905
 
4752
4906
public: template<class JoinPoint> void __a0_after 
4753
 
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4907
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4754
4908
 
4755
 
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4909
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4756
4910
(JoinPoint *tjp)
4757
 
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4911
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4758
4912
 {
4759
 
#line 4760 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4913
#line 4914 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4760
4914
 
4761
4915
  JoinPoint *&thisJoinPoint = tjp;
4762
4916
 
4763
 
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4917
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4764
4918
 
4765
 
#line 4766 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4919
#line 4920 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4766
4920
 
4767
4921
  typedef typename JoinPoint::That __JP_That;
4768
4922
  typedef typename JoinPoint::Target __JP_Target;
4769
4923
  typedef typename JoinPoint::Result __JP_Result;
4770
4924
 
4771
 
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4925
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4772
4926
 
4773
4927
    thisJoinPoint->that ()->_once = false;
4774
4928
  }
4775
 
#line 4776 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4929
#line 4930 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4776
4930
 
4777
4931
private:
4778
4932
 
4779
 
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4933
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4780
4934
 
4781
4935
  
4782
4936
  // initialize new flag for all managed units 
4783
4937
  
4784
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4938
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4785
4939
 
4786
4940
public: template<class JoinPoint> void __a1_after 
4787
 
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4941
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4788
4942
 
4789
 
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4943
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4790
4944
(JoinPoint *tjp)
4791
 
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4945
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4792
4946
 {
4793
 
#line 4794 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4947
#line 4948 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4794
4948
 
4795
4949
  typedef typename JoinPoint::That __JP_That;
4796
4950
  typedef typename JoinPoint::Target __JP_Target;
4797
4951
  typedef typename JoinPoint::Result __JP_Result;
4798
4952
 
4799
 
#line 45 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4953
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4800
4954
 
4801
4955
    // go through the whole unit hash table and reset the 
4802
4956
    // `#pragma once' state of the units
4803
4957
    typename __JP_That
4804
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4958
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4805
4959
::UMapIter iter;
4806
4960
    for (iter = tjp->that()->_umap.begin (); iter != tjp->that()->_umap.end (); ++iter)
4807
4961
      (*iter).second->state ().onlyOnce (false);
4808
4962
  }
4809
 
#line 4810 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4963
#line 4964 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4810
4964
 
4811
4965
private:
4812
4966
 
4813
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4967
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4814
4968
 
4815
4969
 
4816
4970
protected:
4820
4974
  typedef AC::TLE __AttrTypes;
4821
4975
  const char *__attr_name (unsigned i) const { return 0; }
4822
4976
  const void *__attr (unsigned __i) const { return 0; }
4823
 
#line 56 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4977
#line 56 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4824
4978
};
4825
 
#line 4826 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
4979
#line 4980 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4826
4980
 
4827
4981
namespace AC {
4828
4982
  template <class JoinPoint>
4835
4989
  }
4836
4990
4837
4991
 
4838
 
#line 56 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
4992
#line 56 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4839
4993
 
4840
4994
 
4841
4995
 
4842
4996
#endif /* __PragmaOnceUnitState__ */
4843
4997
 
4844
 
#line 8 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
4998
#line 8 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4845
4999
#endif
4846
5000
namespace Puma {
4847
5001
 
4848
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
5002
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4849
5003
class UnitState {
4850
 
#line 4851 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5004
#line 5005 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4851
5005
  friend class ::CCExprResolve;
4852
5006
  friend class ::CExprResolve;
4853
5007
  friend class ::WinIfExists;
4868
5022
  friend class ::PragmaOnce;
4869
5023
  friend class ::CMatchSyntax;
4870
5024
 
4871
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
5025
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4872
5026
 
4873
5027
  bool _modified;
4874
5028
  bool _updated;
4876
5030
      
4877
5031
public:
4878
5032
  
4879
 
#line 4880 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5033
#line 5034 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4880
5034
public: __attribute__((always_inline)) inline void __exec_old_C1();
4881
5035
 
4882
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
5036
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4883
5037
UnitState ();
4884
5038
      
4885
5039
  bool isModified () const;
4893
5047
  void updated ();
4894
5048
   private:
4895
5049
 
4896
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
 
5050
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnceUnitState.ah"
4897
5051
 bool _once ;
4898
5052
public :
4899
5053
 
4906
5060
  const void *__attr (unsigned __i) const {
4907
5061
    switch (__i) { case 0: return &_modified; case 1: return &_updated; case 2: return &_lastModified; case 3: return &_once; default: return 0; }
4908
5062
  }
4909
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
5063
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4910
5064
 
4911
 
#line 4912 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5065
#line 5066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4912
5066
 
4913
5067
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 {
4914
5068
  typedef TJP__ZN4Puma9UnitStateC1ERKN4PumaE9UnitState_0 __TJP;
4917
5071
  typedef TTarget Target;
4918
5072
  enum { ARGS = TArgs::ARGS };
4919
5073
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
4920
 
  static const int JPID = 3873;
 
5074
  static const int JPID = 3984;
4921
5075
  static const AC::JPType JPTYPE = (AC::JPType)16;
4922
5076
  struct Res {
4923
5077
    typedef void Type;
4931
5085
};
4932
5086
 
4933
5087
 
4934
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
5088
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4935
5089
 
4936
 
#line 4937 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5090
#line 5091 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4937
5091
 
4938
5092
public:
4939
5093
inline UnitState (const Puma::UnitState & arg0) : _modified (arg0._modified), _updated (arg0._updated), _lastModified (arg0._lastModified), _once (arg0._once) {
4944
5098
 
4945
5099
}
4946
5100
 
4947
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
5101
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4948
5102
};
4949
5103
 
4950
5104
 
4951
 
#line 4952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5105
#line 5106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4952
5106
 
4953
5107
 
4954
5108
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma9UnitStateC1Ev_0 {
4958
5112
  typedef TTarget Target;
4959
5113
  enum { ARGS = TArgs::ARGS };
4960
5114
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
4961
 
  static const int JPID = 3849;
 
5115
  static const int JPID = 3960;
4962
5116
  static const AC::JPType JPTYPE = (AC::JPType)16;
4963
5117
  struct Res {
4964
5118
    typedef void Type;
4972
5126
};
4973
5127
 
4974
5128
 
4975
 
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
5129
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4976
5130
inline UnitState::UnitState ()
4977
5131
 
4978
 
#line 4979 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5132
#line 5133 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
4979
5133
{
4980
5134
  typedef TJP__ZN4Puma9UnitStateC1Ev_0< void, ::Puma::UnitState , ::Puma::UnitState ,  AC::TLE > __TJP;
4981
5135
    __TJP tjp;
4985
5139
  
4986
5140
}
4987
5141
__attribute__((always_inline)) inline void Puma::UnitState::__exec_old_C1()
4988
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitState.h"
 
5142
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitState.h"
4989
5143
{ _modified = false; _updated = false; _lastModified = 0; }
4990
5144
 
4991
5145
inline bool UnitState::isModified () const 
5009
5163
 
5010
5164
#endif /* __UnitState__ */
5011
5165
 
5012
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
5166
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Unit.h"
5013
5167
namespace Puma {
5014
5168
 
5015
5169
 
5042
5196
 * file.close();
5043
5197
 *  \endcode */
5044
5198
 
5045
 
#line 5046 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5199
#line 5200 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5046
5200
} // closed Puma
5047
5201
class CCExprResolve;
5048
5202
class CExprResolve;
5065
5219
class CMatchSyntax;
5066
5220
namespace Puma {
5067
5221
 
5068
 
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
5222
#line 60 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Unit.h"
5069
5223
class Unit : public List, public Printable {
5070
 
#line 5071 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5224
#line 5225 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5071
5225
  friend class ::CCExprResolve;
5072
5226
  friend class ::CExprResolve;
5073
5227
  friend class ::WinIfExists;
5088
5242
  friend class ::PragmaOnce;
5089
5243
  friend class ::CMatchSyntax;
5090
5244
 
5091
 
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
5245
#line 60 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Unit.h"
5092
5246
 
5093
5247
  char *_name;
5094
5248
  UnitState _state;
5113
5267
  virtual bool isFile () const { return false; }
5114
5268
  /** Check if this is a unit for a macro expansion. */
5115
5269
  virtual bool isMacroExp () const { return false; }
 
5270
  /** Check if this is a unit for a template instance. */
 
5271
  virtual bool isTemplateInstance () const { return false; }
5116
5272
  /** Get the state of the unit. */
5117
5273
  UnitState &state () { return _state; }
5118
5274
 
5137
5293
  const void *__attr (unsigned __i) const {
5138
5294
    switch (__i) { case 0: return &_name; case 1: return &_state; default: return 0; }
5139
5295
  }
5140
 
#line 100 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Unit.h"
 
5296
#line 102 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Unit.h"
5141
5297
};
5142
5298
 
5143
5299
 
5145
5301
 
5146
5302
#endif /* __unit_h__ */
5147
5303
 
5148
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
5304
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
5149
5305
namespace Puma {
5150
5306
 
5151
5307
 
5152
5308
 
5153
 
#line 5154 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5309
#line 5310 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5154
5310
} // closed Puma
5155
5311
class CCExprResolve;
5156
5312
class CExprResolve;
5173
5329
class CMatchSyntax;
5174
5330
namespace Puma {
5175
5331
 
5176
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
5332
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
5177
5333
class Tokenizer {
5178
 
#line 5179 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5334
#line 5335 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5179
5335
  friend class ::CCExprResolve;
5180
5336
  friend class ::CExprResolve;
5181
5337
  friend class ::WinIfExists;
5196
5352
  friend class ::PragmaOnce;
5197
5353
  friend class ::CMatchSyntax;
5198
5354
 
5199
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
5355
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
5200
5356
 
5201
5357
public:
5202
5358
  virtual ~Tokenizer () {}
5205
5361
  typedef AC::TLE __AttrTypes;
5206
5362
  const char *__attr_name (unsigned i) const { return 0; }
5207
5363
  const void *__attr (unsigned __i) const { return 0; }
5208
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
 
5364
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Tokenizer.h"
5209
5365
};
5210
5366
 
5211
5367
 
5213
5369
 
5214
5370
#endif /* __Tokenizer_h__ */
5215
5371
 
5216
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5372
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5217
5373
namespace Puma {
5218
5374
 
5219
5375
 
5220
5376
class Token;
5221
5377
 
5222
5378
 
5223
 
#line 5224 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5379
#line 5380 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5224
5380
} // closed Puma
5225
5381
class CCExprResolve;
5226
5382
class CExprResolve;
5243
5399
class CMatchSyntax;
5244
5400
namespace Puma {
5245
5401
 
5246
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5402
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5247
5403
class CScanner : public CRecognizer, public Tokenizer {
5248
 
#line 5249 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5404
#line 5405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5249
5405
  friend class ::CCExprResolve;
5250
5406
  friend class ::CExprResolve;
5251
5407
  friend class ::WinIfExists;
5266
5422
  friend class ::PragmaOnce;
5267
5423
  friend class ::CMatchSyntax;
5268
5424
 
5269
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5425
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5270
5426
 
5271
5427
  Location loc;
5272
5428
  ErrorSink &err;
5279
5435
public:
5280
5436
  CScanner (ErrorSink &error_stream) : err (error_stream) {}
5281
5437
  virtual ~CScanner () {}
5282
 
  void configure (const Config &);
5283
 
  
5284
 
#line 5285 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5438
  
 
5439
#line 5440 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
5440
public: __attribute__((always_inline)) inline void __exec_old_configure(const ::Puma::Config & );
 
5441
 
 
5442
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5443
void configure (const Config &);
 
5444
  
 
5445
#line 5446 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5285
5446
public: __attribute__((always_inline)) inline void __exec_old_fill_unit(::Puma::Source & in,::Puma::Unit & unit);
5286
5447
 
5287
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5448
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5288
5449
void fill_unit (Source &in, Unit &unit);
5289
5450
  
5290
 
#line 5291 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5451
#line 5452 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5291
5452
public: __attribute__((always_inline)) inline void __exec_old_fill_unit(const char * in,::Puma::Unit & unit);
5292
5453
 
5293
 
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5454
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5294
5455
void fill_unit (const char *in, Unit &unit);
5295
5456
public:
5296
5457
  typedef AC::TL<Puma::Location,AC::TL<Puma::ErrorSink &,AC::TLE > > __AttrTypes;
5300
5461
  const void *__attr (unsigned __i) const {
5301
5462
    switch (__i) { case 0: return &loc; case 1: return &err; default: return 0; }
5302
5463
  }
5303
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5464
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5304
5465
};
5305
5466
 
5306
5467
 
5308
5469
 
5309
5470
#endif /* __c_scanner_h__ */
5310
5471
 
5311
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnit.h"
 
5472
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CUnit.h"
5312
5473
// This file is part of PUMA.
5313
5474
// Copyright (C) 1999-2003  The PUMA developer team.
5314
5475
//                                                                
5334
5495
 *  C/C++ token chain. */
5335
5496
 
5336
5497
 
5337
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5498
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5338
5499
 
5339
 
#line 5340 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5500
#line 5501 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5340
5501
 
5341
5502
#ifndef __ac_fwd_ExtACKeywords__
5342
5503
#define __ac_fwd_ExtACKeywords__
5351
5512
}
5352
5513
#endif
5353
5514
 
5354
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
5355
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
5356
 
#endif
5357
 
 
5358
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5515
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
5516
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
5517
#endif
 
5518
 
 
5519
#ifndef __ac_fwd_ExtGnu__
 
5520
#define __ac_fwd_ExtGnu__
 
5521
class ExtGnu;
 
5522
namespace AC {
 
5523
  template <class JoinPoint>
 
5524
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
5525
  template <class JoinPoint>
 
5526
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
5527
  template <class JoinPoint>
 
5528
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_around (JoinPoint *tjp);
 
5529
  template <class JoinPoint>
 
5530
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_after (JoinPoint *tjp);
 
5531
  template <class JoinPoint>
 
5532
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
5533
  template <class JoinPoint>
 
5534
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
5535
  template <class JoinPoint>
 
5536
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
5537
  template <class JoinPoint>
 
5538
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
5539
  template <class JoinPoint>
 
5540
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_around (JoinPoint *tjp);
 
5541
  template <class JoinPoint>
 
5542
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
5543
  template <class JoinPoint>
 
5544
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
5545
  template <class JoinPoint>
 
5546
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_after (JoinPoint *tjp);
 
5547
  template <class JoinPoint>
 
5548
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
5549
  template <class JoinPoint>
 
5550
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_before (JoinPoint *tjp);
 
5551
  template <class JoinPoint>
 
5552
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
5553
  template <class JoinPoint>
 
5554
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
5555
  template <class JoinPoint>
 
5556
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
5557
  template <class JoinPoint>
 
5558
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
5559
  template <class JoinPoint>
 
5560
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_after (JoinPoint *tjp);
 
5561
  template <class JoinPoint>
 
5562
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_after (JoinPoint *tjp);
 
5563
  template <class JoinPoint>
 
5564
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_before (JoinPoint *tjp);
 
5565
  template <class JoinPoint>
 
5566
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a21_around (JoinPoint *tjp);
 
5567
  template <class JoinPoint>
 
5568
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a22_after (JoinPoint *tjp);
 
5569
  template <class JoinPoint>
 
5570
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a23_before (JoinPoint *tjp);
 
5571
  template <class JoinPoint>
 
5572
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a24_around (JoinPoint *tjp);
 
5573
  template <class JoinPoint>
 
5574
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a25_after (JoinPoint *tjp);
 
5575
}
 
5576
#endif
 
5577
 
 
5578
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
5579
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
5580
#endif
 
5581
 
 
5582
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5359
5583
// This file is part of PUMA.
5360
5584
// Copyright (C) 1999-2003  The PUMA developer team.
5361
5585
//                                                                
5392
5616
class Token;
5393
5617
 
5394
5618
 
5395
 
#line 5396 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5619
#line 5620 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5396
5620
} // closed Puma
5397
5621
class CCExprResolve;
5398
5622
class CExprResolve;
5415
5639
class CMatchSyntax;
5416
5640
namespace Puma {
5417
5641
 
5418
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5642
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5419
5643
class CScanner : public CRecognizer, public Tokenizer {
5420
 
#line 5421 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5644
#line 5645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5421
5645
  friend class ::CCExprResolve;
5422
5646
  friend class ::CExprResolve;
5423
5647
  friend class ::WinIfExists;
5438
5662
  friend class ::PragmaOnce;
5439
5663
  friend class ::CMatchSyntax;
5440
5664
 
5441
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5665
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5442
5666
 
5443
5667
  Location loc;
5444
5668
  ErrorSink &err;
5451
5675
public:
5452
5676
  CScanner (ErrorSink &error_stream) : err (error_stream) {}
5453
5677
  virtual ~CScanner () {}
5454
 
  void configure (const Config &);
5455
 
  
5456
 
#line 5457 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5678
  
 
5679
#line 5680 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
5680
public: __attribute__((always_inline)) inline void __exec_old_configure(const ::Puma::Config & );
 
5681
 
 
5682
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5683
void configure (const Config &);
 
5684
  
 
5685
#line 5686 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5457
5686
public: __attribute__((always_inline)) inline void __exec_old_fill_unit(::Puma::Source & in,::Puma::Unit & unit);
5458
5687
 
5459
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5688
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5460
5689
void fill_unit (Source &in, Unit &unit);
5461
5690
  
5462
 
#line 5463 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5691
#line 5692 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5463
5692
public: __attribute__((always_inline)) inline void __exec_old_fill_unit(const char * in,::Puma::Unit & unit);
5464
5693
 
5465
 
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5694
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5466
5695
void fill_unit (const char *in, Unit &unit);
5467
5696
public:
5468
5697
  typedef AC::TL<Puma::Location,AC::TL<Puma::ErrorSink &,AC::TLE > > __AttrTypes;
5472
5701
  const void *__attr (unsigned __i) const {
5473
5702
    switch (__i) { case 0: return &loc; case 1: return &err; default: return 0; }
5474
5703
  }
5475
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
5704
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
5476
5705
};
5477
5706
 
5478
5707
 
5480
5709
 
5481
5710
#endif /* __c_scanner_h__ */
5482
5711
 
5483
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnit.h"
 
5712
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CUnit.h"
5484
5713
using namespace std;
5485
5714
 
5486
5715
namespace Puma {
5506
5735
 * unit << "}\n" << Puma::endu;
5507
5736
 *  \endcode */
5508
5737
 
5509
 
#line 5510 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5738
#line 5739 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5510
5739
} // closed Puma
5511
5740
class CCExprResolve;
5512
5741
class CExprResolve;
5529
5758
class CMatchSyntax;
5530
5759
namespace Puma {
5531
5760
 
5532
 
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnit.h"
 
5761
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CUnit.h"
5533
5762
class CUnit : public Unit, public std::ostringstream {
5534
 
#line 5535 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5763
#line 5764 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5535
5764
  friend class ::CCExprResolve;
5536
5765
  friend class ::CExprResolve;
5537
5766
  friend class ::WinIfExists;
5552
5781
  friend class ::PragmaOnce;
5553
5782
  friend class ::CMatchSyntax;
5554
5783
 
5555
 
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnit.h"
 
5784
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CUnit.h"
5556
5785
 
5557
5786
  CScanner _scanner;
5558
5787
 
5575
5804
  const void *__attr (unsigned __i) const {
5576
5805
    switch (__i) { case 0: return &_scanner; default: return 0; }
5577
5806
  }
5578
 
#line 67 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CUnit.h"
 
5807
#line 67 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CUnit.h"
5579
5808
};
5580
5809
 
5581
5810
/** End-of-unit stream manipulator. Triggers scanning the 
5591
5820
 
5592
5821
#endif /* __c_unit_h__ */
5593
5822
 
5594
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenSource.h"
 
5823
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/TokenSource.h"
5595
5824
// This file is part of PUMA.
5596
5825
// Copyright (C) 1999-2003  The PUMA developer team.
5597
5826
//                                                                
5619
5848
class Token;
5620
5849
 
5621
5850
 
5622
 
#line 5623 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5851
#line 5852 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5623
5852
} // closed Puma
5624
5853
class CCExprResolve;
5625
5854
class CExprResolve;
5642
5871
class CMatchSyntax;
5643
5872
namespace Puma {
5644
5873
 
5645
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenSource.h"
 
5874
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/TokenSource.h"
5646
5875
class PumaTokenSource {
5647
 
#line 5648 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
5876
#line 5877 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5648
5877
  friend class ::CCExprResolve;
5649
5878
  friend class ::CExprResolve;
5650
5879
  friend class ::WinIfExists;
5665
5894
  friend class ::PragmaOnce;
5666
5895
  friend class ::CMatchSyntax;
5667
5896
 
5668
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenSource.h"
 
5897
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/TokenSource.h"
5669
5898
 
5670
5899
protected:
5671
5900
  PumaTokenSource () {}
5677
5906
  typedef AC::TLE __AttrTypes;
5678
5907
  const char *__attr_name (unsigned i) const { return 0; }
5679
5908
  const void *__attr (unsigned __i) const { return 0; }
5680
 
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/TokenSource.h"
 
5909
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/TokenSource.h"
5681
5910
};
5682
5911
 
5683
5912
 
5685
5914
 
5686
5915
#endif /* __Token_Source__ */
5687
5916
 
5688
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
 
5917
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
5689
5918
// This file is part of PUMA.
5690
5919
// Copyright (C) 1999-2003  The PUMA developer team.
5691
5920
//                                                                
5714
5943
using std::set;
5715
5944
 
5716
5945
 
5717
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
 
5946
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
5718
5947
// This file is part of PUMA.
5719
5948
// Copyright (C) 1999-2003  The PUMA developer team.
5720
5949
//                                                                
5737
5966
#define __pre_arg_desc__
5738
5967
 
5739
5968
 
5740
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
 
5969
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
5741
5970
// This file is part of PUMA.
5742
5971
// Copyright (C) 1999-2003  The PUMA developer team.
5743
5972
//                                                                
5762
5991
// Special unit for macro expansions
5763
5992
 
5764
5993
 
5765
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
5994
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Token.h"
5766
5995
// This file is part of PUMA.
5767
5996
// Copyright (C) 1999-2003  The PUMA developer team.
5768
5997
//                                                                
5789
6018
 
5790
6019
#include <stdlib.h>
5791
6020
 
5792
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
6021
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Token.h"
5793
6022
#include <assert.h>
5794
6023
 
5795
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
6024
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Token.h"
5796
6025
namespace Puma {
5797
6026
 
5798
6027
 
5810
6039
 *  \li the portion of the scanned text represented by this token
5811
6040
 *  \li the language of the token */
5812
6041
 
5813
 
#line 5814 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6042
#line 6043 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5814
6043
} // closed Puma
5815
6044
class CCExprResolve;
5816
6045
class CExprResolve;
5833
6062
class CMatchSyntax;
5834
6063
namespace Puma {
5835
6064
 
5836
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
6065
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Token.h"
5837
6066
class Token : public ListElement {
5838
 
#line 5839 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6067
#line 6068 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
5839
6068
  friend class ::CCExprResolve;
5840
6069
  friend class ::CExprResolve;
5841
6070
  friend class ::WinIfExists;
5856
6085
  friend class ::PragmaOnce;
5857
6086
  friend class ::CMatchSyntax;
5858
6087
 
5859
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
6088
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Token.h"
5860
6089
 
5861
6090
  int _type, _real_type;
5862
6091
 
5933
6162
  virtual ListElement *duplicate () { return new Token (*this); }
5934
6163
 
5935
6164
  /** Get the unit this token belongs to. */
5936
 
  Unit* unit () const { return (Unit*)belonging_to(); }
 
6165
  Unit* unit () const;
5937
6166
 
5938
6167
  /** Reset the token object.
5939
6168
   *  \param type The new token type.
5962
6191
   *  with a constant token text. 
5963
6192
   *  \return The static text or NULL for tokens with dynamic text (like identifiers). */
5964
6193
  char *get_static_text () const;
 
6194
  /** Get the static token text for the given token type. Only for keywords,
 
6195
   *  operators, and so on with a constant token text.
 
6196
   *  \return The static text or NULL for tokens with dynamic text (like identifiers). */
 
6197
  static char *get_static_text (int token_type);
5965
6198
  /** Get the type of the token (see Puma::CTokens). */
5966
6199
  int type () const                 { return _type; }
5967
6200
  /** Get the location of the token (usually the line and column in a file). */
6014
6247
  const void *__attr (unsigned __i) const {
6015
6248
    switch (__i) { case 0: return &_type; case 1: return &_real_type; case 2: return &_location; case 3: return &_language; case 4: return &_text; case 5: return &_dtext; case 7: return &_cont_lines; case 12: return &_flags; default: return 0; }
6016
6249
  }
6017
 
#line 200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Token.h"
 
6250
#line 204 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Token.h"
6018
6251
};
6019
6252
 
6020
6253
 
6063
6296
 
6064
6297
#endif /* __Token_h__ */
6065
6298
 
6066
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
 
6299
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
6067
6300
namespace Puma {
6068
6301
 
6069
6302
 
6070
6303
 
6071
 
#line 6072 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6304
#line 6305 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6072
6305
} // closed Puma
6073
6306
class CCExprResolve;
6074
6307
class CExprResolve;
6091
6324
class CMatchSyntax;
6092
6325
namespace Puma {
6093
6326
 
6094
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
 
6327
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
6095
6328
class MacroUnit : public Unit {
6096
 
#line 6097 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6329
#line 6330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6097
6330
  friend class ::CCExprResolve;
6098
6331
  friend class ::CExprResolve;
6099
6332
  friend class ::WinIfExists;
6114
6347
  friend class ::PragmaOnce;
6115
6348
  friend class ::CMatchSyntax;
6116
6349
 
6117
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
 
6350
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
6118
6351
 
6119
6352
  Unit *_CallingUnit;
6120
6353
  Token *_StartToken;
6152
6385
  const void *__attr (unsigned __i) const {
6153
6386
    switch (__i) { case 0: return &_CallingUnit; case 1: return &_StartToken; case 2: return &_EndToken; default: return 0; }
6154
6387
  }
6155
 
#line 59 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
 
6388
#line 59 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/MacroUnit.h"
6156
6389
};
6157
6390
 
6158
6391
 
6160
6393
 
6161
6394
#endif /* __MacroUnit__ */
6162
6395
 
6163
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
 
6396
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
6164
6397
namespace Puma {
6165
6398
 
6166
6399
 
6167
6400
 
6168
 
#line 6169 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6401
#line 6402 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6169
6402
} // closed Puma
6170
6403
class CCExprResolve;
6171
6404
class CExprResolve;
6188
6421
class CMatchSyntax;
6189
6422
namespace Puma {
6190
6423
 
6191
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
 
6424
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
6192
6425
class PreArgDesc {
6193
 
#line 6194 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6426
#line 6427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6194
6427
  friend class ::CCExprResolve;
6195
6428
  friend class ::CExprResolve;
6196
6429
  friend class ::WinIfExists;
6211
6444
  friend class ::PragmaOnce;
6212
6445
  friend class ::CMatchSyntax;
6213
6446
 
6214
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
 
6447
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
6215
6448
 
6216
6449
  // Collected arguments of a function-like macro.
6217
6450
  Array<MacroUnit> m_Args;
6241
6474
  const void *__attr (unsigned __i) const {
6242
6475
    switch (__i) { case 1: return &m_Args; case 2: return &m_Begin; case 3: return &m_End; default: return 0; }
6243
6476
  }
6244
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
 
6477
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreArgDesc.h"
6245
6478
};
6246
6479
 
6247
6480
 
6249
6482
 
6250
6483
#endif /* __pre_arg_desc__ */
6251
6484
 
6252
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
 
6485
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
6253
6486
namespace Puma {
6254
6487
 
6255
6488
 
6262
6495
class PreMacro;
6263
6496
 
6264
6497
 
6265
 
#line 6266 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6498
#line 6499 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6266
6499
} // closed Puma
6267
6500
class CCExprResolve;
6268
6501
class CExprResolve;
6285
6518
class CMatchSyntax;
6286
6519
namespace Puma {
6287
6520
 
6288
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
 
6521
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
6289
6522
class PreMacroExpander {
6290
 
#line 6291 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6523
#line 6524 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6291
6524
  friend class ::CCExprResolve;
6292
6525
  friend class ::CExprResolve;
6293
6526
  friend class ::WinIfExists;
6308
6541
  friend class ::PragmaOnce;
6309
6542
  friend class ::CMatchSyntax;
6310
6543
 
6311
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
 
6544
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
6312
6545
 
6313
6546
  TokenStream        *_scanner;
6314
6547
  PreMacroManager    *_macroManager;
6409
6642
  const void *__attr (unsigned __i) const {
6410
6643
    switch (__i) { case 0: return &_scanner; case 1: return &_macroManager; case 2: return &_unitManager; case 3: return &_err; case 5: return &_macroStack; case 6: return &_parser; case 7: return &_preexpander; case 8: return &_in_include; case 10: return &_prescanned; default: return 0; }
6411
6644
  }
6412
 
#line 135 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
 
6645
#line 135 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroExpander.h"
6413
6646
};
6414
6647
 
6415
6648
 
6417
6650
 
6418
6651
#endif /* __pre_macro_expander__ */
6419
6652
 
6420
 
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
6653
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
6421
6654
using namespace std;
6422
6655
 
6423
6656
namespace Puma {
6434
6667
class PrePredicateManager;
6435
6668
 
6436
6669
 
6437
 
#line 6438 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6670
#line 6671 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6438
6671
} // closed Puma
6439
6672
class CCExprResolve;
6440
6673
class CExprResolve;
6457
6690
class CMatchSyntax;
6458
6691
namespace Puma {
6459
6692
 
6460
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
6693
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
6461
6694
 
6462
 
#line 6463 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
6695
#line 6696 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6463
6696
} // closed Puma
6464
6697
 
6465
 
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
6466
 
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
6698
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
6699
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinIfExists_ah__
6467
6700
 
6468
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
6701
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6469
6702
// This file is part of PUMA.
6470
6703
// Copyright (C) 1999-2003  The PUMA developer team.
6471
6704
//                                                                
6492
6725
/********************************************************/
6493
6726
 
6494
6727
 
6495
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTokens.h"
 
6728
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTokens.h"
6496
6729
// This file is part of PUMA.
6497
6730
// Copyright (C) 1999-2003  The PUMA developer team.
6498
6731
//                                                                
6523
6756
/** Types of tokens for language C and C++. These types
6524
6757
 *  can be compared to Puma::Token::type(). */
6525
6758
enum CTokens {
6526
 
  // core tokens, i.e. numbers, operator symbols, brackets, etc.
 
6759
  //////// core tokens, i.e. numbers, operator symbols, brackets, etc.
6527
6760
 
6528
6761
  /** @ */
6529
6762
  TOK_AT = 100,
6637
6870
  TOK_ELLIPSIS,
6638
6871
 
6639
6872
  /** Core token group separator for the scanner! */
 
6873
  TOK_FIRST_CORE = TOK_AT,
6640
6874
  TOK_LAST_CORE = TOK_ELLIPSIS,
6641
 
  
6642
 
  // C keywords:
 
6875
 
 
6876
  //////// C keywords
6643
6877
 
6644
6878
  /** asm */
6645
6879
  TOK_ASM,
6714
6948
  /** while */
6715
6949
  TOK_WHILE,
6716
6950
 
6717
 
  // C compatibility keywords
 
6951
  /** C token group separator for the scanner! */
 
6952
  TOK_FIRST_C = TOK_ASM,
 
6953
  TOK_LAST_C = TOK_WHILE,
 
6954
 
 
6955
  //////// Common C extension keywords
6718
6956
 
6719
6957
  /** __asm */
6720
6958
  TOK_ASM_2,
 
6959
  /** __inline */
 
6960
  TOK_INLINE_2,
 
6961
 
 
6962
  /** Common C extension token group separator for the scanner! */
 
6963
  TOK_FIRST_EXT_C = TOK_ASM_2,
 
6964
  TOK_LAST_EXT_C = TOK_INLINE_2,
 
6965
 
 
6966
  //////// GNU C extension keywords
 
6967
 
 
6968
  /** __alignof */
 
6969
  TOK_ALIGNOF,
 
6970
  /** __alignof */
 
6971
  TOK_ALIGNOF_2,
 
6972
  /** __alignof__ */
 
6973
  TOK_ALIGNOF_3,
6721
6974
  /** __asm__ */
6722
6975
  TOK_ASM_3,
6723
6976
  /** _Bool */
6726
6979
  TOK_CONST_2,
6727
6980
  /** __const__ */
6728
6981
  TOK_CONST_3,
6729
 
  /** __inline */
6730
 
  TOK_INLINE_2,
6731
6982
  /** __inline__ */
6732
6983
  TOK_INLINE_3,
 
6984
  /** __builtin_offsetof */
 
6985
  TOK_OFFSETOF,
6733
6986
  /** __restrict */
6734
6987
  TOK_RESTRICT_2,
6735
6988
  /** __restrict__ */
6742
6995
  TOK_VOLATILE_2,
6743
6996
  /** __volatile__ */
6744
6997
  TOK_VOLATILE_3,
6745
 
  /** __wchar_t */
6746
 
  TOK_WCHAR_T_2,
 
6998
  /** __thread */
 
6999
  TOK_THREAD,
6747
7000
  /** typeof */
6748
7001
  TOK_TYPEOF,
6749
7002
  /** __typeof */
6751
7004
  /** __typeof__ */
6752
7005
  TOK_TYPEOF_3,
6753
7006
 
6754
 
  // C win specific keywords
 
7007
  /** GNU C extension token group separator for the scanner! */
 
7008
  TOK_FIRST_GNUC = TOK_ALIGNOF,
 
7009
  TOK_LAST_GNUC = TOK_TYPEOF_3,
 
7010
 
 
7011
  //////// Visual C/C++ extension keywords
6755
7012
 
6756
7013
  /** __int64 */
6757
7014
  TOK_INT64,
6772
7029
  /** __if_not_exists */
6773
7030
  TOK_IF_NOT_EXISTS,
6774
7031
 
6775
 
  /** C token group separator for the scanner! */
6776
 
  TOK_LAST_C = TOK_IF_NOT_EXISTS,
6777
 
  
6778
 
  /** Boolean constant. */
 
7032
  /** Visual C/C++ extension token group separator for the scanner! */
 
7033
  TOK_FIRST_VC = TOK_INT64,
 
7034
  TOK_LAST_VC = TOK_IF_NOT_EXISTS,
 
7035
 
 
7036
  //////// C++ keywords
 
7037
 
 
7038
  /** true, false */
6779
7039
  TOK_BOOL_VAL,
6780
 
 
6781
 
  // C++ keywords:
6782
 
 
6783
7040
  /** bool */
6784
7041
  TOK_BOOL,
6785
7042
  /** catch */
6833
7090
  /** virtual */
6834
7091
  TOK_VIRTUAL,
6835
7092
 
6836
 
  // C++ alternative representation of operators (ISO 646):
 
7093
  //////// C++ alternative representation of operators (ISO 646)
6837
7094
 
6838
7095
  /** and */
6839
7096
  TOK_AND_AND_ISO_646,
6859
7116
  TOK_XOR_EQ_ISO_646,
6860
7117
 
6861
7118
  /** C++ token group separator for the scanner! */
 
7119
  TOK_FIRST_CC = TOK_BOOL_VAL,
6862
7120
  TOK_LAST_CC = TOK_XOR_EQ_ISO_646,
6863
 
  
6864
 
  // AspectC++ keywords:
 
7121
 
 
7122
  //////// Common C++ extension keywords
 
7123
 
 
7124
  /** __wchar_t */
 
7125
  TOK_WCHAR_T_2,
 
7126
 
 
7127
  /** Common C++ extension token group separator for the scanner! */
 
7128
  TOK_FIRST_EXT_CC = TOK_WCHAR_T_2,
 
7129
  TOK_LAST_EXT_CC = TOK_WCHAR_T_2,
 
7130
 
 
7131
  //////// GNU C++ extension keywords
 
7132
 
 
7133
  /** GNU C++ extension token group separator for the scanner! */
 
7134
  TOK_FIRST_GNUCC,
 
7135
  TOK_LAST_GNUCC,
 
7136
 
 
7137
  //////// C++ type trait keywords
 
7138
 
 
7139
  /** __has_nothrow_assign */
 
7140
  TOK_HAS_NOTHROW_ASSIGN,
 
7141
  /** __has_nothrow_copy */
 
7142
  TOK_HAS_NOTHROW_COPY,
 
7143
  /** __has_nothrow_constructor */
 
7144
  TOK_HAS_NOTHROW_CTOR,
 
7145
  /** __has_trivial_assign */
 
7146
  TOK_HAS_TRIVIAL_ASSIGN,
 
7147
  /** __has_trivial_copy */
 
7148
  TOK_HAS_TRIVIAL_COPY,
 
7149
  /** __has_trivial_constructor */
 
7150
  TOK_HAS_TRIVIAL_CTOR,
 
7151
  /** __has_trivial_destructor */
 
7152
  TOK_HAS_TRIVIAL_DTOR,
 
7153
  /** __has_virtual_destructor */
 
7154
  TOK_HAS_VIRTUAL_DTOR,
 
7155
  /** __is_abstract */
 
7156
  TOK_IS_ABSTRACT,
 
7157
  /** __is_base_of */
 
7158
  TOK_IS_BASE_OF,
 
7159
  /** __is_class */
 
7160
  TOK_IS_CLASS,
 
7161
  /** __is_empty */
 
7162
  TOK_IS_EMPTY,
 
7163
  /** __is_enum */
 
7164
  TOK_IS_ENUM,
 
7165
  /** __is_pod */
 
7166
  TOK_IS_POD,
 
7167
  /** __is_polymorphic */
 
7168
  TOK_IS_POLYMORPHIC,
 
7169
  /** __is_union */
 
7170
  TOK_IS_UNION,
 
7171
 
 
7172
  /** GNU C++ extension token group separator for the scanner! */
 
7173
  TOK_FIRST_TYPETRAIT = TOK_HAS_NOTHROW_ASSIGN,
 
7174
  TOK_LAST_TYPETRAIT = TOK_IS_UNION,
 
7175
 
 
7176
  //////// AspectC++ extension keywords
6865
7177
 
6866
7178
  /** pointcut */
6867
7179
  TOK_POINTCUT,
6874
7186
  /** unknown_t */
6875
7187
  TOK_UNKNOWN_T,
6876
7188
 
6877
 
  /** AspectC++ token group separator for the scanner! */
 
7189
  /** AspectC++ extension token group separator for the scanner! */
 
7190
  TOK_FIRST_AC = TOK_POINTCUT,
6878
7191
  TOK_LAST_AC = TOK_UNKNOWN_T,
6879
 
  
 
7192
 
6880
7193
  /** Any identifier that is not a keyword. */
6881
7194
  TOK_ID,
6882
7195
 
6883
7196
  // These two always have to be the ** last ** token listed here!!!
6884
 
  
 
7197
 
6885
7198
  /** Epsilon. */
6886
7199
  TOK_EPSILON,
6887
7200
  /** Number of known token types. */
6892
7205
 
6893
7206
#endif /* __C_TOKENS__ */
6894
7207
 
6895
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7208
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6896
7209
namespace Puma {
6897
7210
  
6898
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7211
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6899
7212
 
6900
7213
}
6901
7214
 
6902
7215
 
6903
 
#line 6904 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7216
#line 7217 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6904
7217
class CCExprResolve;
6905
7218
class CExprResolve;
6906
7219
class WinImportHandler;
6920
7233
class PragmaOnce;
6921
7234
class CMatchSyntax;
6922
7235
 
6923
 
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7236
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6924
7237
class WinIfExists {
6925
 
#line 6926 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7238
#line 7239 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6926
7239
 
6927
7240
public:
6928
7241
  static WinIfExists *aspectof () {
6934
7247
  }
6935
7248
private:
6936
7249
 
6937
 
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7250
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6938
7251
 
6939
 
#line 6940 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7252
#line 7253 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6940
7253
  friend class ::CCExprResolve;
6941
7254
  friend class ::CExprResolve;
6942
7255
  friend class ::WinImportHandler;
6956
7269
  friend class ::PragmaOnce;
6957
7270
  friend class ::CMatchSyntax;
6958
7271
 
6959
 
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7272
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6960
7273
 
6961
7274
  /********************************************************/
6962
7275
  /* Win __if_exists and __if_not_exists                  */
6964
7277
 
6965
7278
  // pointcut definitions
6966
7279
  
6967
 
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7280
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6968
7281
 
6969
7282
 
6970
7283
  // structural extensions
6971
7284
  
6972
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7285
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6973
7286
 
6974
7287
 
6975
7288
  // preprocess __if_exists and __if_not_exists statements
6976
7289
  
6977
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7290
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6978
7291
 
6979
7292
public: template<class JoinPoint> void __a0_around 
6980
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7293
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6981
7294
 
6982
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7295
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6983
7296
(JoinPoint *tjp)
6984
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7297
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6985
7298
 {
6986
 
#line 6987 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7299
#line 7300 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6987
7300
 
6988
7301
  JoinPoint *&thisJoinPoint = tjp;
6989
7302
 
6990
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7303
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6991
7304
 
6992
 
#line 6993 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7305
#line 7306 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
6993
7306
 
6994
7307
  typedef typename JoinPoint::That __JP_That;
6995
7308
  typedef typename JoinPoint::Target __JP_Target;
6996
7309
  typedef typename JoinPoint::Result __JP_Result;
6997
7310
 
6998
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7311
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
6999
7312
 
7000
7313
    Puma::Token *token;
7001
7314
    int type;
7002
7315
    __JP_That
7003
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7316
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
7004
7317
 *preparser;
7005
7318
  
7006
7319
    preparser = tjp->that ();
7035
7348
      }
7036
7349
    }
7037
7350
  }
7038
 
#line 7039 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7351
#line 7352 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7039
7352
 
7040
7353
private:
7041
7354
 
7042
 
#line 82 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7355
#line 82 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
7043
7356
 
7044
7357
 
7045
7358
protected:
7048
7361
  typedef AC::TLE __AttrTypes;
7049
7362
  const char *__attr_name (unsigned i) const { return 0; }
7050
7363
  const void *__attr (unsigned __i) const { return 0; }
7051
 
#line 86 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7364
#line 86 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
7052
7365
};
7053
 
#line 7054 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7366
#line 7367 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7054
7367
 
7055
7368
namespace AC {
7056
7369
  template <class JoinPoint>
7059
7372
  }
7060
7373
7061
7374
 
7062
 
#line 86 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7375
#line 86 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
7063
7376
 
7064
7377
 
7065
7378
namespace Puma {
7066
7379
  
7067
 
#line 95 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7380
#line 95 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
7068
7381
 
7069
7382
    
7070
7383
  // skip __if_exists resp. __if_not_exists statement
7071
7384
  
7072
 
#line 135 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7385
#line 135 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
7073
7386
 
7074
7387
}
7075
7388
 
7076
7389
#endif /* __WinIfExists__ */
7077
7390
 
7078
 
#line 8 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
7391
#line 8 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7079
7392
#endif
7080
7393
namespace Puma {
7081
7394
 
7082
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
7395
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7083
7396
 
7084
 
#line 7085 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7397
#line 7398 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7085
7398
} // closed Puma
7086
7399
 
7087
 
#ifndef __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
7088
 
#define __ac_guard__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
7400
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
7401
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnce_ah__
7089
7402
 
7090
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7403
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7091
7404
// This file is part of PUMA.
7092
7405
// Copyright (C) 1999-2003  The PUMA developer team.
7093
7406
//                                                                
7115
7428
 
7116
7429
#include <string.h>
7117
7430
 
7118
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7431
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7119
7432
 
7120
 
#line 7121 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7433
#line 7434 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7121
7434
class CCExprResolve;
7122
7435
class CExprResolve;
7123
7436
class WinIfExists;
7137
7450
class PragmaOnceUnitState;
7138
7451
class CMatchSyntax;
7139
7452
 
7140
 
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7453
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7141
7454
class PragmaOnce {
7142
 
#line 7143 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7455
#line 7456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7143
7456
 
7144
7457
public:
7145
7458
  static PragmaOnce *aspectof () {
7151
7464
  }
7152
7465
private:
7153
7466
 
7154
 
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7467
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7155
7468
 
7156
 
#line 7157 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7469
#line 7470 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7157
7470
  friend class ::CCExprResolve;
7158
7471
  friend class ::CExprResolve;
7159
7472
  friend class ::WinIfExists;
7173
7486
  friend class ::PragmaOnceUnitState;
7174
7487
  friend class ::CMatchSyntax;
7175
7488
 
7176
 
#line 33 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7489
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7177
7490
 
7178
7491
  /******************************************************/
7179
7492
  /* detect #pragma once in the token stream of cpp     */
7181
7494
 
7182
7495
  // pointcut definitions
7183
7496
  
7184
 
#line 39 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7497
#line 39 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7185
7498
 
7186
7499
  
7187
 
#line 40 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7500
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7188
7501
 
7189
7502
  
7190
7503
  // extend the preprocessor parser by the filter state
7191
7504
  
7192
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7505
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7193
7506
 
7194
7507
 
7195
7508
  // initialize the filter state
7196
7509
  
7197
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7510
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7198
7511
 
7199
7512
public: template<class JoinPoint> void __a0_after 
7200
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7513
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7201
7514
 
7202
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7515
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7203
7516
(JoinPoint *tjp)
7204
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7517
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7205
7518
 {
7206
 
#line 7207 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7519
#line 7520 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7207
7520
 
7208
7521
  typedef typename JoinPoint::That __JP_That;
7209
7522
  typedef typename JoinPoint::Target __JP_Target;
7210
7523
  typedef typename JoinPoint::Result __JP_Result;
7211
7524
 
7212
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7525
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7213
7526
 
7214
7527
    // TODO: it would be better to have construction advice -> but in lem file
7215
7528
    tjp->that ()->_pragma_token = 0;
7216
7529
  }
7217
 
#line 7218 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7530
#line 7531 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7218
7531
 
7219
7532
private:
7220
7533
 
7221
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7534
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7222
7535
 
7223
7536
  
7224
7537
  // filter #pragma once
7225
7538
  
7226
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7539
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7227
7540
 
7228
7541
public: template<class JoinPoint> void __a1_after 
7229
 
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7542
#line 52 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7230
7543
 
7231
 
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7544
#line 52 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7232
7545
(JoinPoint *tjp)
7233
 
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7546
#line 52 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7234
7547
 {
7235
 
#line 7236 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7548
#line 7549 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7236
7549
 
7237
7550
  typedef typename JoinPoint::That __JP_That;
7238
7551
  typedef typename JoinPoint::Target __JP_Target;
7239
7552
  typedef typename JoinPoint::Result __JP_Result;
7240
7553
 
7241
 
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7554
#line 52 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7242
7555
 
7243
7556
    Puma::Token *tok = *tjp->result ();
7244
7557
    __JP_That
7245
 
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7558
#line 54 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7246
7559
 &that = *tjp->that ();
7247
7560
    if (!tok || !tok->is_directive ()) {
7248
7561
      that._pragma_token = 0;
7257
7570
      unit->state ().onlyOnce (true);
7258
7571
    }
7259
7572
  }
7260
 
#line 7261 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7573
#line 7574 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7261
7574
 
7262
7575
private:
7263
7576
 
7264
 
#line 67 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7577
#line 67 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7265
7578
 
7266
7579
  
7267
7580
  /********************************************************/
7272
7585
  // to be precise: the file is included again, but the inclusion produces
7273
7586
  // no tokens
7274
7587
  
7275
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7588
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7276
7589
 
7277
7590
public: template<class JoinPoint> void __a2_around 
7278
 
#line 78 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7591
#line 78 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7279
7592
 
7280
 
#line 78 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7593
#line 78 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7281
7594
(JoinPoint *tjp, Puma::Unit *unit)
7282
 
#line 78 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7595
#line 78 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7283
7596
 {
7284
 
#line 7285 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7597
#line 7598 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7285
7598
 
7286
7599
  typedef typename JoinPoint::That __JP_That;
7287
7600
  typedef typename JoinPoint::Target __JP_Target;
7288
7601
  typedef typename JoinPoint::Result __JP_Result;
7289
7602
 
7290
 
#line 78 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7603
#line 78 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7291
7604
 
7292
7605
    if (! unit || ! unit->state ().onlyOnce ())
7293
7606
      tjp->proceed ();
7294
7607
  }
7295
 
#line 7296 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7608
#line 7609 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7296
7609
 
7297
7610
private:
7298
7611
 
7299
 
#line 81 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7612
#line 81 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7300
7613
 
7301
7614
 
7302
7615
  // includeFile shall return 0 if the file was not included
7303
7616
  
7304
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7617
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7305
7618
 
7306
7619
public: template<class JoinPoint> void __a3_after 
7307
 
#line 85 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7620
#line 85 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7308
7621
 
7309
 
#line 85 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7622
#line 85 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7310
7623
(JoinPoint *tjp)
7311
 
#line 85 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7624
#line 85 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7312
7625
 {
7313
 
#line 7314 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7626
#line 7627 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7314
7627
 
7315
7628
  typedef typename JoinPoint::That __JP_That;
7316
7629
  typedef typename JoinPoint::Target __JP_Target;
7317
7630
  typedef typename JoinPoint::Result __JP_Result;
7318
7631
 
7319
 
#line 85 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7632
#line 85 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7320
7633
 
7321
7634
    Puma::Unit *&unit = *tjp->result ();
7322
7635
    if (unit && unit->state ().onlyOnce ())
7323
7636
      //unit = 0;
7324
7637
      tjp->that ()->_guarded = true;
7325
7638
  }
7326
 
#line 7327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7639
#line 7640 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7327
7640
 
7328
7641
private:
7329
7642
 
7330
 
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7643
#line 90 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7331
7644
 
7332
7645
    
7333
7646
protected:
7337
7650
  typedef AC::TLE __AttrTypes;
7338
7651
  const char *__attr_name (unsigned i) const { return 0; }
7339
7652
  const void *__attr (unsigned __i) const { return 0; }
7340
 
#line 95 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7653
#line 95 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7341
7654
};
7342
 
#line 7343 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7655
#line 7656 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7343
7656
 
7344
7657
namespace AC {
7345
7658
  template <class JoinPoint>
7361
7674
  }
7362
7675
7363
7676
 
7364
 
#line 95 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7677
#line 95 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7365
7678
 
7366
7679
 
7367
7680
 
7368
7681
#endif /* __PragmaOnce__ */
7369
7682
 
7370
 
#line 8 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
7683
#line 8 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7371
7684
#endif
7372
7685
namespace Puma {
7373
7686
 
7374
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
7687
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7375
7688
class PreprocessorParser : public PumaTokenSource {
7376
 
#line 7377 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7689
#line 7690 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7377
7690
  friend class ::CCExprResolve;
7378
7691
  friend class ::CExprResolve;
7379
7692
  friend class ::WinIfExists;
7394
7707
  friend class ::PragmaOnce;
7395
7708
  friend class ::CMatchSyntax;
7396
7709
 
7397
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
7710
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7398
7711
 
7399
7712
public:
7400
7713
  // The current mode for token preprocessing
7430
7743
  UnitManager         *_locals;
7431
7744
 
7432
7745
  PreMacroExpander     _expander;
7433
 
  PreMacroExpander     _macroExpander;        
7434
 
        
 
7746
  PreMacroExpander     _macroExpander;
 
7747
 
7435
7748
  PreMode              _pre_mode;
7436
 
  bool                       _support_gnu;
 
7749
  bool                 _support_gnu;
7437
7750
 
7438
7751
  CScanner             _scanner;
7439
7752
  TokenStream         *_stream;
7440
 
                
 
7753
 
7441
7754
  const char          *_importHandler;
7442
7755
 
7443
7756
private:
7447
7760
  // Free the preprocessor syntax tree.
7448
7761
  void freeSyntaxTree (PreTree*);
7449
7762
 
 
7763
  // Define GNU macros
 
7764
  
 
7765
#line 7766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
7766
public: __attribute__((always_inline)) inline void __exec_old_defineGNUMacros();
 
7767
private:
 
7768
 
 
7769
#line 101 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
7770
void defineGNUMacros ();
 
7771
 
7450
7772
public:
7451
7773
  // Get several preprocessor informations.
7452
7774
  Array<PreMacro*>    *macroStack () const       { return _macroStack; }
7470
7792
public:
7471
7793
  PreprocessorParser (ErrorStream *, UnitManager *, UnitManager *, 
7472
7794
                        ostream &out = cout, int max_depth = 400);
7473
 
                           
 
7795
 
7474
7796
  ~PreprocessorParser ();
7475
 
        
 
7797
 
7476
7798
  // Reset the preprocessor parser.
7477
7799
  void reset (ErrorStream *, UnitManager *, UnitManager *, 
7478
7800
              ostream &out = cout, int max_depth = 400);
7479
7801
 
7480
7802
  // Free the preprocessor syntax tree.
7481
7803
  void freeSyntaxTree ();
7482
 
        
 
7804
 
7483
7805
  // Configure the preprocessor.
7484
7806
  
7485
 
#line 7486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7807
#line 7808 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7486
7808
public: __attribute__((always_inline)) inline void __exec_old_configure(const ::Puma::Config & ,bool );
7487
7809
 
7488
 
#line 134 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
7810
#line 137 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7489
7811
void configure (const Config &, bool = true);
7490
 
        
 
7812
 
7491
7813
  // Get the next token to parse.
7492
7814
  
7493
 
#line 7494 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7815
#line 7816 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7494
7816
public: __attribute__((always_inline)) inline ::Puma::Token * __exec_old_next();
7495
7817
 
7496
 
#line 137 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
7818
#line 140 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7497
7819
Token *next ();
7498
 
        
 
7820
 
7499
7821
  TokenStream *scanner () const { return _stream; }
7500
7822
  void stream (TokenStream *s) { _stream = s; }
7501
7823
 
7504
7826
 
7505
7827
  // Invoke the parse process.
7506
7828
  void parse ();
7507
 
        
 
7829
 
7508
7830
  // Switch to silent mode.
7509
7831
  void silentMode (bool mode = true) { _silentMode = mode; }
7510
7832
 
7511
7833
  // Define a new macro.
7512
7834
  void defMacro (const char *, const char * = (const char*)0, char = 0) const;
7513
 
        
 
7835
 
 
7836
  // Define a macro if it is not yet defined.
 
7837
  void defUndefinedMacro (const char *, const char * = (const char*)0, char = 0) const;
 
7838
 
7514
7839
  // Undefine a macro.
7515
7840
  void undefMacro (const char *) const;
7516
 
        
 
7841
 
7517
7842
  // Define a new predicate.
7518
7843
  void defPredicate (const char *, const char *) const;
7519
 
        
 
7844
 
7520
7845
  // Undefine a predicate.
7521
7846
  void undefPredicate (const char *) const;
7522
 
        
 
7847
 
7523
7848
  // Add a new include path.
7524
7849
  void addInclPath (const char *) const;
7525
7850
 
7526
7851
  void supportGNU (bool);
7527
7852
   private:
7528
7853
 
7529
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/PragmaOnce.ah"
 
7854
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/PragmaOnce.ah"
7530
7855
 Puma :: Token * _pragma_token ;   private:
7531
7856
  typedef PreprocessorParser WinIfExistsCpp;
7532
7857
 
7533
 
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
7858
#line 90 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinIfExists.ah"
7534
7859
 public :
7535
7860
 
7536
7861
Puma :: Stack < unsigned > _depth ;
7543
7868
  const void *__attr (unsigned __i) const {
7544
7869
    switch (__i) { case 7: return &_silentMode; case 8: return &_out; case 10: return &_macroStack; case 12: return &_prescanned; case 13: return &_levelState; case 14: return &_parserState; case 15: return &_macroManager; case 16: return &_fileIncluder; case 17: return &_predicateManager; case 18: return &_unitManager; case 19: return &_locals; case 20: return &_expander; case 21: return &_macroExpander; case 23: return &_support_gnu; case 24: return &_scanner; case 25: return &_stream; case 26: return &_importHandler; case 29: return &_pragma_token; case 31: return &_depth; default: return 0; }
7545
7870
  }
7546
 
#line 167 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
 
7871
#line 173 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreprocessorParser.h"
7547
7872
};
7548
7873
 
7549
7874
 
7551
7876
 
7552
7877
#endif /* __preprocessor_parser__ */
7553
7878
 
7554
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
7879
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathIterator.h"
7555
7880
// This file is part of PUMA.
7556
7881
// Copyright (C) 1999-2003  The PUMA developer team.
7557
7882
//                                                                
7578
7903
// are iterated. 
7579
7904
 
7580
7905
 
7581
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
7906
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
7582
7907
// This file is part of PUMA.
7583
7908
// Copyright (C) 1999-2003  The PUMA developer team.
7584
7909
//                                                                
7600
7925
#ifndef __project_file__
7601
7926
#define __project_file__
7602
7927
 
7603
 
#include <map>
 
7928
 
 
7929
#line 23 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
7604
7930
using std::map;
7605
7931
 
7606
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
7932
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
7607
7933
using std::string;
7608
7934
 
7609
7935
 
7610
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
7936
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
7611
7937
namespace Puma {
7612
7938
 
7613
7939
// the project file abstraction is used to store all filenames relevant
7614
7940
// for a specific file that is managed by Puma.
7615
7941
 
7616
7942
 
7617
 
#line 7618 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7943
#line 7944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7618
7944
} // closed Puma
7619
7945
class CCExprResolve;
7620
7946
class CExprResolve;
7637
7963
class CMatchSyntax;
7638
7964
namespace Puma {
7639
7965
 
7640
 
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
7966
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
7641
7967
class ProjectFile {
7642
 
#line 7643 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
7968
#line 7969 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7643
7969
  friend class ::CCExprResolve;
7644
7970
  friend class ::CExprResolve;
7645
7971
  friend class ::WinIfExists;
7660
7986
  friend class ::PragmaOnce;
7661
7987
  friend class ::CMatchSyntax;
7662
7988
 
7663
 
#line 34 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
7989
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
7664
7990
 
7665
7991
  Filename _nick_name;
7666
7992
  Filename _dest_path;
7682
8008
  const void *__attr (unsigned __i) const {
7683
8009
    switch (__i) { case 0: return &_nick_name; case 1: return &_dest_path; default: return 0; }
7684
8010
  }
7685
 
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
 
8011
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/ProjectFile.h"
7686
8012
};
7687
8013
 
7688
8014
typedef map<string, ProjectFile> PFMap;
7693
8019
 
7694
8020
#endif // __project_file__
7695
8021
 
7696
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
8022
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathIterator.h"
7697
8023
namespace Puma {
7698
8024
 
7699
8025
class PathManager;
7700
8026
class RegComp;
7701
8027
 
7702
8028
 
7703
 
#line 7704 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8029
#line 8030 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7704
8030
} // closed Puma
7705
8031
class CCExprResolve;
7706
8032
class CExprResolve;
7723
8049
class CMatchSyntax;
7724
8050
namespace Puma {
7725
8051
 
7726
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
8052
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathIterator.h"
7727
8053
class PathIterator : public PFMConstIter {
7728
 
#line 7729 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8054
#line 8055 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7729
8055
  friend class ::CCExprResolve;
7730
8056
  friend class ::CExprResolve;
7731
8057
  friend class ::WinIfExists;
7746
8072
  friend class ::PragmaOnce;
7747
8073
  friend class ::CMatchSyntax;
7748
8074
 
7749
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
8075
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathIterator.h"
7750
8076
 
7751
8077
  friend class PathManager;
7752
8078
 
7773
8099
  const void *__attr (unsigned __i) const {
7774
8100
    switch (__i) { case 0: return &_regexp; case 1: return &_in_use; default: return 0; }
7775
8101
  }
7776
 
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathIterator.h"
 
8102
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathIterator.h"
7777
8103
};
7778
8104
 
7779
8105
} // namespace Puma
7780
8106
 
7781
8107
#endif /* __path_iterator__ */
7782
8108
 
7783
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StringSource.h"
 
8109
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StringSource.h"
7784
8110
// This file is part of PUMA.
7785
8111
// Copyright (C) 1999-2003  The PUMA developer team.
7786
8112
//                                                                
7803
8129
#define __string_source_h__
7804
8130
 
7805
8131
 
7806
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StringSource.h"
 
8132
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StringSource.h"
7807
8133
namespace Puma {
7808
8134
 
7809
8135
 
7810
8136
 
7811
 
#line 7812 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8137
#line 8138 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7812
8138
} // closed Puma
7813
8139
class CCExprResolve;
7814
8140
class CExprResolve;
7831
8157
class CMatchSyntax;
7832
8158
namespace Puma {
7833
8159
 
7834
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StringSource.h"
 
8160
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StringSource.h"
7835
8161
class StringSource : public Source {
7836
 
#line 7837 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8162
#line 8163 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7837
8163
  friend class ::CCExprResolve;
7838
8164
  friend class ::CExprResolve;
7839
8165
  friend class ::WinIfExists;
7854
8180
  friend class ::PragmaOnce;
7855
8181
  friend class ::CMatchSyntax;
7856
8182
 
7857
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StringSource.h"
 
8183
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StringSource.h"
7858
8184
 
7859
8185
  const char *_string;
7860
8186
  int _delivered;
7895
8221
  const void *__attr (unsigned __i) const {
7896
8222
    switch (__i) { case 0: return &_string; case 1: return &_delivered; case 2: return &_len; default: return 0; }
7897
8223
  }
7898
 
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/StringSource.h"
 
8224
#line 60 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/StringSource.h"
7899
8225
};
7900
8226
 
7901
8227
 
7903
8229
 
7904
8230
#endif /* __string_source_h__ */
7905
8231
 
7906
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileSource.h"
 
8232
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileSource.h"
7907
8233
// This file is part of PUMA.
7908
8234
// Copyright (C) 1999-2003  The PUMA developer team.
7909
8235
//                                                                
7926
8252
#define __file_source_h__
7927
8253
 
7928
8254
 
7929
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FdSource.h"
 
8255
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FdSource.h"
7930
8256
// This file is part of PUMA.
7931
8257
// Copyright (C) 1999-2003  The PUMA developer team.
7932
8258
//                                                                
7949
8275
#define __fd_source_h__
7950
8276
 
7951
8277
 
7952
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
8278
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SysCall.h"
7953
8279
// This file is part of PUMA.
7954
8280
// Copyright (C) 1999-2003  The PUMA developer team.
7955
8281
//                                                                
7978
8304
#include <stddef.h>
7979
8305
#include <sys/stat.h>
7980
8306
 
7981
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
8307
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SysCall.h"
7982
8308
#ifdef _MSC_VER
7983
8309
#include <string.h>
7984
8310
#include <stdlib.h>
7987
8313
#endif // _MSVC
7988
8314
 
7989
8315
 
7990
 
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
8316
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SysCall.h"
7991
8317
namespace Puma {
7992
8318
 
7993
8319
class SysCall;
7994
8320
 
7995
8321
 
7996
 
#line 7997 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8322
#line 8323 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
7997
8323
} // closed Puma
7998
8324
class CCExprResolve;
7999
8325
class CExprResolve;
8016
8342
class CMatchSyntax;
8017
8343
namespace Puma {
8018
8344
 
8019
 
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
8345
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SysCall.h"
8020
8346
class FileInfo {
8021
 
#line 8022 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8347
#line 8348 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8022
8348
  friend class ::CCExprResolve;
8023
8349
  friend class ::CExprResolve;
8024
8350
  friend class ::WinIfExists;
8039
8365
  friend class ::PragmaOnce;
8040
8366
  friend class ::CMatchSyntax;
8041
8367
 
8042
 
#line 42 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
8368
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SysCall.h"
8043
8369
 
8044
8370
  friend class SysCall;
8045
8371
#ifndef _MSC_VER
8066
8392
  const void *__attr (unsigned __i) const {
8067
8393
    switch (__i) { case 0: return &_info; default: return 0; }
8068
8394
  }
8069
 
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
8395
#line 60 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SysCall.h"
8070
8396
};
8071
8397
 
8072
8398
#ifdef _MSC_VER
8082
8408
class ErrorSink;
8083
8409
 
8084
8410
 
8085
 
#line 8086 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8411
#line 8412 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8086
8412
} // closed Puma
8087
8413
class CCExprResolve;
8088
8414
class CExprResolve;
8105
8431
class CMatchSyntax;
8106
8432
namespace Puma {
8107
8433
 
8108
 
#line 74 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
8434
#line 74 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SysCall.h"
8109
8435
class SysCall {
8110
 
#line 8111 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8436
#line 8437 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8111
8437
  friend class ::CCExprResolve;
8112
8438
  friend class ::CExprResolve;
8113
8439
  friend class ::WinIfExists;
8128
8454
  friend class ::PragmaOnce;
8129
8455
  friend class ::CMatchSyntax;
8130
8456
 
8131
 
#line 74 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
8457
#line 74 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SysCall.h"
8132
8458
 
8133
8459
  static void printerror (ErrorSink *, const char *, 
8134
8460
                          const char * = (const char *)0);
8196
8522
  typedef AC::TLE __AttrTypes;
8197
8523
  const char *__attr_name (unsigned i) const { return 0; }
8198
8524
  const void *__attr (unsigned __i) const { return 0; }
8199
 
#line 137 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SysCall.h"
 
8525
#line 137 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SysCall.h"
8200
8526
};
8201
8527
 
8202
8528
 
8204
8530
 
8205
8531
#endif /* __SysCall_h__ */
8206
8532
 
8207
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FdSource.h"
 
8533
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FdSource.h"
8208
8534
namespace Puma {
8209
8535
 
8210
8536
 
8211
8537
 
8212
 
#line 8213 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8538
#line 8539 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8213
8539
} // closed Puma
8214
8540
class CCExprResolve;
8215
8541
class CExprResolve;
8232
8558
class CMatchSyntax;
8233
8559
namespace Puma {
8234
8560
 
8235
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FdSource.h"
 
8561
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FdSource.h"
8236
8562
class FdSource : public Source {
8237
 
#line 8238 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8563
#line 8564 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8238
8564
  friend class ::CCExprResolve;
8239
8565
  friend class ::CExprResolve;
8240
8566
  friend class ::WinIfExists;
8255
8581
  friend class ::PragmaOnce;
8256
8582
  friend class ::CMatchSyntax;
8257
8583
 
8258
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FdSource.h"
 
8584
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FdSource.h"
8259
8585
 
8260
8586
  int _fd;
8261
8587
 
8282
8608
  const void *__attr (unsigned __i) const {
8283
8609
    switch (__i) { case 0: return &_fd; default: return 0; }
8284
8610
  }
8285
 
#line 46 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FdSource.h"
 
8611
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FdSource.h"
8286
8612
};
8287
8613
 
8288
8614
 
8290
8616
 
8291
8617
#endif /* __fd_source_h__ */
8292
8618
 
8293
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileSource.h"
 
8619
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileSource.h"
8294
8620
#include <fcntl.h>
8295
8621
 
8296
8622
namespace Puma {
8297
8623
 
8298
8624
 
8299
8625
 
8300
 
#line 8301 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8626
#line 8627 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8301
8627
} // closed Puma
8302
8628
class CCExprResolve;
8303
8629
class CExprResolve;
8320
8646
class CMatchSyntax;
8321
8647
namespace Puma {
8322
8648
 
8323
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileSource.h"
 
8649
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileSource.h"
8324
8650
class FileSource : public FdSource {
8325
 
#line 8326 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8651
#line 8652 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8326
8652
  friend class ::CCExprResolve;
8327
8653
  friend class ::CExprResolve;
8328
8654
  friend class ::WinIfExists;
8343
8669
  friend class ::PragmaOnce;
8344
8670
  friend class ::CMatchSyntax;
8345
8671
 
8346
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileSource.h"
 
8672
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileSource.h"
8347
8673
 
8348
8674
public:
8349
8675
  FileSource (const char *name, ErrorSink *err = (ErrorSink*)0)
8357
8683
  typedef AC::TLE __AttrTypes;
8358
8684
  const char *__attr_name (unsigned i) const { return 0; }
8359
8685
  const void *__attr (unsigned __i) const { return 0; }
8360
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileSource.h"
 
8686
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileSource.h"
8361
8687
};
8362
8688
 
8363
8689
 
8365
8691
 
8366
8692
#endif /* __file_source_h__ */
8367
8693
 
8368
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
8694
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProject.h"
8369
8695
// This file is part of PUMA.
8370
8696
// Copyright (C) 1999-2003  The PUMA developer team.
8371
8697
//                                                                
8390
8716
// Special project derivation for C++ sources.
8391
8717
 
8392
8718
 
8393
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
8719
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Project.h"
8394
8720
// This file is part of PUMA.
8395
8721
// Copyright (C) 1999-2003  The PUMA developer team.
8396
8722
//                                                                
8416
8742
// methods for searching and writing files. 
8417
8743
 
8418
8744
 
8419
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
8745
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathManager.h"
8420
8746
// This file is part of PUMA.
8421
8747
// Copyright (C) 1999-2003  The PUMA developer team.
8422
8748
//                                                                
8441
8767
// Manages directories and methods to access the files in it.
8442
8768
 
8443
8769
 
8444
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathInfo.h"
 
8770
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathInfo.h"
8445
8771
// This file is part of PUMA.
8446
8772
// Copyright (C) 1999-2003  The PUMA developer team.
8447
8773
//                                                                
8470
8796
 
8471
8797
 
8472
8798
 
8473
 
#line 8474 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8799
#line 8800 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8474
8800
} // closed Puma
8475
8801
class CCExprResolve;
8476
8802
class CExprResolve;
8493
8819
class CMatchSyntax;
8494
8820
namespace Puma {
8495
8821
 
8496
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathInfo.h"
 
8822
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathInfo.h"
8497
8823
class PathInfo {
8498
 
#line 8499 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8824
#line 8825 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8499
8825
  friend class ::CCExprResolve;
8500
8826
  friend class ::CExprResolve;
8501
8827
  friend class ::WinIfExists;
8516
8842
  friend class ::PragmaOnce;
8517
8843
  friend class ::CMatchSyntax;
8518
8844
 
8519
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathInfo.h"
 
8845
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathInfo.h"
8520
8846
 
8521
8847
  const char *_src;        // Source path.
8522
8848
  const char *_dest;        // Destination path.
8544
8870
  const void *__attr (unsigned __i) const {
8545
8871
    switch (__i) { case 0: return &_src; case 1: return &_dest; default: return 0; }
8546
8872
  }
8547
 
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathInfo.h"
 
8873
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathInfo.h"
8548
8874
};
8549
8875
 
8550
8876
 
8552
8878
 
8553
8879
#endif /* __path_info__ */
8554
8880
 
8555
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
8881
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathManager.h"
8556
8882
namespace Puma {
8557
8883
 
8558
8884
class RegComp;
8560
8886
class Unit;
8561
8887
 
8562
8888
 
8563
 
#line 8564 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8889
#line 8890 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8564
8890
} // closed Puma
8565
8891
class CCExprResolve;
8566
8892
class CExprResolve;
8583
8909
class CMatchSyntax;
8584
8910
namespace Puma {
8585
8911
 
8586
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
8912
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathManager.h"
8587
8913
class PathManager {
8588
 
#line 8589 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
8914
#line 8915 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8589
8915
  friend class ::CCExprResolve;
8590
8916
  friend class ::CExprResolve;
8591
8917
  friend class ::WinIfExists;
8606
8932
  friend class ::PragmaOnce;
8607
8933
  friend class ::CMatchSyntax;
8608
8934
 
8609
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
8935
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathManager.h"
8610
8936
 
8611
8937
  ErrorStream     *_err;
8612
8938
  Array<PathInfo>  _paths;     // List of directories path.
8616
8942
                               // to its related information
8617
8943
 
8618
8944
  // find all files of a directory tree and add them to _files
8619
 
  void traverse (const char *path);
 
8945
  void traverse (char *path, size_t len);
8620
8946
 
8621
8947
  // find the canonical filename representation for a file
8622
8948
  bool canonFilename (Filename name, Filename &abs_name) const;
8623
 
  
 
8949
 
8624
8950
  // Add a new file to the project file list
8625
8951
  PFMConstIter addFile (const ProjectFile &file);
8626
8952
 
8627
8953
protected:
8628
8954
  // Get the destination directory for a given source directory.
8629
8955
  const char *getDestination (Filename file, ostream * = 0) const;
8630
 
        
 
8956
 
8631
8957
  // Called for every matched file.
8632
8958
  virtual void action (PathIterator &) {}
8633
 
        
 
8959
 
8634
8960
  // Add the separator '/' to the copy of the given string.
8635
8961
  char *addSeparator (const char *) const;
 
8962
  char *addSeparator (const char *s, char *dest) const;
8636
8963
 
8637
8964
public:
8638
 
  PathManager (ErrorStream &e) : _err (&e) {} 
 
8965
  PathManager (ErrorStream &e) : _err (&e) {}
8639
8966
  // Copy-constructor.
8640
8967
  PathManager (PathManager &pm) { _err = pm._err; join (pm); }
8641
8968
  virtual ~PathManager ();
8645
8972
 
8646
8973
  // Iterate the contents of the paths.
8647
8974
  const char *iterate (PathIterator &) const;
8648
 
        
 
8975
 
8649
8976
  // Add a source and destination directories pair.
8650
8977
  virtual void addPath (const char *, const char * = (const char*) 0);
8651
8978
 
8685
9012
  // Configure the project from the command line or a file.
8686
9013
  virtual void configure (const Config &);
8687
9014
 
8688
 
  // Join the paths of the given manager with the paths 
 
9015
  // Join the paths of the given manager with the paths
8689
9016
  // of this path manager.
8690
9017
  virtual void join (PathManager &);
8691
 
        
 
9018
 
8692
9019
  // Get the error stream object.
8693
9020
  ErrorStream &err () const { return *_err; }
8694
9021
 
8695
9022
  // Get the path of a file in the destination directory.
8696
9023
  bool getDestinationPath (const char *filename, ostream &out) const;
8697
 
        
8698
9024
public:
8699
9025
  typedef AC::TL<Puma::ErrorStream *,AC::TL<Puma::Array< Puma::PathInfo >,AC::TL<Puma::Array< Puma::RegComp * >,AC::TL<std::map< std::basic_string< char >,Puma::ProjectFile >,AC::TLE > > > > __AttrTypes;
8700
9026
  const char *__attr_name (unsigned i) const {
8703
9029
  const void *__attr (unsigned __i) const {
8704
9030
    switch (__i) { case 0: return &_err; case 2: return &_paths; case 4: return &_protected; case 5: return &_files; default: return 0; }
8705
9031
  }
8706
 
#line 125 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PathManager.h"
 
9032
#line 125 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PathManager.h"
8707
9033
};
8708
9034
 
8709
 
inline bool PathManager::isBelow (const char *file) const { 
 
9035
inline bool PathManager::isBelow (const char *file) const {
8710
9036
  PFMConstIter iter;
8711
9037
  return isBelow (file, iter);
8712
9038
}
8716
9042
 
8717
9043
#endif /* __path_manager__ */
8718
9044
 
8719
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9045
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitManager.h"
8720
9046
 
8721
 
#line 8722 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9047
#line 9048 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8722
9048
 
8723
9049
#ifndef __ac_fwd_PragmaOnceUnitState__
8724
9050
#define __ac_fwd_PragmaOnceUnitState__
8731
9057
}
8732
9058
#endif
8733
9059
 
8734
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
8735
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
9060
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
9061
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
8736
9062
#endif
8737
9063
 
8738
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9064
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitManager.h"
8739
9065
// This file is part of PUMA.
8740
9066
// Copyright (C) 1999-2003  The PUMA developer team.
8741
9067
//                                                                
8760
9086
// Class UnitManager helps you to have control of all units built.
8761
9087
 
8762
9088
 
8763
 
#line 25 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9089
#line 25 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitManager.h"
8764
9090
#include <list>
8765
9091
 
8766
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9092
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitManager.h"
8767
9093
using namespace std;
8768
9094
 
8769
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9095
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitManager.h"
8770
9096
namespace Puma {
8771
9097
 
8772
9098
 
8775
9101
class Tokenizer;
8776
9102
 
8777
9103
 
8778
 
#line 8779 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9104
#line 9105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8779
9105
} // closed Puma
8780
9106
class CCExprResolve;
8781
9107
class CExprResolve;
8798
9124
class CMatchSyntax;
8799
9125
namespace Puma {
8800
9126
 
8801
 
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9127
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitManager.h"
8802
9128
class UnitManager {
8803
 
#line 8804 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9129
#line 9130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8804
9130
  friend class ::CCExprResolve;
8805
9131
  friend class ::CExprResolve;
8806
9132
  friend class ::WinIfExists;
8821
9147
  friend class ::PragmaOnce;
8822
9148
  friend class ::CMatchSyntax;
8823
9149
 
8824
 
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9150
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitManager.h"
8825
9151
 
8826
9152
public:
8827
9153
  typedef map<string, Unit*> UMap;
8875
9201
  // Initialize the unit manager and the managed 
8876
9202
  // units for the next parse process.
8877
9203
  
8878
 
#line 8879 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9204
#line 9205 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8879
9205
public: __attribute__((always_inline)) inline void __exec_old_init();
8880
9206
 
8881
 
#line 90 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9207
#line 90 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitManager.h"
8882
9208
void init ();
8883
9209
public:
8884
9210
  typedef AC::TL<Puma::ErrorStream *,AC::TL<std::list< Puma::Unit * >,AC::TL<std::map< std::basic_string< char >,Puma::Unit * >,AC::TL<Puma::Tokenizer *,AC::TLE > > > > __AttrTypes;
8888
9214
  const void *__attr (unsigned __i) const {
8889
9215
    switch (__i) { case 2: return &_err; case 4: return &_nonames; case 5: return &_umap; case 6: return &_tokenizer; default: return 0; }
8890
9216
  }
8891
 
#line 91 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitManager.h"
 
9217
#line 91 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitManager.h"
8892
9218
};
8893
9219
 
8894
9220
 
8896
9222
 
8897
9223
#endif /* __UnitManager__ */
8898
9224
 
8899
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SaveMode.h"
 
9225
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SaveMode.h"
8900
9226
// This file is part of PUMA.
8901
9227
// Copyright (C) 1999-2003  The PUMA developer team.
8902
9228
//                                                                
8923
9249
 
8924
9250
// Project file save mode.
8925
9251
 
8926
 
#line 8927 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9252
#line 9253 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8927
9253
} // closed Puma
8928
9254
class CCExprResolve;
8929
9255
class CExprResolve;
8946
9272
class CMatchSyntax;
8947
9273
namespace Puma {
8948
9274
 
8949
 
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SaveMode.h"
 
9275
#line 26 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SaveMode.h"
8950
9276
struct SaveMode {
8951
 
#line 8952 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9277
#line 9278 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
8952
9278
  friend class ::CCExprResolve;
8953
9279
  friend class ::CExprResolve;
8954
9280
  friend class ::WinIfExists;
8969
9295
  friend class ::PragmaOnce;
8970
9296
  friend class ::CMatchSyntax;
8971
9297
 
8972
 
#line 26 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SaveMode.h"
 
9298
#line 26 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SaveMode.h"
8973
9299
 
8974
9300
  enum Mode { 
8975
9301
    OVERWRITE = 1, 
8984
9310
  const void *__attr (unsigned __i) const {
8985
9311
    switch (__i) { default: return 0; }
8986
9312
  }
8987
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/SaveMode.h"
 
9313
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/SaveMode.h"
8988
9314
};
8989
9315
    
8990
9316
 
8992
9318
 
8993
9319
#endif /* __SaveMode__ */
8994
9320
 
8995
 
#line 28 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9321
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Project.h"
8996
9322
#include <fstream>
8997
9323
 
8998
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9324
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Project.h"
8999
9325
using namespace std;
9000
9326
 
9001
9327
namespace Puma {
9002
9328
 
9003
9329
 
9004
9330
 
9005
 
#line 9006 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9331
#line 9332 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9006
9332
} // closed Puma
9007
9333
class CCExprResolve;
9008
9334
class CExprResolve;
9025
9351
class CMatchSyntax;
9026
9352
namespace Puma {
9027
9353
 
9028
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9354
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Project.h"
9029
9355
class Project : public PathManager, public SaveMode {
9030
 
#line 9031 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9356
#line 9357 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9031
9357
  friend class ::CCExprResolve;
9032
9358
  friend class ::CExprResolve;
9033
9359
  friend class ::WinIfExists;
9048
9374
  friend class ::PragmaOnce;
9049
9375
  friend class ::CMatchSyntax;
9050
9376
 
9051
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9377
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Project.h"
9052
9378
 
9053
9379
  UnitManager  _unitManager; 
9054
9380
  const char  *_suffix;           // Current file name suffix.
9130
9456
  const void *__attr (unsigned __i) const {
9131
9457
    switch (__i) { case 0: return &_unitManager; case 1: return &_suffix; case 2: return &_mode; default: return 0; }
9132
9458
  }
9133
 
#line 108 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/Project.h"
 
9459
#line 108 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Project.h"
9134
9460
};
9135
9461
 
9136
9462
inline UnitManager &Project::unitManager () 
9144
9470
 
9145
9471
#endif /* __project__ */
9146
9472
 
9147
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9473
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
9148
9474
 
9149
 
#line 9150 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9475
#line 9476 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9150
9476
 
9151
9477
#ifndef __ac_fwd_ExtACKeywords__
9152
9478
#define __ac_fwd_ExtACKeywords__
9161
9487
}
9162
9488
#endif
9163
9489
 
9164
 
#ifndef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
9165
 
#define __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
9166
 
#endif
9167
 
 
9168
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9490
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
9491
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
9492
#endif
 
9493
 
 
9494
#ifndef __ac_fwd_ExtGnu__
 
9495
#define __ac_fwd_ExtGnu__
 
9496
class ExtGnu;
 
9497
namespace AC {
 
9498
  template <class JoinPoint>
 
9499
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
9500
  template <class JoinPoint>
 
9501
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
9502
  template <class JoinPoint>
 
9503
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_around (JoinPoint *tjp);
 
9504
  template <class JoinPoint>
 
9505
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_after (JoinPoint *tjp);
 
9506
  template <class JoinPoint>
 
9507
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
9508
  template <class JoinPoint>
 
9509
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
9510
  template <class JoinPoint>
 
9511
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
9512
  template <class JoinPoint>
 
9513
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
9514
  template <class JoinPoint>
 
9515
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_around (JoinPoint *tjp);
 
9516
  template <class JoinPoint>
 
9517
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
9518
  template <class JoinPoint>
 
9519
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
9520
  template <class JoinPoint>
 
9521
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_after (JoinPoint *tjp);
 
9522
  template <class JoinPoint>
 
9523
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
9524
  template <class JoinPoint>
 
9525
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_before (JoinPoint *tjp);
 
9526
  template <class JoinPoint>
 
9527
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
9528
  template <class JoinPoint>
 
9529
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
9530
  template <class JoinPoint>
 
9531
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
9532
  template <class JoinPoint>
 
9533
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
9534
  template <class JoinPoint>
 
9535
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_after (JoinPoint *tjp);
 
9536
  template <class JoinPoint>
 
9537
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_after (JoinPoint *tjp);
 
9538
  template <class JoinPoint>
 
9539
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_before (JoinPoint *tjp);
 
9540
  template <class JoinPoint>
 
9541
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a21_around (JoinPoint *tjp);
 
9542
  template <class JoinPoint>
 
9543
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a22_after (JoinPoint *tjp);
 
9544
  template <class JoinPoint>
 
9545
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a23_before (JoinPoint *tjp);
 
9546
  template <class JoinPoint>
 
9547
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a24_around (JoinPoint *tjp);
 
9548
  template <class JoinPoint>
 
9549
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a25_after (JoinPoint *tjp);
 
9550
}
 
9551
#endif
 
9552
 
 
9553
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
9554
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
9555
#endif
 
9556
 
 
9557
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
9169
9558
// This file is part of PUMA.
9170
9559
// Copyright (C) 1999-2003  The PUMA developer team.
9171
9560
//                                                                
9202
9591
class Token;
9203
9592
 
9204
9593
 
9205
 
#line 9206 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9594
#line 9595 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9206
9595
} // closed Puma
9207
9596
class CCExprResolve;
9208
9597
class CExprResolve;
9225
9614
class CMatchSyntax;
9226
9615
namespace Puma {
9227
9616
 
9228
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9617
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
9229
9618
class CScanner : public CRecognizer, public Tokenizer {
9230
 
#line 9231 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9619
#line 9620 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9231
9620
  friend class ::CCExprResolve;
9232
9621
  friend class ::CExprResolve;
9233
9622
  friend class ::WinIfExists;
9248
9637
  friend class ::PragmaOnce;
9249
9638
  friend class ::CMatchSyntax;
9250
9639
 
9251
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9640
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
9252
9641
 
9253
9642
  Location loc;
9254
9643
  ErrorSink &err;
9261
9650
public:
9262
9651
  CScanner (ErrorSink &error_stream) : err (error_stream) {}
9263
9652
  virtual ~CScanner () {}
9264
 
  void configure (const Config &);
9265
 
  
9266
 
#line 9267 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9653
  
 
9654
#line 9655 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
9655
public: __attribute__((always_inline)) inline void __exec_old_configure(const ::Puma::Config & );
 
9656
 
 
9657
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9658
void configure (const Config &);
 
9659
  
 
9660
#line 9661 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9267
9661
public: __attribute__((always_inline)) inline void __exec_old_fill_unit(::Puma::Source & in,::Puma::Unit & unit);
9268
9662
 
9269
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9663
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
9270
9664
void fill_unit (Source &in, Unit &unit);
9271
9665
  
9272
 
#line 9273 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9666
#line 9667 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9273
9667
public: __attribute__((always_inline)) inline void __exec_old_fill_unit(const char * in,::Puma::Unit & unit);
9274
9668
 
9275
 
#line 50 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9669
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
9276
9670
void fill_unit (const char *in, Unit &unit);
9277
9671
public:
9278
9672
  typedef AC::TL<Puma::Location,AC::TL<Puma::ErrorSink &,AC::TLE > > __AttrTypes;
9282
9676
  const void *__attr (unsigned __i) const {
9283
9677
    switch (__i) { case 0: return &loc; case 1: return &err; default: return 0; }
9284
9678
  }
9285
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CScanner.h"
 
9679
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScanner.h"
9286
9680
};
9287
9681
 
9288
9682
 
9290
9684
 
9291
9685
#endif /* __c_scanner_h__ */
9292
9686
 
9293
 
#line 29 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
9687
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProject.h"
9294
9688
namespace Puma {
9295
9689
 
9296
9690
 
9298
9692
class CTypeInfo;
9299
9693
 
9300
9694
 
9301
 
#line 9302 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9695
#line 9696 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9302
9696
} // closed Puma
9303
9697
class CCExprResolve;
9304
9698
class CExprResolve;
9321
9715
class CMatchSyntax;
9322
9716
namespace Puma {
9323
9717
 
9324
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
9718
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProject.h"
9325
9719
class CProject : public Project {
9326
 
#line 9327 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9720
#line 9721 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9327
9721
  friend class ::CCExprResolve;
9328
9722
  friend class ::CExprResolve;
9329
9723
  friend class ::WinIfExists;
9344
9738
  friend class ::PragmaOnce;
9345
9739
  friend class ::CMatchSyntax;
9346
9740
 
9347
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
9741
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProject.h"
9348
9742
 
9349
9743
  Config _config;
9350
9744
  CScanner _scanner;
9380
9774
  // Scan the file `file' or the source if given. When
9381
9775
  // scanning a source the resulting unit gets the name `file'.
9382
9776
  
9383
 
#line 9384 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9777
#line 9778 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9384
9778
public: __attribute__((always_inline)) inline ::Puma::Unit * __exec_old_scanFile(const char * file,::Puma::Source * ,bool isFile);
9385
9779
 
9386
 
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
9780
#line 69 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProject.h"
9387
9781
virtual Unit *scanFile (const char *file, Source * = (Source*)0, 
9388
9782
                          bool isFile = true);
9389
9783
        
9409
9803
  const void *__attr (unsigned __i) const {
9410
9804
    switch (__i) { case 0: return &_config; case 1: return &_scanner; default: return 0; }
9411
9805
  }
9412
 
#line 86 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CProject.h"
 
9806
#line 86 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProject.h"
9413
9807
};
9414
9808
 
9415
9809
inline Config &CProject::config () 
9422
9816
 
9423
9817
#endif /* __CProject_h__ */
9424
9818
 
9425
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
 
9819
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
9426
9820
// This file is part of PUMA.
9427
9821
// Copyright (C) 1999-2003  The PUMA developer team.
9428
9822
//                                                                
9447
9841
// Iterator for token units.
9448
9842
 
9449
9843
 
9450
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
 
9844
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
9451
9845
namespace Puma {
9452
9846
 
9453
9847
 
9454
9848
class Token;
9455
9849
 
9456
9850
 
9457
 
#line 9458 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9851
#line 9852 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9458
9852
} // closed Puma
9459
9853
class CCExprResolve;
9460
9854
class CExprResolve;
9477
9871
class CMatchSyntax;
9478
9872
namespace Puma {
9479
9873
 
9480
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
 
9874
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
9481
9875
class UnitIterator {
9482
 
#line 9483 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
9876
#line 9877 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9483
9877
  friend class ::CCExprResolve;
9484
9878
  friend class ::CExprResolve;
9485
9879
  friend class ::WinIfExists;
9500
9894
  friend class ::PragmaOnce;
9501
9895
  friend class ::CMatchSyntax;
9502
9896
 
9503
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
 
9897
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
9504
9898
 
9505
9899
  Unit  *_unit;           // Unit to iterate.
9506
9900
  Token *_current;        // The current token.
9529
9923
  const void *__attr (unsigned __i) const {
9530
9924
    switch (__i) { case 0: return &_unit; case 1: return &_current; default: return 0; }
9531
9925
  }
9532
 
#line 52 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
 
9926
#line 52 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/UnitIterator.h"
9533
9927
};
9534
9928
 
9535
9929
 
9537
9931
 
9538
9932
#endif /* __unit_iterator__ */
9539
9933
 
9540
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
9934
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
9541
9935
// This file is part of PUMA.
9542
9936
// Copyright (C) 1999-2003  The PUMA developer team.
9543
9937
//                                                                
9563
9957
 *  Entity type information. */
9564
9958
 
9565
9959
 
9566
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
9960
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
9567
9961
namespace Puma {
9568
9962
 
9569
9963
 
9616
10010
 * }
9617
10011
 *  \endcode */
9618
10012
 
9619
 
#line 9620 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
10013
#line 10014 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9620
10014
} // closed Puma
9621
10015
class CCExprResolve;
9622
10016
class CExprResolve;
9639
10033
class CMatchSyntax;
9640
10034
namespace Puma {
9641
10035
 
9642
 
#line 78 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
10036
#line 78 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
9643
10037
class CTypeInfo : public Printable {
9644
 
#line 9645 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
10038
#line 10039 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
9645
10039
  friend class ::CCExprResolve;
9646
10040
  friend class ::CExprResolve;
9647
10041
  friend class ::WinIfExists;
9662
10056
  friend class ::PragmaOnce;
9663
10057
  friend class ::CMatchSyntax;
9664
10058
 
9665
 
#line 78 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
10059
#line 78 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
9666
10060
 
9667
10061
  // needed for type printing
9668
10062
  enum PrintState {
9671
10065
    PRINT_ABS = 2,  // printing absolute names
9672
10066
    PRINT_TPL = 4,  // printing template argument list
9673
10067
    PRINT_TDN = 8,  // print typedef names instead of defined type
9674
 
    PRINT_ELA = 16  // print elaborated type specifiers (struct, enum, union)
 
10068
    PRINT_ELA = 16, // print elaborated type specifiers (struct, enum, union)
 
10069
    PRINT_INE = 32  // elaborated type speficier already issued ("in elaborated")
9675
10070
  };
9676
10071
 
9677
10072
public:
9680
10075
    // DO NOT CHANGE THIS ORDER!!!
9681
10076
    /** bool */
9682
10077
    TYPE_BOOL,
 
10078
    /** _Bool */
 
10079
    TYPE_C_BOOL,
9683
10080
    /** signed char */
9684
10081
    TYPE_SIGNED_CHAR,
9685
10082
    /** unsiged char */
9824
10221
  
9825
10222
  /** Check if this type or one of its base types depends on 
9826
10223
   *  a template parameter. 
9827
 
   *  \param consider_unknown_t Consider unknown_t as dependent. */
9828
 
  bool isDependent (bool consider_unknown_t = true) const;
 
10224
   *  \param consider_unknown_t Consider unknown_t as dependent. 
 
10225
   *  \param is_named_type Type of named type. */
 
10226
  bool isDependent (bool consider_unknown_t = true, bool is_named_type = false) const;
9829
10227
 
9830
10228
  /** Check if this type is \e const qualified. */
9831
10229
  bool isConst () const;
9930
10328
  bool isClass () const;
9931
10329
  /** Check if this is a union type. */
9932
10330
  bool isUnion () const;
 
10331
  /** Check if this is a class or union type. */
 
10332
  bool isClassOrUnion () const;
9933
10333
  /** Check if this is an array type. */
9934
10334
  bool isArray () const;
9935
10335
  /** Check if this is a fixed length array type. */
9976
10376
   *  complete non-function type. 
9977
10377
   *  \param pos Optional source code position. */
9978
10378
  bool isObject (unsigned long pos = 0) const;
 
10379
  /** Check if this is a plain old data (POD) type. */
 
10380
  bool isPOD () const;
9979
10381
 
9980
10382
  // Primitive types.
9981
 
  /** Check if the ID of this type is CTypeInfo::TYPE_BOOL. */
 
10383
  /** Check if the ID of this type is CTypeInfo::TYPE_BOOL or CTypeInfo::TYPE_C_BOOL. */
9982
10384
  bool is_bool () const;
9983
10385
  /** Check if the ID of this type is CTypeInfo::TYPE_CHAR. */
9984
10386
  bool is_char () const;
10047
10449
   *  \note Language C only!
10048
10450
   *  \param type The type to compare with. */
10049
10451
  bool operator <(const CTypeInfo &type) const;
10050
 
  
 
10452
 
10051
10453
  /** Get the rank of this type if it is an arithmetic type.
10052
10454
   *  \note Language C++ only! 
10053
10455
   *  \return The rank or 0 if not an arithmetic type. */
10054
10456
  unsigned rank () const;
10055
 
  
 
10457
 
 
10458
  /** Check if this is the type of a template instance argument
 
10459
   *  declaration. These declarations are generated and have
 
10460
   *  to be handled special. */
 
10461
  bool isTemplateInstanceArg () const;
 
10462
 
10056
10463
public:
10057
10464
  /** Make a duplicate of the given type.
10058
10465
   *  \param type The type to duplicate. */
10071
10478
  void Mangled (ostream &os) const;
10072
10479
 
10073
10480
private:
10074
 
  bool equalTemplateParams (CTemplateParamInfo *p1, CTemplateParamInfo *p2) const;
10075
10481
  void TypeText (char, ostream &, const char * = (const char*)0) const;
10076
10482
  void printName (char, ostream &, CObjectInfo *) const;
10077
10483
  void printScope (char, ostream &, CObjectInfo *) const;
10081
10487
    static const char *names[] = { "_Base", "_Id", "_TypedefInfo" }; return names[i];
10082
10488
  }
10083
10489
  const void *__attr (unsigned __i) const {
10084
 
    switch (__i) { case 41: return &_Base; case 42: return &_Id; case 43: return &_TypedefInfo; default: return 0; }
 
10490
    switch (__i) { case 43: return &_Base; case 44: return &_Id; case 45: return &_TypedefInfo; default: return 0; }
10085
10491
  }
10086
 
#line 490 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
10492
#line 502 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
10087
10493
};
10088
10494
 
10089
10495
/** Empty type. */
10093
10499
 
10094
10500
 
10095
10501
 
10096
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
 
10502
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
10097
10503
// This file is part of PUMA.
10098
10504
// Copyright (C) 1999-2003  The PUMA developer team.
10099
10505
//                                                                
10130
10536
 *  Primitive type. Fundamental arithmetic types and 
10131
10537
 *  type void are called primitive types. */
10132
10538
 
10133
 
#line 10134 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
10539
#line 10540 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10134
10540
} // closed Puma
10135
10541
class CCExprResolve;
10136
10542
class CExprResolve;
10153
10559
class CMatchSyntax;
10154
10560
namespace Puma {
10155
10561
 
10156
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
 
10562
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
10157
10563
class CTypePrimitive : public CTypeInfo {
10158
 
#line 10159 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
10564
#line 10565 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10159
10565
  friend class ::CCExprResolve;
10160
10566
  friend class ::CExprResolve;
10161
10567
  friend class ::WinIfExists;
10176
10582
  friend class ::PragmaOnce;
10177
10583
  friend class ::CMatchSyntax;
10178
10584
 
10179
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
 
10585
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
10180
10586
 
10181
10587
  const char *_Text;
10182
10588
 
10198
10604
  const void *__attr (unsigned __i) const {
10199
10605
    switch (__i) { case 0: return &_Text; default: return 0; }
10200
10606
  }
10201
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
 
10607
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypePrimitive.h"
10202
10608
};
10203
10609
 
10204
10610
inline CTypePrimitive::CTypePrimitive (const char *t, CTypeInfo::TypeId id) :
10215
10621
 
10216
10622
/** bool */
10217
10623
extern CTypePrimitive CTYPE_BOOL;
 
10624
/** _Bool */
 
10625
extern CTypePrimitive CTYPE_C_BOOL;
10218
10626
/** char */
10219
10627
extern CTypePrimitive CTYPE_CHAR;
10220
10628
/** signed char */
10259
10667
 
10260
10668
#endif /* __CTypePrimitive_h__ */
10261
10669
 
10262
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
 
10670
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
10263
10671
// This file is part of PUMA.
10264
10672
// Copyright (C) 1999-2003  The PUMA developer team.
10265
10673
//                                                                
10308
10716
 *                      //     CTypePrimitive char
10309
10717
 *  \endcode */
10310
10718
 
10311
 
#line 10312 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
10719
#line 10720 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10312
10720
} // closed Puma
10313
10721
class CCExprResolve;
10314
10722
class CExprResolve;
10331
10739
class CMatchSyntax;
10332
10740
namespace Puma {
10333
10741
 
10334
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
 
10742
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
10335
10743
class CTypeQualified : public CTypeInfo {
10336
 
#line 10337 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
10744
#line 10745 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10337
10745
  friend class ::CCExprResolve;
10338
10746
  friend class ::CExprResolve;
10339
10747
  friend class ::WinIfExists;
10354
10762
  friend class ::PragmaOnce;
10355
10763
  friend class ::CMatchSyntax;
10356
10764
 
10357
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
 
10765
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
10358
10766
 
10359
10767
  bool _QualConst;
10360
10768
  bool _QualVolatile;
10403
10811
  const void *__attr (unsigned __i) const {
10404
10812
    switch (__i) { case 0: return &_QualConst; case 1: return &_QualVolatile; case 2: return &_QualRestrict; default: return 0; }
10405
10813
  }
10406
 
#line 88 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
 
10814
#line 88 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeQualified.h"
10407
10815
};
10408
10816
 
10409
10817
inline CTypeQualified::CTypeQualified (CTypeInfo *base, bool c, bool v, bool r, 
10441
10849
 
10442
10850
#endif /* __CTypeQualified_h__ */
10443
10851
 
10444
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
 
10852
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
10445
10853
// This file is part of PUMA.
10446
10854
// Copyright (C) 1999-2003  The PUMA developer team.
10447
10855
//                                                                
10489
10897
 *                   //     CTypeClass X
10490
10898
 *  \endcode */
10491
10899
 
10492
 
#line 10493 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
10900
#line 10901 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10493
10901
} // closed Puma
10494
10902
class CCExprResolve;
10495
10903
class CExprResolve;
10512
10920
class CMatchSyntax;
10513
10921
namespace Puma {
10514
10922
 
10515
 
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
 
10923
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
10516
10924
class CTypeAddress : public CTypeInfo {
10517
 
#line 10518 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
10925
#line 10926 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10518
10926
  friend class ::CCExprResolve;
10519
10927
  friend class ::CExprResolve;
10520
10928
  friend class ::WinIfExists;
10535
10943
  friend class ::PragmaOnce;
10536
10944
  friend class ::CMatchSyntax;
10537
10945
 
10538
 
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
 
10946
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
10539
10947
 
10540
10948
public:
10541
10949
  /** Constructor. Type has id CTypeInfo::TYPE_ADDRESS.
10547
10955
  typedef AC::TLE __AttrTypes;
10548
10956
  const char *__attr_name (unsigned i) const { return 0; }
10549
10957
  const void *__attr (unsigned __i) const { return 0; }
10550
 
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
 
10958
#line 54 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeAddress.h"
10551
10959
};
10552
10960
 
10553
10961
inline CTypeAddress::CTypeAddress (CTypeInfo *base) :
10561
10969
 
10562
10970
#endif /* __CTypeAddress_h__ */
10563
10971
 
10564
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
 
10972
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
10565
10973
// This file is part of PUMA.
10566
10974
// Copyright (C) 1999-2003  The PUMA developer team.
10567
10975
//                                                                
10606
11014
 * };
10607
11015
 *  \endcode */
10608
11016
 
10609
 
#line 10610 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11017
#line 11018 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10610
11018
} // closed Puma
10611
11019
class CCExprResolve;
10612
11020
class CExprResolve;
10629
11037
class CMatchSyntax;
10630
11038
namespace Puma {
10631
11039
 
10632
 
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
 
11040
#line 44 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
10633
11041
class CTypeBitField : public CTypeInfo {
10634
 
#line 10635 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11042
#line 11043 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10635
11043
  friend class ::CCExprResolve;
10636
11044
  friend class ::CExprResolve;
10637
11045
  friend class ::WinIfExists;
10652
11060
  friend class ::PragmaOnce;
10653
11061
  friend class ::CMatchSyntax;
10654
11062
 
10655
 
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
 
11063
#line 44 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
10656
11064
 
10657
11065
  long int _Size;
10658
11066
 
10676
11084
  const void *__attr (unsigned __i) const {
10677
11085
    switch (__i) { case 0: return &_Size; default: return 0; }
10678
11086
  }
10679
 
#line 59 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
 
11087
#line 59 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeBitField.h"
10680
11088
};
10681
11089
 
10682
11090
inline CTypeBitField::CTypeBitField (CTypeInfo *base) :
10696
11104
 
10697
11105
#endif /* __CTypeBitField_h__ */
10698
11106
 
10699
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
 
11107
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
10700
11108
// This file is part of PUMA.
10701
11109
// Copyright (C) 1999-2003  The PUMA developer team.
10702
11110
//                                                                
10744
11152
 *                 //     CTypePrimitive char
10745
11153
 *  \endcode */
10746
11154
 
10747
 
#line 10748 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11155
#line 11156 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10748
11156
} // closed Puma
10749
11157
class CCExprResolve;
10750
11158
class CExprResolve;
10767
11175
class CMatchSyntax;
10768
11176
namespace Puma {
10769
11177
 
10770
 
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
 
11178
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
10771
11179
class CTypeArray : public CTypeInfo {
10772
 
#line 10773 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11180
#line 11181 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10773
11181
  friend class ::CCExprResolve;
10774
11182
  friend class ::CExprResolve;
10775
11183
  friend class ::WinIfExists;
10790
11198
  friend class ::PragmaOnce;
10791
11199
  friend class ::CMatchSyntax;
10792
11200
 
10793
 
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
 
11201
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
10794
11202
 
10795
11203
  long int _Size;
10796
11204
  bool _isFixed;
10850
11258
  const void *__attr (unsigned __i) const {
10851
11259
    switch (__i) { case 0: return &_Size; case 1: return &_isFixed; case 2: return &_Quals; case 3: return &_DepDim; case 4: return &_hasDim; default: return 0; }
10852
11260
  }
10853
 
#line 98 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
 
11261
#line 98 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeArray.h"
10854
11262
};
10855
11263
 
10856
11264
inline CTypeArray::CTypeArray (CTypeInfo *base, CTypeQualified *quals, bool has_dimension) :
10870
11278
  _hasDim (false)
10871
11279
 {}
10872
11280
inline CTypeArray::~CTypeArray ()
10873
 
 { if (_Quals) CTypeInfo::Destroy (_Quals); }
 
11281
 {}
10874
11282
 
10875
11283
inline void CTypeArray::Dimension (long int d)
10876
11284
 { _Size = d; }
10900
11308
 
10901
11309
#endif /* __CTypeArray_h__ */
10902
11310
 
10903
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
 
11311
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
10904
11312
// This file is part of PUMA.
10905
11313
// Copyright (C) 1999-2003  The PUMA developer team.
10906
11314
//                                                                
10942
11350
 * }
10943
11351
 *  \endcode */
10944
11352
 
10945
 
#line 10946 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11353
#line 11354 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10946
11354
} // closed Puma
10947
11355
class CCExprResolve;
10948
11356
class CExprResolve;
10965
11373
class CMatchSyntax;
10966
11374
namespace Puma {
10967
11375
 
10968
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
 
11376
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
10969
11377
class CTypeVarArray : public CTypeArray {
10970
 
#line 10971 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11378
#line 11379 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
10971
11379
  friend class ::CCExprResolve;
10972
11380
  friend class ::CExprResolve;
10973
11381
  friend class ::WinIfExists;
10988
11396
  friend class ::PragmaOnce;
10989
11397
  friend class ::CMatchSyntax;
10990
11398
 
10991
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
 
11399
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
10992
11400
 
10993
11401
public:
10994
11402
  /** Constructor. Type has id CTypeInfo::TYPE_VAR_ARRAY.
11001
11409
  typedef AC::TLE __AttrTypes;
11002
11410
  const char *__attr_name (unsigned i) const { return 0; }
11003
11411
  const void *__attr (unsigned __i) const { return 0; }
11004
 
#line 49 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
 
11412
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeVarArray.h"
11005
11413
};
11006
11414
 
11007
11415
inline CTypeVarArray::CTypeVarArray (CTypeInfo *base, CTypeQualified *quals) :
11015
11423
 
11016
11424
#endif /* __CTypeVarArray_h__ */
11017
11425
 
11018
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
 
11426
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
11019
11427
// This file is part of PUMA.
11020
11428
// Copyright (C) 1999-2003  The PUMA developer team.
11021
11429
//                                                                
11063
11471
 *                       //     CTypePrimitive char
11064
11472
 *  \endcode */
11065
11473
 
11066
 
#line 11067 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11474
#line 11475 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11067
11475
} // closed Puma
11068
11476
class CCExprResolve;
11069
11477
class CExprResolve;
11086
11494
class CMatchSyntax;
11087
11495
namespace Puma {
11088
11496
 
11089
 
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
 
11497
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
11090
11498
class CTypePointer : public CTypeInfo {
11091
 
#line 11092 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11499
#line 11500 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11092
11500
  friend class ::CCExprResolve;
11093
11501
  friend class ::CExprResolve;
11094
11502
  friend class ::WinIfExists;
11109
11517
  friend class ::PragmaOnce;
11110
11518
  friend class ::CMatchSyntax;
11111
11519
 
11112
 
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
 
11520
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
11113
11521
 
11114
11522
protected:
11115
11523
  /** Constructor.
11127
11535
  typedef AC::TLE __AttrTypes;
11128
11536
  const char *__attr_name (unsigned i) const { return 0; }
11129
11537
  const void *__attr (unsigned __i) const { return 0; }
11130
 
#line 60 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
 
11538
#line 60 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypePointer.h"
11131
11539
};
11132
11540
 
11133
11541
inline CTypePointer::CTypePointer (CTypeInfo *base) :
11144
11552
 
11145
11553
#endif /* __CTypePointer_h__ */
11146
11554
 
11147
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
 
11555
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
11148
11556
// This file is part of PUMA.
11149
11557
// Copyright (C) 1999-2003  The PUMA developer team.
11150
11558
//                                                                
11198
11606
 *                                 //     CTypePrimitive void
11199
11607
 *  \endcode */
11200
11608
 
11201
 
#line 11202 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11609
#line 11610 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11202
11610
} // closed Puma
11203
11611
class CCExprResolve;
11204
11612
class CExprResolve;
11221
11629
class CMatchSyntax;
11222
11630
namespace Puma {
11223
11631
 
11224
 
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
 
11632
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
11225
11633
class CTypeMemberPointer : public CTypePointer {
11226
 
#line 11227 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11634
#line 11635 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11227
11635
  friend class ::CCExprResolve;
11228
11636
  friend class ::CExprResolve;
11229
11637
  friend class ::WinIfExists;
11244
11652
  friend class ::PragmaOnce;
11245
11653
  friend class ::CMatchSyntax;
11246
11654
 
11247
 
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
 
11655
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
11248
11656
 
11249
11657
  CObjectInfo *_Class;
11250
11658
 
11269
11677
  const void *__attr (unsigned __i) const {
11270
11678
    switch (__i) { case 0: return &_Class; default: return 0; }
11271
11679
  }
11272
 
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
 
11680
#line 69 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeMemberPointer.h"
11273
11681
};
11274
11682
 
11275
11683
inline CTypeMemberPointer::CTypeMemberPointer (CTypeInfo *base, CObjectInfo *c) :
11284
11692
 
11285
11693
#endif /* __CTypeMemberPointer_h__ */
11286
11694
 
11287
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
11695
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
11288
11696
// This file is part of PUMA.
11289
11697
// Copyright (C) 1999-2003  The PUMA developer team.
11290
11698
//                                                                
11315
11723
#endif
11316
11724
 
11317
11725
 
11318
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
11726
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeList.h"
11319
11727
// This file is part of PUMA.
11320
11728
// Copyright (C) 1999-2003  The PUMA developer team.
11321
11729
//                                                                
11341
11749
 *  Type list. */
11342
11750
 
11343
11751
 
11344
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
11752
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeList.h"
11345
11753
namespace Puma {
11346
11754
 
11347
11755
 
11353
11761
 *  %List of types. Used for instance for the list of function
11354
11762
 *  parameter types. */
11355
11763
 
11356
 
#line 11357 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11764
#line 11765 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11357
11765
} // closed Puma
11358
11766
class CCExprResolve;
11359
11767
class CExprResolve;
11376
11784
class CMatchSyntax;
11377
11785
namespace Puma {
11378
11786
 
11379
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
11787
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeList.h"
11380
11788
class CTypeList {
11381
 
#line 11382 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11789
#line 11790 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11382
11790
  friend class ::CCExprResolve;
11383
11791
  friend class ::CExprResolve;
11384
11792
  friend class ::WinIfExists;
11399
11807
  friend class ::PragmaOnce;
11400
11808
  friend class ::CMatchSyntax;
11401
11809
 
11402
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
11810
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeList.h"
11403
11811
 
11404
11812
  Array<CTypeInfo*> _List;
11405
11813
  CT_ArgDeclList *_ArgumentList;
11442
11850
  const void *__attr (unsigned __i) const {
11443
11851
    switch (__i) { case 1: return &_List; case 2: return &_ArgumentList; default: return 0; }
11444
11852
  }
11445
 
#line 71 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeList.h"
 
11853
#line 71 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeList.h"
11446
11854
};
11447
11855
 
11448
11856
inline CTypeList::CTypeList (int len) :
11472
11880
 
11473
11881
#endif /* __CTypeList_h__ */
11474
11882
 
11475
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
11883
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
11476
11884
namespace Puma {
11477
11885
 
11478
11886
 
11490
11898
 *                 //   CTypePrimitive void
11491
11899
 *  \endcode */
11492
11900
 
11493
 
#line 11494 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11901
#line 11902 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11494
11902
} // closed Puma
11495
11903
class CCExprResolve;
11496
11904
class CExprResolve;
11513
11921
class CMatchSyntax;
11514
11922
namespace Puma {
11515
11923
 
11516
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
11924
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
11517
11925
class CTypeFunction : public CTypeQualified {
11518
 
#line 11519 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
11926
#line 11927 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11519
11927
  friend class ::CCExprResolve;
11520
11928
  friend class ::CExprResolve;
11521
11929
  friend class ::WinIfExists;
11536
11944
  friend class ::PragmaOnce;
11537
11945
  friend class ::CMatchSyntax;
11538
11946
 
11539
 
#line 48 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
11947
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
11540
11948
 
11541
11949
  CTypeList *_ArgTypes;
11542
11950
  CFunctionInfo *_Function;
11577
11985
  const void *__attr (unsigned __i) const {
11578
11986
    switch (__i) { case 0: return &_ArgTypes; case 1: return &_Function; case 2: return &_hasPrototype; default: return 0; }
11579
11987
  }
11580
 
#line 80 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
 
11988
#line 80 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeFunction.h"
11581
11989
};
11582
11990
 
11583
11991
inline CTypeFunction::CTypeFunction (CTypeInfo *base, CTypeList *l, 
11606
12014
 
11607
12015
#endif /* __CTypeFunction_h__ */
11608
12016
 
11609
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
 
12017
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
11610
12018
// This file is part of PUMA.
11611
12019
// Copyright (C) 1999-2003  The PUMA developer team.
11612
12020
//                                                                
11650
12058
 * enum { C,D } a;    // a has type 'enum <anonymous>'
11651
12059
 *  \endcode */
11652
12060
 
11653
 
#line 11654 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12061
#line 12062 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11654
12062
} // closed Puma
11655
12063
class CCExprResolve;
11656
12064
class CExprResolve;
11673
12081
class CMatchSyntax;
11674
12082
namespace Puma {
11675
12083
 
11676
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
 
12084
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
11677
12085
class CTypeEnum : public CTypeInfo {
11678
 
#line 11679 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12086
#line 12087 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11679
12087
  friend class ::CCExprResolve;
11680
12088
  friend class ::CExprResolve;
11681
12089
  friend class ::WinIfExists;
11696
12104
  friend class ::PragmaOnce;
11697
12105
  friend class ::CMatchSyntax;
11698
12106
 
11699
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
 
12107
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
11700
12108
 
11701
12109
  CEnumInfo *_Enum;
11702
12110
 
11725
12133
  const void *__attr (unsigned __i) const {
11726
12134
    switch (__i) { case 0: return &_Enum; default: return 0; }
11727
12135
  }
11728
 
#line 63 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
 
12136
#line 63 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeEnum.h"
11729
12137
};
11730
12138
 
11731
12139
inline CTypeEnum::CTypeEnum (CEnumInfo *e) :
11743
12151
 
11744
12152
#endif /* __CTypeEnum_h__ */
11745
12153
 
11746
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
 
12154
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
11747
12155
// This file is part of PUMA.
11748
12156
// Copyright (C) 1999-2003  The PUMA developer team.
11749
12157
//                                                                
11781
12189
/** \class CTypeRecord CTypeRecord.h Puma/CTypeInfo.h
11782
12190
 *  Type of a class or union. */ 
11783
12191
 
11784
 
#line 11785 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12192
#line 12193 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11785
12193
} // closed Puma
11786
12194
class CCExprResolve;
11787
12195
class CExprResolve;
11804
12212
class CMatchSyntax;
11805
12213
namespace Puma {
11806
12214
 
11807
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
 
12215
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
11808
12216
class CTypeRecord : public CTypeInfo {
11809
 
#line 11810 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12217
#line 12218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11810
12218
  friend class ::CCExprResolve;
11811
12219
  friend class ::CExprResolve;
11812
12220
  friend class ::WinIfExists;
11827
12235
  friend class ::PragmaOnce;
11828
12236
  friend class ::CMatchSyntax;
11829
12237
 
11830
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
 
12238
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
11831
12239
 
11832
12240
  bool _hasConstMember;
11833
12241
 
11875
12283
  const void *__attr (unsigned __i) const {
11876
12284
    switch (__i) { case 0: return &_hasConstMember; case 1: return &_Size; case 2: return &_Align; case 3: return &_Record; default: return 0; }
11877
12285
  }
11878
 
#line 76 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
 
12286
#line 76 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeRecord.h"
11879
12287
};
11880
12288
 
11881
12289
inline CTypeRecord::CTypeRecord (CTypeInfo::TypeId id, CRecord *r) :
11906
12314
 
11907
12315
#endif /* __CTypeRecord_h__ */
11908
12316
 
11909
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
 
12317
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
11910
12318
// This file is part of PUMA.
11911
12319
// Copyright (C) 1999-2003  The PUMA developer team.
11912
12320
//                                                                
11941
12349
 
11942
12350
class CClassInfo;
11943
12351
class CRecord;
 
12352
class CStructure;
11944
12353
 
11945
12354
 
11946
12355
/** \class CTypeClass CTypeClass.h Puma/CTypeInfo.h
11951
12360
 * struct Y y;   // y has type 'class Y'
11952
12361
 *  \endcode */
11953
12362
 
11954
 
#line 11955 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12363
#line 12364 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11955
12364
} // closed Puma
11956
12365
class CCExprResolve;
11957
12366
class CExprResolve;
11974
12383
class CMatchSyntax;
11975
12384
namespace Puma {
11976
12385
 
11977
 
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
 
12386
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
11978
12387
class CTypeClass : public CTypeRecord {
11979
 
#line 11980 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12388
#line 12389 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
11980
12389
  friend class ::CCExprResolve;
11981
12390
  friend class ::CExprResolve;
11982
12391
  friend class ::WinIfExists;
11997
12406
  friend class ::PragmaOnce;
11998
12407
  friend class ::CMatchSyntax;
11999
12408
 
12000
 
#line 44 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
 
12409
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
12001
12410
 
12002
12411
public:
12003
12412
  /** Constructor. Type has id CTypeInfo::TYPE_CLASS.
12008
12417
 
12009
12418
  /** Get the semantic information about the class. */
12010
12419
  CClassInfo *ClassInfo () const;
 
12420
 
 
12421
  /** If this is the type of a pseudo class instance, 
 
12422
   *  create a real instance of the corresponding template. 
 
12423
   *  \param scope The scope in which to instantiate the template. 
 
12424
   *  \return true if instantiation succeeded. */
 
12425
  bool instantiate (CStructure *scope);
12011
12426
public:
12012
12427
  typedef AC::TLE __AttrTypes;
12013
12428
  const char *__attr_name (unsigned i) const { return 0; }
12014
12429
  const void *__attr (unsigned __i) const { return 0; }
12015
 
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
 
12430
#line 61 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeClass.h"
12016
12431
};
12017
12432
 
12018
12433
inline CTypeClass::CTypeClass (CRecord *c) :
12026
12441
 
12027
12442
#endif /* __CTypeClass_h__ */
12028
12443
 
12029
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
 
12444
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
12030
12445
// This file is part of PUMA.
12031
12446
// Copyright (C) 1999-2003  The PUMA developer team.
12032
12447
//                                                                
12070
12485
 * union X x;    // x has type 'union X'
12071
12486
 *  \endcode */
12072
12487
 
12073
 
#line 12074 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12488
#line 12489 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12074
12489
} // closed Puma
12075
12490
class CCExprResolve;
12076
12491
class CExprResolve;
12093
12508
class CMatchSyntax;
12094
12509
namespace Puma {
12095
12510
 
12096
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
 
12511
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
12097
12512
class CTypeUnion : public CTypeRecord {
12098
 
#line 12099 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12513
#line 12514 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12099
12514
  friend class ::CCExprResolve;
12100
12515
  friend class ::CExprResolve;
12101
12516
  friend class ::WinIfExists;
12116
12531
  friend class ::PragmaOnce;
12117
12532
  friend class ::CMatchSyntax;
12118
12533
 
12119
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
 
12534
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
12120
12535
 
12121
12536
public:
12122
12537
  /** Constructor. Type has id CTypeInfo::TYPE_UNION.
12131
12546
  typedef AC::TLE __AttrTypes;
12132
12547
  const char *__attr_name (unsigned i) const { return 0; }
12133
12548
  const void *__attr (unsigned __i) const { return 0; }
12134
 
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
 
12549
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeUnion.h"
12135
12550
};
12136
12551
 
12137
12552
inline CTypeUnion::CTypeUnion (CRecord *u) :
12145
12560
 
12146
12561
#endif /* __CTypeUnion_h__ */
12147
12562
 
12148
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
 
12563
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
12149
12564
// This file is part of PUMA.
12150
12565
// Copyright (C) 1999-2003  The PUMA developer team.
12151
12566
//                                                                
12184
12599
/** \class CTypeTemplateParam CTypeTemplateParam.h Puma/CTypeInfo.h
12185
12600
 *  Type of a template parameter. */
12186
12601
 
12187
 
#line 12188 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12602
#line 12603 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12188
12603
} // closed Puma
12189
12604
class CCExprResolve;
12190
12605
class CExprResolve;
12207
12622
class CMatchSyntax;
12208
12623
namespace Puma {
12209
12624
 
12210
 
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
 
12625
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
12211
12626
class CTypeTemplateParam : public CTypeInfo {
12212
 
#line 12213 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12627
#line 12628 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12213
12628
  friend class ::CCExprResolve;
12214
12629
  friend class ::CExprResolve;
12215
12630
  friend class ::WinIfExists;
12230
12645
  friend class ::PragmaOnce;
12231
12646
  friend class ::CMatchSyntax;
12232
12647
 
12233
 
#line 38 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
 
12648
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
12234
12649
 
12235
12650
  CTemplateParamInfo *_TemplateParam;
12236
12651
 
12258
12673
  const void *__attr (unsigned __i) const {
12259
12674
    switch (__i) { case 0: return &_TemplateParam; default: return 0; }
12260
12675
  }
12261
 
#line 57 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
 
12676
#line 57 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeTemplateParam.h"
12262
12677
};
12263
12678
 
12264
12679
inline CTypeTemplateParam::CTypeTemplateParam (CTemplateParamInfo *t) :
12281
12696
 
12282
12697
#endif /* __CTypeTemplateParam_h__ */
12283
12698
 
12284
 
#line 514 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
 
12699
#line 526 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTypeInfo.h"
12285
12700
namespace Puma {
12286
12701
 
12287
12702
inline CTypeInfo::CTypeInfo (CTypeInfo *info, CTypeInfo::TypeId id) :
12398
12813
 { return VirtualType ()->TypeClass (); }
12399
12814
inline bool CTypeInfo::isUnion () const
12400
12815
 { return VirtualType ()->TypeUnion (); }
 
12816
inline bool CTypeInfo::isClassOrUnion () const
 
12817
 { return isRecord (); }
12401
12818
inline bool CTypeInfo::isArray () const
12402
12819
 { return VirtualType ()->TypeArray (); }
12403
12820
inline bool CTypeInfo::isFixedArray () const
12447
12864
          ! VirtualType ()->TypeTemplateParam ()->isType (); }
12448
12865
 
12449
12866
inline bool CTypeInfo::is_bool () const 
12450
 
 { return _Id == TYPE_BOOL; }
 
12867
 { return _Id == TYPE_BOOL || _Id == TYPE_C_BOOL; }
12451
12868
inline bool CTypeInfo::is_char () const 
12452
12869
 { return _Id == TYPE_CHAR; }
12453
12870
inline bool CTypeInfo::is_wchar_t () const 
12497
12914
 
12498
12915
#endif /* __CTypeInfo_h__ */
12499
12916
 
12500
 
#line 31 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
 
12917
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
12501
12918
#include <stdio.h>
12502
12919
 
12503
12920
namespace Puma {
12563
12980
// Scan the file `file' or the source if given. When
12564
12981
// scanning a source the resulting unit gets the name `file'.
12565
12982
 
12566
 
#line 12567 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
12983
#line 12984 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12567
12984
 
12568
12985
 
12569
12986
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma8CProject8scanFileEPKcPN4PumaE6Sourceb_0 {
12573
12990
  typedef TTarget Target;
12574
12991
  enum { ARGS = TArgs::ARGS };
12575
12992
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
12576
 
  static const int JPID = 4446;
 
12993
  static const int JPID = 4567;
12577
12994
  static const AC::JPType JPTYPE = (AC::JPType)8;
12578
12995
  struct Res {
12579
12996
    typedef TResult Type;
12587
13004
};
12588
13005
 
12589
13006
 
12590
 
#line 95 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
 
13007
#line 95 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
12591
13008
Unit *CProject::scanFile (const char * arg0, Source * arg1, bool  arg2) 
12592
 
#line 12593 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13009
#line 13010 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12593
13010
{
12594
13011
  typedef TJP__ZN4Puma8CProject8scanFileEPKcPN4PumaE6Sourceb_0< ::Puma::Unit * , ::Puma::CProject , ::Puma::CProject ,  AC::TL< const char * , AC::TL< ::Puma::Source * , AC::TL< bool , AC::TLE > > > > __TJP;
12595
13012
  ::Puma::Unit * result;
12604
13021
 
12605
13022
}
12606
13023
__attribute__((always_inline)) inline ::Puma::Unit * Puma::CProject::__exec_old_scanFile(const char * file,::Puma::Source * in,bool isFile)
12607
 
#line 95 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
 
13024
#line 95 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
12608
13025
{
12609
13026
  if (! file && ! in) 
12610
13027
    return (Unit*)0;
12740
13157
 
12741
13158
} // namespace Puma
12742
13159
 
12743
 
#line 12744 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13160
#line 13161 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12744
13161
 
12745
 
#ifdef __ac_FIRST_FILE__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_src_CProject_cc__
12746
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
12747
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
12748
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
 
13162
#ifdef __ac_FIRST_FILE__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_src_CProject_cc__
 
13163
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
 
13164
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
 
13165
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
12749
13166
#include "CCExprResolveCC.ah"
12750
13167
#endif
12751
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
12752
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13168
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13169
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
12753
13170
#include "ExtACTree.ah"
12754
13171
#endif
12755
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
12756
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
13172
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
13173
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
12757
13174
#include "ExtGnu.ah"
12758
13175
#endif
12759
 
#endif
12760
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
12761
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
12762
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
13176
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
13177
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
13178
#include "PragmaOnceUnitState.ah"
 
13179
#endif
 
13180
#endif
 
13181
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
13182
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
13183
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
12763
13184
#include "CCExprResolveH.ah"
12764
13185
#endif
12765
13186
#endif
12766
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
12767
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
12768
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
 
13187
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
 
13188
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
 
13189
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
12769
13190
#include "CExprResolveCC.ah"
12770
13191
#endif
12771
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
12772
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13192
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13193
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
12773
13194
#include "ExtACTree.ah"
12774
13195
#endif
12775
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
12776
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
13196
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
13197
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
12777
13198
#include "ExtGnu.ah"
12778
13199
#endif
12779
 
#endif
12780
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
12781
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
12782
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
13200
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
13201
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
13202
#include "PragmaOnceUnitState.ah"
 
13203
#endif
 
13204
#endif
 
13205
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
13206
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
13207
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
12783
13208
#include "CExprResolveH.ah"
12784
13209
#endif
12785
13210
#endif
12786
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
12787
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
12788
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinIfExists_ah__
12789
 
 
12790
 
#line 47 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
12791
 
#endif
12792
 
#endif
12793
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinImportHandler_ah__
12794
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinImportHandler_ah__
12795
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinImportHandler_ah__
12796
 
 
12797
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13211
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
13212
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
13213
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
13214
 
 
13215
#line 55 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
13216
#endif
 
13217
#endif
 
13218
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
13219
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
13220
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
13221
 
 
13222
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12798
13223
// This file is part of PUMA.
12799
13224
// Copyright (C) 1999-2003  The PUMA developer team.
12800
13225
//                                                                
12821
13246
/********************************************************/
12822
13247
 
12823
13248
 
12824
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13249
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12825
13250
 
12826
 
#line 12827 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13251
#line 13252 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12827
13252
class CCExprResolve;
12828
13253
class CExprResolve;
12829
13254
class WinIfExists;
12843
13268
class PragmaOnce;
12844
13269
class CMatchSyntax;
12845
13270
 
12846
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13271
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12847
13272
class WinImportHandler {
12848
 
#line 12849 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13273
#line 13274 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12849
13274
 
12850
13275
public:
12851
13276
  static WinImportHandler *aspectof () {
12857
13282
  }
12858
13283
private:
12859
13284
 
12860
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13285
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12861
13286
 
12862
 
#line 12863 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13287
#line 13288 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12863
13288
  friend class ::CCExprResolve;
12864
13289
  friend class ::CExprResolve;
12865
13290
  friend class ::WinIfExists;
12879
13304
  friend class ::PragmaOnce;
12880
13305
  friend class ::CMatchSyntax;
12881
13306
 
12882
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13307
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12883
13308
 
12884
13309
  /********************************************************/
12885
13310
  /* Win #import directive                                */
12887
13312
 
12888
13313
  // pointcuts
12889
13314
  
12890
 
#line 36 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13315
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12891
13316
 
12892
13317
  
12893
13318
  // handle --import-handler option
12894
13319
  
12895
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13320
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12896
13321
 
12897
13322
public: template<class JoinPoint> void __a0_before 
12898
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13323
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12899
13324
 
12900
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13325
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12901
13326
(JoinPoint *tjp, const Puma::Config &config, bool process_includes)
12902
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13327
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12903
13328
 {
12904
 
#line 12905 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13329
#line 13330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12905
13330
 
12906
13331
  JoinPoint *&thisJoinPoint = tjp;
12907
13332
 
12908
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13333
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12909
13334
 
12910
 
#line 12911 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13335
#line 13336 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12911
13336
 
12912
13337
  typedef typename JoinPoint::That __JP_That;
12913
13338
  typedef typename JoinPoint::Target __JP_Target;
12914
13339
  typedef typename JoinPoint::Result __JP_Result;
12915
13340
 
12916
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13341
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12917
13342
 
12918
13343
    const Puma::ConfOption *opt;
12919
13344
    char *tmp;
12932
13357
      }
12933
13358
    }
12934
13359
  }
12935
 
#line 12936 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13360
#line 13361 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12936
13361
 
12937
13362
private:
12938
13363
 
12939
 
#line 58 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13364
#line 58 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12940
13365
 
12941
13366
 
12942
13367
protected:
12945
13370
  typedef AC::TLE __AttrTypes;
12946
13371
  const char *__attr_name (unsigned i) const { return 0; }
12947
13372
  const void *__attr (unsigned __i) const { return 0; }
12948
 
#line 62 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13373
#line 62 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12949
13374
};
12950
 
#line 12951 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13375
#line 13376 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
12951
13376
 
12952
13377
namespace AC {
12953
13378
  template <class JoinPoint>
12958
13383
  }
12959
13384
12960
13385
 
12961
 
#line 62 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinImportHandler.ah"
 
13386
#line 62 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinImportHandler.ah"
12962
13387
 
12963
13388
 
12964
13389
 
12965
13390
#endif /* __WinImportHandler__ */
12966
13391
 
12967
 
#line 53 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
12968
 
#endif
12969
 
#endif
12970
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMacros_ah__
12971
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMacros_ah__
12972
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMacros_ah__
 
13392
#line 61 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
13393
#endif
 
13394
#endif
 
13395
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinMacros_ah__
 
13396
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinMacros_ah__
 
13397
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinMacros_ah__
12973
13398
 
12974
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13399
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
12975
13400
// This file is part of PUMA.
12976
13401
// Copyright (C) 1999-2003  The PUMA developer team.
12977
13402
//                                                                
12998
13423
/********************************************************/
12999
13424
 
13000
13425
 
13001
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacro.h"
 
13426
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacro.h"
13002
13427
// This file is part of PUMA.
13003
13428
// Copyright (C) 1999-2003  The PUMA developer team.
13004
13429
//                                                                
13027
13452
// of arguments.
13028
13453
 
13029
13454
 
13030
 
#line 35 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacro.h"
 
13455
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacro.h"
13031
13456
namespace Puma {
13032
13457
 
13033
13458
 
13035
13460
class CScanner;
13036
13461
 
13037
13462
 
13038
 
#line 13039 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13463
#line 13464 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13039
13464
} // closed Puma
13040
13465
class CCExprResolve;
13041
13466
class CExprResolve;
13058
13483
class CMatchSyntax;
13059
13484
namespace Puma {
13060
13485
 
13061
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacro.h"
 
13486
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacro.h"
13062
13487
class PreMacro : public Chain {
13063
 
#line 13064 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13488
#line 13489 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13064
13489
  friend class ::CCExprResolve;
13065
13490
  friend class ::CExprResolve;
13066
13491
  friend class ::WinIfExists;
13081
13506
  friend class ::PragmaOnce;
13082
13507
  friend class ::CMatchSyntax;
13083
13508
 
13084
 
#line 41 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacro.h"
 
13509
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacro.h"
13085
13510
 
13086
13511
public:
13087
13512
  typedef Array<const char *> MacroArgs;
13150
13575
  const void *__attr (unsigned __i) const {
13151
13576
    switch (__i) { case 5: return &_body; case 6: return &_name; case 7: return &_numArgs; case 8: return &_flags; case 9: return &_location; case 10: return &_arguments; case 11: return &_body_unit; default: return 0; }
13152
13577
  }
13153
 
#line 101 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/PreMacro.h"
 
13578
#line 101 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacro.h"
13154
13579
};
13155
13580
 
13156
13581
 
13158
13583
 
13159
13584
#endif /* __pre_macro__ */
13160
13585
 
13161
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13586
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13162
13587
 
13163
 
#line 13164 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13588
#line 13589 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13164
13589
class CCExprResolve;
13165
13590
class CExprResolve;
13166
13591
class WinIfExists;
13180
13605
class PragmaOnce;
13181
13606
class CMatchSyntax;
13182
13607
 
13183
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13608
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13184
13609
class WinMacros {
13185
 
#line 13186 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13610
#line 13611 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13186
13611
 
13187
13612
public:
13188
13613
  static WinMacros *aspectof () {
13194
13619
  }
13195
13620
private:
13196
13621
 
13197
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13622
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13198
13623
 
13199
 
#line 13200 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13624
#line 13625 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13200
13625
  friend class ::CCExprResolve;
13201
13626
  friend class ::CExprResolve;
13202
13627
  friend class ::WinIfExists;
13216
13641
  friend class ::PragmaOnce;
13217
13642
  friend class ::CMatchSyntax;
13218
13643
 
13219
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13644
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13220
13645
 
13221
13646
  /********************************************************/
13222
13647
  /* Win specific predefined macros                       */
13224
13649
 
13225
13650
  // predefine win specific macros
13226
13651
  
13227
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13652
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13228
13653
 
13229
13654
public: template<class JoinPoint> void __a0_before 
13230
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13655
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13231
13656
 
13232
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13657
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13233
13658
(JoinPoint *tjp, const Puma::Config &config)
13234
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13659
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13235
13660
 {
13236
 
#line 13237 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13661
#line 13662 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13237
13662
 
13238
13663
  JoinPoint *&thisJoinPoint = tjp;
13239
13664
 
13240
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13665
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13241
13666
 
13242
 
#line 13243 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13667
#line 13668 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13243
13668
 
13244
13669
  typedef typename JoinPoint::That __JP_That;
13245
13670
  typedef typename JoinPoint::Target __JP_Target;
13246
13671
  typedef typename JoinPoint::Result __JP_Result;
13247
13672
 
13248
 
#line 37 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13673
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13249
13674
 
13250
13675
    if (config.Option ("--vc")) {
13251
13676
      // constants
13264
13689
        new Puma::PreMacro ("__declspec", args, " "));
13265
13690
    }
13266
13691
  }
13267
 
#line 13268 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13692
#line 13693 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13268
13693
 
13269
13694
private:
13270
13695
 
13271
 
#line 54 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13696
#line 54 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13272
13697
 
13273
13698
 
13274
13699
protected:
13277
13702
  typedef AC::TLE __AttrTypes;
13278
13703
  const char *__attr_name (unsigned i) const { return 0; }
13279
13704
  const void *__attr (unsigned __i) const { return 0; }
13280
 
#line 58 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13705
#line 58 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13281
13706
};
13282
 
#line 13283 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
13707
#line 13708 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13283
13708
 
13284
13709
namespace AC {
13285
13710
  template <class JoinPoint>
13289
13714
  }
13290
13715
13291
13716
 
13292
 
#line 58 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/WinMacros.ah"
 
13717
#line 58 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/WinMacros.ah"
13293
13718
 
13294
13719
 
13295
13720
 
13296
13721
#endif /* __WinMacros__ */
13297
13722
 
13298
 
#line 59 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
 
13723
#line 67 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
13299
13724
#endif
13300
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13301
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
13725
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
13726
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13302
13727
 
13303
 
#line 63 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
13304
 
#endif
13305
 
#endif
13306
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinAsm_ah__
13307
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinAsm_ah__
13308
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinAsm_ah__
 
13728
#line 71 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
13729
#endif
 
13730
#endif
 
13731
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinAsm_ah__
 
13732
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinAsm_ah__
 
13733
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinAsm_ah__
13309
13734
#include "WinAsm.ah"
13310
13735
#endif
13311
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
13312
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13736
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13737
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
13313
13738
#include "ExtACTree.ah"
13314
13739
#endif
13315
13740
#endif
13316
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
13317
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
13318
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
13741
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
13742
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
13743
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
13319
13744
#include "WinDeclSpecs.ah"
13320
13745
#endif
13321
13746
#endif
13322
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
13323
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
13324
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
13747
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
13748
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
13749
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
13325
13750
#include "WinMemberExplSpec.ah"
13326
13751
#endif
13327
13752
#endif
13328
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
13329
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
13330
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
13753
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
13754
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
13755
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
13331
13756
#include "WinTypeKeywords.ah"
13332
13757
#endif
13333
13758
#endif
13334
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinFriend_ah__
13335
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinFriend_ah__
13336
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_WinFriend_ah__
 
13759
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinFriend_ah__
 
13760
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinFriend_ah__
 
13761
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_WinFriend_ah__
13337
13762
#include "WinFriend.ah"
13338
13763
#endif
13339
13764
#endif
13340
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
13341
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
13342
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtAC_ah__
 
13765
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtAC_ah__
 
13766
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtAC_ah__
 
13767
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtAC_ah__
13343
13768
#include "ExtAC.ah"
13344
13769
#endif
13345
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
13346
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13770
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13771
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
13347
13772
#include "ExtACTree.ah"
13348
13773
#endif
13349
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
13350
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
13774
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
13775
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
13351
13776
#include "ExtACKeywords.ah"
13352
13777
#endif
13353
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
13354
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
13778
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
13779
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
13355
13780
#include "ExtGnu.ah"
13356
13781
#endif
13357
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13358
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
13782
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
13783
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13359
13784
#include "PragmaOnceUnitState.ah"
13360
13785
#endif
13361
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
13362
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
13786
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
13787
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
13363
13788
#include "CMatchSyntax.ah"
13364
13789
#endif
13365
13790
#endif
13366
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
13367
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
13368
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
 
13791
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
 
13792
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
 
13793
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
13369
13794
#include "ExtACBuilderH.ah"
13370
13795
#endif
13371
13796
#endif
13372
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
13373
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
13374
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
 
13797
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
 
13798
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
 
13799
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
13375
13800
#include "ExtACBuilderCC.ah"
13376
13801
#endif
13377
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
13378
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13802
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13803
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
13379
13804
#include "ExtACTree.ah"
13380
13805
#endif
13381
13806
#endif
13382
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
13383
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
13384
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
 
13807
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
 
13808
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
 
13809
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
13385
13810
#include "ExtACSyntaxH.ah"
13386
13811
#endif
13387
13812
#endif
13388
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
13389
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
13390
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
 
13813
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
 
13814
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
 
13815
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
13391
13816
#include "ExtACSyntaxCC.ah"
13392
13817
#endif
13393
13818
#endif
13394
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
13395
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
13396
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13819
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13820
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13821
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
13397
13822
#include "ExtACTree.ah"
13398
13823
#endif
13399
13824
#endif
13400
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
13401
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
13402
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
13403
 
 
13404
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
13825
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
13826
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13827
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
13828
 
 
13829
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13830
// This file is part of PUMA.
 
13831
// Copyright (C) 1999-2003  The PUMA developer team.
 
13832
//                                                                
 
13833
// This program is free software;  you can redistribute it and/or 
 
13834
// modify it under the terms of the GNU General Public License as 
 
13835
// published by the Free Software Foundation; either version 2 of 
 
13836
// the License, or (at your option) any later version.            
 
13837
//                                                                
 
13838
// This program is distributed in the hope that it will be useful,
 
13839
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
13840
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
13841
// GNU General Public License for more details.                   
 
13842
//                                                                
 
13843
// You should have received a copy of the GNU General Public      
 
13844
// License along with this program; if not, write to the Free     
 
13845
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
13846
// MA  02111-1307  USA                                            
 
13847
 
 
13848
#ifndef __ExtACTree_ah__
 
13849
#define __ExtACTree_ah__
 
13850
 
 
13851
// TODO:
 
13852
// this shall be introduced by the ExtAC aspect as soon as the include cycle
 
13853
// problem is solved!
 
13854
 
 
13855
namespace Puma {
 
13856
  class CTree;
 
13857
}
 
13858
 
 
13859
 
 
13860
#line 13861 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
13861
class CCExprResolve;
 
13862
class CExprResolve;
 
13863
class WinIfExists;
 
13864
class WinImportHandler;
 
13865
class WinMacros;
 
13866
class WinAsm;
 
13867
class WinDeclSpecs;
 
13868
class WinMemberExplSpec;
 
13869
class WinTypeKeywords;
 
13870
class WinFriend;
 
13871
class ExtAC;
 
13872
class ExtACBuilderCoupling;
 
13873
class ExtACSyntaxCoupling;
 
13874
class ExtACKeywords;
 
13875
class ExtGnu;
 
13876
class PragmaOnceUnitState;
 
13877
class PragmaOnce;
 
13878
class CMatchSyntax;
 
13879
 
 
13880
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13881
class ExtACTree {
 
13882
#line 13883 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
13883
 
 
13884
public:
 
13885
  static ExtACTree *aspectof () {
 
13886
    static ExtACTree __instance;
 
13887
    return &__instance;
 
13888
  }
 
13889
  static ExtACTree *aspectOf () {
 
13890
    return aspectof ();
 
13891
  }
 
13892
private:
 
13893
 
 
13894
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13895
 
 
13896
#line 13897 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
13897
  friend class ::CCExprResolve;
 
13898
  friend class ::CExprResolve;
 
13899
  friend class ::WinIfExists;
 
13900
  friend class ::WinImportHandler;
 
13901
  friend class ::WinMacros;
 
13902
  friend class ::WinAsm;
 
13903
  friend class ::WinDeclSpecs;
 
13904
  friend class ::WinMemberExplSpec;
 
13905
  friend class ::WinTypeKeywords;
 
13906
  friend class ::WinFriend;
 
13907
  friend class ::ExtAC;
 
13908
  friend class ::ExtACBuilderCoupling;
 
13909
  friend class ::ExtACSyntaxCoupling;
 
13910
  friend class ::ExtACKeywords;
 
13911
  friend class ::ExtGnu;
 
13912
  friend class ::PragmaOnceUnitState;
 
13913
  friend class ::PragmaOnce;
 
13914
  friend class ::CMatchSyntax;
 
13915
 
 
13916
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13917
 
 
13918
  
 
13919
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13920
 
 
13921
  
 
13922
  // implemented in a separate .cc file, because Builder.h is needed!
 
13923
  void delete_tree (Puma::CTree *t);
 
13924
  
 
13925
  
 
13926
#line 44 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13927
 
 
13928
  
 
13929
  
 
13930
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13931
 
 
13932
public: template<class JoinPoint> void __a0_after 
 
13933
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13934
 
 
13935
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13936
(JoinPoint *tjp)
 
13937
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13938
 {
 
13939
#line 13940 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
13940
 
 
13941
  typedef typename JoinPoint::That __JP_That;
 
13942
  typedef typename JoinPoint::Target __JP_Target;
 
13943
  typedef typename JoinPoint::Result __JP_Result;
 
13944
 
 
13945
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13946
 
 
13947
    tjp->that ()->_intro_members = 0;
 
13948
    tjp->that ()->_base_intros = 0;
 
13949
  }
 
13950
#line 13951 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
13951
 
 
13952
private:
 
13953
 
 
13954
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13955
 
 
13956
  
 
13957
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13958
 
 
13959
public: template<class JoinPoint> void __a1_before 
 
13960
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13961
 
 
13962
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13963
(JoinPoint *tjp)
 
13964
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13965
 {
 
13966
#line 13967 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
13967
 
 
13968
  typedef typename JoinPoint::That __JP_That;
 
13969
  typedef typename JoinPoint::Target __JP_Target;
 
13970
  typedef typename JoinPoint::Result __JP_Result;
 
13971
 
 
13972
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13973
 
 
13974
    delete_tree (tjp->that ()->_intro_members);
 
13975
    delete_tree (tjp->that ()->_base_intros);
 
13976
  }
 
13977
#line 13978 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
13978
 
 
13979
private:
 
13980
 
 
13981
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13982
 
 
13983
public:
 
13984
  typedef AC::TLE __AttrTypes;
 
13985
  const char *__attr_name (unsigned i) const { return 0; }
 
13986
  const void *__attr (unsigned __i) const { return 0; }
 
13987
#line 54 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
13988
};
 
13989
#line 13990 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
13990
 
 
13991
namespace AC {
 
13992
  template <class JoinPoint>
 
13993
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp) {
 
13994
    ::ExtACTree::aspectof()->__a0_after (tjp);
 
13995
  }
 
13996
  template <class JoinPoint>
 
13997
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp) {
 
13998
    ::ExtACTree::aspectof()->__a1_before (tjp);
 
13999
  }
 
14000
 
14001
 
 
14002
#line 54 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
14003
 
 
14004
 
 
14005
#endif // __ExtACTree_ah__
 
14006
 
 
14007
#line 171 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
14008
#endif
 
14009
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
14010
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
 
14011
 
 
14012
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13405
14013
// This file is part of PUMA.
13406
14014
// Copyright (C) 1999-2003  The PUMA developer team.
13407
14015
//                                                                
13424
14032
#define __ext_ac_keywords_ah__
13425
14033
 
13426
14034
 
13427
 
#line 1 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
14035
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileUnit.h"
13428
14036
// This file is part of PUMA.
13429
14037
// Copyright (C) 1999-2003  The PUMA developer team.
13430
14038
//                                                                
13450
14058
// absolute path of the corresponding file.
13451
14059
 
13452
14060
 
13453
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
14061
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileUnit.h"
13454
14062
namespace Puma {
13455
14063
 
13456
14064
 
13457
14065
class Project;
13458
14066
 
13459
14067
 
13460
 
#line 13461 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
14068
#line 14069 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13461
14069
} // closed Puma
13462
14070
class CCExprResolve;
13463
14071
class CExprResolve;
13480
14088
class CMatchSyntax;
13481
14089
namespace Puma {
13482
14090
 
13483
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
14091
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileUnit.h"
13484
14092
class FileUnit : public Unit {
13485
 
#line 13486 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
14093
#line 14094 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13486
14094
  friend class ::CCExprResolve;
13487
14095
  friend class ::CExprResolve;
13488
14096
  friend class ::WinIfExists;
13503
14111
  friend class ::PragmaOnce;
13504
14112
  friend class ::CMatchSyntax;
13505
14113
 
13506
 
#line 32 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
14114
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileUnit.h"
13507
14115
 
13508
14116
  char *_lastLocation; 
13509
14117
  char *_absolutePath;
13538
14146
  const void *__attr (unsigned __i) const {
13539
14147
    switch (__i) { case 0: return &_lastLocation; case 1: return &_absolutePath; case 2: return &_project; case 3: return &_isBelow; default: return 0; }
13540
14148
  }
13541
 
#line 58 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/inc/Puma/FileUnit.h"
 
14149
#line 58 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/FileUnit.h"
13542
14150
};
13543
14151
 
13544
14152
inline FileUnit::FileUnit () : 
13578
14186
 
13579
14187
#endif /* __FileUnit__ */
13580
14188
 
13581
 
#line 27 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14189
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13582
14190
// *****************************************
13583
14191
// AspectC++ keyword handling in the scanner
13584
14192
// *****************************************
13585
14193
 
13586
 
#line 13587 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
14194
#line 14195 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13587
14195
class CCExprResolve;
13588
14196
class CExprResolve;
13589
14197
class WinIfExists;
13603
14211
class PragmaOnce;
13604
14212
class CMatchSyntax;
13605
14213
 
13606
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14214
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13607
14215
class ExtACKeywords {
13608
 
#line 13609 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
14216
#line 14217 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13609
14217
 
13610
14218
public:
13611
14219
  static ExtACKeywords *aspectof () {
13617
14225
  }
13618
14226
private:
13619
14227
 
13620
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14228
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13621
14229
 
13622
 
#line 13623 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
14230
#line 14231 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13623
14231
  friend class ::CCExprResolve;
13624
14232
  friend class ::CExprResolve;
13625
14233
  friend class ::WinIfExists;
13639
14247
  friend class ::PragmaOnce;
13640
14248
  friend class ::CMatchSyntax;
13641
14249
 
13642
 
#line 30 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14250
#line 30 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13643
14251
 
13644
14252
 
13645
14253
  bool _prj_keywords;
13653
14261
  void prj_keywords (bool kw) { _prj_keywords = kw; }
13654
14262
  
13655
14263
  
13656
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14264
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13657
14265
 
13658
14266
public: void __a0_before 
13659
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14267
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13660
14268
 
13661
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14269
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13662
14270
(Puma::CProject &project)
13663
 
#line 43 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14271
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13664
14272
 {
13665
14273
    _project = &project;
13666
14274
  }
13667
14275
  
13668
14276
  
13669
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14277
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13670
14278
 
13671
14279
public: template<class JoinPoint> void __a1_before 
13672
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14280
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13673
14281
 
13674
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14282
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13675
14283
(JoinPoint *tjp, Puma::Unit &unit)
13676
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14284
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13677
14285
 {
13678
 
#line 13679 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
14286
#line 14287 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13679
14287
 
13680
14288
  typedef typename JoinPoint::That __JP_That;
13681
14289
  typedef typename JoinPoint::Target __JP_Target;
13682
14290
  typedef typename JoinPoint::Result __JP_Result;
13683
14291
 
13684
 
#line 51 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14292
#line 51 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13685
14293
 
13686
14294
    if (!unit.isFile ())
13687
14295
      return;
13701
14309
  }
13702
14310
  
13703
14311
  
13704
 
#line 3 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14312
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13705
14313
 
13706
14314
public: template<class JoinPoint> void __a2_before 
13707
 
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14315
#line 69 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13708
14316
 
13709
 
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14317
#line 69 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13710
14318
(JoinPoint *tjp)
13711
 
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14319
#line 69 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13712
14320
 {
13713
 
#line 13714 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
14321
#line 14322 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13714
14322
 
13715
14323
  typedef typename JoinPoint::That __JP_That;
13716
14324
  typedef typename JoinPoint::Target __JP_Target;
13717
14325
  typedef typename JoinPoint::Result __JP_Result;
13718
14326
 
13719
 
#line 69 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14327
#line 69 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13720
14328
 
13721
14329
    _project = tjp->that ();
13722
14330
  }
13728
14336
  const void *__attr (unsigned __i) const {
13729
14337
    switch (__i) { case 0: return &_prj_keywords; case 1: return &_project; default: return 0; }
13730
14338
  }
13731
 
#line 72 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14339
#line 72 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13732
14340
};
13733
 
#line 13734 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step2/src/CProject.cc"
 
14341
#line 14342 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
13734
14342
 
13735
14343
namespace AC {
13736
14344
  template <class JoinPoint>
13749
14357
  }
13750
14358
13751
14359
 
13752
 
#line 72 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
 
14360
#line 72 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACKeywords.ah"
13753
14361
  
13754
14362
 
13755
14363
#endif /* __ext_ac_keywords_ah__ */
13756
14364
 
13757
 
#line 163 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
13758
 
#endif
13759
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13760
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
14365
#line 175 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
14366
#endif
 
14367
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
14368
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
14369
 
 
14370
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
14371
// This file is part of PUMA.
 
14372
// Copyright (C) 1999-2003  The PUMA developer team.
 
14373
//
 
14374
// This program is free software;  you can redistribute it and/or
 
14375
// modify it under the terms of the GNU General Public License as
 
14376
// published by the Free Software Foundation; either version 2 of
 
14377
// the License, or (at your option) any later version.
 
14378
//
 
14379
// This program is distributed in the hope that it will be useful,
 
14380
// but WITHOUT ANY WARRANTY; without even the implied warranty of
 
14381
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
14382
// GNU General Public License for more details.
 
14383
//
 
14384
// You should have received a copy of the GNU General Public
 
14385
// License along with this program; if not, write to the Free
 
14386
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
 
14387
// MA  02111-1307  USA
 
14388
 
 
14389
#ifndef __ext_gnu_h__
 
14390
#define __ext_gnu_h__
 
14391
 
 
14392
 
 
14393
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
14394
// This file is part of PUMA.
 
14395
// Copyright (C) 1999-2003  The PUMA developer team.
 
14396
//                                                                
 
14397
// This program is free software;  you can redistribute it and/or 
 
14398
// modify it under the terms of the GNU General Public License as 
 
14399
// published by the Free Software Foundation; either version 2 of 
 
14400
// the License, or (at your option) any later version.            
 
14401
//                                                                
 
14402
// This program is distributed in the hope that it will be useful,
 
14403
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
14404
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
14405
// GNU General Public License for more details.                   
 
14406
//                                                                
 
14407
// You should have received a copy of the GNU General Public      
 
14408
// License along with this program; if not, write to the Free     
 
14409
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
14410
// MA  02111-1307  USA                                            
 
14411
 
 
14412
#ifndef __gnu_c_tree_h__
 
14413
#define __gnu_c_tree_h__
 
14414
 
 
14415
/** \file
 
14416
 *  GNU C/C++ specific syntax tree classes. */
 
14417
 
 
14418
namespace Puma {
 
14419
 
 
14420
// Syntax tree node hierarchy:
 
14421
class   CT_GnuAsmSpec;       // derived from CTree
 
14422
class   CT_GnuAsmDef;        // derived from CT_AsmDef
 
14423
class   CT_GnuAsmOperand;    // derived from CTree
 
14424
class     CT_GnuAsmOperands; // derived from CT_List
 
14425
class     CT_GnuAsmClobbers; // derived from CT_List
 
14426
class   CT_GnuStatementExpr; // derived from CT_Expression
 
14427
class   CT_GnuTypeof;        // derived from CT_DeclSpec
 
14428
 
 
14429
} // namespace Puma
 
14430
 
 
14431
 
 
14432
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14433
 
 
14434
#line 14435 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
14435
 
 
14436
#ifndef __ac_fwd_ExtACTree__
 
14437
#define __ac_fwd_ExtACTree__
 
14438
class ExtACTree;
 
14439
namespace AC {
 
14440
  template <class JoinPoint>
 
14441
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp);
 
14442
  template <class JoinPoint>
 
14443
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp);
 
14444
}
 
14445
#endif
 
14446
 
 
14447
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
14448
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
14449
#endif
 
14450
 
 
14451
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
14452
// This file is part of PUMA.
 
14453
// Copyright (C) 1999-2003  The PUMA developer team.
 
14454
//                                                                
 
14455
// This program is free software;  you can redistribute it and/or 
 
14456
// modify it under the terms of the GNU General Public License as 
 
14457
// published by the Free Software Foundation; either version 2 of 
 
14458
// the License, or (at your option) any later version.            
 
14459
//                                                                
 
14460
// This program is distributed in the hope that it will be useful,
 
14461
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
14462
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
14463
// GNU General Public License for more details.                   
 
14464
//                                                                
 
14465
// You should have received a copy of the GNU General Public      
 
14466
// License along with this program; if not, write to the Free     
 
14467
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
14468
// MA  02111-1307  USA                                            
 
14469
 
 
14470
#ifndef __CTree_h__
 
14471
#define __CTree_h__
 
14472
 
 
14473
/** \file 
 
14474
 *  C/C++ syntax tree classes. */
 
14475
 
 
14476
namespace Puma {
 
14477
 
 
14478
 
 
14479
// Syntax tree node hierarchy:
 
14480
class CTree;
 
14481
class   CT_Statement;          
 
14482
class     CT_LabelStmt;
 
14483
class     CT_IfStmt;
 
14484
class     CT_IfElseStmt;
 
14485
class     CT_SwitchStmt;
 
14486
class     CT_BreakStmt;
 
14487
class     CT_ExprStmt;
 
14488
class     CT_WhileStmt;
 
14489
class     CT_DoStmt;
 
14490
class     CT_ForStmt;
 
14491
class     CT_ContinueStmt;
 
14492
class     CT_ReturnStmt;
 
14493
class     CT_GotoStmt;
 
14494
class     CT_DeclStmt;
 
14495
class     CT_CaseStmt;
 
14496
class     CT_DefaultStmt;
 
14497
class     CT_TryStmt;
 
14498
class   CT_Expression;
 
14499
class     CT_Call;
 
14500
class       CT_CallExpr;
 
14501
class       CT_ImplicitCall;
 
14502
class     CT_ThrowExpr;
 
14503
class     CT_NewExpr;
 
14504
class     CT_DeleteExpr;
 
14505
class     CT_ConstructExpr;
 
14506
class     CT_Integer;
 
14507
class     CT_Character;
 
14508
class       CT_WideCharacter;
 
14509
class     CT_Float;
 
14510
class     CT_Bool;
 
14511
class     CT_BracedExpr;
 
14512
class     CT_BinaryExpr;
 
14513
class       CT_MembPtrExpr;
 
14514
class         CT_MembRefExpr;
 
14515
class     CT_UnaryExpr;
 
14516
class       CT_PostfixExpr;
 
14517
class       CT_AddrExpr;
 
14518
class       CT_DerefExpr;
 
14519
class     CT_IfThenExpr;
 
14520
class     CT_CmpdLiteral;
 
14521
class     CT_IndexExpr;
 
14522
class     CT_CastExpr;
 
14523
class     CT_StaticCast;
 
14524
class       CT_ConstCast;
 
14525
class       CT_ReintCast;
 
14526
class       CT_DynamicCast;
 
14527
class     CT_TypeidExpr;
 
14528
class     CT_SizeofExpr;
 
14529
class     CT_AlignofExpr;
 
14530
class     CT_TypeTraitExpr;
 
14531
class     CT_OffsetofExpr;
 
14532
class     CT_MembDesignator;
 
14533
class     CT_IndexDesignator;
 
14534
class     CT_ImplicitCast;
 
14535
class     CT_MembInit;
 
14536
class   CT_DeclSpec;
 
14537
class     CT_PrimDeclSpec;
 
14538
class     CT_NamedType;
 
14539
class     CT_ClassSpec;
 
14540
class       CT_UnionSpec;
 
14541
class       CT_EnumSpec;
 
14542
class     CT_ExceptionSpec;
 
14543
class   CT_Declarator;
 
14544
class     CT_InitDeclarator;
 
14545
class     CT_BracedDeclarator;
 
14546
class     CT_ArrayDeclarator;
 
14547
class     CT_FctDeclarator;
 
14548
class     CT_RefDeclarator;
 
14549
class     CT_PtrDeclarator;
 
14550
class     CT_MembPtrDeclarator;
 
14551
class     CT_BitFieldDeclarator;
 
14552
class   CT_Decl;
 
14553
class     CT_ObjDecl;
 
14554
class     CT_ArgDecl;
 
14555
class     CT_AccessDecl;
 
14556
class       CT_UsingDecl;
 
14557
class     CT_FctDef;
 
14558
class     CT_AsmDef;
 
14559
class     CT_EnumDef;
 
14560
class     CT_ClassDef;
 
14561
class       CT_UnionDef;
 
14562
class     CT_Enumerator;
 
14563
class     CT_LinkageSpec;
 
14564
class     CT_Handler;
 
14565
class     CT_TemplateDecl;
 
14566
class     CT_TemplateParamDecl;
 
14567
class       CT_TypeParamDecl;
 
14568
class       CT_NonTypeParamDecl;
 
14569
class     CT_NamespaceDef;
 
14570
class     CT_NamespaceAliasDef;
 
14571
class     CT_UsingDirective;
 
14572
class     CT_Condition;
 
14573
class   CT_List;
 
14574
class     CT_CmpdStmt;
 
14575
class     CT_DeclSpecSeq;
 
14576
class     CT_HandlerSeq;
 
14577
class     CT_DesignatorSeq;
 
14578
class     CT_DeclList;
 
14579
class       CT_Program;
 
14580
class       CT_ArgDeclList;
 
14581
class         CT_ArgNameList;
 
14582
class       CT_ArgDeclSeq;
 
14583
class       CT_MembList;
 
14584
class     CT_ExprList;
 
14585
class     CT_DeclaratorList;
 
14586
class     CT_BaseSpecList;
 
14587
class     CT_MembInitList;
 
14588
class     CT_SimpleName;
 
14589
class       CT_SpecialName;
 
14590
class         CT_PrivateName;
 
14591
class         CT_OperatorName;
 
14592
class         CT_DestructorName;
 
14593
class         CT_ConversionName;
 
14594
class         CT_TemplateName;
 
14595
class       CT_QualName;
 
14596
class         CT_RootQualName;
 
14597
class     CT_String;
 
14598
class       CT_WideString;
 
14599
class     CT_TemplateParamList;
 
14600
class     CT_TemplateArgList;
 
14601
class   CT_Token;
 
14602
class   CT_Error;
 
14603
class   CT_BaseSpec;
 
14604
class   CT_AccessSpec;
 
14605
class   CT_ArrayDelimiter;
 
14606
class   CT_Any;
 
14607
class   CT_AnyList;
 
14608
class   CT_AnyExtension;
 
14609
class   CT_AnyCondition;
 
14610
 
 
14611
 
 
14612
} // namespace Puma
 
14613
 
 
14614
 
 
14615
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemObject.h"
 
14616
// This file is part of PUMA.
 
14617
// Copyright (C) 1999-2003  The PUMA developer team.
 
14618
//                                                                
 
14619
// This program is free software;  you can redistribute it and/or 
 
14620
// modify it under the terms of the GNU General Public License as 
 
14621
// published by the Free Software Foundation; either version 2 of 
 
14622
// the License, or (at your option) any later version.            
 
14623
//                                                                
 
14624
// This program is distributed in the hope that it will be useful,
 
14625
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
14626
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
14627
// GNU General Public License for more details.                   
 
14628
//                                                                
 
14629
// You should have received a copy of the GNU General Public      
 
14630
// License along with this program; if not, write to the Free     
 
14631
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
14632
// MA  02111-1307  USA                                            
 
14633
 
 
14634
#ifndef __CSemObject_h__
 
14635
#define __CSemObject_h__
 
14636
 
 
14637
/** \file
 
14638
 *  Semantic information about entity definitions. */
 
14639
 
 
14640
namespace Puma {
 
14641
 
 
14642
 
 
14643
class CObjectInfo;
 
14644
 
 
14645
 
 
14646
/** \class CSemObject CSemObject.h Puma/CSemObject.h
 
14647
 *  Semantic information for syntax tree nodes
 
14648
 *  referencing objects, classes, or any other entity. */
 
14649
 
 
14650
#line 14651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
14651
} // closed Puma
 
14652
class CCExprResolve;
 
14653
class CExprResolve;
 
14654
class WinIfExists;
 
14655
class WinImportHandler;
 
14656
class WinMacros;
 
14657
class WinAsm;
 
14658
class WinDeclSpecs;
 
14659
class WinMemberExplSpec;
 
14660
class WinTypeKeywords;
 
14661
class WinFriend;
 
14662
class ExtAC;
 
14663
class ExtACBuilderCoupling;
 
14664
class ExtACSyntaxCoupling;
 
14665
class ExtACTree;
 
14666
class ExtACKeywords;
 
14667
class ExtGnu;
 
14668
class PragmaOnceUnitState;
 
14669
class PragmaOnce;
 
14670
class CMatchSyntax;
 
14671
namespace Puma {
 
14672
 
 
14673
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemObject.h"
 
14674
class CSemObject {
 
14675
#line 14676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
14676
  friend class ::CCExprResolve;
 
14677
  friend class ::CExprResolve;
 
14678
  friend class ::WinIfExists;
 
14679
  friend class ::WinImportHandler;
 
14680
  friend class ::WinMacros;
 
14681
  friend class ::WinAsm;
 
14682
  friend class ::WinDeclSpecs;
 
14683
  friend class ::WinMemberExplSpec;
 
14684
  friend class ::WinTypeKeywords;
 
14685
  friend class ::WinFriend;
 
14686
  friend class ::ExtAC;
 
14687
  friend class ::ExtACBuilderCoupling;
 
14688
  friend class ::ExtACSyntaxCoupling;
 
14689
  friend class ::ExtACTree;
 
14690
  friend class ::ExtACKeywords;
 
14691
  friend class ::ExtGnu;
 
14692
  friend class ::PragmaOnceUnitState;
 
14693
  friend class ::PragmaOnce;
 
14694
  friend class ::CMatchSyntax;
 
14695
 
 
14696
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemObject.h"
 
14697
 
 
14698
  CObjectInfo *_obj;
 
14699
 
 
14700
public:
 
14701
  /** Constructor. */
 
14702
  CSemObject () : _obj ((CObjectInfo*)0) {}
 
14703
  /** Set the semantic information object for the entity.
 
14704
   *  \param o The semantic information object. */
 
14705
  void Object (CObjectInfo *o) { _obj = o; }
 
14706
  /** Get the semantic information object. */
 
14707
  CObjectInfo *Object () const { return _obj; }
 
14708
public:
 
14709
  typedef AC::TL<Puma::CObjectInfo *,AC::TLE > __AttrTypes;
 
14710
  const char *__attr_name (unsigned i) const {
 
14711
    static const char *names[] = { "_obj" }; return names[i];
 
14712
  }
 
14713
  const void *__attr (unsigned __i) const {
 
14714
    switch (__i) { case 0: return &_obj; default: return 0; }
 
14715
  }
 
14716
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemObject.h"
 
14717
};
 
14718
 
 
14719
 
 
14720
} // namespace Puma
 
14721
 
 
14722
#endif /* __CSemObject_h__ */
 
14723
 
 
14724
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemScope.h"
 
14725
// This file is part of PUMA.
 
14726
// Copyright (C) 1999-2003  The PUMA developer team.
 
14727
//                                                                
 
14728
// This program is free software;  you can redistribute it and/or 
 
14729
// modify it under the terms of the GNU General Public License as 
 
14730
// published by the Free Software Foundation; either version 2 of 
 
14731
// the License, or (at your option) any later version.            
 
14732
//                                                                
 
14733
// This program is distributed in the hope that it will be useful,
 
14734
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
14735
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
14736
// GNU General Public License for more details.                   
 
14737
//                                                                
 
14738
// You should have received a copy of the GNU General Public      
 
14739
// License along with this program; if not, write to the Free     
 
14740
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
14741
// MA  02111-1307  USA                                            
 
14742
 
 
14743
#ifndef __CSemScope_h__
 
14744
#define __CSemScope_h__
 
14745
 
 
14746
/** \file
 
14747
 *  Scope information for the syntax tree. */
 
14748
 
 
14749
namespace Puma {
 
14750
 
 
14751
 
 
14752
class CStructure;
 
14753
 
 
14754
/** \class CSemScope CSemScope.h Puma/CSemScope.h
 
14755
 *  Scope information object for syntax tree nodes. 
 
14756
 *  Some syntactic constructs open own scopes, e.g.
 
14757
 *  class definitions, function bodies, and compound 
 
14758
 *  statements. */
 
14759
 
 
14760
#line 14761 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
14761
} // closed Puma
 
14762
class CCExprResolve;
 
14763
class CExprResolve;
 
14764
class WinIfExists;
 
14765
class WinImportHandler;
 
14766
class WinMacros;
 
14767
class WinAsm;
 
14768
class WinDeclSpecs;
 
14769
class WinMemberExplSpec;
 
14770
class WinTypeKeywords;
 
14771
class WinFriend;
 
14772
class ExtAC;
 
14773
class ExtACBuilderCoupling;
 
14774
class ExtACSyntaxCoupling;
 
14775
class ExtACTree;
 
14776
class ExtACKeywords;
 
14777
class ExtGnu;
 
14778
class PragmaOnceUnitState;
 
14779
class PragmaOnce;
 
14780
class CMatchSyntax;
 
14781
namespace Puma {
 
14782
 
 
14783
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemScope.h"
 
14784
class CSemScope {
 
14785
#line 14786 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
14786
  friend class ::CCExprResolve;
 
14787
  friend class ::CExprResolve;
 
14788
  friend class ::WinIfExists;
 
14789
  friend class ::WinImportHandler;
 
14790
  friend class ::WinMacros;
 
14791
  friend class ::WinAsm;
 
14792
  friend class ::WinDeclSpecs;
 
14793
  friend class ::WinMemberExplSpec;
 
14794
  friend class ::WinTypeKeywords;
 
14795
  friend class ::WinFriend;
 
14796
  friend class ::ExtAC;
 
14797
  friend class ::ExtACBuilderCoupling;
 
14798
  friend class ::ExtACSyntaxCoupling;
 
14799
  friend class ::ExtACTree;
 
14800
  friend class ::ExtACKeywords;
 
14801
  friend class ::ExtGnu;
 
14802
  friend class ::PragmaOnceUnitState;
 
14803
  friend class ::PragmaOnce;
 
14804
  friend class ::CMatchSyntax;
 
14805
 
 
14806
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemScope.h"
 
14807
 
 
14808
  CStructure *_scope;
 
14809
 
 
14810
public:
 
14811
  /** Constructor. */
 
14812
  CSemScope () : _scope ((CStructure*)0) {}
 
14813
  /** Set the scope. 
 
14814
   *  \param s The scope. */
 
14815
  void Scope (CStructure *s) { _scope = s; }
 
14816
  /** Get the scope. */
 
14817
  CStructure *Scope () const { return _scope; }
 
14818
public:
 
14819
  typedef AC::TL<Puma::CStructure *,AC::TLE > __AttrTypes;
 
14820
  const char *__attr_name (unsigned i) const {
 
14821
    static const char *names[] = { "_scope" }; return names[i];
 
14822
  }
 
14823
  const void *__attr (unsigned __i) const {
 
14824
    switch (__i) { case 0: return &_scope; default: return 0; }
 
14825
  }
 
14826
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemScope.h"
 
14827
};
 
14828
 
 
14829
 
 
14830
} // namespace Puma
 
14831
 
 
14832
#endif /* __CSemScope_h__ */
 
14833
 
 
14834
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
14835
// This file is part of PUMA.
 
14836
// Copyright (C) 1999-2003  The PUMA developer team.
 
14837
//                                                                
 
14838
// This program is free software;  you can redistribute it and/or 
 
14839
// modify it under the terms of the GNU General Public License as 
 
14840
// published by the Free Software Foundation; either version 2 of 
 
14841
// the License, or (at your option) any later version.            
 
14842
//                                                                
 
14843
// This program is distributed in the hope that it will be useful,
 
14844
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
14845
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
14846
// GNU General Public License for more details.                   
 
14847
//                                                                
 
14848
// You should have received a copy of the GNU General Public      
 
14849
// License along with this program; if not, write to the Free     
 
14850
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
14851
// MA  02111-1307  USA                                            
 
14852
 
 
14853
#ifndef __CSemValue_h__
 
14854
#define __CSemValue_h__
 
14855
 
 
14856
/** \file
 
14857
 *  Semantic value information for the syntax tree. */
 
14858
 
 
14859
 
 
14860
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
14861
// This file is part of PUMA.
 
14862
// Copyright (C) 1999-2003  The PUMA developer team.
 
14863
//                                                                
 
14864
// This program is free software;  you can redistribute it and/or 
 
14865
// modify it under the terms of the GNU General Public License as 
 
14866
// published by the Free Software Foundation; either version 2 of 
 
14867
// the License, or (at your option) any later version.            
 
14868
//                                                                
 
14869
// This program is distributed in the hope that it will be useful,
 
14870
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
14871
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
14872
// GNU General Public License for more details.                   
 
14873
//                                                                
 
14874
// You should have received a copy of the GNU General Public      
 
14875
// License along with this program; if not, write to the Free     
 
14876
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
14877
// MA  02111-1307  USA                                            
 
14878
 
 
14879
#ifndef __CExprValue_h__
 
14880
#define __CExprValue_h__
 
14881
 
 
14882
/** \file
 
14883
 *  Semantic information for constant expression values in the syntax tree. */
 
14884
 
 
14885
 
 
14886
#line 26 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
14887
using std::ostream;
 
14888
 
 
14889
namespace Puma {
 
14890
 
 
14891
 
 
14892
class CTypeInfo;
 
14893
class CConstant;
 
14894
class CStrLiteral;
 
14895
class CWStrLiteral;
 
14896
 
 
14897
/** \class CExprValue CExprValue.h Puma/CExprValue.h
 
14898
 *  Base class for syntax tree nodes representing 
 
14899
 *  expressions that can be resolved to a constant value 
 
14900
 *  (arithmetic constants and string literals). */
 
14901
 
 
14902
#line 14903 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
14903
} // closed Puma
 
14904
class CCExprResolve;
 
14905
class CExprResolve;
 
14906
class WinIfExists;
 
14907
class WinImportHandler;
 
14908
class WinMacros;
 
14909
class WinAsm;
 
14910
class WinDeclSpecs;
 
14911
class WinMemberExplSpec;
 
14912
class WinTypeKeywords;
 
14913
class WinFriend;
 
14914
class ExtAC;
 
14915
class ExtACBuilderCoupling;
 
14916
class ExtACSyntaxCoupling;
 
14917
class ExtACTree;
 
14918
class ExtACKeywords;
 
14919
class ExtGnu;
 
14920
class PragmaOnceUnitState;
 
14921
class PragmaOnce;
 
14922
class CMatchSyntax;
 
14923
namespace Puma {
 
14924
 
 
14925
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
14926
class CExprValue {
 
14927
#line 14928 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
14928
  friend class ::CCExprResolve;
 
14929
  friend class ::CExprResolve;
 
14930
  friend class ::WinIfExists;
 
14931
  friend class ::WinImportHandler;
 
14932
  friend class ::WinMacros;
 
14933
  friend class ::WinAsm;
 
14934
  friend class ::WinDeclSpecs;
 
14935
  friend class ::WinMemberExplSpec;
 
14936
  friend class ::WinTypeKeywords;
 
14937
  friend class ::WinFriend;
 
14938
  friend class ::ExtAC;
 
14939
  friend class ::ExtACBuilderCoupling;
 
14940
  friend class ::ExtACSyntaxCoupling;
 
14941
  friend class ::ExtACTree;
 
14942
  friend class ::ExtACKeywords;
 
14943
  friend class ::ExtGnu;
 
14944
  friend class ::PragmaOnceUnitState;
 
14945
  friend class ::PragmaOnce;
 
14946
  friend class ::CMatchSyntax;
 
14947
 
 
14948
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
14949
 
 
14950
  CTypeInfo *_type;
 
14951
  
 
14952
protected:
 
14953
  /** Constructor.
 
14954
   *  \param t The type of the value. */
 
14955
  CExprValue (CTypeInfo *t) : _type (t) {}
 
14956
  
 
14957
public:
 
14958
  /** Destructor. */
 
14959
  virtual ~CExprValue () {}
 
14960
 
 
14961
  /** Get the type of the value. */
 
14962
  CTypeInfo *Type () const { return _type; }
 
14963
  /** Print the value on the given output stream.
 
14964
   *  \param out The stream on which to print. */
 
14965
  virtual void print (ostream &out) const = 0;
 
14966
  
 
14967
  /** Get a pointer to CConstant if this is an arithmetic constant. */
 
14968
  virtual CConstant *Constant () const { return (CConstant*)0; }
 
14969
  /** Get a pointer to CStrLiteral if this is a string literal. */
 
14970
  virtual CStrLiteral *StrLiteral () const { return (CStrLiteral*)0; }
 
14971
  /** Get a pointer to CWStrLiteral if this is a wide string literal. */
 
14972
  virtual CWStrLiteral *WStrLiteral () const { return (CWStrLiteral*)0; }
 
14973
public:
 
14974
  typedef AC::TL<Puma::CTypeInfo *,AC::TLE > __AttrTypes;
 
14975
  const char *__attr_name (unsigned i) const {
 
14976
    static const char *names[] = { "_type" }; return names[i];
 
14977
  }
 
14978
  const void *__attr (unsigned __i) const {
 
14979
    switch (__i) { case 0: return &_type; default: return 0; }
 
14980
  }
 
14981
#line 64 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CExprValue.h"
 
14982
};
 
14983
 
 
14984
inline ostream& operator << (ostream &out, const CExprValue &ev) {
 
14985
  ev.print (out);
 
14986
  return out;
 
14987
}
 
14988
 
 
14989
} // namespace Puma
 
14990
 
 
14991
#endif /* __CExprValue_h__ */
 
14992
 
 
14993
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
14994
namespace Puma {
 
14995
 
 
14996
 
 
14997
/** \class CSemValue CSemValue.h Puma/CSemValue.h
 
14998
 *  Semantic information object about values in the syntax 
 
14999
 *  tree. Provides the value and type of an expression or
 
15000
 *  entity (name). */
 
15001
 
 
15002
#line 15003 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15003
} // closed Puma
 
15004
class CCExprResolve;
 
15005
class CExprResolve;
 
15006
class WinIfExists;
 
15007
class WinImportHandler;
 
15008
class WinMacros;
 
15009
class WinAsm;
 
15010
class WinDeclSpecs;
 
15011
class WinMemberExplSpec;
 
15012
class WinTypeKeywords;
 
15013
class WinFriend;
 
15014
class ExtAC;
 
15015
class ExtACBuilderCoupling;
 
15016
class ExtACSyntaxCoupling;
 
15017
class ExtACTree;
 
15018
class ExtACKeywords;
 
15019
class ExtGnu;
 
15020
class PragmaOnceUnitState;
 
15021
class PragmaOnce;
 
15022
class CMatchSyntax;
 
15023
namespace Puma {
 
15024
 
 
15025
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
15026
class CSemValue {
 
15027
#line 15028 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15028
  friend class ::CCExprResolve;
 
15029
  friend class ::CExprResolve;
 
15030
  friend class ::WinIfExists;
 
15031
  friend class ::WinImportHandler;
 
15032
  friend class ::WinMacros;
 
15033
  friend class ::WinAsm;
 
15034
  friend class ::WinDeclSpecs;
 
15035
  friend class ::WinMemberExplSpec;
 
15036
  friend class ::WinTypeKeywords;
 
15037
  friend class ::WinFriend;
 
15038
  friend class ::ExtAC;
 
15039
  friend class ::ExtACBuilderCoupling;
 
15040
  friend class ::ExtACSyntaxCoupling;
 
15041
  friend class ::ExtACTree;
 
15042
  friend class ::ExtACKeywords;
 
15043
  friend class ::ExtGnu;
 
15044
  friend class ::PragmaOnceUnitState;
 
15045
  friend class ::PragmaOnce;
 
15046
  friend class ::CMatchSyntax;
 
15047
 
 
15048
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
15049
 
 
15050
  bool value_ref;
 
15051
  bool type_ref;
 
15052
 
 
15053
protected:
 
15054
  /** The semantic value information object. */
 
15055
  CExprValue *value;
 
15056
  /** The type information object. */
 
15057
  CTypeInfo *type;
 
15058
 
 
15059
public:
 
15060
  /** Constructor. */
 
15061
  CSemValue ();
 
15062
  /** Destructor. Frees the type and value. */
 
15063
  virtual ~CSemValue ();
 
15064
 
 
15065
  /** Set the semantic value information object.
 
15066
   *  Will be freed in the destructor.
 
15067
   *  \param v The value info object. */
 
15068
  void setValue (CExprValue *v);
 
15069
  /** Set the semantic value information object as reference.
 
15070
   *  Will not be destroyed in the destructor.
 
15071
   *  \param v The value info object. */
 
15072
  void setValueRef (CExprValue *v);
 
15073
  /** Set the type information object.
 
15074
   *  Will be freed in the destructor.
 
15075
   *  \param t The type info object. */
 
15076
  void setType (CTypeInfo *t);
 
15077
  /** Set the type information object as reference.
 
15078
   *  Will not be destroyed in the destructor.
 
15079
   *  \param t The type info object. */
 
15080
  void setTypeRef (CTypeInfo *t);
 
15081
  /** Get the semantic information about the value. */
 
15082
  CExprValue* getValue() { return value; }
 
15083
  /** Get the type of the value. */
 
15084
  CTypeInfo* getType() { return type; }
 
15085
public:
 
15086
  typedef AC::TL<bool,AC::TL<bool,AC::TL<Puma::CExprValue *,AC::TL<Puma::CTypeInfo *,AC::TLE > > > > __AttrTypes;
 
15087
  const char *__attr_name (unsigned i) const {
 
15088
    static const char *names[] = { "value_ref", "type_ref", "value", "type" }; return names[i];
 
15089
  }
 
15090
  const void *__attr (unsigned __i) const {
 
15091
    switch (__i) { case 0: return &value_ref; case 1: return &type_ref; case 2: return &value; case 3: return &type; default: return 0; }
 
15092
  }
 
15093
#line 71 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemValue.h"
 
15094
};
 
15095
 
 
15096
inline CSemValue::CSemValue () : 
 
15097
  value_ref (false),
 
15098
  type_ref (true),
 
15099
  value ((CExprValue*)0), 
 
15100
  type (&CTYPE_UNDEFINED)
 
15101
 {}
 
15102
inline CSemValue::~CSemValue () 
 
15103
 { if (value && ! value_ref) delete value; 
 
15104
   if (type && ! type_ref) CTypeInfo::Destroy (type); }
 
15105
 
 
15106
inline void CSemValue::setValue (CExprValue *v) 
 
15107
 { if (value && ! value_ref) delete value; 
 
15108
   value = v; value_ref = false; }
 
15109
inline void CSemValue::setValueRef (CExprValue *v) 
 
15110
 { if (value && ! value_ref) delete value; 
 
15111
   value = v; value_ref = true; }
 
15112
 
 
15113
inline void CSemValue::setType (CTypeInfo *t) 
 
15114
 { if (type && ! type_ref) CTypeInfo::Destroy (type); 
 
15115
   type = t; type_ref = false; }
 
15116
inline void CSemValue::setTypeRef (CTypeInfo *t) 
 
15117
 { if (type && ! type_ref) CTypeInfo::Destroy (type); 
 
15118
   type = t; type_ref = true; }
 
15119
 
 
15120
 
 
15121
} // namespace Puma
 
15122
 
 
15123
#endif /* __CSemValue_h__ */
 
15124
 
 
15125
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
15126
// This file is part of PUMA.
 
15127
// Copyright (C) 1999-2003  The PUMA developer team.
 
15128
//                                                                
 
15129
// This program is free software;  you can redistribute it and/or 
 
15130
// modify it under the terms of the GNU General Public License as 
 
15131
// published by the Free Software Foundation; either version 2 of 
 
15132
// the License, or (at your option) any later version.            
 
15133
//                                                                
 
15134
// This program is distributed in the hope that it will be useful,
 
15135
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
15136
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
15137
// GNU General Public License for more details.                   
 
15138
//                                                                
 
15139
// You should have received a copy of the GNU General Public      
 
15140
// License along with this program; if not, write to the Free     
 
15141
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
15142
// MA  02111-1307  USA                                            
 
15143
 
 
15144
#ifndef __CStrLiteral_h__
 
15145
#define __CStrLiteral_h__
 
15146
 
 
15147
/** \file
 
15148
 *  String literal abstraction. */
 
15149
 
 
15150
 
 
15151
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
15152
namespace Puma {
 
15153
 
 
15154
 
 
15155
/** \class CStrLiteral CStrLiteral.h Puma/CStrLiteral.h
 
15156
 *  String literal abstraction. Holds the string value, 
 
15157
 *  its length, and the string type. */
 
15158
 
 
15159
#line 15160 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15160
} // closed Puma
 
15161
class CCExprResolve;
 
15162
class CExprResolve;
 
15163
class WinIfExists;
 
15164
class WinImportHandler;
 
15165
class WinMacros;
 
15166
class WinAsm;
 
15167
class WinDeclSpecs;
 
15168
class WinMemberExplSpec;
 
15169
class WinTypeKeywords;
 
15170
class WinFriend;
 
15171
class ExtAC;
 
15172
class ExtACBuilderCoupling;
 
15173
class ExtACSyntaxCoupling;
 
15174
class ExtACTree;
 
15175
class ExtACKeywords;
 
15176
class ExtGnu;
 
15177
class PragmaOnceUnitState;
 
15178
class PragmaOnce;
 
15179
class CMatchSyntax;
 
15180
namespace Puma {
 
15181
 
 
15182
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
15183
class CStrLiteral : public CExprValue {
 
15184
#line 15185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15185
  friend class ::CCExprResolve;
 
15186
  friend class ::CExprResolve;
 
15187
  friend class ::WinIfExists;
 
15188
  friend class ::WinImportHandler;
 
15189
  friend class ::WinMacros;
 
15190
  friend class ::WinAsm;
 
15191
  friend class ::WinDeclSpecs;
 
15192
  friend class ::WinMemberExplSpec;
 
15193
  friend class ::WinTypeKeywords;
 
15194
  friend class ::WinFriend;
 
15195
  friend class ::ExtAC;
 
15196
  friend class ::ExtACBuilderCoupling;
 
15197
  friend class ::ExtACSyntaxCoupling;
 
15198
  friend class ::ExtACTree;
 
15199
  friend class ::ExtACKeywords;
 
15200
  friend class ::ExtGnu;
 
15201
  friend class ::PragmaOnceUnitState;
 
15202
  friend class ::PragmaOnce;
 
15203
  friend class ::CMatchSyntax;
 
15204
 
 
15205
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
15206
 
 
15207
  const char *_string;
 
15208
  unsigned long _len;
 
15209
  
 
15210
public:
 
15211
  /** Constructor.
 
15212
   *  \param s The string array. 
 
15213
   *  \param len The length of the string.
 
15214
   *  \param t The type of the string. */
 
15215
  CStrLiteral (const char *s, unsigned long len, CTypeInfo *t) : 
 
15216
    CExprValue (t), _string (s), _len (len) {}
 
15217
  /** Destructor. Frees the string. */
 
15218
  virtual ~CStrLiteral () { if (_string) delete[] _string; }
 
15219
 
 
15220
  /** Print the string on the given output stream.
 
15221
   *  \param out The output stream. */
 
15222
  virtual void print (ostream &out) const { out << "\"" << String () << "\""; }
 
15223
  /** Get the wide string. */
 
15224
  const char *String () const { return _string; }
 
15225
  /** Get the length of the string. */
 
15226
  unsigned long Length () const { return _len; }
 
15227
 
 
15228
  /** Get this. */
 
15229
  CStrLiteral *StrLiteral () const { return (CStrLiteral*)this; }
 
15230
public:
 
15231
  typedef AC::TL<const char *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
15232
  const char *__attr_name (unsigned i) const {
 
15233
    static const char *names[] = { "_string", "_len" }; return names[i];
 
15234
  }
 
15235
  const void *__attr (unsigned __i) const {
 
15236
    switch (__i) { case 0: return &_string; case 1: return &_len; default: return 0; }
 
15237
  }
 
15238
#line 57 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStrLiteral.h"
 
15239
};
 
15240
 
 
15241
 
 
15242
} // namespace Puma
 
15243
 
 
15244
#endif /* __CStrLiteral_h__ */
 
15245
 
 
15246
#line 177 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15247
using namespace std;
 
15248
 
 
15249
namespace Puma {
 
15250
 
 
15251
 
 
15252
class ErrorStream;
 
15253
class CObjectInfo;
 
15254
class CStructure;
 
15255
 
 
15256
/*****************************************************************************/
 
15257
/*                                                                           */
 
15258
/*                    S y n t a x  t r e e  n o d e s                        */
 
15259
/*                                                                           */
 
15260
/*****************************************************************************/
 
15261
 
 
15262
/** \class CTree CTree.h Puma/CTree.h
 
15263
 *  Base class for all C/C++ syntax tree classes. 
 
15264
 *
 
15265
 *  The syntax tree is the result of the syntactic analysis of the input source 
 
15266
 *  code representing its syntactic structure according to the accepted grammar
 
15267
 *  (see class Syntax). 
 
15268
 *
 
15269
 *  Objects of this class and classes derived from this class are created by 
 
15270
 *  the tree builder component of %Puma during the parse process. A syntax tree 
 
15271
 *  shall be destroyed using the tree builder that has created it by calling its 
 
15272
 *  method Builder::destroy(CTree*) with the root node of the syntax tree as its 
 
15273
 *  argument.
 
15274
 *  
 
15275
 *  The navigation in the syntax tree is done using the methods CTree::Parent(), 
 
15276
 *  CTree::Sons(), and CTree::Son(int) const. In a syntax tree "sons" are 
 
15277
 *  understood as the syntactic child nodes of a syntax tree node, whereas 
 
15278
 *  "daughters" are understood are their semantic child nodes. 
 
15279
 *
 
15280
 *  Another way to traverse a syntax tree is to implement an own tree visitor 
 
15281
 *  based on class Puma::CVisitor. This is recommended especially for larger 
 
15282
 *  syntax trees.
 
15283
 *
 
15284
 *  A syntax tree node can be identified by comparing its node name with the node 
 
15285
 *  identifier of the expected syntax tree node:
 
15286
 *  \code if (node->NodeName() == Puma::CT_BinaryExpr::NodeId()) ... \endcode
 
15287
 *  
 
15288
 *  Based on the syntax tree further semantic analyses can be performed. Semantic 
 
15289
 *  information, like scope, value, type, and object information, is linked into 
 
15290
 *  the syntax tree. It can be accessed using the methods CTree::SemScope(), 
 
15291
 *  CTree::SemValue(), and CTree::SemObject(). Some nodes provide short-cuts to
 
15292
 *  the semantic type and value information by implementing the methods 
 
15293
 *  CTree::Type() and CTree::Value().
 
15294
 *
 
15295
 *  The information of the syntax tree can be used to perform high-level 
 
15296
 *  transformations of the source code (see class ManipCommander). */
 
15297
 
 
15298
#line 15299 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15299
} // closed Puma
 
15300
class CCExprResolve;
 
15301
class CExprResolve;
 
15302
class WinIfExists;
 
15303
class WinImportHandler;
 
15304
class WinMacros;
 
15305
class WinAsm;
 
15306
class WinDeclSpecs;
 
15307
class WinMemberExplSpec;
 
15308
class WinTypeKeywords;
 
15309
class WinFriend;
 
15310
class ExtAC;
 
15311
class ExtACBuilderCoupling;
 
15312
class ExtACSyntaxCoupling;
 
15313
class ExtACTree;
 
15314
class ExtACKeywords;
 
15315
class ExtGnu;
 
15316
class PragmaOnceUnitState;
 
15317
class PragmaOnce;
 
15318
class CMatchSyntax;
 
15319
namespace Puma {
 
15320
 
 
15321
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15322
 
 
15323
#line 15324 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15324
} // closed Puma
 
15325
 
 
15326
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15327
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
15328
 
 
15329
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15330
// This file is part of PUMA.
 
15331
// Copyright (C) 1999-2003  The PUMA developer team.
 
15332
//                                                                
 
15333
// This program is free software;  you can redistribute it and/or 
 
15334
// modify it under the terms of the GNU General Public License as 
 
15335
// published by the Free Software Foundation; either version 2 of 
 
15336
// the License, or (at your option) any later version.            
 
15337
//                                                                
 
15338
// This program is distributed in the hope that it will be useful,
 
15339
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
15340
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
15341
// GNU General Public License for more details.                   
 
15342
//                                                                
 
15343
// You should have received a copy of the GNU General Public      
 
15344
// License along with this program; if not, write to the Free     
 
15345
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
15346
// MA  02111-1307  USA                                            
 
15347
 
 
15348
#ifndef __CCExprResolveH_ah__
 
15349
#define __CCExprResolveH_ah__
 
15350
 
 
15351
// This aspect inserts resolve member functions into all syntax tree classes
 
15352
// that represent expressions. As the function is virtual, an efficient
 
15353
// run-time switch over the node type is implemented.
 
15354
 
 
15355
namespace Puma {
 
15356
  class CCSemExpr;
 
15357
}
 
15358
 
 
15359
namespace Puma {
 
15360
  
 
15361
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15362
 
 
15363
  
 
15364
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15365
 
 
15366
}
 
15367
 
 
15368
 
 
15369
#line 15370 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15370
class CExprResolve;
 
15371
class WinIfExists;
 
15372
class WinImportHandler;
 
15373
class WinMacros;
 
15374
class WinAsm;
 
15375
class WinDeclSpecs;
 
15376
class WinMemberExplSpec;
 
15377
class WinTypeKeywords;
 
15378
class WinFriend;
 
15379
class ExtAC;
 
15380
class ExtACBuilderCoupling;
 
15381
class ExtACSyntaxCoupling;
 
15382
class ExtACTree;
 
15383
class ExtACKeywords;
 
15384
class ExtGnu;
 
15385
class PragmaOnceUnitState;
 
15386
class PragmaOnce;
 
15387
class CMatchSyntax;
 
15388
 
 
15389
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15390
class CCExprResolve {
 
15391
#line 15392 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15392
 
 
15393
public:
 
15394
  static CCExprResolve *aspectof () {
 
15395
    static CCExprResolve __instance;
 
15396
    return &__instance;
 
15397
  }
 
15398
  static CCExprResolve *aspectOf () {
 
15399
    return aspectof ();
 
15400
  }
 
15401
private:
 
15402
 
 
15403
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15404
 
 
15405
#line 15406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15406
  friend class ::CExprResolve;
 
15407
  friend class ::WinIfExists;
 
15408
  friend class ::WinImportHandler;
 
15409
  friend class ::WinMacros;
 
15410
  friend class ::WinAsm;
 
15411
  friend class ::WinDeclSpecs;
 
15412
  friend class ::WinMemberExplSpec;
 
15413
  friend class ::WinTypeKeywords;
 
15414
  friend class ::WinFriend;
 
15415
  friend class ::ExtAC;
 
15416
  friend class ::ExtACBuilderCoupling;
 
15417
  friend class ::ExtACSyntaxCoupling;
 
15418
  friend class ::ExtACTree;
 
15419
  friend class ::ExtACKeywords;
 
15420
  friend class ::ExtGnu;
 
15421
  friend class ::PragmaOnceUnitState;
 
15422
  friend class ::PragmaOnce;
 
15423
  friend class ::CMatchSyntax;
 
15424
 
 
15425
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15426
 
 
15427
  
 
15428
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15429
 
 
15430
  
 
15431
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15432
 
 
15433
public:
 
15434
  typedef AC::TLE __AttrTypes;
 
15435
  const char *__attr_name (unsigned i) const { return 0; }
 
15436
  const void *__attr (unsigned __i) const { return 0; }
 
15437
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15438
};
 
15439
#line 15440 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15440
 
 
15441
namespace AC {
 
15442
 
15443
 
 
15444
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15445
 
 
15446
 
 
15447
#endif /* __CCExprResolveH_ah__ */
 
15448
 
 
15449
#line 8 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15450
#endif
 
15451
namespace Puma {
 
15452
 
 
15453
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15454
 
 
15455
#line 15456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15456
} // closed Puma
 
15457
 
 
15458
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15459
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
15460
 
 
15461
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15462
// This file is part of PUMA.
 
15463
// Copyright (C) 1999-2003  The PUMA developer team.
 
15464
//                                                                
 
15465
// This program is free software;  you can redistribute it and/or 
 
15466
// modify it under the terms of the GNU General Public License as 
 
15467
// published by the Free Software Foundation; either version 2 of 
 
15468
// the License, or (at your option) any later version.            
 
15469
//                                                                
 
15470
// This program is distributed in the hope that it will be useful,
 
15471
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
15472
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
15473
// GNU General Public License for more details.                   
 
15474
//                                                                
 
15475
// You should have received a copy of the GNU General Public      
 
15476
// License along with this program; if not, write to the Free     
 
15477
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
15478
// MA  02111-1307  USA                                            
 
15479
 
 
15480
#ifndef __CExprResolveH_ah__
 
15481
#define __CExprResolveH_ah__
 
15482
 
 
15483
// This aspect inserts resolve member functions into all syntax tree classes
 
15484
// that represent expressions. As the function is virtual, an efficient
 
15485
// run-time switch over the node type is implemented.
 
15486
 
 
15487
namespace Puma {
 
15488
  class CSemExpr;
 
15489
}
 
15490
 
 
15491
namespace Puma {
 
15492
  
 
15493
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15494
 
 
15495
  
 
15496
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15497
 
 
15498
}
 
15499
 
 
15500
 
 
15501
#line 15502 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15502
class CCExprResolve;
 
15503
class WinIfExists;
 
15504
class WinImportHandler;
 
15505
class WinMacros;
 
15506
class WinAsm;
 
15507
class WinDeclSpecs;
 
15508
class WinMemberExplSpec;
 
15509
class WinTypeKeywords;
 
15510
class WinFriend;
 
15511
class ExtAC;
 
15512
class ExtACBuilderCoupling;
 
15513
class ExtACSyntaxCoupling;
 
15514
class ExtACTree;
 
15515
class ExtACKeywords;
 
15516
class ExtGnu;
 
15517
class PragmaOnceUnitState;
 
15518
class PragmaOnce;
 
15519
class CMatchSyntax;
 
15520
 
 
15521
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15522
class CExprResolve {
 
15523
#line 15524 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15524
 
 
15525
public:
 
15526
  static CExprResolve *aspectof () {
 
15527
    static CExprResolve __instance;
 
15528
    return &__instance;
 
15529
  }
 
15530
  static CExprResolve *aspectOf () {
 
15531
    return aspectof ();
 
15532
  }
 
15533
private:
 
15534
 
 
15535
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15536
 
 
15537
#line 15538 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15538
  friend class ::CCExprResolve;
 
15539
  friend class ::WinIfExists;
 
15540
  friend class ::WinImportHandler;
 
15541
  friend class ::WinMacros;
 
15542
  friend class ::WinAsm;
 
15543
  friend class ::WinDeclSpecs;
 
15544
  friend class ::WinMemberExplSpec;
 
15545
  friend class ::WinTypeKeywords;
 
15546
  friend class ::WinFriend;
 
15547
  friend class ::ExtAC;
 
15548
  friend class ::ExtACBuilderCoupling;
 
15549
  friend class ::ExtACSyntaxCoupling;
 
15550
  friend class ::ExtACTree;
 
15551
  friend class ::ExtACKeywords;
 
15552
  friend class ::ExtGnu;
 
15553
  friend class ::PragmaOnceUnitState;
 
15554
  friend class ::PragmaOnce;
 
15555
  friend class ::CMatchSyntax;
 
15556
 
 
15557
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15558
 
 
15559
  
 
15560
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15561
 
 
15562
  
 
15563
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15564
 
 
15565
public:
 
15566
  typedef AC::TLE __AttrTypes;
 
15567
  const char *__attr_name (unsigned i) const { return 0; }
 
15568
  const void *__attr (unsigned __i) const { return 0; }
 
15569
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15570
};
 
15571
#line 15572 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15572
 
 
15573
namespace AC {
 
15574
 
15575
 
 
15576
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15577
 
 
15578
 
 
15579
#endif /* __CExprResolveH_ah__ */
 
15580
 
 
15581
#line 8 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15582
#endif
 
15583
namespace Puma {
 
15584
 
 
15585
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15586
class CTree {
 
15587
#line 15588 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15588
  friend class ::CCExprResolve;
 
15589
  friend class ::CExprResolve;
 
15590
  friend class ::WinIfExists;
 
15591
  friend class ::WinImportHandler;
 
15592
  friend class ::WinMacros;
 
15593
  friend class ::WinAsm;
 
15594
  friend class ::WinDeclSpecs;
 
15595
  friend class ::WinMemberExplSpec;
 
15596
  friend class ::WinTypeKeywords;
 
15597
  friend class ::WinFriend;
 
15598
  friend class ::ExtAC;
 
15599
  friend class ::ExtACBuilderCoupling;
 
15600
  friend class ::ExtACSyntaxCoupling;
 
15601
  friend class ::ExtACTree;
 
15602
  friend class ::ExtACKeywords;
 
15603
  friend class ::ExtGnu;
 
15604
  friend class ::PragmaOnceUnitState;
 
15605
  friend class ::PragmaOnce;
 
15606
  friend class ::CMatchSyntax;
 
15607
 
 
15608
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15609
 
 
15610
  CTree * _parent;
 
15611
 
 
15612
public:
 
15613
  /*DEBUG*/static int alloc;
 
15614
  /*DEBUG*/static int release;
 
15615
 
 
15616
protected:
 
15617
  /** Get the n-th son from given sons array. Skips empty (NULL) array items.
 
15618
   *  \param sons The sons array.
 
15619
   *  \param len Length of the sons array.
 
15620
   *  \param n Index of the son.
 
15621
   *  \return The n-th son or NULL. */
 
15622
  CTree *Son (CTree * const *sons, int len, int n) const;
 
15623
  /** Get the number of sons in the given sons array. Skips empty (NULL) array items.
 
15624
   *  \param sons The sons array.
 
15625
   *  \param len Length of the sons array. */
 
15626
  int Sons (CTree * const *sons, int len) const;
 
15627
  /** Replace a son.
 
15628
   *  \param sons The sons array.
 
15629
   *  \param len Length of the sons array.
 
15630
   *  \param old_son The son to replace.
 
15631
   *  \param new_son The new son. */
 
15632
  void ReplaceSon (CTree **sons, int len, CTree *old_son, CTree *new_son);
 
15633
  /** Replace a son if it equals the given son.
 
15634
   *  \param son The actual son.
 
15635
   *  \param old_son The son to replace, must match the actual son.
 
15636
   *  \param new_son The new son, overwrites the actual son. */
 
15637
  void ReplaceSon (CTree *&son, CTree *old_son, CTree *new_son);
 
15638
  /** Add a new son.
 
15639
   *  \param son The actual son.
 
15640
   *  \param new_son The new son, overwrites the actual son. */
 
15641
  void AddSon (CTree *&son, CTree *new_son);
 
15642
  /** Set the parent tree node.
 
15643
   *  \param parent The new parent tree node. */
 
15644
  void SetParent (const CTree *parent) { _parent = (CTree*)parent; }
 
15645
  /** Set the parent tree node of the given tree node.
 
15646
   *  \param node The tree node.
 
15647
   *  \param parent The new parent. */
 
15648
  void SetParent (CTree *node, const CTree *parent) { node->_parent = (CTree*)parent; }
 
15649
  
 
15650
protected:
 
15651
  /** Default constructor. */
 
15652
  CTree () : _parent(0) { /*DEBUG*/alloc++; }
 
15653
 
 
15654
public:
 
15655
  /** Destructor. */
 
15656
  virtual ~CTree () { /*DEBUG*/release++; }
 
15657
  /** Get the number of sons. */
 
15658
  virtual int Sons () const = 0;
 
15659
  /** Get the n-th son.
 
15660
   *  \param n The index of the son.
 
15661
   *  \return The n-th son or NULL. */
 
15662
  virtual CTree *Son (int n) const { return (CTree*)0; }
 
15663
  /** Get the node name (node identifier). */
 
15664
  virtual const char *NodeName () const = 0;
 
15665
  /** Get the first token of the syntactic construct represented by this sub-tree.
 
15666
   *  \return The token or NULL. */
 
15667
  virtual Token *token () const;
 
15668
  /** Get the last token of the syntactic construct represented by this sub-tree.
 
15669
   *  \return The token or NULL. */
 
15670
  virtual Token *end_token () const;
 
15671
  /** Get the CT_Token node of the first token of the syntactic construct represented by this sub-tree.
 
15672
   *  \return The token node or NULL. */
 
15673
  virtual CT_Token *token_node () const;
 
15674
  /** Get the CT_Token node of the last token of the syntactic construct represented by this sub-tree.
 
15675
   *  \return The token node or NULL. */
 
15676
  virtual CT_Token *end_token_node () const;
 
15677
  /** Replace a son.
 
15678
   *  \param old_son The son to replace.
 
15679
   *  \param new_son The son with which to replace. */
 
15680
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {}
 
15681
  /** Get the parent node.
 
15682
   *  \return The parent node or NULL. */
 
15683
  virtual CTree *Parent () const { return (CTree*)_parent; }
 
15684
 
 
15685
public: // semantic information
 
15686
  /** Get the semantic type of the node.
 
15687
   *  \return The type object or NULL. */
 
15688
  virtual CTypeInfo *Type () const { return (CTypeInfo*)0; }
 
15689
  /** Get the calculated value of the expression.
 
15690
   *  \return The value object or NULL. */
 
15691
  virtual CExprValue *Value () const { return (CExprValue*)0; }
 
15692
  
 
15693
  /** Get the scope opened by the node.
 
15694
   *  \return The scope object or NULL. */
 
15695
  virtual CSemScope *SemScope () const { return (CSemScope*)0; }
 
15696
  /** Get the semantic value of the node.
 
15697
   *  \return The value object or NULL. */
 
15698
  virtual CSemValue *SemValue () const { return (CSemValue*)0; }
 
15699
  /** Get the semantic information of the node.
 
15700
   *  \return The semantic object or NULL. */
 
15701
  virtual CSemObject *SemObject () const { return (CSemObject*)0; }
 
15702
  
 
15703
public: // node classification function
 
15704
  /** Get a pointer to CT_SimpleName if the current node represents a name.
 
15705
   *  \return The CT_SimpleName node or NULL. */
 
15706
  virtual CT_SimpleName *IsSimpleName () { return 0; }
 
15707
  /** Get a pointer to CT_String if the current node represents a string.
 
15708
   *  \return The CT_String node or NULL. */
 
15709
  virtual CT_String *IsString () { return 0; }
 
15710
  /** Get a pointer to CT_Declarator if the current node represents a declarator.
 
15711
   *  \return The CT_Declarator pointer or NULL. */
 
15712
  virtual CT_Declarator *IsDeclarator () { return 0; }
 
15713
  /** Get a pointer to CT_Statement if the current node represents a statement.
 
15714
   *  \return The CT_Statement pointer or NULL. */
 
15715
  virtual CT_Statement *IsStatement () { return 0; }
 
15716
  /** Get a pointer to CT_Expression if the current node represents a expression.
 
15717
   *  \return The CT_Expression pointer or NULL. */
 
15718
  virtual CT_Expression *IsExpression () { return 0; }
 
15719
  /** Get a pointer to CT_Decl if the current node represents a declaration.
 
15720
   *  \return The CT_Decl pointer or NULL. */
 
15721
  virtual CT_Decl *IsDeclaration () { return 0; }
 
15722
  /** Get a pointer to CT_Call if the current node represents a call expression.
 
15723
   *  \return The CT_Call pointer or NULL. */
 
15724
  virtual CT_Call *IsCall () { return 0; }
 
15725
   private:
 
15726
  typedef CTree CCExprResolveCTree;
 
15727
 
 
15728
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
15729
 public :
 
15730
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
15731
  typedef CTree CExprResolveCTree;
 
15732
 
 
15733
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
15734
 public :
 
15735
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
15736
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
15737
  const char *__attr_name (unsigned i) const {
 
15738
    static const char *names[] = { "_parent" }; return names[i];
 
15739
  }
 
15740
  const void *__attr (unsigned __i) const {
 
15741
    switch (__i) { case 0: return &_parent; default: return 0; }
 
15742
  }
 
15743
#line 343 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15744
};
 
15745
 
 
15746
/** \class CT_Error CTree.h Puma/CTree.h
 
15747
 *  Error tree node that is inserted into the tree for syntactic constructs
 
15748
 *  that could not be parsed. */
 
15749
 
 
15750
#line 15751 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15751
} // closed Puma
 
15752
class CCExprResolve;
 
15753
class CExprResolve;
 
15754
class WinIfExists;
 
15755
class WinImportHandler;
 
15756
class WinMacros;
 
15757
class WinAsm;
 
15758
class WinDeclSpecs;
 
15759
class WinMemberExplSpec;
 
15760
class WinTypeKeywords;
 
15761
class WinFriend;
 
15762
class ExtAC;
 
15763
class ExtACBuilderCoupling;
 
15764
class ExtACSyntaxCoupling;
 
15765
class ExtACTree;
 
15766
class ExtACKeywords;
 
15767
class ExtGnu;
 
15768
class PragmaOnceUnitState;
 
15769
class PragmaOnce;
 
15770
class CMatchSyntax;
 
15771
namespace Puma {
 
15772
 
 
15773
#line 348 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15774
class CT_Error : public CTree {
 
15775
#line 15776 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15776
  friend class ::CCExprResolve;
 
15777
  friend class ::CExprResolve;
 
15778
  friend class ::WinIfExists;
 
15779
  friend class ::WinImportHandler;
 
15780
  friend class ::WinMacros;
 
15781
  friend class ::WinAsm;
 
15782
  friend class ::WinDeclSpecs;
 
15783
  friend class ::WinMemberExplSpec;
 
15784
  friend class ::WinTypeKeywords;
 
15785
  friend class ::WinFriend;
 
15786
  friend class ::ExtAC;
 
15787
  friend class ::ExtACBuilderCoupling;
 
15788
  friend class ::ExtACSyntaxCoupling;
 
15789
  friend class ::ExtACTree;
 
15790
  friend class ::ExtACKeywords;
 
15791
  friend class ::ExtGnu;
 
15792
  friend class ::PragmaOnceUnitState;
 
15793
  friend class ::PragmaOnce;
 
15794
  friend class ::CMatchSyntax;
 
15795
 
 
15796
#line 348 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15797
 
 
15798
public:
 
15799
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15800
  static const char *NodeId ();
 
15801
  /** Get the name of the node. Can be compared with NodeId(). */
 
15802
  const char *NodeName () const { return NodeId (); }
 
15803
  /** Get the number of sons. */
 
15804
  int Sons () const { return 0; }
 
15805
public:
 
15806
  typedef AC::TLE __AttrTypes;
 
15807
  const char *__attr_name (unsigned i) const { return 0; }
 
15808
  const void *__attr (unsigned __i) const { return 0; }
 
15809
#line 356 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15810
};
 
15811
 
 
15812
/** \class CT_Token CTree.h Puma/CTree.h
 
15813
 *  Tree node representing a single token in the source code. */
 
15814
 
 
15815
#line 15816 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15816
} // closed Puma
 
15817
class CCExprResolve;
 
15818
class CExprResolve;
 
15819
class WinIfExists;
 
15820
class WinImportHandler;
 
15821
class WinMacros;
 
15822
class WinAsm;
 
15823
class WinDeclSpecs;
 
15824
class WinMemberExplSpec;
 
15825
class WinTypeKeywords;
 
15826
class WinFriend;
 
15827
class ExtAC;
 
15828
class ExtACBuilderCoupling;
 
15829
class ExtACSyntaxCoupling;
 
15830
class ExtACTree;
 
15831
class ExtACKeywords;
 
15832
class ExtGnu;
 
15833
class PragmaOnceUnitState;
 
15834
class PragmaOnce;
 
15835
class CMatchSyntax;
 
15836
namespace Puma {
 
15837
 
 
15838
#line 360 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15839
class CT_Token : public CTree {
 
15840
#line 15841 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15841
  friend class ::CCExprResolve;
 
15842
  friend class ::CExprResolve;
 
15843
  friend class ::WinIfExists;
 
15844
  friend class ::WinImportHandler;
 
15845
  friend class ::WinMacros;
 
15846
  friend class ::WinAsm;
 
15847
  friend class ::WinDeclSpecs;
 
15848
  friend class ::WinMemberExplSpec;
 
15849
  friend class ::WinTypeKeywords;
 
15850
  friend class ::WinFriend;
 
15851
  friend class ::ExtAC;
 
15852
  friend class ::ExtACBuilderCoupling;
 
15853
  friend class ::ExtACSyntaxCoupling;
 
15854
  friend class ::ExtACTree;
 
15855
  friend class ::ExtACKeywords;
 
15856
  friend class ::ExtGnu;
 
15857
  friend class ::PragmaOnceUnitState;
 
15858
  friend class ::PragmaOnce;
 
15859
  friend class ::CMatchSyntax;
 
15860
 
 
15861
#line 360 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15862
 
 
15863
  Token *_token;
 
15864
  unsigned long int _number;
 
15865
  
 
15866
public:
 
15867
  /** Constructor. 
 
15868
   *  \param token The represented token.
 
15869
   *  \param number The token number (a consecutive number). */
 
15870
  CT_Token (Token *token, unsigned long int number = 0) : 
 
15871
    _token (token), _number (number) {}
 
15872
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
15873
  static const char *NodeId ();
 
15874
  /** Get the name of the node. Can be compared with NodeId(). */
 
15875
  const char *NodeName () const { return NodeId (); }
 
15876
  /** Get the number of sons. */
 
15877
  int Sons () const { return 0; }
 
15878
  /** Get the represented token. */
 
15879
  Token *token () const { return _token; }
 
15880
  /** Get the represented token. */
 
15881
  Token *end_token () const { return _token; }
 
15882
  /** Get this. */
 
15883
  CT_Token *token_node () const { return (CT_Token*)this; }
 
15884
  /** Get this. */
 
15885
  CT_Token *end_token_node () const { return (CT_Token*)this; }
 
15886
  /** Set the token number. 
 
15887
   *  \param number The token number. */ 
 
15888
  void Number (unsigned long int number) { _number = number; }
 
15889
  /** Get the token number. Can be used to indentify this token. */
 
15890
  unsigned long int Number () const { return _number; }
 
15891
  
 
15892
public:
 
15893
  /** Own new operator reusing memory. */
 
15894
  void *operator new (size_t);
 
15895
  /** Own delete operator. */
 
15896
  void operator delete (void *);
 
15897
public:
 
15898
  typedef AC::TL<Puma::Token *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
15899
  const char *__attr_name (unsigned i) const {
 
15900
    static const char *names[] = { "_token", "_number" }; return names[i];
 
15901
  }
 
15902
  const void *__attr (unsigned __i) const {
 
15903
    switch (__i) { case 0: return &_token; case 1: return &_number; default: return 0; }
 
15904
  }
 
15905
#line 395 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15906
};
 
15907
 
 
15908
/*****************************************************************************/
 
15909
/*                                                                           */
 
15910
/*                              List nodes                                   */
 
15911
/*                                                                           */
 
15912
/*****************************************************************************/
 
15913
 
 
15914
/** \class CT_List CTree.h Puma/CTree.h
 
15915
 *  Base class for tree nodes representing lists. */
 
15916
 
 
15917
#line 15918 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15918
} // closed Puma
 
15919
class CCExprResolve;
 
15920
class CExprResolve;
 
15921
class WinIfExists;
 
15922
class WinImportHandler;
 
15923
class WinMacros;
 
15924
class WinAsm;
 
15925
class WinDeclSpecs;
 
15926
class WinMemberExplSpec;
 
15927
class WinTypeKeywords;
 
15928
class WinFriend;
 
15929
class ExtAC;
 
15930
class ExtACBuilderCoupling;
 
15931
class ExtACSyntaxCoupling;
 
15932
class ExtACTree;
 
15933
class ExtACKeywords;
 
15934
class ExtGnu;
 
15935
class PragmaOnceUnitState;
 
15936
class PragmaOnce;
 
15937
class CMatchSyntax;
 
15938
namespace Puma {
 
15939
 
 
15940
#line 405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15941
class CT_List : public CTree {
 
15942
#line 15943 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
15943
  friend class ::CCExprResolve;
 
15944
  friend class ::CExprResolve;
 
15945
  friend class ::WinIfExists;
 
15946
  friend class ::WinImportHandler;
 
15947
  friend class ::WinMacros;
 
15948
  friend class ::WinAsm;
 
15949
  friend class ::WinDeclSpecs;
 
15950
  friend class ::WinMemberExplSpec;
 
15951
  friend class ::WinTypeKeywords;
 
15952
  friend class ::WinFriend;
 
15953
  friend class ::ExtAC;
 
15954
  friend class ::ExtACBuilderCoupling;
 
15955
  friend class ::ExtACSyntaxCoupling;
 
15956
  friend class ::ExtACTree;
 
15957
  friend class ::ExtACKeywords;
 
15958
  friend class ::ExtGnu;
 
15959
  friend class ::PragmaOnceUnitState;
 
15960
  friend class ::PragmaOnce;
 
15961
  friend class ::CMatchSyntax;
 
15962
 
 
15963
#line 405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
15964
 
 
15965
  /** Son to index map type. */
 
15966
  typedef std::map<CTree*,int> SonToIndexMap;
 
15967
 
 
15968
  Array<CTree*> _sons;
 
15969
  int _properties;
 
15970
  SonToIndexMap _son2idx;
 
15971
 
 
15972
protected:
 
15973
  /** Constructor.
 
15974
   *  \param size The initial list size.
 
15975
   *  \param incr The initial increment count. 
 
15976
   *  \param props The list properties (bit array). */
 
15977
  CT_List(int size = 5, int incr = 5, int props = 0) : 
 
15978
    _sons (size, incr), _properties (props) {}
 
15979
 
 
15980
public:
 
15981
  /** %List properties. */
 
15982
  enum {
 
15983
    /** %List has a start token, like ':' in ":a(1),b(2)" */
 
15984
    OPEN = 1,         
 
15985
    /** %List has an end token */
 
15986
    CLOSE = 2,        
 
15987
    /** %List has opening and closing delimiters, like '(' and ')' */
 
15988
    OPEN_CLOSE = 3,   
 
15989
    /** %List has separators, like ',' */
 
15990
    SEPARATORS = 4,   
 
15991
    /** %List pretend to be empty, like for "(void)" */
 
15992
    FORCE_EMPTY = 8,  
 
15993
    /** %List has trailing separator, like "a,b,c," */
 
15994
    END_SEP = 16,     
 
15995
    /** %List has no separator before last element, like "(a,b...)" */
 
15996
    NO_LAST_SEP = 32, 
 
15997
    /** %List has an introduction chararacter, like "=" in "={a,b}" */
 
15998
    INTRO = 64        
 
15999
  };
 
16000
 
 
16001
  /** Get the number of list entries. */
 
16002
  int Entries () const;
 
16003
  /** Get the n-th list entry.
 
16004
   *  \param n The index of the entry. 
 
16005
   *  \return The list entry or NULL. */
 
16006
  CTree *Entry (int n) const;
 
16007
  /** Get the number of sons. */
 
16008
  int Sons () const { return _sons.length (); }
 
16009
  /** Get the n-th son.
 
16010
   *  \param n The index of the son. 
 
16011
   *  \return The n-th son or NULL. */
 
16012
  CTree *Son (int n) const { return _sons.lookup (n); }
 
16013
  /** Get the list properties. */
 
16014
  int GetProperties () const { return _properties; }
 
16015
  /** Add a list property.
 
16016
   *  \param p The property to add. */
 
16017
  void AddProperties (int p) { _properties |= p; }
 
16018
  /** Add a son.
 
16019
   *  \param s The son to add. */
 
16020
  void AddSon (CTree *s);
 
16021
  /** Prepend a son.
 
16022
   *  \param s The son to prepend. */
 
16023
  void PrefixSon (CTree *s);
 
16024
  /** Insert a son before another son.
 
16025
   *  \param before The son to insert the new son before.
 
16026
   *  \param son The son to insert. */
 
16027
  void InsertSon (CTree *before, CTree *son); 
 
16028
  /** Replace a son.
 
16029
   *  \param old_son The son to replace.
 
16030
   *  \param new_son The new son. */
 
16031
  void ReplaceSon (CTree *old_son, CTree *new_son);
 
16032
  /** Remove a son.
 
16033
   *  \param son The son to remove. */
 
16034
  void RemoveSon (CTree *son);
 
16035
  /** Insert a son at the given index. 
 
16036
   *  \param idx The index at which to insert.
 
16037
   *  \param s The son to insert. */
 
16038
  void InsertSon (int idx, CTree *s);
 
16039
  /** Replace the son at the given index.
 
16040
   *  \param idx The index of the son to replace.
 
16041
   *  \param s The new son. */
 
16042
  void ReplaceSon (int idx, CTree *s);
 
16043
  /** Remove the son at the given index. 
 
16044
   *  \param idx The index of the son to remove. */
 
16045
  void RemoveSon (int idx);
 
16046
public:
 
16047
  typedef AC::TL<Puma::Array< Puma::CTree * >,AC::TL<int,AC::TL<std::map< Puma::CTree *,int >,AC::TLE > > > __AttrTypes;
 
16048
  const char *__attr_name (unsigned i) const {
 
16049
    static const char *names[] = { "_sons", "_properties", "_son2idx" }; return names[i];
 
16050
  }
 
16051
  const void *__attr (unsigned __i) const {
 
16052
    switch (__i) { case 3: return &_sons; case 4: return &_properties; case 5: return &_son2idx; default: return 0; }
 
16053
  }
 
16054
#line 487 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16055
};
 
16056
 
 
16057
/** \class CT_ExprList CTree.h Puma/CTree.h
 
16058
 *  Tree node representing an expression list. */
 
16059
 
 
16060
#line 16061 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16061
} // closed Puma
 
16062
class CCExprResolve;
 
16063
class CExprResolve;
 
16064
class WinIfExists;
 
16065
class WinImportHandler;
 
16066
class WinMacros;
 
16067
class WinAsm;
 
16068
class WinDeclSpecs;
 
16069
class WinMemberExplSpec;
 
16070
class WinTypeKeywords;
 
16071
class WinFriend;
 
16072
class ExtAC;
 
16073
class ExtACBuilderCoupling;
 
16074
class ExtACSyntaxCoupling;
 
16075
class ExtACTree;
 
16076
class ExtACKeywords;
 
16077
class ExtGnu;
 
16078
class PragmaOnceUnitState;
 
16079
class PragmaOnce;
 
16080
class CMatchSyntax;
 
16081
namespace Puma {
 
16082
 
 
16083
#line 491 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16084
class CT_ExprList : public CT_List, public CSemValue, public CSemObject {
 
16085
#line 16086 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16086
  friend class ::CCExprResolve;
 
16087
  friend class ::CExprResolve;
 
16088
  friend class ::WinIfExists;
 
16089
  friend class ::WinImportHandler;
 
16090
  friend class ::WinMacros;
 
16091
  friend class ::WinAsm;
 
16092
  friend class ::WinDeclSpecs;
 
16093
  friend class ::WinMemberExplSpec;
 
16094
  friend class ::WinTypeKeywords;
 
16095
  friend class ::WinFriend;
 
16096
  friend class ::ExtAC;
 
16097
  friend class ::ExtACBuilderCoupling;
 
16098
  friend class ::ExtACSyntaxCoupling;
 
16099
  friend class ::ExtACTree;
 
16100
  friend class ::ExtACKeywords;
 
16101
  friend class ::ExtGnu;
 
16102
  friend class ::PragmaOnceUnitState;
 
16103
  friend class ::PragmaOnce;
 
16104
  friend class ::CMatchSyntax;
 
16105
 
 
16106
#line 491 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16107
 
 
16108
public:
 
16109
  /** Constructor. */
 
16110
  CT_ExprList () { AddProperties (SEPARATORS); }
 
16111
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16112
  static const char *NodeId ();
 
16113
  /** Get the name of the node. Can be compared with NodeId(). */
 
16114
  const char *NodeName () const { return NodeId (); }
 
16115
 
 
16116
  /** Get the type of the last expression in the expression list.
 
16117
   *  \return The type or NULL. */
 
16118
  CTypeInfo *Type () const { return type; }
 
16119
  /** Get the value of the last expression in the expression list.
 
16120
   *  \return The value of NULL. */
 
16121
  CExprValue *Value () const { return value; }
 
16122
  /** Get the semantic value of the node. */
 
16123
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
16124
  /** Get the semantic information about the node. */
 
16125
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
16126
public:
 
16127
  typedef AC::TLE __AttrTypes;
 
16128
  const char *__attr_name (unsigned i) const { return 0; }
 
16129
  const void *__attr (unsigned __i) const { return 0; }
 
16130
#line 510 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16131
};
 
16132
 
 
16133
/** \class CT_DeclaratorList CTree.h Puma/CTree.h
 
16134
 *  Tree node representing a list of declarators. */
 
16135
 
 
16136
#line 16137 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16137
} // closed Puma
 
16138
class CCExprResolve;
 
16139
class CExprResolve;
 
16140
class WinIfExists;
 
16141
class WinImportHandler;
 
16142
class WinMacros;
 
16143
class WinAsm;
 
16144
class WinDeclSpecs;
 
16145
class WinMemberExplSpec;
 
16146
class WinTypeKeywords;
 
16147
class WinFriend;
 
16148
class ExtAC;
 
16149
class ExtACBuilderCoupling;
 
16150
class ExtACSyntaxCoupling;
 
16151
class ExtACTree;
 
16152
class ExtACKeywords;
 
16153
class ExtGnu;
 
16154
class PragmaOnceUnitState;
 
16155
class PragmaOnce;
 
16156
class CMatchSyntax;
 
16157
namespace Puma {
 
16158
 
 
16159
#line 514 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16160
class CT_DeclaratorList : public CT_List {
 
16161
#line 16162 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16162
  friend class ::CCExprResolve;
 
16163
  friend class ::CExprResolve;
 
16164
  friend class ::WinIfExists;
 
16165
  friend class ::WinImportHandler;
 
16166
  friend class ::WinMacros;
 
16167
  friend class ::WinAsm;
 
16168
  friend class ::WinDeclSpecs;
 
16169
  friend class ::WinMemberExplSpec;
 
16170
  friend class ::WinTypeKeywords;
 
16171
  friend class ::WinFriend;
 
16172
  friend class ::ExtAC;
 
16173
  friend class ::ExtACBuilderCoupling;
 
16174
  friend class ::ExtACSyntaxCoupling;
 
16175
  friend class ::ExtACTree;
 
16176
  friend class ::ExtACKeywords;
 
16177
  friend class ::ExtGnu;
 
16178
  friend class ::PragmaOnceUnitState;
 
16179
  friend class ::PragmaOnce;
 
16180
  friend class ::CMatchSyntax;
 
16181
 
 
16182
#line 514 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16183
 
 
16184
public:
 
16185
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16186
  static const char *NodeId ();
 
16187
  /** Get the name of the node. Can be compared with NodeId(). */
 
16188
  const char *NodeName () const { return NodeId (); }
 
16189
public:
 
16190
  typedef AC::TLE __AttrTypes;
 
16191
  const char *__attr_name (unsigned i) const { return 0; }
 
16192
  const void *__attr (unsigned __i) const { return 0; }
 
16193
#line 520 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16194
};
 
16195
 
 
16196
/** \class CT_EnumeratorList CTree.h Puma/CTree.h
 
16197
 *  Tree node representing a list of enumerator constants. */
 
16198
 
 
16199
#line 16200 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16200
} // closed Puma
 
16201
class CCExprResolve;
 
16202
class CExprResolve;
 
16203
class WinIfExists;
 
16204
class WinImportHandler;
 
16205
class WinMacros;
 
16206
class WinAsm;
 
16207
class WinDeclSpecs;
 
16208
class WinMemberExplSpec;
 
16209
class WinTypeKeywords;
 
16210
class WinFriend;
 
16211
class ExtAC;
 
16212
class ExtACBuilderCoupling;
 
16213
class ExtACSyntaxCoupling;
 
16214
class ExtACTree;
 
16215
class ExtACKeywords;
 
16216
class ExtGnu;
 
16217
class PragmaOnceUnitState;
 
16218
class PragmaOnce;
 
16219
class CMatchSyntax;
 
16220
namespace Puma {
 
16221
 
 
16222
#line 524 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16223
class CT_EnumeratorList : public CT_List {
 
16224
#line 16225 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16225
  friend class ::CCExprResolve;
 
16226
  friend class ::CExprResolve;
 
16227
  friend class ::WinIfExists;
 
16228
  friend class ::WinImportHandler;
 
16229
  friend class ::WinMacros;
 
16230
  friend class ::WinAsm;
 
16231
  friend class ::WinDeclSpecs;
 
16232
  friend class ::WinMemberExplSpec;
 
16233
  friend class ::WinTypeKeywords;
 
16234
  friend class ::WinFriend;
 
16235
  friend class ::ExtAC;
 
16236
  friend class ::ExtACBuilderCoupling;
 
16237
  friend class ::ExtACSyntaxCoupling;
 
16238
  friend class ::ExtACTree;
 
16239
  friend class ::ExtACKeywords;
 
16240
  friend class ::ExtGnu;
 
16241
  friend class ::PragmaOnceUnitState;
 
16242
  friend class ::PragmaOnce;
 
16243
  friend class ::CMatchSyntax;
 
16244
 
 
16245
#line 524 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16246
 
 
16247
public:
 
16248
  /** Constructor. */
 
16249
  CT_EnumeratorList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
16250
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16251
  static const char *NodeId ();
 
16252
  /** Get the name of the node. Can be compared with NodeId(). */
 
16253
  const char *NodeName () const { return NodeId (); }
 
16254
public:
 
16255
  typedef AC::TLE __AttrTypes;
 
16256
  const char *__attr_name (unsigned i) const { return 0; }
 
16257
  const void *__attr (unsigned __i) const { return 0; }
 
16258
#line 532 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16259
};
 
16260
   
 
16261
/** \class CT_DeclList CTree.h Puma/CTree.h
 
16262
 *  Tree node representing a list of declarations. */
 
16263
 
 
16264
#line 16265 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16265
} // closed Puma
 
16266
class CCExprResolve;
 
16267
class CExprResolve;
 
16268
class WinIfExists;
 
16269
class WinImportHandler;
 
16270
class WinMacros;
 
16271
class WinAsm;
 
16272
class WinDeclSpecs;
 
16273
class WinMemberExplSpec;
 
16274
class WinTypeKeywords;
 
16275
class WinFriend;
 
16276
class ExtAC;
 
16277
class ExtACBuilderCoupling;
 
16278
class ExtACSyntaxCoupling;
 
16279
class ExtACTree;
 
16280
class ExtACKeywords;
 
16281
class ExtGnu;
 
16282
class PragmaOnceUnitState;
 
16283
class PragmaOnce;
 
16284
class CMatchSyntax;
 
16285
namespace Puma {
 
16286
 
 
16287
#line 536 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16288
class CT_DeclList : public CT_List {
 
16289
#line 16290 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16290
  friend class ::CCExprResolve;
 
16291
  friend class ::CExprResolve;
 
16292
  friend class ::WinIfExists;
 
16293
  friend class ::WinImportHandler;
 
16294
  friend class ::WinMacros;
 
16295
  friend class ::WinAsm;
 
16296
  friend class ::WinDeclSpecs;
 
16297
  friend class ::WinMemberExplSpec;
 
16298
  friend class ::WinTypeKeywords;
 
16299
  friend class ::WinFriend;
 
16300
  friend class ::ExtAC;
 
16301
  friend class ::ExtACBuilderCoupling;
 
16302
  friend class ::ExtACSyntaxCoupling;
 
16303
  friend class ::ExtACTree;
 
16304
  friend class ::ExtACKeywords;
 
16305
  friend class ::ExtGnu;
 
16306
  friend class ::PragmaOnceUnitState;
 
16307
  friend class ::PragmaOnce;
 
16308
  friend class ::CMatchSyntax;
 
16309
 
 
16310
#line 536 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16311
 
 
16312
public:
 
16313
  /** Constructor. 
 
16314
   *  \param size The initial size of the list.
 
16315
   *  \param incr The initial increment count of the list. */
 
16316
  CT_DeclList (int size = 20, int incr = 20) : CT_List (size, incr) {}
 
16317
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16318
  static const char *NodeId ();
 
16319
  /** Get the name of the node. Can be compared with NodeId(). */
 
16320
  const char *NodeName () const { return NodeId (); }
 
16321
  /** Set the linkage specifiers to each declaration in the list.
 
16322
   *  \param l The linkage specifiers node. */
 
16323
  void Linkage (CT_LinkageSpec *l);
 
16324
public:
 
16325
  typedef AC::TLE __AttrTypes;
 
16326
  const char *__attr_name (unsigned i) const { return 0; }
 
16327
  const void *__attr (unsigned __i) const { return 0; }
 
16328
#line 549 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16329
};
 
16330
 
 
16331
/** \class CT_DeclSpecSeq CTree.h Puma/CTree.h
 
16332
 *  Tree node representing a sequence of declaration specifiers. */
 
16333
 
 
16334
#line 16335 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16335
} // closed Puma
 
16336
class CCExprResolve;
 
16337
class CExprResolve;
 
16338
class WinIfExists;
 
16339
class WinImportHandler;
 
16340
class WinMacros;
 
16341
class WinAsm;
 
16342
class WinDeclSpecs;
 
16343
class WinMemberExplSpec;
 
16344
class WinTypeKeywords;
 
16345
class WinFriend;
 
16346
class ExtAC;
 
16347
class ExtACBuilderCoupling;
 
16348
class ExtACSyntaxCoupling;
 
16349
class ExtACTree;
 
16350
class ExtACKeywords;
 
16351
class ExtGnu;
 
16352
class PragmaOnceUnitState;
 
16353
class PragmaOnce;
 
16354
class CMatchSyntax;
 
16355
namespace Puma {
 
16356
 
 
16357
#line 553 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16358
class CT_DeclSpecSeq : public CT_List {
 
16359
#line 16360 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16360
  friend class ::CCExprResolve;
 
16361
  friend class ::CExprResolve;
 
16362
  friend class ::WinIfExists;
 
16363
  friend class ::WinImportHandler;
 
16364
  friend class ::WinMacros;
 
16365
  friend class ::WinAsm;
 
16366
  friend class ::WinDeclSpecs;
 
16367
  friend class ::WinMemberExplSpec;
 
16368
  friend class ::WinTypeKeywords;
 
16369
  friend class ::WinFriend;
 
16370
  friend class ::ExtAC;
 
16371
  friend class ::ExtACBuilderCoupling;
 
16372
  friend class ::ExtACSyntaxCoupling;
 
16373
  friend class ::ExtACTree;
 
16374
  friend class ::ExtACKeywords;
 
16375
  friend class ::ExtGnu;
 
16376
  friend class ::PragmaOnceUnitState;
 
16377
  friend class ::PragmaOnce;
 
16378
  friend class ::CMatchSyntax;
 
16379
 
 
16380
#line 553 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16381
 
 
16382
public:
 
16383
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16384
  static const char *NodeId ();
 
16385
  /** Get the name of the node. Can be compared with NodeId(). */
 
16386
  const char *NodeName () const { return NodeId (); }
 
16387
public:
 
16388
  typedef AC::TLE __AttrTypes;
 
16389
  const char *__attr_name (unsigned i) const { return 0; }
 
16390
  const void *__attr (unsigned __i) const { return 0; }
 
16391
#line 559 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16392
};
 
16393
 
 
16394
/** \class CT_CmpdStmt CTree.h Puma/CTree.h
 
16395
 *  Tree node representing a compound statement. */
 
16396
 
 
16397
#line 16398 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16398
} // closed Puma
 
16399
class CCExprResolve;
 
16400
class CExprResolve;
 
16401
class WinIfExists;
 
16402
class WinImportHandler;
 
16403
class WinMacros;
 
16404
class WinAsm;
 
16405
class WinDeclSpecs;
 
16406
class WinMemberExplSpec;
 
16407
class WinTypeKeywords;
 
16408
class WinFriend;
 
16409
class ExtAC;
 
16410
class ExtACBuilderCoupling;
 
16411
class ExtACSyntaxCoupling;
 
16412
class ExtACTree;
 
16413
class ExtACKeywords;
 
16414
class ExtGnu;
 
16415
class PragmaOnceUnitState;
 
16416
class PragmaOnce;
 
16417
class CMatchSyntax;
 
16418
namespace Puma {
 
16419
 
 
16420
#line 563 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16421
class CT_CmpdStmt : public CT_List, public CSemScope {
 
16422
#line 16423 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16423
  friend class ::CCExprResolve;
 
16424
  friend class ::CExprResolve;
 
16425
  friend class ::WinIfExists;
 
16426
  friend class ::WinImportHandler;
 
16427
  friend class ::WinMacros;
 
16428
  friend class ::WinAsm;
 
16429
  friend class ::WinDeclSpecs;
 
16430
  friend class ::WinMemberExplSpec;
 
16431
  friend class ::WinTypeKeywords;
 
16432
  friend class ::WinFriend;
 
16433
  friend class ::ExtAC;
 
16434
  friend class ::ExtACBuilderCoupling;
 
16435
  friend class ::ExtACSyntaxCoupling;
 
16436
  friend class ::ExtACTree;
 
16437
  friend class ::ExtACKeywords;
 
16438
  friend class ::ExtGnu;
 
16439
  friend class ::PragmaOnceUnitState;
 
16440
  friend class ::PragmaOnce;
 
16441
  friend class ::CMatchSyntax;
 
16442
 
 
16443
#line 563 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16444
 
 
16445
public:
 
16446
  /* Constructor. */
 
16447
  CT_CmpdStmt () { AddProperties (OPEN_CLOSE); }
 
16448
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16449
  static const char *NodeId ();
 
16450
  /** Get the name of the node. Can be compared with NodeId(). */
 
16451
  const char *NodeName () const { return NodeId (); }
 
16452
  /** Get the scope opened by the compound statement. */
 
16453
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
16454
public:
 
16455
  typedef AC::TLE __AttrTypes;
 
16456
  const char *__attr_name (unsigned i) const { return 0; }
 
16457
  const void *__attr (unsigned __i) const { return 0; }
 
16458
#line 573 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16459
};
 
16460
 
 
16461
/** \class CT_HandlerSeq CTree.h Puma/CTree.h
 
16462
 *  Tree node representing an exception handler sequence. */
 
16463
 
 
16464
#line 16465 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16465
} // closed Puma
 
16466
class CCExprResolve;
 
16467
class CExprResolve;
 
16468
class WinIfExists;
 
16469
class WinImportHandler;
 
16470
class WinMacros;
 
16471
class WinAsm;
 
16472
class WinDeclSpecs;
 
16473
class WinMemberExplSpec;
 
16474
class WinTypeKeywords;
 
16475
class WinFriend;
 
16476
class ExtAC;
 
16477
class ExtACBuilderCoupling;
 
16478
class ExtACSyntaxCoupling;
 
16479
class ExtACTree;
 
16480
class ExtACKeywords;
 
16481
class ExtGnu;
 
16482
class PragmaOnceUnitState;
 
16483
class PragmaOnce;
 
16484
class CMatchSyntax;
 
16485
namespace Puma {
 
16486
 
 
16487
#line 577 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16488
class CT_HandlerSeq : public CT_List {
 
16489
#line 16490 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16490
  friend class ::CCExprResolve;
 
16491
  friend class ::CExprResolve;
 
16492
  friend class ::WinIfExists;
 
16493
  friend class ::WinImportHandler;
 
16494
  friend class ::WinMacros;
 
16495
  friend class ::WinAsm;
 
16496
  friend class ::WinDeclSpecs;
 
16497
  friend class ::WinMemberExplSpec;
 
16498
  friend class ::WinTypeKeywords;
 
16499
  friend class ::WinFriend;
 
16500
  friend class ::ExtAC;
 
16501
  friend class ::ExtACBuilderCoupling;
 
16502
  friend class ::ExtACSyntaxCoupling;
 
16503
  friend class ::ExtACTree;
 
16504
  friend class ::ExtACKeywords;
 
16505
  friend class ::ExtGnu;
 
16506
  friend class ::PragmaOnceUnitState;
 
16507
  friend class ::PragmaOnce;
 
16508
  friend class ::CMatchSyntax;
 
16509
 
 
16510
#line 577 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16511
 
 
16512
public:
 
16513
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16514
  static const char *NodeId ();
 
16515
  /** Get the name of the node. Can be compared with NodeId(). */
 
16516
  const char *NodeName () const { return NodeId (); }
 
16517
public:
 
16518
  typedef AC::TLE __AttrTypes;
 
16519
  const char *__attr_name (unsigned i) const { return 0; }
 
16520
  const void *__attr (unsigned __i) const { return 0; }
 
16521
#line 583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16522
};
 
16523
 
 
16524
/** \class CT_TemplateParamList CTree.h Puma/CTree.h
 
16525
 *  Tree node representing a template parameter list. */
 
16526
 
 
16527
#line 16528 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16528
} // closed Puma
 
16529
class CCExprResolve;
 
16530
class CExprResolve;
 
16531
class WinIfExists;
 
16532
class WinImportHandler;
 
16533
class WinMacros;
 
16534
class WinAsm;
 
16535
class WinDeclSpecs;
 
16536
class WinMemberExplSpec;
 
16537
class WinTypeKeywords;
 
16538
class WinFriend;
 
16539
class ExtAC;
 
16540
class ExtACBuilderCoupling;
 
16541
class ExtACSyntaxCoupling;
 
16542
class ExtACTree;
 
16543
class ExtACKeywords;
 
16544
class ExtGnu;
 
16545
class PragmaOnceUnitState;
 
16546
class PragmaOnce;
 
16547
class CMatchSyntax;
 
16548
namespace Puma {
 
16549
 
 
16550
#line 587 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16551
class CT_TemplateParamList : public CT_List, public CSemScope {
 
16552
#line 16553 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16553
  friend class ::CCExprResolve;
 
16554
  friend class ::CExprResolve;
 
16555
  friend class ::WinIfExists;
 
16556
  friend class ::WinImportHandler;
 
16557
  friend class ::WinMacros;
 
16558
  friend class ::WinAsm;
 
16559
  friend class ::WinDeclSpecs;
 
16560
  friend class ::WinMemberExplSpec;
 
16561
  friend class ::WinTypeKeywords;
 
16562
  friend class ::WinFriend;
 
16563
  friend class ::ExtAC;
 
16564
  friend class ::ExtACBuilderCoupling;
 
16565
  friend class ::ExtACSyntaxCoupling;
 
16566
  friend class ::ExtACTree;
 
16567
  friend class ::ExtACKeywords;
 
16568
  friend class ::ExtGnu;
 
16569
  friend class ::PragmaOnceUnitState;
 
16570
  friend class ::PragmaOnce;
 
16571
  friend class ::CMatchSyntax;
 
16572
 
 
16573
#line 587 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16574
 
 
16575
public:
 
16576
  CT_TemplateParamList () { AddProperties (INTRO | SEPARATORS | OPEN_CLOSE); }
 
16577
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16578
  static const char *NodeId ();
 
16579
  /** Get the name of the node. Can be compared with NodeId(). */
 
16580
  const char *NodeName () const { return NodeId (); }
 
16581
  /** Get the scope opened by the template parameter list. */
 
16582
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
16583
public:
 
16584
  typedef AC::TLE __AttrTypes;
 
16585
  const char *__attr_name (unsigned i) const { return 0; }
 
16586
  const void *__attr (unsigned __i) const { return 0; }
 
16587
#line 596 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16588
};
 
16589
 
 
16590
/** \class CT_TemplateArgList CTree.h Puma/CTree.h
 
16591
 *  Tree node representing a template argument list. */
 
16592
 
 
16593
#line 16594 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16594
} // closed Puma
 
16595
class CCExprResolve;
 
16596
class CExprResolve;
 
16597
class WinIfExists;
 
16598
class WinImportHandler;
 
16599
class WinMacros;
 
16600
class WinAsm;
 
16601
class WinDeclSpecs;
 
16602
class WinMemberExplSpec;
 
16603
class WinTypeKeywords;
 
16604
class WinFriend;
 
16605
class ExtAC;
 
16606
class ExtACBuilderCoupling;
 
16607
class ExtACSyntaxCoupling;
 
16608
class ExtACTree;
 
16609
class ExtACKeywords;
 
16610
class ExtGnu;
 
16611
class PragmaOnceUnitState;
 
16612
class PragmaOnce;
 
16613
class CMatchSyntax;
 
16614
namespace Puma {
 
16615
 
 
16616
#line 600 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16617
class CT_TemplateArgList : public CT_List {
 
16618
#line 16619 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16619
  friend class ::CCExprResolve;
 
16620
  friend class ::CExprResolve;
 
16621
  friend class ::WinIfExists;
 
16622
  friend class ::WinImportHandler;
 
16623
  friend class ::WinMacros;
 
16624
  friend class ::WinAsm;
 
16625
  friend class ::WinDeclSpecs;
 
16626
  friend class ::WinMemberExplSpec;
 
16627
  friend class ::WinTypeKeywords;
 
16628
  friend class ::WinFriend;
 
16629
  friend class ::ExtAC;
 
16630
  friend class ::ExtACBuilderCoupling;
 
16631
  friend class ::ExtACSyntaxCoupling;
 
16632
  friend class ::ExtACTree;
 
16633
  friend class ::ExtACKeywords;
 
16634
  friend class ::ExtGnu;
 
16635
  friend class ::PragmaOnceUnitState;
 
16636
  friend class ::PragmaOnce;
 
16637
  friend class ::CMatchSyntax;
 
16638
 
 
16639
#line 600 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16640
 
 
16641
public:
 
16642
  /** Constructor. */
 
16643
  CT_TemplateArgList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
16644
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16645
  static const char *NodeId ();
 
16646
  /** Get the name of the node. Can be compared with NodeId(). */
 
16647
  const char *NodeName () const { return NodeId (); }
 
16648
public:
 
16649
  typedef AC::TLE __AttrTypes;
 
16650
  const char *__attr_name (unsigned i) const { return 0; }
 
16651
  const void *__attr (unsigned __i) const { return 0; }
 
16652
#line 608 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16653
};
 
16654
 
 
16655
/*****************************************************************************/
 
16656
/*                                                                           */
 
16657
/*                              Expressions                                  */
 
16658
/*                                                                           */
 
16659
/*****************************************************************************/
 
16660
 
 
16661
/** \class CT_Expression CTree.h Puma/CTree.h
 
16662
 *  Base class for all expression tree nodes. */
 
16663
 
 
16664
#line 16665 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16665
} // closed Puma
 
16666
class CCExprResolve;
 
16667
class CExprResolve;
 
16668
class WinIfExists;
 
16669
class WinImportHandler;
 
16670
class WinMacros;
 
16671
class WinAsm;
 
16672
class WinDeclSpecs;
 
16673
class WinMemberExplSpec;
 
16674
class WinTypeKeywords;
 
16675
class WinFriend;
 
16676
class ExtAC;
 
16677
class ExtACBuilderCoupling;
 
16678
class ExtACSyntaxCoupling;
 
16679
class ExtACTree;
 
16680
class ExtACKeywords;
 
16681
class ExtGnu;
 
16682
class PragmaOnceUnitState;
 
16683
class PragmaOnce;
 
16684
class CMatchSyntax;
 
16685
namespace Puma {
 
16686
 
 
16687
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16688
 
 
16689
#line 16690 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16690
} // closed Puma
 
16691
 
 
16692
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16693
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16694
#include "CCExprResolveH.ah"
 
16695
#endif
 
16696
namespace Puma {
 
16697
 
 
16698
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16699
 
 
16700
#line 16701 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16701
} // closed Puma
 
16702
 
 
16703
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16704
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16705
#include "CExprResolveH.ah"
 
16706
#endif
 
16707
namespace Puma {
 
16708
 
 
16709
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16710
class CT_Expression : public CTree, public CSemValue {
 
16711
#line 16712 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16712
  friend class ::CCExprResolve;
 
16713
  friend class ::CExprResolve;
 
16714
  friend class ::WinIfExists;
 
16715
  friend class ::WinImportHandler;
 
16716
  friend class ::WinMacros;
 
16717
  friend class ::WinAsm;
 
16718
  friend class ::WinDeclSpecs;
 
16719
  friend class ::WinMemberExplSpec;
 
16720
  friend class ::WinTypeKeywords;
 
16721
  friend class ::WinFriend;
 
16722
  friend class ::ExtAC;
 
16723
  friend class ::ExtACBuilderCoupling;
 
16724
  friend class ::ExtACSyntaxCoupling;
 
16725
  friend class ::ExtACTree;
 
16726
  friend class ::ExtACKeywords;
 
16727
  friend class ::ExtGnu;
 
16728
  friend class ::PragmaOnceUnitState;
 
16729
  friend class ::PragmaOnce;
 
16730
  friend class ::CMatchSyntax;
 
16731
 
 
16732
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16733
 
 
16734
protected:
 
16735
  /** Constructor. */
 
16736
  CT_Expression () {}
 
16737
 
 
16738
public:
 
16739
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16740
  static const char *NodeId ();
 
16741
  /** Get the name of the node. Can be compared with NodeId(). */
 
16742
  const char *NodeName () const { return NodeId (); }
 
16743
  /** Get the type of the expression.
 
16744
   *  \return The type information object or NULL. */
 
16745
  CTypeInfo *Type () const { return type; }
 
16746
  /** Get the value of the expression.
 
16747
   *  \return The value object or NULL. */
 
16748
  CExprValue *Value () const { return value; }
 
16749
  /** Get the semantic value information of the expression.
 
16750
   *  \return The value object or NULL. */
 
16751
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
16752
  /** Get this. */
 
16753
  virtual CT_Expression *IsExpression () { return this; }
 
16754
   private:
 
16755
  typedef CT_Expression CCExprResolveExpr;
 
16756
 
 
16757
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16758
 public :
 
16759
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16760
  typedef CT_Expression CExprResolveExpr;
 
16761
 
 
16762
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16763
 public :
 
16764
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16765
  typedef AC::TLE __AttrTypes;
 
16766
  const char *__attr_name (unsigned i) const { return 0; }
 
16767
  const void *__attr (unsigned __i) const { return 0; }
 
16768
#line 639 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16769
};
 
16770
 
 
16771
/** \class CT_Call CTree.h Puma/CTree.h
 
16772
 *  Tree node representing explicit or implicit function calls 
 
16773
 *  including built-in or user-defined functions and overloaded
 
16774
 *  operators. */
 
16775
 
 
16776
#line 16777 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16777
} // closed Puma
 
16778
class CCExprResolve;
 
16779
class CExprResolve;
 
16780
class WinIfExists;
 
16781
class WinImportHandler;
 
16782
class WinMacros;
 
16783
class WinAsm;
 
16784
class WinDeclSpecs;
 
16785
class WinMemberExplSpec;
 
16786
class WinTypeKeywords;
 
16787
class WinFriend;
 
16788
class ExtAC;
 
16789
class ExtACBuilderCoupling;
 
16790
class ExtACSyntaxCoupling;
 
16791
class ExtACTree;
 
16792
class ExtACKeywords;
 
16793
class ExtGnu;
 
16794
class PragmaOnceUnitState;
 
16795
class PragmaOnce;
 
16796
class CMatchSyntax;
 
16797
namespace Puma {
 
16798
 
 
16799
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16800
 
 
16801
#line 16802 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16802
} // closed Puma
 
16803
 
 
16804
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16805
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16806
#include "CCExprResolveH.ah"
 
16807
#endif
 
16808
namespace Puma {
 
16809
 
 
16810
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16811
 
 
16812
#line 16813 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16813
} // closed Puma
 
16814
 
 
16815
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16816
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16817
#include "CExprResolveH.ah"
 
16818
#endif
 
16819
namespace Puma {
 
16820
 
 
16821
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16822
class CT_Call : public CT_Expression, public CSemObject {
 
16823
#line 16824 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16824
  friend class ::CCExprResolve;
 
16825
  friend class ::CExprResolve;
 
16826
  friend class ::WinIfExists;
 
16827
  friend class ::WinImportHandler;
 
16828
  friend class ::WinMacros;
 
16829
  friend class ::WinAsm;
 
16830
  friend class ::WinDeclSpecs;
 
16831
  friend class ::WinMemberExplSpec;
 
16832
  friend class ::WinTypeKeywords;
 
16833
  friend class ::WinFriend;
 
16834
  friend class ::ExtAC;
 
16835
  friend class ::ExtACBuilderCoupling;
 
16836
  friend class ::ExtACSyntaxCoupling;
 
16837
  friend class ::ExtACTree;
 
16838
  friend class ::ExtACKeywords;
 
16839
  friend class ::ExtGnu;
 
16840
  friend class ::PragmaOnceUnitState;
 
16841
  friend class ::PragmaOnce;
 
16842
  friend class ::CMatchSyntax;
 
16843
 
 
16844
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16845
 
 
16846
protected:
 
16847
  /** Constructor. */
 
16848
  CT_Call () {}
 
16849
  
 
16850
public:
 
16851
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16852
  static const char *NodeId ();
 
16853
  /** Get the name of the node. Can be compared with NodeId(). */
 
16854
  const char *NodeName () const { return NodeId (); }
 
16855
  /** Get the semantic information of the call. */
 
16856
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
16857
  /** Get this. */
 
16858
  CT_Call *IsCall () { return this; }
 
16859
   private:
 
16860
  typedef CT_Call CCExprResolveExpr;
 
16861
 
 
16862
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16863
 public :
 
16864
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16865
  typedef CT_Call CExprResolveExpr;
 
16866
 
 
16867
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16868
 public :
 
16869
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16870
  typedef AC::TLE __AttrTypes;
 
16871
  const char *__attr_name (unsigned i) const { return 0; }
 
16872
  const void *__attr (unsigned __i) const { return 0; }
 
16873
#line 659 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16874
};
 
16875
 
 
16876
/** \class CT_ImplicitCall CTree.h Puma/CTree.h
 
16877
 *  Tree node representing implicit function calls detected by
 
16878
 *  the semantic analysis. 
 
16879
 *  Example:
 
16880
 *  \code
 
16881
 * class Number {
 
16882
 *   int _n;
 
16883
 * public:
 
16884
 *   Number(int n) : _n(n) {}
 
16885
 *   int operator+(const Number& n) { return n._n + _n; }
 
16886
 * };
 
16887
 *     
 
16888
 * Number one(1), two(2);
 
16889
 * one + two;  // implicitely calls one.operator+(two)
 
16890
 *  \endcode */
 
16891
 
 
16892
#line 16893 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16893
} // closed Puma
 
16894
class CCExprResolve;
 
16895
class CExprResolve;
 
16896
class WinIfExists;
 
16897
class WinImportHandler;
 
16898
class WinMacros;
 
16899
class WinAsm;
 
16900
class WinDeclSpecs;
 
16901
class WinMemberExplSpec;
 
16902
class WinTypeKeywords;
 
16903
class WinFriend;
 
16904
class ExtAC;
 
16905
class ExtACBuilderCoupling;
 
16906
class ExtACSyntaxCoupling;
 
16907
class ExtACTree;
 
16908
class ExtACKeywords;
 
16909
class ExtGnu;
 
16910
class PragmaOnceUnitState;
 
16911
class PragmaOnce;
 
16912
class CMatchSyntax;
 
16913
namespace Puma {
 
16914
 
 
16915
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16916
 
 
16917
#line 16918 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16918
} // closed Puma
 
16919
 
 
16920
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16921
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
16922
#include "CCExprResolveH.ah"
 
16923
#endif
 
16924
namespace Puma {
 
16925
 
 
16926
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16927
 
 
16928
#line 16929 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16929
} // closed Puma
 
16930
 
 
16931
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16932
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
16933
#include "CExprResolveH.ah"
 
16934
#endif
 
16935
namespace Puma {
 
16936
 
 
16937
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16938
class CT_ImplicitCall : public CT_Call {
 
16939
#line 16940 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
16940
  friend class ::CCExprResolve;
 
16941
  friend class ::CExprResolve;
 
16942
  friend class ::WinIfExists;
 
16943
  friend class ::WinImportHandler;
 
16944
  friend class ::WinMacros;
 
16945
  friend class ::WinAsm;
 
16946
  friend class ::WinDeclSpecs;
 
16947
  friend class ::WinMemberExplSpec;
 
16948
  friend class ::WinTypeKeywords;
 
16949
  friend class ::WinFriend;
 
16950
  friend class ::ExtAC;
 
16951
  friend class ::ExtACBuilderCoupling;
 
16952
  friend class ::ExtACSyntaxCoupling;
 
16953
  friend class ::ExtACTree;
 
16954
  friend class ::ExtACKeywords;
 
16955
  friend class ::ExtGnu;
 
16956
  friend class ::PragmaOnceUnitState;
 
16957
  friend class ::PragmaOnce;
 
16958
  friend class ::CMatchSyntax;
 
16959
 
 
16960
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
16961
 
 
16962
  CTree *_arg;
 
16963
 
 
16964
public:
 
16965
  /** Constructor.
 
16966
   *  \param arg The call argument. */
 
16967
  CT_ImplicitCall (CTree *arg) { AddSon (_arg, arg); }
 
16968
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
16969
  static const char *NodeId ();
 
16970
  /** Get the name of the node. Can be compared with NodeId(). */
 
16971
  const char *NodeName () const { return NodeId (); }
 
16972
  /** Get the number of sons. */
 
16973
  int Sons () const { return 1; }
 
16974
  /** Get the n-th son.
 
16975
   *  \param n The index of the son.
 
16976
   *  \return The n-th son or NULL. */
 
16977
  CTree *Son (int n) const { return (n == 0) ? _arg : (CTree*)0; }
 
16978
  /** Replace a son.
 
16979
   *  \param old_son The son to replace.
 
16980
   *  \param new_son The new son. */
 
16981
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
16982
   { CTree::ReplaceSon (_arg, old_son, new_son); }
 
16983
   private:
 
16984
  typedef CT_ImplicitCall CCExprResolveExpr;
 
16985
 
 
16986
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
16987
 public :
 
16988
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
16989
  typedef CT_ImplicitCall CExprResolveExpr;
 
16990
 
 
16991
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
16992
 public :
 
16993
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
16994
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
16995
  const char *__attr_name (unsigned i) const {
 
16996
    static const char *names[] = { "_arg" }; return names[i];
 
16997
  }
 
16998
  const void *__attr (unsigned __i) const {
 
16999
    switch (__i) { case 0: return &_arg; default: return 0; }
 
17000
  }
 
17001
#line 698 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17002
};
 
17003
 
 
17004
/** \class CT_String CTree.h Puma/CTree.h
 
17005
 *  Tree node representing a string literal. 
 
17006
 *  Example: \code "abc" \endcode */
 
17007
 
 
17008
#line 17009 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17009
} // closed Puma
 
17010
class CCExprResolve;
 
17011
class CExprResolve;
 
17012
class WinIfExists;
 
17013
class WinImportHandler;
 
17014
class WinMacros;
 
17015
class WinAsm;
 
17016
class WinDeclSpecs;
 
17017
class WinMemberExplSpec;
 
17018
class WinTypeKeywords;
 
17019
class WinFriend;
 
17020
class ExtAC;
 
17021
class ExtACBuilderCoupling;
 
17022
class ExtACSyntaxCoupling;
 
17023
class ExtACTree;
 
17024
class ExtACKeywords;
 
17025
class ExtGnu;
 
17026
class PragmaOnceUnitState;
 
17027
class PragmaOnce;
 
17028
class CMatchSyntax;
 
17029
namespace Puma {
 
17030
 
 
17031
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17032
 
 
17033
#line 17034 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17034
} // closed Puma
 
17035
 
 
17036
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17037
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17038
#include "CCExprResolveH.ah"
 
17039
#endif
 
17040
namespace Puma {
 
17041
 
 
17042
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17043
 
 
17044
#line 17045 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17045
} // closed Puma
 
17046
 
 
17047
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17048
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17049
#include "CExprResolveH.ah"
 
17050
#endif
 
17051
namespace Puma {
 
17052
 
 
17053
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17054
class CT_String : public CT_List, public CSemValue {
 
17055
#line 17056 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17056
  friend class ::CCExprResolve;
 
17057
  friend class ::CExprResolve;
 
17058
  friend class ::WinIfExists;
 
17059
  friend class ::WinImportHandler;
 
17060
  friend class ::WinMacros;
 
17061
  friend class ::WinAsm;
 
17062
  friend class ::WinDeclSpecs;
 
17063
  friend class ::WinMemberExplSpec;
 
17064
  friend class ::WinTypeKeywords;
 
17065
  friend class ::WinFriend;
 
17066
  friend class ::ExtAC;
 
17067
  friend class ::ExtACBuilderCoupling;
 
17068
  friend class ::ExtACSyntaxCoupling;
 
17069
  friend class ::ExtACTree;
 
17070
  friend class ::ExtACKeywords;
 
17071
  friend class ::ExtGnu;
 
17072
  friend class ::PragmaOnceUnitState;
 
17073
  friend class ::PragmaOnce;
 
17074
  friend class ::CMatchSyntax;
 
17075
 
 
17076
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17077
 
 
17078
public:
 
17079
  /** Constructor. 
 
17080
   *  \param size The number of sub-strings. */
 
17081
  CT_String (int size) : CT_List (size, 1) {}
 
17082
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17083
  static const char *NodeId ();
 
17084
  /** Get the name of the node. Can be compared with NodeId(). */
 
17085
  const char *NodeName () const { return NodeId (); }
 
17086
 
 
17087
  /** Get the type of the string. 
 
17088
   *  \return The type or NULL. */
 
17089
  CTypeInfo *Type () const { return type; }
 
17090
  /** Get the string value.
 
17091
   *  \return The value or NULL. */
 
17092
  CExprValue *Value () const { return value; }
 
17093
  /** Get the semantic value info object.
 
17094
   *  \return The semantic value object or NULL. */
 
17095
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
17096
  /** Get this. */
 
17097
  virtual CT_String *IsString () { return this; }
 
17098
   private:
 
17099
  typedef CT_String CCExprResolveExpr;
 
17100
 
 
17101
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17102
 public :
 
17103
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17104
  typedef CT_String CExprResolveExpr;
 
17105
 
 
17106
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17107
 public :
 
17108
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17109
  typedef AC::TLE __AttrTypes;
 
17110
  const char *__attr_name (unsigned i) const { return 0; }
 
17111
  const void *__attr (unsigned __i) const { return 0; }
 
17112
#line 724 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17113
};
 
17114
 
 
17115
/** \class CT_WideString CTree.h Puma/CTree.h
 
17116
 *  Tree node representing a wide string literal. 
 
17117
 *  Example: \code L"abc" \endcode */
 
17118
 
 
17119
#line 17120 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17120
} // closed Puma
 
17121
class CCExprResolve;
 
17122
class CExprResolve;
 
17123
class WinIfExists;
 
17124
class WinImportHandler;
 
17125
class WinMacros;
 
17126
class WinAsm;
 
17127
class WinDeclSpecs;
 
17128
class WinMemberExplSpec;
 
17129
class WinTypeKeywords;
 
17130
class WinFriend;
 
17131
class ExtAC;
 
17132
class ExtACBuilderCoupling;
 
17133
class ExtACSyntaxCoupling;
 
17134
class ExtACTree;
 
17135
class ExtACKeywords;
 
17136
class ExtGnu;
 
17137
class PragmaOnceUnitState;
 
17138
class PragmaOnce;
 
17139
class CMatchSyntax;
 
17140
namespace Puma {
 
17141
 
 
17142
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17143
 
 
17144
#line 17145 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17145
} // closed Puma
 
17146
 
 
17147
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17148
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17149
#include "CCExprResolveH.ah"
 
17150
#endif
 
17151
namespace Puma {
 
17152
 
 
17153
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17154
 
 
17155
#line 17156 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17156
} // closed Puma
 
17157
 
 
17158
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17159
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17160
#include "CExprResolveH.ah"
 
17161
#endif
 
17162
namespace Puma {
 
17163
 
 
17164
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17165
class CT_WideString : public CT_String {
 
17166
#line 17167 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17167
  friend class ::CCExprResolve;
 
17168
  friend class ::CExprResolve;
 
17169
  friend class ::WinIfExists;
 
17170
  friend class ::WinImportHandler;
 
17171
  friend class ::WinMacros;
 
17172
  friend class ::WinAsm;
 
17173
  friend class ::WinDeclSpecs;
 
17174
  friend class ::WinMemberExplSpec;
 
17175
  friend class ::WinTypeKeywords;
 
17176
  friend class ::WinFriend;
 
17177
  friend class ::ExtAC;
 
17178
  friend class ::ExtACBuilderCoupling;
 
17179
  friend class ::ExtACSyntaxCoupling;
 
17180
  friend class ::ExtACTree;
 
17181
  friend class ::ExtACKeywords;
 
17182
  friend class ::ExtGnu;
 
17183
  friend class ::PragmaOnceUnitState;
 
17184
  friend class ::PragmaOnce;
 
17185
  friend class ::CMatchSyntax;
 
17186
 
 
17187
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17188
 
 
17189
public:
 
17190
  /** Constructor.
 
17191
   *  \param size The number of sub-strings. */
 
17192
  CT_WideString (int size) : CT_String (size) {}
 
17193
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17194
  static const char *NodeId ();
 
17195
  /** Get the name of the node. Can be compared with NodeId(). */
 
17196
  const char *NodeName () const { return NodeId (); }
 
17197
   private:
 
17198
  typedef CT_WideString CCExprResolveExpr;
 
17199
 
 
17200
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17201
 public :
 
17202
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17203
  typedef CT_WideString CExprResolveExpr;
 
17204
 
 
17205
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17206
 public :
 
17207
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17208
  typedef AC::TLE __AttrTypes;
 
17209
  const char *__attr_name (unsigned i) const { return 0; }
 
17210
  const void *__attr (unsigned __i) const { return 0; }
 
17211
#line 738 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17212
};
 
17213
 
 
17214
/** \class CT_Integer CTree.h Puma/CTree.h
 
17215
 *  Tree node representing an integer constant. 
 
17216
 *  Example: \code 1234 \endcode */
 
17217
 
 
17218
#line 17219 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17219
} // closed Puma
 
17220
class CCExprResolve;
 
17221
class CExprResolve;
 
17222
class WinIfExists;
 
17223
class WinImportHandler;
 
17224
class WinMacros;
 
17225
class WinAsm;
 
17226
class WinDeclSpecs;
 
17227
class WinMemberExplSpec;
 
17228
class WinTypeKeywords;
 
17229
class WinFriend;
 
17230
class ExtAC;
 
17231
class ExtACBuilderCoupling;
 
17232
class ExtACSyntaxCoupling;
 
17233
class ExtACTree;
 
17234
class ExtACKeywords;
 
17235
class ExtGnu;
 
17236
class PragmaOnceUnitState;
 
17237
class PragmaOnce;
 
17238
class CMatchSyntax;
 
17239
namespace Puma {
 
17240
 
 
17241
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17242
 
 
17243
#line 17244 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17244
} // closed Puma
 
17245
 
 
17246
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17247
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17248
#include "CCExprResolveH.ah"
 
17249
#endif
 
17250
namespace Puma {
 
17251
 
 
17252
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17253
 
 
17254
#line 17255 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17255
} // closed Puma
 
17256
 
 
17257
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17258
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17259
#include "CExprResolveH.ah"
 
17260
#endif
 
17261
namespace Puma {
 
17262
 
 
17263
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17264
class CT_Integer : public CT_Expression {
 
17265
#line 17266 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17266
  friend class ::CCExprResolve;
 
17267
  friend class ::CExprResolve;
 
17268
  friend class ::WinIfExists;
 
17269
  friend class ::WinImportHandler;
 
17270
  friend class ::WinMacros;
 
17271
  friend class ::WinAsm;
 
17272
  friend class ::WinDeclSpecs;
 
17273
  friend class ::WinMemberExplSpec;
 
17274
  friend class ::WinTypeKeywords;
 
17275
  friend class ::WinFriend;
 
17276
  friend class ::ExtAC;
 
17277
  friend class ::ExtACBuilderCoupling;
 
17278
  friend class ::ExtACSyntaxCoupling;
 
17279
  friend class ::ExtACTree;
 
17280
  friend class ::ExtACKeywords;
 
17281
  friend class ::ExtGnu;
 
17282
  friend class ::PragmaOnceUnitState;
 
17283
  friend class ::PragmaOnce;
 
17284
  friend class ::CMatchSyntax;
 
17285
 
 
17286
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17287
 
 
17288
  CTree *_value;  // CT_Token
 
17289
 
 
17290
public:
 
17291
  /** Constructor.
 
17292
   *  \param token The token containing the integer value. */
 
17293
  CT_Integer (CTree *token) { AddSon (_value, token); }
 
17294
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17295
  static const char *NodeId ();
 
17296
  /** Get the name of the node. Can be compared with NodeId(). */
 
17297
  const char *NodeName () const { return NodeId (); }
 
17298
  /** Get the number of sons. */
 
17299
  int Sons () const { return _value ? 1 : 0; }
 
17300
  /** Get the n-th son.
 
17301
   *  \param n The index of the son.
 
17302
   *  \return The n-th son or NULL. */
 
17303
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
17304
  /** Replace a son.
 
17305
   *  \param old_son The son to replace.
 
17306
   *  \param new_son The new son. */
 
17307
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
17308
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
17309
   private:
 
17310
  typedef CT_Integer CCExprResolveExpr;
 
17311
 
 
17312
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17313
 public :
 
17314
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17315
  typedef CT_Integer CExprResolveExpr;
 
17316
 
 
17317
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17318
 public :
 
17319
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17320
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
17321
  const char *__attr_name (unsigned i) const {
 
17322
    static const char *names[] = { "_value" }; return names[i];
 
17323
  }
 
17324
  const void *__attr (unsigned __i) const {
 
17325
    switch (__i) { case 0: return &_value; default: return 0; }
 
17326
  }
 
17327
#line 765 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17328
};
 
17329
 
 
17330
/** \class CT_Character CTree.h Puma/CTree.h
 
17331
 *  Tree node representing a single character constant. 
 
17332
 *  Example: \code 'a' \endcode */
 
17333
 
 
17334
#line 17335 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17335
} // closed Puma
 
17336
class CCExprResolve;
 
17337
class CExprResolve;
 
17338
class WinIfExists;
 
17339
class WinImportHandler;
 
17340
class WinMacros;
 
17341
class WinAsm;
 
17342
class WinDeclSpecs;
 
17343
class WinMemberExplSpec;
 
17344
class WinTypeKeywords;
 
17345
class WinFriend;
 
17346
class ExtAC;
 
17347
class ExtACBuilderCoupling;
 
17348
class ExtACSyntaxCoupling;
 
17349
class ExtACTree;
 
17350
class ExtACKeywords;
 
17351
class ExtGnu;
 
17352
class PragmaOnceUnitState;
 
17353
class PragmaOnce;
 
17354
class CMatchSyntax;
 
17355
namespace Puma {
 
17356
 
 
17357
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17358
 
 
17359
#line 17360 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17360
} // closed Puma
 
17361
 
 
17362
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17363
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17364
#include "CCExprResolveH.ah"
 
17365
#endif
 
17366
namespace Puma {
 
17367
 
 
17368
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17369
 
 
17370
#line 17371 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17371
} // closed Puma
 
17372
 
 
17373
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17374
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17375
#include "CExprResolveH.ah"
 
17376
#endif
 
17377
namespace Puma {
 
17378
 
 
17379
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17380
class CT_Character : public CT_Expression {
 
17381
#line 17382 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17382
  friend class ::CCExprResolve;
 
17383
  friend class ::CExprResolve;
 
17384
  friend class ::WinIfExists;
 
17385
  friend class ::WinImportHandler;
 
17386
  friend class ::WinMacros;
 
17387
  friend class ::WinAsm;
 
17388
  friend class ::WinDeclSpecs;
 
17389
  friend class ::WinMemberExplSpec;
 
17390
  friend class ::WinTypeKeywords;
 
17391
  friend class ::WinFriend;
 
17392
  friend class ::ExtAC;
 
17393
  friend class ::ExtACBuilderCoupling;
 
17394
  friend class ::ExtACSyntaxCoupling;
 
17395
  friend class ::ExtACTree;
 
17396
  friend class ::ExtACKeywords;
 
17397
  friend class ::ExtGnu;
 
17398
  friend class ::PragmaOnceUnitState;
 
17399
  friend class ::PragmaOnce;
 
17400
  friend class ::CMatchSyntax;
 
17401
 
 
17402
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17403
 
 
17404
  CTree *_value;  // CT_Token
 
17405
 
 
17406
public:
 
17407
  /** Constructor.
 
17408
   *  \param token The token containing the character value. */
 
17409
  CT_Character (CTree *token) { AddSon (_value, token); }
 
17410
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17411
  static const char *NodeId ();
 
17412
  /** Get the name of the node. Can be compared with NodeId(). */
 
17413
  const char *NodeName () const { return NodeId (); }
 
17414
  /** Get the number of sons. */
 
17415
  int Sons () const { return 1; }
 
17416
  /** Get the n-th son.
 
17417
   *  \param n The index of the son.
 
17418
   *  \return The n-th son or NULL. */
 
17419
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
17420
  /** Replace a son.
 
17421
   *  \param old_son The son to replace.
 
17422
   *  \param new_son The new son. */
 
17423
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
17424
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
17425
   private:
 
17426
  typedef CT_Character CCExprResolveExpr;
 
17427
 
 
17428
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17429
 public :
 
17430
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17431
  typedef CT_Character CExprResolveExpr;
 
17432
 
 
17433
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17434
 public :
 
17435
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17436
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
17437
  const char *__attr_name (unsigned i) const {
 
17438
    static const char *names[] = { "_value" }; return names[i];
 
17439
  }
 
17440
  const void *__attr (unsigned __i) const {
 
17441
    switch (__i) { case 0: return &_value; default: return 0; }
 
17442
  }
 
17443
#line 792 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17444
};
 
17445
 
 
17446
/** \class CT_WideCharacter CTree.h Puma/CTree.h
 
17447
 *  Tree node representing a wide character constant. 
 
17448
 *  Example: \code L'a' \endcode */
 
17449
 
 
17450
#line 17451 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17451
} // closed Puma
 
17452
class CCExprResolve;
 
17453
class CExprResolve;
 
17454
class WinIfExists;
 
17455
class WinImportHandler;
 
17456
class WinMacros;
 
17457
class WinAsm;
 
17458
class WinDeclSpecs;
 
17459
class WinMemberExplSpec;
 
17460
class WinTypeKeywords;
 
17461
class WinFriend;
 
17462
class ExtAC;
 
17463
class ExtACBuilderCoupling;
 
17464
class ExtACSyntaxCoupling;
 
17465
class ExtACTree;
 
17466
class ExtACKeywords;
 
17467
class ExtGnu;
 
17468
class PragmaOnceUnitState;
 
17469
class PragmaOnce;
 
17470
class CMatchSyntax;
 
17471
namespace Puma {
 
17472
 
 
17473
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17474
 
 
17475
#line 17476 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17476
} // closed Puma
 
17477
 
 
17478
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17479
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17480
#include "CCExprResolveH.ah"
 
17481
#endif
 
17482
namespace Puma {
 
17483
 
 
17484
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17485
 
 
17486
#line 17487 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17487
} // closed Puma
 
17488
 
 
17489
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17490
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17491
#include "CExprResolveH.ah"
 
17492
#endif
 
17493
namespace Puma {
 
17494
 
 
17495
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17496
class CT_WideCharacter : public CT_Character {
 
17497
#line 17498 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17498
  friend class ::CCExprResolve;
 
17499
  friend class ::CExprResolve;
 
17500
  friend class ::WinIfExists;
 
17501
  friend class ::WinImportHandler;
 
17502
  friend class ::WinMacros;
 
17503
  friend class ::WinAsm;
 
17504
  friend class ::WinDeclSpecs;
 
17505
  friend class ::WinMemberExplSpec;
 
17506
  friend class ::WinTypeKeywords;
 
17507
  friend class ::WinFriend;
 
17508
  friend class ::ExtAC;
 
17509
  friend class ::ExtACBuilderCoupling;
 
17510
  friend class ::ExtACSyntaxCoupling;
 
17511
  friend class ::ExtACTree;
 
17512
  friend class ::ExtACKeywords;
 
17513
  friend class ::ExtGnu;
 
17514
  friend class ::PragmaOnceUnitState;
 
17515
  friend class ::PragmaOnce;
 
17516
  friend class ::CMatchSyntax;
 
17517
 
 
17518
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17519
 
 
17520
public:
 
17521
  /** Constructor.
 
17522
   *  \param token The token containing the wide character value. */
 
17523
  CT_WideCharacter (CTree *token) : CT_Character (token) {}
 
17524
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17525
  static const char *NodeId ();
 
17526
  /** Get the name of the node. Can be compared with NodeId(). */
 
17527
  const char *NodeName () const { return NodeId (); }
 
17528
   private:
 
17529
  typedef CT_WideCharacter CCExprResolveExpr;
 
17530
 
 
17531
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17532
 public :
 
17533
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17534
  typedef CT_WideCharacter CExprResolveExpr;
 
17535
 
 
17536
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17537
 public :
 
17538
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17539
  typedef AC::TLE __AttrTypes;
 
17540
  const char *__attr_name (unsigned i) const { return 0; }
 
17541
  const void *__attr (unsigned __i) const { return 0; }
 
17542
#line 806 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17543
};
 
17544
 
 
17545
/** \class CT_Float CTree.h Puma/CTree.h
 
17546
 *  Tree node representing a floating point constant. 
 
17547
 *  Example: \code 12.34 \endcode */
 
17548
 
 
17549
#line 17550 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17550
} // closed Puma
 
17551
class CCExprResolve;
 
17552
class CExprResolve;
 
17553
class WinIfExists;
 
17554
class WinImportHandler;
 
17555
class WinMacros;
 
17556
class WinAsm;
 
17557
class WinDeclSpecs;
 
17558
class WinMemberExplSpec;
 
17559
class WinTypeKeywords;
 
17560
class WinFriend;
 
17561
class ExtAC;
 
17562
class ExtACBuilderCoupling;
 
17563
class ExtACSyntaxCoupling;
 
17564
class ExtACTree;
 
17565
class ExtACKeywords;
 
17566
class ExtGnu;
 
17567
class PragmaOnceUnitState;
 
17568
class PragmaOnce;
 
17569
class CMatchSyntax;
 
17570
namespace Puma {
 
17571
 
 
17572
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17573
 
 
17574
#line 17575 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17575
} // closed Puma
 
17576
 
 
17577
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17578
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17579
#include "CCExprResolveH.ah"
 
17580
#endif
 
17581
namespace Puma {
 
17582
 
 
17583
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17584
 
 
17585
#line 17586 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17586
} // closed Puma
 
17587
 
 
17588
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17589
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17590
#include "CExprResolveH.ah"
 
17591
#endif
 
17592
namespace Puma {
 
17593
 
 
17594
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17595
class CT_Float : public CT_Expression {
 
17596
#line 17597 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17597
  friend class ::CCExprResolve;
 
17598
  friend class ::CExprResolve;
 
17599
  friend class ::WinIfExists;
 
17600
  friend class ::WinImportHandler;
 
17601
  friend class ::WinMacros;
 
17602
  friend class ::WinAsm;
 
17603
  friend class ::WinDeclSpecs;
 
17604
  friend class ::WinMemberExplSpec;
 
17605
  friend class ::WinTypeKeywords;
 
17606
  friend class ::WinFriend;
 
17607
  friend class ::ExtAC;
 
17608
  friend class ::ExtACBuilderCoupling;
 
17609
  friend class ::ExtACSyntaxCoupling;
 
17610
  friend class ::ExtACTree;
 
17611
  friend class ::ExtACKeywords;
 
17612
  friend class ::ExtGnu;
 
17613
  friend class ::PragmaOnceUnitState;
 
17614
  friend class ::PragmaOnce;
 
17615
  friend class ::CMatchSyntax;
 
17616
 
 
17617
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17618
 
 
17619
  CTree *_value;  // CT_Token
 
17620
 
 
17621
public:
 
17622
  /** Constructor.
 
17623
   *  \param token The token containing the floating point value. */
 
17624
  CT_Float (CTree *token) { AddSon (_value, token); }
 
17625
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17626
  static const char *NodeId ();
 
17627
  /** Get the name of the node. Can be compared with NodeId(). */
 
17628
  const char *NodeName () const { return NodeId (); }
 
17629
  /** Get the number of sons. */
 
17630
  int Sons () const { return 1; }
 
17631
  /** Get the n-th son.
 
17632
   *  \param n The index of the son.
 
17633
   *  \return The n-th son or NULL. */
 
17634
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
17635
  /** Replace a son.
 
17636
   *  \param old_son The son to replace.
 
17637
   *  \param new_son The new son. */
 
17638
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
17639
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
17640
   private:
 
17641
  typedef CT_Float CCExprResolveExpr;
 
17642
 
 
17643
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17644
 public :
 
17645
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17646
  typedef CT_Float CExprResolveExpr;
 
17647
 
 
17648
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17649
 public :
 
17650
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17651
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
17652
  const char *__attr_name (unsigned i) const {
 
17653
    static const char *names[] = { "_value" }; return names[i];
 
17654
  }
 
17655
  const void *__attr (unsigned __i) const {
 
17656
    switch (__i) { case 0: return &_value; default: return 0; }
 
17657
  }
 
17658
#line 833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17659
};
 
17660
 
 
17661
/** \class CT_Bool CTree.h Puma/CTree.h
 
17662
 *  Tree node representing a boolean literal. 
 
17663
 *  Examples: 
 
17664
 *  \code 
 
17665
 * true
 
17666
 * false
 
17667
 *  \endcode */
 
17668
 
 
17669
#line 17670 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17670
} // closed Puma
 
17671
class CCExprResolve;
 
17672
class CExprResolve;
 
17673
class WinIfExists;
 
17674
class WinImportHandler;
 
17675
class WinMacros;
 
17676
class WinAsm;
 
17677
class WinDeclSpecs;
 
17678
class WinMemberExplSpec;
 
17679
class WinTypeKeywords;
 
17680
class WinFriend;
 
17681
class ExtAC;
 
17682
class ExtACBuilderCoupling;
 
17683
class ExtACSyntaxCoupling;
 
17684
class ExtACTree;
 
17685
class ExtACKeywords;
 
17686
class ExtGnu;
 
17687
class PragmaOnceUnitState;
 
17688
class PragmaOnce;
 
17689
class CMatchSyntax;
 
17690
namespace Puma {
 
17691
 
 
17692
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17693
 
 
17694
#line 17695 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17695
} // closed Puma
 
17696
 
 
17697
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17698
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17699
#include "CCExprResolveH.ah"
 
17700
#endif
 
17701
namespace Puma {
 
17702
 
 
17703
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17704
 
 
17705
#line 17706 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17706
} // closed Puma
 
17707
 
 
17708
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17709
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17710
#include "CExprResolveH.ah"
 
17711
#endif
 
17712
namespace Puma {
 
17713
 
 
17714
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17715
class CT_Bool : public CT_Expression {
 
17716
#line 17717 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17717
  friend class ::CCExprResolve;
 
17718
  friend class ::CExprResolve;
 
17719
  friend class ::WinIfExists;
 
17720
  friend class ::WinImportHandler;
 
17721
  friend class ::WinMacros;
 
17722
  friend class ::WinAsm;
 
17723
  friend class ::WinDeclSpecs;
 
17724
  friend class ::WinMemberExplSpec;
 
17725
  friend class ::WinTypeKeywords;
 
17726
  friend class ::WinFriend;
 
17727
  friend class ::ExtAC;
 
17728
  friend class ::ExtACBuilderCoupling;
 
17729
  friend class ::ExtACSyntaxCoupling;
 
17730
  friend class ::ExtACTree;
 
17731
  friend class ::ExtACKeywords;
 
17732
  friend class ::ExtGnu;
 
17733
  friend class ::PragmaOnceUnitState;
 
17734
  friend class ::PragmaOnce;
 
17735
  friend class ::CMatchSyntax;
 
17736
 
 
17737
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17738
 
 
17739
  CTree *_value;  // CT_Token
 
17740
 
 
17741
public:
 
17742
  /** Constructor.
 
17743
   *  \param token The token containing the boolean value. */
 
17744
  CT_Bool (CTree *token) { AddSon (_value, token); }
 
17745
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17746
  static const char *NodeId ();
 
17747
  /** Get the name of the node. Can be compared with NodeId(). */
 
17748
  const char *NodeName () const { return NodeId (); }
 
17749
  /** Get the number of sons. */
 
17750
  int Sons () const { return 1; }
 
17751
  /** Get the n-th son.
 
17752
   *  \param n The index of the son.
 
17753
   *  \return The n-th son or NULL. */
 
17754
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
17755
  /** Replace a son.
 
17756
   *  \param old_son The son to replace.
 
17757
   *  \param new_son The new son. */
 
17758
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
17759
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
17760
   private:
 
17761
  typedef CT_Bool CCExprResolveExpr;
 
17762
 
 
17763
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17764
 public :
 
17765
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17766
  typedef CT_Bool CExprResolveExpr;
 
17767
 
 
17768
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17769
 public :
 
17770
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17771
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
17772
  const char *__attr_name (unsigned i) const {
 
17773
    static const char *names[] = { "_value" }; return names[i];
 
17774
  }
 
17775
  const void *__attr (unsigned __i) const {
 
17776
    switch (__i) { case 0: return &_value; default: return 0; }
 
17777
  }
 
17778
#line 864 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17779
};
 
17780
 
 
17781
/** \class CT_BracedExpr CTree.h Puma/CTree.h
 
17782
 *  Tree node representing a braced expression.
 
17783
 *  Example: \code (a+b) \endcode */
 
17784
 
 
17785
#line 17786 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17786
} // closed Puma
 
17787
class CCExprResolve;
 
17788
class CExprResolve;
 
17789
class WinIfExists;
 
17790
class WinImportHandler;
 
17791
class WinMacros;
 
17792
class WinAsm;
 
17793
class WinDeclSpecs;
 
17794
class WinMemberExplSpec;
 
17795
class WinTypeKeywords;
 
17796
class WinFriend;
 
17797
class ExtAC;
 
17798
class ExtACBuilderCoupling;
 
17799
class ExtACSyntaxCoupling;
 
17800
class ExtACTree;
 
17801
class ExtACKeywords;
 
17802
class ExtGnu;
 
17803
class PragmaOnceUnitState;
 
17804
class PragmaOnce;
 
17805
class CMatchSyntax;
 
17806
namespace Puma {
 
17807
 
 
17808
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17809
 
 
17810
#line 17811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17811
} // closed Puma
 
17812
 
 
17813
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17814
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17815
#include "CCExprResolveH.ah"
 
17816
#endif
 
17817
namespace Puma {
 
17818
 
 
17819
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17820
 
 
17821
#line 17822 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17822
} // closed Puma
 
17823
 
 
17824
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17825
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17826
#include "CExprResolveH.ah"
 
17827
#endif
 
17828
namespace Puma {
 
17829
 
 
17830
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17831
class CT_BracedExpr : public CT_Expression {
 
17832
#line 17833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17833
  friend class ::CCExprResolve;
 
17834
  friend class ::CExprResolve;
 
17835
  friend class ::WinIfExists;
 
17836
  friend class ::WinImportHandler;
 
17837
  friend class ::WinMacros;
 
17838
  friend class ::WinAsm;
 
17839
  friend class ::WinDeclSpecs;
 
17840
  friend class ::WinMemberExplSpec;
 
17841
  friend class ::WinTypeKeywords;
 
17842
  friend class ::WinFriend;
 
17843
  friend class ::ExtAC;
 
17844
  friend class ::ExtACBuilderCoupling;
 
17845
  friend class ::ExtACSyntaxCoupling;
 
17846
  friend class ::ExtACTree;
 
17847
  friend class ::ExtACKeywords;
 
17848
  friend class ::ExtGnu;
 
17849
  friend class ::PragmaOnceUnitState;
 
17850
  friend class ::PragmaOnce;
 
17851
  friend class ::CMatchSyntax;
 
17852
 
 
17853
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17854
 
 
17855
  CTree *sons[3]; // open, expr, close
 
17856
 
 
17857
public:
 
17858
  /** Constructor.
 
17859
   *  \param o The opening brace.
 
17860
   *  \param e The enclosed expression.
 
17861
   *  \param c The closing brace. */
 
17862
  CT_BracedExpr (CTree *o, CTree *e, CTree *c) { 
 
17863
    AddSon (sons[0], o); AddSon (sons[1], e); AddSon (sons[2], c); 
 
17864
  }
 
17865
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17866
  static const char *NodeId ();
 
17867
  /** Get the name of the node. Can be compared with NodeId(). */
 
17868
  const char *NodeName () const { return NodeId (); }
 
17869
  /** Get the number of sons. */
 
17870
  int Sons () const { return 3; }
 
17871
  /** Get the n-th son.
 
17872
   *  \param n The index of the son.
 
17873
   *  \return The n-th son or NULL. */
 
17874
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
17875
  /** Get the enclosed expression. */
 
17876
  CTree *Expr () const { return sons[1]; }
 
17877
  /** Get the semantic value of the expression. */
 
17878
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
17879
  /** Replace a son.
 
17880
   *  \param old_son The son to replace.
 
17881
   *  \param new_son The new son. */
 
17882
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
17883
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
17884
  }
 
17885
   private:
 
17886
  typedef CT_BracedExpr CCExprResolveExpr;
 
17887
 
 
17888
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
17889
 public :
 
17890
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
17891
  typedef CT_BracedExpr CExprResolveExpr;
 
17892
 
 
17893
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
17894
 public :
 
17895
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
17896
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
17897
  const char *__attr_name (unsigned i) const {
 
17898
    static const char *names[] = { "sons" }; return names[i];
 
17899
  }
 
17900
  const void *__attr (unsigned __i) const {
 
17901
    switch (__i) { case 0: return &sons; default: return 0; }
 
17902
  }
 
17903
#line 900 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17904
};
 
17905
 
 
17906
/** \class CT_SimpleName CTree.h Puma/CTree.h
 
17907
 *  Base class for all tree nodes representing a name. 
 
17908
 *  Example: \code a \endcode */
 
17909
 
 
17910
#line 17911 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17911
} // closed Puma
 
17912
class CCExprResolve;
 
17913
class CExprResolve;
 
17914
class WinIfExists;
 
17915
class WinImportHandler;
 
17916
class WinMacros;
 
17917
class WinAsm;
 
17918
class WinDeclSpecs;
 
17919
class WinMemberExplSpec;
 
17920
class WinTypeKeywords;
 
17921
class WinFriend;
 
17922
class ExtAC;
 
17923
class ExtACBuilderCoupling;
 
17924
class ExtACSyntaxCoupling;
 
17925
class ExtACTree;
 
17926
class ExtACKeywords;
 
17927
class ExtGnu;
 
17928
class PragmaOnceUnitState;
 
17929
class PragmaOnce;
 
17930
class CMatchSyntax;
 
17931
namespace Puma {
 
17932
 
 
17933
#line 905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17934
 
 
17935
#line 17936 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17936
} // closed Puma
 
17937
 
 
17938
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17939
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
17940
#include "CCExprResolveH.ah"
 
17941
#endif
 
17942
namespace Puma {
 
17943
 
 
17944
#line 905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17945
 
 
17946
#line 17947 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17947
} // closed Puma
 
17948
 
 
17949
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17950
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
17951
#include "CExprResolveH.ah"
 
17952
#endif
 
17953
namespace Puma {
 
17954
 
 
17955
#line 905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17956
class CT_SimpleName : public CT_List, public Printable, 
 
17957
                      public CSemValue, public CSemObject {
 
17958
#line 17959 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
17959
  friend class ::CCExprResolve;
 
17960
  friend class ::CExprResolve;
 
17961
  friend class ::WinIfExists;
 
17962
  friend class ::WinImportHandler;
 
17963
  friend class ::WinMacros;
 
17964
  friend class ::WinAsm;
 
17965
  friend class ::WinDeclSpecs;
 
17966
  friend class ::WinMemberExplSpec;
 
17967
  friend class ::WinTypeKeywords;
 
17968
  friend class ::WinFriend;
 
17969
  friend class ::ExtAC;
 
17970
  friend class ::ExtACBuilderCoupling;
 
17971
  friend class ::ExtACSyntaxCoupling;
 
17972
  friend class ::ExtACTree;
 
17973
  friend class ::ExtACKeywords;
 
17974
  friend class ::ExtGnu;
 
17975
  friend class ::PragmaOnceUnitState;
 
17976
  friend class ::PragmaOnce;
 
17977
  friend class ::CMatchSyntax;
 
17978
 
 
17979
#line 906 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
17980
 
 
17981
protected:
 
17982
  /** Constructor.
 
17983
   *  \param size The number of sub-names (for qualified names). */
 
17984
  CT_SimpleName (int size) : CT_List (size, 1) {}
 
17985
  /** Constructor.
 
17986
   *  \param size The number of sub-names (for qualified names). 
 
17987
   *  \param properties Additional name list properties (for root qualified names). */
 
17988
  CT_SimpleName (int size, int properties) : 
 
17989
    CT_List (size, 2, properties) {}
 
17990
  
 
17991
public:
 
17992
  /** Constructor.
 
17993
   *  \param n The sub-tree containing the name. */
 
17994
  CT_SimpleName (CTree *n) : CT_List (1, 1) { AddSon (n); }
 
17995
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
17996
  static const char *NodeId ();
 
17997
  /** Get the name of the node. Can be compared with NodeId(). */
 
17998
  const char *NodeName () const { return NodeId (); }
 
17999
  /** Get the string containing the name. */
 
18000
  virtual const char *Text () const 
 
18001
   { return Son (Sons ()-1)->token ()->text (); }
 
18002
  /** Print the name on the given stream. 
 
18003
   *  \param os The output stream. */
 
18004
  virtual void print (ostream &os) const { os << Text (); }
 
18005
  /** Get this. */
 
18006
  virtual CT_SimpleName *Name () const { return (CT_SimpleName*)this; }
 
18007
  /** Get the type of the entity represented by the name. */
 
18008
  CTypeInfo *Type () const { return type; }
 
18009
  /** Get the value of the entity represented by the name. */ 
 
18010
  CExprValue *Value () const { return value; }
 
18011
  /** Get the sematic value information of the name. */
 
18012
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
18013
  /** Get the sematic information about the name. */
 
18014
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
18015
  /** Get this. */
 
18016
  virtual CT_SimpleName *IsSimpleName () { return this; }  
 
18017
 
 
18018
public:
 
18019
  /** Own new operator reusing memory. */
 
18020
  void *operator new (size_t);
 
18021
  /** Own delete operator. */
 
18022
  void operator delete (void *);
 
18023
   private:
 
18024
  typedef CT_SimpleName CCExprResolveExpr;
 
18025
 
 
18026
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18027
 public :
 
18028
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18029
  typedef CT_SimpleName CExprResolveExpr;
 
18030
 
 
18031
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18032
 public :
 
18033
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18034
  typedef AC::TLE __AttrTypes;
 
18035
  const char *__attr_name (unsigned i) const { return 0; }
 
18036
  const void *__attr (unsigned __i) const { return 0; }
 
18037
#line 949 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18038
};
 
18039
 
 
18040
/** \class CT_SpecialName CTree.h Puma/CTree.h
 
18041
 *  Base class for tree nodes representing a special name, like destructor names. */
 
18042
 
 
18043
#line 18044 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18044
} // closed Puma
 
18045
class CCExprResolve;
 
18046
class CExprResolve;
 
18047
class WinIfExists;
 
18048
class WinImportHandler;
 
18049
class WinMacros;
 
18050
class WinAsm;
 
18051
class WinDeclSpecs;
 
18052
class WinMemberExplSpec;
 
18053
class WinTypeKeywords;
 
18054
class WinFriend;
 
18055
class ExtAC;
 
18056
class ExtACBuilderCoupling;
 
18057
class ExtACSyntaxCoupling;
 
18058
class ExtACTree;
 
18059
class ExtACKeywords;
 
18060
class ExtGnu;
 
18061
class PragmaOnceUnitState;
 
18062
class PragmaOnce;
 
18063
class CMatchSyntax;
 
18064
namespace Puma {
 
18065
 
 
18066
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18067
 
 
18068
#line 18069 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18069
} // closed Puma
 
18070
 
 
18071
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18072
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18073
#include "CCExprResolveH.ah"
 
18074
#endif
 
18075
namespace Puma {
 
18076
 
 
18077
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18078
 
 
18079
#line 18080 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18080
} // closed Puma
 
18081
 
 
18082
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18083
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18084
#include "CExprResolveH.ah"
 
18085
#endif
 
18086
namespace Puma {
 
18087
 
 
18088
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18089
class CT_SpecialName : public CT_SimpleName {
 
18090
#line 18091 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18091
  friend class ::CCExprResolve;
 
18092
  friend class ::CExprResolve;
 
18093
  friend class ::WinIfExists;
 
18094
  friend class ::WinImportHandler;
 
18095
  friend class ::WinMacros;
 
18096
  friend class ::WinAsm;
 
18097
  friend class ::WinDeclSpecs;
 
18098
  friend class ::WinMemberExplSpec;
 
18099
  friend class ::WinTypeKeywords;
 
18100
  friend class ::WinFriend;
 
18101
  friend class ::ExtAC;
 
18102
  friend class ::ExtACBuilderCoupling;
 
18103
  friend class ::ExtACSyntaxCoupling;
 
18104
  friend class ::ExtACTree;
 
18105
  friend class ::ExtACKeywords;
 
18106
  friend class ::ExtGnu;
 
18107
  friend class ::PragmaOnceUnitState;
 
18108
  friend class ::PragmaOnce;
 
18109
  friend class ::CMatchSyntax;
 
18110
 
 
18111
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18112
 
 
18113
  char *_name;
 
18114
  
 
18115
protected:
 
18116
  /** Constructor.
 
18117
   *  \param size The number of sub-names (for qualified names). */
 
18118
  CT_SpecialName (int size = 1) : CT_SimpleName (size), _name (0) {}
 
18119
  
 
18120
public:
 
18121
  /** Destructor. Deletes the name string. */
 
18122
  ~CT_SpecialName () { if (_name) delete[] _name; }
 
18123
  /** Get the string containing the name. */
 
18124
  const char *Text () const { return _name; }
 
18125
  /** Set the name. The name is copied.
 
18126
   *  \param n The name. */
 
18127
  void Name (const char *n) { 
 
18128
    if (n) { 
 
18129
      _name = new char[strlen(n) + 1];
 
18130
      strcpy (_name,n);
 
18131
    }
 
18132
  }
 
18133
 
 
18134
public:
 
18135
  /** Own new operator reusing memory. */
 
18136
  void *operator new (size_t);
 
18137
  /** Own delete operator. */
 
18138
  void operator delete (void *);
 
18139
   private:
 
18140
  typedef CT_SpecialName CCExprResolveExpr;
 
18141
 
 
18142
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18143
 public :
 
18144
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18145
  typedef CT_SpecialName CExprResolveExpr;
 
18146
 
 
18147
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18148
 public :
 
18149
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18150
  typedef AC::TL<char *,AC::TLE > __AttrTypes;
 
18151
  const char *__attr_name (unsigned i) const {
 
18152
    static const char *names[] = { "_name" }; return names[i];
 
18153
  }
 
18154
  const void *__attr (unsigned __i) const {
 
18155
    switch (__i) { case 0: return &_name; default: return 0; }
 
18156
  }
 
18157
#line 980 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18158
};
 
18159
 
 
18160
/** \class CT_PrivateName CTree.h Puma/CTree.h
 
18161
 *  Tree node representing a private name. Private names 
 
18162
 *  are generated names for instance for abstract declarators.
 
18163
 *  Example: 
 
18164
 *  \code 
 
18165
 * void foo(int*);  // first parameter of foo has private name
 
18166
 *  \endcode */
 
18167
 
 
18168
#line 18169 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18169
} // closed Puma
 
18170
class CCExprResolve;
 
18171
class CExprResolve;
 
18172
class WinIfExists;
 
18173
class WinImportHandler;
 
18174
class WinMacros;
 
18175
class WinAsm;
 
18176
class WinDeclSpecs;
 
18177
class WinMemberExplSpec;
 
18178
class WinTypeKeywords;
 
18179
class WinFriend;
 
18180
class ExtAC;
 
18181
class ExtACBuilderCoupling;
 
18182
class ExtACSyntaxCoupling;
 
18183
class ExtACTree;
 
18184
class ExtACKeywords;
 
18185
class ExtGnu;
 
18186
class PragmaOnceUnitState;
 
18187
class PragmaOnce;
 
18188
class CMatchSyntax;
 
18189
namespace Puma {
 
18190
 
 
18191
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18192
 
 
18193
#line 18194 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18194
} // closed Puma
 
18195
 
 
18196
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18197
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18198
#include "CCExprResolveH.ah"
 
18199
#endif
 
18200
namespace Puma {
 
18201
 
 
18202
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18203
 
 
18204
#line 18205 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18205
} // closed Puma
 
18206
 
 
18207
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18208
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18209
#include "CExprResolveH.ah"
 
18210
#endif
 
18211
namespace Puma {
 
18212
 
 
18213
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18214
class CT_PrivateName : public CT_SpecialName {
 
18215
#line 18216 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18216
  friend class ::CCExprResolve;
 
18217
  friend class ::CExprResolve;
 
18218
  friend class ::WinIfExists;
 
18219
  friend class ::WinImportHandler;
 
18220
  friend class ::WinMacros;
 
18221
  friend class ::WinAsm;
 
18222
  friend class ::WinDeclSpecs;
 
18223
  friend class ::WinMemberExplSpec;
 
18224
  friend class ::WinTypeKeywords;
 
18225
  friend class ::WinFriend;
 
18226
  friend class ::ExtAC;
 
18227
  friend class ::ExtACBuilderCoupling;
 
18228
  friend class ::ExtACSyntaxCoupling;
 
18229
  friend class ::ExtACTree;
 
18230
  friend class ::ExtACKeywords;
 
18231
  friend class ::ExtGnu;
 
18232
  friend class ::PragmaOnceUnitState;
 
18233
  friend class ::PragmaOnce;
 
18234
  friend class ::CMatchSyntax;
 
18235
 
 
18236
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18237
 
 
18238
public:
 
18239
  /** Constructor.
 
18240
   *  \param n The private (generated) name. */
 
18241
  CT_PrivateName (const char *n) { Name (n); }
 
18242
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18243
  static const char *NodeId ();
 
18244
  /** Get the name of the node. Can be compared with NodeId(). */
 
18245
  const char *NodeName () const { return NodeId (); }
 
18246
  /** Get the number of sons. */
 
18247
  int Sons () const { return 0; }
 
18248
  /** Get the n-th son.
 
18249
   *  \param n The index of the son.
 
18250
   *  \return The n-th son or NULL. */
 
18251
  CTree *Son (int n) const { return (CTree*)0; }
 
18252
 
 
18253
public:
 
18254
  /** Own new operator reusing memory. */
 
18255
  void *operator new (size_t);
 
18256
  /** Own delete operator. */
 
18257
  void operator delete (void *);
 
18258
   private:
 
18259
  typedef CT_PrivateName CCExprResolveExpr;
 
18260
 
 
18261
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18262
 public :
 
18263
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18264
  typedef CT_PrivateName CExprResolveExpr;
 
18265
 
 
18266
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18267
 public :
 
18268
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18269
  typedef AC::TLE __AttrTypes;
 
18270
  const char *__attr_name (unsigned i) const { return 0; }
 
18271
  const void *__attr (unsigned __i) const { return 0; }
 
18272
#line 1010 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18273
};
 
18274
 
 
18275
/** \class CT_DestructorName CTree.h Puma/CTree.h
 
18276
 *  Tree node representing a destructor name.
 
18277
 *  Example: \code ~X \endcode */
 
18278
 
 
18279
#line 18280 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18280
} // closed Puma
 
18281
class CCExprResolve;
 
18282
class CExprResolve;
 
18283
class WinIfExists;
 
18284
class WinImportHandler;
 
18285
class WinMacros;
 
18286
class WinAsm;
 
18287
class WinDeclSpecs;
 
18288
class WinMemberExplSpec;
 
18289
class WinTypeKeywords;
 
18290
class WinFriend;
 
18291
class ExtAC;
 
18292
class ExtACBuilderCoupling;
 
18293
class ExtACSyntaxCoupling;
 
18294
class ExtACTree;
 
18295
class ExtACKeywords;
 
18296
class ExtGnu;
 
18297
class PragmaOnceUnitState;
 
18298
class PragmaOnce;
 
18299
class CMatchSyntax;
 
18300
namespace Puma {
 
18301
 
 
18302
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18303
 
 
18304
#line 18305 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18305
} // closed Puma
 
18306
 
 
18307
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18308
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18309
#include "CCExprResolveH.ah"
 
18310
#endif
 
18311
namespace Puma {
 
18312
 
 
18313
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18314
 
 
18315
#line 18316 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18316
} // closed Puma
 
18317
 
 
18318
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18319
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18320
#include "CExprResolveH.ah"
 
18321
#endif
 
18322
namespace Puma {
 
18323
 
 
18324
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18325
class CT_DestructorName : public CT_SpecialName {
 
18326
#line 18327 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18327
  friend class ::CCExprResolve;
 
18328
  friend class ::CExprResolve;
 
18329
  friend class ::WinIfExists;
 
18330
  friend class ::WinImportHandler;
 
18331
  friend class ::WinMacros;
 
18332
  friend class ::WinAsm;
 
18333
  friend class ::WinDeclSpecs;
 
18334
  friend class ::WinMemberExplSpec;
 
18335
  friend class ::WinTypeKeywords;
 
18336
  friend class ::WinFriend;
 
18337
  friend class ::ExtAC;
 
18338
  friend class ::ExtACBuilderCoupling;
 
18339
  friend class ::ExtACSyntaxCoupling;
 
18340
  friend class ::ExtACTree;
 
18341
  friend class ::ExtACKeywords;
 
18342
  friend class ::ExtGnu;
 
18343
  friend class ::PragmaOnceUnitState;
 
18344
  friend class ::PragmaOnce;
 
18345
  friend class ::CMatchSyntax;
 
18346
 
 
18347
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18348
 
 
18349
public:
 
18350
  /** Constructor.
 
18351
   *  \param t The tilde operator.
 
18352
   *  \param n The class name. */
 
18353
  CT_DestructorName (CTree *t, CTree *n);
 
18354
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18355
  static const char *NodeId ();
 
18356
  /** Get the name of the node. Can be compared with NodeId(). */
 
18357
  const char *NodeName () const { return NodeId (); }
 
18358
 
 
18359
public:
 
18360
  /** Own new operator reusing memory. */
 
18361
  void *operator new (size_t);
 
18362
  /** Own delete operator. */
 
18363
  void operator delete (void *);
 
18364
   private:
 
18365
  typedef CT_DestructorName CCExprResolveExpr;
 
18366
 
 
18367
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18368
 public :
 
18369
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18370
  typedef CT_DestructorName CExprResolveExpr;
 
18371
 
 
18372
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18373
 public :
 
18374
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18375
  typedef AC::TLE __AttrTypes;
 
18376
  const char *__attr_name (unsigned i) const { return 0; }
 
18377
  const void *__attr (unsigned __i) const { return 0; }
 
18378
#line 1031 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18379
};
 
18380
 
 
18381
/** \class CT_TemplateName CTree.h Puma/CTree.h
 
18382
 *  Tree node representing a template name.
 
18383
 *  Example: \code X<T> \endcode */
 
18384
 
 
18385
#line 18386 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18386
} // closed Puma
 
18387
class CCExprResolve;
 
18388
class CExprResolve;
 
18389
class WinIfExists;
 
18390
class WinImportHandler;
 
18391
class WinMacros;
 
18392
class WinAsm;
 
18393
class WinDeclSpecs;
 
18394
class WinMemberExplSpec;
 
18395
class WinTypeKeywords;
 
18396
class WinFriend;
 
18397
class ExtAC;
 
18398
class ExtACBuilderCoupling;
 
18399
class ExtACSyntaxCoupling;
 
18400
class ExtACTree;
 
18401
class ExtACKeywords;
 
18402
class ExtGnu;
 
18403
class PragmaOnceUnitState;
 
18404
class PragmaOnce;
 
18405
class CMatchSyntax;
 
18406
namespace Puma {
 
18407
 
 
18408
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18409
 
 
18410
#line 18411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18411
} // closed Puma
 
18412
 
 
18413
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18414
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18415
#include "CCExprResolveH.ah"
 
18416
#endif
 
18417
namespace Puma {
 
18418
 
 
18419
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18420
 
 
18421
#line 18422 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18422
} // closed Puma
 
18423
 
 
18424
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18425
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18426
#include "CExprResolveH.ah"
 
18427
#endif
 
18428
namespace Puma {
 
18429
 
 
18430
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18431
class CT_TemplateName : public CT_SpecialName {
 
18432
#line 18433 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18433
  friend class ::CCExprResolve;
 
18434
  friend class ::CExprResolve;
 
18435
  friend class ::WinIfExists;
 
18436
  friend class ::WinImportHandler;
 
18437
  friend class ::WinMacros;
 
18438
  friend class ::WinAsm;
 
18439
  friend class ::WinDeclSpecs;
 
18440
  friend class ::WinMemberExplSpec;
 
18441
  friend class ::WinTypeKeywords;
 
18442
  friend class ::WinFriend;
 
18443
  friend class ::ExtAC;
 
18444
  friend class ::ExtACBuilderCoupling;
 
18445
  friend class ::ExtACSyntaxCoupling;
 
18446
  friend class ::ExtACTree;
 
18447
  friend class ::ExtACKeywords;
 
18448
  friend class ::ExtGnu;
 
18449
  friend class ::PragmaOnceUnitState;
 
18450
  friend class ::PragmaOnce;
 
18451
  friend class ::CMatchSyntax;
 
18452
 
 
18453
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18454
 
 
18455
public:
 
18456
  /** Constructor.
 
18457
   *  \param n The template class or function name.
 
18458
   *  \param a The template argument list. */
 
18459
  CT_TemplateName (CTree *n, CTree *a) 
 
18460
   { AddSon (n); AddSon (a); }
 
18461
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18462
  static const char *NodeId ();
 
18463
  /** Get the name of the node. Can be compared with NodeId(). */
 
18464
  const char *NodeName () const { return NodeId (); }
 
18465
  /** Get the template argument list. */
 
18466
  CT_TemplateArgList *Arguments () const 
 
18467
   { return (CT_TemplateArgList*)Son (Sons ()-1); }
 
18468
  /** Get the template class or function name. */
 
18469
  CT_SimpleName *TemplateName () const 
 
18470
   { return (CT_SimpleName*)Son (Sons ()-2); }
 
18471
  // may change in the future
 
18472
  const char *Text () const { return TemplateName ()->Text (); }
 
18473
 
 
18474
public:
 
18475
  /** Own new operator reusing memory. */
 
18476
  void *operator new (size_t);
 
18477
  /** Own delete operator. */
 
18478
  void operator delete (void *);
 
18479
   private:
 
18480
  typedef CT_TemplateName CCExprResolveExpr;
 
18481
 
 
18482
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18483
 public :
 
18484
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18485
  typedef CT_TemplateName CExprResolveExpr;
 
18486
 
 
18487
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18488
 public :
 
18489
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18490
  typedef AC::TLE __AttrTypes;
 
18491
  const char *__attr_name (unsigned i) const { return 0; }
 
18492
  const void *__attr (unsigned __i) const { return 0; }
 
18493
#line 1061 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18494
};
 
18495
 
 
18496
/** \class CT_OperatorName CTree.h Puma/CTree.h
 
18497
 *  Tree node representing the name of an overloaded operator. 
 
18498
 *  Example: \code operator== \endcode */
 
18499
 
 
18500
#line 18501 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18501
} // closed Puma
 
18502
class CCExprResolve;
 
18503
class CExprResolve;
 
18504
class WinIfExists;
 
18505
class WinImportHandler;
 
18506
class WinMacros;
 
18507
class WinAsm;
 
18508
class WinDeclSpecs;
 
18509
class WinMemberExplSpec;
 
18510
class WinTypeKeywords;
 
18511
class WinFriend;
 
18512
class ExtAC;
 
18513
class ExtACBuilderCoupling;
 
18514
class ExtACSyntaxCoupling;
 
18515
class ExtACTree;
 
18516
class ExtACKeywords;
 
18517
class ExtGnu;
 
18518
class PragmaOnceUnitState;
 
18519
class PragmaOnce;
 
18520
class CMatchSyntax;
 
18521
namespace Puma {
 
18522
 
 
18523
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18524
 
 
18525
#line 18526 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18526
} // closed Puma
 
18527
 
 
18528
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18529
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18530
#include "CCExprResolveH.ah"
 
18531
#endif
 
18532
namespace Puma {
 
18533
 
 
18534
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18535
 
 
18536
#line 18537 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18537
} // closed Puma
 
18538
 
 
18539
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18540
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18541
#include "CExprResolveH.ah"
 
18542
#endif
 
18543
namespace Puma {
 
18544
 
 
18545
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18546
class CT_OperatorName : public CT_SpecialName {
 
18547
#line 18548 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18548
  friend class ::CCExprResolve;
 
18549
  friend class ::CExprResolve;
 
18550
  friend class ::WinIfExists;
 
18551
  friend class ::WinImportHandler;
 
18552
  friend class ::WinMacros;
 
18553
  friend class ::WinAsm;
 
18554
  friend class ::WinDeclSpecs;
 
18555
  friend class ::WinMemberExplSpec;
 
18556
  friend class ::WinTypeKeywords;
 
18557
  friend class ::WinFriend;
 
18558
  friend class ::ExtAC;
 
18559
  friend class ::ExtACBuilderCoupling;
 
18560
  friend class ::ExtACSyntaxCoupling;
 
18561
  friend class ::ExtACTree;
 
18562
  friend class ::ExtACKeywords;
 
18563
  friend class ::ExtGnu;
 
18564
  friend class ::PragmaOnceUnitState;
 
18565
  friend class ::PragmaOnce;
 
18566
  friend class ::CMatchSyntax;
 
18567
 
 
18568
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18569
 
 
18570
  int _oper;
 
18571
 
 
18572
public:
 
18573
  /** Complex operator types. */
 
18574
  enum { 
 
18575
    FCT_CALL = -100,  /** Function call operator, i.e. (). */
 
18576
    SUBSCRIPT,        /** Array subscript operator, i.e. []. */
 
18577
    NEW_ARRAY,        /** New array operator, i.e. new[]. */
 
18578
    DEL_ARRAY         /** Delete array operator, i.e. delete[]. */
 
18579
  };
 
18580
 
 
18581
public:
 
18582
  /** Constructor.
 
18583
   *  \param op The token containing the operator. */
 
18584
  CT_OperatorName (CTree *op);
 
18585
  /** Constructor.
 
18586
   *  \param f The operator function keyword 'operator'.
 
18587
   *  \param op The token containing the operator. 
 
18588
   *  \param o The token of '[' or '('.
 
18589
   *  \param c The token of ']' or ')'. */
 
18590
  CT_OperatorName (CTree *f, CTree *op, CTree *o, CTree *c);
 
18591
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18592
  static const char *NodeId ();
 
18593
  /** Get the name of the node. Can be compared with NodeId(). */
 
18594
  const char *NodeName () const { return NodeId (); }
 
18595
  /** Get the operator type (either the token type or one of 
 
18596
   *  the complex operator types). */
 
18597
  int Operator () const { return _oper; }
 
18598
 
 
18599
public:
 
18600
  /** Own new operator reusing memory. */
 
18601
  void *operator new (size_t);
 
18602
  /** Own delete operator. */
 
18603
  void operator delete (void *);
 
18604
   private:
 
18605
  typedef CT_OperatorName CCExprResolveExpr;
 
18606
 
 
18607
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18608
 public :
 
18609
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18610
  typedef CT_OperatorName CExprResolveExpr;
 
18611
 
 
18612
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18613
 public :
 
18614
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18615
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
18616
  const char *__attr_name (unsigned i) const {
 
18617
    static const char *names[] = { "_oper" }; return names[i];
 
18618
  }
 
18619
  const void *__attr (unsigned __i) const {
 
18620
    switch (__i) { case 0: return &_oper; default: return 0; }
 
18621
  }
 
18622
#line 1101 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18623
};
 
18624
 
 
18625
/** \class CT_ConversionName CTree.h Puma/CTree.h
 
18626
 *  Tree node representing the name of a conversion function.
 
18627
 *  Example: \code operator int* \endcode */
 
18628
 
 
18629
#line 18630 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18630
} // closed Puma
 
18631
class CCExprResolve;
 
18632
class CExprResolve;
 
18633
class WinIfExists;
 
18634
class WinImportHandler;
 
18635
class WinMacros;
 
18636
class WinAsm;
 
18637
class WinDeclSpecs;
 
18638
class WinMemberExplSpec;
 
18639
class WinTypeKeywords;
 
18640
class WinFriend;
 
18641
class ExtAC;
 
18642
class ExtACBuilderCoupling;
 
18643
class ExtACSyntaxCoupling;
 
18644
class ExtACTree;
 
18645
class ExtACKeywords;
 
18646
class ExtGnu;
 
18647
class PragmaOnceUnitState;
 
18648
class PragmaOnce;
 
18649
class CMatchSyntax;
 
18650
namespace Puma {
 
18651
 
 
18652
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18653
 
 
18654
#line 18655 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18655
} // closed Puma
 
18656
 
 
18657
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18658
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18659
#include "CCExprResolveH.ah"
 
18660
#endif
 
18661
namespace Puma {
 
18662
 
 
18663
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18664
 
 
18665
#line 18666 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18666
} // closed Puma
 
18667
 
 
18668
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18669
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18670
#include "CExprResolveH.ah"
 
18671
#endif
 
18672
namespace Puma {
 
18673
 
 
18674
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18675
class CT_ConversionName : public CT_SpecialName {
 
18676
#line 18677 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18677
  friend class ::CCExprResolve;
 
18678
  friend class ::CExprResolve;
 
18679
  friend class ::WinIfExists;
 
18680
  friend class ::WinImportHandler;
 
18681
  friend class ::WinMacros;
 
18682
  friend class ::WinAsm;
 
18683
  friend class ::WinDeclSpecs;
 
18684
  friend class ::WinMemberExplSpec;
 
18685
  friend class ::WinTypeKeywords;
 
18686
  friend class ::WinFriend;
 
18687
  friend class ::ExtAC;
 
18688
  friend class ::ExtACBuilderCoupling;
 
18689
  friend class ::ExtACSyntaxCoupling;
 
18690
  friend class ::ExtACTree;
 
18691
  friend class ::ExtACKeywords;
 
18692
  friend class ::ExtGnu;
 
18693
  friend class ::PragmaOnceUnitState;
 
18694
  friend class ::PragmaOnce;
 
18695
  friend class ::CMatchSyntax;
 
18696
 
 
18697
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18698
 
 
18699
public:
 
18700
  /** Constructor.
 
18701
   *  \param f The operator function keyword 'operator'.
 
18702
   *  \param t The sub-tree containing the conversion type. */
 
18703
  CT_ConversionName (CTree *f, CTree *t);
 
18704
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18705
  static const char *NodeId ();
 
18706
  /** Get the name of the node. Can be compared with NodeId(). */
 
18707
  const char *NodeName () const { return NodeId (); }
 
18708
  /** Get the conversion type. */
 
18709
  CT_NamedType *TypeName () const { return (CT_NamedType*)Son (Sons ()-1); }
 
18710
 
 
18711
public:
 
18712
  /** Own new operator reusing memory. */
 
18713
  void *operator new (size_t);
 
18714
  /** Own delete operator. */
 
18715
  void operator delete (void *);
 
18716
   private:
 
18717
  typedef CT_ConversionName CCExprResolveExpr;
 
18718
 
 
18719
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18720
 public :
 
18721
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18722
  typedef CT_ConversionName CExprResolveExpr;
 
18723
 
 
18724
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18725
 public :
 
18726
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18727
  typedef AC::TLE __AttrTypes;
 
18728
  const char *__attr_name (unsigned i) const { return 0; }
 
18729
  const void *__attr (unsigned __i) const { return 0; }
 
18730
#line 1124 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18731
};
 
18732
 
 
18733
/** \class CT_QualName CTree.h Puma/CTree.h
 
18734
 *  Tree node representing a qualified name.
 
18735
 *  Example: \code X::Y::Z \endcode */
 
18736
 
 
18737
#line 18738 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18738
} // closed Puma
 
18739
class CCExprResolve;
 
18740
class CExprResolve;
 
18741
class WinIfExists;
 
18742
class WinImportHandler;
 
18743
class WinMacros;
 
18744
class WinAsm;
 
18745
class WinDeclSpecs;
 
18746
class WinMemberExplSpec;
 
18747
class WinTypeKeywords;
 
18748
class WinFriend;
 
18749
class ExtAC;
 
18750
class ExtACBuilderCoupling;
 
18751
class ExtACSyntaxCoupling;
 
18752
class ExtACTree;
 
18753
class ExtACKeywords;
 
18754
class ExtGnu;
 
18755
class PragmaOnceUnitState;
 
18756
class PragmaOnce;
 
18757
class CMatchSyntax;
 
18758
namespace Puma {
 
18759
 
 
18760
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18761
 
 
18762
#line 18763 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18763
} // closed Puma
 
18764
 
 
18765
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18766
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18767
#include "CCExprResolveH.ah"
 
18768
#endif
 
18769
namespace Puma {
 
18770
 
 
18771
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18772
 
 
18773
#line 18774 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18774
} // closed Puma
 
18775
 
 
18776
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18777
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18778
#include "CExprResolveH.ah"
 
18779
#endif
 
18780
namespace Puma {
 
18781
 
 
18782
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18783
class CT_QualName : public CT_SimpleName {
 
18784
#line 18785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18785
  friend class ::CCExprResolve;
 
18786
  friend class ::CExprResolve;
 
18787
  friend class ::WinIfExists;
 
18788
  friend class ::WinImportHandler;
 
18789
  friend class ::WinMacros;
 
18790
  friend class ::WinAsm;
 
18791
  friend class ::WinDeclSpecs;
 
18792
  friend class ::WinMemberExplSpec;
 
18793
  friend class ::WinTypeKeywords;
 
18794
  friend class ::WinFriend;
 
18795
  friend class ::ExtAC;
 
18796
  friend class ::ExtACBuilderCoupling;
 
18797
  friend class ::ExtACSyntaxCoupling;
 
18798
  friend class ::ExtACTree;
 
18799
  friend class ::ExtACKeywords;
 
18800
  friend class ::ExtGnu;
 
18801
  friend class ::PragmaOnceUnitState;
 
18802
  friend class ::PragmaOnce;
 
18803
  friend class ::CMatchSyntax;
 
18804
 
 
18805
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18806
 
 
18807
public:
 
18808
  /** Constructor.
 
18809
   *  \param size The initial number sub-names plus separators. */
 
18810
  CT_QualName (int size = 3) : 
 
18811
    CT_SimpleName (size, CT_List::SEPARATORS) {}
 
18812
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18813
  static const char *NodeId ();
 
18814
  /** Get the name of the node. Can be compared with NodeId(). */
 
18815
  const char *NodeName () const { return NodeId (); }
 
18816
  /** Print the qualified name on the given stream. 
 
18817
   *  \param os The output stream. */
 
18818
  void print (ostream &os) const;
 
18819
  /** Get the last name of the qualified name, e.g. Z of qualified name X::Y::Z. */
 
18820
  CT_SimpleName *Name () const { return (CT_SimpleName*)Son (Sons ()-1); }
 
18821
  /** Get the string containing the last name of the qualified name. */
 
18822
  const char *Text () const { return Name ()->Text (); }
 
18823
  /** Get the type of the last name. */
 
18824
  CTypeInfo *Type () const { return Name ()->Type (); }
 
18825
  /** Get the value of the last name. */
 
18826
  CExprValue *Value () const { return Name ()->Value (); }
 
18827
  /** Get the semantic value object of the last name. */
 
18828
  CSemValue *SemValue () const { return Name ()->SemValue (); }
 
18829
  /** Get the semantic information of the last name. */
 
18830
  CSemObject *SemObject () const { return Name ()->SemObject (); }
 
18831
 
 
18832
public:
 
18833
  /** Own new operator reusing memory. */
 
18834
  void *operator new (size_t);
 
18835
  /** Own delete operator. */
 
18836
  void operator delete (void *);
 
18837
   private:
 
18838
  typedef CT_QualName CCExprResolveExpr;
 
18839
 
 
18840
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18841
 public :
 
18842
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18843
  typedef CT_QualName CExprResolveExpr;
 
18844
 
 
18845
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18846
 public :
 
18847
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18848
  typedef AC::TLE __AttrTypes;
 
18849
  const char *__attr_name (unsigned i) const { return 0; }
 
18850
  const void *__attr (unsigned __i) const { return 0; }
 
18851
#line 1160 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18852
};
 
18853
 
 
18854
/** \class CT_RootQualName CTree.h Puma/CTree.h
 
18855
 *  Tree node representing a qualified name with introducing name separator.
 
18856
 *  Example: \code ::X::Y::Z \endcode */
 
18857
 
 
18858
#line 18859 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18859
} // closed Puma
 
18860
class CCExprResolve;
 
18861
class CExprResolve;
 
18862
class WinIfExists;
 
18863
class WinImportHandler;
 
18864
class WinMacros;
 
18865
class WinAsm;
 
18866
class WinDeclSpecs;
 
18867
class WinMemberExplSpec;
 
18868
class WinTypeKeywords;
 
18869
class WinFriend;
 
18870
class ExtAC;
 
18871
class ExtACBuilderCoupling;
 
18872
class ExtACSyntaxCoupling;
 
18873
class ExtACTree;
 
18874
class ExtACKeywords;
 
18875
class ExtGnu;
 
18876
class PragmaOnceUnitState;
 
18877
class PragmaOnce;
 
18878
class CMatchSyntax;
 
18879
namespace Puma {
 
18880
 
 
18881
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18882
 
 
18883
#line 18884 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18884
} // closed Puma
 
18885
 
 
18886
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18887
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18888
#include "CCExprResolveH.ah"
 
18889
#endif
 
18890
namespace Puma {
 
18891
 
 
18892
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18893
 
 
18894
#line 18895 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18895
} // closed Puma
 
18896
 
 
18897
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18898
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
18899
#include "CExprResolveH.ah"
 
18900
#endif
 
18901
namespace Puma {
 
18902
 
 
18903
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18904
class CT_RootQualName : public CT_QualName {
 
18905
#line 18906 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18906
  friend class ::CCExprResolve;
 
18907
  friend class ::CExprResolve;
 
18908
  friend class ::WinIfExists;
 
18909
  friend class ::WinImportHandler;
 
18910
  friend class ::WinMacros;
 
18911
  friend class ::WinAsm;
 
18912
  friend class ::WinDeclSpecs;
 
18913
  friend class ::WinMemberExplSpec;
 
18914
  friend class ::WinTypeKeywords;
 
18915
  friend class ::WinFriend;
 
18916
  friend class ::ExtAC;
 
18917
  friend class ::ExtACBuilderCoupling;
 
18918
  friend class ::ExtACSyntaxCoupling;
 
18919
  friend class ::ExtACTree;
 
18920
  friend class ::ExtACKeywords;
 
18921
  friend class ::ExtGnu;
 
18922
  friend class ::PragmaOnceUnitState;
 
18923
  friend class ::PragmaOnce;
 
18924
  friend class ::CMatchSyntax;
 
18925
 
 
18926
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18927
 
 
18928
public:
 
18929
  /** Constructor.
 
18930
   *  \param size Initial number of sub-name plus separator. */
 
18931
  CT_RootQualName (int size = 2) : 
 
18932
    CT_QualName (size) { AddProperties (INTRO); }
 
18933
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
18934
  static const char *NodeId ();
 
18935
  /** Get the name of the node. Can be compared with NodeId(). */
 
18936
  const char *NodeName () const { return NodeId (); }
 
18937
 
 
18938
public:
 
18939
  /** Own new operator reusing memory. */
 
18940
  void *operator new (size_t);
 
18941
  /** Own delete operator. */
 
18942
  void operator delete (void *);
 
18943
   private:
 
18944
  typedef CT_RootQualName CCExprResolveExpr;
 
18945
 
 
18946
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
18947
 public :
 
18948
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
18949
  typedef CT_RootQualName CExprResolveExpr;
 
18950
 
 
18951
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
18952
 public :
 
18953
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
18954
  typedef AC::TLE __AttrTypes;
 
18955
  const char *__attr_name (unsigned i) const { return 0; }
 
18956
  const void *__attr (unsigned __i) const { return 0; }
 
18957
#line 1181 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18958
};
 
18959
 
 
18960
/** \class CT_BinaryExpr CTree.h Puma/CTree.h
 
18961
 *  Tree node representing a binary expression.
 
18962
 *  Example: \code a+b \endcode */
 
18963
 
 
18964
#line 18965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18965
} // closed Puma
 
18966
class CCExprResolve;
 
18967
class CExprResolve;
 
18968
class WinIfExists;
 
18969
class WinImportHandler;
 
18970
class WinMacros;
 
18971
class WinAsm;
 
18972
class WinDeclSpecs;
 
18973
class WinMemberExplSpec;
 
18974
class WinTypeKeywords;
 
18975
class WinFriend;
 
18976
class ExtAC;
 
18977
class ExtACBuilderCoupling;
 
18978
class ExtACSyntaxCoupling;
 
18979
class ExtACTree;
 
18980
class ExtACKeywords;
 
18981
class ExtGnu;
 
18982
class PragmaOnceUnitState;
 
18983
class PragmaOnce;
 
18984
class CMatchSyntax;
 
18985
namespace Puma {
 
18986
 
 
18987
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18988
 
 
18989
#line 18990 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
18990
} // closed Puma
 
18991
 
 
18992
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18993
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
18994
#include "CCExprResolveH.ah"
 
18995
#endif
 
18996
namespace Puma {
 
18997
 
 
18998
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
18999
 
 
19000
#line 19001 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19001
} // closed Puma
 
19002
 
 
19003
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19004
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19005
#include "CExprResolveH.ah"
 
19006
#endif
 
19007
namespace Puma {
 
19008
 
 
19009
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19010
class CT_BinaryExpr : public CT_Call {
 
19011
#line 19012 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19012
  friend class ::CCExprResolve;
 
19013
  friend class ::CExprResolve;
 
19014
  friend class ::WinIfExists;
 
19015
  friend class ::WinImportHandler;
 
19016
  friend class ::WinMacros;
 
19017
  friend class ::WinAsm;
 
19018
  friend class ::WinDeclSpecs;
 
19019
  friend class ::WinMemberExplSpec;
 
19020
  friend class ::WinTypeKeywords;
 
19021
  friend class ::WinFriend;
 
19022
  friend class ::ExtAC;
 
19023
  friend class ::ExtACBuilderCoupling;
 
19024
  friend class ::ExtACSyntaxCoupling;
 
19025
  friend class ::ExtACTree;
 
19026
  friend class ::ExtACKeywords;
 
19027
  friend class ::ExtGnu;
 
19028
  friend class ::PragmaOnceUnitState;
 
19029
  friend class ::PragmaOnce;
 
19030
  friend class ::CMatchSyntax;
 
19031
 
 
19032
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19033
 
 
19034
  CTree *sons[3]; // expr, oper, expr
 
19035
 
 
19036
public:
 
19037
  /** Constructor. 
 
19038
   *  \param l Left hand side of the expression. 
 
19039
   *  \param o The operator token. 
 
19040
   *  \param r Right hand side of the expression. */
 
19041
  CT_BinaryExpr (CTree *l, CTree *o, CTree *r) {
 
19042
    AddSon (sons[0], l); AddSon (sons[1], o); AddSon (sons[2], r);
 
19043
  }
 
19044
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19045
  static const char *NodeId ();
 
19046
  /** Get the name of the node. Can be compared with NodeId(). */
 
19047
  const char *NodeName () const { return NodeId (); }
 
19048
  /** Get the number of sons. */
 
19049
  int Sons () const { return 3; }
 
19050
  /** Get the n-th son.
 
19051
   *  \param n The index of the son.
 
19052
   *  \return The n-th son or NULL. */
 
19053
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
19054
  /** Replace a son.
 
19055
   *  \param old_son The son to replace.
 
19056
   *  \param new_son The new son. */
 
19057
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19058
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
19059
  }
 
19060
   private:
 
19061
  typedef CT_BinaryExpr CCExprResolveExpr;
 
19062
 
 
19063
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19064
 public :
 
19065
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19066
  typedef CT_BinaryExpr CExprResolveExpr;
 
19067
 
 
19068
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19069
 public :
 
19070
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19071
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
19072
  const char *__attr_name (unsigned i) const {
 
19073
    static const char *names[] = { "sons" }; return names[i];
 
19074
  }
 
19075
  const void *__attr (unsigned __i) const {
 
19076
    switch (__i) { case 0: return &sons; default: return 0; }
 
19077
  }
 
19078
#line 1213 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19079
};
 
19080
 
 
19081
/** \class CT_MembPtrExpr CTree.h Puma/CTree.h
 
19082
 *  Tree node representing a member pointer expression.
 
19083
 *  Example: \code a->b \endcode */
 
19084
 
 
19085
#line 19086 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19086
} // closed Puma
 
19087
class CCExprResolve;
 
19088
class CExprResolve;
 
19089
class WinIfExists;
 
19090
class WinImportHandler;
 
19091
class WinMacros;
 
19092
class WinAsm;
 
19093
class WinDeclSpecs;
 
19094
class WinMemberExplSpec;
 
19095
class WinTypeKeywords;
 
19096
class WinFriend;
 
19097
class ExtAC;
 
19098
class ExtACBuilderCoupling;
 
19099
class ExtACSyntaxCoupling;
 
19100
class ExtACTree;
 
19101
class ExtACKeywords;
 
19102
class ExtGnu;
 
19103
class PragmaOnceUnitState;
 
19104
class PragmaOnce;
 
19105
class CMatchSyntax;
 
19106
namespace Puma {
 
19107
 
 
19108
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19109
 
 
19110
#line 19111 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19111
} // closed Puma
 
19112
 
 
19113
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19114
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19115
#include "CCExprResolveH.ah"
 
19116
#endif
 
19117
namespace Puma {
 
19118
 
 
19119
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19120
 
 
19121
#line 19122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19122
} // closed Puma
 
19123
 
 
19124
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19125
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19126
#include "CExprResolveH.ah"
 
19127
#endif
 
19128
namespace Puma {
 
19129
 
 
19130
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19131
class CT_MembPtrExpr : public CT_Expression, public CSemObject {
 
19132
#line 19133 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19133
  friend class ::CCExprResolve;
 
19134
  friend class ::CExprResolve;
 
19135
  friend class ::WinIfExists;
 
19136
  friend class ::WinImportHandler;
 
19137
  friend class ::WinMacros;
 
19138
  friend class ::WinAsm;
 
19139
  friend class ::WinDeclSpecs;
 
19140
  friend class ::WinMemberExplSpec;
 
19141
  friend class ::WinTypeKeywords;
 
19142
  friend class ::WinFriend;
 
19143
  friend class ::ExtAC;
 
19144
  friend class ::ExtACBuilderCoupling;
 
19145
  friend class ::ExtACSyntaxCoupling;
 
19146
  friend class ::ExtACTree;
 
19147
  friend class ::ExtACKeywords;
 
19148
  friend class ::ExtGnu;
 
19149
  friend class ::PragmaOnceUnitState;
 
19150
  friend class ::PragmaOnce;
 
19151
  friend class ::CMatchSyntax;
 
19152
 
 
19153
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19154
 
 
19155
  CTree *sons[3]; // expr, oper, expr
 
19156
  
 
19157
public:
 
19158
  /** Constructor.
 
19159
   *  \param e Expression on which to call the member.
 
19160
   *  \param o The arrow operator token.
 
19161
   *  \param i The member name. */
 
19162
  CT_MembPtrExpr (CTree *e, CTree *o, CTree *i) {
 
19163
    AddSon (sons[0], e); AddSon (sons[1], o); AddSon (sons[2], i);
 
19164
  }
 
19165
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19166
  static const char *NodeId ();
 
19167
  /** Get the name of the node. Can be compared with NodeId(). */
 
19168
  const char *NodeName () const { return NodeId (); }
 
19169
  /** Get the number of sons. */
 
19170
  int Sons () const { return 3; }
 
19171
  /** Get the n-th son.
 
19172
   *  \param n The index of the son.
 
19173
   *  \return The n-th son or NULL. */
 
19174
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
19175
  /** Replace a son.
 
19176
   *  \param old_son The son to replace.
 
19177
   *  \param new_son The new son. */
 
19178
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19179
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
19180
  }
 
19181
   private:
 
19182
  typedef CT_MembPtrExpr CCExprResolveExpr;
 
19183
 
 
19184
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19185
 public :
 
19186
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19187
  typedef CT_MembPtrExpr CExprResolveExpr;
 
19188
 
 
19189
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19190
 public :
 
19191
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19192
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
19193
  const char *__attr_name (unsigned i) const {
 
19194
    static const char *names[] = { "sons" }; return names[i];
 
19195
  }
 
19196
  const void *__attr (unsigned __i) const {
 
19197
    switch (__i) { case 0: return &sons; default: return 0; }
 
19198
  }
 
19199
#line 1245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19200
};
 
19201
 
 
19202
/** \class CT_MembRefExpr CTree.h Puma/CTree.h
 
19203
 *  Tree node representing a member reference expression.
 
19204
 *  Example: \code a.b \endcode */
 
19205
 
 
19206
#line 19207 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19207
} // closed Puma
 
19208
class CCExprResolve;
 
19209
class CExprResolve;
 
19210
class WinIfExists;
 
19211
class WinImportHandler;
 
19212
class WinMacros;
 
19213
class WinAsm;
 
19214
class WinDeclSpecs;
 
19215
class WinMemberExplSpec;
 
19216
class WinTypeKeywords;
 
19217
class WinFriend;
 
19218
class ExtAC;
 
19219
class ExtACBuilderCoupling;
 
19220
class ExtACSyntaxCoupling;
 
19221
class ExtACTree;
 
19222
class ExtACKeywords;
 
19223
class ExtGnu;
 
19224
class PragmaOnceUnitState;
 
19225
class PragmaOnce;
 
19226
class CMatchSyntax;
 
19227
namespace Puma {
 
19228
 
 
19229
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19230
 
 
19231
#line 19232 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19232
} // closed Puma
 
19233
 
 
19234
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19235
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19236
#include "CCExprResolveH.ah"
 
19237
#endif
 
19238
namespace Puma {
 
19239
 
 
19240
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19241
 
 
19242
#line 19243 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19243
} // closed Puma
 
19244
 
 
19245
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19246
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19247
#include "CExprResolveH.ah"
 
19248
#endif
 
19249
namespace Puma {
 
19250
 
 
19251
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19252
class CT_MembRefExpr : public CT_MembPtrExpr {
 
19253
#line 19254 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19254
  friend class ::CCExprResolve;
 
19255
  friend class ::CExprResolve;
 
19256
  friend class ::WinIfExists;
 
19257
  friend class ::WinImportHandler;
 
19258
  friend class ::WinMacros;
 
19259
  friend class ::WinAsm;
 
19260
  friend class ::WinDeclSpecs;
 
19261
  friend class ::WinMemberExplSpec;
 
19262
  friend class ::WinTypeKeywords;
 
19263
  friend class ::WinFriend;
 
19264
  friend class ::ExtAC;
 
19265
  friend class ::ExtACBuilderCoupling;
 
19266
  friend class ::ExtACSyntaxCoupling;
 
19267
  friend class ::ExtACTree;
 
19268
  friend class ::ExtACKeywords;
 
19269
  friend class ::ExtGnu;
 
19270
  friend class ::PragmaOnceUnitState;
 
19271
  friend class ::PragmaOnce;
 
19272
  friend class ::CMatchSyntax;
 
19273
 
 
19274
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19275
 
 
19276
public:
 
19277
  /** Constructor.
 
19278
   *  \param e Expression on which to call the member.
 
19279
   *  \param o The dot operator.
 
19280
   *  \param i The member name. */
 
19281
  CT_MembRefExpr (CTree *e, CTree *o, CTree *i) :
 
19282
    CT_MembPtrExpr (e, o, i) {}
 
19283
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19284
  static const char *NodeId ();
 
19285
  /** Get the name of the node. Can be compared with NodeId(). */
 
19286
  const char *NodeName () const { return NodeId (); }
 
19287
   private:
 
19288
  typedef CT_MembRefExpr CCExprResolveExpr;
 
19289
 
 
19290
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19291
 public :
 
19292
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19293
  typedef CT_MembRefExpr CExprResolveExpr;
 
19294
 
 
19295
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19296
 public :
 
19297
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19298
  typedef AC::TLE __AttrTypes;
 
19299
  const char *__attr_name (unsigned i) const { return 0; }
 
19300
  const void *__attr (unsigned __i) const { return 0; }
 
19301
#line 1262 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19302
};
 
19303
 
 
19304
/** \class CT_UnaryExpr CTree.h Puma/CTree.h
 
19305
 *  Base class for tree nodes representing unary expressions. 
 
19306
 *  Example: \code !a \endcode */
 
19307
 
 
19308
#line 19309 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19309
} // closed Puma
 
19310
class CCExprResolve;
 
19311
class CExprResolve;
 
19312
class WinIfExists;
 
19313
class WinImportHandler;
 
19314
class WinMacros;
 
19315
class WinAsm;
 
19316
class WinDeclSpecs;
 
19317
class WinMemberExplSpec;
 
19318
class WinTypeKeywords;
 
19319
class WinFriend;
 
19320
class ExtAC;
 
19321
class ExtACBuilderCoupling;
 
19322
class ExtACSyntaxCoupling;
 
19323
class ExtACTree;
 
19324
class ExtACKeywords;
 
19325
class ExtGnu;
 
19326
class PragmaOnceUnitState;
 
19327
class PragmaOnce;
 
19328
class CMatchSyntax;
 
19329
namespace Puma {
 
19330
 
 
19331
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19332
 
 
19333
#line 19334 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19334
} // closed Puma
 
19335
 
 
19336
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19337
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19338
#include "CCExprResolveH.ah"
 
19339
#endif
 
19340
namespace Puma {
 
19341
 
 
19342
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19343
 
 
19344
#line 19345 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19345
} // closed Puma
 
19346
 
 
19347
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19348
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19349
#include "CExprResolveH.ah"
 
19350
#endif
 
19351
namespace Puma {
 
19352
 
 
19353
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19354
class CT_UnaryExpr : public CT_Call {
 
19355
#line 19356 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19356
  friend class ::CCExprResolve;
 
19357
  friend class ::CExprResolve;
 
19358
  friend class ::WinIfExists;
 
19359
  friend class ::WinImportHandler;
 
19360
  friend class ::WinMacros;
 
19361
  friend class ::WinAsm;
 
19362
  friend class ::WinDeclSpecs;
 
19363
  friend class ::WinMemberExplSpec;
 
19364
  friend class ::WinTypeKeywords;
 
19365
  friend class ::WinFriend;
 
19366
  friend class ::ExtAC;
 
19367
  friend class ::ExtACBuilderCoupling;
 
19368
  friend class ::ExtACSyntaxCoupling;
 
19369
  friend class ::ExtACTree;
 
19370
  friend class ::ExtACKeywords;
 
19371
  friend class ::ExtGnu;
 
19372
  friend class ::PragmaOnceUnitState;
 
19373
  friend class ::PragmaOnce;
 
19374
  friend class ::CMatchSyntax;
 
19375
 
 
19376
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19377
 
 
19378
  CTree *sons[2]; // oper, expr
 
19379
 
 
19380
public:
 
19381
  /** Constructor.
 
19382
   *  \param o The unary operator.
 
19383
   *  \param e The expression on which the operator is invoked. */
 
19384
  CT_UnaryExpr (CTree *o, CTree *e) { AddSon (sons[0], o); AddSon (sons[1], e); }
 
19385
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19386
  static const char *NodeId ();
 
19387
  /** Get the name of the node. Can be compared with NodeId(). */
 
19388
  const char *NodeName () const { return NodeId (); }
 
19389
  /** Get the number of sons. */
 
19390
  int Sons () const { return 2; }
 
19391
  /** Get the n-th son.
 
19392
   *  \param n The index of the son.
 
19393
   *  \return The n-th son or NULL. */
 
19394
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
19395
  /** Replace a son.
 
19396
   *  \param old_son The son to replace.
 
19397
   *  \param new_son The new son. */
 
19398
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19399
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
19400
  }
 
19401
  /** Get the expression node. */
 
19402
  CTree *Expr () const { return sons[1]; }
 
19403
   private:
 
19404
  typedef CT_UnaryExpr CCExprResolveExpr;
 
19405
 
 
19406
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19407
 public :
 
19408
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19409
  typedef CT_UnaryExpr CExprResolveExpr;
 
19410
 
 
19411
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19412
 public :
 
19413
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19414
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
19415
  const char *__attr_name (unsigned i) const {
 
19416
    static const char *names[] = { "sons" }; return names[i];
 
19417
  }
 
19418
  const void *__attr (unsigned __i) const {
 
19419
    switch (__i) { case 0: return &sons; default: return 0; }
 
19420
  }
 
19421
#line 1293 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19422
};
 
19423
 
 
19424
/** \class CT_PostfixExpr CTree.h Puma/CTree.h
 
19425
 *  Tree node representing a postfix expression.
 
19426
 *  Example: \code a++ \endcode */
 
19427
 
 
19428
#line 19429 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19429
} // closed Puma
 
19430
class CCExprResolve;
 
19431
class CExprResolve;
 
19432
class WinIfExists;
 
19433
class WinImportHandler;
 
19434
class WinMacros;
 
19435
class WinAsm;
 
19436
class WinDeclSpecs;
 
19437
class WinMemberExplSpec;
 
19438
class WinTypeKeywords;
 
19439
class WinFriend;
 
19440
class ExtAC;
 
19441
class ExtACBuilderCoupling;
 
19442
class ExtACSyntaxCoupling;
 
19443
class ExtACTree;
 
19444
class ExtACKeywords;
 
19445
class ExtGnu;
 
19446
class PragmaOnceUnitState;
 
19447
class PragmaOnce;
 
19448
class CMatchSyntax;
 
19449
namespace Puma {
 
19450
 
 
19451
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19452
 
 
19453
#line 19454 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19454
} // closed Puma
 
19455
 
 
19456
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19457
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19458
#include "CCExprResolveH.ah"
 
19459
#endif
 
19460
namespace Puma {
 
19461
 
 
19462
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19463
 
 
19464
#line 19465 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19465
} // closed Puma
 
19466
 
 
19467
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19468
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19469
#include "CExprResolveH.ah"
 
19470
#endif
 
19471
namespace Puma {
 
19472
 
 
19473
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19474
class CT_PostfixExpr : public CT_UnaryExpr {
 
19475
#line 19476 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19476
  friend class ::CCExprResolve;
 
19477
  friend class ::CExprResolve;
 
19478
  friend class ::WinIfExists;
 
19479
  friend class ::WinImportHandler;
 
19480
  friend class ::WinMacros;
 
19481
  friend class ::WinAsm;
 
19482
  friend class ::WinDeclSpecs;
 
19483
  friend class ::WinMemberExplSpec;
 
19484
  friend class ::WinTypeKeywords;
 
19485
  friend class ::WinFriend;
 
19486
  friend class ::ExtAC;
 
19487
  friend class ::ExtACBuilderCoupling;
 
19488
  friend class ::ExtACSyntaxCoupling;
 
19489
  friend class ::ExtACTree;
 
19490
  friend class ::ExtACKeywords;
 
19491
  friend class ::ExtGnu;
 
19492
  friend class ::PragmaOnceUnitState;
 
19493
  friend class ::PragmaOnce;
 
19494
  friend class ::CMatchSyntax;
 
19495
 
 
19496
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19497
 
 
19498
public:
 
19499
  /** Constructor.
 
19500
   *  \param e The expression on which to invoke the operator. 
 
19501
   *  \param o The postfix operator. */
 
19502
  CT_PostfixExpr (CTree *e, CTree *o) :
 
19503
    CT_UnaryExpr (e, o) {}
 
19504
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19505
  static const char *NodeId ();
 
19506
  /** Get the name of the node. Can be compared with NodeId(). */
 
19507
  const char *NodeName () const { return NodeId (); }
 
19508
   private:
 
19509
  typedef CT_PostfixExpr CCExprResolveExpr;
 
19510
 
 
19511
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19512
 public :
 
19513
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19514
  typedef CT_PostfixExpr CExprResolveExpr;
 
19515
 
 
19516
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19517
 public :
 
19518
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19519
  typedef AC::TLE __AttrTypes;
 
19520
  const char *__attr_name (unsigned i) const { return 0; }
 
19521
  const void *__attr (unsigned __i) const { return 0; }
 
19522
#line 1309 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19523
};
 
19524
 
 
19525
/** \class CT_AddrExpr CTree.h Puma/CTree.h
 
19526
 *  Tree node representing an address expression.
 
19527
 *  Example: \code &a \endcode */
 
19528
 
 
19529
#line 19530 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19530
} // closed Puma
 
19531
class CCExprResolve;
 
19532
class CExprResolve;
 
19533
class WinIfExists;
 
19534
class WinImportHandler;
 
19535
class WinMacros;
 
19536
class WinAsm;
 
19537
class WinDeclSpecs;
 
19538
class WinMemberExplSpec;
 
19539
class WinTypeKeywords;
 
19540
class WinFriend;
 
19541
class ExtAC;
 
19542
class ExtACBuilderCoupling;
 
19543
class ExtACSyntaxCoupling;
 
19544
class ExtACTree;
 
19545
class ExtACKeywords;
 
19546
class ExtGnu;
 
19547
class PragmaOnceUnitState;
 
19548
class PragmaOnce;
 
19549
class CMatchSyntax;
 
19550
namespace Puma {
 
19551
 
 
19552
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19553
 
 
19554
#line 19555 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19555
} // closed Puma
 
19556
 
 
19557
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19558
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19559
#include "CCExprResolveH.ah"
 
19560
#endif
 
19561
namespace Puma {
 
19562
 
 
19563
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19564
 
 
19565
#line 19566 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19566
} // closed Puma
 
19567
 
 
19568
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19569
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19570
#include "CExprResolveH.ah"
 
19571
#endif
 
19572
namespace Puma {
 
19573
 
 
19574
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19575
class CT_AddrExpr : public CT_UnaryExpr {
 
19576
#line 19577 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19577
  friend class ::CCExprResolve;
 
19578
  friend class ::CExprResolve;
 
19579
  friend class ::WinIfExists;
 
19580
  friend class ::WinImportHandler;
 
19581
  friend class ::WinMacros;
 
19582
  friend class ::WinAsm;
 
19583
  friend class ::WinDeclSpecs;
 
19584
  friend class ::WinMemberExplSpec;
 
19585
  friend class ::WinTypeKeywords;
 
19586
  friend class ::WinFriend;
 
19587
  friend class ::ExtAC;
 
19588
  friend class ::ExtACBuilderCoupling;
 
19589
  friend class ::ExtACSyntaxCoupling;
 
19590
  friend class ::ExtACTree;
 
19591
  friend class ::ExtACKeywords;
 
19592
  friend class ::ExtGnu;
 
19593
  friend class ::PragmaOnceUnitState;
 
19594
  friend class ::PragmaOnce;
 
19595
  friend class ::CMatchSyntax;
 
19596
 
 
19597
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19598
 
 
19599
public:
 
19600
  /** Constructor.
 
19601
   *  \param o The address operator, i.e. '&'.
 
19602
   *  \param e The expression from which to take the address. */
 
19603
  CT_AddrExpr (CTree *o, CTree *e) :
 
19604
    CT_UnaryExpr (o, e) {}
 
19605
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19606
  static const char *NodeId ();
 
19607
  /** Get the name of the node. Can be compared with NodeId(). */
 
19608
  const char *NodeName () const { return NodeId (); }
 
19609
   private:
 
19610
  typedef CT_AddrExpr CCExprResolveExpr;
 
19611
 
 
19612
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19613
 public :
 
19614
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19615
  typedef CT_AddrExpr CExprResolveExpr;
 
19616
 
 
19617
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19618
 public :
 
19619
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19620
  typedef AC::TLE __AttrTypes;
 
19621
  const char *__attr_name (unsigned i) const { return 0; }
 
19622
  const void *__attr (unsigned __i) const { return 0; }
 
19623
#line 1325 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19624
};
 
19625
 
 
19626
/** \class CT_DerefExpr CTree.h Puma/CTree.h
 
19627
 *  Tree node representing a pointer dereferencing expression.
 
19628
 *  Example: \code *a \endcode */
 
19629
 
 
19630
#line 19631 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19631
} // closed Puma
 
19632
class CCExprResolve;
 
19633
class CExprResolve;
 
19634
class WinIfExists;
 
19635
class WinImportHandler;
 
19636
class WinMacros;
 
19637
class WinAsm;
 
19638
class WinDeclSpecs;
 
19639
class WinMemberExplSpec;
 
19640
class WinTypeKeywords;
 
19641
class WinFriend;
 
19642
class ExtAC;
 
19643
class ExtACBuilderCoupling;
 
19644
class ExtACSyntaxCoupling;
 
19645
class ExtACTree;
 
19646
class ExtACKeywords;
 
19647
class ExtGnu;
 
19648
class PragmaOnceUnitState;
 
19649
class PragmaOnce;
 
19650
class CMatchSyntax;
 
19651
namespace Puma {
 
19652
 
 
19653
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19654
 
 
19655
#line 19656 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19656
} // closed Puma
 
19657
 
 
19658
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19659
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19660
#include "CCExprResolveH.ah"
 
19661
#endif
 
19662
namespace Puma {
 
19663
 
 
19664
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19665
 
 
19666
#line 19667 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19667
} // closed Puma
 
19668
 
 
19669
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19670
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19671
#include "CExprResolveH.ah"
 
19672
#endif
 
19673
namespace Puma {
 
19674
 
 
19675
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19676
class CT_DerefExpr : public CT_UnaryExpr {
 
19677
#line 19678 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19678
  friend class ::CCExprResolve;
 
19679
  friend class ::CExprResolve;
 
19680
  friend class ::WinIfExists;
 
19681
  friend class ::WinImportHandler;
 
19682
  friend class ::WinMacros;
 
19683
  friend class ::WinAsm;
 
19684
  friend class ::WinDeclSpecs;
 
19685
  friend class ::WinMemberExplSpec;
 
19686
  friend class ::WinTypeKeywords;
 
19687
  friend class ::WinFriend;
 
19688
  friend class ::ExtAC;
 
19689
  friend class ::ExtACBuilderCoupling;
 
19690
  friend class ::ExtACSyntaxCoupling;
 
19691
  friend class ::ExtACTree;
 
19692
  friend class ::ExtACKeywords;
 
19693
  friend class ::ExtGnu;
 
19694
  friend class ::PragmaOnceUnitState;
 
19695
  friend class ::PragmaOnce;
 
19696
  friend class ::CMatchSyntax;
 
19697
 
 
19698
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19699
 
 
19700
public:
 
19701
  /** Constructor.
 
19702
   *  \param o The dereferencing operator, i.e. '*'.
 
19703
   *  \param e The expression to dereference. */
 
19704
  CT_DerefExpr (CTree *o, CTree *e) :
 
19705
    CT_UnaryExpr (o, e) {}
 
19706
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19707
  static const char *NodeId ();
 
19708
  /** Get the name of the node. Can be compared with NodeId(). */
 
19709
  const char *NodeName () const { return NodeId (); }
 
19710
   private:
 
19711
  typedef CT_DerefExpr CCExprResolveExpr;
 
19712
 
 
19713
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19714
 public :
 
19715
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19716
  typedef CT_DerefExpr CExprResolveExpr;
 
19717
 
 
19718
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19719
 public :
 
19720
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19721
  typedef AC::TLE __AttrTypes;
 
19722
  const char *__attr_name (unsigned i) const { return 0; }
 
19723
  const void *__attr (unsigned __i) const { return 0; }
 
19724
#line 1341 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19725
};
 
19726
 
 
19727
/** \class CT_DeleteExpr CTree.h Puma/CTree.h
 
19728
 *  Tree node representing a delete expression.
 
19729
 *  Example: \code delete a \endcode */
 
19730
 
 
19731
#line 19732 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19732
} // closed Puma
 
19733
class CCExprResolve;
 
19734
class CExprResolve;
 
19735
class WinIfExists;
 
19736
class WinImportHandler;
 
19737
class WinMacros;
 
19738
class WinAsm;
 
19739
class WinDeclSpecs;
 
19740
class WinMemberExplSpec;
 
19741
class WinTypeKeywords;
 
19742
class WinFriend;
 
19743
class ExtAC;
 
19744
class ExtACBuilderCoupling;
 
19745
class ExtACSyntaxCoupling;
 
19746
class ExtACTree;
 
19747
class ExtACKeywords;
 
19748
class ExtGnu;
 
19749
class PragmaOnceUnitState;
 
19750
class PragmaOnce;
 
19751
class CMatchSyntax;
 
19752
namespace Puma {
 
19753
 
 
19754
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19755
 
 
19756
#line 19757 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19757
} // closed Puma
 
19758
 
 
19759
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19760
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19761
#include "CCExprResolveH.ah"
 
19762
#endif
 
19763
namespace Puma {
 
19764
 
 
19765
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19766
 
 
19767
#line 19768 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19768
} // closed Puma
 
19769
 
 
19770
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19771
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19772
#include "CExprResolveH.ah"
 
19773
#endif
 
19774
namespace Puma {
 
19775
 
 
19776
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19777
class CT_DeleteExpr : public CT_Expression, public CSemObject {
 
19778
#line 19779 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19779
  friend class ::CCExprResolve;
 
19780
  friend class ::CExprResolve;
 
19781
  friend class ::WinIfExists;
 
19782
  friend class ::WinImportHandler;
 
19783
  friend class ::WinMacros;
 
19784
  friend class ::WinAsm;
 
19785
  friend class ::WinDeclSpecs;
 
19786
  friend class ::WinMemberExplSpec;
 
19787
  friend class ::WinTypeKeywords;
 
19788
  friend class ::WinFriend;
 
19789
  friend class ::ExtAC;
 
19790
  friend class ::ExtACBuilderCoupling;
 
19791
  friend class ::ExtACSyntaxCoupling;
 
19792
  friend class ::ExtACTree;
 
19793
  friend class ::ExtACKeywords;
 
19794
  friend class ::ExtGnu;
 
19795
  friend class ::PragmaOnceUnitState;
 
19796
  friend class ::PragmaOnce;
 
19797
  friend class ::CMatchSyntax;
 
19798
 
 
19799
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19800
 
 
19801
  CTree *sons[2]; // oper, expr
 
19802
 
 
19803
public:
 
19804
  /** Constructor.
 
19805
   *  \param op The delete operator.
 
19806
   *  \param e The expression representing the object to delete. */
 
19807
  CT_DeleteExpr (CTree *op, CTree *e) { AddSon (sons[0], op); AddSon (sons[1], e); }
 
19808
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19809
  static const char *NodeId ();
 
19810
  /** Get the name of the node. Can be compared with NodeId(). */
 
19811
  const char *NodeName () const { return NodeId (); }
 
19812
  /** Get the number of sons. */
 
19813
  int Sons () const { return 2; }
 
19814
  /** Get the n-th son.
 
19815
   *  \param n The index of the son.
 
19816
   *  \return The n-th son or NULL. */
 
19817
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
19818
  /** Replace a son.
 
19819
   *  \param old_son The son to replace.
 
19820
   *  \param new_son The new son. */
 
19821
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19822
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
19823
  }
 
19824
  /** Get the expression. */
 
19825
  CTree *Expr () const { return sons[1]; }
 
19826
  /** Get the operator name, i.e. 'delete' or 'delete[]'. */
 
19827
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
19828
  /** Get the semantic information. */
 
19829
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
19830
   private:
 
19831
  typedef CT_DeleteExpr CCExprResolveExpr;
 
19832
 
 
19833
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19834
 public :
 
19835
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19836
  typedef CT_DeleteExpr CExprResolveExpr;
 
19837
 
 
19838
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19839
 public :
 
19840
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19841
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
19842
  const char *__attr_name (unsigned i) const {
 
19843
    static const char *names[] = { "sons" }; return names[i];
 
19844
  }
 
19845
  const void *__attr (unsigned __i) const {
 
19846
    switch (__i) { case 0: return &sons; default: return 0; }
 
19847
  }
 
19848
#line 1376 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19849
};
 
19850
 
 
19851
/** \class CT_NewExpr CTree.h Puma/CTree.h
 
19852
 *  Tree node representing a new expression.
 
19853
 *  Example: \code new A() \endcode */
 
19854
 
 
19855
#line 19856 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19856
} // closed Puma
 
19857
class CCExprResolve;
 
19858
class CExprResolve;
 
19859
class WinIfExists;
 
19860
class WinImportHandler;
 
19861
class WinMacros;
 
19862
class WinAsm;
 
19863
class WinDeclSpecs;
 
19864
class WinMemberExplSpec;
 
19865
class WinTypeKeywords;
 
19866
class WinFriend;
 
19867
class ExtAC;
 
19868
class ExtACBuilderCoupling;
 
19869
class ExtACSyntaxCoupling;
 
19870
class ExtACTree;
 
19871
class ExtACKeywords;
 
19872
class ExtGnu;
 
19873
class PragmaOnceUnitState;
 
19874
class PragmaOnce;
 
19875
class CMatchSyntax;
 
19876
namespace Puma {
 
19877
 
 
19878
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19879
 
 
19880
#line 19881 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19881
} // closed Puma
 
19882
 
 
19883
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19884
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
19885
#include "CCExprResolveH.ah"
 
19886
#endif
 
19887
namespace Puma {
 
19888
 
 
19889
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19890
 
 
19891
#line 19892 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19892
} // closed Puma
 
19893
 
 
19894
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19895
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
19896
#include "CExprResolveH.ah"
 
19897
#endif
 
19898
namespace Puma {
 
19899
 
 
19900
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19901
class CT_NewExpr : public CT_Expression, public CSemObject {
 
19902
#line 19903 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19903
  friend class ::CCExprResolve;
 
19904
  friend class ::CExprResolve;
 
19905
  friend class ::WinIfExists;
 
19906
  friend class ::WinImportHandler;
 
19907
  friend class ::WinMacros;
 
19908
  friend class ::WinAsm;
 
19909
  friend class ::WinDeclSpecs;
 
19910
  friend class ::WinMemberExplSpec;
 
19911
  friend class ::WinTypeKeywords;
 
19912
  friend class ::WinFriend;
 
19913
  friend class ::ExtAC;
 
19914
  friend class ::ExtACBuilderCoupling;
 
19915
  friend class ::ExtACSyntaxCoupling;
 
19916
  friend class ::ExtACTree;
 
19917
  friend class ::ExtACKeywords;
 
19918
  friend class ::ExtGnu;
 
19919
  friend class ::PragmaOnceUnitState;
 
19920
  friend class ::PragmaOnce;
 
19921
  friend class ::CMatchSyntax;
 
19922
 
 
19923
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19924
 
 
19925
  CTree *sons[6]; // oper, placement, open, type, close, init
 
19926
 
 
19927
public:
 
19928
  /** Constructor.
 
19929
   *  \param op The new operator.
 
19930
   *  \param p The optional placement expression.
 
19931
   *  \param o The optional left parenthesis around the type identifier.
 
19932
   *  \param t The type identifier specifying the type of the object to create.
 
19933
   *  \param c The optional right parenthesis around the type identifier.
 
19934
   *  \param i The optional initializer. */
 
19935
  CT_NewExpr (CTree *op, CTree *p, CTree *o, CTree *t, CTree *c, CTree *i) {
 
19936
    AddSon (sons[0], op); AddSon (sons[1], p); AddSon (sons[2], o); 
 
19937
    AddSon (sons[3], t); AddSon (sons[4], c); AddSon (sons[5], i); 
 
19938
  }
 
19939
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
19940
  static const char *NodeId ();
 
19941
  /** Get the name of the node. Can be compared with NodeId(). */
 
19942
  const char *NodeName () const { return NodeId (); }
 
19943
  /** Get the number of sons. */
 
19944
  int Sons () const { return CTree::Sons (sons, 6); }
 
19945
  /** Get the n-th son.
 
19946
   *  \param n The index of the son.
 
19947
   *  \return The n-th son or NULL. */
 
19948
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
19949
  /** Replace a son.
 
19950
   *  \param old_son The son to replace.
 
19951
   *  \param new_son The new son. */
 
19952
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
19953
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
19954
  }
 
19955
  /** Get the operator name. */
 
19956
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
19957
  /** Get the placement expression. */
 
19958
  CT_ExprList *Placement () const { return (CT_ExprList*)sons[1];; }
 
19959
  /** Get the initializer. */
 
19960
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[5]; }
 
19961
  /** Get the type of the object to create. */
 
19962
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[3]; }
 
19963
  /** Get the semantic information. */
 
19964
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
19965
   private:
 
19966
  typedef CT_NewExpr CCExprResolveExpr;
 
19967
 
 
19968
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
19969
 public :
 
19970
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
19971
  typedef CT_NewExpr CExprResolveExpr;
 
19972
 
 
19973
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
19974
 public :
 
19975
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
19976
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
19977
  const char *__attr_name (unsigned i) const {
 
19978
    static const char *names[] = { "sons" }; return names[i];
 
19979
  }
 
19980
  const void *__attr (unsigned __i) const {
 
19981
    switch (__i) { case 0: return &sons; default: return 0; }
 
19982
  }
 
19983
#line 1422 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
19984
};
 
19985
 
 
19986
/** \class CT_IfThenExpr CTree.h Puma/CTree.h
 
19987
 *  Tree node representing an if-then expression.
 
19988
 *  Example: \code a>0?a:b \endcode or \code a?:b \endcode */
 
19989
 
 
19990
#line 19991 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
19991
} // closed Puma
 
19992
class CCExprResolve;
 
19993
class CExprResolve;
 
19994
class WinIfExists;
 
19995
class WinImportHandler;
 
19996
class WinMacros;
 
19997
class WinAsm;
 
19998
class WinDeclSpecs;
 
19999
class WinMemberExplSpec;
 
20000
class WinTypeKeywords;
 
20001
class WinFriend;
 
20002
class ExtAC;
 
20003
class ExtACBuilderCoupling;
 
20004
class ExtACSyntaxCoupling;
 
20005
class ExtACTree;
 
20006
class ExtACKeywords;
 
20007
class ExtGnu;
 
20008
class PragmaOnceUnitState;
 
20009
class PragmaOnce;
 
20010
class CMatchSyntax;
 
20011
namespace Puma {
 
20012
 
 
20013
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20014
 
 
20015
#line 20016 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20016
} // closed Puma
 
20017
 
 
20018
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20019
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20020
#include "CCExprResolveH.ah"
 
20021
#endif
 
20022
namespace Puma {
 
20023
 
 
20024
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20025
 
 
20026
#line 20027 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20027
} // closed Puma
 
20028
 
 
20029
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20030
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20031
#include "CExprResolveH.ah"
 
20032
#endif
 
20033
namespace Puma {
 
20034
 
 
20035
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20036
class CT_IfThenExpr : public CT_Expression {
 
20037
#line 20038 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20038
  friend class ::CCExprResolve;
 
20039
  friend class ::CExprResolve;
 
20040
  friend class ::WinIfExists;
 
20041
  friend class ::WinImportHandler;
 
20042
  friend class ::WinMacros;
 
20043
  friend class ::WinAsm;
 
20044
  friend class ::WinDeclSpecs;
 
20045
  friend class ::WinMemberExplSpec;
 
20046
  friend class ::WinTypeKeywords;
 
20047
  friend class ::WinFriend;
 
20048
  friend class ::ExtAC;
 
20049
  friend class ::ExtACBuilderCoupling;
 
20050
  friend class ::ExtACSyntaxCoupling;
 
20051
  friend class ::ExtACTree;
 
20052
  friend class ::ExtACKeywords;
 
20053
  friend class ::ExtGnu;
 
20054
  friend class ::PragmaOnceUnitState;
 
20055
  friend class ::PragmaOnce;
 
20056
  friend class ::CMatchSyntax;
 
20057
 
 
20058
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20059
 
 
20060
  CTree *sons[5]; // cond, oper, left, colon, right
 
20061
 
 
20062
public:
 
20063
  /** Constructor.
 
20064
   *  \param c1 The condition expression.
 
20065
   *  \param o The question mark operator. 
 
20066
   *  \param l The expression to the left of the colon.
 
20067
   *  \param c2 The colon operator.
 
20068
   *  \param r The expression to the right of the colon. */ 
 
20069
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *l, CTree *c2, CTree *r) {
 
20070
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], l); 
 
20071
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
20072
  }
 
20073
  /** Constructor.
 
20074
   *  \param c1 The condition expression.
 
20075
   *  \param o The question mark operator. 
 
20076
   *  \param c2 The colon operator.
 
20077
   *  \param r The expression to the right of the colon. */ 
 
20078
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *c2, CTree *r) {
 
20079
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], 0); 
 
20080
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
20081
  }
 
20082
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20083
  static const char *NodeId ();
 
20084
  /** Get the name of the node. Can be compared with NodeId(). */
 
20085
  const char *NodeName () const { return NodeId (); }
 
20086
  /** Get the number of sons. */
 
20087
  int Sons () const { return CTree::Sons (sons, 5); }
 
20088
  /** Get the n-th son.
 
20089
   *  \param n The index of the son.
 
20090
   *  \return The n-th son or NULL. */
 
20091
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
20092
  /** Get the condition expression. */
 
20093
  CTree *Condition () const { return sons[0]; }
 
20094
  /** Get the left expression (condition=true). */
 
20095
  CTree *LeftOperand () const { return sons[2]; }
 
20096
  /** Get the right expression (condition=false). */
 
20097
  CTree *RightOperand () const { return sons[4]; }
 
20098
  /** Replace a son.
 
20099
   *  \param old_son The son to replace.
 
20100
   *  \param new_son The new son. */
 
20101
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20102
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
20103
  }
 
20104
   private:
 
20105
  typedef CT_IfThenExpr CCExprResolveExpr;
 
20106
 
 
20107
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20108
 public :
 
20109
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20110
  typedef CT_IfThenExpr CExprResolveExpr;
 
20111
 
 
20112
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20113
 public :
 
20114
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20115
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
20116
  const char *__attr_name (unsigned i) const {
 
20117
    static const char *names[] = { "sons" }; return names[i];
 
20118
  }
 
20119
  const void *__attr (unsigned __i) const {
 
20120
    switch (__i) { case 0: return &sons; default: return 0; }
 
20121
  }
 
20122
#line 1472 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20123
};
 
20124
 
 
20125
/** \class CT_CmpdLiteral CTree.h Puma/CTree.h
 
20126
 *  Tree node representing a compound literal.
 
20127
 *  Example: \code (int[]){1,2,3) \endcode */
 
20128
 
 
20129
#line 20130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20130
} // closed Puma
 
20131
class CCExprResolve;
 
20132
class CExprResolve;
 
20133
class WinIfExists;
 
20134
class WinImportHandler;
 
20135
class WinMacros;
 
20136
class WinAsm;
 
20137
class WinDeclSpecs;
 
20138
class WinMemberExplSpec;
 
20139
class WinTypeKeywords;
 
20140
class WinFriend;
 
20141
class ExtAC;
 
20142
class ExtACBuilderCoupling;
 
20143
class ExtACSyntaxCoupling;
 
20144
class ExtACTree;
 
20145
class ExtACKeywords;
 
20146
class ExtGnu;
 
20147
class PragmaOnceUnitState;
 
20148
class PragmaOnce;
 
20149
class CMatchSyntax;
 
20150
namespace Puma {
 
20151
 
 
20152
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20153
 
 
20154
#line 20155 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20155
} // closed Puma
 
20156
 
 
20157
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20158
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20159
#include "CCExprResolveH.ah"
 
20160
#endif
 
20161
namespace Puma {
 
20162
 
 
20163
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20164
 
 
20165
#line 20166 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20166
} // closed Puma
 
20167
 
 
20168
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20169
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20170
#include "CExprResolveH.ah"
 
20171
#endif
 
20172
namespace Puma {
 
20173
 
 
20174
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20175
class CT_CmpdLiteral : public CT_Expression, public CSemObject {
 
20176
#line 20177 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20177
  friend class ::CCExprResolve;
 
20178
  friend class ::CExprResolve;
 
20179
  friend class ::WinIfExists;
 
20180
  friend class ::WinImportHandler;
 
20181
  friend class ::WinMacros;
 
20182
  friend class ::WinAsm;
 
20183
  friend class ::WinDeclSpecs;
 
20184
  friend class ::WinMemberExplSpec;
 
20185
  friend class ::WinTypeKeywords;
 
20186
  friend class ::WinFriend;
 
20187
  friend class ::ExtAC;
 
20188
  friend class ::ExtACBuilderCoupling;
 
20189
  friend class ::ExtACSyntaxCoupling;
 
20190
  friend class ::ExtACTree;
 
20191
  friend class ::ExtACKeywords;
 
20192
  friend class ::ExtGnu;
 
20193
  friend class ::PragmaOnceUnitState;
 
20194
  friend class ::PragmaOnce;
 
20195
  friend class ::CMatchSyntax;
 
20196
 
 
20197
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20198
 
 
20199
  CTree *sons[4]; // open, type, close, init
 
20200
 
 
20201
public:
 
20202
  /** Constructor.
 
20203
   *  \param r Left parenthesis of the type name.
 
20204
   *  \param t The type name.
 
20205
   *  \param cr Right parenthesis of the type name.
 
20206
   *  \param i The initializer list. */
 
20207
  CT_CmpdLiteral (CTree *r, CTree *t, CTree *cr, CTree *i) {
 
20208
    AddSon (sons[0], r); AddSon (sons[1], t); 
 
20209
    AddSon (sons[2], cr); AddSon (sons[3], i);
 
20210
  }
 
20211
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20212
  static const char *NodeId ();
 
20213
  /** Get the name of the node. Can be compared with NodeId(). */
 
20214
  const char *NodeName () const { return NodeId (); }
 
20215
  /** Get the number of sons. */
 
20216
  int Sons () const { return 4; }
 
20217
  /** Get the n-th son.
 
20218
   *  \param n The index of the son.
 
20219
   *  \return The n-th son or NULL. */
 
20220
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
20221
  /** Replace a son.
 
20222
   *  \param old_son The son to replace.
 
20223
   *  \param new_son The new son. */
 
20224
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20225
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
20226
  }
 
20227
  /** Get the type name. */
 
20228
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
20229
  /** Get the initializer list. */
 
20230
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[3]; }
 
20231
  /** Get the semantic information about the created object. */
 
20232
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
20233
   private:
 
20234
  typedef CT_CmpdLiteral CCExprResolveExpr;
 
20235
 
 
20236
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20237
 public :
 
20238
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20239
  typedef CT_CmpdLiteral CExprResolveExpr;
 
20240
 
 
20241
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20242
 public :
 
20243
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20244
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
20245
  const char *__attr_name (unsigned i) const {
 
20246
    static const char *names[] = { "sons" }; return names[i];
 
20247
  }
 
20248
  const void *__attr (unsigned __i) const {
 
20249
    switch (__i) { case 0: return &sons; default: return 0; }
 
20250
  }
 
20251
#line 1512 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20252
};
 
20253
 
 
20254
/** \class CT_ConstructExpr CTree.h Puma/CTree.h
 
20255
 *  Tree node representing a construct expression.
 
20256
 *  Example: \code std::string("abc") \endcode */
 
20257
 
 
20258
#line 20259 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20259
} // closed Puma
 
20260
class CCExprResolve;
 
20261
class CExprResolve;
 
20262
class WinIfExists;
 
20263
class WinImportHandler;
 
20264
class WinMacros;
 
20265
class WinAsm;
 
20266
class WinDeclSpecs;
 
20267
class WinMemberExplSpec;
 
20268
class WinTypeKeywords;
 
20269
class WinFriend;
 
20270
class ExtAC;
 
20271
class ExtACBuilderCoupling;
 
20272
class ExtACSyntaxCoupling;
 
20273
class ExtACTree;
 
20274
class ExtACKeywords;
 
20275
class ExtGnu;
 
20276
class PragmaOnceUnitState;
 
20277
class PragmaOnce;
 
20278
class CMatchSyntax;
 
20279
namespace Puma {
 
20280
 
 
20281
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20282
 
 
20283
#line 20284 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20284
} // closed Puma
 
20285
 
 
20286
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20287
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20288
#include "CCExprResolveH.ah"
 
20289
#endif
 
20290
namespace Puma {
 
20291
 
 
20292
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20293
 
 
20294
#line 20295 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20295
} // closed Puma
 
20296
 
 
20297
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20298
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20299
#include "CExprResolveH.ah"
 
20300
#endif
 
20301
namespace Puma {
 
20302
 
 
20303
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20304
class CT_ConstructExpr : public CT_Expression, public CSemObject {
 
20305
#line 20306 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20306
  friend class ::CCExprResolve;
 
20307
  friend class ::CExprResolve;
 
20308
  friend class ::WinIfExists;
 
20309
  friend class ::WinImportHandler;
 
20310
  friend class ::WinMacros;
 
20311
  friend class ::WinAsm;
 
20312
  friend class ::WinDeclSpecs;
 
20313
  friend class ::WinMemberExplSpec;
 
20314
  friend class ::WinTypeKeywords;
 
20315
  friend class ::WinFriend;
 
20316
  friend class ::ExtAC;
 
20317
  friend class ::ExtACBuilderCoupling;
 
20318
  friend class ::ExtACSyntaxCoupling;
 
20319
  friend class ::ExtACTree;
 
20320
  friend class ::ExtACKeywords;
 
20321
  friend class ::ExtGnu;
 
20322
  friend class ::PragmaOnceUnitState;
 
20323
  friend class ::PragmaOnce;
 
20324
  friend class ::CMatchSyntax;
 
20325
 
 
20326
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20327
 
 
20328
  CTree *sons[2]; // type, init
 
20329
 
 
20330
public:
 
20331
  /** Constructor.
 
20332
   *  \param t The type name.
 
20333
   *  \param i The initializer list. */
 
20334
  CT_ConstructExpr (CTree *t, CTree *i) { AddSon (sons[0], t); AddSon (sons[1], i); }
 
20335
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20336
  static const char *NodeId ();
 
20337
  /** Get the name of the node. Can be compared with NodeId(). */
 
20338
  const char *NodeName () const { return NodeId (); }
 
20339
  /** Get the number of sons. */
 
20340
  int Sons () const { return 2; }
 
20341
  /** Get the n-th son.
 
20342
   *  \param n The index of the son.
 
20343
   *  \return The n-th son or NULL. */
 
20344
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
20345
  /** Replace a son.
 
20346
   *  \param old_son The son to replace.
 
20347
   *  \param new_son The new son. */
 
20348
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20349
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
20350
  }
 
20351
  /** Get the type name. */
 
20352
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[0]; }
 
20353
  /** Get the initializer. */
 
20354
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
20355
  /** Get the semantic information about the created object. */
 
20356
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
20357
   private:
 
20358
  typedef CT_ConstructExpr CCExprResolveExpr;
 
20359
 
 
20360
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20361
 public :
 
20362
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20363
  typedef CT_ConstructExpr CExprResolveExpr;
 
20364
 
 
20365
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20366
 public :
 
20367
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20368
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
20369
  const char *__attr_name (unsigned i) const {
 
20370
    static const char *names[] = { "sons" }; return names[i];
 
20371
  }
 
20372
  const void *__attr (unsigned __i) const {
 
20373
    switch (__i) { case 0: return &sons; default: return 0; }
 
20374
  }
 
20375
#line 1547 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20376
};
 
20377
 
 
20378
/** \class CT_ThrowExpr CTree.h Puma/CTree.h
 
20379
 *  Tree node representing a throw expression.
 
20380
 *  Example: \code throw std::exception() \endcode */
 
20381
 
 
20382
#line 20383 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20383
} // closed Puma
 
20384
class CCExprResolve;
 
20385
class CExprResolve;
 
20386
class WinIfExists;
 
20387
class WinImportHandler;
 
20388
class WinMacros;
 
20389
class WinAsm;
 
20390
class WinDeclSpecs;
 
20391
class WinMemberExplSpec;
 
20392
class WinTypeKeywords;
 
20393
class WinFriend;
 
20394
class ExtAC;
 
20395
class ExtACBuilderCoupling;
 
20396
class ExtACSyntaxCoupling;
 
20397
class ExtACTree;
 
20398
class ExtACKeywords;
 
20399
class ExtGnu;
 
20400
class PragmaOnceUnitState;
 
20401
class PragmaOnce;
 
20402
class CMatchSyntax;
 
20403
namespace Puma {
 
20404
 
 
20405
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20406
 
 
20407
#line 20408 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20408
} // closed Puma
 
20409
 
 
20410
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20411
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20412
#include "CCExprResolveH.ah"
 
20413
#endif
 
20414
namespace Puma {
 
20415
 
 
20416
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20417
 
 
20418
#line 20419 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20419
} // closed Puma
 
20420
 
 
20421
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20422
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20423
#include "CExprResolveH.ah"
 
20424
#endif
 
20425
namespace Puma {
 
20426
 
 
20427
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20428
class CT_ThrowExpr : public CT_Expression {
 
20429
#line 20430 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20430
  friend class ::CCExprResolve;
 
20431
  friend class ::CExprResolve;
 
20432
  friend class ::WinIfExists;
 
20433
  friend class ::WinImportHandler;
 
20434
  friend class ::WinMacros;
 
20435
  friend class ::WinAsm;
 
20436
  friend class ::WinDeclSpecs;
 
20437
  friend class ::WinMemberExplSpec;
 
20438
  friend class ::WinTypeKeywords;
 
20439
  friend class ::WinFriend;
 
20440
  friend class ::ExtAC;
 
20441
  friend class ::ExtACBuilderCoupling;
 
20442
  friend class ::ExtACSyntaxCoupling;
 
20443
  friend class ::ExtACTree;
 
20444
  friend class ::ExtACKeywords;
 
20445
  friend class ::ExtGnu;
 
20446
  friend class ::PragmaOnceUnitState;
 
20447
  friend class ::PragmaOnce;
 
20448
  friend class ::CMatchSyntax;
 
20449
 
 
20450
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20451
 
 
20452
  CTree *sons[2]; // throw, expr
 
20453
 
 
20454
public:
 
20455
  /** Constructor.
 
20456
   *  \param t The 'throw' keyword.
 
20457
   *  \param e The expression. */
 
20458
  CT_ThrowExpr (CTree *t, CTree *e = (CTree*)0) { AddSon (sons[0], t); AddSon (sons[1], e); }
 
20459
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20460
  static const char *NodeId ();
 
20461
  /** Get the name of the node. Can be compared with NodeId(). */
 
20462
  const char *NodeName () const { return NodeId (); }
 
20463
  /** Get the number of sons. */
 
20464
  int Sons () const { return CTree::Sons (sons, 2); }
 
20465
  /** Get the n-th son.
 
20466
   *  \param n The index of the son.
 
20467
   *  \return The n-th son or NULL. */
 
20468
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
20469
  /** Replace a son.
 
20470
   *  \param old_son The son to replace.
 
20471
   *  \param new_son The new son. */
 
20472
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20473
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
20474
  }
 
20475
  /** Get the expression. */
 
20476
  CTree *Expr () const { return sons[1]; }
 
20477
   private:
 
20478
  typedef CT_ThrowExpr CCExprResolveExpr;
 
20479
 
 
20480
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20481
 public :
 
20482
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20483
  typedef CT_ThrowExpr CExprResolveExpr;
 
20484
 
 
20485
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20486
 public :
 
20487
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20488
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
20489
  const char *__attr_name (unsigned i) const {
 
20490
    static const char *names[] = { "sons" }; return names[i];
 
20491
  }
 
20492
  const void *__attr (unsigned __i) const {
 
20493
    switch (__i) { case 0: return &sons; default: return 0; }
 
20494
  }
 
20495
#line 1578 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20496
};
 
20497
 
 
20498
/** \class CT_IndexExpr CTree.h Puma/CTree.h
 
20499
 *  Tree node representing an index expression. 
 
20500
 *  Example: \code a[1] \endcode */
 
20501
 
 
20502
#line 20503 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20503
} // closed Puma
 
20504
class CCExprResolve;
 
20505
class CExprResolve;
 
20506
class WinIfExists;
 
20507
class WinImportHandler;
 
20508
class WinMacros;
 
20509
class WinAsm;
 
20510
class WinDeclSpecs;
 
20511
class WinMemberExplSpec;
 
20512
class WinTypeKeywords;
 
20513
class WinFriend;
 
20514
class ExtAC;
 
20515
class ExtACBuilderCoupling;
 
20516
class ExtACSyntaxCoupling;
 
20517
class ExtACTree;
 
20518
class ExtACKeywords;
 
20519
class ExtGnu;
 
20520
class PragmaOnceUnitState;
 
20521
class PragmaOnce;
 
20522
class CMatchSyntax;
 
20523
namespace Puma {
 
20524
 
 
20525
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20526
 
 
20527
#line 20528 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20528
} // closed Puma
 
20529
 
 
20530
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20531
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20532
#include "CCExprResolveH.ah"
 
20533
#endif
 
20534
namespace Puma {
 
20535
 
 
20536
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20537
 
 
20538
#line 20539 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20539
} // closed Puma
 
20540
 
 
20541
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20542
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20543
#include "CExprResolveH.ah"
 
20544
#endif
 
20545
namespace Puma {
 
20546
 
 
20547
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20548
class CT_IndexExpr : public CT_Call {
 
20549
#line 20550 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20550
  friend class ::CCExprResolve;
 
20551
  friend class ::CExprResolve;
 
20552
  friend class ::WinIfExists;
 
20553
  friend class ::WinImportHandler;
 
20554
  friend class ::WinMacros;
 
20555
  friend class ::WinAsm;
 
20556
  friend class ::WinDeclSpecs;
 
20557
  friend class ::WinMemberExplSpec;
 
20558
  friend class ::WinTypeKeywords;
 
20559
  friend class ::WinFriend;
 
20560
  friend class ::ExtAC;
 
20561
  friend class ::ExtACBuilderCoupling;
 
20562
  friend class ::ExtACSyntaxCoupling;
 
20563
  friend class ::ExtACTree;
 
20564
  friend class ::ExtACKeywords;
 
20565
  friend class ::ExtGnu;
 
20566
  friend class ::PragmaOnceUnitState;
 
20567
  friend class ::PragmaOnce;
 
20568
  friend class ::CMatchSyntax;
 
20569
 
 
20570
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20571
 
 
20572
  CTree *sons[4]; // expr, open, index, close
 
20573
 
 
20574
public:
 
20575
  /** Constructor.
 
20576
   *  \param e The expression on which to invoke the index operator.
 
20577
   *  \param o Left parenthesis of the index expression.
 
20578
   *  \param i The index expression. 
 
20579
   *  \param c Right parenthesis of the index expression. */
 
20580
  CT_IndexExpr (CTree *e, CTree *o, CTree *i, CTree *c) {
 
20581
    AddSon (sons[0], e); AddSon (sons[1], o); 
 
20582
    AddSon (sons[2], i); AddSon (sons[3], c);
 
20583
  }
 
20584
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20585
  static const char *NodeId ();
 
20586
  /** Get the name of the node. Can be compared with NodeId(). */
 
20587
  const char *NodeName () const { return NodeId (); }
 
20588
  /** Get the number of sons. */
 
20589
  int Sons () const { return 4; }
 
20590
  /** Get the n-th son.
 
20591
   *  \param n The index of the son.
 
20592
   *  \return The n-th son or NULL. */
 
20593
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
20594
  /** Replace a son.
 
20595
   *  \param old_son The son to replace.
 
20596
   *  \param new_son The new son. */
 
20597
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20598
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
20599
  }
 
20600
   private:
 
20601
  typedef CT_IndexExpr CCExprResolveExpr;
 
20602
 
 
20603
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20604
 public :
 
20605
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20606
  typedef CT_IndexExpr CExprResolveExpr;
 
20607
 
 
20608
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20609
 public :
 
20610
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20611
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
20612
  const char *__attr_name (unsigned i) const {
 
20613
    static const char *names[] = { "sons" }; return names[i];
 
20614
  }
 
20615
  const void *__attr (unsigned __i) const {
 
20616
    switch (__i) { case 0: return &sons; default: return 0; }
 
20617
  }
 
20618
#line 1612 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20619
};
 
20620
 
 
20621
/** \class CT_CallExpr CTree.h Puma/CTree.h
 
20622
 *  Tree node representing a function call expression.
 
20623
 *  Example: \code f(i) \endcode */
 
20624
 
 
20625
#line 20626 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20626
} // closed Puma
 
20627
class CCExprResolve;
 
20628
class CExprResolve;
 
20629
class WinIfExists;
 
20630
class WinImportHandler;
 
20631
class WinMacros;
 
20632
class WinAsm;
 
20633
class WinDeclSpecs;
 
20634
class WinMemberExplSpec;
 
20635
class WinTypeKeywords;
 
20636
class WinFriend;
 
20637
class ExtAC;
 
20638
class ExtACBuilderCoupling;
 
20639
class ExtACSyntaxCoupling;
 
20640
class ExtACTree;
 
20641
class ExtACKeywords;
 
20642
class ExtGnu;
 
20643
class PragmaOnceUnitState;
 
20644
class PragmaOnce;
 
20645
class CMatchSyntax;
 
20646
namespace Puma {
 
20647
 
 
20648
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20649
 
 
20650
#line 20651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20651
} // closed Puma
 
20652
 
 
20653
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20654
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20655
#include "CCExprResolveH.ah"
 
20656
#endif
 
20657
namespace Puma {
 
20658
 
 
20659
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20660
 
 
20661
#line 20662 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20662
} // closed Puma
 
20663
 
 
20664
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20665
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20666
#include "CExprResolveH.ah"
 
20667
#endif
 
20668
namespace Puma {
 
20669
 
 
20670
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20671
class CT_CallExpr : public CT_Call {
 
20672
#line 20673 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20673
  friend class ::CCExprResolve;
 
20674
  friend class ::CExprResolve;
 
20675
  friend class ::WinIfExists;
 
20676
  friend class ::WinImportHandler;
 
20677
  friend class ::WinMacros;
 
20678
  friend class ::WinAsm;
 
20679
  friend class ::WinDeclSpecs;
 
20680
  friend class ::WinMemberExplSpec;
 
20681
  friend class ::WinTypeKeywords;
 
20682
  friend class ::WinFriend;
 
20683
  friend class ::ExtAC;
 
20684
  friend class ::ExtACBuilderCoupling;
 
20685
  friend class ::ExtACSyntaxCoupling;
 
20686
  friend class ::ExtACTree;
 
20687
  friend class ::ExtACKeywords;
 
20688
  friend class ::ExtGnu;
 
20689
  friend class ::PragmaOnceUnitState;
 
20690
  friend class ::PragmaOnce;
 
20691
  friend class ::CMatchSyntax;
 
20692
 
 
20693
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20694
 
 
20695
  CTree *sons[2]; // expr, args
 
20696
 
 
20697
public:
 
20698
  /** Constructor.
 
20699
   *  \param e The expression on which the call is invoked. */
 
20700
  CT_CallExpr (CTree *e) { AddSon (sons[0], e); AddSon (sons[1], 0); }
 
20701
  /** Constructor.
 
20702
   *  \param e The expression on which the call is invoked.
 
20703
   *  \param l The argument list of the call. */
 
20704
  CT_CallExpr (CTree *e, CTree *l) { AddSon (sons[0], e); AddSon (sons[1], l); }
 
20705
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20706
  static const char *NodeId ();
 
20707
  /** Get the name of the node. Can be compared with NodeId(). */
 
20708
  const char *NodeName () const { return NodeId (); }
 
20709
  /** Get the number of sons. */
 
20710
  int Sons () const { return CTree::Sons (sons, 2); }
 
20711
  /** Get the n-th son.
 
20712
   *  \param n The index of the son.
 
20713
   *  \return The n-th son or NULL. */
 
20714
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
20715
  /** Replace a son.
 
20716
   *  \param old_son The son to replace.
 
20717
   *  \param new_son The new son. */
 
20718
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20719
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
20720
  }
 
20721
  CTree *Expr () const { return sons[0]; }
 
20722
  CT_ExprList *Arguments () const { return (CT_ExprList*)sons[1]; }
 
20723
   private:
 
20724
  typedef CT_CallExpr CCExprResolveExpr;
 
20725
 
 
20726
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20727
 public :
 
20728
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20729
  typedef CT_CallExpr CExprResolveExpr;
 
20730
 
 
20731
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20732
 public :
 
20733
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20734
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
20735
  const char *__attr_name (unsigned i) const {
 
20736
    static const char *names[] = { "sons" }; return names[i];
 
20737
  }
 
20738
  const void *__attr (unsigned __i) const {
 
20739
    switch (__i) { case 0: return &sons; default: return 0; }
 
20740
  }
 
20741
#line 1646 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20742
};
 
20743
 
 
20744
/** \class CT_CastExpr CTree.h Puma/CTree.h
 
20745
 *  Tree node representing a cast expression.
 
20746
 *  Example: \code (int)a \endcode */
 
20747
 
 
20748
#line 20749 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20749
} // closed Puma
 
20750
class CCExprResolve;
 
20751
class CExprResolve;
 
20752
class WinIfExists;
 
20753
class WinImportHandler;
 
20754
class WinMacros;
 
20755
class WinAsm;
 
20756
class WinDeclSpecs;
 
20757
class WinMemberExplSpec;
 
20758
class WinTypeKeywords;
 
20759
class WinFriend;
 
20760
class ExtAC;
 
20761
class ExtACBuilderCoupling;
 
20762
class ExtACSyntaxCoupling;
 
20763
class ExtACTree;
 
20764
class ExtACKeywords;
 
20765
class ExtGnu;
 
20766
class PragmaOnceUnitState;
 
20767
class PragmaOnce;
 
20768
class CMatchSyntax;
 
20769
namespace Puma {
 
20770
 
 
20771
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20772
 
 
20773
#line 20774 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20774
} // closed Puma
 
20775
 
 
20776
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20777
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20778
#include "CCExprResolveH.ah"
 
20779
#endif
 
20780
namespace Puma {
 
20781
 
 
20782
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20783
 
 
20784
#line 20785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20785
} // closed Puma
 
20786
 
 
20787
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20788
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20789
#include "CExprResolveH.ah"
 
20790
#endif
 
20791
namespace Puma {
 
20792
 
 
20793
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20794
class CT_CastExpr : public CT_Expression {
 
20795
#line 20796 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20796
  friend class ::CCExprResolve;
 
20797
  friend class ::CExprResolve;
 
20798
  friend class ::WinIfExists;
 
20799
  friend class ::WinImportHandler;
 
20800
  friend class ::WinMacros;
 
20801
  friend class ::WinAsm;
 
20802
  friend class ::WinDeclSpecs;
 
20803
  friend class ::WinMemberExplSpec;
 
20804
  friend class ::WinTypeKeywords;
 
20805
  friend class ::WinFriend;
 
20806
  friend class ::ExtAC;
 
20807
  friend class ::ExtACBuilderCoupling;
 
20808
  friend class ::ExtACSyntaxCoupling;
 
20809
  friend class ::ExtACTree;
 
20810
  friend class ::ExtACKeywords;
 
20811
  friend class ::ExtGnu;
 
20812
  friend class ::PragmaOnceUnitState;
 
20813
  friend class ::PragmaOnce;
 
20814
  friend class ::CMatchSyntax;
 
20815
 
 
20816
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20817
 
 
20818
  CTree *sons[4]; // open, type, close, expr
 
20819
 
 
20820
public:
 
20821
  /** Constructor.
 
20822
   *  \param o Left parenthesis of the type name.
 
20823
   *  \param t The type to cast to.
 
20824
   *  \param c Right parenthesis of the type name. 
 
20825
   *  \param e The expression to cast. */
 
20826
  CT_CastExpr (CTree *o, CTree *t, CTree *c, CTree *e) {
 
20827
    AddSon (sons[0], o); AddSon (sons[1], t); 
 
20828
    AddSon (sons[2], c); AddSon (sons[3], e);
 
20829
  }
 
20830
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20831
  static const char *NodeId ();
 
20832
  /** Get the name of the node. Can be compared with NodeId(). */
 
20833
  const char *NodeName () const { return NodeId (); }
 
20834
  /** Get the number of sons. */
 
20835
  int Sons () const { return 4; }
 
20836
  /** Get the n-th son.
 
20837
   *  \param n The index of the son.
 
20838
   *  \return The n-th son or NULL. */
 
20839
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
20840
  /** Replace a son.
 
20841
   *  \param old_son The son to replace.
 
20842
   *  \param new_son The new son. */
 
20843
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20844
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
20845
  }
 
20846
  /** Get the casted expression. */
 
20847
  CTree *Expr () const { return sons[3]; }
 
20848
  /** Get the type to cast to. */
 
20849
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
20850
   private:
 
20851
  typedef CT_CastExpr CCExprResolveExpr;
 
20852
 
 
20853
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20854
 public :
 
20855
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20856
  typedef CT_CastExpr CExprResolveExpr;
 
20857
 
 
20858
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20859
 public :
 
20860
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20861
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
20862
  const char *__attr_name (unsigned i) const {
 
20863
    static const char *names[] = { "sons" }; return names[i];
 
20864
  }
 
20865
  const void *__attr (unsigned __i) const {
 
20866
    switch (__i) { case 0: return &sons; default: return 0; }
 
20867
  }
 
20868
#line 1684 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20869
};
 
20870
 
 
20871
/** \class CT_StaticCast CTree.h Puma/CTree.h
 
20872
 *  Tree node representing a static cast.
 
20873
 *  Example: \code static_cast<int>(a) \endcode */
 
20874
 
 
20875
#line 20876 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20876
} // closed Puma
 
20877
class CCExprResolve;
 
20878
class CExprResolve;
 
20879
class WinIfExists;
 
20880
class WinImportHandler;
 
20881
class WinMacros;
 
20882
class WinAsm;
 
20883
class WinDeclSpecs;
 
20884
class WinMemberExplSpec;
 
20885
class WinTypeKeywords;
 
20886
class WinFriend;
 
20887
class ExtAC;
 
20888
class ExtACBuilderCoupling;
 
20889
class ExtACSyntaxCoupling;
 
20890
class ExtACTree;
 
20891
class ExtACKeywords;
 
20892
class ExtGnu;
 
20893
class PragmaOnceUnitState;
 
20894
class PragmaOnce;
 
20895
class CMatchSyntax;
 
20896
namespace Puma {
 
20897
 
 
20898
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20899
 
 
20900
#line 20901 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20901
} // closed Puma
 
20902
 
 
20903
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20904
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
20905
#include "CCExprResolveH.ah"
 
20906
#endif
 
20907
namespace Puma {
 
20908
 
 
20909
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20910
 
 
20911
#line 20912 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20912
} // closed Puma
 
20913
 
 
20914
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20915
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
20916
#include "CExprResolveH.ah"
 
20917
#endif
 
20918
namespace Puma {
 
20919
 
 
20920
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20921
class CT_StaticCast : public CT_Expression {
 
20922
#line 20923 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
20923
  friend class ::CCExprResolve;
 
20924
  friend class ::CExprResolve;
 
20925
  friend class ::WinIfExists;
 
20926
  friend class ::WinImportHandler;
 
20927
  friend class ::WinMacros;
 
20928
  friend class ::WinAsm;
 
20929
  friend class ::WinDeclSpecs;
 
20930
  friend class ::WinMemberExplSpec;
 
20931
  friend class ::WinTypeKeywords;
 
20932
  friend class ::WinFriend;
 
20933
  friend class ::ExtAC;
 
20934
  friend class ::ExtACBuilderCoupling;
 
20935
  friend class ::ExtACSyntaxCoupling;
 
20936
  friend class ::ExtACTree;
 
20937
  friend class ::ExtACKeywords;
 
20938
  friend class ::ExtGnu;
 
20939
  friend class ::PragmaOnceUnitState;
 
20940
  friend class ::PragmaOnce;
 
20941
  friend class ::CMatchSyntax;
 
20942
 
 
20943
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20944
 
 
20945
  CTree *sons[5]; // cast, open, type, close, expr
 
20946
 
 
20947
public:
 
20948
  /** Constructor.
 
20949
   *  \param cst The cast operator, i.e. 'static_cast'.
 
20950
   *  \param o Left arrow bracket of the type name.
 
20951
   *  \param t The type to cast to.
 
20952
   *  \param c Right array bracket of the type name.
 
20953
   *  \param e The expression to cast. */
 
20954
  CT_StaticCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) {
 
20955
    AddSon (sons[0], cst); AddSon (sons[1], o); AddSon (sons[2], t); 
 
20956
    AddSon (sons[3], c); AddSon (sons[4], e);
 
20957
  }
 
20958
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
20959
  static const char *NodeId ();
 
20960
  /** Get the name of the node. Can be compared with NodeId(). */
 
20961
  const char *NodeName () const { return NodeId (); }
 
20962
  /** Get the number of sons. */
 
20963
  int Sons () const { return 5; }
 
20964
  /** Get the n-th son.
 
20965
   *  \param n The index of the son.
 
20966
   *  \return The n-th son or NULL. */
 
20967
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
20968
  /** Replace a son.
 
20969
   *  \param old_son The son to replace.
 
20970
   *  \param new_son The new son. */
 
20971
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
20972
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
20973
  }
 
20974
  /** Get the casted expression. */
 
20975
  CTree *Expr () const { return sons[4]; }
 
20976
  /** Get the type to cast to. */
 
20977
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
20978
   private:
 
20979
  typedef CT_StaticCast CCExprResolveExpr;
 
20980
 
 
20981
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
20982
 public :
 
20983
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
20984
  typedef CT_StaticCast CExprResolveExpr;
 
20985
 
 
20986
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
20987
 public :
 
20988
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
20989
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
20990
  const char *__attr_name (unsigned i) const {
 
20991
    static const char *names[] = { "sons" }; return names[i];
 
20992
  }
 
20993
  const void *__attr (unsigned __i) const {
 
20994
    switch (__i) { case 0: return &sons; default: return 0; }
 
20995
  }
 
20996
#line 1723 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
20997
};
 
20998
 
 
20999
/** \class CT_ConstCast CTree.h Puma/CTree.h
 
21000
 *  Tree node representing a const cast.
 
21001
 *  Example: \code const_cast<int>(a) \endcode */
 
21002
 
 
21003
#line 21004 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21004
} // closed Puma
 
21005
class CCExprResolve;
 
21006
class CExprResolve;
 
21007
class WinIfExists;
 
21008
class WinImportHandler;
 
21009
class WinMacros;
 
21010
class WinAsm;
 
21011
class WinDeclSpecs;
 
21012
class WinMemberExplSpec;
 
21013
class WinTypeKeywords;
 
21014
class WinFriend;
 
21015
class ExtAC;
 
21016
class ExtACBuilderCoupling;
 
21017
class ExtACSyntaxCoupling;
 
21018
class ExtACTree;
 
21019
class ExtACKeywords;
 
21020
class ExtGnu;
 
21021
class PragmaOnceUnitState;
 
21022
class PragmaOnce;
 
21023
class CMatchSyntax;
 
21024
namespace Puma {
 
21025
 
 
21026
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21027
 
 
21028
#line 21029 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21029
} // closed Puma
 
21030
 
 
21031
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21032
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21033
#include "CCExprResolveH.ah"
 
21034
#endif
 
21035
namespace Puma {
 
21036
 
 
21037
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21038
 
 
21039
#line 21040 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21040
} // closed Puma
 
21041
 
 
21042
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21043
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21044
#include "CExprResolveH.ah"
 
21045
#endif
 
21046
namespace Puma {
 
21047
 
 
21048
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21049
class CT_ConstCast : public CT_StaticCast {
 
21050
#line 21051 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21051
  friend class ::CCExprResolve;
 
21052
  friend class ::CExprResolve;
 
21053
  friend class ::WinIfExists;
 
21054
  friend class ::WinImportHandler;
 
21055
  friend class ::WinMacros;
 
21056
  friend class ::WinAsm;
 
21057
  friend class ::WinDeclSpecs;
 
21058
  friend class ::WinMemberExplSpec;
 
21059
  friend class ::WinTypeKeywords;
 
21060
  friend class ::WinFriend;
 
21061
  friend class ::ExtAC;
 
21062
  friend class ::ExtACBuilderCoupling;
 
21063
  friend class ::ExtACSyntaxCoupling;
 
21064
  friend class ::ExtACTree;
 
21065
  friend class ::ExtACKeywords;
 
21066
  friend class ::ExtGnu;
 
21067
  friend class ::PragmaOnceUnitState;
 
21068
  friend class ::PragmaOnce;
 
21069
  friend class ::CMatchSyntax;
 
21070
 
 
21071
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21072
 
 
21073
public:
 
21074
  /** Constructor.
 
21075
   *  \param cst The cast operator, i.e. 'const_cast'.
 
21076
   *  \param o Left arrow bracket of the type name.
 
21077
   *  \param t The type to cast to.
 
21078
   *  \param c Right array bracket of the type name.
 
21079
   *  \param e The expression to cast. */
 
21080
  CT_ConstCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
21081
    CT_StaticCast (cst, o, t, c, e) {}
 
21082
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21083
  static const char *NodeId ();
 
21084
  /** Get the name of the node. Can be compared with NodeId(). */
 
21085
  const char *NodeName () const { return NodeId (); }
 
21086
   private:
 
21087
  typedef CT_ConstCast CCExprResolveExpr;
 
21088
 
 
21089
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
21090
 public :
 
21091
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
21092
  typedef CT_ConstCast CExprResolveExpr;
 
21093
 
 
21094
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
21095
 public :
 
21096
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
21097
  typedef AC::TLE __AttrTypes;
 
21098
  const char *__attr_name (unsigned i) const { return 0; }
 
21099
  const void *__attr (unsigned __i) const { return 0; }
 
21100
#line 1742 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21101
};
 
21102
 
 
21103
/** \class CT_ReintCast CTree.h Puma/CTree.h
 
21104
 *  Tree node representing a reinterpret cast.
 
21105
 *  Example: \code reinterpret_cast<int>(a) \endcode */
 
21106
 
 
21107
#line 21108 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21108
} // closed Puma
 
21109
class CCExprResolve;
 
21110
class CExprResolve;
 
21111
class WinIfExists;
 
21112
class WinImportHandler;
 
21113
class WinMacros;
 
21114
class WinAsm;
 
21115
class WinDeclSpecs;
 
21116
class WinMemberExplSpec;
 
21117
class WinTypeKeywords;
 
21118
class WinFriend;
 
21119
class ExtAC;
 
21120
class ExtACBuilderCoupling;
 
21121
class ExtACSyntaxCoupling;
 
21122
class ExtACTree;
 
21123
class ExtACKeywords;
 
21124
class ExtGnu;
 
21125
class PragmaOnceUnitState;
 
21126
class PragmaOnce;
 
21127
class CMatchSyntax;
 
21128
namespace Puma {
 
21129
 
 
21130
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21131
 
 
21132
#line 21133 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21133
} // closed Puma
 
21134
 
 
21135
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21136
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21137
#include "CCExprResolveH.ah"
 
21138
#endif
 
21139
namespace Puma {
 
21140
 
 
21141
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21142
 
 
21143
#line 21144 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21144
} // closed Puma
 
21145
 
 
21146
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21147
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21148
#include "CExprResolveH.ah"
 
21149
#endif
 
21150
namespace Puma {
 
21151
 
 
21152
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21153
class CT_ReintCast : public CT_StaticCast {
 
21154
#line 21155 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21155
  friend class ::CCExprResolve;
 
21156
  friend class ::CExprResolve;
 
21157
  friend class ::WinIfExists;
 
21158
  friend class ::WinImportHandler;
 
21159
  friend class ::WinMacros;
 
21160
  friend class ::WinAsm;
 
21161
  friend class ::WinDeclSpecs;
 
21162
  friend class ::WinMemberExplSpec;
 
21163
  friend class ::WinTypeKeywords;
 
21164
  friend class ::WinFriend;
 
21165
  friend class ::ExtAC;
 
21166
  friend class ::ExtACBuilderCoupling;
 
21167
  friend class ::ExtACSyntaxCoupling;
 
21168
  friend class ::ExtACTree;
 
21169
  friend class ::ExtACKeywords;
 
21170
  friend class ::ExtGnu;
 
21171
  friend class ::PragmaOnceUnitState;
 
21172
  friend class ::PragmaOnce;
 
21173
  friend class ::CMatchSyntax;
 
21174
 
 
21175
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21176
 
 
21177
public:
 
21178
  /** Constructor.
 
21179
   *  \param cst The cast operator, i.e. 'reinterpret_cast'.
 
21180
   *  \param o Left arrow bracket of the type name.
 
21181
   *  \param t The type to cast to.
 
21182
   *  \param c Right array bracket of the type name.
 
21183
   *  \param e The expression to cast. */
 
21184
  CT_ReintCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
21185
    CT_StaticCast (cst, o, t, c, e) {}
 
21186
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21187
  static const char *NodeId ();
 
21188
  /** Get the name of the node. Can be compared with NodeId(). */
 
21189
  const char *NodeName () const { return NodeId (); }
 
21190
   private:
 
21191
  typedef CT_ReintCast CCExprResolveExpr;
 
21192
 
 
21193
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
21194
 public :
 
21195
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
21196
  typedef CT_ReintCast CExprResolveExpr;
 
21197
 
 
21198
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
21199
 public :
 
21200
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
21201
  typedef AC::TLE __AttrTypes;
 
21202
  const char *__attr_name (unsigned i) const { return 0; }
 
21203
  const void *__attr (unsigned __i) const { return 0; }
 
21204
#line 1761 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21205
};
 
21206
 
 
21207
/** \class CT_DynamicCast CTree.h Puma/CTree.h
 
21208
 *  Tree node representing a dynamic cast.
 
21209
 *  Example: \code dynamic_cast<int>(a) \endcode */
 
21210
 
 
21211
#line 21212 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21212
} // closed Puma
 
21213
class CCExprResolve;
 
21214
class CExprResolve;
 
21215
class WinIfExists;
 
21216
class WinImportHandler;
 
21217
class WinMacros;
 
21218
class WinAsm;
 
21219
class WinDeclSpecs;
 
21220
class WinMemberExplSpec;
 
21221
class WinTypeKeywords;
 
21222
class WinFriend;
 
21223
class ExtAC;
 
21224
class ExtACBuilderCoupling;
 
21225
class ExtACSyntaxCoupling;
 
21226
class ExtACTree;
 
21227
class ExtACKeywords;
 
21228
class ExtGnu;
 
21229
class PragmaOnceUnitState;
 
21230
class PragmaOnce;
 
21231
class CMatchSyntax;
 
21232
namespace Puma {
 
21233
 
 
21234
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21235
 
 
21236
#line 21237 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21237
} // closed Puma
 
21238
 
 
21239
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21240
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21241
#include "CCExprResolveH.ah"
 
21242
#endif
 
21243
namespace Puma {
 
21244
 
 
21245
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21246
 
 
21247
#line 21248 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21248
} // closed Puma
 
21249
 
 
21250
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21251
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21252
#include "CExprResolveH.ah"
 
21253
#endif
 
21254
namespace Puma {
 
21255
 
 
21256
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21257
class CT_DynamicCast : public CT_StaticCast {
 
21258
#line 21259 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21259
  friend class ::CCExprResolve;
 
21260
  friend class ::CExprResolve;
 
21261
  friend class ::WinIfExists;
 
21262
  friend class ::WinImportHandler;
 
21263
  friend class ::WinMacros;
 
21264
  friend class ::WinAsm;
 
21265
  friend class ::WinDeclSpecs;
 
21266
  friend class ::WinMemberExplSpec;
 
21267
  friend class ::WinTypeKeywords;
 
21268
  friend class ::WinFriend;
 
21269
  friend class ::ExtAC;
 
21270
  friend class ::ExtACBuilderCoupling;
 
21271
  friend class ::ExtACSyntaxCoupling;
 
21272
  friend class ::ExtACTree;
 
21273
  friend class ::ExtACKeywords;
 
21274
  friend class ::ExtGnu;
 
21275
  friend class ::PragmaOnceUnitState;
 
21276
  friend class ::PragmaOnce;
 
21277
  friend class ::CMatchSyntax;
 
21278
 
 
21279
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21280
 
 
21281
public:
 
21282
  /** Constructor.
 
21283
   *  \param cst The cast operator, i.e. 'dynamic_cast'.
 
21284
   *  \param o Left arrow bracket of the type name.
 
21285
   *  \param t The type to cast to.
 
21286
   *  \param c Right array bracket of the type name.
 
21287
   *  \param e The expression to cast. */
 
21288
  CT_DynamicCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
21289
    CT_StaticCast (cst, o, t, c, e) {}
 
21290
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21291
  static const char *NodeId ();
 
21292
  /** Get the name of the node. Can be compared with NodeId(). */
 
21293
  const char *NodeName () const { return NodeId (); }
 
21294
   private:
 
21295
  typedef CT_DynamicCast CCExprResolveExpr;
 
21296
 
 
21297
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
21298
 public :
 
21299
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
21300
  typedef CT_DynamicCast CExprResolveExpr;
 
21301
 
 
21302
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
21303
 public :
 
21304
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
21305
  typedef AC::TLE __AttrTypes;
 
21306
  const char *__attr_name (unsigned i) const { return 0; }
 
21307
  const void *__attr (unsigned __i) const { return 0; }
 
21308
#line 1780 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21309
};
 
21310
 
 
21311
/** \class CT_ImplicitCast CTree.h Puma/CTree.h
 
21312
 *  Tree node representing an implicit cast.
 
21313
 *  Example: 
 
21314
 *  \code 
 
21315
 * int i = 1.2;  // implicit cast from float to int 
 
21316
 *  \endcode */
 
21317
 
 
21318
#line 21319 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21319
} // closed Puma
 
21320
class CCExprResolve;
 
21321
class CExprResolve;
 
21322
class WinIfExists;
 
21323
class WinImportHandler;
 
21324
class WinMacros;
 
21325
class WinAsm;
 
21326
class WinDeclSpecs;
 
21327
class WinMemberExplSpec;
 
21328
class WinTypeKeywords;
 
21329
class WinFriend;
 
21330
class ExtAC;
 
21331
class ExtACBuilderCoupling;
 
21332
class ExtACSyntaxCoupling;
 
21333
class ExtACTree;
 
21334
class ExtACKeywords;
 
21335
class ExtGnu;
 
21336
class PragmaOnceUnitState;
 
21337
class PragmaOnce;
 
21338
class CMatchSyntax;
 
21339
namespace Puma {
 
21340
 
 
21341
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21342
 
 
21343
#line 21344 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21344
} // closed Puma
 
21345
 
 
21346
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21347
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21348
#include "CCExprResolveH.ah"
 
21349
#endif
 
21350
namespace Puma {
 
21351
 
 
21352
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21353
 
 
21354
#line 21355 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21355
} // closed Puma
 
21356
 
 
21357
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21358
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21359
#include "CExprResolveH.ah"
 
21360
#endif
 
21361
namespace Puma {
 
21362
 
 
21363
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21364
class CT_ImplicitCast : public CT_Expression {
 
21365
#line 21366 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21366
  friend class ::CCExprResolve;
 
21367
  friend class ::CExprResolve;
 
21368
  friend class ::WinIfExists;
 
21369
  friend class ::WinImportHandler;
 
21370
  friend class ::WinMacros;
 
21371
  friend class ::WinAsm;
 
21372
  friend class ::WinDeclSpecs;
 
21373
  friend class ::WinMemberExplSpec;
 
21374
  friend class ::WinTypeKeywords;
 
21375
  friend class ::WinFriend;
 
21376
  friend class ::ExtAC;
 
21377
  friend class ::ExtACBuilderCoupling;
 
21378
  friend class ::ExtACSyntaxCoupling;
 
21379
  friend class ::ExtACTree;
 
21380
  friend class ::ExtACKeywords;
 
21381
  friend class ::ExtGnu;
 
21382
  friend class ::PragmaOnceUnitState;
 
21383
  friend class ::PragmaOnce;
 
21384
  friend class ::CMatchSyntax;
 
21385
 
 
21386
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21387
 
 
21388
  CTree *_expr; // casted expression
 
21389
 
 
21390
public:
 
21391
  /** Constructor.
 
21392
   *  \param e The expression that is implicitely casted. */
 
21393
  CT_ImplicitCast (CTree *e) { AddSon (_expr, e); }
 
21394
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21395
  static const char *NodeId ();
 
21396
  /** Get the name of the node. Can be compared with NodeId(). */
 
21397
  const char *NodeName () const { return NodeId (); }
 
21398
  /** Get the number of sons. */
 
21399
  int Sons () const { return 1; }
 
21400
  /** Get the n-th son.
 
21401
   *  \param n The index of the son.
 
21402
   *  \return The n-th son or NULL. */
 
21403
  CTree *Son (int n) const { return n == 0 ? _expr : (CTree*)0; }
 
21404
  /** Get the casted expression. */
 
21405
  CTree *Expr () const { return _expr; }
 
21406
  /** Replace a son.
 
21407
   *  \param old_son The son to replace.
 
21408
   *  \param new_son The new son. */
 
21409
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
21410
   { CTree::ReplaceSon (_expr, old_son, new_son); }
 
21411
   private:
 
21412
  typedef CT_ImplicitCast CCExprResolveExpr;
 
21413
 
 
21414
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
21415
 public :
 
21416
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
21417
  typedef CT_ImplicitCast CExprResolveExpr;
 
21418
 
 
21419
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
21420
 public :
 
21421
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
21422
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
21423
  const char *__attr_name (unsigned i) const {
 
21424
    static const char *names[] = { "_expr" }; return names[i];
 
21425
  }
 
21426
  const void *__attr (unsigned __i) const {
 
21427
    switch (__i) { case 0: return &_expr; default: return 0; }
 
21428
  }
 
21429
#line 1812 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21430
};
 
21431
 
 
21432
/** \class CT_TypeidExpr CTree.h Puma/CTree.h
 
21433
 *  Tree node representing a typeid expression.
 
21434
 *  Example: \code typeid(X) \endcode */
 
21435
 
 
21436
#line 21437 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21437
} // closed Puma
 
21438
class CCExprResolve;
 
21439
class CExprResolve;
 
21440
class WinIfExists;
 
21441
class WinImportHandler;
 
21442
class WinMacros;
 
21443
class WinAsm;
 
21444
class WinDeclSpecs;
 
21445
class WinMemberExplSpec;
 
21446
class WinTypeKeywords;
 
21447
class WinFriend;
 
21448
class ExtAC;
 
21449
class ExtACBuilderCoupling;
 
21450
class ExtACSyntaxCoupling;
 
21451
class ExtACTree;
 
21452
class ExtACKeywords;
 
21453
class ExtGnu;
 
21454
class PragmaOnceUnitState;
 
21455
class PragmaOnce;
 
21456
class CMatchSyntax;
 
21457
namespace Puma {
 
21458
 
 
21459
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21460
 
 
21461
#line 21462 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21462
} // closed Puma
 
21463
 
 
21464
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21465
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21466
#include "CCExprResolveH.ah"
 
21467
#endif
 
21468
namespace Puma {
 
21469
 
 
21470
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21471
 
 
21472
#line 21473 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21473
} // closed Puma
 
21474
 
 
21475
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21476
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21477
#include "CExprResolveH.ah"
 
21478
#endif
 
21479
namespace Puma {
 
21480
 
 
21481
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21482
class CT_TypeidExpr : public CT_Expression {
 
21483
#line 21484 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21484
  friend class ::CCExprResolve;
 
21485
  friend class ::CExprResolve;
 
21486
  friend class ::WinIfExists;
 
21487
  friend class ::WinImportHandler;
 
21488
  friend class ::WinMacros;
 
21489
  friend class ::WinAsm;
 
21490
  friend class ::WinDeclSpecs;
 
21491
  friend class ::WinMemberExplSpec;
 
21492
  friend class ::WinTypeKeywords;
 
21493
  friend class ::WinFriend;
 
21494
  friend class ::ExtAC;
 
21495
  friend class ::ExtACBuilderCoupling;
 
21496
  friend class ::ExtACSyntaxCoupling;
 
21497
  friend class ::ExtACTree;
 
21498
  friend class ::ExtACKeywords;
 
21499
  friend class ::ExtGnu;
 
21500
  friend class ::PragmaOnceUnitState;
 
21501
  friend class ::PragmaOnce;
 
21502
  friend class ::CMatchSyntax;
 
21503
 
 
21504
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21505
 
 
21506
  CTree *sons[4]; // typeid, open, type_id/expr, close
 
21507
 
 
21508
public:
 
21509
  /** Constructor.
 
21510
   *  \param tid The 'typeid' operator.
 
21511
   *  \param o The left parenthesis of the type name or expression.
 
21512
   *  \param e The expression or type name for which to get the type identifier.
 
21513
   *  \param c The right parenthesis of the type name or expression. */
 
21514
  CT_TypeidExpr (CTree *tid, CTree *o, CTree *e, CTree *c) {
 
21515
    AddSon (sons[0], tid); AddSon (sons[1], o); 
 
21516
    AddSon (sons[2], e); AddSon (sons[3], c);
 
21517
  }
 
21518
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21519
  static const char *NodeId ();
 
21520
  /** Get the name of the node. Can be compared with NodeId(). */
 
21521
  const char *NodeName () const { return NodeId (); }
 
21522
  /** Get the number of sons. */
 
21523
  int Sons () const { return 4; }
 
21524
  /** Get the n-th son.
 
21525
   *  \param n The index of the son.
 
21526
   *  \return The n-th son or NULL. */
 
21527
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
21528
  /** Replace a son.
 
21529
   *  \param old_son The son to replace.
 
21530
   *  \param new_son The new son. */
 
21531
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21532
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
21533
  }
 
21534
  /** Get the typeid argument, i.e. the expression or type name for
 
21535
   *  which to get the type identifier. */
 
21536
  CTree *Arg () const { return sons[2]; }
 
21537
   private:
 
21538
  typedef CT_TypeidExpr CCExprResolveExpr;
 
21539
 
 
21540
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
21541
 public :
 
21542
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
21543
  typedef CT_TypeidExpr CExprResolveExpr;
 
21544
 
 
21545
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
21546
 public :
 
21547
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
21548
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
21549
  const char *__attr_name (unsigned i) const {
 
21550
    static const char *names[] = { "sons" }; return names[i];
 
21551
  }
 
21552
  const void *__attr (unsigned __i) const {
 
21553
    switch (__i) { case 0: return &sons; default: return 0; }
 
21554
  }
 
21555
#line 1849 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21556
};
 
21557
 
 
21558
/** \class CT_SizeofExpr CTree.h Puma/CTree.h
 
21559
 *  Tree node representing a sizeof expression.
 
21560
 *  Example: \code sizeof(int*) \endcode */
 
21561
 
 
21562
#line 21563 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21563
} // closed Puma
 
21564
class CCExprResolve;
 
21565
class CExprResolve;
 
21566
class WinIfExists;
 
21567
class WinImportHandler;
 
21568
class WinMacros;
 
21569
class WinAsm;
 
21570
class WinDeclSpecs;
 
21571
class WinMemberExplSpec;
 
21572
class WinTypeKeywords;
 
21573
class WinFriend;
 
21574
class ExtAC;
 
21575
class ExtACBuilderCoupling;
 
21576
class ExtACSyntaxCoupling;
 
21577
class ExtACTree;
 
21578
class ExtACKeywords;
 
21579
class ExtGnu;
 
21580
class PragmaOnceUnitState;
 
21581
class PragmaOnce;
 
21582
class CMatchSyntax;
 
21583
namespace Puma {
 
21584
 
 
21585
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21586
 
 
21587
#line 21588 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21588
} // closed Puma
 
21589
 
 
21590
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21591
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21592
#include "CCExprResolveH.ah"
 
21593
#endif
 
21594
namespace Puma {
 
21595
 
 
21596
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21597
 
 
21598
#line 21599 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21599
} // closed Puma
 
21600
 
 
21601
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21602
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21603
#include "CExprResolveH.ah"
 
21604
#endif
 
21605
namespace Puma {
 
21606
 
 
21607
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21608
class CT_SizeofExpr : public CT_Expression {
 
21609
#line 21610 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21610
  friend class ::CCExprResolve;
 
21611
  friend class ::CExprResolve;
 
21612
  friend class ::WinIfExists;
 
21613
  friend class ::WinImportHandler;
 
21614
  friend class ::WinMacros;
 
21615
  friend class ::WinAsm;
 
21616
  friend class ::WinDeclSpecs;
 
21617
  friend class ::WinMemberExplSpec;
 
21618
  friend class ::WinTypeKeywords;
 
21619
  friend class ::WinFriend;
 
21620
  friend class ::ExtAC;
 
21621
  friend class ::ExtACBuilderCoupling;
 
21622
  friend class ::ExtACSyntaxCoupling;
 
21623
  friend class ::ExtACTree;
 
21624
  friend class ::ExtACKeywords;
 
21625
  friend class ::ExtGnu;
 
21626
  friend class ::PragmaOnceUnitState;
 
21627
  friend class ::PragmaOnce;
 
21628
  friend class ::CMatchSyntax;
 
21629
 
 
21630
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21631
 
 
21632
  CTree *sons[5]; // key, open, type, close, expr
 
21633
 
 
21634
public:
 
21635
  /** Constructor.
 
21636
   *  \param k The 'sizeof' keyword.
 
21637
   *  \param o Left parenthesis around the type name.
 
21638
   *  \param t The type from which to get the size.
 
21639
   *  \param c Right parenthesis around the type name. */
 
21640
  CT_SizeofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
21641
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
21642
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
21643
  }
 
21644
  /** Constructor.
 
21645
   *  \param k The 'sizeof' keyword.
 
21646
   *  \param e The expression from which to get the size. */
 
21647
  CT_SizeofExpr (CTree *k, CTree *e) {
 
21648
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
21649
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
21650
  }
 
21651
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21652
  static const char *NodeId ();
 
21653
  /** Get the name of the node. Can be compared with NodeId(). */
 
21654
  const char *NodeName () const { return NodeId (); }
 
21655
  /** Get the number of sons. */
 
21656
  int Sons () const { return CTree::Sons (sons, 5); }
 
21657
  /** Get the n-th son.
 
21658
   *  \param n The index of the son.
 
21659
   *  \return The n-th son or NULL. */
 
21660
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
21661
  /** Replace a son.
 
21662
   *  \param old_son The son to replace.
 
21663
   *  \param new_son The new son. */
 
21664
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21665
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
21666
  }
 
21667
  /** Get the expression. */
 
21668
  CTree *Expr () const { return sons[4]; }
 
21669
  /** Get the type name. */
 
21670
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
21671
   private:
 
21672
  typedef CT_SizeofExpr CCExprResolveExpr;
 
21673
 
 
21674
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
21675
 public :
 
21676
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
21677
  typedef CT_SizeofExpr CExprResolveExpr;
 
21678
 
 
21679
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
21680
 public :
 
21681
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
21682
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
21683
  const char *__attr_name (unsigned i) const {
 
21684
    static const char *names[] = { "sons" }; return names[i];
 
21685
  }
 
21686
  const void *__attr (unsigned __i) const {
 
21687
    switch (__i) { case 0: return &sons; default: return 0; }
 
21688
  }
 
21689
#line 1894 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21690
};
 
21691
 
 
21692
/** \class CT_AlignofExpr CTree.h Puma/CTree.h
 
21693
 *  Tree node representing an alignof expression.
 
21694
 *  Example: \code __alignof(int) \endcode */
 
21695
 
 
21696
#line 21697 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21697
} // closed Puma
 
21698
class CCExprResolve;
 
21699
class CExprResolve;
 
21700
class WinIfExists;
 
21701
class WinImportHandler;
 
21702
class WinMacros;
 
21703
class WinAsm;
 
21704
class WinDeclSpecs;
 
21705
class WinMemberExplSpec;
 
21706
class WinTypeKeywords;
 
21707
class WinFriend;
 
21708
class ExtAC;
 
21709
class ExtACBuilderCoupling;
 
21710
class ExtACSyntaxCoupling;
 
21711
class ExtACTree;
 
21712
class ExtACKeywords;
 
21713
class ExtGnu;
 
21714
class PragmaOnceUnitState;
 
21715
class PragmaOnce;
 
21716
class CMatchSyntax;
 
21717
namespace Puma {
 
21718
 
 
21719
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21720
 
 
21721
#line 21722 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21722
} // closed Puma
 
21723
 
 
21724
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21725
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21726
#include "CCExprResolveH.ah"
 
21727
#endif
 
21728
namespace Puma {
 
21729
 
 
21730
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21731
 
 
21732
#line 21733 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21733
} // closed Puma
 
21734
 
 
21735
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21736
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21737
#include "CExprResolveH.ah"
 
21738
#endif
 
21739
namespace Puma {
 
21740
 
 
21741
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21742
class CT_AlignofExpr : public CT_Expression {
 
21743
#line 21744 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21744
  friend class ::CCExprResolve;
 
21745
  friend class ::CExprResolve;
 
21746
  friend class ::WinIfExists;
 
21747
  friend class ::WinImportHandler;
 
21748
  friend class ::WinMacros;
 
21749
  friend class ::WinAsm;
 
21750
  friend class ::WinDeclSpecs;
 
21751
  friend class ::WinMemberExplSpec;
 
21752
  friend class ::WinTypeKeywords;
 
21753
  friend class ::WinFriend;
 
21754
  friend class ::ExtAC;
 
21755
  friend class ::ExtACBuilderCoupling;
 
21756
  friend class ::ExtACSyntaxCoupling;
 
21757
  friend class ::ExtACTree;
 
21758
  friend class ::ExtACKeywords;
 
21759
  friend class ::ExtGnu;
 
21760
  friend class ::PragmaOnceUnitState;
 
21761
  friend class ::PragmaOnce;
 
21762
  friend class ::CMatchSyntax;
 
21763
 
 
21764
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21765
 
 
21766
  CTree *sons[5]; // key, open, type, close, expr
 
21767
 
 
21768
public:
 
21769
  /** Constructor.
 
21770
   *  \param k The 'alignof' keyword.
 
21771
   *  \param o Left parenthesis around the type name.
 
21772
   *  \param t The type from which to get the alignment.
 
21773
   *  \param c Right parenthesis around the type name. */
 
21774
  CT_AlignofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
21775
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
21776
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
21777
  }
 
21778
  /** Constructor.
 
21779
   *  \param k The 'alignof' keyword.
 
21780
   *  \param e The expression from which to get the alignment. */
 
21781
  CT_AlignofExpr (CTree *k, CTree *e) {
 
21782
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
21783
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
21784
  }
 
21785
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21786
  static const char *NodeId ();
 
21787
  /** Get the name of the node. Can be compared with NodeId(). */
 
21788
  const char *NodeName () const { return NodeId (); }
 
21789
  /** Get the number of sons. */
 
21790
  int Sons () const { return CTree::Sons (sons, 5); }
 
21791
  /** Get the n-th son.
 
21792
   *  \param n The index of the son.
 
21793
   *  \return The n-th son or NULL. */
 
21794
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
21795
  /** Replace a son.
 
21796
   *  \param old_son The son to replace.
 
21797
   *  \param new_son The new son. */
 
21798
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
21799
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
21800
  }
 
21801
  /** Get the expression. */
 
21802
  CTree *Expr () const { return sons[4]; }
 
21803
  /** Get the type name. */
 
21804
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
21805
   private:
 
21806
  typedef CT_AlignofExpr CCExprResolveExpr;
 
21807
 
 
21808
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
21809
 public :
 
21810
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
21811
  typedef CT_AlignofExpr CExprResolveExpr;
 
21812
 
 
21813
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
21814
 public :
 
21815
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
21816
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
21817
  const char *__attr_name (unsigned i) const {
 
21818
    static const char *names[] = { "sons" }; return names[i];
 
21819
  }
 
21820
  const void *__attr (unsigned __i) const {
 
21821
    switch (__i) { case 0: return &sons; default: return 0; }
 
21822
  }
 
21823
#line 1939 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21824
};
 
21825
 
 
21826
/** \class CT_TypeTraitExpr CTree.h Puma/CTree.h
 
21827
 *  Tree node representing an type trait expression.
 
21828
 *  Example: \code __is_enum(E) \endcode */
 
21829
 
 
21830
#line 21831 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21831
} // closed Puma
 
21832
class CCExprResolve;
 
21833
class CExprResolve;
 
21834
class WinIfExists;
 
21835
class WinImportHandler;
 
21836
class WinMacros;
 
21837
class WinAsm;
 
21838
class WinDeclSpecs;
 
21839
class WinMemberExplSpec;
 
21840
class WinTypeKeywords;
 
21841
class WinFriend;
 
21842
class ExtAC;
 
21843
class ExtACBuilderCoupling;
 
21844
class ExtACSyntaxCoupling;
 
21845
class ExtACTree;
 
21846
class ExtACKeywords;
 
21847
class ExtGnu;
 
21848
class PragmaOnceUnitState;
 
21849
class PragmaOnce;
 
21850
class CMatchSyntax;
 
21851
namespace Puma {
 
21852
 
 
21853
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21854
 
 
21855
#line 21856 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21856
} // closed Puma
 
21857
 
 
21858
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21859
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21860
#include "CCExprResolveH.ah"
 
21861
#endif
 
21862
namespace Puma {
 
21863
 
 
21864
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21865
 
 
21866
#line 21867 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21867
} // closed Puma
 
21868
 
 
21869
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21870
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
21871
#include "CExprResolveH.ah"
 
21872
#endif
 
21873
namespace Puma {
 
21874
 
 
21875
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21876
class CT_TypeTraitExpr : public CT_Expression {
 
21877
#line 21878 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21878
  friend class ::CCExprResolve;
 
21879
  friend class ::CExprResolve;
 
21880
  friend class ::WinIfExists;
 
21881
  friend class ::WinImportHandler;
 
21882
  friend class ::WinMacros;
 
21883
  friend class ::WinAsm;
 
21884
  friend class ::WinDeclSpecs;
 
21885
  friend class ::WinMemberExplSpec;
 
21886
  friend class ::WinTypeKeywords;
 
21887
  friend class ::WinFriend;
 
21888
  friend class ::ExtAC;
 
21889
  friend class ::ExtACBuilderCoupling;
 
21890
  friend class ::ExtACSyntaxCoupling;
 
21891
  friend class ::ExtACTree;
 
21892
  friend class ::ExtACKeywords;
 
21893
  friend class ::ExtGnu;
 
21894
  friend class ::PragmaOnceUnitState;
 
21895
  friend class ::PragmaOnce;
 
21896
  friend class ::CMatchSyntax;
 
21897
 
 
21898
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21899
 
 
21900
  CTree *sons[6]; // key, open, type, comma, type, close
 
21901
 
 
21902
public:
 
21903
  /** Constructor.
 
21904
   *  \param k The type trait keyword.
 
21905
   *  \param o Left parenthesis around the type name.
 
21906
   *  \param t The type from which to get the trait.
 
21907
   *  \param c Right parenthesis around the type name. */
 
21908
  CT_TypeTraitExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
21909
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t);
 
21910
    AddSon (sons[3], 0); AddSon (sons[4], 0); AddSon (sons[5], c);
 
21911
  }
 
21912
  /** Constructor.
 
21913
   *  \param k The type trait keyword.
 
21914
   *  \param o Left parenthesis around the type name.
 
21915
   *  \param t1 The first type from which to get the trait.
 
21916
   *  \param cc The comma between the types.
 
21917
   *  \param t2 The second type from which to get the trait.
 
21918
   *  \param c Right parenthesis around the type name. */
 
21919
  CT_TypeTraitExpr (CTree *k, CTree *o, CTree *t1, CTree *cc, CTree *t2, CTree *c) {
 
21920
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t1);
 
21921
    AddSon (sons[3], cc); AddSon (sons[4], t2); AddSon (sons[5], c);
 
21922
  }
 
21923
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
21924
  static const char *NodeId ();
 
21925
  /** Get the name of the node. Can be compared with NodeId(). */
 
21926
  const char *NodeName () const { return NodeId (); }
 
21927
  /** Get the number of sons. */
 
21928
  int Sons () const { return CTree::Sons (sons, 6); }
 
21929
  /** Get the n-th son.
 
21930
   *  \param n The index of the son.
 
21931
   *  \return The n-th son or NULL. */
 
21932
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
21933
  /** Replace a son.
 
21934
   *  \param old_son The son to replace.
 
21935
   *  \param new_son The new son. */
 
21936
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
21937
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
21938
  }
 
21939
  /** Get the type trait operator. */
 
21940
  int Operator () const { return sons[0]->token ()->type (); }
 
21941
  /** Get the first type. */
 
21942
  CT_NamedType *FirstType () const { return (CT_NamedType*)sons[2]; }
 
21943
  /** Get the second type. */
 
21944
  CT_NamedType *SecondType () const { return (CT_NamedType*)sons[4]; }
 
21945
   private:
 
21946
  typedef CT_TypeTraitExpr CCExprResolveExpr;
 
21947
 
 
21948
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
21949
 public :
 
21950
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
21951
  typedef CT_TypeTraitExpr CExprResolveExpr;
 
21952
 
 
21953
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
21954
 public :
 
21955
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
21956
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
21957
  const char *__attr_name (unsigned i) const {
 
21958
    static const char *names[] = { "sons" }; return names[i];
 
21959
  }
 
21960
  const void *__attr (unsigned __i) const {
 
21961
    switch (__i) { case 0: return &sons; default: return 0; }
 
21962
  }
 
21963
#line 1990 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21964
};
 
21965
 
 
21966
/** \class CT_OffsetofExpr CTree.h Puma/CTree.h
 
21967
 *  Tree node representing an offsetof expression.
 
21968
 *  Example: \code offsetof(Circle,radius) \endcode */
 
21969
 
 
21970
#line 21971 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21971
} // closed Puma
 
21972
class CCExprResolve;
 
21973
class CExprResolve;
 
21974
class WinIfExists;
 
21975
class WinImportHandler;
 
21976
class WinMacros;
 
21977
class WinAsm;
 
21978
class WinDeclSpecs;
 
21979
class WinMemberExplSpec;
 
21980
class WinTypeKeywords;
 
21981
class WinFriend;
 
21982
class ExtAC;
 
21983
class ExtACBuilderCoupling;
 
21984
class ExtACSyntaxCoupling;
 
21985
class ExtACTree;
 
21986
class ExtACKeywords;
 
21987
class ExtGnu;
 
21988
class PragmaOnceUnitState;
 
21989
class PragmaOnce;
 
21990
class CMatchSyntax;
 
21991
namespace Puma {
 
21992
 
 
21993
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
21994
 
 
21995
#line 21996 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
21996
} // closed Puma
 
21997
 
 
21998
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
21999
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
22000
#include "CCExprResolveH.ah"
 
22001
#endif
 
22002
namespace Puma {
 
22003
 
 
22004
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22005
 
 
22006
#line 22007 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22007
} // closed Puma
 
22008
 
 
22009
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
22010
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
22011
#include "CExprResolveH.ah"
 
22012
#endif
 
22013
namespace Puma {
 
22014
 
 
22015
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22016
class CT_OffsetofExpr : public CT_Expression {
 
22017
#line 22018 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22018
  friend class ::CCExprResolve;
 
22019
  friend class ::CExprResolve;
 
22020
  friend class ::WinIfExists;
 
22021
  friend class ::WinImportHandler;
 
22022
  friend class ::WinMacros;
 
22023
  friend class ::WinAsm;
 
22024
  friend class ::WinDeclSpecs;
 
22025
  friend class ::WinMemberExplSpec;
 
22026
  friend class ::WinTypeKeywords;
 
22027
  friend class ::WinFriend;
 
22028
  friend class ::ExtAC;
 
22029
  friend class ::ExtACBuilderCoupling;
 
22030
  friend class ::ExtACSyntaxCoupling;
 
22031
  friend class ::ExtACTree;
 
22032
  friend class ::ExtACKeywords;
 
22033
  friend class ::ExtGnu;
 
22034
  friend class ::PragmaOnceUnitState;
 
22035
  friend class ::PragmaOnce;
 
22036
  friend class ::CMatchSyntax;
 
22037
 
 
22038
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22039
 
 
22040
  CTree *sons[6]; // key, open, type, comma, member, close
 
22041
 
 
22042
public:
 
22043
  /** Constructor.
 
22044
   *  \param k The 'offsetof' keyword.
 
22045
   *  \param o Left parenthesis around the parameters.
 
22046
   *  \param t The type containing the member.
 
22047
   *  \param co The comma between type and member.
 
22048
   *  \param m The member for which to get the offset.
 
22049
   *  \param c Right parenthesis around the parameters. */
 
22050
  CT_OffsetofExpr (CTree *k, CTree *o, CTree *t, CTree *co, CTree *m, CTree *c) {
 
22051
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
22052
    AddSon (sons[3], co); AddSon (sons[4], m); AddSon (sons[5], c);
 
22053
  }
 
22054
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22055
  static const char *NodeId ();
 
22056
  /** Get the name of the node. Can be compared with NodeId(). */
 
22057
  const char *NodeName () const { return NodeId (); }
 
22058
  /** Get the number of sons. */
 
22059
  int Sons () const { return 6; }
 
22060
  /** Get the n-th son.
 
22061
   *  \param n The index of the son.
 
22062
   *  \return The n-th son or NULL. */
 
22063
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
22064
  /** Replace a son.
 
22065
   *  \param old_son The son to replace.
 
22066
   *  \param new_son The new son. */
 
22067
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22068
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
22069
  }
 
22070
  /** Get the typename. */
 
22071
  CTree *TypeName () const { return sons[2]; }
 
22072
  /** Get the member designator. */
 
22073
  CT_DesignatorSeq *MemberDesignator () const { return (CT_DesignatorSeq*)sons[4]; }
 
22074
   private:
 
22075
  typedef CT_OffsetofExpr CCExprResolveExpr;
 
22076
 
 
22077
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
22078
 public :
 
22079
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
22080
  typedef CT_OffsetofExpr CExprResolveExpr;
 
22081
 
 
22082
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
22083
 public :
 
22084
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
22085
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
22086
  const char *__attr_name (unsigned i) const {
 
22087
    static const char *names[] = { "sons" }; return names[i];
 
22088
  }
 
22089
  const void *__attr (unsigned __i) const {
 
22090
    switch (__i) { case 0: return &sons; default: return 0; }
 
22091
  }
 
22092
#line 2030 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22093
};
 
22094
 
 
22095
/** \class CT_IndexDesignator CTree.h Puma/CTree.h
 
22096
 *  Tree node representing an index designator.
 
22097
 *  Example: \code [1] \endcode */
 
22098
 
 
22099
#line 22100 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22100
} // closed Puma
 
22101
class CCExprResolve;
 
22102
class CExprResolve;
 
22103
class WinIfExists;
 
22104
class WinImportHandler;
 
22105
class WinMacros;
 
22106
class WinAsm;
 
22107
class WinDeclSpecs;
 
22108
class WinMemberExplSpec;
 
22109
class WinTypeKeywords;
 
22110
class WinFriend;
 
22111
class ExtAC;
 
22112
class ExtACBuilderCoupling;
 
22113
class ExtACSyntaxCoupling;
 
22114
class ExtACTree;
 
22115
class ExtACKeywords;
 
22116
class ExtGnu;
 
22117
class PragmaOnceUnitState;
 
22118
class PragmaOnce;
 
22119
class CMatchSyntax;
 
22120
namespace Puma {
 
22121
 
 
22122
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22123
 
 
22124
#line 22125 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22125
} // closed Puma
 
22126
 
 
22127
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
22128
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
22129
#include "CCExprResolveH.ah"
 
22130
#endif
 
22131
namespace Puma {
 
22132
 
 
22133
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22134
 
 
22135
#line 22136 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22136
} // closed Puma
 
22137
 
 
22138
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
22139
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
22140
#include "CExprResolveH.ah"
 
22141
#endif
 
22142
namespace Puma {
 
22143
 
 
22144
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22145
class CT_IndexDesignator : public CT_Expression {
 
22146
#line 22147 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22147
  friend class ::CCExprResolve;
 
22148
  friend class ::CExprResolve;
 
22149
  friend class ::WinIfExists;
 
22150
  friend class ::WinImportHandler;
 
22151
  friend class ::WinMacros;
 
22152
  friend class ::WinAsm;
 
22153
  friend class ::WinDeclSpecs;
 
22154
  friend class ::WinMemberExplSpec;
 
22155
  friend class ::WinTypeKeywords;
 
22156
  friend class ::WinFriend;
 
22157
  friend class ::ExtAC;
 
22158
  friend class ::ExtACBuilderCoupling;
 
22159
  friend class ::ExtACSyntaxCoupling;
 
22160
  friend class ::ExtACTree;
 
22161
  friend class ::ExtACKeywords;
 
22162
  friend class ::ExtGnu;
 
22163
  friend class ::PragmaOnceUnitState;
 
22164
  friend class ::PragmaOnce;
 
22165
  friend class ::CMatchSyntax;
 
22166
 
 
22167
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22168
 
 
22169
  CTree *sons[3]; // open, index, close
 
22170
 
 
22171
public:
 
22172
  /** Constructor.
 
22173
   *  \param o Left bracket of the index designator.
 
22174
   *  \param i The index expression.
 
22175
   *  \param c Right bracket of the index designator. */
 
22176
  CT_IndexDesignator (CTree *o, CTree *i, CTree *c) {
 
22177
    AddSon (sons[0], o); AddSon (sons[1], i); AddSon (sons[2], c);
 
22178
  }
 
22179
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22180
  static const char *NodeId ();
 
22181
  /** Get the name of the node. Can be compared with NodeId(). */
 
22182
  const char *NodeName () const { return NodeId (); }
 
22183
  /** Get the number of sons. */
 
22184
  int Sons () const { return 3; }
 
22185
  /** Get the n-th son.
 
22186
   *  \param n The index of the son.
 
22187
   *  \return The n-th son or NULL. */
 
22188
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
22189
  /** Replace a son.
 
22190
   *  \param old_son The son to replace.
 
22191
   *  \param new_son The new son. */
 
22192
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22193
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
22194
  }
 
22195
   private:
 
22196
  typedef CT_IndexDesignator CCExprResolveExpr;
 
22197
 
 
22198
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
22199
 public :
 
22200
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
22201
  typedef CT_IndexDesignator CExprResolveExpr;
 
22202
 
 
22203
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
22204
 public :
 
22205
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
22206
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
22207
  const char *__attr_name (unsigned i) const {
 
22208
    static const char *names[] = { "sons" }; return names[i];
 
22209
  }
 
22210
  const void *__attr (unsigned __i) const {
 
22211
    switch (__i) { case 0: return &sons; default: return 0; }
 
22212
  }
 
22213
#line 2062 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22214
};
 
22215
 
 
22216
/** \class CT_MembDesignator CTree.h Puma/CTree.h
 
22217
 *  Tree node representing a member designator.
 
22218
 *  Example: \code .a \endcode */
 
22219
 
 
22220
#line 22221 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22221
} // closed Puma
 
22222
class CCExprResolve;
 
22223
class CExprResolve;
 
22224
class WinIfExists;
 
22225
class WinImportHandler;
 
22226
class WinMacros;
 
22227
class WinAsm;
 
22228
class WinDeclSpecs;
 
22229
class WinMemberExplSpec;
 
22230
class WinTypeKeywords;
 
22231
class WinFriend;
 
22232
class ExtAC;
 
22233
class ExtACBuilderCoupling;
 
22234
class ExtACSyntaxCoupling;
 
22235
class ExtACTree;
 
22236
class ExtACKeywords;
 
22237
class ExtGnu;
 
22238
class PragmaOnceUnitState;
 
22239
class PragmaOnce;
 
22240
class CMatchSyntax;
 
22241
namespace Puma {
 
22242
 
 
22243
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22244
 
 
22245
#line 22246 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22246
} // closed Puma
 
22247
 
 
22248
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
22249
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
22250
#include "CCExprResolveH.ah"
 
22251
#endif
 
22252
namespace Puma {
 
22253
 
 
22254
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22255
 
 
22256
#line 22257 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22257
} // closed Puma
 
22258
 
 
22259
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
22260
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
22261
#include "CExprResolveH.ah"
 
22262
#endif
 
22263
namespace Puma {
 
22264
 
 
22265
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22266
class CT_MembDesignator : public CT_Expression {
 
22267
#line 22268 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22268
  friend class ::CCExprResolve;
 
22269
  friend class ::CExprResolve;
 
22270
  friend class ::WinIfExists;
 
22271
  friend class ::WinImportHandler;
 
22272
  friend class ::WinMacros;
 
22273
  friend class ::WinAsm;
 
22274
  friend class ::WinDeclSpecs;
 
22275
  friend class ::WinMemberExplSpec;
 
22276
  friend class ::WinTypeKeywords;
 
22277
  friend class ::WinFriend;
 
22278
  friend class ::ExtAC;
 
22279
  friend class ::ExtACBuilderCoupling;
 
22280
  friend class ::ExtACSyntaxCoupling;
 
22281
  friend class ::ExtACTree;
 
22282
  friend class ::ExtACKeywords;
 
22283
  friend class ::ExtGnu;
 
22284
  friend class ::PragmaOnceUnitState;
 
22285
  friend class ::PragmaOnce;
 
22286
  friend class ::CMatchSyntax;
 
22287
 
 
22288
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22289
 
 
22290
  CTree *sons[2]; // dot, member
 
22291
 
 
22292
public:
 
22293
  /** Constructor.
 
22294
   *  \param d The dot before the member name.
 
22295
   *  \param m The member name. */
 
22296
  CT_MembDesignator (CTree *d, CTree *m) { AddSon (sons[0], d); AddSon (sons[1], m); }
 
22297
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22298
  static const char *NodeId ();
 
22299
  /** Get the name of the node. Can be compared with NodeId(). */
 
22300
  const char *NodeName () const { return NodeId (); }
 
22301
  /** Get the number of sons. */
 
22302
  int Sons () const { return 2; }
 
22303
  /** Get the n-th son.
 
22304
   *  \param n The index of the son.
 
22305
   *  \return The n-th son or NULL. */
 
22306
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
22307
  /** Replace a son.
 
22308
   *  \param old_son The son to replace.
 
22309
   *  \param new_son The new son. */
 
22310
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22311
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
22312
  }
 
22313
   private:
 
22314
  typedef CT_MembDesignator CCExprResolveExpr;
 
22315
 
 
22316
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
22317
 public :
 
22318
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
22319
  typedef CT_MembDesignator CExprResolveExpr;
 
22320
 
 
22321
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
22322
 public :
 
22323
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
22324
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
22325
  const char *__attr_name (unsigned i) const {
 
22326
    static const char *names[] = { "sons" }; return names[i];
 
22327
  }
 
22328
  const void *__attr (unsigned __i) const {
 
22329
    switch (__i) { case 0: return &sons; default: return 0; }
 
22330
  }
 
22331
#line 2091 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22332
};
 
22333
 
 
22334
/** \class CT_DesignatorSeq CTree.h Puma/CTree.h
 
22335
 *  Tree node representing a designator sequence.
 
22336
 *  Example: \code .a.b.c \endcode */
 
22337
 
 
22338
#line 22339 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22339
} // closed Puma
 
22340
class CCExprResolve;
 
22341
class CExprResolve;
 
22342
class WinIfExists;
 
22343
class WinImportHandler;
 
22344
class WinMacros;
 
22345
class WinAsm;
 
22346
class WinDeclSpecs;
 
22347
class WinMemberExplSpec;
 
22348
class WinTypeKeywords;
 
22349
class WinFriend;
 
22350
class ExtAC;
 
22351
class ExtACBuilderCoupling;
 
22352
class ExtACSyntaxCoupling;
 
22353
class ExtACTree;
 
22354
class ExtACKeywords;
 
22355
class ExtGnu;
 
22356
class PragmaOnceUnitState;
 
22357
class PragmaOnce;
 
22358
class CMatchSyntax;
 
22359
namespace Puma {
 
22360
 
 
22361
#line 2096 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22362
class CT_DesignatorSeq : public CT_List, public CSemValue {
 
22363
#line 22364 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22364
  friend class ::CCExprResolve;
 
22365
  friend class ::CExprResolve;
 
22366
  friend class ::WinIfExists;
 
22367
  friend class ::WinImportHandler;
 
22368
  friend class ::WinMacros;
 
22369
  friend class ::WinAsm;
 
22370
  friend class ::WinDeclSpecs;
 
22371
  friend class ::WinMemberExplSpec;
 
22372
  friend class ::WinTypeKeywords;
 
22373
  friend class ::WinFriend;
 
22374
  friend class ::ExtAC;
 
22375
  friend class ::ExtACBuilderCoupling;
 
22376
  friend class ::ExtACSyntaxCoupling;
 
22377
  friend class ::ExtACTree;
 
22378
  friend class ::ExtACKeywords;
 
22379
  friend class ::ExtGnu;
 
22380
  friend class ::PragmaOnceUnitState;
 
22381
  friend class ::PragmaOnce;
 
22382
  friend class ::CMatchSyntax;
 
22383
 
 
22384
#line 2096 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22385
 
 
22386
public:
 
22387
  /** Constructor.
 
22388
   *  \param size Initial number of designators. */
 
22389
  CT_DesignatorSeq (int size = 1) : CT_List (size, 2) {}
 
22390
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22391
  static const char *NodeId ();
 
22392
  /** Get the name of the node. Can be compared with NodeId(). */
 
22393
  const char *NodeName () const { return NodeId (); }
 
22394
 
 
22395
  /** Get the type of the entity to initialize. */
 
22396
  CTypeInfo *Type () const { return type; }
 
22397
  /** Get the value of the entity to initialize. */
 
22398
  CExprValue *Value () const { return value; }
 
22399
  /** Get the semantic value object. */
 
22400
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
22401
public:
 
22402
  typedef AC::TLE __AttrTypes;
 
22403
  const char *__attr_name (unsigned i) const { return 0; }
 
22404
  const void *__attr (unsigned __i) const { return 0; }
 
22405
#line 2112 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22406
};
 
22407
 
 
22408
/*****************************************************************************/
 
22409
/*                                                                           */
 
22410
/*                         Declaration specifiers                            */
 
22411
/*                                                                           */
 
22412
/*****************************************************************************/
 
22413
 
 
22414
/** \class CT_DeclSpec CTree.h Puma/CTree.h
 
22415
 *  Base class for all tree nodes representing declaration specifiers. */
 
22416
 
 
22417
#line 22418 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22418
} // closed Puma
 
22419
class CCExprResolve;
 
22420
class CExprResolve;
 
22421
class WinIfExists;
 
22422
class WinImportHandler;
 
22423
class WinMacros;
 
22424
class WinAsm;
 
22425
class WinDeclSpecs;
 
22426
class WinMemberExplSpec;
 
22427
class WinTypeKeywords;
 
22428
class WinFriend;
 
22429
class ExtAC;
 
22430
class ExtACBuilderCoupling;
 
22431
class ExtACSyntaxCoupling;
 
22432
class ExtACTree;
 
22433
class ExtACKeywords;
 
22434
class ExtGnu;
 
22435
class PragmaOnceUnitState;
 
22436
class PragmaOnce;
 
22437
class CMatchSyntax;
 
22438
namespace Puma {
 
22439
 
 
22440
#line 2122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22441
class CT_DeclSpec : public CTree {
 
22442
#line 22443 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22443
  friend class ::CCExprResolve;
 
22444
  friend class ::CExprResolve;
 
22445
  friend class ::WinIfExists;
 
22446
  friend class ::WinImportHandler;
 
22447
  friend class ::WinMacros;
 
22448
  friend class ::WinAsm;
 
22449
  friend class ::WinDeclSpecs;
 
22450
  friend class ::WinMemberExplSpec;
 
22451
  friend class ::WinTypeKeywords;
 
22452
  friend class ::WinFriend;
 
22453
  friend class ::ExtAC;
 
22454
  friend class ::ExtACBuilderCoupling;
 
22455
  friend class ::ExtACSyntaxCoupling;
 
22456
  friend class ::ExtACTree;
 
22457
  friend class ::ExtACKeywords;
 
22458
  friend class ::ExtGnu;
 
22459
  friend class ::PragmaOnceUnitState;
 
22460
  friend class ::PragmaOnce;
 
22461
  friend class ::CMatchSyntax;
 
22462
 
 
22463
#line 2122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22464
 
 
22465
protected:
 
22466
  /** Constructor. */
 
22467
  CT_DeclSpec () {}
 
22468
public:
 
22469
  typedef AC::TLE __AttrTypes;
 
22470
  const char *__attr_name (unsigned i) const { return 0; }
 
22471
  const void *__attr (unsigned __i) const { return 0; }
 
22472
#line 2126 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22473
};
 
22474
 
 
22475
/** \class CT_PrimDeclSpec CTree.h Puma/CTree.h
 
22476
 *  Tree node representing a primitive declaration specifier. */
 
22477
 
 
22478
#line 22479 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22479
} // closed Puma
 
22480
class CCExprResolve;
 
22481
class CExprResolve;
 
22482
class WinIfExists;
 
22483
class WinImportHandler;
 
22484
class WinMacros;
 
22485
class WinAsm;
 
22486
class WinDeclSpecs;
 
22487
class WinMemberExplSpec;
 
22488
class WinTypeKeywords;
 
22489
class WinFriend;
 
22490
class ExtAC;
 
22491
class ExtACBuilderCoupling;
 
22492
class ExtACSyntaxCoupling;
 
22493
class ExtACTree;
 
22494
class ExtACKeywords;
 
22495
class ExtGnu;
 
22496
class PragmaOnceUnitState;
 
22497
class PragmaOnce;
 
22498
class CMatchSyntax;
 
22499
namespace Puma {
 
22500
 
 
22501
#line 2130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22502
class CT_PrimDeclSpec : public CT_DeclSpec {
 
22503
#line 22504 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22504
  friend class ::CCExprResolve;
 
22505
  friend class ::CExprResolve;
 
22506
  friend class ::WinIfExists;
 
22507
  friend class ::WinImportHandler;
 
22508
  friend class ::WinMacros;
 
22509
  friend class ::WinAsm;
 
22510
  friend class ::WinDeclSpecs;
 
22511
  friend class ::WinMemberExplSpec;
 
22512
  friend class ::WinTypeKeywords;
 
22513
  friend class ::WinFriend;
 
22514
  friend class ::ExtAC;
 
22515
  friend class ::ExtACBuilderCoupling;
 
22516
  friend class ::ExtACSyntaxCoupling;
 
22517
  friend class ::ExtACTree;
 
22518
  friend class ::ExtACKeywords;
 
22519
  friend class ::ExtGnu;
 
22520
  friend class ::PragmaOnceUnitState;
 
22521
  friend class ::PragmaOnce;
 
22522
  friend class ::CMatchSyntax;
 
22523
 
 
22524
#line 2130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22525
 
 
22526
public:
 
22527
  /** Declaration specifier types. */
 
22528
  enum Type { 
 
22529
    PDS_FRIEND,    /** friend */
 
22530
    PDS_TYPEDEF,   /** typedef */
 
22531
    PDS_AUTO,      /** auto */
 
22532
    PDS_REGISTER,  /** register */
 
22533
    PDS_STATIC,    /** static */
 
22534
    PDS_EXTERN,    /** extern */
 
22535
    PDS_MUTABLE,   /** mutable */
 
22536
    PDS_INLINE,    /** inline */
 
22537
    PDS_VIRTUAL,   /** virtual */
 
22538
    PDS_EXPLICIT,  /** explicit */
 
22539
    PDS_CONST,     /** const */
 
22540
    PDS_VOLATILE,  /** volatile */
 
22541
    PDS_RESTRICT,  /** restrict */
 
22542
    PDS_CHAR,      /** char */
 
22543
    PDS_WCHAR_T,   /** wchar_t */
 
22544
    PDS_BOOL,      /** bool */
 
22545
    PDS_C_BOOL,    /** _Bool */
 
22546
    PDS_SHORT,     /** short */
 
22547
    PDS_INT,       /** int */
 
22548
    PDS_LONG,      /** long */
 
22549
    PDS_SIGNED,    /** signed */
 
22550
    PDS_UNSIGNED,  /** unsigned */
 
22551
    PDS_FLOAT,     /** float */
 
22552
    PDS_DOUBLE,    /** double */
 
22553
    PDS_VOID,      /** void */
 
22554
    // GNU C++ specific storage specifier
 
22555
    PDS_THREAD,    /** __thread */
 
22556
    // AspectC++ specific type specifier
 
22557
    PDS_UNKNOWN_T, /** unknown_t */
 
22558
    // Win specific declaration specifiers
 
22559
    PDS_CDECL,     /** __cdecl */
 
22560
    PDS_STDCALL,   /** __stdcall */
 
22561
    PDS_FASTCALL,  /** __fastcall */
 
22562
    PDS_INT64,     /** __int64 */
 
22563
    PDS_UNKNOWN,   /** Unknown declaration specifier. */
 
22564
    PDS_NUM        /** Number of declaration specifier types. */
 
22565
  };
 
22566
 
 
22567
private:
 
22568
  Type _type;
 
22569
  CTree *_token; // has to be a CT_Token
 
22570
 
 
22571
  void determine_type ();
 
22572
 
 
22573
public:
 
22574
  /** Constructor.
 
22575
   *  \param t The token containing the declaration specifier. */
 
22576
  CT_PrimDeclSpec (CT_Token *t) { AddSon (_token, (CTree*)t); determine_type (); }
 
22577
  /** Constructor.
 
22578
   *  \param t The declaration specifier type. */
 
22579
  CT_PrimDeclSpec (Type t) : _token (0) { _type = t; }
 
22580
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22581
  static const char *NodeId ();
 
22582
  /** Get the name of the node. Can be compared with NodeId(). */
 
22583
  const char *NodeName () const { return NodeId (); }
 
22584
  /** Get the number of sons. */
 
22585
  int Sons () const { return _token ? 1 : 0; }
 
22586
  /** Get the n-th son.
 
22587
   *  \param n The index of the son.
 
22588
   *  \return The n-th son or NULL. */
 
22589
  CTree *Son (int n) const 
 
22590
   { return (n == 0) ? _token : (CTree*)0; }
 
22591
  /** Get the textual representation of the declaration specifier.
 
22592
   *  \return The string representation or " ". */
 
22593
  const char *SpecText () const 
 
22594
   { return _token ? _token->token ()->text () : " "; }
 
22595
  /** Get the declaration specifier type. */
 
22596
  Type SpecType () const { return _type; }
 
22597
  /** Number of declaration specifier types. */
 
22598
  static const int NumTypes = PDS_NUM;
 
22599
  /** Replace a son.
 
22600
   *  \param old_son The son to replace.
 
22601
   *  \param new_son The new son. */
 
22602
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22603
    CTree::ReplaceSon (_token, (CTree*)old_son, (CTree*)new_son);
 
22604
    determine_type ();
 
22605
  }
 
22606
public:
 
22607
  typedef AC::TL<Puma::CT_PrimDeclSpec::Type,AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
22608
  const char *__attr_name (unsigned i) const {
 
22609
    static const char *names[] = { "_type", "_token" }; return names[i];
 
22610
  }
 
22611
  const void *__attr (unsigned __i) const {
 
22612
    switch (__i) { case 33: return &_type; case 34: return &_token; default: return 0; }
 
22613
  }
 
22614
#line 2211 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22615
};
 
22616
 
 
22617
/** \class CT_NamedType CTree.h Puma/CTree.h
 
22618
 *  Tree node representing a named type.
 
22619
 *  Example: \code (int*)a \endcode where int* is a 
 
22620
 *  type with a generated name. */
 
22621
 
 
22622
#line 22623 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22623
} // closed Puma
 
22624
class CCExprResolve;
 
22625
class CExprResolve;
 
22626
class WinIfExists;
 
22627
class WinImportHandler;
 
22628
class WinMacros;
 
22629
class WinAsm;
 
22630
class WinDeclSpecs;
 
22631
class WinMemberExplSpec;
 
22632
class WinTypeKeywords;
 
22633
class WinFriend;
 
22634
class ExtAC;
 
22635
class ExtACBuilderCoupling;
 
22636
class ExtACSyntaxCoupling;
 
22637
class ExtACTree;
 
22638
class ExtACKeywords;
 
22639
class ExtGnu;
 
22640
class PragmaOnceUnitState;
 
22641
class PragmaOnce;
 
22642
class CMatchSyntax;
 
22643
namespace Puma {
 
22644
 
 
22645
#line 2217 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22646
class CT_NamedType : public CT_DeclSpec, public CSemObject {
 
22647
#line 22648 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22648
  friend class ::CCExprResolve;
 
22649
  friend class ::CExprResolve;
 
22650
  friend class ::WinIfExists;
 
22651
  friend class ::WinImportHandler;
 
22652
  friend class ::WinMacros;
 
22653
  friend class ::WinAsm;
 
22654
  friend class ::WinDeclSpecs;
 
22655
  friend class ::WinMemberExplSpec;
 
22656
  friend class ::WinTypeKeywords;
 
22657
  friend class ::WinFriend;
 
22658
  friend class ::ExtAC;
 
22659
  friend class ::ExtACBuilderCoupling;
 
22660
  friend class ::ExtACSyntaxCoupling;
 
22661
  friend class ::ExtACTree;
 
22662
  friend class ::ExtACKeywords;
 
22663
  friend class ::ExtGnu;
 
22664
  friend class ::PragmaOnceUnitState;
 
22665
  friend class ::PragmaOnce;
 
22666
  friend class ::CMatchSyntax;
 
22667
 
 
22668
#line 2217 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22669
 
 
22670
  CTree *sons[2]; // declspecs, declarator
 
22671
 
 
22672
public:
 
22673
  /** Constructor.
 
22674
   *  \param dss The declaration specifier sequence of the type.
 
22675
   *  \param d The type declarator. */
 
22676
  CT_NamedType (CTree *dss, CTree *d) { AddSon (sons[0], dss); AddSon (sons[1], d); }
 
22677
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22678
  static const char *NodeId ();
 
22679
  /** Get the name of the node. Can be compared with NodeId(). */
 
22680
  const char *NodeName () const { return NodeId (); }
 
22681
  /** Get the number of sons. */
 
22682
  int Sons () const { return CTree::Sons (sons, 2); }
 
22683
  /** Get the n-th son.
 
22684
   *  \param n The index of the son.
 
22685
   *  \return The n-th son or NULL. */
 
22686
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
22687
  /** Get the declarator. */
 
22688
  CTree *Declarator () const { return sons[1]; }
 
22689
  /** Replace a son.
 
22690
   *  \param old_son The son to replace.
 
22691
   *  \param new_son The new son. */
 
22692
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22693
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
22694
  }
 
22695
  /** Get the semantic information about the created temporary object. */
 
22696
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
22697
public:
 
22698
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
22699
  const char *__attr_name (unsigned i) const {
 
22700
    static const char *names[] = { "sons" }; return names[i];
 
22701
  }
 
22702
  const void *__attr (unsigned __i) const {
 
22703
    switch (__i) { case 0: return &sons; default: return 0; }
 
22704
  }
 
22705
#line 2245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22706
};
 
22707
      
 
22708
/** \class CT_ClassSpec CTree.h Puma/CTree.h
 
22709
 *  Tree node representing a class specifier.
 
22710
 *  Example: \code class X \endcode */
 
22711
 
 
22712
#line 22713 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22713
} // closed Puma
 
22714
class CCExprResolve;
 
22715
class CExprResolve;
 
22716
class WinIfExists;
 
22717
class WinImportHandler;
 
22718
class WinMacros;
 
22719
class WinAsm;
 
22720
class WinDeclSpecs;
 
22721
class WinMemberExplSpec;
 
22722
class WinTypeKeywords;
 
22723
class WinFriend;
 
22724
class ExtAC;
 
22725
class ExtACBuilderCoupling;
 
22726
class ExtACSyntaxCoupling;
 
22727
class ExtACTree;
 
22728
class ExtACKeywords;
 
22729
class ExtGnu;
 
22730
class PragmaOnceUnitState;
 
22731
class PragmaOnce;
 
22732
class CMatchSyntax;
 
22733
namespace Puma {
 
22734
 
 
22735
#line 2250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22736
class CT_ClassSpec : public CT_DeclSpec, public CSemObject {
 
22737
#line 22738 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22738
  friend class ::CCExprResolve;
 
22739
  friend class ::CExprResolve;
 
22740
  friend class ::WinIfExists;
 
22741
  friend class ::WinImportHandler;
 
22742
  friend class ::WinMacros;
 
22743
  friend class ::WinAsm;
 
22744
  friend class ::WinDeclSpecs;
 
22745
  friend class ::WinMemberExplSpec;
 
22746
  friend class ::WinTypeKeywords;
 
22747
  friend class ::WinFriend;
 
22748
  friend class ::ExtAC;
 
22749
  friend class ::ExtACBuilderCoupling;
 
22750
  friend class ::ExtACSyntaxCoupling;
 
22751
  friend class ::ExtACTree;
 
22752
  friend class ::ExtACKeywords;
 
22753
  friend class ::ExtGnu;
 
22754
  friend class ::PragmaOnceUnitState;
 
22755
  friend class ::PragmaOnce;
 
22756
  friend class ::CMatchSyntax;
 
22757
 
 
22758
#line 2250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22759
 
 
22760
  CTree *sons[2]; // key, name
 
22761
  
 
22762
public:
 
22763
  /** Constructor.
 
22764
   *  \param k The 'class' or 'struct' keyword.
 
22765
   *  \param n The class name. */
 
22766
  CT_ClassSpec (CTree *k, CTree *n) { AddSon (sons[0], k); AddSon (sons[1], n); }
 
22767
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22768
  static const char *NodeId ();
 
22769
  /** Get the name of the node. Can be compared with NodeId(). */
 
22770
  const char *NodeName () const { return NodeId (); }
 
22771
  /** Get the number of sons. */
 
22772
  int Sons () const { return 2; }
 
22773
  /** Get the n-th son.
 
22774
   *  \param n The index of the son.
 
22775
   *  \return The n-th son or NULL. */
 
22776
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
22777
  /** Get the class name. */
 
22778
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
22779
  /** Get the semantic information about the class. */
 
22780
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
22781
  /** Replace a son.
 
22782
   *  \param old_son The son to replace.
 
22783
   *  \param new_son The new son. */
 
22784
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
22785
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
22786
  }
 
22787
public:
 
22788
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
22789
  const char *__attr_name (unsigned i) const {
 
22790
    static const char *names[] = { "sons" }; return names[i];
 
22791
  }
 
22792
  const void *__attr (unsigned __i) const {
 
22793
    switch (__i) { case 0: return &sons; default: return 0; }
 
22794
  }
 
22795
#line 2278 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22796
};
 
22797
 
 
22798
/** \class CT_UnionSpec CTree.h Puma/CTree.h
 
22799
 *  Tree node representing a union specifier.
 
22800
 *  Example: \code union X \endcode */
 
22801
 
 
22802
#line 22803 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22803
} // closed Puma
 
22804
class CCExprResolve;
 
22805
class CExprResolve;
 
22806
class WinIfExists;
 
22807
class WinImportHandler;
 
22808
class WinMacros;
 
22809
class WinAsm;
 
22810
class WinDeclSpecs;
 
22811
class WinMemberExplSpec;
 
22812
class WinTypeKeywords;
 
22813
class WinFriend;
 
22814
class ExtAC;
 
22815
class ExtACBuilderCoupling;
 
22816
class ExtACSyntaxCoupling;
 
22817
class ExtACTree;
 
22818
class ExtACKeywords;
 
22819
class ExtGnu;
 
22820
class PragmaOnceUnitState;
 
22821
class PragmaOnce;
 
22822
class CMatchSyntax;
 
22823
namespace Puma {
 
22824
 
 
22825
#line 2283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22826
class CT_UnionSpec : public CT_ClassSpec {
 
22827
#line 22828 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22828
  friend class ::CCExprResolve;
 
22829
  friend class ::CExprResolve;
 
22830
  friend class ::WinIfExists;
 
22831
  friend class ::WinImportHandler;
 
22832
  friend class ::WinMacros;
 
22833
  friend class ::WinAsm;
 
22834
  friend class ::WinDeclSpecs;
 
22835
  friend class ::WinMemberExplSpec;
 
22836
  friend class ::WinTypeKeywords;
 
22837
  friend class ::WinFriend;
 
22838
  friend class ::ExtAC;
 
22839
  friend class ::ExtACBuilderCoupling;
 
22840
  friend class ::ExtACSyntaxCoupling;
 
22841
  friend class ::ExtACTree;
 
22842
  friend class ::ExtACKeywords;
 
22843
  friend class ::ExtGnu;
 
22844
  friend class ::PragmaOnceUnitState;
 
22845
  friend class ::PragmaOnce;
 
22846
  friend class ::CMatchSyntax;
 
22847
 
 
22848
#line 2283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22849
 
 
22850
public:
 
22851
  /** Constructor.
 
22852
   *  \param k The 'union' keyword.
 
22853
   *  \param n The name of the union. */
 
22854
  CT_UnionSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
22855
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22856
  static const char *NodeId ();
 
22857
  /** Get the name of the node. Can be compared with NodeId(). */
 
22858
  const char *NodeName () const { return NodeId (); }
 
22859
public:
 
22860
  typedef AC::TLE __AttrTypes;
 
22861
  const char *__attr_name (unsigned i) const { return 0; }
 
22862
  const void *__attr (unsigned __i) const { return 0; }
 
22863
#line 2293 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22864
};
 
22865
 
 
22866
/** \class CT_EnumSpec CTree.h Puma/CTree.h
 
22867
 *  Tree node representing an enumeration specifier.
 
22868
 *  Example: \code enum X \endcode */
 
22869
 
 
22870
#line 22871 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22871
} // closed Puma
 
22872
class CCExprResolve;
 
22873
class CExprResolve;
 
22874
class WinIfExists;
 
22875
class WinImportHandler;
 
22876
class WinMacros;
 
22877
class WinAsm;
 
22878
class WinDeclSpecs;
 
22879
class WinMemberExplSpec;
 
22880
class WinTypeKeywords;
 
22881
class WinFriend;
 
22882
class ExtAC;
 
22883
class ExtACBuilderCoupling;
 
22884
class ExtACSyntaxCoupling;
 
22885
class ExtACTree;
 
22886
class ExtACKeywords;
 
22887
class ExtGnu;
 
22888
class PragmaOnceUnitState;
 
22889
class PragmaOnce;
 
22890
class CMatchSyntax;
 
22891
namespace Puma {
 
22892
 
 
22893
#line 2298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22894
class CT_EnumSpec : public CT_ClassSpec {
 
22895
#line 22896 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22896
  friend class ::CCExprResolve;
 
22897
  friend class ::CExprResolve;
 
22898
  friend class ::WinIfExists;
 
22899
  friend class ::WinImportHandler;
 
22900
  friend class ::WinMacros;
 
22901
  friend class ::WinAsm;
 
22902
  friend class ::WinDeclSpecs;
 
22903
  friend class ::WinMemberExplSpec;
 
22904
  friend class ::WinTypeKeywords;
 
22905
  friend class ::WinFriend;
 
22906
  friend class ::ExtAC;
 
22907
  friend class ::ExtACBuilderCoupling;
 
22908
  friend class ::ExtACSyntaxCoupling;
 
22909
  friend class ::ExtACTree;
 
22910
  friend class ::ExtACKeywords;
 
22911
  friend class ::ExtGnu;
 
22912
  friend class ::PragmaOnceUnitState;
 
22913
  friend class ::PragmaOnce;
 
22914
  friend class ::CMatchSyntax;
 
22915
 
 
22916
#line 2298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22917
 
 
22918
public:
 
22919
  /** Constructor.
 
22920
   *  \param k The 'enum' keyword. 
 
22921
   *  \param n The name of the enumeration. */
 
22922
  CT_EnumSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
22923
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22924
  static const char *NodeId ();
 
22925
  /** Get the name of the node. Can be compared with NodeId(). */
 
22926
  const char *NodeName () const { return NodeId (); }
 
22927
public:
 
22928
  typedef AC::TLE __AttrTypes;
 
22929
  const char *__attr_name (unsigned i) const { return 0; }
 
22930
  const void *__attr (unsigned __i) const { return 0; }
 
22931
#line 2308 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22932
};
 
22933
 
 
22934
/** \class CT_ExceptionSpec CTree.h Puma/CTree.h
 
22935
 *  Tree node representing an exception specifier.
 
22936
 *  Example: \code throw(std::exception) \endcode */
 
22937
 
 
22938
#line 22939 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22939
} // closed Puma
 
22940
class CCExprResolve;
 
22941
class CExprResolve;
 
22942
class WinIfExists;
 
22943
class WinImportHandler;
 
22944
class WinMacros;
 
22945
class WinAsm;
 
22946
class WinDeclSpecs;
 
22947
class WinMemberExplSpec;
 
22948
class WinTypeKeywords;
 
22949
class WinFriend;
 
22950
class ExtAC;
 
22951
class ExtACBuilderCoupling;
 
22952
class ExtACSyntaxCoupling;
 
22953
class ExtACTree;
 
22954
class ExtACKeywords;
 
22955
class ExtGnu;
 
22956
class PragmaOnceUnitState;
 
22957
class PragmaOnce;
 
22958
class CMatchSyntax;
 
22959
namespace Puma {
 
22960
 
 
22961
#line 2313 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22962
class CT_ExceptionSpec : public CT_DeclSpec {
 
22963
#line 22964 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
22964
  friend class ::CCExprResolve;
 
22965
  friend class ::CExprResolve;
 
22966
  friend class ::WinIfExists;
 
22967
  friend class ::WinImportHandler;
 
22968
  friend class ::WinMacros;
 
22969
  friend class ::WinAsm;
 
22970
  friend class ::WinDeclSpecs;
 
22971
  friend class ::WinMemberExplSpec;
 
22972
  friend class ::WinTypeKeywords;
 
22973
  friend class ::WinFriend;
 
22974
  friend class ::ExtAC;
 
22975
  friend class ::ExtACBuilderCoupling;
 
22976
  friend class ::ExtACSyntaxCoupling;
 
22977
  friend class ::ExtACTree;
 
22978
  friend class ::ExtACKeywords;
 
22979
  friend class ::ExtGnu;
 
22980
  friend class ::PragmaOnceUnitState;
 
22981
  friend class ::PragmaOnce;
 
22982
  friend class ::CMatchSyntax;
 
22983
 
 
22984
#line 2313 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
22985
 
 
22986
  CTree *sons[2]; // throw, type_id_list
 
22987
  
 
22988
public:
 
22989
  /** Constructor.
 
22990
   *  \param k The 'throw' keyword.
 
22991
   *  \param l The type list for the exception type to throw. */
 
22992
  CT_ExceptionSpec (CTree *k, CTree *l) { AddSon (sons[0], k); AddSon (sons[1], l); }
 
22993
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
22994
  static const char *NodeId ();
 
22995
  /** Get the name of the node. Can be compared with NodeId(). */
 
22996
  const char *NodeName () const { return NodeId (); }
 
22997
  /** Get the number of sons. */
 
22998
  int Sons () const { return 2; }
 
22999
  /** Get the n-th son.
 
23000
   *  \param n The index of the son.
 
23001
   *  \return The n-th son or NULL. */
 
23002
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
23003
  /** Get the exception type list. */
 
23004
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
23005
  /** Replace a son.
 
23006
   *  \param old_son The son to replace.
 
23007
   *  \param new_son The new son. */
 
23008
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23009
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
23010
  }
 
23011
public:
 
23012
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
23013
  const char *__attr_name (unsigned i) const {
 
23014
    static const char *names[] = { "sons" }; return names[i];
 
23015
  }
 
23016
  const void *__attr (unsigned __i) const {
 
23017
    switch (__i) { case 0: return &sons; default: return 0; }
 
23018
  }
 
23019
#line 2339 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23020
};
 
23021
 
 
23022
/*****************************************************************************/
 
23023
/*                                                                           */
 
23024
/*                              Declarations                                 */
 
23025
/*                                                                           */
 
23026
/*****************************************************************************/
 
23027
 
 
23028
/** \class CT_Decl CTree.h Puma/CTree.h
 
23029
 *  Base class for all tree nodes representing declarations. */
 
23030
 
 
23031
#line 23032 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23032
} // closed Puma
 
23033
class CCExprResolve;
 
23034
class CExprResolve;
 
23035
class WinIfExists;
 
23036
class WinImportHandler;
 
23037
class WinMacros;
 
23038
class WinAsm;
 
23039
class WinDeclSpecs;
 
23040
class WinMemberExplSpec;
 
23041
class WinTypeKeywords;
 
23042
class WinFriend;
 
23043
class ExtAC;
 
23044
class ExtACBuilderCoupling;
 
23045
class ExtACSyntaxCoupling;
 
23046
class ExtACTree;
 
23047
class ExtACKeywords;
 
23048
class ExtGnu;
 
23049
class PragmaOnceUnitState;
 
23050
class PragmaOnce;
 
23051
class CMatchSyntax;
 
23052
namespace Puma {
 
23053
 
 
23054
#line 2349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23055
class CT_Decl : public CTree {
 
23056
#line 23057 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23057
  friend class ::CCExprResolve;
 
23058
  friend class ::CExprResolve;
 
23059
  friend class ::WinIfExists;
 
23060
  friend class ::WinImportHandler;
 
23061
  friend class ::WinMacros;
 
23062
  friend class ::WinAsm;
 
23063
  friend class ::WinDeclSpecs;
 
23064
  friend class ::WinMemberExplSpec;
 
23065
  friend class ::WinTypeKeywords;
 
23066
  friend class ::WinFriend;
 
23067
  friend class ::ExtAC;
 
23068
  friend class ::ExtACBuilderCoupling;
 
23069
  friend class ::ExtACSyntaxCoupling;
 
23070
  friend class ::ExtACTree;
 
23071
  friend class ::ExtACKeywords;
 
23072
  friend class ::ExtGnu;
 
23073
  friend class ::PragmaOnceUnitState;
 
23074
  friend class ::PragmaOnce;
 
23075
  friend class ::CMatchSyntax;
 
23076
 
 
23077
#line 2349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23078
 
 
23079
  CT_LinkageSpec *_linkage;
 
23080
  
 
23081
protected:
 
23082
  /** Constructor. */
 
23083
  CT_Decl () : _linkage (0) {}
 
23084
  
 
23085
public:
 
23086
  /** Set the linkage of the declared entity.
 
23087
   *  \param l The linkage specifiers. */
 
23088
  void Linkage (CT_LinkageSpec *l) { _linkage = l; }
 
23089
  /** Get the linkage specifiers. */
 
23090
  CT_LinkageSpec *Linkage () const { return _linkage; }
 
23091
  /** Get this. */
 
23092
  virtual CT_Decl *IsDeclaration () { return this; }
 
23093
public:
 
23094
  typedef AC::TL<Puma::CT_LinkageSpec *,AC::TLE > __AttrTypes;
 
23095
  const char *__attr_name (unsigned i) const {
 
23096
    static const char *names[] = { "_linkage" }; return names[i];
 
23097
  }
 
23098
  const void *__attr (unsigned __i) const {
 
23099
    switch (__i) { case 0: return &_linkage; default: return 0; }
 
23100
  }
 
23101
#line 2364 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23102
};
 
23103
 
 
23104
/** \class CT_Program CTree.h Puma/CTree.h
 
23105
 *  Root node of C/C++ syntax trees. */
 
23106
 
 
23107
#line 23108 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23108
} // closed Puma
 
23109
class CCExprResolve;
 
23110
class CExprResolve;
 
23111
class WinIfExists;
 
23112
class WinImportHandler;
 
23113
class WinMacros;
 
23114
class WinAsm;
 
23115
class WinDeclSpecs;
 
23116
class WinMemberExplSpec;
 
23117
class WinTypeKeywords;
 
23118
class WinFriend;
 
23119
class ExtAC;
 
23120
class ExtACBuilderCoupling;
 
23121
class ExtACSyntaxCoupling;
 
23122
class ExtACTree;
 
23123
class ExtACKeywords;
 
23124
class ExtGnu;
 
23125
class PragmaOnceUnitState;
 
23126
class PragmaOnce;
 
23127
class CMatchSyntax;
 
23128
namespace Puma {
 
23129
 
 
23130
#line 2368 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23131
class CT_Program : public CT_DeclList, public CSemScope {
 
23132
#line 23133 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23133
  friend class ::CCExprResolve;
 
23134
  friend class ::CExprResolve;
 
23135
  friend class ::WinIfExists;
 
23136
  friend class ::WinImportHandler;
 
23137
  friend class ::WinMacros;
 
23138
  friend class ::WinAsm;
 
23139
  friend class ::WinDeclSpecs;
 
23140
  friend class ::WinMemberExplSpec;
 
23141
  friend class ::WinTypeKeywords;
 
23142
  friend class ::WinFriend;
 
23143
  friend class ::ExtAC;
 
23144
  friend class ::ExtACBuilderCoupling;
 
23145
  friend class ::ExtACSyntaxCoupling;
 
23146
  friend class ::ExtACTree;
 
23147
  friend class ::ExtACKeywords;
 
23148
  friend class ::ExtGnu;
 
23149
  friend class ::PragmaOnceUnitState;
 
23150
  friend class ::PragmaOnce;
 
23151
  friend class ::CMatchSyntax;
 
23152
 
 
23153
#line 2368 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23154
 
 
23155
public:
 
23156
  /** Constructor.
 
23157
   *  \param size The initial number of declarations in the program.
 
23158
   *  \param incr The initial increment count. */
 
23159
  CT_Program (int size = 20, int incr = 20) : CT_DeclList (size, incr) {}
 
23160
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23161
  static const char *NodeId ();
 
23162
  /** Get the name of the node. Can be compared with NodeId(). */
 
23163
  const char *NodeName () const { return NodeId (); }
 
23164
  /** Get the top scope. */
 
23165
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
23166
public:
 
23167
  typedef AC::TLE __AttrTypes;
 
23168
  const char *__attr_name (unsigned i) const { return 0; }
 
23169
  const void *__attr (unsigned __i) const { return 0; }
 
23170
#line 2380 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23171
};
 
23172
   
 
23173
/** \class CT_ObjDecl CTree.h Puma/CTree.h
 
23174
 *  Tree node representing an object declaration.
 
23175
 *  Example: \code int *i \endcode */
 
23176
 
 
23177
#line 23178 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23178
} // closed Puma
 
23179
class CCExprResolve;
 
23180
class CExprResolve;
 
23181
class WinIfExists;
 
23182
class WinImportHandler;
 
23183
class WinMacros;
 
23184
class WinAsm;
 
23185
class WinDeclSpecs;
 
23186
class WinMemberExplSpec;
 
23187
class WinTypeKeywords;
 
23188
class WinFriend;
 
23189
class ExtAC;
 
23190
class ExtACBuilderCoupling;
 
23191
class ExtACSyntaxCoupling;
 
23192
class ExtACTree;
 
23193
class ExtACKeywords;
 
23194
class ExtGnu;
 
23195
class PragmaOnceUnitState;
 
23196
class PragmaOnce;
 
23197
class CMatchSyntax;
 
23198
namespace Puma {
 
23199
 
 
23200
#line 2385 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23201
class CT_ObjDecl : public CT_Decl {
 
23202
#line 23203 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23203
  friend class ::CCExprResolve;
 
23204
  friend class ::CExprResolve;
 
23205
  friend class ::WinIfExists;
 
23206
  friend class ::WinImportHandler;
 
23207
  friend class ::WinMacros;
 
23208
  friend class ::WinAsm;
 
23209
  friend class ::WinDeclSpecs;
 
23210
  friend class ::WinMemberExplSpec;
 
23211
  friend class ::WinTypeKeywords;
 
23212
  friend class ::WinFriend;
 
23213
  friend class ::ExtAC;
 
23214
  friend class ::ExtACBuilderCoupling;
 
23215
  friend class ::ExtACSyntaxCoupling;
 
23216
  friend class ::ExtACTree;
 
23217
  friend class ::ExtACKeywords;
 
23218
  friend class ::ExtGnu;
 
23219
  friend class ::PragmaOnceUnitState;
 
23220
  friend class ::PragmaOnce;
 
23221
  friend class ::CMatchSyntax;
 
23222
 
 
23223
#line 2385 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23224
 
 
23225
  CTree *sons[3]; // declspecs, declarators, colon
 
23226
 
 
23227
public:
 
23228
  /** Constructor.
 
23229
   *  \param dsl The declaration specifier sequence.
 
23230
   *  \param dl The declarator list.
 
23231
   *  \param c Optional colon. */
 
23232
  CT_ObjDecl (CTree *dsl, CTree *dl, CTree *c) {
 
23233
    AddSon (sons[0], dsl); AddSon (sons[1], dl); AddSon (sons[2], c);
 
23234
  }
 
23235
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23236
  static const char *NodeId ();
 
23237
  /** Get the name of the node. Can be compared with NodeId(). */
 
23238
  const char *NodeName () const { return NodeId (); }
 
23239
  /** Get the number of sons. */
 
23240
  int Sons () const { return 3; }
 
23241
  /** Get the n-th son.
 
23242
   *  \param n The index of the son.
 
23243
   *  \return The n-th son or NULL. */
 
23244
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
23245
  /** Get the declaration specifier sequence. */
 
23246
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
23247
  /** Get the declarator list. */
 
23248
  CT_DeclaratorList *Declarators () const { return (CT_DeclaratorList*)sons[1]; }
 
23249
  /** Replace a son.
 
23250
   *  \param old_son The son to replace.
 
23251
   *  \param new_son The new son. */
 
23252
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23253
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
23254
  }
 
23255
public:
 
23256
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
23257
  const char *__attr_name (unsigned i) const {
 
23258
    static const char *names[] = { "sons" }; return names[i];
 
23259
  }
 
23260
  const void *__attr (unsigned __i) const {
 
23261
    switch (__i) { case 0: return &sons; default: return 0; }
 
23262
  }
 
23263
#line 2416 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23264
};
 
23265
 
 
23266
/** \class CT_TemplateDecl CTree.h Puma/CTree.h
 
23267
 *  Tree node representing a template declaration. */
 
23268
 
 
23269
#line 23270 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23270
} // closed Puma
 
23271
class CCExprResolve;
 
23272
class CExprResolve;
 
23273
class WinIfExists;
 
23274
class WinImportHandler;
 
23275
class WinMacros;
 
23276
class WinAsm;
 
23277
class WinDeclSpecs;
 
23278
class WinMemberExplSpec;
 
23279
class WinTypeKeywords;
 
23280
class WinFriend;
 
23281
class ExtAC;
 
23282
class ExtACBuilderCoupling;
 
23283
class ExtACSyntaxCoupling;
 
23284
class ExtACTree;
 
23285
class ExtACKeywords;
 
23286
class ExtGnu;
 
23287
class PragmaOnceUnitState;
 
23288
class PragmaOnce;
 
23289
class CMatchSyntax;
 
23290
namespace Puma {
 
23291
 
 
23292
#line 2420 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23293
class CT_TemplateDecl : public CT_Decl, public CSemScope {
 
23294
#line 23295 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23295
  friend class ::CCExprResolve;
 
23296
  friend class ::CExprResolve;
 
23297
  friend class ::WinIfExists;
 
23298
  friend class ::WinImportHandler;
 
23299
  friend class ::WinMacros;
 
23300
  friend class ::WinAsm;
 
23301
  friend class ::WinDeclSpecs;
 
23302
  friend class ::WinMemberExplSpec;
 
23303
  friend class ::WinTypeKeywords;
 
23304
  friend class ::WinFriend;
 
23305
  friend class ::ExtAC;
 
23306
  friend class ::ExtACBuilderCoupling;
 
23307
  friend class ::ExtACSyntaxCoupling;
 
23308
  friend class ::ExtACTree;
 
23309
  friend class ::ExtACKeywords;
 
23310
  friend class ::ExtGnu;
 
23311
  friend class ::PragmaOnceUnitState;
 
23312
  friend class ::PragmaOnce;
 
23313
  friend class ::CMatchSyntax;
 
23314
 
 
23315
#line 2420 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23316
 
 
23317
  CTree *sons[3]; // export, param_list, decl
 
23318
 
 
23319
public:
 
23320
  /** Constructor.
 
23321
   *  \param e Optional 'export' keyword. 
 
23322
   *  \param p The template parameter list.
 
23323
   *  \param d The class or function declaration. */
 
23324
  CT_TemplateDecl (CTree *e, CTree *p, CTree *d) {
 
23325
    AddSon (sons[0], e); AddSon (sons[1], p); AddSon (sons[2], d);
 
23326
  }
 
23327
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23328
  static const char *NodeId ();
 
23329
  /** Get the name of the node. Can be compared with NodeId(). */
 
23330
  const char *NodeName () const { return NodeId (); }
 
23331
  /** Get the number of sons. */
 
23332
  int Sons () const { return CTree::Sons (sons, 3); }
 
23333
  /** Get the n-th son.
 
23334
   *  \param n The index of the son.
 
23335
   *  \return The n-th son or NULL. */
 
23336
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
23337
  /** Replace a son.
 
23338
   *  \param old_son The son to replace.
 
23339
   *  \param new_son The new son. */
 
23340
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23341
    CTree::ReplaceSon (sons, 3, old_son, new_son); 
 
23342
  }
 
23343
  /** Get the 'export' keyword. */
 
23344
  CTree *Export () const { return sons[0]; }
 
23345
  /** Get the template parameter list. */
 
23346
  CT_TemplateParamList *Parameters () const { 
 
23347
    return (CT_TemplateParamList*)sons[1]; 
 
23348
  }
 
23349
  /** Get the class or function declaration. */
 
23350
  CTree *Declaration () const { return sons[2]; }
 
23351
  /** Get the scope opened by the template declaration. */
 
23352
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
23353
public:
 
23354
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
23355
  const char *__attr_name (unsigned i) const {
 
23356
    static const char *names[] = { "sons" }; return names[i];
 
23357
  }
 
23358
  const void *__attr (unsigned __i) const {
 
23359
    switch (__i) { case 0: return &sons; default: return 0; }
 
23360
  }
 
23361
#line 2457 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23362
};
 
23363
 
 
23364
/** \class CT_TemplateParamDecl CTree.h Puma/CTree.h
 
23365
 *  Base class for all tree nodesrepresenting a template parameter declaration. */
 
23366
 
 
23367
#line 23368 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23368
} // closed Puma
 
23369
class CCExprResolve;
 
23370
class CExprResolve;
 
23371
class WinIfExists;
 
23372
class WinImportHandler;
 
23373
class WinMacros;
 
23374
class WinAsm;
 
23375
class WinDeclSpecs;
 
23376
class WinMemberExplSpec;
 
23377
class WinTypeKeywords;
 
23378
class WinFriend;
 
23379
class ExtAC;
 
23380
class ExtACBuilderCoupling;
 
23381
class ExtACSyntaxCoupling;
 
23382
class ExtACTree;
 
23383
class ExtACKeywords;
 
23384
class ExtGnu;
 
23385
class PragmaOnceUnitState;
 
23386
class PragmaOnce;
 
23387
class CMatchSyntax;
 
23388
namespace Puma {
 
23389
 
 
23390
#line 2461 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23391
class CT_TemplateParamDecl : public CT_Decl, public CSemObject {
 
23392
#line 23393 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23393
  friend class ::CCExprResolve;
 
23394
  friend class ::CExprResolve;
 
23395
  friend class ::WinIfExists;
 
23396
  friend class ::WinImportHandler;
 
23397
  friend class ::WinMacros;
 
23398
  friend class ::WinAsm;
 
23399
  friend class ::WinDeclSpecs;
 
23400
  friend class ::WinMemberExplSpec;
 
23401
  friend class ::WinTypeKeywords;
 
23402
  friend class ::WinFriend;
 
23403
  friend class ::ExtAC;
 
23404
  friend class ::ExtACBuilderCoupling;
 
23405
  friend class ::ExtACSyntaxCoupling;
 
23406
  friend class ::ExtACTree;
 
23407
  friend class ::ExtACKeywords;
 
23408
  friend class ::ExtGnu;
 
23409
  friend class ::PragmaOnceUnitState;
 
23410
  friend class ::PragmaOnce;
 
23411
  friend class ::CMatchSyntax;
 
23412
 
 
23413
#line 2461 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23414
 
 
23415
protected:
 
23416
  /** Constructor. */
 
23417
  CT_TemplateParamDecl () {}
 
23418
  
 
23419
public:
 
23420
  /** Get the template default argument. */
 
23421
  virtual CT_ExprList *DefaultArgument () const = 0;
 
23422
  /** Get the semantic information about the template parameter. */
 
23423
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
23424
public:
 
23425
  typedef AC::TLE __AttrTypes;
 
23426
  const char *__attr_name (unsigned i) const { return 0; }
 
23427
  const void *__attr (unsigned __i) const { return 0; }
 
23428
#line 2471 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23429
};
 
23430
 
 
23431
/** \class CT_NonTypeParamDecl CTree.h Puma/CTree.h
 
23432
 *  Tree node representing a template non-type parameter declaration. */
 
23433
 
 
23434
#line 23435 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23435
} // closed Puma
 
23436
class CCExprResolve;
 
23437
class CExprResolve;
 
23438
class WinIfExists;
 
23439
class WinImportHandler;
 
23440
class WinMacros;
 
23441
class WinAsm;
 
23442
class WinDeclSpecs;
 
23443
class WinMemberExplSpec;
 
23444
class WinTypeKeywords;
 
23445
class WinFriend;
 
23446
class ExtAC;
 
23447
class ExtACBuilderCoupling;
 
23448
class ExtACSyntaxCoupling;
 
23449
class ExtACTree;
 
23450
class ExtACKeywords;
 
23451
class ExtGnu;
 
23452
class PragmaOnceUnitState;
 
23453
class PragmaOnce;
 
23454
class CMatchSyntax;
 
23455
namespace Puma {
 
23456
 
 
23457
#line 2475 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23458
class CT_NonTypeParamDecl : public CT_TemplateParamDecl {
 
23459
#line 23460 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23460
  friend class ::CCExprResolve;
 
23461
  friend class ::CExprResolve;
 
23462
  friend class ::WinIfExists;
 
23463
  friend class ::WinImportHandler;
 
23464
  friend class ::WinMacros;
 
23465
  friend class ::WinAsm;
 
23466
  friend class ::WinDeclSpecs;
 
23467
  friend class ::WinMemberExplSpec;
 
23468
  friend class ::WinTypeKeywords;
 
23469
  friend class ::WinFriend;
 
23470
  friend class ::ExtAC;
 
23471
  friend class ::ExtACBuilderCoupling;
 
23472
  friend class ::ExtACSyntaxCoupling;
 
23473
  friend class ::ExtACTree;
 
23474
  friend class ::ExtACKeywords;
 
23475
  friend class ::ExtGnu;
 
23476
  friend class ::PragmaOnceUnitState;
 
23477
  friend class ::PragmaOnce;
 
23478
  friend class ::CMatchSyntax;
 
23479
 
 
23480
#line 2475 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23481
 
 
23482
  CTree *sons[3]; // declspecs, declarator, init
 
23483
 
 
23484
public:
 
23485
  /** Constructor.
 
23486
   *  \param dsl The declaration specifier sequence.
 
23487
   *  \param d The parameter declarator.
 
23488
   *  \param i The default template argument. */
 
23489
  CT_NonTypeParamDecl (CTree *dsl, CTree *d, CTree *i = (CTree*)0) {
 
23490
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], i);
 
23491
  }
 
23492
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23493
  static const char *NodeId ();
 
23494
  /** Get the name of the node. Can be compared with NodeId(). */
 
23495
  const char *NodeName () const { return NodeId (); }
 
23496
  /** Get the number of sons. */
 
23497
  int Sons () const { return CTree::Sons (sons, 3); }
 
23498
  /** Get the n-th son.
 
23499
   *  \param n The index of the son.
 
23500
   *  \return The n-th son or NULL. */
 
23501
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
23502
  /** Get the declaration specifier sequence. */
 
23503
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
23504
  /** Get the parameter declarator. */
 
23505
  CTree *Declarator () const { return sons[1]; }
 
23506
  /** Get the default template argument. */
 
23507
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[2]; }
 
23508
  /** Get the semantic information about the template parameter. */
 
23509
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
23510
  /** Set the default template argument. 
 
23511
   *  \param i The default argument. */
 
23512
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
23513
  /** Replace a son.
 
23514
   *  \param old_son The son to replace.
 
23515
   *  \param new_son The new son. */
 
23516
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23517
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
23518
  }
 
23519
public:
 
23520
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
23521
  const char *__attr_name (unsigned i) const {
 
23522
    static const char *names[] = { "sons" }; return names[i];
 
23523
  }
 
23524
  const void *__attr (unsigned __i) const {
 
23525
    switch (__i) { case 0: return &sons; default: return 0; }
 
23526
  }
 
23527
#line 2513 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23528
};
 
23529
 
 
23530
/** \class CT_TypeParamDecl CTree.h Puma/CTree.h
 
23531
 *  Tree node representing a template type parameter declaration. */
 
23532
 
 
23533
#line 23534 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23534
} // closed Puma
 
23535
class CCExprResolve;
 
23536
class CExprResolve;
 
23537
class WinIfExists;
 
23538
class WinImportHandler;
 
23539
class WinMacros;
 
23540
class WinAsm;
 
23541
class WinDeclSpecs;
 
23542
class WinMemberExplSpec;
 
23543
class WinTypeKeywords;
 
23544
class WinFriend;
 
23545
class ExtAC;
 
23546
class ExtACBuilderCoupling;
 
23547
class ExtACSyntaxCoupling;
 
23548
class ExtACTree;
 
23549
class ExtACKeywords;
 
23550
class ExtGnu;
 
23551
class PragmaOnceUnitState;
 
23552
class PragmaOnce;
 
23553
class CMatchSyntax;
 
23554
namespace Puma {
 
23555
 
 
23556
#line 2517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23557
class CT_TypeParamDecl : public CT_TemplateParamDecl {
 
23558
#line 23559 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23559
  friend class ::CCExprResolve;
 
23560
  friend class ::CExprResolve;
 
23561
  friend class ::WinIfExists;
 
23562
  friend class ::WinImportHandler;
 
23563
  friend class ::WinMacros;
 
23564
  friend class ::WinAsm;
 
23565
  friend class ::WinDeclSpecs;
 
23566
  friend class ::WinMemberExplSpec;
 
23567
  friend class ::WinTypeKeywords;
 
23568
  friend class ::WinFriend;
 
23569
  friend class ::ExtAC;
 
23570
  friend class ::ExtACBuilderCoupling;
 
23571
  friend class ::ExtACSyntaxCoupling;
 
23572
  friend class ::ExtACTree;
 
23573
  friend class ::ExtACKeywords;
 
23574
  friend class ::ExtGnu;
 
23575
  friend class ::PragmaOnceUnitState;
 
23576
  friend class ::PragmaOnce;
 
23577
  friend class ::CMatchSyntax;
 
23578
 
 
23579
#line 2517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23580
 
 
23581
  CTree *sons[4]; // params, key, id, init
 
23582
 
 
23583
public:
 
23584
  /** Constructor.
 
23585
   *  \param pl The template parameter list of an template template parameter.
 
23586
   *  \param k The type keyword, i.e. 'class' or 'typename'.
 
23587
   *  \param id The parameter identifier.
 
23588
   *  \param i The default template argument. */
 
23589
  CT_TypeParamDecl (CTree *pl, CTree *k, CTree *id, CTree *i = (CTree*)0) { 
 
23590
    AddSon (sons[0], pl); AddSon (sons[1], k); 
 
23591
    AddSon (sons[2], id); AddSon (sons[3], i);
 
23592
  }
 
23593
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23594
  static const char *NodeId ();
 
23595
  /** Get the name of the node. Can be compared with NodeId(). */
 
23596
  const char *NodeName () const { return NodeId (); }
 
23597
  /** Get the number of sons. */
 
23598
  int Sons () const { return CTree::Sons (sons, 4); }
 
23599
  /** Get the n-th son.
 
23600
   *  \param n The index of the son.
 
23601
   *  \return The n-th son or NULL. */
 
23602
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
23603
  /** Get the template parameter list of a template template parameter. */
 
23604
  CT_TemplateParamList *Parameters () const { 
 
23605
    return (CT_TemplateParamList*)sons[0]; 
 
23606
  }
 
23607
  /** Get the templare parameter name. */
 
23608
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
23609
  /** Get the template default argument. */
 
23610
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[3]; }
 
23611
  /** Set the template default argument.
 
23612
   *  \param i The default argument. */
 
23613
  void Initializer (CTree *i) { AddSon (sons[3], i); }
 
23614
  /** Replace a son.
 
23615
   *  \param old_son The son to replace.
 
23616
   *  \param new_son The new son. */
 
23617
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23618
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
23619
  }
 
23620
public:
 
23621
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
23622
  const char *__attr_name (unsigned i) const {
 
23623
    static const char *names[] = { "sons" }; return names[i];
 
23624
  }
 
23625
  const void *__attr (unsigned __i) const {
 
23626
    switch (__i) { case 0: return &sons; default: return 0; }
 
23627
  }
 
23628
#line 2557 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23629
};
 
23630
 
 
23631
/** \class CT_EnumDef CTree.h Puma/CTree.h
 
23632
 *  Tree node representing the definition of an enumeration. 
 
23633
 *  Example: \code enum E { A, B, C } \endcode */
 
23634
 
 
23635
#line 23636 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23636
} // closed Puma
 
23637
class CCExprResolve;
 
23638
class CExprResolve;
 
23639
class WinIfExists;
 
23640
class WinImportHandler;
 
23641
class WinMacros;
 
23642
class WinAsm;
 
23643
class WinDeclSpecs;
 
23644
class WinMemberExplSpec;
 
23645
class WinTypeKeywords;
 
23646
class WinFriend;
 
23647
class ExtAC;
 
23648
class ExtACBuilderCoupling;
 
23649
class ExtACSyntaxCoupling;
 
23650
class ExtACTree;
 
23651
class ExtACKeywords;
 
23652
class ExtGnu;
 
23653
class PragmaOnceUnitState;
 
23654
class PragmaOnce;
 
23655
class CMatchSyntax;
 
23656
namespace Puma {
 
23657
 
 
23658
#line 2562 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23659
class CT_EnumDef : public CT_Decl, public CSemObject {
 
23660
#line 23661 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23661
  friend class ::CCExprResolve;
 
23662
  friend class ::CExprResolve;
 
23663
  friend class ::WinIfExists;
 
23664
  friend class ::WinImportHandler;
 
23665
  friend class ::WinMacros;
 
23666
  friend class ::WinAsm;
 
23667
  friend class ::WinDeclSpecs;
 
23668
  friend class ::WinMemberExplSpec;
 
23669
  friend class ::WinTypeKeywords;
 
23670
  friend class ::WinFriend;
 
23671
  friend class ::ExtAC;
 
23672
  friend class ::ExtACBuilderCoupling;
 
23673
  friend class ::ExtACSyntaxCoupling;
 
23674
  friend class ::ExtACTree;
 
23675
  friend class ::ExtACKeywords;
 
23676
  friend class ::ExtGnu;
 
23677
  friend class ::PragmaOnceUnitState;
 
23678
  friend class ::PragmaOnce;
 
23679
  friend class ::CMatchSyntax;
 
23680
 
 
23681
#line 2562 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23682
 
 
23683
  CTree *sons[3]; // key, name, enumerators
 
23684
 
 
23685
public:
 
23686
  /** Constructor.
 
23687
   *  \param k The keyword 'enum'.
 
23688
   *  \param n The name of the enumeration. */
 
23689
  CT_EnumDef (CTree *k, CTree *n) {
 
23690
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], 0); 
 
23691
  }
 
23692
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23693
  static const char *NodeId ();
 
23694
  /** Get the name of the node. Can be compared with NodeId(). */
 
23695
  const char *NodeName () const { return NodeId (); }
 
23696
  /** Get the number of sons. */
 
23697
  int Sons () const { return CTree::Sons (sons, 3); }
 
23698
  /** Get the n-th son.
 
23699
   *  \param n The index of the son.
 
23700
   *  \return The n-th son or NULL. */
 
23701
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
23702
  /** Get the name of the enumeration. */
 
23703
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
23704
  /** Set the list of enumeration constants.
 
23705
   *  \param el The enumerator list. */
 
23706
  void Enumerators (CTree *el) { AddSon (sons[2], el); }
 
23707
  /** Get the list of enumeration constants. */
 
23708
  CT_EnumeratorList *Enumerators () const { return (CT_EnumeratorList*)sons[2]; }
 
23709
  /** Replace a son.
 
23710
   *  \param old_son The son to replace.
 
23711
   *  \param new_son The new son. */
 
23712
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23713
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
23714
  }
 
23715
  /** Get the semantic information about the enumeration. */
 
23716
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
23717
public:
 
23718
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
23719
  const char *__attr_name (unsigned i) const {
 
23720
    static const char *names[] = { "sons" }; return names[i];
 
23721
  }
 
23722
  const void *__attr (unsigned __i) const {
 
23723
    switch (__i) { case 0: return &sons; default: return 0; }
 
23724
  }
 
23725
#line 2597 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23726
};
 
23727
 
 
23728
/** \class CT_Enumerator CTree.h Puma/CTree.h
 
23729
 *  Tree node representing a single enumeration constant. */
 
23730
 
 
23731
#line 23732 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23732
} // closed Puma
 
23733
class CCExprResolve;
 
23734
class CExprResolve;
 
23735
class WinIfExists;
 
23736
class WinImportHandler;
 
23737
class WinMacros;
 
23738
class WinAsm;
 
23739
class WinDeclSpecs;
 
23740
class WinMemberExplSpec;
 
23741
class WinTypeKeywords;
 
23742
class WinFriend;
 
23743
class ExtAC;
 
23744
class ExtACBuilderCoupling;
 
23745
class ExtACSyntaxCoupling;
 
23746
class ExtACTree;
 
23747
class ExtACKeywords;
 
23748
class ExtGnu;
 
23749
class PragmaOnceUnitState;
 
23750
class PragmaOnce;
 
23751
class CMatchSyntax;
 
23752
namespace Puma {
 
23753
 
 
23754
#line 2601 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23755
class CT_Enumerator : public CT_Decl, public CSemObject {
 
23756
#line 23757 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23757
  friend class ::CCExprResolve;
 
23758
  friend class ::CExprResolve;
 
23759
  friend class ::WinIfExists;
 
23760
  friend class ::WinImportHandler;
 
23761
  friend class ::WinMacros;
 
23762
  friend class ::WinAsm;
 
23763
  friend class ::WinDeclSpecs;
 
23764
  friend class ::WinMemberExplSpec;
 
23765
  friend class ::WinTypeKeywords;
 
23766
  friend class ::WinFriend;
 
23767
  friend class ::ExtAC;
 
23768
  friend class ::ExtACBuilderCoupling;
 
23769
  friend class ::ExtACSyntaxCoupling;
 
23770
  friend class ::ExtACTree;
 
23771
  friend class ::ExtACKeywords;
 
23772
  friend class ::ExtGnu;
 
23773
  friend class ::PragmaOnceUnitState;
 
23774
  friend class ::PragmaOnce;
 
23775
  friend class ::CMatchSyntax;
 
23776
 
 
23777
#line 2601 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23778
 
 
23779
  CTree *sons[2]; // name, init
 
23780
 
 
23781
public:
 
23782
  /** Constructor.
 
23783
   *  \param n The name of the enumerator. */
 
23784
  CT_Enumerator (CTree *n) { AddSon (sons[0], n); AddSon (sons[1], 0); }
 
23785
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23786
  static const char *NodeId ();
 
23787
  /** Get the name of the node. Can be compared with NodeId(). */
 
23788
  const char *NodeName () const { return NodeId (); }
 
23789
  /** Get the number of sons. */
 
23790
  int Sons () const { return CTree::Sons (sons, 2); }
 
23791
  /** Get the n-th son.
 
23792
   *  \param n The index of the son.
 
23793
   *  \return The n-th son or NULL. */
 
23794
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
23795
  /** Get the name of the enumerator. */
 
23796
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
23797
  /** Set the initializer expression of the enumerator. */
 
23798
  void Initializer (CTree *i) { AddSon (sons[1], i); }
 
23799
  /** Get the initializer expression of the enumerator. */
 
23800
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
23801
  /** Replace a son.
 
23802
   *  \param old_son The son to replace.
 
23803
   *  \param new_son The new son. */
 
23804
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23805
    CTree::ReplaceSon (sons, 2, old_son, new_son); 
 
23806
  }
 
23807
  /** Get the semantic information about the enumerator. */
 
23808
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
23809
public:
 
23810
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
23811
  const char *__attr_name (unsigned i) const {
 
23812
    static const char *names[] = { "sons" }; return names[i];
 
23813
  }
 
23814
  const void *__attr (unsigned __i) const {
 
23815
    switch (__i) { case 0: return &sons; default: return 0; }
 
23816
  }
 
23817
#line 2632 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23818
};
 
23819
 
 
23820
/** \class CT_FctDef CTree.h Puma/CTree.h
 
23821
 *  Tree node representing a function definition. 
 
23822
 *  Example:
 
23823
 *  \code
 
23824
 * int mul(int x, int y) {
 
23825
 *   return x*y;
 
23826
 * }
 
23827
 *  \endcode */
 
23828
 
 
23829
#line 23830 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23830
} // closed Puma
 
23831
class CCExprResolve;
 
23832
class CExprResolve;
 
23833
class WinIfExists;
 
23834
class WinImportHandler;
 
23835
class WinMacros;
 
23836
class WinAsm;
 
23837
class WinDeclSpecs;
 
23838
class WinMemberExplSpec;
 
23839
class WinTypeKeywords;
 
23840
class WinFriend;
 
23841
class ExtAC;
 
23842
class ExtACBuilderCoupling;
 
23843
class ExtACSyntaxCoupling;
 
23844
class ExtACTree;
 
23845
class ExtACKeywords;
 
23846
class ExtGnu;
 
23847
class PragmaOnceUnitState;
 
23848
class PragmaOnce;
 
23849
class CMatchSyntax;
 
23850
namespace Puma {
 
23851
 
 
23852
#line 2642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23853
class CT_FctDef : public CT_Decl, public CSemObject {
 
23854
#line 23855 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23855
  friend class ::CCExprResolve;
 
23856
  friend class ::CExprResolve;
 
23857
  friend class ::WinIfExists;
 
23858
  friend class ::WinImportHandler;
 
23859
  friend class ::WinMacros;
 
23860
  friend class ::WinAsm;
 
23861
  friend class ::WinDeclSpecs;
 
23862
  friend class ::WinMemberExplSpec;
 
23863
  friend class ::WinTypeKeywords;
 
23864
  friend class ::WinFriend;
 
23865
  friend class ::ExtAC;
 
23866
  friend class ::ExtACBuilderCoupling;
 
23867
  friend class ::ExtACSyntaxCoupling;
 
23868
  friend class ::ExtACTree;
 
23869
  friend class ::ExtACKeywords;
 
23870
  friend class ::ExtGnu;
 
23871
  friend class ::PragmaOnceUnitState;
 
23872
  friend class ::PragmaOnce;
 
23873
  friend class ::CMatchSyntax;
 
23874
 
 
23875
#line 2642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23876
 
 
23877
  CTree *sons[7]; // declspecs, declarator, try, ctor_init, args, body, handlers
 
23878
 
 
23879
public:
 
23880
  /** Constructor.
 
23881
   *  \param dss The declaration specifier sequence. 
 
23882
   *  \param d The function declarator.
 
23883
   *  \param t Optional keyword 'try' for a function try-block.
 
23884
   *  \param ci Optional constructor initializer list.
 
23885
   *  \param as Optional K&R argument declaration list.
 
23886
   *  \param b The function body.
 
23887
   *  \param hs Exception handler sequence for a function try-block. */
 
23888
  CT_FctDef (CTree *dss, CTree *d, CTree *t, CTree *ci, CTree *as, 
 
23889
             CTree *b, CTree *hs) {
 
23890
    AddSon (sons[0], dss); AddSon (sons[1], d); AddSon (sons[2], t); 
 
23891
    AddSon (sons[3], ci); AddSon (sons[4], as); AddSon (sons[5], b); 
 
23892
    AddSon (sons[6], hs); 
 
23893
  }
 
23894
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
23895
  static const char *NodeId ();
 
23896
  /** Get the name of the node. Can be compared with NodeId(). */
 
23897
  const char *NodeName () const { return NodeId (); }
 
23898
  /** Get the number of sons. */
 
23899
  int Sons () const { return CTree::Sons (sons, 7); }
 
23900
  /** Get the n-th son.
 
23901
   *  \param n The index of the son.
 
23902
   *  \return The n-th son or NULL. */
 
23903
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
23904
  /** Get the declaration specifier sequence. */
 
23905
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
23906
  /** Get the function declarator. */
 
23907
  CTree *Declarator () const { return sons[1]; }
 
23908
  /** Get the 'try' keyword of the function try-block. */
 
23909
  CT_Token *TryKey () const { return (CT_Token*)sons[2]; }
 
23910
  /** Get the constructor initializer list. */
 
23911
  CTree *CtorInit () const { return sons[3]; }
 
23912
  /** Get the K&R argument declaration sequence. */
 
23913
  CT_ArgDeclSeq *ArgDeclSeq () const { return (CT_ArgDeclSeq*)sons[4]; }
 
23914
  /** Get the function body. */
 
23915
  CT_CmpdStmt *Body () const { return (CT_CmpdStmt*)sons[5]; }
 
23916
  /** Get the exception handler sequence of a function try-block. */
 
23917
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[6]; }
 
23918
  /** Get the semantic information about the function. */
 
23919
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
23920
  /** Set the constructor initializer list. 
 
23921
   *  \param i The initializer list. */
 
23922
  void CtorInit (CTree *i) { AddSon (sons[3], i); }
 
23923
  /** Set the function body.
 
23924
   *  \param b The function body. */
 
23925
  void Body (CTree *b) { AddSon (sons[5], b); }
 
23926
  /** Set the function try-block.
 
23927
   *  \param t The keyword 'try'.
 
23928
   *  \param c Optional constructor initializer list.
 
23929
   *  \param b The function body.
 
23930
   *  \param h The exception handler sequence. */
 
23931
  void FctTryBlock (CTree *t, CTree *c, CTree *b, CTree *h) { 
 
23932
    AddSon (sons[2], t); AddSon (sons[3], c); 
 
23933
    AddSon (sons[5], b); AddSon (sons[6], h);
 
23934
  }
 
23935
  /** Replace a son.
 
23936
   *  \param old_son The son to replace.
 
23937
   *  \param new_son The new son. */
 
23938
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
23939
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
23940
  }
 
23941
public:
 
23942
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
23943
  const char *__attr_name (unsigned i) const {
 
23944
    static const char *names[] = { "sons" }; return names[i];
 
23945
  }
 
23946
  const void *__attr (unsigned __i) const {
 
23947
    switch (__i) { case 0: return &sons; default: return 0; }
 
23948
  }
 
23949
#line 2707 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23950
};
 
23951
 
 
23952
/** \class CT_AsmDef CTree.h Puma/CTree.h
 
23953
 *  Tree node representing an inline assembly definition. 
 
23954
 *  Example: \code asm("movl %ecx %eax"); \endcode */
 
23955
 
 
23956
#line 23957 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23957
} // closed Puma
 
23958
class CCExprResolve;
 
23959
class CExprResolve;
 
23960
class WinIfExists;
 
23961
class WinImportHandler;
 
23962
class WinMacros;
 
23963
class WinAsm;
 
23964
class WinDeclSpecs;
 
23965
class WinMemberExplSpec;
 
23966
class WinTypeKeywords;
 
23967
class WinFriend;
 
23968
class ExtAC;
 
23969
class ExtACBuilderCoupling;
 
23970
class ExtACSyntaxCoupling;
 
23971
class ExtACTree;
 
23972
class ExtACKeywords;
 
23973
class ExtGnu;
 
23974
class PragmaOnceUnitState;
 
23975
class PragmaOnce;
 
23976
class CMatchSyntax;
 
23977
namespace Puma {
 
23978
 
 
23979
#line 2712 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
23980
class CT_AsmDef : public CT_Decl {
 
23981
#line 23982 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
23982
  friend class ::CCExprResolve;
 
23983
  friend class ::CExprResolve;
 
23984
  friend class ::WinIfExists;
 
23985
  friend class ::WinImportHandler;
 
23986
  friend class ::WinMacros;
 
23987
  friend class ::WinAsm;
 
23988
  friend class ::WinDeclSpecs;
 
23989
  friend class ::WinMemberExplSpec;
 
23990
  friend class ::WinTypeKeywords;
 
23991
  friend class ::WinFriend;
 
23992
  friend class ::ExtAC;
 
23993
  friend class ::ExtACBuilderCoupling;
 
23994
  friend class ::ExtACSyntaxCoupling;
 
23995
  friend class ::ExtACTree;
 
23996
  friend class ::ExtACKeywords;
 
23997
  friend class ::ExtGnu;
 
23998
  friend class ::PragmaOnceUnitState;
 
23999
  friend class ::PragmaOnce;
 
24000
  friend class ::CMatchSyntax;
 
24001
 
 
24002
#line 2712 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24003
 
 
24004
  CTree *sons[5]; // asm, open, str, close, semi_colon
 
24005
 
 
24006
public:
 
24007
  /** Constructor.
 
24008
   *  \param a The keyword 'asm'.
 
24009
   *  \param o Left parenthesis around the assembler code string. 
 
24010
   *  \param s The assembler code.
 
24011
   *  \param c Right parenthesis around the assembler code string.
 
24012
   *  \param sc Trailing semi-colon. */
 
24013
  CT_AsmDef (CTree *a, CTree *o, CTree *s, CTree *c, CTree *sc) {
 
24014
    AddSon (sons[0], a); AddSon (sons[1], o); AddSon (sons[2], s); 
 
24015
    AddSon (sons[3], c); AddSon (sons[4], sc); 
 
24016
  }
 
24017
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24018
  static const char *NodeId ();
 
24019
  /** Get the name of the node. Can be compared with NodeId(). */
 
24020
  const char *NodeName () const { return NodeId (); }
 
24021
  /** Get the number of sons. */
 
24022
  int Sons () const { return 5; }
 
24023
  /** Get the n-th son.
 
24024
   *  \param n The index of the son.
 
24025
   *  \return The n-th son or NULL. */
 
24026
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
24027
  /** Get the assembler code. */
 
24028
  CT_String *Instructions () const { return (CT_String*)sons[2]; }
 
24029
  /** Replace a son.
 
24030
   *  \param old_son The son to replace.
 
24031
   *  \param new_son The new son. */
 
24032
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24033
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
24034
  }
 
24035
public:
 
24036
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
24037
  const char *__attr_name (unsigned i) const {
 
24038
    static const char *names[] = { "sons" }; return names[i];
 
24039
  }
 
24040
  const void *__attr (unsigned __i) const {
 
24041
    switch (__i) { case 0: return &sons; default: return 0; }
 
24042
  }
 
24043
#line 2744 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24044
};
 
24045
 
 
24046
/** \class CT_Handler CTree.h Puma/CTree.h
 
24047
 *  Tree node representing an exception handler. */
 
24048
 
 
24049
#line 24050 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24050
} // closed Puma
 
24051
class CCExprResolve;
 
24052
class CExprResolve;
 
24053
class WinIfExists;
 
24054
class WinImportHandler;
 
24055
class WinMacros;
 
24056
class WinAsm;
 
24057
class WinDeclSpecs;
 
24058
class WinMemberExplSpec;
 
24059
class WinTypeKeywords;
 
24060
class WinFriend;
 
24061
class ExtAC;
 
24062
class ExtACBuilderCoupling;
 
24063
class ExtACSyntaxCoupling;
 
24064
class ExtACTree;
 
24065
class ExtACKeywords;
 
24066
class ExtGnu;
 
24067
class PragmaOnceUnitState;
 
24068
class PragmaOnce;
 
24069
class CMatchSyntax;
 
24070
namespace Puma {
 
24071
 
 
24072
#line 2748 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24073
class CT_Handler : public CT_Decl, public CSemScope {
 
24074
#line 24075 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24075
  friend class ::CCExprResolve;
 
24076
  friend class ::CExprResolve;
 
24077
  friend class ::WinIfExists;
 
24078
  friend class ::WinImportHandler;
 
24079
  friend class ::WinMacros;
 
24080
  friend class ::WinAsm;
 
24081
  friend class ::WinDeclSpecs;
 
24082
  friend class ::WinMemberExplSpec;
 
24083
  friend class ::WinTypeKeywords;
 
24084
  friend class ::WinFriend;
 
24085
  friend class ::ExtAC;
 
24086
  friend class ::ExtACBuilderCoupling;
 
24087
  friend class ::ExtACSyntaxCoupling;
 
24088
  friend class ::ExtACTree;
 
24089
  friend class ::ExtACKeywords;
 
24090
  friend class ::ExtGnu;
 
24091
  friend class ::PragmaOnceUnitState;
 
24092
  friend class ::PragmaOnce;
 
24093
  friend class ::CMatchSyntax;
 
24094
 
 
24095
#line 2748 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24096
 
 
24097
  CTree *sons[3]; // catch, exception_decl, stmt
 
24098
 
 
24099
public:
 
24100
  /** Constructor.
 
24101
   *  \param c The keyword 'catch'.
 
24102
   *  \param e The exception object declaration.
 
24103
   *  \param s The exception handling statement. */
 
24104
  CT_Handler (CTree *c, CTree *e, CTree *s) {
 
24105
    AddSon (sons[0], c); AddSon (sons[1], e); AddSon (sons[2], s);
 
24106
  }
 
24107
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24108
  static const char *NodeId ();
 
24109
  /** Get the name of the node. Can be compared with NodeId(). */
 
24110
  const char *NodeName () const { return NodeId (); }
 
24111
  /** Get the number of sons. */
 
24112
  int Sons () const { return 3; }
 
24113
  /** Get the n-th son.
 
24114
   *  \param n The index of the son.
 
24115
   *  \return The n-th son or NULL. */
 
24116
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
24117
  /** Get the exception object declaration. */
 
24118
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
24119
  /** Get the exception handling statement. */
 
24120
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
24121
  /** Replace a son.
 
24122
   *  \param old_son The son to replace.
 
24123
   *  \param new_son The new son. */
 
24124
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24125
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
24126
  }
 
24127
  /** Get the scope opened by the handler. */
 
24128
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
24129
public:
 
24130
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
24131
  const char *__attr_name (unsigned i) const {
 
24132
    static const char *names[] = { "sons" }; return names[i];
 
24133
  }
 
24134
  const void *__attr (unsigned __i) const {
 
24135
    switch (__i) { case 0: return &sons; default: return 0; }
 
24136
  }
 
24137
#line 2781 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24138
};
 
24139
 
 
24140
/** \class CT_LinkageSpec CTree.h Puma/CTree.h
 
24141
 *  Tree node representing a list of declaration with a specific linkage. */
 
24142
 
 
24143
#line 24144 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24144
} // closed Puma
 
24145
class CCExprResolve;
 
24146
class CExprResolve;
 
24147
class WinIfExists;
 
24148
class WinImportHandler;
 
24149
class WinMacros;
 
24150
class WinAsm;
 
24151
class WinDeclSpecs;
 
24152
class WinMemberExplSpec;
 
24153
class WinTypeKeywords;
 
24154
class WinFriend;
 
24155
class ExtAC;
 
24156
class ExtACBuilderCoupling;
 
24157
class ExtACSyntaxCoupling;
 
24158
class ExtACTree;
 
24159
class ExtACKeywords;
 
24160
class ExtGnu;
 
24161
class PragmaOnceUnitState;
 
24162
class PragmaOnce;
 
24163
class CMatchSyntax;
 
24164
namespace Puma {
 
24165
 
 
24166
#line 2785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24167
class CT_LinkageSpec : public CT_Decl {
 
24168
#line 24169 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24169
  friend class ::CCExprResolve;
 
24170
  friend class ::CExprResolve;
 
24171
  friend class ::WinIfExists;
 
24172
  friend class ::WinImportHandler;
 
24173
  friend class ::WinMacros;
 
24174
  friend class ::WinAsm;
 
24175
  friend class ::WinDeclSpecs;
 
24176
  friend class ::WinMemberExplSpec;
 
24177
  friend class ::WinTypeKeywords;
 
24178
  friend class ::WinFriend;
 
24179
  friend class ::ExtAC;
 
24180
  friend class ::ExtACBuilderCoupling;
 
24181
  friend class ::ExtACSyntaxCoupling;
 
24182
  friend class ::ExtACTree;
 
24183
  friend class ::ExtACKeywords;
 
24184
  friend class ::ExtGnu;
 
24185
  friend class ::PragmaOnceUnitState;
 
24186
  friend class ::PragmaOnce;
 
24187
  friend class ::CMatchSyntax;
 
24188
 
 
24189
#line 2785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24190
 
 
24191
  CTree *sons[5]; // extern, str, open, decls, close
 
24192
 
 
24193
public:
 
24194
  /** Constructor.
 
24195
   *  \param e The keyword 'extern'.
 
24196
   *  \param s The linkage identifier, e.g. "C".
 
24197
   *  \param o Left parenthesis around the declaration list.
 
24198
   *  \param d The list of declarations.
 
24199
   *  \param c Right parenthesis around the declaration list. */
 
24200
  CT_LinkageSpec (CTree *e, CTree *s, CTree *o, CTree *d, CTree *c) {
 
24201
    AddSon (sons[0], e); AddSon (sons[1], s); AddSon (sons[2], o); 
 
24202
    AddSon (sons[3], d); AddSon (sons[4], c);
 
24203
    if (isList ())
 
24204
      ((CT_DeclList*)Decls ())->Linkage (this);
 
24205
    else
 
24206
      ((CT_Decl*)Decls ())->Linkage (this);
 
24207
  }
 
24208
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24209
  static const char *NodeId ();
 
24210
  /** Get the name of the node. Can be compared with NodeId(). */
 
24211
  const char *NodeName () const { return NodeId (); }
 
24212
  /** Get the number of sons. */
 
24213
  int Sons () const { return CTree::Sons (sons, 5); }
 
24214
  /** Get the n-th son.
 
24215
   *  \param n The index of the son.
 
24216
   *  \return The n-th son or NULL. */
 
24217
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
24218
  /** Get the linkage identifier. */
 
24219
  CT_String *Linkage () const { return (CT_String*)sons[1]; }
 
24220
  /** Get the list declarations. */
 
24221
  CTree *Decls () const { return sons[3]; }
 
24222
  /** Check if there is more than one enclosed declaration. 
 
24223
   *  In this case the node returned by Decls() is a CT_DeclList
 
24224
   *  node. */
 
24225
  bool isList () const {
 
24226
    return Decls ()->NodeName () == CT_DeclList::NodeId ();
 
24227
  }
 
24228
  /** Replace a son.
 
24229
   *  \param old_son The son to replace.
 
24230
   *  \param new_son The new son. */
 
24231
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24232
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
24233
  }
 
24234
public:
 
24235
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
24236
  const char *__attr_name (unsigned i) const {
 
24237
    static const char *names[] = { "sons" }; return names[i];
 
24238
  }
 
24239
  const void *__attr (unsigned __i) const {
 
24240
    switch (__i) { case 0: return &sons; default: return 0; }
 
24241
  }
 
24242
#line 2829 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24243
};
 
24244
 
 
24245
/** \class CT_ArgDecl CTree.h Puma/CTree.h
 
24246
 *  Tree node representing the declaration of a function parameter. */
 
24247
 
 
24248
#line 24249 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24249
} // closed Puma
 
24250
class CCExprResolve;
 
24251
class CExprResolve;
 
24252
class WinIfExists;
 
24253
class WinImportHandler;
 
24254
class WinMacros;
 
24255
class WinAsm;
 
24256
class WinDeclSpecs;
 
24257
class WinMemberExplSpec;
 
24258
class WinTypeKeywords;
 
24259
class WinFriend;
 
24260
class ExtAC;
 
24261
class ExtACBuilderCoupling;
 
24262
class ExtACSyntaxCoupling;
 
24263
class ExtACTree;
 
24264
class ExtACKeywords;
 
24265
class ExtGnu;
 
24266
class PragmaOnceUnitState;
 
24267
class PragmaOnce;
 
24268
class CMatchSyntax;
 
24269
namespace Puma {
 
24270
 
 
24271
#line 2833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24272
class CT_ArgDecl : public CT_Decl, public CSemObject {
 
24273
#line 24274 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24274
  friend class ::CCExprResolve;
 
24275
  friend class ::CExprResolve;
 
24276
  friend class ::WinIfExists;
 
24277
  friend class ::WinImportHandler;
 
24278
  friend class ::WinMacros;
 
24279
  friend class ::WinAsm;
 
24280
  friend class ::WinDeclSpecs;
 
24281
  friend class ::WinMemberExplSpec;
 
24282
  friend class ::WinTypeKeywords;
 
24283
  friend class ::WinFriend;
 
24284
  friend class ::ExtAC;
 
24285
  friend class ::ExtACBuilderCoupling;
 
24286
  friend class ::ExtACSyntaxCoupling;
 
24287
  friend class ::ExtACTree;
 
24288
  friend class ::ExtACKeywords;
 
24289
  friend class ::ExtGnu;
 
24290
  friend class ::PragmaOnceUnitState;
 
24291
  friend class ::PragmaOnce;
 
24292
  friend class ::CMatchSyntax;
 
24293
 
 
24294
#line 2833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24295
 
 
24296
  CTree *sons[4]; // declspecs, declarator, init, ellipsis
 
24297
 
 
24298
public:
 
24299
  /** Constructor.
 
24300
   *  \param dsl The declaration specifier sequence.
 
24301
   *  \param d The parameter declarator. */
 
24302
  CT_ArgDecl (CTree *dsl, CTree *d) {
 
24303
    AddSon (sons[0], dsl); AddSon (sons[1], d); 
 
24304
    AddSon (sons[2], 0); AddSon (sons[3], 0); 
 
24305
  }
 
24306
  /** Constructor.
 
24307
   *  \param ellipsis The variable argument list operator "...". */
 
24308
  CT_ArgDecl (CTree *ellipsis) {
 
24309
    AddSon (sons[0], 0); AddSon (sons[1], 0); 
 
24310
    AddSon (sons[2], 0); AddSon (sons[3], ellipsis); 
 
24311
  }
 
24312
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24313
  static const char *NodeId ();
 
24314
  /** Get the name of the node. Can be compared with NodeId(). */
 
24315
  const char *NodeName () const { return NodeId (); }
 
24316
  /** Get the number of sons. */
 
24317
  int Sons () const { return CTree::Sons (sons, 4); }
 
24318
  /** Get the n-th son.
 
24319
   *  \param n The index of the son.
 
24320
   *  \return The n-th son or NULL. */
 
24321
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
24322
  /** Get the declaration specifier sequence. */
 
24323
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
24324
  /** Get the function parameter declarator. */
 
24325
  CTree *Declarator () const { return sons[1]; }
 
24326
  /** Get the default argument. */
 
24327
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
24328
  /** Get the variable argument list operator. */
 
24329
  CT_Token *Ellipsis () const { return (CT_Token*)sons[3]; }
 
24330
  /** Get the semantic information about the function parameter. */
 
24331
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
24332
  /** Set the default argument. */
 
24333
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
24334
  /** Replace a son.
 
24335
   *  \param old_son The son to replace.
 
24336
   *  \param new_son The new son. */
 
24337
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24338
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
24339
  }
 
24340
public:
 
24341
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
24342
  const char *__attr_name (unsigned i) const {
 
24343
    static const char *names[] = { "sons" }; return names[i];
 
24344
  }
 
24345
  const void *__attr (unsigned __i) const {
 
24346
    switch (__i) { case 0: return &sons; default: return 0; }
 
24347
  }
 
24348
#line 2878 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24349
};
 
24350
 
 
24351
/** \class CT_ArgDeclList CTree.h Puma/CTree.h
 
24352
 *  Tree node representing a function parameter list. */
 
24353
 
 
24354
#line 24355 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24355
} // closed Puma
 
24356
class CCExprResolve;
 
24357
class CExprResolve;
 
24358
class WinIfExists;
 
24359
class WinImportHandler;
 
24360
class WinMacros;
 
24361
class WinAsm;
 
24362
class WinDeclSpecs;
 
24363
class WinMemberExplSpec;
 
24364
class WinTypeKeywords;
 
24365
class WinFriend;
 
24366
class ExtAC;
 
24367
class ExtACBuilderCoupling;
 
24368
class ExtACSyntaxCoupling;
 
24369
class ExtACTree;
 
24370
class ExtACKeywords;
 
24371
class ExtGnu;
 
24372
class PragmaOnceUnitState;
 
24373
class PragmaOnce;
 
24374
class CMatchSyntax;
 
24375
namespace Puma {
 
24376
 
 
24377
#line 2882 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24378
class CT_ArgDeclList : public CT_DeclList, public CSemScope {
 
24379
#line 24380 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24380
  friend class ::CCExprResolve;
 
24381
  friend class ::CExprResolve;
 
24382
  friend class ::WinIfExists;
 
24383
  friend class ::WinImportHandler;
 
24384
  friend class ::WinMacros;
 
24385
  friend class ::WinAsm;
 
24386
  friend class ::WinDeclSpecs;
 
24387
  friend class ::WinMemberExplSpec;
 
24388
  friend class ::WinTypeKeywords;
 
24389
  friend class ::WinFriend;
 
24390
  friend class ::ExtAC;
 
24391
  friend class ::ExtACBuilderCoupling;
 
24392
  friend class ::ExtACSyntaxCoupling;
 
24393
  friend class ::ExtACTree;
 
24394
  friend class ::ExtACKeywords;
 
24395
  friend class ::ExtGnu;
 
24396
  friend class ::PragmaOnceUnitState;
 
24397
  friend class ::PragmaOnce;
 
24398
  friend class ::CMatchSyntax;
 
24399
 
 
24400
#line 2882 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24401
 
 
24402
public:
 
24403
  /** Constructor.
 
24404
   *  \param size The initial size of the list.
 
24405
   *  \param props The list properties. */
 
24406
  CT_ArgDeclList (int size = 2, int props = SEPARATORS | OPEN_CLOSE) : 
 
24407
   CT_DeclList (size, 2) { AddProperties (props); }
 
24408
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24409
  static const char *NodeId ();
 
24410
  /** Get the name of the node. Can be compared with NodeId(). */
 
24411
  const char *NodeName () const { return NodeId (); }
 
24412
  /** Get the scope opened by the parameter list. */
 
24413
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
24414
public:
 
24415
  typedef AC::TLE __AttrTypes;
 
24416
  const char *__attr_name (unsigned i) const { return 0; }
 
24417
  const void *__attr (unsigned __i) const { return 0; }
 
24418
#line 2895 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24419
};
 
24420
 
 
24421
/** \class CT_ArgDeclSeq CTree.h Puma/CTree.h
 
24422
 *  Tree node representing a K&R function parameter declarations list. */
 
24423
 
 
24424
#line 24425 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24425
} // closed Puma
 
24426
class CCExprResolve;
 
24427
class CExprResolve;
 
24428
class WinIfExists;
 
24429
class WinImportHandler;
 
24430
class WinMacros;
 
24431
class WinAsm;
 
24432
class WinDeclSpecs;
 
24433
class WinMemberExplSpec;
 
24434
class WinTypeKeywords;
 
24435
class WinFriend;
 
24436
class ExtAC;
 
24437
class ExtACBuilderCoupling;
 
24438
class ExtACSyntaxCoupling;
 
24439
class ExtACTree;
 
24440
class ExtACKeywords;
 
24441
class ExtGnu;
 
24442
class PragmaOnceUnitState;
 
24443
class PragmaOnce;
 
24444
class CMatchSyntax;
 
24445
namespace Puma {
 
24446
 
 
24447
#line 2899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24448
class CT_ArgDeclSeq : public CT_DeclList, public CSemScope {
 
24449
#line 24450 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24450
  friend class ::CCExprResolve;
 
24451
  friend class ::CExprResolve;
 
24452
  friend class ::WinIfExists;
 
24453
  friend class ::WinImportHandler;
 
24454
  friend class ::WinMacros;
 
24455
  friend class ::WinAsm;
 
24456
  friend class ::WinDeclSpecs;
 
24457
  friend class ::WinMemberExplSpec;
 
24458
  friend class ::WinTypeKeywords;
 
24459
  friend class ::WinFriend;
 
24460
  friend class ::ExtAC;
 
24461
  friend class ::ExtACBuilderCoupling;
 
24462
  friend class ::ExtACSyntaxCoupling;
 
24463
  friend class ::ExtACTree;
 
24464
  friend class ::ExtACKeywords;
 
24465
  friend class ::ExtGnu;
 
24466
  friend class ::PragmaOnceUnitState;
 
24467
  friend class ::PragmaOnce;
 
24468
  friend class ::CMatchSyntax;
 
24469
 
 
24470
#line 2899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24471
 
 
24472
public:
 
24473
  /** Constructor.
 
24474
   *  \param size The initial size of the list. */
 
24475
  CT_ArgDeclSeq (int size = 2) : CT_DeclList (size, 2) {}
 
24476
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24477
  static const char *NodeId ();
 
24478
  /** Get the name of the node. Can be compared with NodeId(). */
 
24479
  const char *NodeName () const { return NodeId (); }
 
24480
  /** Get the scope opened by the parameter declarations list. */
 
24481
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
24482
public:
 
24483
  typedef AC::TLE __AttrTypes;
 
24484
  const char *__attr_name (unsigned i) const { return 0; }
 
24485
  const void *__attr (unsigned __i) const { return 0; }
 
24486
#line 2910 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24487
};
 
24488
 
 
24489
/** \class CT_ArgNameList CTree.h Puma/CTree.h
 
24490
 *  Tree node representing a K&R function parameter name list. */
 
24491
 
 
24492
#line 24493 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24493
} // closed Puma
 
24494
class CCExprResolve;
 
24495
class CExprResolve;
 
24496
class WinIfExists;
 
24497
class WinImportHandler;
 
24498
class WinMacros;
 
24499
class WinAsm;
 
24500
class WinDeclSpecs;
 
24501
class WinMemberExplSpec;
 
24502
class WinTypeKeywords;
 
24503
class WinFriend;
 
24504
class ExtAC;
 
24505
class ExtACBuilderCoupling;
 
24506
class ExtACSyntaxCoupling;
 
24507
class ExtACTree;
 
24508
class ExtACKeywords;
 
24509
class ExtGnu;
 
24510
class PragmaOnceUnitState;
 
24511
class PragmaOnce;
 
24512
class CMatchSyntax;
 
24513
namespace Puma {
 
24514
 
 
24515
#line 2914 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24516
class CT_ArgNameList : public CT_ArgDeclList {
 
24517
#line 24518 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24518
  friend class ::CCExprResolve;
 
24519
  friend class ::CExprResolve;
 
24520
  friend class ::WinIfExists;
 
24521
  friend class ::WinImportHandler;
 
24522
  friend class ::WinMacros;
 
24523
  friend class ::WinAsm;
 
24524
  friend class ::WinDeclSpecs;
 
24525
  friend class ::WinMemberExplSpec;
 
24526
  friend class ::WinTypeKeywords;
 
24527
  friend class ::WinFriend;
 
24528
  friend class ::ExtAC;
 
24529
  friend class ::ExtACBuilderCoupling;
 
24530
  friend class ::ExtACSyntaxCoupling;
 
24531
  friend class ::ExtACTree;
 
24532
  friend class ::ExtACKeywords;
 
24533
  friend class ::ExtGnu;
 
24534
  friend class ::PragmaOnceUnitState;
 
24535
  friend class ::PragmaOnce;
 
24536
  friend class ::CMatchSyntax;
 
24537
 
 
24538
#line 2914 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24539
 
 
24540
public:
 
24541
  /** Constructor. */
 
24542
  CT_ArgNameList () : CT_ArgDeclList () {}
 
24543
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24544
  static const char *NodeId ();
 
24545
  /** Get the name of the node. Can be compared with NodeId(). */
 
24546
  const char *NodeName () const { return NodeId (); }
 
24547
public:
 
24548
  typedef AC::TLE __AttrTypes;
 
24549
  const char *__attr_name (unsigned i) const { return 0; }
 
24550
  const void *__attr (unsigned __i) const { return 0; }
 
24551
#line 2922 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24552
};
 
24553
 
 
24554
/** \class CT_NamespaceDef CTree.h Puma/CTree.h
 
24555
 *  Tree node representing a namespace definition.
 
24556
 *  Example: \code namespace a {} \endcode */
 
24557
 
 
24558
#line 24559 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24559
} // closed Puma
 
24560
class CCExprResolve;
 
24561
class CExprResolve;
 
24562
class WinIfExists;
 
24563
class WinImportHandler;
 
24564
class WinMacros;
 
24565
class WinAsm;
 
24566
class WinDeclSpecs;
 
24567
class WinMemberExplSpec;
 
24568
class WinTypeKeywords;
 
24569
class WinFriend;
 
24570
class ExtAC;
 
24571
class ExtACBuilderCoupling;
 
24572
class ExtACSyntaxCoupling;
 
24573
class ExtACTree;
 
24574
class ExtACKeywords;
 
24575
class ExtGnu;
 
24576
class PragmaOnceUnitState;
 
24577
class PragmaOnce;
 
24578
class CMatchSyntax;
 
24579
namespace Puma {
 
24580
 
 
24581
#line 2927 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24582
class CT_NamespaceDef : public CT_Decl, public CSemObject {
 
24583
#line 24584 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24584
  friend class ::CCExprResolve;
 
24585
  friend class ::CExprResolve;
 
24586
  friend class ::WinIfExists;
 
24587
  friend class ::WinImportHandler;
 
24588
  friend class ::WinMacros;
 
24589
  friend class ::WinAsm;
 
24590
  friend class ::WinDeclSpecs;
 
24591
  friend class ::WinMemberExplSpec;
 
24592
  friend class ::WinTypeKeywords;
 
24593
  friend class ::WinFriend;
 
24594
  friend class ::ExtAC;
 
24595
  friend class ::ExtACBuilderCoupling;
 
24596
  friend class ::ExtACSyntaxCoupling;
 
24597
  friend class ::ExtACTree;
 
24598
  friend class ::ExtACKeywords;
 
24599
  friend class ::ExtGnu;
 
24600
  friend class ::PragmaOnceUnitState;
 
24601
  friend class ::PragmaOnce;
 
24602
  friend class ::CMatchSyntax;
 
24603
 
 
24604
#line 2927 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24605
 
 
24606
  CTree *sons[3]; // ns, name, members
 
24607
 
 
24608
public:
 
24609
  /** Constructor.
 
24610
   *  \param n The keyword 'namespace'.
 
24611
   *  \param nm The name of the namespace. */
 
24612
  CT_NamespaceDef (CTree *n, CTree *nm) {
 
24613
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], 0); 
 
24614
  }
 
24615
  /** Constructor.
 
24616
   *  \param n The keyword 'namespace'.
 
24617
   *  \param nm The name of the namespace. 
 
24618
   *  \param m The namespace member declarations list. */
 
24619
  CT_NamespaceDef (CTree *n, CTree *nm, CTree *m) {
 
24620
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], m); 
 
24621
  }
 
24622
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24623
  static const char *NodeId ();
 
24624
  /** Get the name of the node. Can be compared with NodeId(). */
 
24625
  const char *NodeName () const { return NodeId (); }
 
24626
  /** Get the number of sons. */
 
24627
  int Sons () const { return CTree::Sons (sons, 3); }
 
24628
  /** Get the n-th son.
 
24629
   *  \param n The index of the son.
 
24630
   *  \return The n-th son or NULL. */
 
24631
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
24632
  /** Set the namespace member declarations list. */
 
24633
  void Members (CTree *m) { AddSon (sons[2], m); }
 
24634
  /** Get the namespace member declarations list. */
 
24635
  CT_MembList *Members () const { return (CT_MembList*)sons[2]; }
 
24636
  /** Get the name of the namespace. */
 
24637
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
24638
  /** Get the semantic information about the namespace. */
 
24639
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
24640
  /** Replace a son.
 
24641
   *  \param old_son The son to replace.
 
24642
   *  \param new_son The new son. */
 
24643
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24644
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
24645
  }
 
24646
public:
 
24647
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
24648
  const char *__attr_name (unsigned i) const {
 
24649
    static const char *names[] = { "sons" }; return names[i];
 
24650
  }
 
24651
  const void *__attr (unsigned __i) const {
 
24652
    switch (__i) { case 0: return &sons; default: return 0; }
 
24653
  }
 
24654
#line 2968 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24655
};
 
24656
 
 
24657
/** \class CT_NamespaceAliasDef CTree.h Puma/CTree.h
 
24658
 *  Tree node representing a namespace alias definition.
 
24659
 *  Example: \code namespace b = a; \endcode */
 
24660
 
 
24661
#line 24662 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24662
} // closed Puma
 
24663
class CCExprResolve;
 
24664
class CExprResolve;
 
24665
class WinIfExists;
 
24666
class WinImportHandler;
 
24667
class WinMacros;
 
24668
class WinAsm;
 
24669
class WinDeclSpecs;
 
24670
class WinMemberExplSpec;
 
24671
class WinTypeKeywords;
 
24672
class WinFriend;
 
24673
class ExtAC;
 
24674
class ExtACBuilderCoupling;
 
24675
class ExtACSyntaxCoupling;
 
24676
class ExtACTree;
 
24677
class ExtACKeywords;
 
24678
class ExtGnu;
 
24679
class PragmaOnceUnitState;
 
24680
class PragmaOnce;
 
24681
class CMatchSyntax;
 
24682
namespace Puma {
 
24683
 
 
24684
#line 2973 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24685
class CT_NamespaceAliasDef : public CT_Decl, public CSemObject {
 
24686
#line 24687 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24687
  friend class ::CCExprResolve;
 
24688
  friend class ::CExprResolve;
 
24689
  friend class ::WinIfExists;
 
24690
  friend class ::WinImportHandler;
 
24691
  friend class ::WinMacros;
 
24692
  friend class ::WinAsm;
 
24693
  friend class ::WinDeclSpecs;
 
24694
  friend class ::WinMemberExplSpec;
 
24695
  friend class ::WinTypeKeywords;
 
24696
  friend class ::WinFriend;
 
24697
  friend class ::ExtAC;
 
24698
  friend class ::ExtACBuilderCoupling;
 
24699
  friend class ::ExtACSyntaxCoupling;
 
24700
  friend class ::ExtACTree;
 
24701
  friend class ::ExtACKeywords;
 
24702
  friend class ::ExtGnu;
 
24703
  friend class ::PragmaOnceUnitState;
 
24704
  friend class ::PragmaOnce;
 
24705
  friend class ::CMatchSyntax;
 
24706
 
 
24707
#line 2973 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24708
 
 
24709
  CTree *sons[5]; // ns, alias, assign, name, semi_colon
 
24710
 
 
24711
public:
 
24712
  /** Constructor.
 
24713
   *  \param n The keyword 'namespace'.
 
24714
   *  \param a The name of the namespace alias.
 
24715
   *  \param as The assignment operator '='.
 
24716
   *  \param nm The name of the original namespace.
 
24717
   *  \param s The trailing semi-colon. */
 
24718
  CT_NamespaceAliasDef (CTree *n, CTree *a, CTree *as, CTree *nm, CTree *s) {
 
24719
    AddSon (sons[0], n); AddSon (sons[1], a); AddSon (sons[2], as); 
 
24720
    AddSon (sons[3], nm); AddSon (sons[4], s); 
 
24721
  }
 
24722
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24723
  static const char *NodeId ();
 
24724
  /** Get the name of the node. Can be compared with NodeId(). */
 
24725
  const char *NodeName () const { return NodeId (); }
 
24726
  /** Get the number of sons. */
 
24727
  int Sons () const { return 5; }
 
24728
  /** Get the n-th son.
 
24729
   *  \param n The index of the son.
 
24730
   *  \return The n-th son or NULL. */
 
24731
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
24732
  /** Get the name of the original namespace. */
 
24733
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[3]; }
 
24734
  /** Get the name of the namespace alias. */
 
24735
  CT_SimpleName *Alias () const { return (CT_SimpleName*)sons[1]; }
 
24736
  /** Get the semantic information about the namespace alias. */
 
24737
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
24738
  /** Replace a son.
 
24739
   *  \param old_son The son to replace.
 
24740
   *  \param new_son The new son. */
 
24741
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24742
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
24743
  }
 
24744
public:
 
24745
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
24746
  const char *__attr_name (unsigned i) const {
 
24747
    static const char *names[] = { "sons" }; return names[i];
 
24748
  }
 
24749
  const void *__attr (unsigned __i) const {
 
24750
    switch (__i) { case 0: return &sons; default: return 0; }
 
24751
  }
 
24752
#line 3009 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24753
};
 
24754
 
 
24755
/** \class CT_UsingDirective CTree.h Puma/CTree.h
 
24756
 *  Tree node representing a namespace using directive.
 
24757
 *  Example: \code using namespace std; \endcode */
 
24758
 
 
24759
#line 24760 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24760
} // closed Puma
 
24761
class CCExprResolve;
 
24762
class CExprResolve;
 
24763
class WinIfExists;
 
24764
class WinImportHandler;
 
24765
class WinMacros;
 
24766
class WinAsm;
 
24767
class WinDeclSpecs;
 
24768
class WinMemberExplSpec;
 
24769
class WinTypeKeywords;
 
24770
class WinFriend;
 
24771
class ExtAC;
 
24772
class ExtACBuilderCoupling;
 
24773
class ExtACSyntaxCoupling;
 
24774
class ExtACTree;
 
24775
class ExtACKeywords;
 
24776
class ExtGnu;
 
24777
class PragmaOnceUnitState;
 
24778
class PragmaOnce;
 
24779
class CMatchSyntax;
 
24780
namespace Puma {
 
24781
 
 
24782
#line 3014 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24783
class CT_UsingDirective : public CT_Decl {
 
24784
#line 24785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24785
  friend class ::CCExprResolve;
 
24786
  friend class ::CExprResolve;
 
24787
  friend class ::WinIfExists;
 
24788
  friend class ::WinImportHandler;
 
24789
  friend class ::WinMacros;
 
24790
  friend class ::WinAsm;
 
24791
  friend class ::WinDeclSpecs;
 
24792
  friend class ::WinMemberExplSpec;
 
24793
  friend class ::WinTypeKeywords;
 
24794
  friend class ::WinFriend;
 
24795
  friend class ::ExtAC;
 
24796
  friend class ::ExtACBuilderCoupling;
 
24797
  friend class ::ExtACSyntaxCoupling;
 
24798
  friend class ::ExtACTree;
 
24799
  friend class ::ExtACKeywords;
 
24800
  friend class ::ExtGnu;
 
24801
  friend class ::PragmaOnceUnitState;
 
24802
  friend class ::PragmaOnce;
 
24803
  friend class ::CMatchSyntax;
 
24804
 
 
24805
#line 3014 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24806
 
 
24807
  CTree *sons[4]; // using, ns, name, semi_colon
 
24808
 
 
24809
public:
 
24810
  /** Constructor. 
 
24811
   *  \param u The keyword 'using'.
 
24812
   *  \param ns The keyword 'namespace'. 
 
24813
   *  \param n The name of the namespace.
 
24814
   *  \param s The trailing semi-colon. */
 
24815
  CT_UsingDirective (CTree *u, CTree *ns, CTree *n, CTree *s) {
 
24816
    AddSon (sons[0], u); AddSon (sons[1], ns); AddSon (sons[2], n); 
 
24817
    AddSon (sons[3], s); 
 
24818
  }
 
24819
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24820
  static const char *NodeId ();
 
24821
  /** Get the name of the node. Can be compared with NodeId(). */
 
24822
  const char *NodeName () const { return NodeId (); }
 
24823
  /** Get the number of sons. */
 
24824
  int Sons () const { return 4; }
 
24825
  /** Get the n-th son.
 
24826
   *  \param n The index of the son.
 
24827
   *  \return The n-th son or NULL. */
 
24828
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
24829
  /** Get the name of the namespace. */
 
24830
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
24831
  /** Replace a son.
 
24832
   *  \param old_son The son to replace.
 
24833
   *  \param new_son The new son. */
 
24834
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
24835
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
24836
  }
 
24837
public:
 
24838
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
24839
  const char *__attr_name (unsigned i) const {
 
24840
    static const char *names[] = { "sons" }; return names[i];
 
24841
  }
 
24842
  const void *__attr (unsigned __i) const {
 
24843
    switch (__i) { case 0: return &sons; default: return 0; }
 
24844
  }
 
24845
#line 3045 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24846
};
 
24847
 
 
24848
/*****************************************************************************/
 
24849
/*                                                                           */
 
24850
/*                              Declarators                                  */
 
24851
/*                                                                           */
 
24852
/*****************************************************************************/
 
24853
 
 
24854
/** \class CT_Declarator CTree.h Puma/CTree.h
 
24855
 *  Base class for all tree nodes representing declarators. */
 
24856
 
 
24857
#line 24858 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24858
} // closed Puma
 
24859
class CCExprResolve;
 
24860
class CExprResolve;
 
24861
class WinIfExists;
 
24862
class WinImportHandler;
 
24863
class WinMacros;
 
24864
class WinAsm;
 
24865
class WinDeclSpecs;
 
24866
class WinMemberExplSpec;
 
24867
class WinTypeKeywords;
 
24868
class WinFriend;
 
24869
class ExtAC;
 
24870
class ExtACBuilderCoupling;
 
24871
class ExtACSyntaxCoupling;
 
24872
class ExtACTree;
 
24873
class ExtACKeywords;
 
24874
class ExtGnu;
 
24875
class PragmaOnceUnitState;
 
24876
class PragmaOnce;
 
24877
class CMatchSyntax;
 
24878
namespace Puma {
 
24879
 
 
24880
#line 3055 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24881
class CT_Declarator : public CTree {
 
24882
#line 24883 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24883
  friend class ::CCExprResolve;
 
24884
  friend class ::CExprResolve;
 
24885
  friend class ::WinIfExists;
 
24886
  friend class ::WinImportHandler;
 
24887
  friend class ::WinMacros;
 
24888
  friend class ::WinAsm;
 
24889
  friend class ::WinDeclSpecs;
 
24890
  friend class ::WinMemberExplSpec;
 
24891
  friend class ::WinTypeKeywords;
 
24892
  friend class ::WinFriend;
 
24893
  friend class ::ExtAC;
 
24894
  friend class ::ExtACBuilderCoupling;
 
24895
  friend class ::ExtACSyntaxCoupling;
 
24896
  friend class ::ExtACTree;
 
24897
  friend class ::ExtACKeywords;
 
24898
  friend class ::ExtGnu;
 
24899
  friend class ::PragmaOnceUnitState;
 
24900
  friend class ::PragmaOnce;
 
24901
  friend class ::CMatchSyntax;
 
24902
 
 
24903
#line 3055 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24904
 
 
24905
protected:
 
24906
  /** Constructor. */
 
24907
  CT_Declarator () {}
 
24908
 
 
24909
public:
 
24910
  /** Get the declarator. */
 
24911
  virtual CTree *Declarator () const = 0;
 
24912
  /** Get this. */
 
24913
  virtual CT_Declarator *IsDeclarator () { return this; }
 
24914
  /** Get the declared name. */
 
24915
  CT_SimpleName *Name ();
 
24916
  /** Get the declared name and set last_declarator to 
 
24917
   *  the declarator containing the name. 
 
24918
   *  \param last_declarator To be set to the declarator containing the name. */
 
24919
  CT_SimpleName *Name (CT_Declarator *&last_declarator);
 
24920
public:
 
24921
  typedef AC::TLE __AttrTypes;
 
24922
  const char *__attr_name (unsigned i) const { return 0; }
 
24923
  const void *__attr (unsigned __i) const { return 0; }
 
24924
#line 3071 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24925
};
 
24926
 
 
24927
/** \class CT_InitDeclarator CTree.h Puma/CTree.h
 
24928
 *  Tree node representing a declarator with initializer.
 
24929
 *  Example: \code int *i = 0; \endcode */
 
24930
 
 
24931
#line 24932 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24932
} // closed Puma
 
24933
class CCExprResolve;
 
24934
class CExprResolve;
 
24935
class WinIfExists;
 
24936
class WinImportHandler;
 
24937
class WinMacros;
 
24938
class WinAsm;
 
24939
class WinDeclSpecs;
 
24940
class WinMemberExplSpec;
 
24941
class WinTypeKeywords;
 
24942
class WinFriend;
 
24943
class ExtAC;
 
24944
class ExtACBuilderCoupling;
 
24945
class ExtACSyntaxCoupling;
 
24946
class ExtACTree;
 
24947
class ExtACKeywords;
 
24948
class ExtGnu;
 
24949
class PragmaOnceUnitState;
 
24950
class PragmaOnce;
 
24951
class CMatchSyntax;
 
24952
namespace Puma {
 
24953
 
 
24954
#line 3076 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24955
class CT_InitDeclarator : public CT_Declarator, public CSemObject {
 
24956
#line 24957 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
24957
  friend class ::CCExprResolve;
 
24958
  friend class ::CExprResolve;
 
24959
  friend class ::WinIfExists;
 
24960
  friend class ::WinImportHandler;
 
24961
  friend class ::WinMacros;
 
24962
  friend class ::WinAsm;
 
24963
  friend class ::WinDeclSpecs;
 
24964
  friend class ::WinMemberExplSpec;
 
24965
  friend class ::WinTypeKeywords;
 
24966
  friend class ::WinFriend;
 
24967
  friend class ::ExtAC;
 
24968
  friend class ::ExtACBuilderCoupling;
 
24969
  friend class ::ExtACSyntaxCoupling;
 
24970
  friend class ::ExtACTree;
 
24971
  friend class ::ExtACKeywords;
 
24972
  friend class ::ExtGnu;
 
24973
  friend class ::PragmaOnceUnitState;
 
24974
  friend class ::PragmaOnce;
 
24975
  friend class ::CMatchSyntax;
 
24976
 
 
24977
#line 3076 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
24978
 
 
24979
  CTree *sons[3]; // declarator, ext, init
 
24980
  CTree *obj_decl;
 
24981
 
 
24982
public:
 
24983
  /** Constructor.
 
24984
   *  \param d The declarator.
 
24985
   *  \param e Optional extension list.
 
24986
   *  \param i The initializer. */
 
24987
  CT_InitDeclarator (CTree *d, CTree *e = 0, CTree *i = 0) {
 
24988
    AddSon (sons[0], d); AddSon (sons[1], e); AddSon (sons[2], i);
 
24989
    AddSon (obj_decl, 0); 
 
24990
  }
 
24991
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
24992
  static const char *NodeId ();
 
24993
  /** Get the name of the node. Can be compared with NodeId(). */
 
24994
  const char *NodeName () const { return NodeId (); }
 
24995
  /** Get the number of sons. */
 
24996
  int Sons () const { return CTree::Sons (sons, 3); }
 
24997
  /** Get the n-th son.
 
24998
   *  \param n The index of the son.
 
24999
   *  \return The n-th son or NULL. */
 
25000
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
25001
  /** Get the declarator. */
 
25002
  CTree *Declarator () const { return sons[0]; }
 
25003
  /** Get the extensions list. */
 
25004
  CTree *Extension () const { return sons[1]; }
 
25005
  /** Get the initializer. */
 
25006
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
25007
  /** Get the semantic information about the declared object. */
 
25008
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
25009
  /** Get the object declaration node containing the declarator. */
 
25010
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
25011
  /** Set the initializer. */
 
25012
  void Initializer (CTree* i) { AddSon (sons[2], i); }
 
25013
  /** Set the extensions list. */
 
25014
  void Extension (CTree* e) { AddSon (sons[1], e); }
 
25015
  /** Set the object declaration node containing the declarator. 
 
25016
   *  \param od The object declaration node. */
 
25017
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
25018
  /** Replace a son.
 
25019
   *  \param old_son The son to replace.
 
25020
   *  \param new_son The new son. */
 
25021
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25022
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
25023
  }
 
25024
public:
 
25025
  typedef AC::TL<Puma::CTree * [3],AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
25026
  const char *__attr_name (unsigned i) const {
 
25027
    static const char *names[] = { "sons", "obj_decl" }; return names[i];
 
25028
  }
 
25029
  const void *__attr (unsigned __i) const {
 
25030
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; default: return 0; }
 
25031
  }
 
25032
#line 3122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25033
};
 
25034
 
 
25035
/** \class CT_BracedDeclarator CTree.h Puma/CTree.h
 
25036
 *  Tree node representing a braced declarator.
 
25037
 *  Example: \code int (i); \endcode */
 
25038
 
 
25039
#line 25040 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25040
} // closed Puma
 
25041
class CCExprResolve;
 
25042
class CExprResolve;
 
25043
class WinIfExists;
 
25044
class WinImportHandler;
 
25045
class WinMacros;
 
25046
class WinAsm;
 
25047
class WinDeclSpecs;
 
25048
class WinMemberExplSpec;
 
25049
class WinTypeKeywords;
 
25050
class WinFriend;
 
25051
class ExtAC;
 
25052
class ExtACBuilderCoupling;
 
25053
class ExtACSyntaxCoupling;
 
25054
class ExtACTree;
 
25055
class ExtACKeywords;
 
25056
class ExtGnu;
 
25057
class PragmaOnceUnitState;
 
25058
class PragmaOnce;
 
25059
class CMatchSyntax;
 
25060
namespace Puma {
 
25061
 
 
25062
#line 3127 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25063
class CT_BracedDeclarator : public CT_Declarator {
 
25064
#line 25065 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25065
  friend class ::CCExprResolve;
 
25066
  friend class ::CExprResolve;
 
25067
  friend class ::WinIfExists;
 
25068
  friend class ::WinImportHandler;
 
25069
  friend class ::WinMacros;
 
25070
  friend class ::WinAsm;
 
25071
  friend class ::WinDeclSpecs;
 
25072
  friend class ::WinMemberExplSpec;
 
25073
  friend class ::WinTypeKeywords;
 
25074
  friend class ::WinFriend;
 
25075
  friend class ::ExtAC;
 
25076
  friend class ::ExtACBuilderCoupling;
 
25077
  friend class ::ExtACSyntaxCoupling;
 
25078
  friend class ::ExtACTree;
 
25079
  friend class ::ExtACKeywords;
 
25080
  friend class ::ExtGnu;
 
25081
  friend class ::PragmaOnceUnitState;
 
25082
  friend class ::PragmaOnce;
 
25083
  friend class ::CMatchSyntax;
 
25084
 
 
25085
#line 3127 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25086
 
 
25087
  CTree *sons[4]; // open, win_specs, declarator, close
 
25088
 
 
25089
public:
 
25090
  /** Constructor.
 
25091
   *  \param o Left parenthesis around the declarator.
 
25092
   *  \param d The declarator.
 
25093
   *  \param c Right parenthesis around the declarator. */
 
25094
  CT_BracedDeclarator (CTree *o, CTree *d, CTree *c) {
 
25095
    AddSon (sons[0], o); AddSon (sons[1], 0); 
 
25096
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
25097
  }
 
25098
  /** Constructor.
 
25099
   *  \param o Left parenthesis around the declarator.
 
25100
   *  \param ws Declaration specifiers.
 
25101
   *  \param d The declarator.
 
25102
   *  \param c Right parenthesis around the declarator. */
 
25103
  CT_BracedDeclarator (CTree *o, CTree *ws, CTree *d, CTree *c) {
 
25104
    AddSon (sons[0], o); AddSon (sons[1], ws); 
 
25105
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
25106
  }
 
25107
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25108
  static const char *NodeId ();
 
25109
  /** Get the name of the node. Can be compared with NodeId(). */
 
25110
  const char *NodeName () const { return NodeId (); }
 
25111
  /** Get the number of sons. */
 
25112
  int Sons () const { return CTree::Sons (sons, 4); }
 
25113
  /** Get the n-th son.
 
25114
   *  \param n The index of the son.
 
25115
   *  \return The n-th son or NULL. */
 
25116
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
25117
  /** Get the declarator. */
 
25118
  CTree *Declarator () const { return sons[2]; }
 
25119
  /** Replace a son.
 
25120
   *  \param old_son The son to replace.
 
25121
   *  \param new_son The new son. */
 
25122
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25123
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
25124
  }
 
25125
public:
 
25126
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
25127
  const char *__attr_name (unsigned i) const {
 
25128
    static const char *names[] = { "sons" }; return names[i];
 
25129
  }
 
25130
  const void *__attr (unsigned __i) const {
 
25131
    switch (__i) { case 0: return &sons; default: return 0; }
 
25132
  }
 
25133
#line 3166 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25134
};
 
25135
 
 
25136
/** \class CT_ArrayDelimiter CTree.h Puma/CTree.h
 
25137
 *  Tree node representing an array delimiter.
 
25138
 *  Example: \code [10] \endcode or \code [*] \endcode */
 
25139
 
 
25140
#line 25141 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25141
} // closed Puma
 
25142
class CCExprResolve;
 
25143
class CExprResolve;
 
25144
class WinIfExists;
 
25145
class WinImportHandler;
 
25146
class WinMacros;
 
25147
class WinAsm;
 
25148
class WinDeclSpecs;
 
25149
class WinMemberExplSpec;
 
25150
class WinTypeKeywords;
 
25151
class WinFriend;
 
25152
class ExtAC;
 
25153
class ExtACBuilderCoupling;
 
25154
class ExtACSyntaxCoupling;
 
25155
class ExtACTree;
 
25156
class ExtACKeywords;
 
25157
class ExtGnu;
 
25158
class PragmaOnceUnitState;
 
25159
class PragmaOnce;
 
25160
class CMatchSyntax;
 
25161
namespace Puma {
 
25162
 
 
25163
#line 3171 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25164
class CT_ArrayDelimiter : public CTree {
 
25165
#line 25166 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25166
  friend class ::CCExprResolve;
 
25167
  friend class ::CExprResolve;
 
25168
  friend class ::WinIfExists;
 
25169
  friend class ::WinImportHandler;
 
25170
  friend class ::WinMacros;
 
25171
  friend class ::WinAsm;
 
25172
  friend class ::WinDeclSpecs;
 
25173
  friend class ::WinMemberExplSpec;
 
25174
  friend class ::WinTypeKeywords;
 
25175
  friend class ::WinFriend;
 
25176
  friend class ::ExtAC;
 
25177
  friend class ::ExtACBuilderCoupling;
 
25178
  friend class ::ExtACSyntaxCoupling;
 
25179
  friend class ::ExtACTree;
 
25180
  friend class ::ExtACKeywords;
 
25181
  friend class ::ExtGnu;
 
25182
  friend class ::PragmaOnceUnitState;
 
25183
  friend class ::PragmaOnce;
 
25184
  friend class ::CMatchSyntax;
 
25185
 
 
25186
#line 3171 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25187
 
 
25188
  CTree *sons[4]; // star, static, quals, expr
 
25189
  bool pos0;
 
25190
 
 
25191
public:
 
25192
  /** Constructor.
 
25193
   *  \param m The operator '*'.
 
25194
   *  \param s The keyword 'static'.
 
25195
   *  \param q The const/volatile qualifier sequence. 
 
25196
   *  \param e The array size expression. 
 
25197
   *  \param p Position of keyword 'static', true means before the
 
25198
   *           qualifier sequence and false means behind it. */
 
25199
  CT_ArrayDelimiter (CTree *m, CTree *s, CTree *q, CTree *e, bool p = false) {
 
25200
    AddSon (sons[0], m); AddSon (sons[1], s); 
 
25201
    AddSon (sons[2], q); AddSon (sons[3], e); pos0 = p;
 
25202
  }
 
25203
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25204
  static const char *NodeId ();
 
25205
  /** Get the name of the node. Can be compared with NodeId(). */
 
25206
  const char *NodeName () const { return NodeId (); }
 
25207
  /** Get the number of sons. */
 
25208
  int Sons () const { return CTree::Sons (sons, 4); }
 
25209
  /** Get the n-th son.
 
25210
   *  \param n The index of the son.
 
25211
   *  \return The n-th son or NULL. */
 
25212
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
25213
  /** Get the operator '*'. */
 
25214
  CT_Token *Star () const { return (CT_Token*)sons[0]; }
 
25215
  /** Get the keyword 'static'. */
 
25216
  CT_Token *Static () const { return (CT_Token*)sons[pos0?2:1]; }
 
25217
  /** Get the const/volatile qualifier sequence. */
 
25218
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[pos0?1:2]; }
 
25219
  /** Get the array size expression. */
 
25220
  CTree *Expr () const { return sons[3]; }
 
25221
  /** Replace a son.
 
25222
   *  \param old_son The son to replace.
 
25223
   *  \param new_son The new son. */
 
25224
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25225
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
25226
  }
 
25227
public:
 
25228
  typedef AC::TL<Puma::CTree * [4],AC::TL<bool,AC::TLE > > __AttrTypes;
 
25229
  const char *__attr_name (unsigned i) const {
 
25230
    static const char *names[] = { "sons", "pos0" }; return names[i];
 
25231
  }
 
25232
  const void *__attr (unsigned __i) const {
 
25233
    switch (__i) { case 0: return &sons; case 1: return &pos0; default: return 0; }
 
25234
  }
 
25235
#line 3211 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25236
};
 
25237
 
 
25238
/** \class CT_ArrayDeclarator CTree.h Puma/CTree.h
 
25239
 *  Tree node representing an array declarator.
 
25240
 *  Example: \code a[10] \endcode */
 
25241
 
 
25242
#line 25243 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25243
} // closed Puma
 
25244
class CCExprResolve;
 
25245
class CExprResolve;
 
25246
class WinIfExists;
 
25247
class WinImportHandler;
 
25248
class WinMacros;
 
25249
class WinAsm;
 
25250
class WinDeclSpecs;
 
25251
class WinMemberExplSpec;
 
25252
class WinTypeKeywords;
 
25253
class WinFriend;
 
25254
class ExtAC;
 
25255
class ExtACBuilderCoupling;
 
25256
class ExtACSyntaxCoupling;
 
25257
class ExtACTree;
 
25258
class ExtACKeywords;
 
25259
class ExtGnu;
 
25260
class PragmaOnceUnitState;
 
25261
class PragmaOnce;
 
25262
class CMatchSyntax;
 
25263
namespace Puma {
 
25264
 
 
25265
#line 3216 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25266
class CT_ArrayDeclarator : public CT_Declarator, public CSemValue {
 
25267
#line 25268 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25268
  friend class ::CCExprResolve;
 
25269
  friend class ::CExprResolve;
 
25270
  friend class ::WinIfExists;
 
25271
  friend class ::WinImportHandler;
 
25272
  friend class ::WinMacros;
 
25273
  friend class ::WinAsm;
 
25274
  friend class ::WinDeclSpecs;
 
25275
  friend class ::WinMemberExplSpec;
 
25276
  friend class ::WinTypeKeywords;
 
25277
  friend class ::WinFriend;
 
25278
  friend class ::ExtAC;
 
25279
  friend class ::ExtACBuilderCoupling;
 
25280
  friend class ::ExtACSyntaxCoupling;
 
25281
  friend class ::ExtACTree;
 
25282
  friend class ::ExtACKeywords;
 
25283
  friend class ::ExtGnu;
 
25284
  friend class ::PragmaOnceUnitState;
 
25285
  friend class ::PragmaOnce;
 
25286
  friend class ::CMatchSyntax;
 
25287
 
 
25288
#line 3216 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25289
 
 
25290
  CTree *sons[4]; // declarator, open, delim, close
 
25291
 
 
25292
public:
 
25293
  /** Constructor.
 
25294
   *  \param d The array declarator.
 
25295
   *  \param o Left bracket around the delimiter.
 
25296
   *  \param ad The array delimiter.
 
25297
   *  \param c Right bracket around the delimiter. */
 
25298
  CT_ArrayDeclarator (CTree *d, CTree *o, CTree *ad, CTree *c) {
 
25299
    AddSon (sons[0], d); AddSon (sons[1], o); 
 
25300
    AddSon (sons[2], ad); AddSon (sons[3], c); 
 
25301
  }
 
25302
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25303
  static const char *NodeId ();
 
25304
  /** Get the name of the node. Can be compared with NodeId(). */
 
25305
  const char *NodeName () const { return NodeId (); }
 
25306
  /** Get the number of sons. */
 
25307
  int Sons () const { return 4; }
 
25308
  /** Get the n-th son.
 
25309
   *  \param n The index of the son.
 
25310
   *  \return The n-th son or NULL. */
 
25311
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
25312
  /** Get the array declarator. */
 
25313
  CTree *Declarator () const { return sons[0]; }
 
25314
  /** Get the array delimiter. */
 
25315
  CT_ArrayDelimiter *Delimiter () const 
 
25316
   { return (CT_ArrayDelimiter*)sons[2]; }
 
25317
  /** Replace a son.
 
25318
   *  \param old_son The son to replace.
 
25319
   *  \param new_son The new son. */
 
25320
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25321
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
25322
  }
 
25323
  /** Get the semantic information for the type of the declared array. */
 
25324
  CTypeInfo *Type () const { return type; }
 
25325
  /** Get the semantic information for the value of the declared array. */
 
25326
  CExprValue *Value () const { return value; }
 
25327
  /** Get the semantic information object. */
 
25328
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
25329
public:
 
25330
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
25331
  const char *__attr_name (unsigned i) const {
 
25332
    static const char *names[] = { "sons" }; return names[i];
 
25333
  }
 
25334
  const void *__attr (unsigned __i) const {
 
25335
    switch (__i) { case 0: return &sons; default: return 0; }
 
25336
  }
 
25337
#line 3256 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25338
};
 
25339
 
 
25340
/** \class CT_FctDeclarator CTree.h Puma/CTree.h
 
25341
 *  Tree node representing a function declarator.
 
25342
 *  Example: \code f(int a) const \endcode */
 
25343
 
 
25344
#line 25345 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25345
} // closed Puma
 
25346
class CCExprResolve;
 
25347
class CExprResolve;
 
25348
class WinIfExists;
 
25349
class WinImportHandler;
 
25350
class WinMacros;
 
25351
class WinAsm;
 
25352
class WinDeclSpecs;
 
25353
class WinMemberExplSpec;
 
25354
class WinTypeKeywords;
 
25355
class WinFriend;
 
25356
class ExtAC;
 
25357
class ExtACBuilderCoupling;
 
25358
class ExtACSyntaxCoupling;
 
25359
class ExtACTree;
 
25360
class ExtACKeywords;
 
25361
class ExtGnu;
 
25362
class PragmaOnceUnitState;
 
25363
class PragmaOnce;
 
25364
class CMatchSyntax;
 
25365
namespace Puma {
 
25366
 
 
25367
#line 3261 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25368
class CT_FctDeclarator : public CT_Declarator {
 
25369
#line 25370 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25370
  friend class ::CCExprResolve;
 
25371
  friend class ::CExprResolve;
 
25372
  friend class ::WinIfExists;
 
25373
  friend class ::WinImportHandler;
 
25374
  friend class ::WinMacros;
 
25375
  friend class ::WinAsm;
 
25376
  friend class ::WinDeclSpecs;
 
25377
  friend class ::WinMemberExplSpec;
 
25378
  friend class ::WinTypeKeywords;
 
25379
  friend class ::WinFriend;
 
25380
  friend class ::ExtAC;
 
25381
  friend class ::ExtACBuilderCoupling;
 
25382
  friend class ::ExtACSyntaxCoupling;
 
25383
  friend class ::ExtACTree;
 
25384
  friend class ::ExtACKeywords;
 
25385
  friend class ::ExtGnu;
 
25386
  friend class ::PragmaOnceUnitState;
 
25387
  friend class ::PragmaOnce;
 
25388
  friend class ::CMatchSyntax;
 
25389
 
 
25390
#line 3261 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25391
 
 
25392
  CTree *sons[4]; // declarator, args, cv_quals, exception_specs
 
25393
 
 
25394
public:
 
25395
  /** Constructor.
 
25396
   *  \param d The function declarator.
 
25397
   *  \param args The function parameter list.
 
25398
   *  \param cv The function qualifiers.
 
25399
   *  \param es The exception specifier. */
 
25400
  CT_FctDeclarator (CTree *d, CTree *args, CTree *cv, CTree *es) {
 
25401
    AddSon (sons[0], d); AddSon (sons[1], args); 
 
25402
    AddSon (sons[2], cv); AddSon (sons[3], es); 
 
25403
  }
 
25404
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25405
  static const char *NodeId ();
 
25406
  /** Get the name of the node. Can be compared with NodeId(). */
 
25407
  const char *NodeName () const { return NodeId (); }
 
25408
  /** Get the number of sons. */
 
25409
  int Sons () const { return CTree::Sons (sons, 4); }
 
25410
  /** Get the n-th son.
 
25411
   *  \param n The index of the son.
 
25412
   *  \return The n-th son or NULL. */
 
25413
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
25414
  /** Get the function declarator. */
 
25415
  CTree *Declarator () const { return sons[0]; }
 
25416
  /** Get the function parameter list. */
 
25417
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
25418
  /** Get the function qualifier list. */
 
25419
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[2]; }
 
25420
  /** Get the exception specifier. */
 
25421
  CT_ExceptionSpec *ExceptionSpecs () const { return (CT_ExceptionSpec*)sons[3]; }
 
25422
  /** Replace a son.
 
25423
   *  \param old_son The son to replace.
 
25424
   *  \param new_son The new son. */
 
25425
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25426
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
25427
  }
 
25428
public:
 
25429
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
25430
  const char *__attr_name (unsigned i) const {
 
25431
    static const char *names[] = { "sons" }; return names[i];
 
25432
  }
 
25433
  const void *__attr (unsigned __i) const {
 
25434
    switch (__i) { case 0: return &sons; default: return 0; }
 
25435
  }
 
25436
#line 3298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25437
};
 
25438
 
 
25439
/** \class CT_RefDeclarator CTree.h Puma/CTree.h
 
25440
 *  Tree node representing a reference declarator.
 
25441
 *  Example: \code &a \endcode */
 
25442
 
 
25443
#line 25444 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25444
} // closed Puma
 
25445
class CCExprResolve;
 
25446
class CExprResolve;
 
25447
class WinIfExists;
 
25448
class WinImportHandler;
 
25449
class WinMacros;
 
25450
class WinAsm;
 
25451
class WinDeclSpecs;
 
25452
class WinMemberExplSpec;
 
25453
class WinTypeKeywords;
 
25454
class WinFriend;
 
25455
class ExtAC;
 
25456
class ExtACBuilderCoupling;
 
25457
class ExtACSyntaxCoupling;
 
25458
class ExtACTree;
 
25459
class ExtACKeywords;
 
25460
class ExtGnu;
 
25461
class PragmaOnceUnitState;
 
25462
class PragmaOnce;
 
25463
class CMatchSyntax;
 
25464
namespace Puma {
 
25465
 
 
25466
#line 3303 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25467
class CT_RefDeclarator : public CT_Declarator {
 
25468
#line 25469 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25469
  friend class ::CCExprResolve;
 
25470
  friend class ::CExprResolve;
 
25471
  friend class ::WinIfExists;
 
25472
  friend class ::WinImportHandler;
 
25473
  friend class ::WinMacros;
 
25474
  friend class ::WinAsm;
 
25475
  friend class ::WinDeclSpecs;
 
25476
  friend class ::WinMemberExplSpec;
 
25477
  friend class ::WinTypeKeywords;
 
25478
  friend class ::WinFriend;
 
25479
  friend class ::ExtAC;
 
25480
  friend class ::ExtACBuilderCoupling;
 
25481
  friend class ::ExtACSyntaxCoupling;
 
25482
  friend class ::ExtACTree;
 
25483
  friend class ::ExtACKeywords;
 
25484
  friend class ::ExtGnu;
 
25485
  friend class ::PragmaOnceUnitState;
 
25486
  friend class ::PragmaOnce;
 
25487
  friend class ::CMatchSyntax;
 
25488
 
 
25489
#line 3303 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25490
 
 
25491
  CTree *sons[2]; // ref, declarator
 
25492
 
 
25493
public:
 
25494
  /** Constructor.
 
25495
   *  \param r The reference operator '&'.
 
25496
   *  \param d The declarator. */
 
25497
  CT_RefDeclarator (CTree *r, CTree *d) { AddSon (sons[0], r); AddSon (sons[1], d); }
 
25498
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25499
  static const char *NodeId ();
 
25500
  /** Get the name of the node. Can be compared with NodeId(). */
 
25501
  const char *NodeName () const { return NodeId (); }
 
25502
  /** Get the number of sons. */
 
25503
  int Sons () const { return 2; }
 
25504
  /** Get the n-th son.
 
25505
   *  \param n The index of the son.
 
25506
   *  \return The n-th son or NULL. */
 
25507
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
25508
  /** Get the declarator. */
 
25509
  CTree *Declarator () const { return sons[1]; }
 
25510
  /** Replace a son.
 
25511
   *  \param old_son The son to replace.
 
25512
   *  \param new_son The new son. */
 
25513
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
25514
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
25515
  }
 
25516
public:
 
25517
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
25518
  const char *__attr_name (unsigned i) const {
 
25519
    static const char *names[] = { "sons" }; return names[i];
 
25520
  }
 
25521
  const void *__attr (unsigned __i) const {
 
25522
    switch (__i) { case 0: return &sons; default: return 0; }
 
25523
  }
 
25524
#line 3329 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25525
};
 
25526
 
 
25527
/** \class CT_PtrDeclarator CTree.h Puma/CTree.h
 
25528
 *  Tree node representing a pointer declarator.
 
25529
 *  Example: \code *a \endcode */
 
25530
 
 
25531
#line 25532 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25532
} // closed Puma
 
25533
class CCExprResolve;
 
25534
class CExprResolve;
 
25535
class WinIfExists;
 
25536
class WinImportHandler;
 
25537
class WinMacros;
 
25538
class WinAsm;
 
25539
class WinDeclSpecs;
 
25540
class WinMemberExplSpec;
 
25541
class WinTypeKeywords;
 
25542
class WinFriend;
 
25543
class ExtAC;
 
25544
class ExtACBuilderCoupling;
 
25545
class ExtACSyntaxCoupling;
 
25546
class ExtACTree;
 
25547
class ExtACKeywords;
 
25548
class ExtGnu;
 
25549
class PragmaOnceUnitState;
 
25550
class PragmaOnce;
 
25551
class CMatchSyntax;
 
25552
namespace Puma {
 
25553
 
 
25554
#line 3334 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25555
class CT_PtrDeclarator : public CT_Declarator {
 
25556
#line 25557 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25557
  friend class ::CCExprResolve;
 
25558
  friend class ::CExprResolve;
 
25559
  friend class ::WinIfExists;
 
25560
  friend class ::WinImportHandler;
 
25561
  friend class ::WinMacros;
 
25562
  friend class ::WinAsm;
 
25563
  friend class ::WinDeclSpecs;
 
25564
  friend class ::WinMemberExplSpec;
 
25565
  friend class ::WinTypeKeywords;
 
25566
  friend class ::WinFriend;
 
25567
  friend class ::ExtAC;
 
25568
  friend class ::ExtACBuilderCoupling;
 
25569
  friend class ::ExtACSyntaxCoupling;
 
25570
  friend class ::ExtACTree;
 
25571
  friend class ::ExtACKeywords;
 
25572
  friend class ::ExtGnu;
 
25573
  friend class ::PragmaOnceUnitState;
 
25574
  friend class ::PragmaOnce;
 
25575
  friend class ::CMatchSyntax;
 
25576
 
 
25577
#line 3334 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25578
 
 
25579
  CTree *sons[3]; // ptr, cv_quals, declarator
 
25580
 
 
25581
public:
 
25582
  /** Constructor.
 
25583
   *  \param p The pointer operator '*'.
 
25584
   *  \param c The const/volatile pointer qualifier sequence.
 
25585
   *  \param d The declarator. */
 
25586
  CT_PtrDeclarator (CTree *p, CTree *c, CTree *d) {
 
25587
    AddSon (sons[0], p); AddSon (sons[1], c); AddSon (sons[2], d); 
 
25588
  }
 
25589
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25590
  static const char *NodeId ();
 
25591
  /** Get the name of the node. Can be compared with NodeId(). */
 
25592
  const char *NodeName () const { return NodeId (); }
 
25593
  /** Get the number of sons. */
 
25594
  int Sons () const { return CTree::Sons (sons, 3); }
 
25595
  /** Get the n-th son.
 
25596
   *  \param n The index of the son.
 
25597
   *  \return The n-th son or NULL. */
 
25598
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
25599
  /** Get the declarator. */
 
25600
  CTree *Declarator () const { return sons[2]; }
 
25601
  /** Get the const/volatile qualifier sequence. */
 
25602
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[1]; }
 
25603
  /** Replace a son.
 
25604
   *  \param old_son The son to replace.
 
25605
   *  \param new_son The new son. */
 
25606
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25607
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
25608
  }
 
25609
public:
 
25610
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
25611
  const char *__attr_name (unsigned i) const {
 
25612
    static const char *names[] = { "sons" }; return names[i];
 
25613
  }
 
25614
  const void *__attr (unsigned __i) const {
 
25615
    switch (__i) { case 0: return &sons; default: return 0; }
 
25616
  }
 
25617
#line 3365 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25618
};
 
25619
 
 
25620
/** \class CT_MembPtrDeclarator CTree.h Puma/CTree.h
 
25621
 *  Tree node representing a member pointer declarator.
 
25622
 *  Example: \code *X::a \endcode */
 
25623
 
 
25624
#line 25625 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25625
} // closed Puma
 
25626
class CCExprResolve;
 
25627
class CExprResolve;
 
25628
class WinIfExists;
 
25629
class WinImportHandler;
 
25630
class WinMacros;
 
25631
class WinAsm;
 
25632
class WinDeclSpecs;
 
25633
class WinMemberExplSpec;
 
25634
class WinTypeKeywords;
 
25635
class WinFriend;
 
25636
class ExtAC;
 
25637
class ExtACBuilderCoupling;
 
25638
class ExtACSyntaxCoupling;
 
25639
class ExtACTree;
 
25640
class ExtACKeywords;
 
25641
class ExtGnu;
 
25642
class PragmaOnceUnitState;
 
25643
class PragmaOnce;
 
25644
class CMatchSyntax;
 
25645
namespace Puma {
 
25646
 
 
25647
#line 3370 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25648
class CT_MembPtrDeclarator : public CT_Declarator {
 
25649
#line 25650 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25650
  friend class ::CCExprResolve;
 
25651
  friend class ::CExprResolve;
 
25652
  friend class ::WinIfExists;
 
25653
  friend class ::WinImportHandler;
 
25654
  friend class ::WinMacros;
 
25655
  friend class ::WinAsm;
 
25656
  friend class ::WinDeclSpecs;
 
25657
  friend class ::WinMemberExplSpec;
 
25658
  friend class ::WinTypeKeywords;
 
25659
  friend class ::WinFriend;
 
25660
  friend class ::ExtAC;
 
25661
  friend class ::ExtACBuilderCoupling;
 
25662
  friend class ::ExtACSyntaxCoupling;
 
25663
  friend class ::ExtACTree;
 
25664
  friend class ::ExtACKeywords;
 
25665
  friend class ::ExtGnu;
 
25666
  friend class ::PragmaOnceUnitState;
 
25667
  friend class ::PragmaOnce;
 
25668
  friend class ::CMatchSyntax;
 
25669
 
 
25670
#line 3370 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25671
 
 
25672
  CTree *sons[5]; // class, colon, ptr, cv_quals, declarator
 
25673
 
 
25674
public:
 
25675
  /** Constructor.
 
25676
   *  \param c The class name.
 
25677
   *  \param cc The scope operator '::'.
 
25678
   *  \param p The name of the pointer.
 
25679
   *  \param q The const/volatile pointer qualifier sequence.
 
25680
   *  \param d The declarator. */
 
25681
  CT_MembPtrDeclarator (CTree *c, CTree *cc, CTree *p, CTree *q, CTree *d) {
 
25682
    AddSon (sons[0], c); AddSon (sons[1], cc); AddSon (sons[2], p); 
 
25683
    AddSon (sons[3], q); AddSon (sons[4], d); 
 
25684
  }
 
25685
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25686
  static const char *NodeId ();
 
25687
  /** Get the name of the node. Can be compared with NodeId(). */
 
25688
  const char *NodeName () const { return NodeId (); }
 
25689
  /** Get the number of sons. */
 
25690
  int Sons () const { return CTree::Sons (sons, 5); }
 
25691
  /** Get the n-th son.
 
25692
   *  \param n The index of the son.
 
25693
   *  \return The n-th son or NULL. */
 
25694
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
25695
  /** Get the name of the declared pointer. */
 
25696
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
25697
  /** Get the declarator. */
 
25698
  CTree *Declarator () const { return sons[4]; }
 
25699
  /** Get the const/volatile qualifier sequence. */
 
25700
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[3]; }
 
25701
  /** Replace a son.
 
25702
   *  \param old_son The son to replace.
 
25703
   *  \param new_son The new son. */
 
25704
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25705
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
25706
  }
 
25707
public:
 
25708
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
25709
  const char *__attr_name (unsigned i) const {
 
25710
    static const char *names[] = { "sons" }; return names[i];
 
25711
  }
 
25712
  const void *__attr (unsigned __i) const {
 
25713
    switch (__i) { case 0: return &sons; default: return 0; }
 
25714
  }
 
25715
#line 3406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25716
};
 
25717
 
 
25718
/** \class CT_BitFieldDeclarator CTree.h Puma/CTree.h
 
25719
 *  Tree node representing a bit-field declarator.
 
25720
 *  Example: \code a : 2 \endcode */
 
25721
 
 
25722
#line 25723 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25723
} // closed Puma
 
25724
class CCExprResolve;
 
25725
class CExprResolve;
 
25726
class WinIfExists;
 
25727
class WinImportHandler;
 
25728
class WinMacros;
 
25729
class WinAsm;
 
25730
class WinDeclSpecs;
 
25731
class WinMemberExplSpec;
 
25732
class WinTypeKeywords;
 
25733
class WinFriend;
 
25734
class ExtAC;
 
25735
class ExtACBuilderCoupling;
 
25736
class ExtACSyntaxCoupling;
 
25737
class ExtACTree;
 
25738
class ExtACKeywords;
 
25739
class ExtGnu;
 
25740
class PragmaOnceUnitState;
 
25741
class PragmaOnce;
 
25742
class CMatchSyntax;
 
25743
namespace Puma {
 
25744
 
 
25745
#line 3411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25746
class CT_BitFieldDeclarator : public CT_Declarator, public CSemObject {
 
25747
#line 25748 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25748
  friend class ::CCExprResolve;
 
25749
  friend class ::CExprResolve;
 
25750
  friend class ::WinIfExists;
 
25751
  friend class ::WinImportHandler;
 
25752
  friend class ::WinMacros;
 
25753
  friend class ::WinAsm;
 
25754
  friend class ::WinDeclSpecs;
 
25755
  friend class ::WinMemberExplSpec;
 
25756
  friend class ::WinTypeKeywords;
 
25757
  friend class ::WinFriend;
 
25758
  friend class ::ExtAC;
 
25759
  friend class ::ExtACBuilderCoupling;
 
25760
  friend class ::ExtACSyntaxCoupling;
 
25761
  friend class ::ExtACTree;
 
25762
  friend class ::ExtACKeywords;
 
25763
  friend class ::ExtGnu;
 
25764
  friend class ::PragmaOnceUnitState;
 
25765
  friend class ::PragmaOnce;
 
25766
  friend class ::CMatchSyntax;
 
25767
 
 
25768
#line 3411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25769
 
 
25770
  CTree *sons[3]; // declarator, colon, expr
 
25771
 
 
25772
public:
 
25773
  /** Constructor.
 
25774
   *  \param d The declarator.
 
25775
   *  \param c The colon between the declarator and the bit count.
 
25776
   *  \param e The expression specifying the number of bits. */
 
25777
  CT_BitFieldDeclarator (CTree *d, CTree *c, CTree *e = 0) {
 
25778
    AddSon (sons[0], d); AddSon (sons[1], c); AddSon (sons[2], e); 
 
25779
  }
 
25780
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25781
  static const char *NodeId ();
 
25782
  /** Get the name of the node. Can be compared with NodeId(). */
 
25783
  const char *NodeName () const { return NodeId (); }
 
25784
  /** Get the number of sons. */
 
25785
  int Sons () const { return CTree::Sons (sons, 3); }
 
25786
  /** Get the n-th son.
 
25787
   *  \param n The index of the son.
 
25788
   *  \return The n-th son or NULL. */
 
25789
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
25790
  /** Get the declarator. */
 
25791
  CTree *Declarator () const { return sons[0]; }
 
25792
  /** Get the expression specifying the number of bits. */
 
25793
  CTree *Expr () const { return sons[2]; }
 
25794
  /** Set the expression specifying the number of bits. */
 
25795
  void FieldSize (CTree *s) { AddSon (sons[2], s); }
 
25796
  /** Get the semantic information about the declared bit-field. */
 
25797
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
25798
  /** Replace a son.
 
25799
   *  \param old_son The son to replace.
 
25800
   *  \param new_son The new son. */
 
25801
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25802
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
25803
  }
 
25804
public:
 
25805
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
25806
  const char *__attr_name (unsigned i) const {
 
25807
    static const char *names[] = { "sons" }; return names[i];
 
25808
  }
 
25809
  const void *__attr (unsigned __i) const {
 
25810
    switch (__i) { case 0: return &sons; default: return 0; }
 
25811
  }
 
25812
#line 3446 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25813
};
 
25814
 
 
25815
/*****************************************************************************/
 
25816
/*                                                                           */
 
25817
/*                              Statements                                   */
 
25818
/*                                                                           */
 
25819
/*****************************************************************************/
 
25820
 
 
25821
/** \class CT_Statement CTree.h Puma/CTree.h
 
25822
 *  Base class for all tree nodes representing statements. */
 
25823
 
 
25824
#line 25825 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25825
} // closed Puma
 
25826
class CCExprResolve;
 
25827
class CExprResolve;
 
25828
class WinIfExists;
 
25829
class WinImportHandler;
 
25830
class WinMacros;
 
25831
class WinAsm;
 
25832
class WinDeclSpecs;
 
25833
class WinMemberExplSpec;
 
25834
class WinTypeKeywords;
 
25835
class WinFriend;
 
25836
class ExtAC;
 
25837
class ExtACBuilderCoupling;
 
25838
class ExtACSyntaxCoupling;
 
25839
class ExtACTree;
 
25840
class ExtACKeywords;
 
25841
class ExtGnu;
 
25842
class PragmaOnceUnitState;
 
25843
class PragmaOnce;
 
25844
class CMatchSyntax;
 
25845
namespace Puma {
 
25846
 
 
25847
#line 3456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25848
class CT_Statement : public CTree {
 
25849
#line 25850 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25850
  friend class ::CCExprResolve;
 
25851
  friend class ::CExprResolve;
 
25852
  friend class ::WinIfExists;
 
25853
  friend class ::WinImportHandler;
 
25854
  friend class ::WinMacros;
 
25855
  friend class ::WinAsm;
 
25856
  friend class ::WinDeclSpecs;
 
25857
  friend class ::WinMemberExplSpec;
 
25858
  friend class ::WinTypeKeywords;
 
25859
  friend class ::WinFriend;
 
25860
  friend class ::ExtAC;
 
25861
  friend class ::ExtACBuilderCoupling;
 
25862
  friend class ::ExtACSyntaxCoupling;
 
25863
  friend class ::ExtACTree;
 
25864
  friend class ::ExtACKeywords;
 
25865
  friend class ::ExtGnu;
 
25866
  friend class ::PragmaOnceUnitState;
 
25867
  friend class ::PragmaOnce;
 
25868
  friend class ::CMatchSyntax;
 
25869
 
 
25870
#line 3456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25871
 
 
25872
protected:
 
25873
  /** Constructor. */
 
25874
  CT_Statement () {}
 
25875
  /** Get this. */
 
25876
  virtual CT_Statement *IsStatement () { return this; }
 
25877
public:
 
25878
  typedef AC::TLE __AttrTypes;
 
25879
  const char *__attr_name (unsigned i) const { return 0; }
 
25880
  const void *__attr (unsigned __i) const { return 0; }
 
25881
#line 3462 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25882
};
 
25883
 
 
25884
/** \class CT_LabelStmt CTree.h Puma/CTree.h
 
25885
 *  Tree node representing a label statement.
 
25886
 *  Example: \code incr_a: a++; \endcode */
 
25887
 
 
25888
#line 25889 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25889
} // closed Puma
 
25890
class CCExprResolve;
 
25891
class CExprResolve;
 
25892
class WinIfExists;
 
25893
class WinImportHandler;
 
25894
class WinMacros;
 
25895
class WinAsm;
 
25896
class WinDeclSpecs;
 
25897
class WinMemberExplSpec;
 
25898
class WinTypeKeywords;
 
25899
class WinFriend;
 
25900
class ExtAC;
 
25901
class ExtACBuilderCoupling;
 
25902
class ExtACSyntaxCoupling;
 
25903
class ExtACTree;
 
25904
class ExtACKeywords;
 
25905
class ExtGnu;
 
25906
class PragmaOnceUnitState;
 
25907
class PragmaOnce;
 
25908
class CMatchSyntax;
 
25909
namespace Puma {
 
25910
 
 
25911
#line 3467 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25912
class CT_LabelStmt : public CT_Statement {
 
25913
#line 25914 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25914
  friend class ::CCExprResolve;
 
25915
  friend class ::CExprResolve;
 
25916
  friend class ::WinIfExists;
 
25917
  friend class ::WinImportHandler;
 
25918
  friend class ::WinMacros;
 
25919
  friend class ::WinAsm;
 
25920
  friend class ::WinDeclSpecs;
 
25921
  friend class ::WinMemberExplSpec;
 
25922
  friend class ::WinTypeKeywords;
 
25923
  friend class ::WinFriend;
 
25924
  friend class ::ExtAC;
 
25925
  friend class ::ExtACBuilderCoupling;
 
25926
  friend class ::ExtACSyntaxCoupling;
 
25927
  friend class ::ExtACTree;
 
25928
  friend class ::ExtACKeywords;
 
25929
  friend class ::ExtGnu;
 
25930
  friend class ::PragmaOnceUnitState;
 
25931
  friend class ::PragmaOnce;
 
25932
  friend class ::CMatchSyntax;
 
25933
 
 
25934
#line 3467 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25935
 
 
25936
  CTree *sons[3]; // id, colon, stmt
 
25937
 
 
25938
public:
 
25939
  /** Constructor.
 
25940
   *  \param id The name of the label.
 
25941
   *  \param c The colon behind the label.
 
25942
   *  \param stmt The statement following the label. */
 
25943
  CT_LabelStmt (CTree *id, CTree *c, CTree *stmt) {
 
25944
    AddSon (sons[0], id); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
25945
  }
 
25946
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
25947
  static const char *NodeId ();
 
25948
  /** Get the name of the node. Can be compared with NodeId(). */
 
25949
  const char *NodeName () const { return NodeId (); }
 
25950
  /** Get the number of sons. */
 
25951
  int Sons () const { return 3; }
 
25952
  /** Get the n-th son.
 
25953
   *  \param n The index of the son.
 
25954
   *  \return The n-th son or NULL. */
 
25955
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
25956
  /** Get the statement. */
 
25957
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
25958
  /** Get the name of the label. */
 
25959
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[0]; }
 
25960
  /** Replace a son.
 
25961
   *  \param old_son The son to replace.
 
25962
   *  \param new_son The new son. */
 
25963
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
25964
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
25965
  }
 
25966
public:
 
25967
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
25968
  const char *__attr_name (unsigned i) const {
 
25969
    static const char *names[] = { "sons" }; return names[i];
 
25970
  }
 
25971
  const void *__attr (unsigned __i) const {
 
25972
    switch (__i) { case 0: return &sons; default: return 0; }
 
25973
  }
 
25974
#line 3498 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
25975
};
 
25976
 
 
25977
/** \class CT_DefaultStmt CTree.h Puma/CTree.h
 
25978
 *  Tree node representing a default statement of a switch statement.
 
25979
 *  Example: \code default: break; \endcode */
 
25980
 
 
25981
#line 25982 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
25982
} // closed Puma
 
25983
class CCExprResolve;
 
25984
class CExprResolve;
 
25985
class WinIfExists;
 
25986
class WinImportHandler;
 
25987
class WinMacros;
 
25988
class WinAsm;
 
25989
class WinDeclSpecs;
 
25990
class WinMemberExplSpec;
 
25991
class WinTypeKeywords;
 
25992
class WinFriend;
 
25993
class ExtAC;
 
25994
class ExtACBuilderCoupling;
 
25995
class ExtACSyntaxCoupling;
 
25996
class ExtACTree;
 
25997
class ExtACKeywords;
 
25998
class ExtGnu;
 
25999
class PragmaOnceUnitState;
 
26000
class PragmaOnce;
 
26001
class CMatchSyntax;
 
26002
namespace Puma {
 
26003
 
 
26004
#line 3503 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26005
class CT_DefaultStmt : public CT_Statement {
 
26006
#line 26007 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26007
  friend class ::CCExprResolve;
 
26008
  friend class ::CExprResolve;
 
26009
  friend class ::WinIfExists;
 
26010
  friend class ::WinImportHandler;
 
26011
  friend class ::WinMacros;
 
26012
  friend class ::WinAsm;
 
26013
  friend class ::WinDeclSpecs;
 
26014
  friend class ::WinMemberExplSpec;
 
26015
  friend class ::WinTypeKeywords;
 
26016
  friend class ::WinFriend;
 
26017
  friend class ::ExtAC;
 
26018
  friend class ::ExtACBuilderCoupling;
 
26019
  friend class ::ExtACSyntaxCoupling;
 
26020
  friend class ::ExtACTree;
 
26021
  friend class ::ExtACKeywords;
 
26022
  friend class ::ExtGnu;
 
26023
  friend class ::PragmaOnceUnitState;
 
26024
  friend class ::PragmaOnce;
 
26025
  friend class ::CMatchSyntax;
 
26026
 
 
26027
#line 3503 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26028
 
 
26029
  CTree *sons[3]; // keyword, colon, stmt
 
26030
 
 
26031
public:
 
26032
  /** Constructor.
 
26033
   *  \param kw The keyword 'default'.
 
26034
   *  \param c The colon behind the keyword.
 
26035
   *  \param stmt The statement of the default case. */
 
26036
  CT_DefaultStmt (CTree *kw, CTree *c, CTree *stmt) {
 
26037
    AddSon (sons[0], kw); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
26038
  }
 
26039
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26040
  static const char *NodeId ();
 
26041
  /** Get the name of the node. Can be compared with NodeId(). */
 
26042
  const char *NodeName () const { return NodeId (); }
 
26043
  /** Get the number of sons. */
 
26044
  int Sons () const { return 3; }
 
26045
  /** Get the n-th son.
 
26046
   *  \param n The index of the son.
 
26047
   *  \return The n-th son or NULL. */
 
26048
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
26049
  /** Get the statement. */
 
26050
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
26051
  /** Replace a son.
 
26052
   *  \param old_son The son to replace.
 
26053
   *  \param new_son The new son. */
 
26054
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26055
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
26056
  }
 
26057
public:
 
26058
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
26059
  const char *__attr_name (unsigned i) const {
 
26060
    static const char *names[] = { "sons" }; return names[i];
 
26061
  }
 
26062
  const void *__attr (unsigned __i) const {
 
26063
    switch (__i) { case 0: return &sons; default: return 0; }
 
26064
  }
 
26065
#line 3532 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26066
};
 
26067
 
 
26068
/** \class CT_TryStmt CTree.h Puma/CTree.h
 
26069
 *  Tree node representing a try-catch statement.
 
26070
 *  Example: \code try { f(); } catch (...) {} \endcode */
 
26071
 
 
26072
#line 26073 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26073
} // closed Puma
 
26074
class CCExprResolve;
 
26075
class CExprResolve;
 
26076
class WinIfExists;
 
26077
class WinImportHandler;
 
26078
class WinMacros;
 
26079
class WinAsm;
 
26080
class WinDeclSpecs;
 
26081
class WinMemberExplSpec;
 
26082
class WinTypeKeywords;
 
26083
class WinFriend;
 
26084
class ExtAC;
 
26085
class ExtACBuilderCoupling;
 
26086
class ExtACSyntaxCoupling;
 
26087
class ExtACTree;
 
26088
class ExtACKeywords;
 
26089
class ExtGnu;
 
26090
class PragmaOnceUnitState;
 
26091
class PragmaOnce;
 
26092
class CMatchSyntax;
 
26093
namespace Puma {
 
26094
 
 
26095
#line 3537 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26096
class CT_TryStmt : public CT_Statement {
 
26097
#line 26098 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26098
  friend class ::CCExprResolve;
 
26099
  friend class ::CExprResolve;
 
26100
  friend class ::WinIfExists;
 
26101
  friend class ::WinImportHandler;
 
26102
  friend class ::WinMacros;
 
26103
  friend class ::WinAsm;
 
26104
  friend class ::WinDeclSpecs;
 
26105
  friend class ::WinMemberExplSpec;
 
26106
  friend class ::WinTypeKeywords;
 
26107
  friend class ::WinFriend;
 
26108
  friend class ::ExtAC;
 
26109
  friend class ::ExtACBuilderCoupling;
 
26110
  friend class ::ExtACSyntaxCoupling;
 
26111
  friend class ::ExtACTree;
 
26112
  friend class ::ExtACKeywords;
 
26113
  friend class ::ExtGnu;
 
26114
  friend class ::PragmaOnceUnitState;
 
26115
  friend class ::PragmaOnce;
 
26116
  friend class ::CMatchSyntax;
 
26117
 
 
26118
#line 3537 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26119
 
 
26120
  CTree *sons[3]; // try, stmt, handlers
 
26121
 
 
26122
public:
 
26123
  /** Constructor.
 
26124
   *  \param t The keyword 'try'.
 
26125
   *  \param s The statement enclosed in the try-catch block.
 
26126
   *  \param h The exception handler sequence. */
 
26127
  CT_TryStmt (CTree *t, CTree *s, CTree *h) {
 
26128
    AddSon (sons[0], t); AddSon (sons[1], s); AddSon (sons[2], h); 
 
26129
  }
 
26130
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26131
  static const char *NodeId ();
 
26132
  /** Get the name of the node. Can be compared with NodeId(). */
 
26133
  const char *NodeName () const { return NodeId (); }
 
26134
  /** Get the number of sons. */
 
26135
  int Sons () const { return 3; }
 
26136
  /** Get the n-th son.
 
26137
   *  \param n The index of the son.
 
26138
   *  \return The n-th son or NULL. */
 
26139
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
26140
  /** Get the enclosed statement. */
 
26141
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
26142
  /** Get the exception handler sequence. */
 
26143
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[2]; }
 
26144
  /** Replace a son.
 
26145
   *  \param old_son The son to replace.
 
26146
   *  \param new_son The new son. */
 
26147
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26148
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
26149
  }
 
26150
public:
 
26151
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
26152
  const char *__attr_name (unsigned i) const {
 
26153
    static const char *names[] = { "sons" }; return names[i];
 
26154
  }
 
26155
  const void *__attr (unsigned __i) const {
 
26156
    switch (__i) { case 0: return &sons; default: return 0; }
 
26157
  }
 
26158
#line 3568 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26159
};
 
26160
 
 
26161
/** \class CT_CaseStmt CTree.h Puma/CTree.h
 
26162
 *  Tree node representing a case statement.
 
26163
 *  Example: \code case 42: a=42; \endcode */
 
26164
 
 
26165
#line 26166 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26166
} // closed Puma
 
26167
class CCExprResolve;
 
26168
class CExprResolve;
 
26169
class WinIfExists;
 
26170
class WinImportHandler;
 
26171
class WinMacros;
 
26172
class WinAsm;
 
26173
class WinDeclSpecs;
 
26174
class WinMemberExplSpec;
 
26175
class WinTypeKeywords;
 
26176
class WinFriend;
 
26177
class ExtAC;
 
26178
class ExtACBuilderCoupling;
 
26179
class ExtACSyntaxCoupling;
 
26180
class ExtACTree;
 
26181
class ExtACKeywords;
 
26182
class ExtGnu;
 
26183
class PragmaOnceUnitState;
 
26184
class PragmaOnce;
 
26185
class CMatchSyntax;
 
26186
namespace Puma {
 
26187
 
 
26188
#line 3573 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26189
class CT_CaseStmt : public CT_Statement {
 
26190
#line 26191 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26191
  friend class ::CCExprResolve;
 
26192
  friend class ::CExprResolve;
 
26193
  friend class ::WinIfExists;
 
26194
  friend class ::WinImportHandler;
 
26195
  friend class ::WinMacros;
 
26196
  friend class ::WinAsm;
 
26197
  friend class ::WinDeclSpecs;
 
26198
  friend class ::WinMemberExplSpec;
 
26199
  friend class ::WinTypeKeywords;
 
26200
  friend class ::WinFriend;
 
26201
  friend class ::ExtAC;
 
26202
  friend class ::ExtACBuilderCoupling;
 
26203
  friend class ::ExtACSyntaxCoupling;
 
26204
  friend class ::ExtACTree;
 
26205
  friend class ::ExtACKeywords;
 
26206
  friend class ::ExtGnu;
 
26207
  friend class ::PragmaOnceUnitState;
 
26208
  friend class ::PragmaOnce;
 
26209
  friend class ::CMatchSyntax;
 
26210
 
 
26211
#line 3573 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26212
 
 
26213
  CTree *sons[4]; // keyword, expr, colon, stmt
 
26214
 
 
26215
public:
 
26216
  /** Constructor.
 
26217
   *  \param kw The keyword 'case'.
 
26218
   *  \param expr The constant expression specifying the case value.
 
26219
   *  \param c The colon.
 
26220
   *  \param stmt The statement of the case. */
 
26221
  CT_CaseStmt (CTree *kw, CTree *expr, CTree *c, CTree *stmt) {
 
26222
    AddSon (sons[0], kw); AddSon (sons[1], expr); 
 
26223
    AddSon (sons[2], c); AddSon (sons[3], stmt); 
 
26224
  }
 
26225
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26226
  static const char *NodeId ();
 
26227
  /** Get the name of the node. Can be compared with NodeId(). */
 
26228
  const char *NodeName () const { return NodeId (); }
 
26229
  /** Get the number of sons. */
 
26230
  int Sons () const { return 4; }
 
26231
  /** Get the n-th son.
 
26232
   *  \param n The index of the son.
 
26233
   *  \return The n-th son or NULL. */
 
26234
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
26235
  /** Get the statement. */
 
26236
  CT_Statement *Statement () const { return (CT_Statement*)sons[3]; }
 
26237
  /** Get the expression specifying the case value. */
 
26238
  CTree *Expr () const { return sons[1]; }
 
26239
  /** Replace a son.
 
26240
   *  \param old_son The son to replace.
 
26241
   *  \param new_son The new son. */
 
26242
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26243
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
26244
  }
 
26245
public:
 
26246
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
26247
  const char *__attr_name (unsigned i) const {
 
26248
    static const char *names[] = { "sons" }; return names[i];
 
26249
  }
 
26250
  const void *__attr (unsigned __i) const {
 
26251
    switch (__i) { case 0: return &sons; default: return 0; }
 
26252
  }
 
26253
#line 3606 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26254
};
 
26255
 
 
26256
/** \class CT_ExprStmt CTree.h Puma/CTree.h
 
26257
 *  Tree node representing an expression statement.
 
26258
 *  Example: \code a+b; \endcode */
 
26259
 
 
26260
#line 26261 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26261
} // closed Puma
 
26262
class CCExprResolve;
 
26263
class CExprResolve;
 
26264
class WinIfExists;
 
26265
class WinImportHandler;
 
26266
class WinMacros;
 
26267
class WinAsm;
 
26268
class WinDeclSpecs;
 
26269
class WinMemberExplSpec;
 
26270
class WinTypeKeywords;
 
26271
class WinFriend;
 
26272
class ExtAC;
 
26273
class ExtACBuilderCoupling;
 
26274
class ExtACSyntaxCoupling;
 
26275
class ExtACTree;
 
26276
class ExtACKeywords;
 
26277
class ExtGnu;
 
26278
class PragmaOnceUnitState;
 
26279
class PragmaOnce;
 
26280
class CMatchSyntax;
 
26281
namespace Puma {
 
26282
 
 
26283
#line 3611 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26284
class CT_ExprStmt : public CT_Statement {
 
26285
#line 26286 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26286
  friend class ::CCExprResolve;
 
26287
  friend class ::CExprResolve;
 
26288
  friend class ::WinIfExists;
 
26289
  friend class ::WinImportHandler;
 
26290
  friend class ::WinMacros;
 
26291
  friend class ::WinAsm;
 
26292
  friend class ::WinDeclSpecs;
 
26293
  friend class ::WinMemberExplSpec;
 
26294
  friend class ::WinTypeKeywords;
 
26295
  friend class ::WinFriend;
 
26296
  friend class ::ExtAC;
 
26297
  friend class ::ExtACBuilderCoupling;
 
26298
  friend class ::ExtACSyntaxCoupling;
 
26299
  friend class ::ExtACTree;
 
26300
  friend class ::ExtACKeywords;
 
26301
  friend class ::ExtGnu;
 
26302
  friend class ::PragmaOnceUnitState;
 
26303
  friend class ::PragmaOnce;
 
26304
  friend class ::CMatchSyntax;
 
26305
 
 
26306
#line 3611 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26307
 
 
26308
  CTree *sons[2]; // expr, semi_colon
 
26309
 
 
26310
public:
 
26311
  /** Constructor.
 
26312
   *  \param expr The expression.
 
26313
   *  \param sc The trailing semi-colon. */
 
26314
  CT_ExprStmt (CTree *expr, CTree *sc) { AddSon (sons[0], expr); AddSon (sons[1], sc); }
 
26315
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26316
  static const char *NodeId ();
 
26317
  /** Get the name of the node. Can be compared with NodeId(). */
 
26318
  const char *NodeName () const { return NodeId (); }
 
26319
  /** Get the number of sons. */
 
26320
  int Sons () const { return CTree::Sons (sons, 2); }
 
26321
  /** Get the n-th son.
 
26322
   *  \param n The index of the son.
 
26323
   *  \return The n-th son or NULL. */
 
26324
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
26325
  /** Get the expression. */
 
26326
  CTree *Expr () const { return sons[0]; }
 
26327
  /** Replace a son.
 
26328
   *  \param old_son The son to replace.
 
26329
   *  \param new_son The new son. */
 
26330
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26331
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
26332
  }
 
26333
public:
 
26334
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
26335
  const char *__attr_name (unsigned i) const {
 
26336
    static const char *names[] = { "sons" }; return names[i];
 
26337
  }
 
26338
  const void *__attr (unsigned __i) const {
 
26339
    switch (__i) { case 0: return &sons; default: return 0; }
 
26340
  }
 
26341
#line 3637 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26342
};
 
26343
 
 
26344
/** \class CT_DeclStmt CTree.h Puma/CTree.h
 
26345
 *  Tree node representing a declaration statement.
 
26346
 *  Example: \code int i = 0; \endcode */
 
26347
 
 
26348
#line 26349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26349
} // closed Puma
 
26350
class CCExprResolve;
 
26351
class CExprResolve;
 
26352
class WinIfExists;
 
26353
class WinImportHandler;
 
26354
class WinMacros;
 
26355
class WinAsm;
 
26356
class WinDeclSpecs;
 
26357
class WinMemberExplSpec;
 
26358
class WinTypeKeywords;
 
26359
class WinFriend;
 
26360
class ExtAC;
 
26361
class ExtACBuilderCoupling;
 
26362
class ExtACSyntaxCoupling;
 
26363
class ExtACTree;
 
26364
class ExtACKeywords;
 
26365
class ExtGnu;
 
26366
class PragmaOnceUnitState;
 
26367
class PragmaOnce;
 
26368
class CMatchSyntax;
 
26369
namespace Puma {
 
26370
 
 
26371
#line 3642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26372
class CT_DeclStmt : public CT_Statement {
 
26373
#line 26374 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26374
  friend class ::CCExprResolve;
 
26375
  friend class ::CExprResolve;
 
26376
  friend class ::WinIfExists;
 
26377
  friend class ::WinImportHandler;
 
26378
  friend class ::WinMacros;
 
26379
  friend class ::WinAsm;
 
26380
  friend class ::WinDeclSpecs;
 
26381
  friend class ::WinMemberExplSpec;
 
26382
  friend class ::WinTypeKeywords;
 
26383
  friend class ::WinFriend;
 
26384
  friend class ::ExtAC;
 
26385
  friend class ::ExtACBuilderCoupling;
 
26386
  friend class ::ExtACSyntaxCoupling;
 
26387
  friend class ::ExtACTree;
 
26388
  friend class ::ExtACKeywords;
 
26389
  friend class ::ExtGnu;
 
26390
  friend class ::PragmaOnceUnitState;
 
26391
  friend class ::PragmaOnce;
 
26392
  friend class ::CMatchSyntax;
 
26393
 
 
26394
#line 3642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26395
 
 
26396
  CTree *_decl;
 
26397
 
 
26398
public:
 
26399
  /** Constructor.
 
26400
   *  \param decl The declaration. */
 
26401
  CT_DeclStmt (CTree *decl) { AddSon (_decl, decl); }
 
26402
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26403
  static const char *NodeId ();
 
26404
  /** Get the name of the node. Can be compared with NodeId(). */
 
26405
  const char *NodeName () const { return NodeId (); }
 
26406
  /** Get the number of sons. */
 
26407
  int Sons () const { return 1; }
 
26408
  /** Get the n-th son.
 
26409
   *  \param n The index of the son.
 
26410
   *  \return The n-th son or NULL. */
 
26411
  CTree *Son (int n) const { return n == 0 ? _decl : (CTree*)0; }
 
26412
  /** Replace a son.
 
26413
   *  \param old_son The son to replace.
 
26414
   *  \param new_son The new son. */
 
26415
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
26416
   { CTree::ReplaceSon (_decl, old_son, new_son); }
 
26417
public:
 
26418
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
26419
  const char *__attr_name (unsigned i) const {
 
26420
    static const char *names[] = { "_decl" }; return names[i];
 
26421
  }
 
26422
  const void *__attr (unsigned __i) const {
 
26423
    switch (__i) { case 0: return &_decl; default: return 0; }
 
26424
  }
 
26425
#line 3664 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26426
};
 
26427
 
 
26428
/** \class CT_SwitchStmt CTree.h Puma/CTree.h
 
26429
 *  Tree node representing a switch statement.
 
26430
 *  Example: \code switch(a) { case 0: a++; } \endcode */
 
26431
 
 
26432
#line 26433 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26433
} // closed Puma
 
26434
class CCExprResolve;
 
26435
class CExprResolve;
 
26436
class WinIfExists;
 
26437
class WinImportHandler;
 
26438
class WinMacros;
 
26439
class WinAsm;
 
26440
class WinDeclSpecs;
 
26441
class WinMemberExplSpec;
 
26442
class WinTypeKeywords;
 
26443
class WinFriend;
 
26444
class ExtAC;
 
26445
class ExtACBuilderCoupling;
 
26446
class ExtACSyntaxCoupling;
 
26447
class ExtACTree;
 
26448
class ExtACKeywords;
 
26449
class ExtGnu;
 
26450
class PragmaOnceUnitState;
 
26451
class PragmaOnce;
 
26452
class CMatchSyntax;
 
26453
namespace Puma {
 
26454
 
 
26455
#line 3669 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26456
class CT_SwitchStmt : public CT_Statement, public CSemScope {
 
26457
#line 26458 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26458
  friend class ::CCExprResolve;
 
26459
  friend class ::CExprResolve;
 
26460
  friend class ::WinIfExists;
 
26461
  friend class ::WinImportHandler;
 
26462
  friend class ::WinMacros;
 
26463
  friend class ::WinAsm;
 
26464
  friend class ::WinDeclSpecs;
 
26465
  friend class ::WinMemberExplSpec;
 
26466
  friend class ::WinTypeKeywords;
 
26467
  friend class ::WinFriend;
 
26468
  friend class ::ExtAC;
 
26469
  friend class ::ExtACBuilderCoupling;
 
26470
  friend class ::ExtACSyntaxCoupling;
 
26471
  friend class ::ExtACTree;
 
26472
  friend class ::ExtACKeywords;
 
26473
  friend class ::ExtGnu;
 
26474
  friend class ::PragmaOnceUnitState;
 
26475
  friend class ::PragmaOnce;
 
26476
  friend class ::CMatchSyntax;
 
26477
 
 
26478
#line 3669 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26479
 
 
26480
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
26481
 
 
26482
public:
 
26483
  /** Constructor.
 
26484
   *  \param kw The keyword 'switch'.
 
26485
   *  \param o Left parenthesis before the condition.
 
26486
   *  \param cond The switch-expression. 
 
26487
   *  \param c Right parenthesis behind the condition. 
 
26488
   *  \param stmt The cases of the switch-statement. */
 
26489
  CT_SwitchStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
26490
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
26491
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
26492
  }
 
26493
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26494
  static const char *NodeId ();
 
26495
  /** Get the name of the node. Can be compared with NodeId(). */
 
26496
  const char *NodeName () const { return NodeId (); }
 
26497
  /** Get the number of sons. */
 
26498
  int Sons () const { return 5; }
 
26499
  /** Get the n-th son.
 
26500
   *  \param n The index of the son.
 
26501
   *  \return The n-th son or NULL. */
 
26502
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
26503
  /** Get the cases. */
 
26504
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
26505
  /** Get the switch-expression. */
 
26506
  CTree *Condition () const { return sons[2]; }
 
26507
  /** Replace a son.
 
26508
   *  \param old_son The son to replace.
 
26509
   *  \param new_son The new son. */
 
26510
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26511
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
26512
  }
 
26513
  /** Get the scope opened by the switch-statement. */
 
26514
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
26515
public:
 
26516
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
26517
  const char *__attr_name (unsigned i) const {
 
26518
    static const char *names[] = { "sons" }; return names[i];
 
26519
  }
 
26520
  const void *__attr (unsigned __i) const {
 
26521
    switch (__i) { case 0: return &sons; default: return 0; }
 
26522
  }
 
26523
#line 3705 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26524
};
 
26525
 
 
26526
/** \class CT_IfStmt CTree.h Puma/CTree.h
 
26527
 *  Tree node representing a if-statement.
 
26528
 *  Example: \code if(a==0) a++; \endcode */
 
26529
 
 
26530
#line 26531 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26531
} // closed Puma
 
26532
class CCExprResolve;
 
26533
class CExprResolve;
 
26534
class WinIfExists;
 
26535
class WinImportHandler;
 
26536
class WinMacros;
 
26537
class WinAsm;
 
26538
class WinDeclSpecs;
 
26539
class WinMemberExplSpec;
 
26540
class WinTypeKeywords;
 
26541
class WinFriend;
 
26542
class ExtAC;
 
26543
class ExtACBuilderCoupling;
 
26544
class ExtACSyntaxCoupling;
 
26545
class ExtACTree;
 
26546
class ExtACKeywords;
 
26547
class ExtGnu;
 
26548
class PragmaOnceUnitState;
 
26549
class PragmaOnce;
 
26550
class CMatchSyntax;
 
26551
namespace Puma {
 
26552
 
 
26553
#line 3710 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26554
class CT_IfStmt : public CT_Statement, public CSemScope {
 
26555
#line 26556 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26556
  friend class ::CCExprResolve;
 
26557
  friend class ::CExprResolve;
 
26558
  friend class ::WinIfExists;
 
26559
  friend class ::WinImportHandler;
 
26560
  friend class ::WinMacros;
 
26561
  friend class ::WinAsm;
 
26562
  friend class ::WinDeclSpecs;
 
26563
  friend class ::WinMemberExplSpec;
 
26564
  friend class ::WinTypeKeywords;
 
26565
  friend class ::WinFriend;
 
26566
  friend class ::ExtAC;
 
26567
  friend class ::ExtACBuilderCoupling;
 
26568
  friend class ::ExtACSyntaxCoupling;
 
26569
  friend class ::ExtACTree;
 
26570
  friend class ::ExtACKeywords;
 
26571
  friend class ::ExtGnu;
 
26572
  friend class ::PragmaOnceUnitState;
 
26573
  friend class ::PragmaOnce;
 
26574
  friend class ::CMatchSyntax;
 
26575
 
 
26576
#line 3710 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26577
 
 
26578
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
26579
 
 
26580
public:
 
26581
  /** Constructor.
 
26582
   *  \param kw The keyword 'if'.
 
26583
   *  \param o Left parenthesis before the condition.
 
26584
   *  \param cond The condition.
 
26585
   *  \param c Right parenthesis behind the condition.
 
26586
   *  \param stmt The controlled statement. */
 
26587
  CT_IfStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
26588
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
26589
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
26590
  }
 
26591
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26592
  static const char *NodeId ();
 
26593
  /** Get the name of the node. Can be compared with NodeId(). */
 
26594
  const char *NodeName () const { return NodeId (); }
 
26595
  /** Get the number of sons. */
 
26596
  int Sons () const { return 5; }
 
26597
  /** Get the n-th son.
 
26598
   *  \param n The index of the son.
 
26599
   *  \return The n-th son or NULL. */
 
26600
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
26601
  /** Get the controlled statement. */
 
26602
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
26603
  /** Get the condition. */
 
26604
  CTree *Condition () const { return sons[2]; }
 
26605
  /** Replace a son.
 
26606
   *  \param old_son The son to replace.
 
26607
   *  \param new_son The new son. */
 
26608
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26609
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
26610
  }
 
26611
  /** Get the scope opened by the if-statement. */
 
26612
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
26613
public:
 
26614
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
26615
  const char *__attr_name (unsigned i) const {
 
26616
    static const char *names[] = { "sons" }; return names[i];
 
26617
  }
 
26618
  const void *__attr (unsigned __i) const {
 
26619
    switch (__i) { case 0: return &sons; default: return 0; }
 
26620
  }
 
26621
#line 3746 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26622
};
 
26623
 
 
26624
/** \class CT_IfElseStmt CTree.h Puma/CTree.h
 
26625
 *  Tree node representing a if-else-statement.
 
26626
 *  Example: \code if(a==0) a++; else a=0; \endcode */
 
26627
 
 
26628
#line 26629 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26629
} // closed Puma
 
26630
class CCExprResolve;
 
26631
class CExprResolve;
 
26632
class WinIfExists;
 
26633
class WinImportHandler;
 
26634
class WinMacros;
 
26635
class WinAsm;
 
26636
class WinDeclSpecs;
 
26637
class WinMemberExplSpec;
 
26638
class WinTypeKeywords;
 
26639
class WinFriend;
 
26640
class ExtAC;
 
26641
class ExtACBuilderCoupling;
 
26642
class ExtACSyntaxCoupling;
 
26643
class ExtACTree;
 
26644
class ExtACKeywords;
 
26645
class ExtGnu;
 
26646
class PragmaOnceUnitState;
 
26647
class PragmaOnce;
 
26648
class CMatchSyntax;
 
26649
namespace Puma {
 
26650
 
 
26651
#line 3751 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26652
class CT_IfElseStmt : public CT_Statement, public CSemScope {
 
26653
#line 26654 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26654
  friend class ::CCExprResolve;
 
26655
  friend class ::CExprResolve;
 
26656
  friend class ::WinIfExists;
 
26657
  friend class ::WinImportHandler;
 
26658
  friend class ::WinMacros;
 
26659
  friend class ::WinAsm;
 
26660
  friend class ::WinDeclSpecs;
 
26661
  friend class ::WinMemberExplSpec;
 
26662
  friend class ::WinTypeKeywords;
 
26663
  friend class ::WinFriend;
 
26664
  friend class ::ExtAC;
 
26665
  friend class ::ExtACBuilderCoupling;
 
26666
  friend class ::ExtACSyntaxCoupling;
 
26667
  friend class ::ExtACTree;
 
26668
  friend class ::ExtACKeywords;
 
26669
  friend class ::ExtGnu;
 
26670
  friend class ::PragmaOnceUnitState;
 
26671
  friend class ::PragmaOnce;
 
26672
  friend class ::CMatchSyntax;
 
26673
 
 
26674
#line 3751 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26675
 
 
26676
  CTree *sons[7]; // if, open, cond, close, if_stmt, else, else_stmt
 
26677
 
 
26678
public:
 
26679
  /** Constructor.
 
26680
   *  \param i The keyword 'if'.
 
26681
   *  \param o Left parenthesis before the condition.
 
26682
   *  \param cond The condition.
 
26683
   *  \param c Right parenthesis behind the condition.
 
26684
   *  \param is The statement controlled by the if-branch.
 
26685
   *  \param e The keyword 'else'.
 
26686
   *  \param es The statement controlled by the else-branch. */
 
26687
  CT_IfElseStmt (CTree *i, CTree *o, CTree *cond, CTree *c, 
 
26688
                 CTree *is, CTree *e, CTree *es) {
 
26689
    AddSon (sons[0], i); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
26690
    AddSon (sons[3], c); AddSon (sons[4], is); AddSon (sons[5], e); 
 
26691
    AddSon (sons[6], es); 
 
26692
  }
 
26693
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26694
  static const char *NodeId ();
 
26695
  /** Get the name of the node. Can be compared with NodeId(). */
 
26696
  const char *NodeName () const { return NodeId (); }
 
26697
  /** Get the number of sons. */
 
26698
  int Sons () const { return 7; }
 
26699
  /** Get the n-th son.
 
26700
   *  \param n The index of the son.
 
26701
   *  \return The n-th son or NULL. */
 
26702
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
26703
  /** Get the condition. */
 
26704
  CTree *Condition () const { return sons[2]; }
 
26705
  /** Get the statement controlled by the if-branch. */
 
26706
  CT_Statement *IfPart () const { return (CT_Statement*)sons[4]; }
 
26707
  /** Get the statement controlled by the else-branch. */
 
26708
  CT_Statement *ElsePart () const { return (CT_Statement*)sons[6]; }
 
26709
  /** Replace a son.
 
26710
   *  \param old_son The son to replace.
 
26711
   *  \param new_son The new son. */
 
26712
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26713
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
26714
  }
 
26715
  /** Get the scope opened by the if-statement. */
 
26716
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
26717
public:
 
26718
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
26719
  const char *__attr_name (unsigned i) const {
 
26720
    static const char *names[] = { "sons" }; return names[i];
 
26721
  }
 
26722
  const void *__attr (unsigned __i) const {
 
26723
    switch (__i) { case 0: return &sons; default: return 0; }
 
26724
  }
 
26725
#line 3793 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26726
};
 
26727
 
 
26728
/** \class CT_BreakStmt CTree.h Puma/CTree.h
 
26729
 *  Tree node representing a break-statement.
 
26730
 *  Example: \code break; \endcode */
 
26731
 
 
26732
#line 26733 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26733
} // closed Puma
 
26734
class CCExprResolve;
 
26735
class CExprResolve;
 
26736
class WinIfExists;
 
26737
class WinImportHandler;
 
26738
class WinMacros;
 
26739
class WinAsm;
 
26740
class WinDeclSpecs;
 
26741
class WinMemberExplSpec;
 
26742
class WinTypeKeywords;
 
26743
class WinFriend;
 
26744
class ExtAC;
 
26745
class ExtACBuilderCoupling;
 
26746
class ExtACSyntaxCoupling;
 
26747
class ExtACTree;
 
26748
class ExtACKeywords;
 
26749
class ExtGnu;
 
26750
class PragmaOnceUnitState;
 
26751
class PragmaOnce;
 
26752
class CMatchSyntax;
 
26753
namespace Puma {
 
26754
 
 
26755
#line 3798 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26756
class CT_BreakStmt : public CT_Statement {
 
26757
#line 26758 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26758
  friend class ::CCExprResolve;
 
26759
  friend class ::CExprResolve;
 
26760
  friend class ::WinIfExists;
 
26761
  friend class ::WinImportHandler;
 
26762
  friend class ::WinMacros;
 
26763
  friend class ::WinAsm;
 
26764
  friend class ::WinDeclSpecs;
 
26765
  friend class ::WinMemberExplSpec;
 
26766
  friend class ::WinTypeKeywords;
 
26767
  friend class ::WinFriend;
 
26768
  friend class ::ExtAC;
 
26769
  friend class ::ExtACBuilderCoupling;
 
26770
  friend class ::ExtACSyntaxCoupling;
 
26771
  friend class ::ExtACTree;
 
26772
  friend class ::ExtACKeywords;
 
26773
  friend class ::ExtGnu;
 
26774
  friend class ::PragmaOnceUnitState;
 
26775
  friend class ::PragmaOnce;
 
26776
  friend class ::CMatchSyntax;
 
26777
 
 
26778
#line 3798 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26779
 
 
26780
  CTree *sons[2]; // key, semi_colon
 
26781
 
 
26782
public:
 
26783
  /** Constructor.
 
26784
   *  \param key The keyword 'break'.
 
26785
   *  \param sc The trailing semi-colon. */
 
26786
  CT_BreakStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
26787
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26788
  static const char *NodeId ();
 
26789
  /** Get the name of the node. Can be compared with NodeId(). */
 
26790
  const char *NodeName () const { return NodeId (); }
 
26791
  /** Get the number of sons. */
 
26792
  int Sons () const { return 2; }
 
26793
  /** Get the n-th son.
 
26794
   *  \param n The index of the son.
 
26795
   *  \return The n-th son or NULL. */
 
26796
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
26797
  /** Replace a son.
 
26798
   *  \param old_son The son to replace.
 
26799
   *  \param new_son The new son. */
 
26800
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26801
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
26802
  }
 
26803
public:
 
26804
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
26805
  const char *__attr_name (unsigned i) const {
 
26806
    static const char *names[] = { "sons" }; return names[i];
 
26807
  }
 
26808
  const void *__attr (unsigned __i) const {
 
26809
    switch (__i) { case 0: return &sons; default: return 0; }
 
26810
  }
 
26811
#line 3822 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26812
};
 
26813
 
 
26814
/** \class CT_ContinueStmt CTree.h Puma/CTree.h
 
26815
 *  Tree node representing a continue-statement.
 
26816
 *  Example: \code continue; \endcode */
 
26817
 
 
26818
#line 26819 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26819
} // closed Puma
 
26820
class CCExprResolve;
 
26821
class CExprResolve;
 
26822
class WinIfExists;
 
26823
class WinImportHandler;
 
26824
class WinMacros;
 
26825
class WinAsm;
 
26826
class WinDeclSpecs;
 
26827
class WinMemberExplSpec;
 
26828
class WinTypeKeywords;
 
26829
class WinFriend;
 
26830
class ExtAC;
 
26831
class ExtACBuilderCoupling;
 
26832
class ExtACSyntaxCoupling;
 
26833
class ExtACTree;
 
26834
class ExtACKeywords;
 
26835
class ExtGnu;
 
26836
class PragmaOnceUnitState;
 
26837
class PragmaOnce;
 
26838
class CMatchSyntax;
 
26839
namespace Puma {
 
26840
 
 
26841
#line 3827 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26842
class CT_ContinueStmt : public CT_Statement {
 
26843
#line 26844 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26844
  friend class ::CCExprResolve;
 
26845
  friend class ::CExprResolve;
 
26846
  friend class ::WinIfExists;
 
26847
  friend class ::WinImportHandler;
 
26848
  friend class ::WinMacros;
 
26849
  friend class ::WinAsm;
 
26850
  friend class ::WinDeclSpecs;
 
26851
  friend class ::WinMemberExplSpec;
 
26852
  friend class ::WinTypeKeywords;
 
26853
  friend class ::WinFriend;
 
26854
  friend class ::ExtAC;
 
26855
  friend class ::ExtACBuilderCoupling;
 
26856
  friend class ::ExtACSyntaxCoupling;
 
26857
  friend class ::ExtACTree;
 
26858
  friend class ::ExtACKeywords;
 
26859
  friend class ::ExtGnu;
 
26860
  friend class ::PragmaOnceUnitState;
 
26861
  friend class ::PragmaOnce;
 
26862
  friend class ::CMatchSyntax;
 
26863
 
 
26864
#line 3827 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26865
 
 
26866
  CTree *sons[2]; // key, semi_colon
 
26867
 
 
26868
public:
 
26869
  /** Constructor.
 
26870
   *  \param key The keyword 'continue'.
 
26871
   *  \param sc The trailing semi-colon. */
 
26872
  CT_ContinueStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
26873
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26874
  static const char *NodeId ();
 
26875
  /** Get the name of the node. Can be compared with NodeId(). */
 
26876
  const char *NodeName () const { return NodeId (); }
 
26877
  /** Get the number of sons. */
 
26878
  int Sons () const { return 2; }
 
26879
  /** Get the n-th son.
 
26880
   *  \param n The index of the son.
 
26881
   *  \return The n-th son or NULL. */
 
26882
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
26883
  /** Replace a son.
 
26884
   *  \param old_son The son to replace.
 
26885
   *  \param new_son The new son. */
 
26886
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26887
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
26888
  }
 
26889
public:
 
26890
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
26891
  const char *__attr_name (unsigned i) const {
 
26892
    static const char *names[] = { "sons" }; return names[i];
 
26893
  }
 
26894
  const void *__attr (unsigned __i) const {
 
26895
    switch (__i) { case 0: return &sons; default: return 0; }
 
26896
  }
 
26897
#line 3851 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26898
};
 
26899
 
 
26900
/** \class CT_GotoStmt CTree.h Puma/CTree.h
 
26901
 *  Tree node representing a goto-stmt.
 
26902
 *  Example: \code goto incr_a; \endcode */
 
26903
 
 
26904
#line 26905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26905
} // closed Puma
 
26906
class CCExprResolve;
 
26907
class CExprResolve;
 
26908
class WinIfExists;
 
26909
class WinImportHandler;
 
26910
class WinMacros;
 
26911
class WinAsm;
 
26912
class WinDeclSpecs;
 
26913
class WinMemberExplSpec;
 
26914
class WinTypeKeywords;
 
26915
class WinFriend;
 
26916
class ExtAC;
 
26917
class ExtACBuilderCoupling;
 
26918
class ExtACSyntaxCoupling;
 
26919
class ExtACTree;
 
26920
class ExtACKeywords;
 
26921
class ExtGnu;
 
26922
class PragmaOnceUnitState;
 
26923
class PragmaOnce;
 
26924
class CMatchSyntax;
 
26925
namespace Puma {
 
26926
 
 
26927
#line 3856 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26928
class CT_GotoStmt : public CT_Statement {
 
26929
#line 26930 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26930
  friend class ::CCExprResolve;
 
26931
  friend class ::CExprResolve;
 
26932
  friend class ::WinIfExists;
 
26933
  friend class ::WinImportHandler;
 
26934
  friend class ::WinMacros;
 
26935
  friend class ::WinAsm;
 
26936
  friend class ::WinDeclSpecs;
 
26937
  friend class ::WinMemberExplSpec;
 
26938
  friend class ::WinTypeKeywords;
 
26939
  friend class ::WinFriend;
 
26940
  friend class ::ExtAC;
 
26941
  friend class ::ExtACBuilderCoupling;
 
26942
  friend class ::ExtACSyntaxCoupling;
 
26943
  friend class ::ExtACTree;
 
26944
  friend class ::ExtACKeywords;
 
26945
  friend class ::ExtGnu;
 
26946
  friend class ::PragmaOnceUnitState;
 
26947
  friend class ::PragmaOnce;
 
26948
  friend class ::CMatchSyntax;
 
26949
 
 
26950
#line 3856 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26951
 
 
26952
  CTree *sons[3]; // key, label, semi_colon
 
26953
 
 
26954
public:
 
26955
  /** Constructor.
 
26956
   *  \param key The keyword 'goto'.
 
26957
   *  \param l The name of the jump label.
 
26958
   *  \param sc The trailing semi-colon. */
 
26959
  CT_GotoStmt (CTree *key, CTree *l, CTree *sc) {
 
26960
    AddSon (sons[0], key); AddSon (sons[1], l); AddSon (sons[2], sc); 
 
26961
  }
 
26962
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
26963
  static const char *NodeId ();
 
26964
  /** Get the name of the node. Can be compared with NodeId(). */
 
26965
  const char *NodeName () const { return NodeId (); }
 
26966
  /** Get the number of sons. */
 
26967
  int Sons () const { return 3; }
 
26968
  /** Get the n-th son.
 
26969
   *  \param n The index of the son.
 
26970
   *  \return The n-th son or NULL. */
 
26971
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
26972
  /** Get the name of the jump label. */
 
26973
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[1]; }
 
26974
  /** Replace a son.
 
26975
   *  \param old_son The son to replace.
 
26976
   *  \param new_son The new son. */
 
26977
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
26978
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
26979
  }
 
26980
public:
 
26981
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
26982
  const char *__attr_name (unsigned i) const {
 
26983
    static const char *names[] = { "sons" }; return names[i];
 
26984
  }
 
26985
  const void *__attr (unsigned __i) const {
 
26986
    switch (__i) { case 0: return &sons; default: return 0; }
 
26987
  }
 
26988
#line 3885 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
26989
};
 
26990
 
 
26991
/** \class CT_ReturnStmt CTree.h Puma/CTree.h
 
26992
 *  Tree node representing a return-statement.
 
26993
 *  Example: \code return 1; \endcode */
 
26994
 
 
26995
#line 26996 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
26996
} // closed Puma
 
26997
class CCExprResolve;
 
26998
class CExprResolve;
 
26999
class WinIfExists;
 
27000
class WinImportHandler;
 
27001
class WinMacros;
 
27002
class WinAsm;
 
27003
class WinDeclSpecs;
 
27004
class WinMemberExplSpec;
 
27005
class WinTypeKeywords;
 
27006
class WinFriend;
 
27007
class ExtAC;
 
27008
class ExtACBuilderCoupling;
 
27009
class ExtACSyntaxCoupling;
 
27010
class ExtACTree;
 
27011
class ExtACKeywords;
 
27012
class ExtGnu;
 
27013
class PragmaOnceUnitState;
 
27014
class PragmaOnce;
 
27015
class CMatchSyntax;
 
27016
namespace Puma {
 
27017
 
 
27018
#line 3890 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27019
class CT_ReturnStmt : public CT_Statement {
 
27020
#line 27021 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27021
  friend class ::CCExprResolve;
 
27022
  friend class ::CExprResolve;
 
27023
  friend class ::WinIfExists;
 
27024
  friend class ::WinImportHandler;
 
27025
  friend class ::WinMacros;
 
27026
  friend class ::WinAsm;
 
27027
  friend class ::WinDeclSpecs;
 
27028
  friend class ::WinMemberExplSpec;
 
27029
  friend class ::WinTypeKeywords;
 
27030
  friend class ::WinFriend;
 
27031
  friend class ::ExtAC;
 
27032
  friend class ::ExtACBuilderCoupling;
 
27033
  friend class ::ExtACSyntaxCoupling;
 
27034
  friend class ::ExtACTree;
 
27035
  friend class ::ExtACKeywords;
 
27036
  friend class ::ExtGnu;
 
27037
  friend class ::PragmaOnceUnitState;
 
27038
  friend class ::PragmaOnce;
 
27039
  friend class ::CMatchSyntax;
 
27040
 
 
27041
#line 3890 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27042
 
 
27043
  CTree *sons[3]; // key, expr, semi_colon
 
27044
 
 
27045
public:
 
27046
  /** Constructor.
 
27047
   *  \param key The keyword 'return'.
 
27048
   *  \param e The expression specifying the return value. 
 
27049
   *  \param sc The trailing semi-colon. */
 
27050
  CT_ReturnStmt (CTree *key, CTree *e, CTree *sc) {
 
27051
    AddSon (sons[0], key); AddSon (sons[1], e); AddSon (sons[2], sc); 
 
27052
  }
 
27053
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27054
  static const char *NodeId ();
 
27055
  /** Get the name of the node. Can be compared with NodeId(). */
 
27056
  const char *NodeName () const { return NodeId (); }
 
27057
  /** Get the number of sons. */
 
27058
  int Sons () const { return CTree::Sons (sons, 3); }
 
27059
  /** Get the n-th son.
 
27060
   *  \param n The index of the son.
 
27061
   *  \return The n-th son or NULL. */
 
27062
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
27063
  /** Get the expression specifying the return value. */
 
27064
  CTree *Expr () const { return sons[1]; }
 
27065
  /** Replace a son.
 
27066
   *  \param old_son The son to replace.
 
27067
   *  \param new_son The new son. */
 
27068
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27069
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
27070
  }
 
27071
public:
 
27072
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
27073
  const char *__attr_name (unsigned i) const {
 
27074
    static const char *names[] = { "sons" }; return names[i];
 
27075
  }
 
27076
  const void *__attr (unsigned __i) const {
 
27077
    switch (__i) { case 0: return &sons; default: return 0; }
 
27078
  }
 
27079
#line 3919 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27080
};
 
27081
 
 
27082
/** \class CT_WhileStmt CTree.h Puma/CTree.h
 
27083
 *  Tree node representing a while-statement.
 
27084
 *  Example: \code while(a>0) a--; \endcode */
 
27085
 
 
27086
#line 27087 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27087
} // closed Puma
 
27088
class CCExprResolve;
 
27089
class CExprResolve;
 
27090
class WinIfExists;
 
27091
class WinImportHandler;
 
27092
class WinMacros;
 
27093
class WinAsm;
 
27094
class WinDeclSpecs;
 
27095
class WinMemberExplSpec;
 
27096
class WinTypeKeywords;
 
27097
class WinFriend;
 
27098
class ExtAC;
 
27099
class ExtACBuilderCoupling;
 
27100
class ExtACSyntaxCoupling;
 
27101
class ExtACTree;
 
27102
class ExtACKeywords;
 
27103
class ExtGnu;
 
27104
class PragmaOnceUnitState;
 
27105
class PragmaOnce;
 
27106
class CMatchSyntax;
 
27107
namespace Puma {
 
27108
 
 
27109
#line 3924 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27110
class CT_WhileStmt : public CT_Statement, public CSemScope {
 
27111
#line 27112 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27112
  friend class ::CCExprResolve;
 
27113
  friend class ::CExprResolve;
 
27114
  friend class ::WinIfExists;
 
27115
  friend class ::WinImportHandler;
 
27116
  friend class ::WinMacros;
 
27117
  friend class ::WinAsm;
 
27118
  friend class ::WinDeclSpecs;
 
27119
  friend class ::WinMemberExplSpec;
 
27120
  friend class ::WinTypeKeywords;
 
27121
  friend class ::WinFriend;
 
27122
  friend class ::ExtAC;
 
27123
  friend class ::ExtACBuilderCoupling;
 
27124
  friend class ::ExtACSyntaxCoupling;
 
27125
  friend class ::ExtACTree;
 
27126
  friend class ::ExtACKeywords;
 
27127
  friend class ::ExtGnu;
 
27128
  friend class ::PragmaOnceUnitState;
 
27129
  friend class ::PragmaOnce;
 
27130
  friend class ::CMatchSyntax;
 
27131
 
 
27132
#line 3924 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27133
 
 
27134
  CTree *sons[5]; // key, open, cond, close, stmt
 
27135
 
 
27136
public:
 
27137
  /** Constructor.
 
27138
   *  \param kw The keyword 'while'.
 
27139
   *  \param o Left parenthesis before the condition.
 
27140
   *  \param cond The loop condition. 
 
27141
   *  \param c Right parenthesis behind the condition. 
 
27142
   *  \param stmt The controlled statement. */
 
27143
  CT_WhileStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
27144
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
27145
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
27146
  }
 
27147
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27148
  static const char *NodeId ();
 
27149
  /** Get the name of the node. Can be compared with NodeId(). */
 
27150
  const char *NodeName () const { return NodeId (); }
 
27151
  /** Get the number of sons. */
 
27152
  int Sons () const { return 5; }
 
27153
  /** Get the n-th son.
 
27154
   *  \param n The index of the son.
 
27155
   *  \return The n-th son or NULL. */
 
27156
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
27157
  /** Get the controlled statement. */
 
27158
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
27159
  /** Get the loop condition. */
 
27160
  CTree *Condition () const { return sons[2]; }
 
27161
  /** Replace a son.
 
27162
   *  \param old_son The son to replace.
 
27163
   *  \param new_son The new son. */
 
27164
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27165
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
27166
  }
 
27167
  /** Get the scope opened by the while-statement. */
 
27168
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
27169
public:
 
27170
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
27171
  const char *__attr_name (unsigned i) const {
 
27172
    static const char *names[] = { "sons" }; return names[i];
 
27173
  }
 
27174
  const void *__attr (unsigned __i) const {
 
27175
    switch (__i) { case 0: return &sons; default: return 0; }
 
27176
  }
 
27177
#line 3960 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27178
};
 
27179
 
 
27180
/** \class CT_DoStmt CTree.h Puma/CTree.h
 
27181
 *  Tree node representing a do-while-statement.
 
27182
 *  Example: \code do a--; while(a>0); \endcode */
 
27183
 
 
27184
#line 27185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27185
} // closed Puma
 
27186
class CCExprResolve;
 
27187
class CExprResolve;
 
27188
class WinIfExists;
 
27189
class WinImportHandler;
 
27190
class WinMacros;
 
27191
class WinAsm;
 
27192
class WinDeclSpecs;
 
27193
class WinMemberExplSpec;
 
27194
class WinTypeKeywords;
 
27195
class WinFriend;
 
27196
class ExtAC;
 
27197
class ExtACBuilderCoupling;
 
27198
class ExtACSyntaxCoupling;
 
27199
class ExtACTree;
 
27200
class ExtACKeywords;
 
27201
class ExtGnu;
 
27202
class PragmaOnceUnitState;
 
27203
class PragmaOnce;
 
27204
class CMatchSyntax;
 
27205
namespace Puma {
 
27206
 
 
27207
#line 3965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27208
class CT_DoStmt : public CT_Statement {
 
27209
#line 27210 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27210
  friend class ::CCExprResolve;
 
27211
  friend class ::CExprResolve;
 
27212
  friend class ::WinIfExists;
 
27213
  friend class ::WinImportHandler;
 
27214
  friend class ::WinMacros;
 
27215
  friend class ::WinAsm;
 
27216
  friend class ::WinDeclSpecs;
 
27217
  friend class ::WinMemberExplSpec;
 
27218
  friend class ::WinTypeKeywords;
 
27219
  friend class ::WinFriend;
 
27220
  friend class ::ExtAC;
 
27221
  friend class ::ExtACBuilderCoupling;
 
27222
  friend class ::ExtACSyntaxCoupling;
 
27223
  friend class ::ExtACTree;
 
27224
  friend class ::ExtACKeywords;
 
27225
  friend class ::ExtGnu;
 
27226
  friend class ::PragmaOnceUnitState;
 
27227
  friend class ::PragmaOnce;
 
27228
  friend class ::CMatchSyntax;
 
27229
 
 
27230
#line 3965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27231
 
 
27232
  CTree *sons[7]; // do, stmt, while, open, expr, close, semi_colon
 
27233
 
 
27234
public:
 
27235
  /** Constructor.
 
27236
   *  \param d The keyword 'do'.
 
27237
   *  \param stmt The controlled statement.
 
27238
   *  \param w The keyword 'while'.
 
27239
   *  \param o Left parenthesis before the loop condition.
 
27240
   *  \param e The loop condition.
 
27241
   *  \param c Right parenthesis behind the loop condition.
 
27242
   *  \param sc The trailing semi-colon. */
 
27243
  CT_DoStmt (CTree *d, CTree *stmt, CTree *w, CTree *o, CTree *e, 
 
27244
             CTree *c, CTree *sc) {
 
27245
    AddSon (sons[0], d); AddSon (sons[1], stmt); AddSon (sons[2], w); 
 
27246
    AddSon (sons[3], o); AddSon (sons[4], e); AddSon (sons[5], c); 
 
27247
    AddSon (sons[6], sc); 
 
27248
  }
 
27249
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27250
  static const char *NodeId ();
 
27251
  /** Get the name of the node. Can be compared with NodeId(). */
 
27252
  const char *NodeName () const { return NodeId (); }
 
27253
  /** Get the number of sons. */
 
27254
  int Sons () const { return 7; }
 
27255
  /** Get the n-th son.
 
27256
   *  \param n The index of the son.
 
27257
   *  \return The n-th son or NULL. */
 
27258
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
27259
  /** Get the controlled statement. */
 
27260
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
27261
  /** Get the loop condition. */
 
27262
  CTree *Expr () const { return sons[4]; }
 
27263
  /** Replace a son.
 
27264
   *  \param old_son The son to replace.
 
27265
   *  \param new_son The new son. */
 
27266
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27267
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
27268
  }
 
27269
public:
 
27270
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
27271
  const char *__attr_name (unsigned i) const {
 
27272
    static const char *names[] = { "sons" }; return names[i];
 
27273
  }
 
27274
  const void *__attr (unsigned __i) const {
 
27275
    switch (__i) { case 0: return &sons; default: return 0; }
 
27276
  }
 
27277
#line 4003 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27278
};
 
27279
 
 
27280
/** \class CT_ForStmt CTree.h Puma/CTree.h
 
27281
 *  Tree node representing a for-statement.
 
27282
 *  Example: \code for(int i=0; i<10; i++) f(i); \endcode */
 
27283
 
 
27284
#line 27285 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27285
} // closed Puma
 
27286
class CCExprResolve;
 
27287
class CExprResolve;
 
27288
class WinIfExists;
 
27289
class WinImportHandler;
 
27290
class WinMacros;
 
27291
class WinAsm;
 
27292
class WinDeclSpecs;
 
27293
class WinMemberExplSpec;
 
27294
class WinTypeKeywords;
 
27295
class WinFriend;
 
27296
class ExtAC;
 
27297
class ExtACBuilderCoupling;
 
27298
class ExtACSyntaxCoupling;
 
27299
class ExtACTree;
 
27300
class ExtACKeywords;
 
27301
class ExtGnu;
 
27302
class PragmaOnceUnitState;
 
27303
class PragmaOnce;
 
27304
class CMatchSyntax;
 
27305
namespace Puma {
 
27306
 
 
27307
#line 4008 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27308
class CT_ForStmt : public CT_Statement, public CSemScope {
 
27309
#line 27310 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27310
  friend class ::CCExprResolve;
 
27311
  friend class ::CExprResolve;
 
27312
  friend class ::WinIfExists;
 
27313
  friend class ::WinImportHandler;
 
27314
  friend class ::WinMacros;
 
27315
  friend class ::WinAsm;
 
27316
  friend class ::WinDeclSpecs;
 
27317
  friend class ::WinMemberExplSpec;
 
27318
  friend class ::WinTypeKeywords;
 
27319
  friend class ::WinFriend;
 
27320
  friend class ::ExtAC;
 
27321
  friend class ::ExtACBuilderCoupling;
 
27322
  friend class ::ExtACSyntaxCoupling;
 
27323
  friend class ::ExtACTree;
 
27324
  friend class ::ExtACKeywords;
 
27325
  friend class ::ExtGnu;
 
27326
  friend class ::PragmaOnceUnitState;
 
27327
  friend class ::PragmaOnce;
 
27328
  friend class ::CMatchSyntax;
 
27329
 
 
27330
#line 4008 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27331
 
 
27332
  CTree *sons[8]; // key, open, init, cond, semi_colon, expr, close, stmt
 
27333
 
 
27334
public:
 
27335
  /** Constructor.
 
27336
   *  \param k The keyword 'for'.
 
27337
   *  \param o Left parenthesis.
 
27338
   *  \param i The loop initializer statement.
 
27339
   *  \param co The loop condition.
 
27340
   *  \param sc The semi-colon behind the loop condition.
 
27341
   *  \param e The loop counter expression.
 
27342
   *  \param c Right parenthesis.
 
27343
   *  \param stmt The controlled statement. */
 
27344
  CT_ForStmt (CTree *k, CTree *o, CTree *i, CTree *co, CTree *sc,
 
27345
              CTree *e, CTree *c, CTree *stmt) {
 
27346
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], i); 
 
27347
    AddSon (sons[3], co); AddSon (sons[4], sc); AddSon (sons[5], e); 
 
27348
    AddSon (sons[6], c); AddSon (sons[7], stmt); 
 
27349
  }
 
27350
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27351
  static const char *NodeId ();
 
27352
  /** Get the name of the node. Can be compared with NodeId(). */
 
27353
  const char *NodeName () const { return NodeId (); }
 
27354
  /** Get the number of sons. */
 
27355
  int Sons () const { return CTree::Sons (sons, 8); }
 
27356
  /** Get the n-th son.
 
27357
   *  \param n The index of the son.
 
27358
   *  \return The n-th son or NULL. */
 
27359
  CTree *Son (int n) const { return CTree::Son (sons, 8, n); }
 
27360
  /** Get the loop initializer. */
 
27361
  CTree *InitStmt () const { return sons[2]; }
 
27362
  /** Get the loop condition. */
 
27363
  CTree *Condition () const { return sons[3]; }
 
27364
  /** Get the loop counter expression. */
 
27365
  CTree *Expr () const { return sons[5]; }
 
27366
  /** Get the controlled statement. */
 
27367
  CT_Statement *Statement () const { return (CT_Statement*)sons[7]; }
 
27368
  /** Replace a son.
 
27369
   *  \param old_son The son to replace.
 
27370
   *  \param new_son The new son. */
 
27371
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27372
    CTree::ReplaceSon (sons, 8, old_son, new_son);
 
27373
  }
 
27374
  /** Get the scope opened by the for-statement. */
 
27375
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
27376
public:
 
27377
  typedef AC::TL<Puma::CTree * [8],AC::TLE > __AttrTypes;
 
27378
  const char *__attr_name (unsigned i) const {
 
27379
    static const char *names[] = { "sons" }; return names[i];
 
27380
  }
 
27381
  const void *__attr (unsigned __i) const {
 
27382
    switch (__i) { case 0: return &sons; default: return 0; }
 
27383
  }
 
27384
#line 4053 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27385
};
 
27386
 
 
27387
/** \class CT_Condition CTree.h Puma/CTree.h
 
27388
 *  Tree node representing a control-statement condition.
 
27389
 *  Example: \code int i = 0 \endcode */
 
27390
 
 
27391
#line 27392 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27392
} // closed Puma
 
27393
class CCExprResolve;
 
27394
class CExprResolve;
 
27395
class WinIfExists;
 
27396
class WinImportHandler;
 
27397
class WinMacros;
 
27398
class WinAsm;
 
27399
class WinDeclSpecs;
 
27400
class WinMemberExplSpec;
 
27401
class WinTypeKeywords;
 
27402
class WinFriend;
 
27403
class ExtAC;
 
27404
class ExtACBuilderCoupling;
 
27405
class ExtACSyntaxCoupling;
 
27406
class ExtACTree;
 
27407
class ExtACKeywords;
 
27408
class ExtGnu;
 
27409
class PragmaOnceUnitState;
 
27410
class PragmaOnce;
 
27411
class CMatchSyntax;
 
27412
namespace Puma {
 
27413
 
 
27414
#line 4058 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27415
class CT_Condition : public CT_Decl, public CSemObject {
 
27416
#line 27417 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27417
  friend class ::CCExprResolve;
 
27418
  friend class ::CExprResolve;
 
27419
  friend class ::WinIfExists;
 
27420
  friend class ::WinImportHandler;
 
27421
  friend class ::WinMacros;
 
27422
  friend class ::WinAsm;
 
27423
  friend class ::WinDeclSpecs;
 
27424
  friend class ::WinMemberExplSpec;
 
27425
  friend class ::WinTypeKeywords;
 
27426
  friend class ::WinFriend;
 
27427
  friend class ::ExtAC;
 
27428
  friend class ::ExtACBuilderCoupling;
 
27429
  friend class ::ExtACSyntaxCoupling;
 
27430
  friend class ::ExtACTree;
 
27431
  friend class ::ExtACKeywords;
 
27432
  friend class ::ExtGnu;
 
27433
  friend class ::PragmaOnceUnitState;
 
27434
  friend class ::PragmaOnce;
 
27435
  friend class ::CMatchSyntax;
 
27436
 
 
27437
#line 4058 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27438
 
 
27439
  CTree *sons[3]; // declspecs, declarator, init
 
27440
 
 
27441
public:
 
27442
  /** Constructor.
 
27443
   *  \param dsl The declaration specifier sequence. 
 
27444
   *  \param d The variable declarator. */
 
27445
  CT_Condition (CTree *dsl, CTree *d) {
 
27446
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], 0);
 
27447
  }
 
27448
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27449
  static const char *NodeId ();
 
27450
  /** Get the name of the node. Can be compared with NodeId(). */
 
27451
  const char *NodeName () const { return NodeId (); }
 
27452
  /** Get the number of sons. */
 
27453
  int Sons () const { return CTree::Sons (sons, 3); }
 
27454
  /** Get the n-th son.
 
27455
   *  \param n The index of the son.
 
27456
   *  \return The n-th son or NULL. */
 
27457
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
27458
  /** Get the declaration specifier sequence. */
 
27459
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
27460
  /** Get the declarator. */
 
27461
  CTree *Declarator () const { return sons[1]; }
 
27462
  /** Get the initializer of the declaration. */
 
27463
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
27464
  /** Get the semantic information of the declared object. */
 
27465
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
27466
  /** Set the initializer. */
 
27467
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
27468
  /** Replace a son.
 
27469
   *  \param old_son The son to replace.
 
27470
   *  \param new_son The new son. */
 
27471
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
27472
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
27473
  }
 
27474
public:
 
27475
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
27476
  const char *__attr_name (unsigned i) const {
 
27477
    static const char *names[] = { "sons" }; return names[i];
 
27478
  }
 
27479
  const void *__attr (unsigned __i) const {
 
27480
    switch (__i) { case 0: return &sons; default: return 0; }
 
27481
  }
 
27482
#line 4094 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27483
};
 
27484
 
 
27485
/*****************************************************************************/
 
27486
/*                                                                           */
 
27487
/*                              Classes                                      */
 
27488
/*                                                                           */
 
27489
/*****************************************************************************/
 
27490
 
 
27491
/** \class CT_ClassDef CTree.h Puma/CTree.h
 
27492
 *  Tree node representing a class definition.
 
27493
 *  Example: \code class X : Y { int x; } \endcode */
 
27494
 
 
27495
#line 27496 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27496
} // closed Puma
 
27497
class CCExprResolve;
 
27498
class CExprResolve;
 
27499
class WinIfExists;
 
27500
class WinImportHandler;
 
27501
class WinMacros;
 
27502
class WinAsm;
 
27503
class WinDeclSpecs;
 
27504
class WinMemberExplSpec;
 
27505
class WinTypeKeywords;
 
27506
class WinFriend;
 
27507
class ExtAC;
 
27508
class ExtACBuilderCoupling;
 
27509
class ExtACSyntaxCoupling;
 
27510
class ExtACTree;
 
27511
class ExtACKeywords;
 
27512
class ExtGnu;
 
27513
class PragmaOnceUnitState;
 
27514
class PragmaOnce;
 
27515
class CMatchSyntax;
 
27516
namespace Puma {
 
27517
 
 
27518
#line 4105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27519
 
 
27520
#line 27521 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27521
} // closed Puma
 
27522
 
 
27523
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
27524
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
27525
 
 
27526
#line 8 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27527
#endif
 
27528
namespace Puma {
 
27529
 
 
27530
#line 4105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27531
class CT_ClassDef : public CT_Decl, public CSemObject {
 
27532
#line 27533 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27533
  friend class ::CCExprResolve;
 
27534
  friend class ::CExprResolve;
 
27535
  friend class ::WinIfExists;
 
27536
  friend class ::WinImportHandler;
 
27537
  friend class ::WinMacros;
 
27538
  friend class ::WinAsm;
 
27539
  friend class ::WinDeclSpecs;
 
27540
  friend class ::WinMemberExplSpec;
 
27541
  friend class ::WinTypeKeywords;
 
27542
  friend class ::WinFriend;
 
27543
  friend class ::ExtAC;
 
27544
  friend class ::ExtACBuilderCoupling;
 
27545
  friend class ::ExtACSyntaxCoupling;
 
27546
  friend class ::ExtACTree;
 
27547
  friend class ::ExtACKeywords;
 
27548
  friend class ::ExtGnu;
 
27549
  friend class ::PragmaOnceUnitState;
 
27550
  friend class ::PragmaOnce;
 
27551
  friend class ::CMatchSyntax;
 
27552
 
 
27553
#line 4105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27554
 
 
27555
   
 
27556
#line 27557 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27557
 
 
27558
  struct __ac_wrapper_sons {
 
27559
    typedef ::Puma::CTree * E; typedef E A[4]; A _data;
 
27560
    operator A& () { return _data; }
 
27561
    operator A& () const { return (A&)*(::Puma::CTree * *)_data; }
 
27562
    operator const A& () { return _data; }
 
27563
    operator const A& () const { return _data; }
 
27564
    operator void* () { return _data; }
 
27565
    operator void* () const { return (void*)_data; }
 
27566
    operator const void* () { return _data; }
 
27567
    operator const void* () const { return _data; }
 
27568
    template <typename I> E& operator [] (I i) { return _data[i]; } // for VC++ 2003
 
27569
    template <typename I> const E& operator [] (I i) const { return _data[i]; } // for VC++ 2003
 
27570
  } sons
 
27571
#line 4106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27572
 
 
27573
#line 4106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27574
; // key, name, bases, members
 
27575
  CTree *obj_decl;
 
27576
 
 
27577
public:
 
27578
  /** Constructor.
 
27579
   *  \param k The keyword 'class' or 'struct'.
 
27580
   *  \param n The name of the class.
 
27581
   *  \param b The base class list. */
 
27582
  
 
27583
#line 27584 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27584
 
 
27585
 
 
27586
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 {
 
27587
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 __TJP;
 
27588
  typedef TResult Result;
 
27589
  typedef TThat   That;
 
27590
  typedef TTarget Target;
 
27591
  enum { ARGS = TArgs::ARGS };
 
27592
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
27593
  static const int JPID = 58;
 
27594
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
27595
  struct Res {
 
27596
    typedef void Type;
 
27597
    typedef void ReferredType;
 
27598
  };
 
27599
 
 
27600
  That *_that;
 
27601
 
 
27602
  inline That *that() {return (That*)_that;}
 
27603
 
 
27604
};
 
27605
 
 
27606
 
 
27607
#line 4114 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27608
CT_ClassDef (CTree * arg0, CTree * arg1, CTree * arg2 = (CTree*)0) 
 
27609
#line 27610 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27610
{
 
27611
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TLE > > > > __TJP;
 
27612
    __TJP tjp;
 
27613
  tjp._that =  (__TJP::That*)this;
 
27614
    this->__exec_old_C1(arg0, arg1, arg2);
 
27615
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
27616
  
 
27617
}
 
27618
__attribute__((always_inline)) inline void __exec_old_C1(::Puma::CTree * k,::Puma::CTree * n,::Puma::CTree * b)
 
27619
#line 4114 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27620
{
 
27621
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], b); 
 
27622
    AddSon (sons[3], 0); AddSon (obj_decl, 0); 
 
27623
  }
 
27624
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27625
  static const char *NodeId ();
 
27626
  /** Get the name of the node. Can be compared with NodeId(). */
 
27627
  const char *NodeName () const { return NodeId (); }
 
27628
  /** Get the number of sons. */
 
27629
  int Sons () const { return CTree::Sons (sons, 4); }
 
27630
  /** Get the n-th son.
 
27631
   *  \param n The index of the son.
 
27632
   *  \return The n-th son or NULL. */
 
27633
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
27634
  /** Get the name of the class. */
 
27635
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
27636
  /** Get the member declarations list. */
 
27637
  CT_MembList *Members () const { return (CT_MembList*)sons[3]; }
 
27638
  /** Get the base class specifiers list. */
 
27639
  CT_BaseSpecList *BaseClasses () const { return (CT_BaseSpecList*)sons[2]; }
 
27640
  /** Get the object declaration node containing the class definition. */
 
27641
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
27642
  /** Get the semantic information about the declared class. */
 
27643
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
27644
  /** Set the member declarations list. */
 
27645
  void Members (CTree *m) { AddSon (sons[3], m); }
 
27646
  /** Set the base class specifiers list. */
 
27647
  void BaseClasses (CTree *bc) { AddSon (sons[2], bc); }
 
27648
  /** Set the object declaration containing the class definition. */
 
27649
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
27650
  /** Replace a son.
 
27651
   *  \param old_son The son to replace.
 
27652
   *  \param new_son The new son. */
 
27653
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
27654
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
27655
  }
 
27656
   private:
 
27657
 
 
27658
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
27659
 Puma :: CTree * _intro_members ;
 
27660
Puma :: CTree * _base_intros ;
 
27661
public :
 
27662
Puma :: CTree * IntroMembers ( ) const { return _intro_members ; }
 
27663
void IntroMembers ( Puma :: CTree * members ) { _intro_members = members ; }
 
27664
Puma :: CTree * BaseIntros ( ) const { return _base_intros ; }
 
27665
void BaseIntros ( Puma :: CTree * bases ) { _base_intros = bases ; }public:
 
27666
  typedef AC::TL<Puma::CTree * [4],AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
27667
  const char *__attr_name (unsigned i) const {
 
27668
    static const char *names[] = { "sons", "obj_decl", "_intro_members", "_base_intros" }; return names[i];
 
27669
  }
 
27670
  const void *__attr (unsigned __i) const {
 
27671
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; case 2: return &_intro_members; case 3: return &_base_intros; default: return 0; }
 
27672
  }
 
27673
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27674
 
 
27675
#line 27676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27676
 
 
27677
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 {
 
27678
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 __TJP;
 
27679
  typedef TResult Result;
 
27680
  typedef TThat   That;
 
27681
  typedef TTarget Target;
 
27682
  enum { ARGS = TArgs::ARGS };
 
27683
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
27684
  static const int JPID = 7428;
 
27685
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
27686
  struct Res {
 
27687
    typedef void Type;
 
27688
    typedef void ReferredType;
 
27689
  };
 
27690
 
 
27691
  That *_that;
 
27692
 
 
27693
  inline That *that() {return (That*)_that;}
 
27694
 
 
27695
};
 
27696
 
 
27697
 
 
27698
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27699
 
 
27700
#line 27701 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27701
 
 
27702
public:
 
27703
inline CT_ClassDef (const Puma::CT_ClassDef & arg0) : Puma::CT_Decl (arg0), Puma::CSemObject (arg0), sons (arg0.sons), obj_decl (arg0.obj_decl), _intro_members (arg0._intro_members), _base_intros (arg0._base_intros) {
 
27704
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< const ::Puma::CT_ClassDef & , AC::TLE > > __TJP;
 
27705
  __TJP tjp;
 
27706
  tjp._that =  (__TJP::That*)this;
 
27707
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
27708
 
 
27709
}
 
27710
 
 
27711
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27712
 
 
27713
#line 27714 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27714
 
 
27715
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefD1Ev_0 {
 
27716
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0 __TJP;
 
27717
  typedef TResult Result;
 
27718
  typedef TThat   That;
 
27719
  typedef TTarget Target;
 
27720
  enum { ARGS = TArgs::ARGS };
 
27721
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
27722
  static const int JPID = 7426;
 
27723
  static const AC::JPType JPTYPE = (AC::JPType)32;
 
27724
  struct Res {
 
27725
    typedef void Type;
 
27726
    typedef void ReferredType;
 
27727
  };
 
27728
 
 
27729
  That *_that;
 
27730
 
 
27731
  inline That *that() {return (That*)_that;}
 
27732
 
 
27733
};
 
27734
 
 
27735
 
 
27736
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27737
 
 
27738
#line 27739 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27739
 
 
27740
public:
 
27741
inline ~CT_ClassDef () {
 
27742
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TLE > __TJP;
 
27743
  __TJP tjp;
 
27744
  tjp._that =  (__TJP::That*)this;
 
27745
  AC::invoke_ExtACTree_ExtACTree_a1_before<__TJP> (&tjp);
 
27746
 
 
27747
}
 
27748
 
 
27749
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27750
};
 
27751
      
 
27752
/** \class CT_UnionDef CTree.h Puma/CTree.h
 
27753
 *  Tree node representing the definition of a union.
 
27754
 *  Example: \code union U { int i; } \endcode */
 
27755
 
 
27756
#line 27757 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27757
} // closed Puma
 
27758
class CCExprResolve;
 
27759
class CExprResolve;
 
27760
class WinIfExists;
 
27761
class WinImportHandler;
 
27762
class WinMacros;
 
27763
class WinAsm;
 
27764
class WinDeclSpecs;
 
27765
class WinMemberExplSpec;
 
27766
class WinTypeKeywords;
 
27767
class WinFriend;
 
27768
class ExtAC;
 
27769
class ExtACBuilderCoupling;
 
27770
class ExtACSyntaxCoupling;
 
27771
class ExtACTree;
 
27772
class ExtACKeywords;
 
27773
class ExtGnu;
 
27774
class PragmaOnceUnitState;
 
27775
class PragmaOnce;
 
27776
class CMatchSyntax;
 
27777
namespace Puma {
 
27778
 
 
27779
#line 4155 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27780
class CT_UnionDef : public CT_ClassDef {
 
27781
#line 27782 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27782
  friend class ::CCExprResolve;
 
27783
  friend class ::CExprResolve;
 
27784
  friend class ::WinIfExists;
 
27785
  friend class ::WinImportHandler;
 
27786
  friend class ::WinMacros;
 
27787
  friend class ::WinAsm;
 
27788
  friend class ::WinDeclSpecs;
 
27789
  friend class ::WinMemberExplSpec;
 
27790
  friend class ::WinTypeKeywords;
 
27791
  friend class ::WinFriend;
 
27792
  friend class ::ExtAC;
 
27793
  friend class ::ExtACBuilderCoupling;
 
27794
  friend class ::ExtACSyntaxCoupling;
 
27795
  friend class ::ExtACTree;
 
27796
  friend class ::ExtACKeywords;
 
27797
  friend class ::ExtGnu;
 
27798
  friend class ::PragmaOnceUnitState;
 
27799
  friend class ::PragmaOnce;
 
27800
  friend class ::CMatchSyntax;
 
27801
 
 
27802
#line 4155 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27803
 
 
27804
public:
 
27805
  /** Constructor.
 
27806
   *  \param k The keyword 'union'.
 
27807
   *  \param n The name of the union.
 
27808
   *  \param b The base union list. */
 
27809
  CT_UnionDef (CTree *k, CTree *n, CTree *b = 0) : CT_ClassDef (k, n, b) {}
 
27810
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27811
  static const char *NodeId ();
 
27812
  /** Get the name of the node. Can be compared with NodeId(). */
 
27813
  const char *NodeName () const { return NodeId (); }
 
27814
public:
 
27815
  typedef AC::TLE __AttrTypes;
 
27816
  const char *__attr_name (unsigned i) const { return 0; }
 
27817
  const void *__attr (unsigned __i) const { return 0; }
 
27818
#line 4166 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27819
};
 
27820
      
 
27821
/** \class CT_MembList CTree.h Puma/CTree.h
 
27822
 *  Tree node representing a member declarations list. */ 
 
27823
 
 
27824
#line 27825 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27825
} // closed Puma
 
27826
class CCExprResolve;
 
27827
class CExprResolve;
 
27828
class WinIfExists;
 
27829
class WinImportHandler;
 
27830
class WinMacros;
 
27831
class WinAsm;
 
27832
class WinDeclSpecs;
 
27833
class WinMemberExplSpec;
 
27834
class WinTypeKeywords;
 
27835
class WinFriend;
 
27836
class ExtAC;
 
27837
class ExtACBuilderCoupling;
 
27838
class ExtACSyntaxCoupling;
 
27839
class ExtACTree;
 
27840
class ExtACKeywords;
 
27841
class ExtGnu;
 
27842
class PragmaOnceUnitState;
 
27843
class PragmaOnce;
 
27844
class CMatchSyntax;
 
27845
namespace Puma {
 
27846
 
 
27847
#line 4170 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27848
class CT_MembList : public CT_DeclList, public CSemScope {
 
27849
#line 27850 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27850
  friend class ::CCExprResolve;
 
27851
  friend class ::CExprResolve;
 
27852
  friend class ::WinIfExists;
 
27853
  friend class ::WinImportHandler;
 
27854
  friend class ::WinMacros;
 
27855
  friend class ::WinAsm;
 
27856
  friend class ::WinDeclSpecs;
 
27857
  friend class ::WinMemberExplSpec;
 
27858
  friend class ::WinTypeKeywords;
 
27859
  friend class ::WinFriend;
 
27860
  friend class ::ExtAC;
 
27861
  friend class ::ExtACBuilderCoupling;
 
27862
  friend class ::ExtACSyntaxCoupling;
 
27863
  friend class ::ExtACTree;
 
27864
  friend class ::ExtACKeywords;
 
27865
  friend class ::ExtGnu;
 
27866
  friend class ::PragmaOnceUnitState;
 
27867
  friend class ::PragmaOnce;
 
27868
  friend class ::CMatchSyntax;
 
27869
 
 
27870
#line 4170 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27871
 
 
27872
public:
 
27873
  CT_MembList (int size = 10, int incr = 10) : 
 
27874
    CT_DeclList (size, incr) {}
 
27875
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27876
  static const char *NodeId ();
 
27877
  /** Get the name of the node. Can be compared with NodeId(). */
 
27878
  const char *NodeName () const { return NodeId (); }
 
27879
  /** Get the scope opened by the member declarations list. */
 
27880
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
27881
public:
 
27882
  typedef AC::TLE __AttrTypes;
 
27883
  const char *__attr_name (unsigned i) const { return 0; }
 
27884
  const void *__attr (unsigned __i) const { return 0; }
 
27885
#line 4180 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27886
};
 
27887
 
 
27888
/** \class CT_MembInitList CTree.h Puma/CTree.h
 
27889
 *  Tree node representing a constructor initializer list.
 
27890
 *  Example: \code : Base(), m_Member(0) \endcode */
 
27891
 
 
27892
#line 27893 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27893
} // closed Puma
 
27894
class CCExprResolve;
 
27895
class CExprResolve;
 
27896
class WinIfExists;
 
27897
class WinImportHandler;
 
27898
class WinMacros;
 
27899
class WinAsm;
 
27900
class WinDeclSpecs;
 
27901
class WinMemberExplSpec;
 
27902
class WinTypeKeywords;
 
27903
class WinFriend;
 
27904
class ExtAC;
 
27905
class ExtACBuilderCoupling;
 
27906
class ExtACSyntaxCoupling;
 
27907
class ExtACTree;
 
27908
class ExtACKeywords;
 
27909
class ExtGnu;
 
27910
class PragmaOnceUnitState;
 
27911
class PragmaOnce;
 
27912
class CMatchSyntax;
 
27913
namespace Puma {
 
27914
 
 
27915
#line 4185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27916
class CT_MembInitList : public CT_List, public CSemScope {
 
27917
#line 27918 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27918
  friend class ::CCExprResolve;
 
27919
  friend class ::CExprResolve;
 
27920
  friend class ::WinIfExists;
 
27921
  friend class ::WinImportHandler;
 
27922
  friend class ::WinMacros;
 
27923
  friend class ::WinAsm;
 
27924
  friend class ::WinDeclSpecs;
 
27925
  friend class ::WinMemberExplSpec;
 
27926
  friend class ::WinTypeKeywords;
 
27927
  friend class ::WinFriend;
 
27928
  friend class ::ExtAC;
 
27929
  friend class ::ExtACBuilderCoupling;
 
27930
  friend class ::ExtACSyntaxCoupling;
 
27931
  friend class ::ExtACTree;
 
27932
  friend class ::ExtACKeywords;
 
27933
  friend class ::ExtGnu;
 
27934
  friend class ::PragmaOnceUnitState;
 
27935
  friend class ::PragmaOnce;
 
27936
  friend class ::CMatchSyntax;
 
27937
 
 
27938
#line 4185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27939
 
 
27940
public:
 
27941
  /** Constructor.
 
27942
   *  \param size The initial size of the list. */
 
27943
  CT_MembInitList (int size = 2) : 
 
27944
    CT_List (size, 2, CT_List::OPEN) {}
 
27945
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
27946
  static const char *NodeId ();
 
27947
  /** Get the name of the node. Can be compared with NodeId(). */
 
27948
  const char *NodeName () const { return NodeId (); }
 
27949
  /** Get the scope opened by the member initializer list. */
 
27950
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
27951
public:
 
27952
  typedef AC::TLE __AttrTypes;
 
27953
  const char *__attr_name (unsigned i) const { return 0; }
 
27954
  const void *__attr (unsigned __i) const { return 0; }
 
27955
#line 4197 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27956
};
 
27957
 
 
27958
/** \class CT_MembInit CTree.h Puma/CTree.h
 
27959
 *  Tree node representing a member initializer.
 
27960
 *  Example: \code m_Member(0) \endcode */
 
27961
 
 
27962
#line 27963 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27963
} // closed Puma
 
27964
class CCExprResolve;
 
27965
class CExprResolve;
 
27966
class WinIfExists;
 
27967
class WinImportHandler;
 
27968
class WinMacros;
 
27969
class WinAsm;
 
27970
class WinDeclSpecs;
 
27971
class WinMemberExplSpec;
 
27972
class WinTypeKeywords;
 
27973
class WinFriend;
 
27974
class ExtAC;
 
27975
class ExtACBuilderCoupling;
 
27976
class ExtACSyntaxCoupling;
 
27977
class ExtACTree;
 
27978
class ExtACKeywords;
 
27979
class ExtGnu;
 
27980
class PragmaOnceUnitState;
 
27981
class PragmaOnce;
 
27982
class CMatchSyntax;
 
27983
namespace Puma {
 
27984
 
 
27985
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27986
 
 
27987
#line 27988 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27988
} // closed Puma
 
27989
 
 
27990
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
27991
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
27992
#include "CCExprResolveH.ah"
 
27993
#endif
 
27994
namespace Puma {
 
27995
 
 
27996
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
27997
 
 
27998
#line 27999 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
27999
} // closed Puma
 
28000
 
 
28001
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
28002
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
28003
#include "CExprResolveH.ah"
 
28004
#endif
 
28005
namespace Puma {
 
28006
 
 
28007
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28008
class CT_MembInit : public CT_Expression, public CSemObject {
 
28009
#line 28010 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28010
  friend class ::CCExprResolve;
 
28011
  friend class ::CExprResolve;
 
28012
  friend class ::WinIfExists;
 
28013
  friend class ::WinImportHandler;
 
28014
  friend class ::WinMacros;
 
28015
  friend class ::WinAsm;
 
28016
  friend class ::WinDeclSpecs;
 
28017
  friend class ::WinMemberExplSpec;
 
28018
  friend class ::WinTypeKeywords;
 
28019
  friend class ::WinFriend;
 
28020
  friend class ::ExtAC;
 
28021
  friend class ::ExtACBuilderCoupling;
 
28022
  friend class ::ExtACSyntaxCoupling;
 
28023
  friend class ::ExtACTree;
 
28024
  friend class ::ExtACKeywords;
 
28025
  friend class ::ExtGnu;
 
28026
  friend class ::PragmaOnceUnitState;
 
28027
  friend class ::PragmaOnce;
 
28028
  friend class ::CMatchSyntax;
 
28029
 
 
28030
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28031
 
 
28032
  CTree *sons[2]; // name, init
 
28033
 
 
28034
public:
 
28035
  /** Constructor.
 
28036
   *  \param n The name of the member.
 
28037
   *  \param i The member initializer. */
 
28038
  CT_MembInit (CTree *n, CTree *i) { AddSon (sons[0], n); AddSon (sons[1], i); }
 
28039
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28040
  static const char *NodeId ();
 
28041
  /** Get the name of the node. Can be compared with NodeId(). */
 
28042
  const char *NodeName () const { return NodeId (); }
 
28043
  /** Get the number of sons. */
 
28044
  int Sons () const { return 2; }
 
28045
  /** Get the n-th son.
 
28046
   *  \param n The index of the son.
 
28047
   *  \return The n-th son or NULL. */
 
28048
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
28049
  /** Replace a son.
 
28050
   *  \param old_son The son to replace.
 
28051
   *  \param new_son The new son. */
 
28052
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
28053
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
28054
  }
 
28055
  /** Get the name of the member. */
 
28056
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
28057
  /** Get the initializer. */
 
28058
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
28059
  /** Get the semantic information about the initialized member. */
 
28060
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
28061
   private:
 
28062
  typedef CT_MembInit CCExprResolveExpr;
 
28063
 
 
28064
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
28065
 public :
 
28066
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
28067
  typedef CT_MembInit CExprResolveExpr;
 
28068
 
 
28069
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
28070
 public :
 
28071
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
28072
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
28073
  const char *__attr_name (unsigned i) const {
 
28074
    static const char *names[] = { "sons" }; return names[i];
 
28075
  }
 
28076
  const void *__attr (unsigned __i) const {
 
28077
    switch (__i) { case 0: return &sons; default: return 0; }
 
28078
  }
 
28079
#line 4232 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28080
};
 
28081
 
 
28082
/** \class CT_BaseSpecList CTree.h Puma/CTree.h
 
28083
 *  Tree node representing a base specifier list.
 
28084
 *  Example: \code : X, Y, Z \endcode */
 
28085
 
 
28086
#line 28087 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28087
} // closed Puma
 
28088
class CCExprResolve;
 
28089
class CExprResolve;
 
28090
class WinIfExists;
 
28091
class WinImportHandler;
 
28092
class WinMacros;
 
28093
class WinAsm;
 
28094
class WinDeclSpecs;
 
28095
class WinMemberExplSpec;
 
28096
class WinTypeKeywords;
 
28097
class WinFriend;
 
28098
class ExtAC;
 
28099
class ExtACBuilderCoupling;
 
28100
class ExtACSyntaxCoupling;
 
28101
class ExtACTree;
 
28102
class ExtACKeywords;
 
28103
class ExtGnu;
 
28104
class PragmaOnceUnitState;
 
28105
class PragmaOnce;
 
28106
class CMatchSyntax;
 
28107
namespace Puma {
 
28108
 
 
28109
#line 4237 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28110
class CT_BaseSpecList : public CT_List {
 
28111
#line 28112 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28112
  friend class ::CCExprResolve;
 
28113
  friend class ::CExprResolve;
 
28114
  friend class ::WinIfExists;
 
28115
  friend class ::WinImportHandler;
 
28116
  friend class ::WinMacros;
 
28117
  friend class ::WinAsm;
 
28118
  friend class ::WinDeclSpecs;
 
28119
  friend class ::WinMemberExplSpec;
 
28120
  friend class ::WinTypeKeywords;
 
28121
  friend class ::WinFriend;
 
28122
  friend class ::ExtAC;
 
28123
  friend class ::ExtACBuilderCoupling;
 
28124
  friend class ::ExtACSyntaxCoupling;
 
28125
  friend class ::ExtACTree;
 
28126
  friend class ::ExtACKeywords;
 
28127
  friend class ::ExtGnu;
 
28128
  friend class ::PragmaOnceUnitState;
 
28129
  friend class ::PragmaOnce;
 
28130
  friend class ::CMatchSyntax;
 
28131
 
 
28132
#line 4237 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28133
 
 
28134
public:
 
28135
  /** Constructor.
 
28136
   *  \param size The initial size of the list. */
 
28137
  CT_BaseSpecList (int size = 2) : 
 
28138
    CT_List (size, 2, CT_List::OPEN|CT_List::SEPARATORS) {}
 
28139
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28140
  static const char *NodeId ();
 
28141
  /** Get the name of the node. Can be compared with NodeId(). */
 
28142
  const char *NodeName () const { return NodeId (); }
 
28143
public:
 
28144
  typedef AC::TLE __AttrTypes;
 
28145
  const char *__attr_name (unsigned i) const { return 0; }
 
28146
  const void *__attr (unsigned __i) const { return 0; }
 
28147
#line 4247 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28148
};
 
28149
 
 
28150
/** \class CT_AccessSpec CTree.h Puma/CTree.h
 
28151
 *  Tree node representing an access specifier.
 
28152
 *  Example: \code public: \endcode */
 
28153
 
 
28154
#line 28155 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28155
} // closed Puma
 
28156
class CCExprResolve;
 
28157
class CExprResolve;
 
28158
class WinIfExists;
 
28159
class WinImportHandler;
 
28160
class WinMacros;
 
28161
class WinAsm;
 
28162
class WinDeclSpecs;
 
28163
class WinMemberExplSpec;
 
28164
class WinTypeKeywords;
 
28165
class WinFriend;
 
28166
class ExtAC;
 
28167
class ExtACBuilderCoupling;
 
28168
class ExtACSyntaxCoupling;
 
28169
class ExtACTree;
 
28170
class ExtACKeywords;
 
28171
class ExtGnu;
 
28172
class PragmaOnceUnitState;
 
28173
class PragmaOnce;
 
28174
class CMatchSyntax;
 
28175
namespace Puma {
 
28176
 
 
28177
#line 4252 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28178
class CT_AccessSpec : public CTree {
 
28179
#line 28180 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28180
  friend class ::CCExprResolve;
 
28181
  friend class ::CExprResolve;
 
28182
  friend class ::WinIfExists;
 
28183
  friend class ::WinImportHandler;
 
28184
  friend class ::WinMacros;
 
28185
  friend class ::WinAsm;
 
28186
  friend class ::WinDeclSpecs;
 
28187
  friend class ::WinMemberExplSpec;
 
28188
  friend class ::WinTypeKeywords;
 
28189
  friend class ::WinFriend;
 
28190
  friend class ::ExtAC;
 
28191
  friend class ::ExtACBuilderCoupling;
 
28192
  friend class ::ExtACSyntaxCoupling;
 
28193
  friend class ::ExtACTree;
 
28194
  friend class ::ExtACKeywords;
 
28195
  friend class ::ExtGnu;
 
28196
  friend class ::PragmaOnceUnitState;
 
28197
  friend class ::PragmaOnce;
 
28198
  friend class ::CMatchSyntax;
 
28199
 
 
28200
#line 4252 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28201
 
 
28202
  CTree *sons[2]; // access, colon
 
28203
 
 
28204
public:
 
28205
  /** Constructor.
 
28206
   *  \param a The access specifier, i.e. 'public', 'private', or 'protected'.
 
28207
   *  \param c The trailing colon. */
 
28208
  CT_AccessSpec (CTree *a, CTree *c) { AddSon (sons[0], a); AddSon (sons[1], c); }
 
28209
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28210
  static const char *NodeId ();
 
28211
  /** Get the name of the node. Can be compared with NodeId(). */
 
28212
  const char *NodeName () const { return NodeId (); }
 
28213
  /** Get the number of sons. */
 
28214
  int Sons () const { return 2; }
 
28215
  /** Get the n-th son.
 
28216
   *  \param n The index of the son.
 
28217
   *  \return The n-th son or NULL. */
 
28218
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
28219
  /** Get the access specifier type (token type). */
 
28220
  int Access () const { return sons[0]->token ()->type (); }
 
28221
  /** Replace a son.
 
28222
   *  \param old_son The son to replace.
 
28223
   *  \param new_son The new son. */
 
28224
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
28225
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
28226
  }
 
28227
public:
 
28228
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
28229
  const char *__attr_name (unsigned i) const {
 
28230
    static const char *names[] = { "sons" }; return names[i];
 
28231
  }
 
28232
  const void *__attr (unsigned __i) const {
 
28233
    switch (__i) { case 0: return &sons; default: return 0; }
 
28234
  }
 
28235
#line 4278 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28236
};
 
28237
 
 
28238
/** \class CT_BaseSpec CTree.h Puma/CTree.h
 
28239
 *  Tree node representing a base class specifier.
 
28240
 *  Example: \code public X \endcode */
 
28241
 
 
28242
#line 28243 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28243
} // closed Puma
 
28244
class CCExprResolve;
 
28245
class CExprResolve;
 
28246
class WinIfExists;
 
28247
class WinImportHandler;
 
28248
class WinMacros;
 
28249
class WinAsm;
 
28250
class WinDeclSpecs;
 
28251
class WinMemberExplSpec;
 
28252
class WinTypeKeywords;
 
28253
class WinFriend;
 
28254
class ExtAC;
 
28255
class ExtACBuilderCoupling;
 
28256
class ExtACSyntaxCoupling;
 
28257
class ExtACTree;
 
28258
class ExtACKeywords;
 
28259
class ExtGnu;
 
28260
class PragmaOnceUnitState;
 
28261
class PragmaOnce;
 
28262
class CMatchSyntax;
 
28263
namespace Puma {
 
28264
 
 
28265
#line 4283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28266
class CT_BaseSpec : public CTree {
 
28267
#line 28268 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28268
  friend class ::CCExprResolve;
 
28269
  friend class ::CExprResolve;
 
28270
  friend class ::WinIfExists;
 
28271
  friend class ::WinImportHandler;
 
28272
  friend class ::WinMacros;
 
28273
  friend class ::WinAsm;
 
28274
  friend class ::WinDeclSpecs;
 
28275
  friend class ::WinMemberExplSpec;
 
28276
  friend class ::WinTypeKeywords;
 
28277
  friend class ::WinFriend;
 
28278
  friend class ::ExtAC;
 
28279
  friend class ::ExtACBuilderCoupling;
 
28280
  friend class ::ExtACSyntaxCoupling;
 
28281
  friend class ::ExtACTree;
 
28282
  friend class ::ExtACKeywords;
 
28283
  friend class ::ExtGnu;
 
28284
  friend class ::PragmaOnceUnitState;
 
28285
  friend class ::PragmaOnce;
 
28286
  friend class ::CMatchSyntax;
 
28287
 
 
28288
#line 4283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28289
 
 
28290
  CTree *sons[3]; // virtual, access, name
 
28291
 
 
28292
public:
 
28293
  /** Constructor.
 
28294
   *  \param v Optional keyword 'virtual'.
 
28295
   *  \param a The optional access specifier.
 
28296
   *  \param n The name of the base class. */
 
28297
  CT_BaseSpec (CTree *v, CTree *a, CTree *n) {
 
28298
    AddSon (sons[0], v); AddSon (sons[1], a); AddSon (sons[2], n); 
 
28299
  }
 
28300
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28301
  static const char *NodeId ();
 
28302
  /** Get the name of the node. Can be compared with NodeId(). */
 
28303
  const char *NodeName () const { return NodeId (); }
 
28304
  /** Get the number of sons. */
 
28305
  int Sons () const { return CTree::Sons (sons, 3); }
 
28306
  /** Get the n-th son.
 
28307
   *  \param n The index of the son.
 
28308
   *  \return The n-th son or NULL. */
 
28309
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
28310
  /** Get the type of the access specifier (token type). */
 
28311
  int Access () const { return sons[1]->token ()->type (); }
 
28312
  /** The access specifier. */
 
28313
  CTree *AccessSpec () const { return sons[1]; }
 
28314
  /** Get the keyword 'virtual'. */
 
28315
  CTree *Virtual () const { return sons[0]; }
 
28316
  /** Get the name of the base class. */
 
28317
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
28318
  /** Replace a son.
 
28319
   *  \param old_son The son to replace.
 
28320
   *  \param new_son The new son. */
 
28321
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
28322
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
28323
  }
 
28324
public:
 
28325
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
28326
  const char *__attr_name (unsigned i) const {
 
28327
    static const char *names[] = { "sons" }; return names[i];
 
28328
  }
 
28329
  const void *__attr (unsigned __i) const {
 
28330
    switch (__i) { case 0: return &sons; default: return 0; }
 
28331
  }
 
28332
#line 4318 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28333
};
 
28334
 
 
28335
/** \class CT_AccessDecl CTree.h Puma/CTree.h
 
28336
 *  Tree node representing a member access declaration.
 
28337
 *  Example: \code m_BaseClassMember; \endcode */
 
28338
 
 
28339
#line 28340 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28340
} // closed Puma
 
28341
class CCExprResolve;
 
28342
class CExprResolve;
 
28343
class WinIfExists;
 
28344
class WinImportHandler;
 
28345
class WinMacros;
 
28346
class WinAsm;
 
28347
class WinDeclSpecs;
 
28348
class WinMemberExplSpec;
 
28349
class WinTypeKeywords;
 
28350
class WinFriend;
 
28351
class ExtAC;
 
28352
class ExtACBuilderCoupling;
 
28353
class ExtACSyntaxCoupling;
 
28354
class ExtACTree;
 
28355
class ExtACKeywords;
 
28356
class ExtGnu;
 
28357
class PragmaOnceUnitState;
 
28358
class PragmaOnce;
 
28359
class CMatchSyntax;
 
28360
namespace Puma {
 
28361
 
 
28362
#line 4323 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28363
class CT_AccessDecl : public CT_Decl {
 
28364
#line 28365 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28365
  friend class ::CCExprResolve;
 
28366
  friend class ::CExprResolve;
 
28367
  friend class ::WinIfExists;
 
28368
  friend class ::WinImportHandler;
 
28369
  friend class ::WinMacros;
 
28370
  friend class ::WinAsm;
 
28371
  friend class ::WinDeclSpecs;
 
28372
  friend class ::WinMemberExplSpec;
 
28373
  friend class ::WinTypeKeywords;
 
28374
  friend class ::WinFriend;
 
28375
  friend class ::ExtAC;
 
28376
  friend class ::ExtACBuilderCoupling;
 
28377
  friend class ::ExtACSyntaxCoupling;
 
28378
  friend class ::ExtACTree;
 
28379
  friend class ::ExtACKeywords;
 
28380
  friend class ::ExtGnu;
 
28381
  friend class ::PragmaOnceUnitState;
 
28382
  friend class ::PragmaOnce;
 
28383
  friend class ::CMatchSyntax;
 
28384
 
 
28385
#line 4323 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28386
 
 
28387
  CTree *sons[2]; // name, semi_colon
 
28388
 
 
28389
public:
 
28390
  /** Constructor.
 
28391
   *  \param n The name of the base class member.
 
28392
   *  \param s The trailing semi-colon. */
 
28393
  CT_AccessDecl (CTree *n, CTree *s) { AddSon (sons[0], n); AddSon (sons[1], s); }
 
28394
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28395
  static const char *NodeId ();
 
28396
  /** Get the name of the node. Can be compared with NodeId(). */
 
28397
  const char *NodeName () const { return NodeId (); }
 
28398
  /** Get the number of sons. */
 
28399
  int Sons () const { return 2; }
 
28400
  /** Get the n-th son.
 
28401
   *  \param n The index of the son.
 
28402
   *  \return The n-th son or NULL. */
 
28403
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
28404
  /** Get the name of the base class member. */
 
28405
  CT_QualName *Member () const { return (CT_QualName*)sons[0]; }
 
28406
  /** Replace a son.
 
28407
   *  \param old_son The son to replace.
 
28408
   *  \param new_son The new son. */
 
28409
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
28410
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
28411
  }
 
28412
public:
 
28413
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
28414
  const char *__attr_name (unsigned i) const {
 
28415
    static const char *names[] = { "sons" }; return names[i];
 
28416
  }
 
28417
  const void *__attr (unsigned __i) const {
 
28418
    switch (__i) { case 0: return &sons; default: return 0; }
 
28419
  }
 
28420
#line 4349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28421
};
 
28422
 
 
28423
/** \class CT_UsingDecl CTree.h Puma/CTree.h
 
28424
 *  Tree node representing a using declaration.
 
28425
 *  Example: \code using Base::m_Member; \endcode */
 
28426
 
 
28427
#line 28428 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28428
} // closed Puma
 
28429
class CCExprResolve;
 
28430
class CExprResolve;
 
28431
class WinIfExists;
 
28432
class WinImportHandler;
 
28433
class WinMacros;
 
28434
class WinAsm;
 
28435
class WinDeclSpecs;
 
28436
class WinMemberExplSpec;
 
28437
class WinTypeKeywords;
 
28438
class WinFriend;
 
28439
class ExtAC;
 
28440
class ExtACBuilderCoupling;
 
28441
class ExtACSyntaxCoupling;
 
28442
class ExtACTree;
 
28443
class ExtACKeywords;
 
28444
class ExtGnu;
 
28445
class PragmaOnceUnitState;
 
28446
class PragmaOnce;
 
28447
class CMatchSyntax;
 
28448
namespace Puma {
 
28449
 
 
28450
#line 4354 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28451
class CT_UsingDecl : public CT_AccessDecl {
 
28452
#line 28453 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28453
  friend class ::CCExprResolve;
 
28454
  friend class ::CExprResolve;
 
28455
  friend class ::WinIfExists;
 
28456
  friend class ::WinImportHandler;
 
28457
  friend class ::WinMacros;
 
28458
  friend class ::WinAsm;
 
28459
  friend class ::WinDeclSpecs;
 
28460
  friend class ::WinMemberExplSpec;
 
28461
  friend class ::WinTypeKeywords;
 
28462
  friend class ::WinFriend;
 
28463
  friend class ::ExtAC;
 
28464
  friend class ::ExtACBuilderCoupling;
 
28465
  friend class ::ExtACSyntaxCoupling;
 
28466
  friend class ::ExtACTree;
 
28467
  friend class ::ExtACKeywords;
 
28468
  friend class ::ExtGnu;
 
28469
  friend class ::PragmaOnceUnitState;
 
28470
  friend class ::PragmaOnce;
 
28471
  friend class ::CMatchSyntax;
 
28472
 
 
28473
#line 4354 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28474
 
 
28475
  CTree *sons[2]; // using, typename
 
28476
 
 
28477
public:
 
28478
  /** Constructor.
 
28479
   *  \param u The keyword 'using'.
 
28480
   *  \param n The name of the entity.
 
28481
   *  \param s The trailing semi-colon. */
 
28482
  CT_UsingDecl (CTree *u, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
28483
    AddSon (sons[0], u); AddSon (sons[1], 0); 
 
28484
  }
 
28485
  /** Constructor.
 
28486
   *  \param u The keyword 'using'.
 
28487
   *  \param t The keyword 'typename'.
 
28488
   *  \param n The name of the entity.
 
28489
   *  \param s The trailing semi-colon. */
 
28490
  CT_UsingDecl (CTree *u, CTree *t, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
28491
    AddSon (sons[0], u); AddSon (sons[1], t); 
 
28492
  }
 
28493
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28494
  static const char *NodeId ();
 
28495
  /** Get the name of the node. Can be compared with NodeId(). */
 
28496
  const char *NodeName () const { return NodeId (); }
 
28497
  /** Get the number of sons. */
 
28498
  int Sons () const { return CTree::Sons (sons, 2) + CT_AccessDecl::Sons (); }
 
28499
  /** Get the n-th son.
 
28500
   *  \param n The index of the son.
 
28501
   *  \return The n-th son or NULL. */
 
28502
  CTree *Son (int n) const {
 
28503
    int num = CTree::Sons (sons, 2);
 
28504
    CTree *result = CTree::Son (sons, 2, n);
 
28505
    return result ? result : CT_AccessDecl::Son (n-num);
 
28506
  }
 
28507
  /** Get the keyword 'typename'. */
 
28508
  CTree *Typename () const { return sons[1]; }
 
28509
  /** Replace a son.
 
28510
   *  \param old_son The son to replace.
 
28511
   *  \param new_son The new son. */
 
28512
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
28513
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
28514
    CT_AccessDecl::ReplaceSon (old_son, new_son);
 
28515
  }
 
28516
public:
 
28517
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
28518
  const char *__attr_name (unsigned i) const {
 
28519
    static const char *names[] = { "sons" }; return names[i];
 
28520
  }
 
28521
  const void *__attr (unsigned __i) const {
 
28522
    switch (__i) { case 0: return &sons; default: return 0; }
 
28523
  }
 
28524
#line 4396 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28525
};
 
28526
 
 
28527
/*****************************************************************************/
 
28528
/*                                                                           */
 
28529
/*                              Wildcards                                    */
 
28530
/*                                                                           */
 
28531
/*****************************************************************************/
 
28532
 
 
28533
/** \class CT_Any CTree.h Puma/CTree.h
 
28534
 *  Tree node representing a wildcard. */
 
28535
 
 
28536
#line 28537 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28537
} // closed Puma
 
28538
class CCExprResolve;
 
28539
class CExprResolve;
 
28540
class WinIfExists;
 
28541
class WinImportHandler;
 
28542
class WinMacros;
 
28543
class WinAsm;
 
28544
class WinDeclSpecs;
 
28545
class WinMemberExplSpec;
 
28546
class WinTypeKeywords;
 
28547
class WinFriend;
 
28548
class ExtAC;
 
28549
class ExtACBuilderCoupling;
 
28550
class ExtACSyntaxCoupling;
 
28551
class ExtACTree;
 
28552
class ExtACKeywords;
 
28553
class ExtGnu;
 
28554
class PragmaOnceUnitState;
 
28555
class PragmaOnce;
 
28556
class CMatchSyntax;
 
28557
namespace Puma {
 
28558
 
 
28559
#line 4406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28560
class CT_Any : public CTree {
 
28561
#line 28562 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28562
  friend class ::CCExprResolve;
 
28563
  friend class ::CExprResolve;
 
28564
  friend class ::WinIfExists;
 
28565
  friend class ::WinImportHandler;
 
28566
  friend class ::WinMacros;
 
28567
  friend class ::WinAsm;
 
28568
  friend class ::WinDeclSpecs;
 
28569
  friend class ::WinMemberExplSpec;
 
28570
  friend class ::WinTypeKeywords;
 
28571
  friend class ::WinFriend;
 
28572
  friend class ::ExtAC;
 
28573
  friend class ::ExtACBuilderCoupling;
 
28574
  friend class ::ExtACSyntaxCoupling;
 
28575
  friend class ::ExtACTree;
 
28576
  friend class ::ExtACKeywords;
 
28577
  friend class ::ExtGnu;
 
28578
  friend class ::PragmaOnceUnitState;
 
28579
  friend class ::PragmaOnce;
 
28580
  friend class ::CMatchSyntax;
 
28581
 
 
28582
#line 4406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28583
 
 
28584
  CTree *sons[2]; // keyword, extension
 
28585
 
 
28586
public:
 
28587
  /** Constructor.
 
28588
   *  \param k The wildcard keyword.
 
28589
   *  \param e The extension. */
 
28590
  CT_Any (CTree *k, CTree *e = (CTree*)0) { AddSon (sons[0], k); AddSon (sons[1], e); }
 
28591
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28592
  static const char *NodeId ();
 
28593
  /** Get the name of the node. Can be compared with NodeId(). */
 
28594
  const char *NodeName () const { return NodeId (); }
 
28595
  /** Get the number of sons. */
 
28596
  int Sons () const { return CTree::Sons (sons, 2); }
 
28597
  /** Get the n-th son.
 
28598
   *  \param n The index of the son.
 
28599
   *  \return The n-th son or NULL. */
 
28600
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
28601
  /** Replace a son.
 
28602
   *  \param old_son The son to replace.
 
28603
   *  \param new_son The new son. */
 
28604
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
28605
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
28606
  }
 
28607
  /** Get the type of the wildcard (token type). */
 
28608
  int AnyType () const { return sons[0]->token ()->type (); }
 
28609
  /** Get the extension. */
 
28610
  CT_AnyExtension *Extension () const { return (CT_AnyExtension*)sons[1]; }
 
28611
public:
 
28612
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
28613
  const char *__attr_name (unsigned i) const {
 
28614
    static const char *names[] = { "sons" }; return names[i];
 
28615
  }
 
28616
  const void *__attr (unsigned __i) const {
 
28617
    switch (__i) { case 0: return &sons; default: return 0; }
 
28618
  }
 
28619
#line 4434 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28620
};
 
28621
 
 
28622
/** \class CT_AnyList CTree.h Puma/CTree.h
 
28623
 *  Tree node representing a list wildcard. */
 
28624
 
 
28625
#line 28626 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28626
} // closed Puma
 
28627
class CCExprResolve;
 
28628
class CExprResolve;
 
28629
class WinIfExists;
 
28630
class WinImportHandler;
 
28631
class WinMacros;
 
28632
class WinAsm;
 
28633
class WinDeclSpecs;
 
28634
class WinMemberExplSpec;
 
28635
class WinTypeKeywords;
 
28636
class WinFriend;
 
28637
class ExtAC;
 
28638
class ExtACBuilderCoupling;
 
28639
class ExtACSyntaxCoupling;
 
28640
class ExtACTree;
 
28641
class ExtACKeywords;
 
28642
class ExtGnu;
 
28643
class PragmaOnceUnitState;
 
28644
class PragmaOnce;
 
28645
class CMatchSyntax;
 
28646
namespace Puma {
 
28647
 
 
28648
#line 4438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28649
class CT_AnyList : public CT_Any {
 
28650
#line 28651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28651
  friend class ::CCExprResolve;
 
28652
  friend class ::CExprResolve;
 
28653
  friend class ::WinIfExists;
 
28654
  friend class ::WinImportHandler;
 
28655
  friend class ::WinMacros;
 
28656
  friend class ::WinAsm;
 
28657
  friend class ::WinDeclSpecs;
 
28658
  friend class ::WinMemberExplSpec;
 
28659
  friend class ::WinTypeKeywords;
 
28660
  friend class ::WinFriend;
 
28661
  friend class ::ExtAC;
 
28662
  friend class ::ExtACBuilderCoupling;
 
28663
  friend class ::ExtACSyntaxCoupling;
 
28664
  friend class ::ExtACTree;
 
28665
  friend class ::ExtACKeywords;
 
28666
  friend class ::ExtGnu;
 
28667
  friend class ::PragmaOnceUnitState;
 
28668
  friend class ::PragmaOnce;
 
28669
  friend class ::CMatchSyntax;
 
28670
 
 
28671
#line 4438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28672
 
 
28673
public:
 
28674
  /** Constructor.
 
28675
   *  \param k The wildcard keyword.
 
28676
   *  \param e The extension. */
 
28677
  CT_AnyList (CTree *k, CTree *e = (CTree*)0) : CT_Any (k, e) {}
 
28678
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28679
  static const char *NodeId ();
 
28680
  /** Get the name of the node. Can be compared with NodeId(). */
 
28681
  const char *NodeName () const { return NodeId (); }
 
28682
public:
 
28683
  typedef AC::TLE __AttrTypes;
 
28684
  const char *__attr_name (unsigned i) const { return 0; }
 
28685
  const void *__attr (unsigned __i) const { return 0; }
 
28686
#line 4448 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28687
};
 
28688
 
 
28689
/** \class CT_AnyExtension CTree.h Puma/CTree.h
 
28690
 *  Tree node representing a wildcard extension. */
 
28691
 
 
28692
#line 28693 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28693
} // closed Puma
 
28694
class CCExprResolve;
 
28695
class CExprResolve;
 
28696
class WinIfExists;
 
28697
class WinImportHandler;
 
28698
class WinMacros;
 
28699
class WinAsm;
 
28700
class WinDeclSpecs;
 
28701
class WinMemberExplSpec;
 
28702
class WinTypeKeywords;
 
28703
class WinFriend;
 
28704
class ExtAC;
 
28705
class ExtACBuilderCoupling;
 
28706
class ExtACSyntaxCoupling;
 
28707
class ExtACTree;
 
28708
class ExtACKeywords;
 
28709
class ExtGnu;
 
28710
class PragmaOnceUnitState;
 
28711
class PragmaOnce;
 
28712
class CMatchSyntax;
 
28713
namespace Puma {
 
28714
 
 
28715
#line 4452 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28716
class CT_AnyExtension : public CTree, public CSemValue {
 
28717
#line 28718 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28718
  friend class ::CCExprResolve;
 
28719
  friend class ::CExprResolve;
 
28720
  friend class ::WinIfExists;
 
28721
  friend class ::WinImportHandler;
 
28722
  friend class ::WinMacros;
 
28723
  friend class ::WinAsm;
 
28724
  friend class ::WinDeclSpecs;
 
28725
  friend class ::WinMemberExplSpec;
 
28726
  friend class ::WinTypeKeywords;
 
28727
  friend class ::WinFriend;
 
28728
  friend class ::ExtAC;
 
28729
  friend class ::ExtACBuilderCoupling;
 
28730
  friend class ::ExtACSyntaxCoupling;
 
28731
  friend class ::ExtACTree;
 
28732
  friend class ::ExtACKeywords;
 
28733
  friend class ::ExtGnu;
 
28734
  friend class ::PragmaOnceUnitState;
 
28735
  friend class ::PragmaOnce;
 
28736
  friend class ::CMatchSyntax;
 
28737
 
 
28738
#line 4452 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28739
 
 
28740
  CTree *sons[5]; // open, string, comma, cond, close
 
28741
 
 
28742
public:
 
28743
  /** Constructor.
 
28744
   *  \param o Left parenthesis before the extension. 
 
28745
   *  \param n The name of the extension.
 
28746
   *  \param co The comma between the name and the condition. 
 
28747
   *  \param c The condition.
 
28748
   *  \param cr Right parenthesis behind the extension. */
 
28749
  CT_AnyExtension (CTree *o, CTree *n, CTree *co, CTree *c, CTree *cr) {
 
28750
    AddSon (sons[0], o); AddSon (sons[1], n); AddSon (sons[2], co); 
 
28751
    AddSon (sons[3], c); AddSon (sons[4], cr); 
 
28752
  }
 
28753
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28754
  static const char *NodeId ();
 
28755
  /** Get the name of the node. Can be compared with NodeId(). */
 
28756
  const char *NodeName () const { return NodeId (); }
 
28757
  /** Get the number of sons. */
 
28758
  int Sons () const { return CTree::Sons (sons, 5); }
 
28759
  /** Get the n-th son.
 
28760
   *  \param n The index of the son.
 
28761
   *  \return The n-th son or NULL. */
 
28762
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
28763
  /** Replace a son.
 
28764
   *  \param old_son The son to replace.
 
28765
   *  \param new_son The new son. */
 
28766
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
28767
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
28768
  }
 
28769
  /** Get the condition. */
 
28770
  CTree *Condition () const { return sons[3]; }
 
28771
  /** Get the name string. */
 
28772
  CT_Token *String () const { return (CT_Token*)sons[1]; }
 
28773
  /** Get the extension name. */
 
28774
  const char *Name () const { return value ? value->StrLiteral ()->String () : (const char*)0; }
 
28775
  /** Get the value of the extension (the name). */
 
28776
  CExprValue *Value () const { return value; }
 
28777
  /** Get the semantic value information object. */
 
28778
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
28779
public:
 
28780
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
28781
  const char *__attr_name (unsigned i) const {
 
28782
    static const char *names[] = { "sons" }; return names[i];
 
28783
  }
 
28784
  const void *__attr (unsigned __i) const {
 
28785
    switch (__i) { case 0: return &sons; default: return 0; }
 
28786
  }
 
28787
#line 4492 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28788
};
 
28789
 
 
28790
/** \class CT_AnyCondition CTree.h Puma/CTree.h
 
28791
 *  Tree node representing the condition of a wildcard. */
 
28792
 
 
28793
#line 28794 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28794
} // closed Puma
 
28795
class CCExprResolve;
 
28796
class CExprResolve;
 
28797
class WinIfExists;
 
28798
class WinImportHandler;
 
28799
class WinMacros;
 
28800
class WinAsm;
 
28801
class WinDeclSpecs;
 
28802
class WinMemberExplSpec;
 
28803
class WinTypeKeywords;
 
28804
class WinFriend;
 
28805
class ExtAC;
 
28806
class ExtACBuilderCoupling;
 
28807
class ExtACSyntaxCoupling;
 
28808
class ExtACTree;
 
28809
class ExtACKeywords;
 
28810
class ExtGnu;
 
28811
class PragmaOnceUnitState;
 
28812
class PragmaOnce;
 
28813
class CMatchSyntax;
 
28814
namespace Puma {
 
28815
 
 
28816
#line 4496 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28817
class CT_AnyCondition : public CTree {
 
28818
#line 28819 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28819
  friend class ::CCExprResolve;
 
28820
  friend class ::CExprResolve;
 
28821
  friend class ::WinIfExists;
 
28822
  friend class ::WinImportHandler;
 
28823
  friend class ::WinMacros;
 
28824
  friend class ::WinAsm;
 
28825
  friend class ::WinDeclSpecs;
 
28826
  friend class ::WinMemberExplSpec;
 
28827
  friend class ::WinTypeKeywords;
 
28828
  friend class ::WinFriend;
 
28829
  friend class ::ExtAC;
 
28830
  friend class ::ExtACBuilderCoupling;
 
28831
  friend class ::ExtACSyntaxCoupling;
 
28832
  friend class ::ExtACTree;
 
28833
  friend class ::ExtACKeywords;
 
28834
  friend class ::ExtGnu;
 
28835
  friend class ::PragmaOnceUnitState;
 
28836
  friend class ::PragmaOnce;
 
28837
  friend class ::CMatchSyntax;
 
28838
 
 
28839
#line 4496 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28840
 
 
28841
  CTree *sons[3]; // arg1, arg2, arg3
 
28842
 
 
28843
public:
 
28844
  /** Constructor.
 
28845
   *  \param a1 The first argument.
 
28846
   *  \param a2 The optional second argument.
 
28847
   *  \param a3 The optional third argument. */
 
28848
  CT_AnyCondition (CTree *a1, CTree *a2 = (CTree*)0, CTree *a3 = (CTree*)0) {
 
28849
    AddSon (sons[0], a1); AddSon (sons[1], a2); AddSon (sons[2], a3); 
 
28850
  }
 
28851
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28852
  static const char *NodeId ();
 
28853
  /** Get the name of the node. Can be compared with NodeId(). */
 
28854
  const char *NodeName () const { return NodeId (); }
 
28855
  /** Get the number of sons. */
 
28856
  int Sons () const { return CTree::Sons (sons, 3); }
 
28857
  /** Get the n-th son.
 
28858
   *  \param n The index of the son.
 
28859
   *  \return The n-th son or NULL. */
 
28860
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
28861
  /** Replace a son.
 
28862
   *  \param old_son The son to replace.
 
28863
   *  \param new_son The new son. */
 
28864
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
28865
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
28866
  }
 
28867
public:
 
28868
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
28869
  const char *__attr_name (unsigned i) const {
 
28870
    static const char *names[] = { "sons" }; return names[i];
 
28871
  }
 
28872
  const void *__attr (unsigned __i) const {
 
28873
    switch (__i) { case 0: return &sons; default: return 0; }
 
28874
  }
 
28875
#line 4523 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
28876
};
 
28877
 
 
28878
 
 
28879
} // namespace Puma
 
28880
 
 
28881
#endif /* __CTree_h__ */
 
28882
 
 
28883
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
28884
namespace Puma {
 
28885
 
 
28886
 
 
28887
/** \class CT_GnuAsmSpec GnuCTree.h Puma/GnuCTree.h
 
28888
 *  Tree node representing an extended inline assembly specifier. 
 
28889
 *  Example: \code asm("r0") \endcode */
 
28890
 
 
28891
#line 28892 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28892
} // closed Puma
 
28893
class CCExprResolve;
 
28894
class CExprResolve;
 
28895
class WinIfExists;
 
28896
class WinImportHandler;
 
28897
class WinMacros;
 
28898
class WinAsm;
 
28899
class WinDeclSpecs;
 
28900
class WinMemberExplSpec;
 
28901
class WinTypeKeywords;
 
28902
class WinFriend;
 
28903
class ExtAC;
 
28904
class ExtACBuilderCoupling;
 
28905
class ExtACSyntaxCoupling;
 
28906
class ExtACTree;
 
28907
class ExtACKeywords;
 
28908
class ExtGnu;
 
28909
class PragmaOnceUnitState;
 
28910
class PragmaOnce;
 
28911
class CMatchSyntax;
 
28912
namespace Puma {
 
28913
 
 
28914
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
28915
class CT_GnuAsmSpec : public CTree {
 
28916
#line 28917 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28917
  friend class ::CCExprResolve;
 
28918
  friend class ::CExprResolve;
 
28919
  friend class ::WinIfExists;
 
28920
  friend class ::WinImportHandler;
 
28921
  friend class ::WinMacros;
 
28922
  friend class ::WinAsm;
 
28923
  friend class ::WinDeclSpecs;
 
28924
  friend class ::WinMemberExplSpec;
 
28925
  friend class ::WinTypeKeywords;
 
28926
  friend class ::WinFriend;
 
28927
  friend class ::ExtAC;
 
28928
  friend class ::ExtACBuilderCoupling;
 
28929
  friend class ::ExtACSyntaxCoupling;
 
28930
  friend class ::ExtACTree;
 
28931
  friend class ::ExtACKeywords;
 
28932
  friend class ::ExtGnu;
 
28933
  friend class ::PragmaOnceUnitState;
 
28934
  friend class ::PragmaOnce;
 
28935
  friend class ::CMatchSyntax;
 
28936
 
 
28937
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
28938
 
 
28939
  CTree *sons[4]; // asm, open, expr, close
 
28940
 
 
28941
public:
 
28942
  /** Constructor.
 
28943
   *  \param a The keyword 'asm'.
 
28944
   *  \param o Left parenthesis before the assembly.
 
28945
   *  \param e The assembly instructions.
 
28946
   *  \param c Right parenthesis behind the assembly. */
 
28947
  CT_GnuAsmSpec (CTree *a, CTree *o, CTree *e, CTree *c) {
 
28948
    AddSon (sons[0], a); AddSon (sons[1], o);
 
28949
    AddSon (sons[2], e); AddSon (sons[3], c);
 
28950
  }
 
28951
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
28952
  static const char *NodeId ();
 
28953
  /** Get the name of the node. Can be compared with NodeId(). */
 
28954
  const char *NodeName () const { return NodeId (); } 
 
28955
  /** Get the number of sons. */
 
28956
  int Sons () const { return 4; }
 
28957
  /** Get the n-th son.
 
28958
   *  \param n The index of the son.
 
28959
   *  \return The n-th son or NULL. */
 
28960
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
28961
  /** Get the assembly instructions. */
 
28962
  CT_Expression *Expr () const { return (CT_Expression*)sons[2]; }
 
28963
  /** Replace a son.
 
28964
   *  \param old_son The son to replace.
 
28965
   *  \param new_son The new son. */
 
28966
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
28967
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
28968
  }
 
28969
public:
 
28970
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
28971
  const char *__attr_name (unsigned i) const {
 
28972
    static const char *names[] = { "sons" }; return names[i];
 
28973
  }
 
28974
  const void *__attr (unsigned __i) const {
 
28975
    switch (__i) { case 0: return &sons; default: return 0; }
 
28976
  }
 
28977
#line 77 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
28978
};
 
28979
 
 
28980
/** \class CT_GnuAsmDef GnuCTree.h Puma/GnuCTree.h
 
28981
 *  Tree node representing an extended inline assembly definition. 
 
28982
 *  Example: \code asm("fsinx %1,%0" : "=f" (result) : "f" (angle)); \endcode */
 
28983
 
 
28984
#line 28985 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
28985
} // closed Puma
 
28986
class CCExprResolve;
 
28987
class CExprResolve;
 
28988
class WinIfExists;
 
28989
class WinImportHandler;
 
28990
class WinMacros;
 
28991
class WinAsm;
 
28992
class WinDeclSpecs;
 
28993
class WinMemberExplSpec;
 
28994
class WinTypeKeywords;
 
28995
class WinFriend;
 
28996
class ExtAC;
 
28997
class ExtACBuilderCoupling;
 
28998
class ExtACSyntaxCoupling;
 
28999
class ExtACTree;
 
29000
class ExtACKeywords;
 
29001
class ExtGnu;
 
29002
class PragmaOnceUnitState;
 
29003
class PragmaOnce;
 
29004
class CMatchSyntax;
 
29005
namespace Puma {
 
29006
 
 
29007
#line 82 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29008
class CT_GnuAsmDef : public CT_AsmDef {
 
29009
#line 29010 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29010
  friend class ::CCExprResolve;
 
29011
  friend class ::CExprResolve;
 
29012
  friend class ::WinIfExists;
 
29013
  friend class ::WinImportHandler;
 
29014
  friend class ::WinMacros;
 
29015
  friend class ::WinAsm;
 
29016
  friend class ::WinDeclSpecs;
 
29017
  friend class ::WinMemberExplSpec;
 
29018
  friend class ::WinTypeKeywords;
 
29019
  friend class ::WinFriend;
 
29020
  friend class ::ExtAC;
 
29021
  friend class ::ExtACBuilderCoupling;
 
29022
  friend class ::ExtACSyntaxCoupling;
 
29023
  friend class ::ExtACTree;
 
29024
  friend class ::ExtACKeywords;
 
29025
  friend class ::ExtGnu;
 
29026
  friend class ::PragmaOnceUnitState;
 
29027
  friend class ::PragmaOnce;
 
29028
  friend class ::CMatchSyntax;
 
29029
 
 
29030
#line 82 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29031
 
 
29032
  CTree *_cvqual;
 
29033
  CTree *_operands0;
 
29034
  CTree *_operands1;
 
29035
  CTree *_clobbers;
 
29036
 
 
29037
public:
 
29038
  /** Constructor.
 
29039
   *  \param a The keyword 'asm'.
 
29040
   *  \param cv Optional const/volatile qualifier sequence.
 
29041
   *  \param o Left parenthesis before the assembly.
 
29042
   *  \param s The assembly instructions.
 
29043
   *  \param op0 First operand.
 
29044
   *  \param op1 Second operand.
 
29045
   *  \param cl Clobbers.
 
29046
   *  \param c Right parenthesis behind the assembly.
 
29047
   *  \param sc The trailing semi-colon. */
 
29048
  CT_GnuAsmDef (CTree *a, CTree *cv, CTree *o, CTree *s, 
 
29049
                CTree *op0, CTree *op1, CTree *cl, CTree *c, CTree *sc) :
 
29050
    CT_AsmDef (a, o, s, c, sc) {
 
29051
    AddSon (_cvqual, cv); AddSon (_operands0, op0);
 
29052
    AddSon (_operands1, op1); AddSon (_clobbers, cl);
 
29053
  }
 
29054
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
29055
  static const char *NodeId ();
 
29056
  /** Get the name of the node. Can be compared with NodeId(). */
 
29057
  const char *NodeName () const { return NodeId (); }
 
29058
  /** Get the number of sons. */
 
29059
  virtual int Sons () const {
 
29060
    return 5 +
 
29061
           (_cvqual ? 1 : 0) +
 
29062
           (_operands0 ? 1 : 0) +
 
29063
           (_operands1 ? 1 : 0) +
 
29064
           (_clobbers ? 1 : 0);
 
29065
  }
 
29066
  /** Get the n-th son.
 
29067
   *  \param n The index of the son.
 
29068
   *  \return The n-th son or NULL. */
 
29069
  virtual CTree *Son (int n) const {
 
29070
    int have_cv = _cvqual ? 1 : 0;
 
29071
    int gnu_sons = Sons () - have_cv - 5;
 
29072
    int gnu_first = 3 + have_cv;
 
29073
    if (n == 0) return CT_AsmDef::Son (0);
 
29074
    else if (n == 1 && _cvqual) return _cvqual;
 
29075
    else if ((n == 1 && !_cvqual) || (n == 2 && _cvqual))
 
29076
       return CT_AsmDef::Son (1);
 
29077
    else if ((n == 2 && !_cvqual) || (n == 3 && _cvqual))
 
29078
       return CT_AsmDef::Son (2);
 
29079
    else if (n == gnu_first && gnu_sons >= 1) return _operands0;
 
29080
    else if (n == gnu_first + 1 && gnu_sons >= 2) return _operands1;
 
29081
    else if (n == gnu_first + 2 && gnu_sons >= 3) return _clobbers;
 
29082
    else if (n == Sons () - 2)
 
29083
       return CT_AsmDef::Son (3);
 
29084
    else if (n == Sons () - 1)
 
29085
       return CT_AsmDef::Son (4);
 
29086
    else return (CTree*)0;
 
29087
  }
 
29088
  /** Replace a son.
 
29089
   *  \param old_son The son to replace.
 
29090
   *  \param new_son The new son. */
 
29091
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {
 
29092
    if (old_son == _cvqual) CTree::ReplaceSon (_cvqual, old_son, new_son);
 
29093
    else if (old_son == _operands0) CTree::ReplaceSon (_operands0, old_son, new_son);
 
29094
    else if (old_son == _operands1) CTree::ReplaceSon (_operands1, old_son, new_son);
 
29095
    else if (old_son == _clobbers) CTree::ReplaceSon (_clobbers, old_son, new_son);
 
29096
    else CT_AsmDef::ReplaceSon (old_son, new_son);
 
29097
  }
 
29098
public:
 
29099
  typedef AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
29100
  const char *__attr_name (unsigned i) const {
 
29101
    static const char *names[] = { "_cvqual", "_operands0", "_operands1", "_clobbers" }; return names[i];
 
29102
  }
 
29103
  const void *__attr (unsigned __i) const {
 
29104
    switch (__i) { case 0: return &_cvqual; case 1: return &_operands0; case 2: return &_operands1; case 3: return &_clobbers; default: return 0; }
 
29105
  }
 
29106
#line 149 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29107
};
 
29108
 
 
29109
/** \class CT_GnuAsmOperand GnuCTree.h Puma/GnuCTree.h
 
29110
 *  Tree node representing an extended inline assembly operand. 
 
29111
 *  Example: \code "=f" (result) \endcode */
 
29112
 
 
29113
#line 29114 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29114
} // closed Puma
 
29115
class CCExprResolve;
 
29116
class CExprResolve;
 
29117
class WinIfExists;
 
29118
class WinImportHandler;
 
29119
class WinMacros;
 
29120
class WinAsm;
 
29121
class WinDeclSpecs;
 
29122
class WinMemberExplSpec;
 
29123
class WinTypeKeywords;
 
29124
class WinFriend;
 
29125
class ExtAC;
 
29126
class ExtACBuilderCoupling;
 
29127
class ExtACSyntaxCoupling;
 
29128
class ExtACTree;
 
29129
class ExtACKeywords;
 
29130
class ExtGnu;
 
29131
class PragmaOnceUnitState;
 
29132
class PragmaOnce;
 
29133
class CMatchSyntax;
 
29134
namespace Puma {
 
29135
 
 
29136
#line 154 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29137
class CT_GnuAsmOperand : public CTree {
 
29138
#line 29139 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29139
  friend class ::CCExprResolve;
 
29140
  friend class ::CExprResolve;
 
29141
  friend class ::WinIfExists;
 
29142
  friend class ::WinImportHandler;
 
29143
  friend class ::WinMacros;
 
29144
  friend class ::WinAsm;
 
29145
  friend class ::WinDeclSpecs;
 
29146
  friend class ::WinMemberExplSpec;
 
29147
  friend class ::WinTypeKeywords;
 
29148
  friend class ::WinFriend;
 
29149
  friend class ::ExtAC;
 
29150
  friend class ::ExtACBuilderCoupling;
 
29151
  friend class ::ExtACSyntaxCoupling;
 
29152
  friend class ::ExtACTree;
 
29153
  friend class ::ExtACKeywords;
 
29154
  friend class ::ExtGnu;
 
29155
  friend class ::PragmaOnceUnitState;
 
29156
  friend class ::PragmaOnce;
 
29157
  friend class ::CMatchSyntax;
 
29158
 
 
29159
#line 154 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29160
 
 
29161
  CTree *sons[4]; // string, open, expr, close
 
29162
 
 
29163
public:
 
29164
  /** Constructor.
 
29165
   *  \param s The operand constraint string.
 
29166
   *  \param o Left parenthesis before the operand.
 
29167
   *  \param e The operand.
 
29168
   *  \param c Right parenthesis behind the operand. */
 
29169
  CT_GnuAsmOperand (CTree *s, CTree *o, CTree *e, CTree *c) {
 
29170
    AddSon (sons[0], s); AddSon (sons[1], o);
 
29171
    AddSon (sons[2], e); AddSon (sons[3], c);
 
29172
  }
 
29173
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
29174
  static const char *NodeId ();
 
29175
  /** Get the name of the node. Can be compared with NodeId(). */
 
29176
  const char *NodeName () const { return NodeId (); } 
 
29177
  /** Get the number of sons. */
 
29178
  int Sons () const { return 4; }
 
29179
  /** Get the n-th son.
 
29180
   *  \param n The index of the son.
 
29181
   *  \return The n-th son or NULL. */
 
29182
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
29183
  /** Get the operand expression. */
 
29184
  CT_Expression *Expr () const { return (CT_Expression*)sons[2]; }
 
29185
  /** Get the operand constraint string. */
 
29186
  CT_String *String () const { return (CT_String*)sons[0]; }
 
29187
  /** Replace a son.
 
29188
   *  \param old_son The son to replace.
 
29189
   *  \param new_son The new son. */
 
29190
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
29191
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
29192
  }
 
29193
public:
 
29194
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
29195
  const char *__attr_name (unsigned i) const {
 
29196
    static const char *names[] = { "sons" }; return names[i];
 
29197
  }
 
29198
  const void *__attr (unsigned __i) const {
 
29199
    switch (__i) { case 0: return &sons; default: return 0; }
 
29200
  }
 
29201
#line 187 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29202
};
 
29203
 
 
29204
/** \class CT_GnuAsmOperands GnuCTree.h Puma/GnuCTree.h
 
29205
 *  Tree node representing a list of extended inline assembly operands. 
 
29206
 *  Example: \code : "=f" (result) : "f" (angle) \endcode */
 
29207
 
 
29208
#line 29209 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29209
} // closed Puma
 
29210
class CCExprResolve;
 
29211
class CExprResolve;
 
29212
class WinIfExists;
 
29213
class WinImportHandler;
 
29214
class WinMacros;
 
29215
class WinAsm;
 
29216
class WinDeclSpecs;
 
29217
class WinMemberExplSpec;
 
29218
class WinTypeKeywords;
 
29219
class WinFriend;
 
29220
class ExtAC;
 
29221
class ExtACBuilderCoupling;
 
29222
class ExtACSyntaxCoupling;
 
29223
class ExtACTree;
 
29224
class ExtACKeywords;
 
29225
class ExtGnu;
 
29226
class PragmaOnceUnitState;
 
29227
class PragmaOnce;
 
29228
class CMatchSyntax;
 
29229
namespace Puma {
 
29230
 
 
29231
#line 192 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29232
class CT_GnuAsmOperands : public CT_List {
 
29233
#line 29234 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29234
  friend class ::CCExprResolve;
 
29235
  friend class ::CExprResolve;
 
29236
  friend class ::WinIfExists;
 
29237
  friend class ::WinImportHandler;
 
29238
  friend class ::WinMacros;
 
29239
  friend class ::WinAsm;
 
29240
  friend class ::WinDeclSpecs;
 
29241
  friend class ::WinMemberExplSpec;
 
29242
  friend class ::WinTypeKeywords;
 
29243
  friend class ::WinFriend;
 
29244
  friend class ::ExtAC;
 
29245
  friend class ::ExtACBuilderCoupling;
 
29246
  friend class ::ExtACSyntaxCoupling;
 
29247
  friend class ::ExtACTree;
 
29248
  friend class ::ExtACKeywords;
 
29249
  friend class ::ExtGnu;
 
29250
  friend class ::PragmaOnceUnitState;
 
29251
  friend class ::PragmaOnce;
 
29252
  friend class ::CMatchSyntax;
 
29253
 
 
29254
#line 192 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29255
 
 
29256
public:
 
29257
  /** Constructor. */
 
29258
  CT_GnuAsmOperands () { AddProperties (OPEN | SEPARATORS); }
 
29259
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
29260
  static const char *NodeId ();
 
29261
  /** Get the name of the node. Can be compared with NodeId(). */
 
29262
  const char *NodeName () const { return NodeId (); }  
 
29263
public:
 
29264
  typedef AC::TLE __AttrTypes;
 
29265
  const char *__attr_name (unsigned i) const { return 0; }
 
29266
  const void *__attr (unsigned __i) const { return 0; }
 
29267
#line 200 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29268
};
 
29269
 
 
29270
/** \class CT_GnuAsmClobbers GnuCTree.h Puma/GnuCTree.h
 
29271
 *  Tree node representing a list of extended inline assembly clobbers. 
 
29272
 *  Example: \code : "r1", "r2", "r3", "r4", "r5" \endcode */
 
29273
 
 
29274
#line 29275 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29275
} // closed Puma
 
29276
class CCExprResolve;
 
29277
class CExprResolve;
 
29278
class WinIfExists;
 
29279
class WinImportHandler;
 
29280
class WinMacros;
 
29281
class WinAsm;
 
29282
class WinDeclSpecs;
 
29283
class WinMemberExplSpec;
 
29284
class WinTypeKeywords;
 
29285
class WinFriend;
 
29286
class ExtAC;
 
29287
class ExtACBuilderCoupling;
 
29288
class ExtACSyntaxCoupling;
 
29289
class ExtACTree;
 
29290
class ExtACKeywords;
 
29291
class ExtGnu;
 
29292
class PragmaOnceUnitState;
 
29293
class PragmaOnce;
 
29294
class CMatchSyntax;
 
29295
namespace Puma {
 
29296
 
 
29297
#line 205 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29298
class CT_GnuAsmClobbers : public CT_List {
 
29299
#line 29300 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29300
  friend class ::CCExprResolve;
 
29301
  friend class ::CExprResolve;
 
29302
  friend class ::WinIfExists;
 
29303
  friend class ::WinImportHandler;
 
29304
  friend class ::WinMacros;
 
29305
  friend class ::WinAsm;
 
29306
  friend class ::WinDeclSpecs;
 
29307
  friend class ::WinMemberExplSpec;
 
29308
  friend class ::WinTypeKeywords;
 
29309
  friend class ::WinFriend;
 
29310
  friend class ::ExtAC;
 
29311
  friend class ::ExtACBuilderCoupling;
 
29312
  friend class ::ExtACSyntaxCoupling;
 
29313
  friend class ::ExtACTree;
 
29314
  friend class ::ExtACKeywords;
 
29315
  friend class ::ExtGnu;
 
29316
  friend class ::PragmaOnceUnitState;
 
29317
  friend class ::PragmaOnce;
 
29318
  friend class ::CMatchSyntax;
 
29319
 
 
29320
#line 205 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29321
 
 
29322
public:
 
29323
  /** Constructor. */
 
29324
  CT_GnuAsmClobbers () { AddProperties (OPEN | SEPARATORS); }
 
29325
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
29326
  static const char *NodeId ();
 
29327
  /** Get the name of the node. Can be compared with NodeId(). */
 
29328
  const char *NodeName () const { return NodeId (); }  
 
29329
public:
 
29330
  typedef AC::TLE __AttrTypes;
 
29331
  const char *__attr_name (unsigned i) const { return 0; }
 
29332
  const void *__attr (unsigned __i) const { return 0; }
 
29333
#line 213 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29334
};
 
29335
 
 
29336
/*****************************************************************************/
 
29337
/*                                                                           */
 
29338
/*                              Expressions                                  */
 
29339
/*                                                                           */
 
29340
/*****************************************************************************/
 
29341
 
 
29342
/** \class CT_GnuStatementExpr GnuCTree.h Puma/GnuCTree.h
 
29343
 *  Tree node representing a statement expression. 
 
29344
 *  Example: \code ({ int i = 0; i++; }) \endcode */
 
29345
 
 
29346
#line 29347 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29347
} // closed Puma
 
29348
class CCExprResolve;
 
29349
class CExprResolve;
 
29350
class WinIfExists;
 
29351
class WinImportHandler;
 
29352
class WinMacros;
 
29353
class WinAsm;
 
29354
class WinDeclSpecs;
 
29355
class WinMemberExplSpec;
 
29356
class WinTypeKeywords;
 
29357
class WinFriend;
 
29358
class ExtAC;
 
29359
class ExtACBuilderCoupling;
 
29360
class ExtACSyntaxCoupling;
 
29361
class ExtACTree;
 
29362
class ExtACKeywords;
 
29363
class ExtGnu;
 
29364
class PragmaOnceUnitState;
 
29365
class PragmaOnce;
 
29366
class CMatchSyntax;
 
29367
namespace Puma {
 
29368
 
 
29369
#line 224 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29370
 
 
29371
#line 29372 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29372
} // closed Puma
 
29373
 
 
29374
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
29375
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
29376
#include "CCExprResolveH.ah"
 
29377
#endif
 
29378
namespace Puma {
 
29379
 
 
29380
#line 224 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29381
 
 
29382
#line 29383 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29383
} // closed Puma
 
29384
 
 
29385
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
29386
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
29387
#include "CExprResolveH.ah"
 
29388
#endif
 
29389
namespace Puma {
 
29390
 
 
29391
#line 224 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29392
class CT_GnuStatementExpr : public CT_Expression {
 
29393
#line 29394 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29394
  friend class ::CCExprResolve;
 
29395
  friend class ::CExprResolve;
 
29396
  friend class ::WinIfExists;
 
29397
  friend class ::WinImportHandler;
 
29398
  friend class ::WinMacros;
 
29399
  friend class ::WinAsm;
 
29400
  friend class ::WinDeclSpecs;
 
29401
  friend class ::WinMemberExplSpec;
 
29402
  friend class ::WinTypeKeywords;
 
29403
  friend class ::WinFriend;
 
29404
  friend class ::ExtAC;
 
29405
  friend class ::ExtACBuilderCoupling;
 
29406
  friend class ::ExtACSyntaxCoupling;
 
29407
  friend class ::ExtACTree;
 
29408
  friend class ::ExtACKeywords;
 
29409
  friend class ::ExtGnu;
 
29410
  friend class ::PragmaOnceUnitState;
 
29411
  friend class ::PragmaOnce;
 
29412
  friend class ::CMatchSyntax;
 
29413
 
 
29414
#line 224 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29415
 
 
29416
  CTree *sons[3]; // open, statement, close
 
29417
 
 
29418
public:
 
29419
  /** Constructor.
 
29420
   *  \param o Left parenthesis before the statement.
 
29421
   *  \param s The statement. 
 
29422
   *  \param c Right parenthesis behind the statement. */
 
29423
  CT_GnuStatementExpr (CTree *o, CTree *s, CTree *c) {
 
29424
    AddSon (sons[0], o); AddSon (sons[1], s); AddSon (sons[2], c);
 
29425
  }
 
29426
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
29427
  static const char *NodeId ();
 
29428
  /** Get the name of the node. Can be compared with NodeId(). */
 
29429
  const char *NodeName () const { return NodeId (); }  
 
29430
  /** Get the number of sons. */
 
29431
  int Sons () const { return 3; }
 
29432
  /** Get the n-th son.
 
29433
   *  \param n The index of the son.
 
29434
   *  \return The n-th son or NULL. */
 
29435
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
29436
  /** Replace a son.
 
29437
   *  \param old_son The son to replace.
 
29438
   *  \param new_son The new son. */
 
29439
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
29440
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
29441
  }
 
29442
  /** Get the statement. */
 
29443
  CT_CmpdStmt *CmpdStmt () const { return (CT_CmpdStmt*)sons[1]; }
 
29444
   private:
 
29445
  typedef CT_GnuStatementExpr CCExprResolveExpr;
 
29446
 
 
29447
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
29448
 public :
 
29449
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
29450
  typedef CT_GnuStatementExpr CExprResolveExpr;
 
29451
 
 
29452
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
29453
 public :
 
29454
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
29455
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
29456
  const char *__attr_name (unsigned i) const {
 
29457
    static const char *names[] = { "sons" }; return names[i];
 
29458
  }
 
29459
  const void *__attr (unsigned __i) const {
 
29460
    switch (__i) { case 0: return &sons; default: return 0; }
 
29461
  }
 
29462
#line 253 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29463
};
 
29464
 
 
29465
/*****************************************************************************/
 
29466
/*                                                                           */
 
29467
/*                         Declaration specifiers                            */
 
29468
/*                                                                           */
 
29469
/*****************************************************************************/
 
29470
 
 
29471
/** \class CT_GnuTypeof GnuCTree.h Puma/GnuCTree.h
 
29472
 *  Tree node representing a typeof expression. 
 
29473
 *  Example: \code typeof(a+b) \endcode */
 
29474
 
 
29475
#line 29476 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29476
} // closed Puma
 
29477
class CCExprResolve;
 
29478
class CExprResolve;
 
29479
class WinIfExists;
 
29480
class WinImportHandler;
 
29481
class WinMacros;
 
29482
class WinAsm;
 
29483
class WinDeclSpecs;
 
29484
class WinMemberExplSpec;
 
29485
class WinTypeKeywords;
 
29486
class WinFriend;
 
29487
class ExtAC;
 
29488
class ExtACBuilderCoupling;
 
29489
class ExtACSyntaxCoupling;
 
29490
class ExtACTree;
 
29491
class ExtACKeywords;
 
29492
class ExtGnu;
 
29493
class PragmaOnceUnitState;
 
29494
class PragmaOnce;
 
29495
class CMatchSyntax;
 
29496
namespace Puma {
 
29497
 
 
29498
#line 264 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29499
class CT_GnuTypeof : public CT_DeclSpec, public CSemValue {
 
29500
#line 29501 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29501
  friend class ::CCExprResolve;
 
29502
  friend class ::CExprResolve;
 
29503
  friend class ::WinIfExists;
 
29504
  friend class ::WinImportHandler;
 
29505
  friend class ::WinMacros;
 
29506
  friend class ::WinAsm;
 
29507
  friend class ::WinDeclSpecs;
 
29508
  friend class ::WinMemberExplSpec;
 
29509
  friend class ::WinTypeKeywords;
 
29510
  friend class ::WinFriend;
 
29511
  friend class ::ExtAC;
 
29512
  friend class ::ExtACBuilderCoupling;
 
29513
  friend class ::ExtACSyntaxCoupling;
 
29514
  friend class ::ExtACTree;
 
29515
  friend class ::ExtACKeywords;
 
29516
  friend class ::ExtGnu;
 
29517
  friend class ::PragmaOnceUnitState;
 
29518
  friend class ::PragmaOnce;
 
29519
  friend class ::CMatchSyntax;
 
29520
 
 
29521
#line 264 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29522
 
 
29523
  CTree *sons[5]; // key, open, type, close, expr
 
29524
 
 
29525
public:
 
29526
  /** Constructor.
 
29527
   *  \param k The keyword 'typeof'.
 
29528
   *  \param o Left parenthesis before the type.
 
29529
   *  \param t The type from which to get the type string.
 
29530
   *  \param c Right parenthesis behind the type. */
 
29531
  CT_GnuTypeof (CTree *k, CTree *o, CTree *t, CTree *c) {
 
29532
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t);
 
29533
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
29534
  }
 
29535
  /** Constructor.
 
29536
   *  \param k The keyword 'typeof'.
 
29537
   *  \param e The expression from which to get the type string. */
 
29538
  CT_GnuTypeof (CTree *k, CTree *e) {
 
29539
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0);
 
29540
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
29541
  }
 
29542
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
29543
  static const char *NodeId ();
 
29544
  /** Get the name of the node. Can be compared with NodeId(). */
 
29545
  const char *NodeName () const { return NodeId (); }
 
29546
  /** Get the number of sons. */
 
29547
  int Sons () const { return CTree::Sons (sons, 5); }
 
29548
  /** Get the n-th son.
 
29549
   *  \param n The index of the son.
 
29550
   *  \return The n-th son or NULL. */
 
29551
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
29552
  /** Replace a son.
 
29553
   *  \param old_son The son to replace.
 
29554
   *  \param new_son The new son. */
 
29555
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
29556
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
29557
  }
 
29558
  /** Get the expression from which to get the type string. */
 
29559
  CTree *Expr () const { return sons[4]; }
 
29560
  /** Get the type from which to get the type string. */
 
29561
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
29562
  /** Get the semantic value information. */
 
29563
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
29564
  /** Get the resulting type. */
 
29565
  CTypeInfo *Type () const { return type; }
 
29566
public:
 
29567
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
29568
  const char *__attr_name (unsigned i) const {
 
29569
    static const char *names[] = { "sons" }; return names[i];
 
29570
  }
 
29571
  const void *__attr (unsigned __i) const {
 
29572
    switch (__i) { case 0: return &sons; default: return 0; }
 
29573
  }
 
29574
#line 308 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/GnuCTree.h"
 
29575
};
 
29576
 
 
29577
} // namespace Puma
 
29578
 
 
29579
#endif /* __gnu_c_tree_h__ */
 
29580
 
 
29581
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
29582
// This file is part of PUMA.
 
29583
// Copyright (C) 1999-2003  The PUMA developer team.
 
29584
//                                                                
 
29585
// This program is free software;  you can redistribute it and/or 
 
29586
// modify it under the terms of the GNU General Public License as 
 
29587
// published by the Free Software Foundation; either version 2 of 
 
29588
// the License, or (at your option) any later version.            
 
29589
//                                                                
 
29590
// This program is distributed in the hope that it will be useful,
 
29591
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29592
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29593
// GNU General Public License for more details.                   
 
29594
//                                                                
 
29595
// You should have received a copy of the GNU General Public      
 
29596
// License along with this program; if not, write to the Free     
 
29597
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29598
// MA  02111-1307  USA                                            
 
29599
 
 
29600
#ifndef __CStructure_h__
 
29601
#define __CStructure_h__
 
29602
 
 
29603
/** \file
 
29604
 *  Semantic information about entities that can contain other entity declarations. */
 
29605
 
 
29606
 
 
29607
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
29608
// This file is part of PUMA.
 
29609
// Copyright (C) 1999-2003  The PUMA developer team.
 
29610
//                                                                
 
29611
// This program is free software;  you can redistribute it and/or 
 
29612
// modify it under the terms of the GNU General Public License as 
 
29613
// published by the Free Software Foundation; either version 2 of 
 
29614
// the License, or (at your option) any later version.            
 
29615
//                                                                
 
29616
// This program is distributed in the hope that it will be useful,
 
29617
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29618
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29619
// GNU General Public License for more details.                   
 
29620
//                                                                
 
29621
// You should have received a copy of the GNU General Public      
 
29622
// License along with this program; if not, write to the Free     
 
29623
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29624
// MA  02111-1307  USA                                            
 
29625
 
 
29626
#ifndef __CScopeInfo_h__
 
29627
#define __CScopeInfo_h__
 
29628
 
 
29629
/** \file
 
29630
 *  Semantic information about a scope. */
 
29631
 
 
29632
 
 
29633
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
29634
// This file is part of PUMA.
 
29635
// Copyright (C) 1999-2003  The PUMA developer team.
 
29636
//                                                                
 
29637
// This program is free software;  you can redistribute it and/or 
 
29638
// modify it under the terms of the GNU General Public License as 
 
29639
// published by the Free Software Foundation; either version 2 of 
 
29640
// the License, or (at your option) any later version.            
 
29641
//                                                                
 
29642
// This program is distributed in the hope that it will be useful,
 
29643
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29644
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29645
// GNU General Public License for more details.                   
 
29646
//                                                                
 
29647
// You should have received a copy of the GNU General Public      
 
29648
// License along with this program; if not, write to the Free     
 
29649
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29650
// MA  02111-1307  USA                                            
 
29651
 
 
29652
#ifndef __CObjectInfo_h__
 
29653
#define __CObjectInfo_h__
 
29654
 
 
29655
/** \file
 
29656
 *  Basic semantic information class. */
 
29657
 
 
29658
 
 
29659
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSourceInfo.h"
 
29660
// This file is part of PUMA.
 
29661
// Copyright (C) 1999-2003  The PUMA developer team.
 
29662
//                                                                
 
29663
// This program is free software;  you can redistribute it and/or 
 
29664
// modify it under the terms of the GNU General Public License as 
 
29665
// published by the Free Software Foundation; either version 2 of 
 
29666
// the License, or (at your option) any later version.            
 
29667
//                                                                
 
29668
// This program is distributed in the hope that it will be useful,
 
29669
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29670
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29671
// GNU General Public License for more details.                   
 
29672
//                                                                
 
29673
// You should have received a copy of the GNU General Public      
 
29674
// License along with this program; if not, write to the Free     
 
29675
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29676
// MA  02111-1307  USA                                            
 
29677
 
 
29678
#ifndef __CSourceInfo_h__
 
29679
#define __CSourceInfo_h__
 
29680
 
 
29681
/** \file
 
29682
 *  Source file information. */
 
29683
 
 
29684
namespace Puma {
 
29685
 
 
29686
 
 
29687
class CFileInfo;
 
29688
class CT_Token;
 
29689
class Token;
 
29690
class Unit;
 
29691
 
 
29692
 
 
29693
/** \class CSourceInfo CSourceInfo.h Puma/CSourceInfo.h
 
29694
 *  Source file information for an entity. Stores the 
 
29695
 *  file information and start token of the entity in
 
29696
 *  the source file. */
 
29697
 
 
29698
#line 29699 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29699
} // closed Puma
 
29700
class CCExprResolve;
 
29701
class CExprResolve;
 
29702
class WinIfExists;
 
29703
class WinImportHandler;
 
29704
class WinMacros;
 
29705
class WinAsm;
 
29706
class WinDeclSpecs;
 
29707
class WinMemberExplSpec;
 
29708
class WinTypeKeywords;
 
29709
class WinFriend;
 
29710
class ExtAC;
 
29711
class ExtACBuilderCoupling;
 
29712
class ExtACSyntaxCoupling;
 
29713
class ExtACTree;
 
29714
class ExtACKeywords;
 
29715
class ExtGnu;
 
29716
class PragmaOnceUnitState;
 
29717
class PragmaOnce;
 
29718
class CMatchSyntax;
 
29719
namespace Puma {
 
29720
 
 
29721
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSourceInfo.h"
 
29722
class CSourceInfo {
 
29723
#line 29724 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29724
  friend class ::CCExprResolve;
 
29725
  friend class ::CExprResolve;
 
29726
  friend class ::WinIfExists;
 
29727
  friend class ::WinImportHandler;
 
29728
  friend class ::WinMacros;
 
29729
  friend class ::WinAsm;
 
29730
  friend class ::WinDeclSpecs;
 
29731
  friend class ::WinMemberExplSpec;
 
29732
  friend class ::WinTypeKeywords;
 
29733
  friend class ::WinFriend;
 
29734
  friend class ::ExtAC;
 
29735
  friend class ::ExtACBuilderCoupling;
 
29736
  friend class ::ExtACSyntaxCoupling;
 
29737
  friend class ::ExtACTree;
 
29738
  friend class ::ExtACKeywords;
 
29739
  friend class ::ExtGnu;
 
29740
  friend class ::PragmaOnceUnitState;
 
29741
  friend class ::PragmaOnce;
 
29742
  friend class ::CMatchSyntax;
 
29743
 
 
29744
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSourceInfo.h"
 
29745
 
 
29746
  CFileInfo *_FileInfo; 
 
29747
  CT_Token *_StartToken;
 
29748
 
 
29749
public: 
 
29750
  /** Constructor. */
 
29751
  CSourceInfo ();
 
29752
  /** Destructor. */
 
29753
  ~CSourceInfo ();
 
29754
  
 
29755
  /** Check if the source file locations are equal. 
 
29756
   *  \param si The source file location to compare with. */
 
29757
  bool operator ==(const CSourceInfo &si) const;
 
29758
  /** Check if the source file locations are not equal. 
 
29759
   *  \param si The source file location to compare with. */
 
29760
  bool operator !=(const CSourceInfo &si) const;
 
29761
  /** Check if this source file location is before the given location. 
 
29762
   *  \param si The source file location to compare with. */
 
29763
  bool operator <(const CSourceInfo &si) const;
 
29764
  /** Check if this source file location is behind the given location. 
 
29765
   *  \param si The source file location to compare with. */
 
29766
  bool operator >(const CSourceInfo &si) const;
 
29767
  /** Check if this source file location equals or is before the given location. 
 
29768
   *  \param si The source file location to compare with. */
 
29769
  bool operator <=(const CSourceInfo &si) const;
 
29770
  /** Check if this source file location equals or is behind the given location. 
 
29771
   *  \param si The source file location to compare with. */
 
29772
  bool operator >=(const CSourceInfo &si) const;
 
29773
 
 
29774
  /** Check if the source file locations are equal. 
 
29775
   *  \param token The token in the source file to compare with. */
 
29776
  bool operator ==(const CT_Token *token) const;
 
29777
  /** Check if the source file locations are not equal. 
 
29778
   *  \param token The token in the source file to compare with. */
 
29779
  bool operator !=(const CT_Token *token) const;
 
29780
  /** Check if this source file location is before the given location. 
 
29781
   *  \param token The token in the source file to compare with. */
 
29782
  bool operator <(const CT_Token *token) const;
 
29783
  /** Check if this source file location is behind the given location. 
 
29784
   *  \param token The token in the source file to compare with. */
 
29785
  bool operator >(const CT_Token *token) const;
 
29786
  /** Check if this source file location equals or is before the given location. 
 
29787
   *  \param token The token in the source file to compare with. */
 
29788
  bool operator <=(const CT_Token *token) const;
 
29789
  /** Check if this source file location equals or is behind the given location. 
 
29790
   *  \param token The token in the source file to compare with. */
 
29791
  bool operator >=(const CT_Token *token) const;
 
29792
 
 
29793
  /** Check if the source file locations are equal. 
 
29794
   *  \param token The token in the source file to compare with. */
 
29795
  bool operator ==(const Token *token) const;
 
29796
 
 
29797
  /** Get the source file information. */
 
29798
  CFileInfo *FileInfo () const;
 
29799
  /** Get the start token of the entity in the source file. */
 
29800
  CT_Token *StartToken () const;
 
29801
  /** Get name of the source file. */
 
29802
  const char *FileName () const;
 
29803
  /** Get the line number of the entity in the source file. */
 
29804
  int Line () const;
 
29805
  /** Get the column number of the entity in the source file. */
 
29806
  int Column () const;
 
29807
  /** Get the token unit of the source file. */
 
29808
  Unit *SrcUnit () const;
 
29809
 
 
29810
  /** Set the source file information. 
 
29811
   *  \param file The source file. */
 
29812
  void FileInfo (CFileInfo *file);
 
29813
  /** Set the start token of the entity in the source file. 
 
29814
   *  \param token The start token. */
 
29815
  void StartToken (CT_Token *token);
 
29816
public:
 
29817
  typedef AC::TL<Puma::CFileInfo *,AC::TL<Puma::CT_Token *,AC::TLE > > __AttrTypes;
 
29818
  const char *__attr_name (unsigned i) const {
 
29819
    static const char *names[] = { "_FileInfo", "_StartToken" }; return names[i];
 
29820
  }
 
29821
  const void *__attr (unsigned __i) const {
 
29822
    switch (__i) { case 0: return &_FileInfo; case 1: return &_StartToken; default: return 0; }
 
29823
  }
 
29824
#line 109 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSourceInfo.h"
 
29825
};
 
29826
 
 
29827
inline CSourceInfo::CSourceInfo () :
 
29828
  _FileInfo ((CFileInfo*)0),
 
29829
  _StartToken ((CT_Token*)0)
 
29830
 {}
 
29831
 
 
29832
inline CSourceInfo::~CSourceInfo ()
 
29833
 {}
 
29834
 
 
29835
inline bool CSourceInfo::operator !=(const CSourceInfo &info) const 
 
29836
 { return ! (*this == info); }
 
29837
inline bool CSourceInfo::operator <=(const CSourceInfo &info) const 
 
29838
 { return ! (*this > info); }
 
29839
inline bool CSourceInfo::operator >=(const CSourceInfo &info) const 
 
29840
 { return ! (*this < info); }
 
29841
 
 
29842
inline bool CSourceInfo::operator !=(const CT_Token *token) const 
 
29843
 { return ! (*this == token); }
 
29844
inline bool CSourceInfo::operator <=(const CT_Token *token) const 
 
29845
 { return ! (*this > token); }
 
29846
inline bool CSourceInfo::operator >=(const CT_Token *token) const 
 
29847
 { return ! (*this < token); }
 
29848
 
 
29849
inline CFileInfo *CSourceInfo::FileInfo () const
 
29850
 { return _FileInfo; }
 
29851
inline CT_Token *CSourceInfo::StartToken () const
 
29852
 { return _StartToken; }
 
29853
 
 
29854
inline void CSourceInfo::FileInfo (CFileInfo *info)
 
29855
 { _FileInfo = info; }
 
29856
inline void CSourceInfo::StartToken (CT_Token *token)
 
29857
 { _StartToken = token; }
 
29858
 
 
29859
 
 
29860
} // namespace Puma
 
29861
 
 
29862
#endif /* __CSourceInfo_h__ */
 
29863
 
 
29864
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProtection.h"
 
29865
// This file is part of PUMA.
 
29866
// Copyright (C) 1999-2003  The PUMA developer team.
 
29867
//                                                                
 
29868
// This program is free software;  you can redistribute it and/or 
 
29869
// modify it under the terms of the GNU General Public License as 
 
29870
// published by the Free Software Foundation; either version 2 of 
 
29871
// the License, or (at your option) any later version.            
 
29872
//                                                                
 
29873
// This program is distributed in the hope that it will be useful,
 
29874
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29875
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29876
// GNU General Public License for more details.                   
 
29877
//                                                                
 
29878
// You should have received a copy of the GNU General Public      
 
29879
// License along with this program; if not, write to the Free     
 
29880
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29881
// MA  02111-1307  USA                                            
 
29882
 
 
29883
#ifndef __CProtection_h__
 
29884
#define __CProtection_h__
 
29885
 
 
29886
/** \file
 
29887
 *  C++ class member protection. */
 
29888
 
 
29889
namespace Puma {
 
29890
 
 
29891
 
 
29892
/** \class CProtection CProtection.h Puma/CProtection.h
 
29893
 *  Access protection of C++ class members for the purpose
 
29894
 *  of member access control. There are three kinds of
 
29895
 *  protection: private, public, and protected. The
 
29896
 *  protection either is defined implicitely or explicitely
 
29897
 *  using member access specifiers. */
 
29898
 
 
29899
#line 29900 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29900
} // closed Puma
 
29901
class CCExprResolve;
 
29902
class CExprResolve;
 
29903
class WinIfExists;
 
29904
class WinImportHandler;
 
29905
class WinMacros;
 
29906
class WinAsm;
 
29907
class WinDeclSpecs;
 
29908
class WinMemberExplSpec;
 
29909
class WinTypeKeywords;
 
29910
class WinFriend;
 
29911
class ExtAC;
 
29912
class ExtACBuilderCoupling;
 
29913
class ExtACSyntaxCoupling;
 
29914
class ExtACTree;
 
29915
class ExtACKeywords;
 
29916
class ExtGnu;
 
29917
class PragmaOnceUnitState;
 
29918
class PragmaOnce;
 
29919
class CMatchSyntax;
 
29920
namespace Puma {
 
29921
 
 
29922
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProtection.h"
 
29923
struct CProtection {
 
29924
#line 29925 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
29925
  friend class ::CCExprResolve;
 
29926
  friend class ::CExprResolve;
 
29927
  friend class ::WinIfExists;
 
29928
  friend class ::WinImportHandler;
 
29929
  friend class ::WinMacros;
 
29930
  friend class ::WinAsm;
 
29931
  friend class ::WinDeclSpecs;
 
29932
  friend class ::WinMemberExplSpec;
 
29933
  friend class ::WinTypeKeywords;
 
29934
  friend class ::WinFriend;
 
29935
  friend class ::ExtAC;
 
29936
  friend class ::ExtACBuilderCoupling;
 
29937
  friend class ::ExtACSyntaxCoupling;
 
29938
  friend class ::ExtACTree;
 
29939
  friend class ::ExtACKeywords;
 
29940
  friend class ::ExtGnu;
 
29941
  friend class ::PragmaOnceUnitState;
 
29942
  friend class ::PragmaOnce;
 
29943
  friend class ::CMatchSyntax;
 
29944
 
 
29945
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProtection.h"
 
29946
 
 
29947
  /** The member access types. */
 
29948
  enum Type {
 
29949
    /** Public member access. */
 
29950
    PROT_PUBLIC, 
 
29951
    /** Protected member access. */
 
29952
    PROT_PROTECTED, 
 
29953
    /** Private member access. */
 
29954
    PROT_PRIVATE,
 
29955
    /** Undefined member access. */
 
29956
    PROT_NONE
 
29957
  };
 
29958
public:
 
29959
  typedef AC::TLE __AttrTypes;
 
29960
  const char *__attr_name (unsigned i) const {
 
29961
    static const char *names[] = {  }; return names[i];
 
29962
  }
 
29963
  const void *__attr (unsigned __i) const {
 
29964
    switch (__i) { default: return 0; }
 
29965
  }
 
29966
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CProtection.h"
 
29967
};
 
29968
 
 
29969
 
 
29970
} // namespace Puma
 
29971
 
 
29972
#endif /* __CProtection_h__ */
 
29973
 
 
29974
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStorage.h"
 
29975
// This file is part of PUMA.
 
29976
// Copyright (C) 1999-2003  The PUMA developer team.
 
29977
//                                                                
 
29978
// This program is free software;  you can redistribute it and/or 
 
29979
// modify it under the terms of the GNU General Public License as 
 
29980
// published by the Free Software Foundation; either version 2 of 
 
29981
// the License, or (at your option) any later version.            
 
29982
//                                                                
 
29983
// This program is distributed in the hope that it will be useful,
 
29984
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
29985
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
29986
// GNU General Public License for more details.                   
 
29987
//                                                                
 
29988
// You should have received a copy of the GNU General Public      
 
29989
// License along with this program; if not, write to the Free     
 
29990
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
29991
// MA  02111-1307  USA                                            
 
29992
 
 
29993
#ifndef __CStorage_h__
 
29994
#define __CStorage_h__
 
29995
 
 
29996
/** \file
 
29997
 *  C/C++ object storage classes. */
 
29998
 
 
29999
namespace Puma {
 
30000
 
 
30001
 
 
30002
/** \class CStorage CStorage.h Puma/CStorage.h
 
30003
 *  Storage class of an object. Defines the minimum potential 
 
30004
 *  lifetime of the storage containing the object. There are
 
30005
 *  three resp. four different storage classes: static, automatic, 
 
30006
 *  thread, and dynamic. */
 
30007
 
 
30008
#line 30009 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30009
} // closed Puma
 
30010
class CCExprResolve;
 
30011
class CExprResolve;
 
30012
class WinIfExists;
 
30013
class WinImportHandler;
 
30014
class WinMacros;
 
30015
class WinAsm;
 
30016
class WinDeclSpecs;
 
30017
class WinMemberExplSpec;
 
30018
class WinTypeKeywords;
 
30019
class WinFriend;
 
30020
class ExtAC;
 
30021
class ExtACBuilderCoupling;
 
30022
class ExtACSyntaxCoupling;
 
30023
class ExtACTree;
 
30024
class ExtACKeywords;
 
30025
class ExtGnu;
 
30026
class PragmaOnceUnitState;
 
30027
class PragmaOnce;
 
30028
class CMatchSyntax;
 
30029
namespace Puma {
 
30030
 
 
30031
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStorage.h"
 
30032
struct CStorage {
 
30033
#line 30034 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30034
  friend class ::CCExprResolve;
 
30035
  friend class ::CExprResolve;
 
30036
  friend class ::WinIfExists;
 
30037
  friend class ::WinImportHandler;
 
30038
  friend class ::WinMacros;
 
30039
  friend class ::WinAsm;
 
30040
  friend class ::WinDeclSpecs;
 
30041
  friend class ::WinMemberExplSpec;
 
30042
  friend class ::WinTypeKeywords;
 
30043
  friend class ::WinFriend;
 
30044
  friend class ::ExtAC;
 
30045
  friend class ::ExtACBuilderCoupling;
 
30046
  friend class ::ExtACSyntaxCoupling;
 
30047
  friend class ::ExtACTree;
 
30048
  friend class ::ExtACKeywords;
 
30049
  friend class ::ExtGnu;
 
30050
  friend class ::PragmaOnceUnitState;
 
30051
  friend class ::PragmaOnce;
 
30052
  friend class ::CMatchSyntax;
 
30053
 
 
30054
#line 33 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStorage.h"
 
30055
 
 
30056
  /** The storage classes. */
 
30057
  enum Type {
 
30058
    /** Static storage class. */
 
30059
    CLASS_STATIC,
 
30060
    /** Automatic storage class. */
 
30061
    CLASS_AUTOMATIC, 
 
30062
    /** Dynamic storage class. */
 
30063
    CLASS_DYNAMIC,
 
30064
    /** Thread local storage (TLS) class. */
 
30065
    CLASS_THREAD,
 
30066
    /** Undefined storage class. */
 
30067
    CLASS_NONE
 
30068
  };
 
30069
public:
 
30070
  typedef AC::TLE __AttrTypes;
 
30071
  const char *__attr_name (unsigned i) const {
 
30072
    static const char *names[] = {  }; return names[i];
 
30073
  }
 
30074
  const void *__attr (unsigned __i) const {
 
30075
    switch (__i) { default: return 0; }
 
30076
  }
 
30077
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStorage.h"
 
30078
};
 
30079
 
 
30080
 
 
30081
} // namespace Puma
 
30082
 
 
30083
#endif /* __CStorage_h__ */
 
30084
 
 
30085
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CLinkage.h"
 
30086
// This file is part of PUMA.
 
30087
// Copyright (C) 1999-2003  The PUMA developer team.
 
30088
//                                                                
 
30089
// This program is free software;  you can redistribute it and/or 
 
30090
// modify it under the terms of the GNU General Public License as 
 
30091
// published by the Free Software Foundation; either version 2 of 
 
30092
// the License, or (at your option) any later version.            
 
30093
//                                                                
 
30094
// This program is distributed in the hope that it will be useful,
 
30095
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30096
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30097
// GNU General Public License for more details.                   
 
30098
//                                                                
 
30099
// You should have received a copy of the GNU General Public      
 
30100
// License along with this program; if not, write to the Free     
 
30101
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30102
// MA  02111-1307  USA                                            
 
30103
 
 
30104
#ifndef __CLinkage_h__
 
30105
#define __CLinkage_h__
 
30106
 
 
30107
/** \file
 
30108
 *  Entity name linkage. */
 
30109
 
 
30110
namespace Puma {
 
30111
 
 
30112
 
 
30113
/** \class CLinkage CLinkage.h Puma/CLinkage.h
 
30114
 *  Linkage of an entity name (object, function, etc). The 
 
30115
 *  linkage controls where a name is visible. There are
 
30116
 *  three types of linkage: internal, external, and
 
30117
 *  no linkage. Names with external linkage are visible outside
 
30118
 *  the object file where they occur. Names with internal or 
 
30119
 *  no linkage are only visible in one object file.
 
30120
 *
 
30121
 *  The linkage is implicitely defined by the scope in which
 
30122
 *  the entity is declared. With the linkage specifier 'extern'
 
30123
 *  an entity name can be explicitely declared to have external 
 
30124
 *  linkage. */
 
30125
 
 
30126
#line 30127 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30127
} // closed Puma
 
30128
class CCExprResolve;
 
30129
class CExprResolve;
 
30130
class WinIfExists;
 
30131
class WinImportHandler;
 
30132
class WinMacros;
 
30133
class WinAsm;
 
30134
class WinDeclSpecs;
 
30135
class WinMemberExplSpec;
 
30136
class WinTypeKeywords;
 
30137
class WinFriend;
 
30138
class ExtAC;
 
30139
class ExtACBuilderCoupling;
 
30140
class ExtACSyntaxCoupling;
 
30141
class ExtACTree;
 
30142
class ExtACKeywords;
 
30143
class ExtGnu;
 
30144
class PragmaOnceUnitState;
 
30145
class PragmaOnce;
 
30146
class CMatchSyntax;
 
30147
namespace Puma {
 
30148
 
 
30149
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CLinkage.h"
 
30150
struct CLinkage {
 
30151
#line 30152 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30152
  friend class ::CCExprResolve;
 
30153
  friend class ::CExprResolve;
 
30154
  friend class ::WinIfExists;
 
30155
  friend class ::WinImportHandler;
 
30156
  friend class ::WinMacros;
 
30157
  friend class ::WinAsm;
 
30158
  friend class ::WinDeclSpecs;
 
30159
  friend class ::WinMemberExplSpec;
 
30160
  friend class ::WinTypeKeywords;
 
30161
  friend class ::WinFriend;
 
30162
  friend class ::ExtAC;
 
30163
  friend class ::ExtACBuilderCoupling;
 
30164
  friend class ::ExtACSyntaxCoupling;
 
30165
  friend class ::ExtACTree;
 
30166
  friend class ::ExtACKeywords;
 
30167
  friend class ::ExtGnu;
 
30168
  friend class ::PragmaOnceUnitState;
 
30169
  friend class ::PragmaOnce;
 
30170
  friend class ::CMatchSyntax;
 
30171
 
 
30172
#line 40 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CLinkage.h"
 
30173
 
 
30174
  /** The linkage types. */
 
30175
  enum Type {
 
30176
    /** Internal linkage. */
 
30177
    LINK_INTERNAL,  
 
30178
    /** External linkage. */
 
30179
    LINK_EXTERNAL,  
 
30180
    /** No linkage. */
 
30181
    LINK_NONE       
 
30182
  };
 
30183
public:
 
30184
  typedef AC::TLE __AttrTypes;
 
30185
  const char *__attr_name (unsigned i) const {
 
30186
    static const char *names[] = {  }; return names[i];
 
30187
  }
 
30188
  const void *__attr (unsigned __i) const {
 
30189
    switch (__i) { default: return 0; }
 
30190
  }
 
30191
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CLinkage.h"
 
30192
};
 
30193
 
 
30194
 
 
30195
} // namespace Puma
 
30196
 
 
30197
#endif /* __CLinkage_h__ */
 
30198
 
 
30199
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
30200
// This file is part of PUMA.
 
30201
// Copyright (C) 1999-2003  The PUMA developer team.
 
30202
//                                                                
 
30203
// This program is free software;  you can redistribute it and/or 
 
30204
// modify it under the terms of the GNU General Public License as 
 
30205
// published by the Free Software Foundation; either version 2 of 
 
30206
// the License, or (at your option) any later version.            
 
30207
//                                                                
 
30208
// This program is distributed in the hope that it will be useful,
 
30209
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30210
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30211
// GNU General Public License for more details.                   
 
30212
//                                                                
 
30213
// You should have received a copy of the GNU General Public      
 
30214
// License along with this program; if not, write to the Free     
 
30215
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30216
// MA  02111-1307  USA                                            
 
30217
 
 
30218
#ifndef __CLanguage_h__
 
30219
#define __CLanguage_h__
 
30220
 
 
30221
/** \file
 
30222
 *  Entity name encoding. */
 
30223
 
 
30224
 
 
30225
#line 27 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
30226
namespace Puma {
 
30227
 
 
30228
 
 
30229
/** \class CLanguage CLanguage.h Puma/CLanguage.h
 
30230
 *  Language specific encoding of entity names. The language
 
30231
 *  is specified using the 'extern' linkage specifier.
 
30232
 *
 
30233
 *  Following languages are supported: "C", "C++". C entity 
 
30234
 *  names are not encoded. C++ entity names usually are encoded
 
30235
 *  according to the C++ V3 ABI mangling (see 
 
30236
 *  http://www.codesourcery.com/cxx-abi/abi.html#mangling).
 
30237
 *
 
30238
 *  Example: 
 
30239
 *  \code 
 
30240
 * void foo(char);             // encoded as: _Z3fooc
 
30241
 * extern "C" void bar(int);   // encoded as: bar
 
30242
 *  \endcode */
 
30243
 
 
30244
#line 30245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30245
} // closed Puma
 
30246
class CCExprResolve;
 
30247
class CExprResolve;
 
30248
class WinIfExists;
 
30249
class WinImportHandler;
 
30250
class WinMacros;
 
30251
class WinAsm;
 
30252
class WinDeclSpecs;
 
30253
class WinMemberExplSpec;
 
30254
class WinTypeKeywords;
 
30255
class WinFriend;
 
30256
class ExtAC;
 
30257
class ExtACBuilderCoupling;
 
30258
class ExtACSyntaxCoupling;
 
30259
class ExtACTree;
 
30260
class ExtACKeywords;
 
30261
class ExtGnu;
 
30262
class PragmaOnceUnitState;
 
30263
class PragmaOnce;
 
30264
class CMatchSyntax;
 
30265
namespace Puma {
 
30266
 
 
30267
#line 44 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
30268
class CLanguage {
 
30269
#line 30270 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30270
  friend class ::CCExprResolve;
 
30271
  friend class ::CExprResolve;
 
30272
  friend class ::WinIfExists;
 
30273
  friend class ::WinImportHandler;
 
30274
  friend class ::WinMacros;
 
30275
  friend class ::WinAsm;
 
30276
  friend class ::WinDeclSpecs;
 
30277
  friend class ::WinMemberExplSpec;
 
30278
  friend class ::WinTypeKeywords;
 
30279
  friend class ::WinFriend;
 
30280
  friend class ::ExtAC;
 
30281
  friend class ::ExtACBuilderCoupling;
 
30282
  friend class ::ExtACSyntaxCoupling;
 
30283
  friend class ::ExtACTree;
 
30284
  friend class ::ExtACKeywords;
 
30285
  friend class ::ExtGnu;
 
30286
  friend class ::PragmaOnceUnitState;
 
30287
  friend class ::PragmaOnce;
 
30288
  friend class ::CMatchSyntax;
 
30289
 
 
30290
#line 44 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
30291
 
 
30292
public:
 
30293
  /** Entity language encoding types. */
 
30294
  enum LangType {
 
30295
    /** Language C. */
 
30296
    LANG_C,           
 
30297
    /** Language C++. */
 
30298
    LANG_CPLUSPLUS,   
 
30299
    /** Neither C nor C++. */
 
30300
    LANG_OTHER,       
 
30301
    /** No explicit language encoding. */
 
30302
    LANG_UNDEFINED    
 
30303
  };
 
30304
    
 
30305
private:
 
30306
  LangType m_Type;
 
30307
  DString m_Text;
 
30308
 
 
30309
public:
 
30310
  /** Constructor. */
 
30311
  CLanguage () : m_Type (LANG_UNDEFINED), m_Text ("") {}
 
30312
  
 
30313
  /** Set the language encoding type.
 
30314
   *  \param lt The language type. */
 
30315
  void Type (LangType lt) { 
 
30316
    m_Type = lt; m_Text = (lt==LANG_C)?"C":(lt==LANG_CPLUSPLUS)?"C++":""; 
 
30317
  }
 
30318
  /** Set the language encoding type.
 
30319
   *  \param lt The language type.
 
30320
   *  \param txt The language identifier for languages other than C or C++. */
 
30321
  void Type (LangType lt, const char *txt) { 
 
30322
    m_Type = lt; m_Text = (lt==LANG_C)?"C":(lt==LANG_CPLUSPLUS)?"C++":(lt==LANG_OTHER)?txt:""; 
 
30323
  }
 
30324
 
 
30325
  /** Get the language type. */
 
30326
  LangType Type () const { return m_Type; }
 
30327
  /** Get the language identifier like "C" or "C++".
 
30328
   *  \return The language identifier or the empty string. */
 
30329
  const DString &Text () const { return m_Text; }
 
30330
 
 
30331
  /** Compare two language encodings.
 
30332
   *  \param lang The language encoding to compare with. */
 
30333
  bool operator== (const CLanguage &lang) { return (m_Type == lang.Type ()) && (m_Text == lang.Text ()); }
 
30334
  /** Compare two language encodings.
 
30335
   *  \param lt The language encoding type to compare with. */
 
30336
  bool operator== (LangType lt) { return (m_Type == lt); }
 
30337
public:
 
30338
  typedef AC::TL<Puma::CLanguage::LangType,AC::TL<Puma::DString,AC::TLE > > __AttrTypes;
 
30339
  const char *__attr_name (unsigned i) const {
 
30340
    static const char *names[] = { "m_Type", "m_Text" }; return names[i];
 
30341
  }
 
30342
  const void *__attr (unsigned __i) const {
 
30343
    switch (__i) { case 4: return &m_Type; case 5: return &m_Text; default: return 0; }
 
30344
  }
 
30345
#line 90 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CLanguage.h"
 
30346
};
 
30347
 
 
30348
 
 
30349
} // namespace Puma
 
30350
 
 
30351
#endif /* __CLanguage_h__ */
 
30352
 
 
30353
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSpecifiers.h"
 
30354
// This file is part of PUMA.
 
30355
// Copyright (C) 1999-2003  The PUMA developer team.
 
30356
//                                                                
 
30357
// This program is free software;  you can redistribute it and/or 
 
30358
// modify it under the terms of the GNU General Public License as 
 
30359
// published by the Free Software Foundation; either version 2 of 
 
30360
// the License, or (at your option) any later version.            
 
30361
//                                                                
 
30362
// This program is distributed in the hope that it will be useful,
 
30363
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
30364
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
30365
// GNU General Public License for more details.                   
 
30366
//                                                                
 
30367
// You should have received a copy of the GNU General Public      
 
30368
// License along with this program; if not, write to the Free     
 
30369
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
30370
// MA  02111-1307  USA                                            
 
30371
 
 
30372
#ifndef __CSpecifiers__
 
30373
#define __CSpecifiers__
 
30374
 
 
30375
/** \file
 
30376
 *  C/C++ declaration specifiers. */
 
30377
 
 
30378
namespace Puma {
 
30379
 
 
30380
 
 
30381
/** \class CSpecifiers CSpecifiers.h Puma/CSpecifiers.h
 
30382
 *  C/C++ declaration specifiers for the declaration 
 
30383
 *  of an entity. */
 
30384
 
 
30385
#line 30386 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30386
} // closed Puma
 
30387
class CCExprResolve;
 
30388
class CExprResolve;
 
30389
class WinIfExists;
 
30390
class WinImportHandler;
 
30391
class WinMacros;
 
30392
class WinAsm;
 
30393
class WinDeclSpecs;
 
30394
class WinMemberExplSpec;
 
30395
class WinTypeKeywords;
 
30396
class WinFriend;
 
30397
class ExtAC;
 
30398
class ExtACBuilderCoupling;
 
30399
class ExtACSyntaxCoupling;
 
30400
class ExtACTree;
 
30401
class ExtACKeywords;
 
30402
class ExtGnu;
 
30403
class PragmaOnceUnitState;
 
30404
class PragmaOnce;
 
30405
class CMatchSyntax;
 
30406
namespace Puma {
 
30407
 
 
30408
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSpecifiers.h"
 
30409
class CSpecifiers {
 
30410
#line 30411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30411
  friend class ::CCExprResolve;
 
30412
  friend class ::CExprResolve;
 
30413
  friend class ::WinIfExists;
 
30414
  friend class ::WinImportHandler;
 
30415
  friend class ::WinMacros;
 
30416
  friend class ::WinAsm;
 
30417
  friend class ::WinDeclSpecs;
 
30418
  friend class ::WinMemberExplSpec;
 
30419
  friend class ::WinTypeKeywords;
 
30420
  friend class ::WinFriend;
 
30421
  friend class ::ExtAC;
 
30422
  friend class ::ExtACBuilderCoupling;
 
30423
  friend class ::ExtACSyntaxCoupling;
 
30424
  friend class ::ExtACTree;
 
30425
  friend class ::ExtACKeywords;
 
30426
  friend class ::ExtGnu;
 
30427
  friend class ::PragmaOnceUnitState;
 
30428
  friend class ::PragmaOnce;
 
30429
  friend class ::CMatchSyntax;
 
30430
 
 
30431
#line 31 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSpecifiers.h"
 
30432
 
 
30433
public:
 
30434
  /** Declaration specifiers. */
 
30435
  enum Spec {
 
30436
    /** No declaration specifier. */
 
30437
    SPEC_NONE     = 0x0,
 
30438
    /** Declaration specifier \c virtual. */
 
30439
    SPEC_VIRTUAL  = 0x1,
 
30440
    /** Declaration specifier \c static. */
 
30441
    SPEC_STATIC   = 0x2,
 
30442
    /** Declaration specifier \c extern. */
 
30443
    SPEC_EXTERN   = 0x4,
 
30444
    /** Declaration specifier \c mutable. */
 
30445
    SPEC_MUTABLE  = 0x8,
 
30446
    /** Declaration specifier \c register. */
 
30447
    SPEC_REGISTER = 0x10,
 
30448
    /** Declaration specifier \c explicit. */
 
30449
    SPEC_EXPLICIT = 0x20,
 
30450
    /** Declaration specifier \c auto. */
 
30451
    SPEC_AUTO     = 0x40,
 
30452
    /** Declaration specifier \c inline. */
 
30453
    SPEC_INLINE   = 0x80,
 
30454
    /** Declaration specifier \c __thread. */
 
30455
    SPEC_THREAD   = 0x100
 
30456
  };
 
30457
 
 
30458
private:
 
30459
  unsigned char _specs;
 
30460
  
 
30461
public:
 
30462
  /** Constructor. */
 
30463
  CSpecifiers ();
 
30464
  /** Copy-constructor.
 
30465
   *  \param copy The declaration specifiers to copy. */
 
30466
  CSpecifiers (const CSpecifiers &copy);
 
30467
  /** Assignment operator.
 
30468
   *  \param s The assigned declaration specifiers. */
 
30469
  CSpecifiers &operator =(const CSpecifiers &s);
 
30470
 
 
30471
  /** Add a declaration specifier. 
 
30472
   *  \param s The declaration specifier. */
 
30473
  CSpecifiers &operator +=(Spec s);
 
30474
  /** Remove a declaration specifier. 
 
30475
   *  \param s The declaration specifier. */
 
30476
  CSpecifiers &operator -=(Spec s);
 
30477
  
 
30478
  /** Check if the given declaration specifier was specified.
 
30479
   *  \param s The declaration specifier. */
 
30480
  bool operator ==(Spec) const;
 
30481
  /** Check if the given declaration specifier was not specified.
 
30482
   *  \param s The declaration specifier. */
 
30483
  bool operator !=(Spec) const;
 
30484
public:
 
30485
  typedef AC::TL<unsigned char,AC::TLE > __AttrTypes;
 
30486
  const char *__attr_name (unsigned i) const {
 
30487
    static const char *names[] = { "_specs" }; return names[i];
 
30488
  }
 
30489
  const void *__attr (unsigned __i) const {
 
30490
    switch (__i) { case 10: return &_specs; default: return 0; }
 
30491
  }
 
30492
#line 83 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSpecifiers.h"
 
30493
};
 
30494
 
 
30495
inline CSpecifiers::CSpecifiers () : _specs (SPEC_NONE) 
 
30496
 {}
 
30497
inline CSpecifiers::CSpecifiers (const CSpecifiers &s)
 
30498
 { _specs = s._specs; }
 
30499
inline CSpecifiers &CSpecifiers::operator =(const CSpecifiers &s)
 
30500
 { _specs = s._specs; return *(CSpecifiers*)this; }
 
30501
 
 
30502
inline CSpecifiers &CSpecifiers::operator +=(CSpecifiers::Spec s)
 
30503
 { _specs = _specs | (unsigned char)s; return *(CSpecifiers*)this; }
 
30504
inline CSpecifiers &CSpecifiers::operator -=(CSpecifiers::Spec s)
 
30505
 { _specs = _specs ^ (_specs & (unsigned char)s); return *(CSpecifiers*)this; }
 
30506
 
 
30507
inline bool CSpecifiers::operator ==(CSpecifiers::Spec s) const
 
30508
 { return _specs & (unsigned char)s; }
 
30509
inline bool CSpecifiers::operator !=(CSpecifiers::Spec s) const
 
30510
 { return ! (_specs & (unsigned char)s); }
 
30511
 
 
30512
 
 
30513
} // namespace Puma
 
30514
 
 
30515
#endif /* __CSpecifiers__ */
 
30516
 
 
30517
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
30518
namespace Puma {
 
30519
 
 
30520
 
 
30521
class CRecord;
 
30522
class CStructure;
 
30523
class CFileInfo;
 
30524
class CClassInfo;
 
30525
class CBaseClassInfo;
 
30526
class CMemberAliasInfo;
 
30527
class CTypeInfo;
 
30528
class CScopeInfo;
 
30529
class CLabelInfo;
 
30530
class CUnionInfo;
 
30531
class CLocalScope;
 
30532
class CEnumInfo;
 
30533
class CUsingInfo;
 
30534
class CEnumeratorInfo;
 
30535
class CTypedefInfo;
 
30536
class CFunctionInfo;
 
30537
class CArgumentInfo;
 
30538
class CAttributeInfo;
 
30539
class CTemplateParamInfo;
 
30540
class CTemplateInfo;
 
30541
class CNamespaceInfo;
 
30542
class CClassInstance;
 
30543
class CUnionInstance;
 
30544
class CFctInstance;
 
30545
class CSemDatabase;
 
30546
class CTree;
 
30547
class CT_ExprList;
 
30548
class CTemplateInstance;
 
30549
 
 
30550
 
 
30551
/** \class CObjectInfo CObjectInfo.h Puma/CObjectInfo.h 
 
30552
 *  Abstract base class of all semantic information classes.
 
30553
 *  Provides all semantic information about an entity (class,
 
30554
 *  function, object, etc). 
 
30555
 *
 
30556
 *  A semantic object is identified by its object ID. %Semantic
 
30557
 *  information objects for the same kind of entity have the
 
30558
 *  same object ID (like object ID CObjectInfo::FUNCTION_INFO
 
30559
 *  for all semantic objects of functions). 
 
30560
 * 
 
30561
 *  Example:
 
30562
 *
 
30563
 *  \code 
 
30564
 * // check if sem_obj is a semantic object for a function
 
30565
 * if (sem_obj.Id() == Puma::CObjectInfo::FUNCTION_INFO) {
 
30566
 *   ...
 
30567
 * }
 
30568
 * // same check
 
30569
 * if (sem_obj.FunctionInfo()) {
 
30570
 *   ...
 
30571
 * }
 
30572
 *  \endcode 
 
30573
 *
 
30574
 *  %Semantic information objects are created by the semantic
 
30575
 *  analysis component of %Puma (see Puma::Semantic) during 
 
30576
 *  the parse process and are collected in the semantic
 
30577
 *  information database (see Puma::CSemDatabase). 
 
30578
 *
 
30579
 *  There are several relations between the semantic objects 
 
30580
 *  forming the semantic tree. There is one semantic tree for 
 
30581
 *  each translation unit. 
 
30582
 *
 
30583
 *  The root of the semantic tree usually is the semantic 
 
30584
 *  object for the file scope (see Puma::CFileInfo). It contains 
 
30585
 *  all the other scopes of the analysed source file, such 
 
30586
 *  as namespaces and class definitions, function definitions, 
 
30587
 *  global variables, and so on. The semantic tree is destroyed 
 
30588
 *  by destroying the root object of the tree. This recursively 
 
30589
 *  destroys all sub-objects of the tree. */
 
30590
 
 
30591
#line 30592 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30592
} // closed Puma
 
30593
class CCExprResolve;
 
30594
class CExprResolve;
 
30595
class WinIfExists;
 
30596
class WinImportHandler;
 
30597
class WinMacros;
 
30598
class WinAsm;
 
30599
class WinDeclSpecs;
 
30600
class WinMemberExplSpec;
 
30601
class WinTypeKeywords;
 
30602
class WinFriend;
 
30603
class ExtAC;
 
30604
class ExtACBuilderCoupling;
 
30605
class ExtACSyntaxCoupling;
 
30606
class ExtACTree;
 
30607
class ExtACKeywords;
 
30608
class ExtGnu;
 
30609
class PragmaOnceUnitState;
 
30610
class PragmaOnce;
 
30611
class CMatchSyntax;
 
30612
namespace Puma {
 
30613
 
 
30614
#line 106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
30615
class CObjectInfo {
 
30616
#line 30617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
30617
  friend class ::CCExprResolve;
 
30618
  friend class ::CExprResolve;
 
30619
  friend class ::WinIfExists;
 
30620
  friend class ::WinImportHandler;
 
30621
  friend class ::WinMacros;
 
30622
  friend class ::WinAsm;
 
30623
  friend class ::WinDeclSpecs;
 
30624
  friend class ::WinMemberExplSpec;
 
30625
  friend class ::WinTypeKeywords;
 
30626
  friend class ::WinFriend;
 
30627
  friend class ::ExtAC;
 
30628
  friend class ::ExtACBuilderCoupling;
 
30629
  friend class ::ExtACSyntaxCoupling;
 
30630
  friend class ::ExtACTree;
 
30631
  friend class ::ExtACKeywords;
 
30632
  friend class ::ExtGnu;
 
30633
  friend class ::PragmaOnceUnitState;
 
30634
  friend class ::PragmaOnce;
 
30635
  friend class ::CMatchSyntax;
 
30636
 
 
30637
#line 106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
30638
 
 
30639
public:
 
30640
  /** %Semantic information object types. */
 
30641
  enum ObjectId {
 
30642
    /** %Semantic information about the file scope. */
 
30643
    FILE_INFO, 
 
30644
    /** %Semantic information about a union. */
 
30645
    UNION_INFO, 
 
30646
    /** %Semantic information about a class. */
 
30647
    CLASS_INFO,
 
30648
    /** %Semantic information about a base class specifier. */
 
30649
    BASECLASS_INFO,
 
30650
    /** %Semantic information about class/namespace member alias. */
 
30651
    MEMBERALIAS_INFO,
 
30652
    /** %Semantic information about an enumeration. */
 
30653
    ENUM_INFO, 
 
30654
    /** %Semantic information about a typedef. */
 
30655
    TYPEDEF_INFO, 
 
30656
    /** %Semantic information about a function, method, or overloaded operator. */
 
30657
    FUNCTION_INFO, 
 
30658
    /** %Semantic information about a label. */
 
30659
    LABEL_INFO,
 
30660
    /** %Semantic information about an enumerator constant. */
 
30661
    ENUMERATOR_INFO,
 
30662
    /** %Semantic information about an object (variables etc). */
 
30663
    ATTRIBUTE_INFO, 
 
30664
    /** %Semantic information about a template parameter. */
 
30665
    TEMPLATE_PARAM_INFO,
 
30666
    /** %Semantic information about a class or function template. */
 
30667
    TEMPLATE_INFO,
 
30668
    /** %Semantic information about an instance of a class template. */
 
30669
    CLASS_INSTANCE_INFO,
 
30670
    /** %Semantic information about an instance of a union template. */
 
30671
    UNION_INSTANCE_INFO,
 
30672
    /** %Semantic information about an instance of a function template. */
 
30673
    FCT_INSTANCE_INFO,
 
30674
    /** %Semantic information about a function parameter. */
 
30675
    ARGUMENT_INFO, 
 
30676
    /** %Semantic information about a local scope (block scope). */
 
30677
    LOCAL_INFO, 
 
30678
    /** %Semantic information about a named or anonymous namespace. */
 
30679
    NAMESPACE_INFO,
 
30680
    /** %Semantic information about a using declaration. */
 
30681
    USING_INFO
 
30682
  };
 
30683
 
 
30684
protected:
 
30685
  /** If true than only the members are destroyed in the destructor.
 
30686
   *  Otherwise it is also tried to remove all references to this 
 
30687
   *  object in other semantic objects. */
 
30688
  bool               _DeleteMembersOnly;
 
30689
  
 
30690
private:
 
30691
  DString            _Name;
 
30692
  const char        *_QualName;         // Full qualified name
 
30693
  bool              _abs, _tdef;        // Flags that were used for QualName()
 
30694
  CTypeInfo         *_TypeInfo;
 
30695
  CObjectInfo       *_BaseObject;       // corresponding object of base class
 
30696
  CObjectInfo       *_Next;             // next linked object
 
30697
  CObjectInfo       *_Prev;             // previous linked object
 
30698
  CSemDatabase      *_SemDB;
 
30699
  CTree             *_Tree;             // corresponding syntax tree
 
30700
  ObjectId           _Id;               // object type
 
30701
  CSpecifiers        _Specifiers;
 
30702
  CSourceInfo        _SourceInfo;       // location in source file
 
30703
  CProtection::Type  _Protection;
 
30704
  CLinkage::Type     _Linkage;
 
30705
  CStorage::Type     _Storage;            
 
30706
  CLanguage          _Language;
 
30707
 
 
30708
protected:
 
30709
  /** Qualified name scope. Set only for CAttributeInfo,
 
30710
   *  CFunctionInfo, and CRecord. */
 
30711
  CStructure        *_QualScope;
 
30712
  /** The scope of a friend class or function. This is not 
 
30713
   *  the scope in which the friend class or function 
 
30714
   *  was declared. A friend function of a class may be declared
 
30715
   *  first inside the scope of a class definition. But the
 
30716
   *  declared function does not belong to this scope. In fact
 
30717
   *  it belongs to the nearest non-class scope (usually the
 
30718
   *  file scope). This is the assigned scope. */
 
30719
  CStructure        *_AssignedScope;
 
30720
  /** Set of semantic objects connected to this object in
 
30721
   *  any way. */
 
30722
  Array<CStructure*> _Registered;         
 
30723
  
 
30724
public: 
 
30725
  /** Destructor. */
 
30726
  ~CObjectInfo ();
 
30727
  
 
30728
  /** Compare the addresses of this object and all objects
 
30729
   *  linked to this object with the address of the given 
 
30730
   *  object.
 
30731
   *  \return True if the addresses are the same and thus
 
30732
   *          the given object describes the same entity. */
 
30733
  bool operator ==(const CObjectInfo &) const;
 
30734
  /** Compare the addresses of this object and all objects
 
30735
   *  linked to this object with the address of the given 
 
30736
   *  object.
 
30737
   *  \return True if the addresses are different and thus
 
30738
   *          the given object does not describe the same entity. */
 
30739
  bool operator !=(const CObjectInfo &) const;
 
30740
 
 
30741
  /** Get a pointer to CObjectInfo for any semantic object type. */
 
30742
  CObjectInfo        *ObjectInfo () const;
 
30743
  /** Return a pointer to CLabelInfo if the entity is a label. 
 
30744
   *  The object type has to be one of:
 
30745
   *  \li CObjectInfo::LABEL_INFO
 
30746
   * 
 
30747
   *  \return The valid pointer or NULL. */
 
30748
  CLabelInfo         *LabelInfo () const;
 
30749
  /** Return a pointer to CMemberAliasInfo if the entity is a member alias.
 
30750
   *  The object type has to be one of:
 
30751
   *  \li CObjectInfo::MEMBERALIAS_INFO
 
30752
   *
 
30753
   *  \return The valid pointer or NULL. */
 
30754
  CMemberAliasInfo   *MemberAliasInfo () const; 
 
30755
  /** Return a pointer to CBaseClassInfo if the entity is a base class specifier.
 
30756
   *  The object type has to be one of:
 
30757
   *  \li CObjectInfo::BASECLASS_INFO 
 
30758
   *
 
30759
   *  \return The valid pointer or NULL. */
 
30760
  CBaseClassInfo     *BaseClassInfo () const;
 
30761
  /** Return a pointer to CUsingInfo if the entity is a using-directive.
 
30762
   *  The object type has to be one of:
 
30763
   *  \li CObjectInfo::USING_INFO
 
30764
   *
 
30765
   *  \return The valid pointer or NULL. */
 
30766
  CUsingInfo         *UsingInfo () const;
 
30767
  /** Return a pointer to CTypedefInfo if the entity is a typedef.
 
30768
   *  The object type has to be one of:
 
30769
   *  \li CObjectInfo::TYPEDEF_INFO
 
30770
   *
 
30771
   *  \return The valid pointer or NULL. */
 
30772
  CTypedefInfo       *TypedefInfo () const;
 
30773
  /** Return a pointer to CArgumentInfo if the entity is a function parameter.
 
30774
   *  The object type has to be one of:
 
30775
   *  \li CObjectInfo::ARGUMENT_INFO
 
30776
   *
 
30777
   *  \return The valid pointer or NULL. */
 
30778
  CArgumentInfo      *ArgumentInfo () const;
 
30779
  /** Return a pointer to CAttributeInfo if the entity is an object or 
 
30780
   *  enumeration constant.
 
30781
   *  The object type has to be one of:
 
30782
   *  \li CObjectInfo::ATTRIBUTE_INFO
 
30783
   *  \li CObjectInfo::ENUMERATOR_INFO
 
30784
   *
 
30785
   *  \return The valid pointer or NULL. */
 
30786
  CAttributeInfo     *AttributeInfo () const;
 
30787
  /** Return a pointer to CTemplateParemInfo if the entity is a template parameter.
 
30788
   *  The object type has to be one of:
 
30789
   *  \li CObjectInfo::TEMPLATE_PARAM_INFO
 
30790
   *
 
30791
   *  \return The valid pointer or NULL. */
 
30792
  CTemplateParamInfo *TemplateParamInfo () const; 
 
30793
  /** Return a pointer to CStructure if the entity is a namespace, class, 
 
30794
   *  function, or any other construct that can contain other entities.
 
30795
   *  The object type has to be one of:
 
30796
   *  \li CObjectInfo::NAMESPACE_INFO
 
30797
   *  \li CObjectInfo::FILE_INFO
 
30798
   *  \li CObjectInfo::CLASS_INFO
 
30799
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
30800
   *  \li CObjectInfo::UNION_INFO
 
30801
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
30802
   *  \li CObjectInfo::FUNCTION_INFO,
 
30803
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
30804
   *  \li CObjectInfo::TEMPLATE_INFO
 
30805
   *  \li CObjectInfo::LOCAL_INFO
 
30806
   *
 
30807
   *  \return The valid pointer or NULL. */
 
30808
  CStructure         *Structure () const; 
 
30809
  /** Return a pointer to CFileInfo if this is the file scope.
 
30810
   *  The object type has to be one of:
 
30811
   *  \li CObjectInfo::FILE_INFO
 
30812
   *
 
30813
   *  \return The valid pointer or NULL. */
 
30814
  CFileInfo          *FileInfo () const;  
 
30815
  /** Return a pointer to CRecord if the entity is a class or union.
 
30816
   *  The object type has to be one of:
 
30817
   *  \li CObjectInfo::CLASS_INFO
 
30818
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
30819
   *  \li CObjectInfo::UNION_INFO
 
30820
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
30821
   *
 
30822
   *  \return The valid pointer or NULL. */
 
30823
  CRecord            *Record () const;        
 
30824
  /** Return a pointer to CLocalScope if the entity is a local scope
 
30825
   *  (block scope).
 
30826
   *  The object type has to be one of:
 
30827
   *  \li CObjectInfo::LOCAL_INFO
 
30828
   *
 
30829
   *  \return The valid pointer or NULL. */
 
30830
  CLocalScope        *LocalScope () const;
 
30831
  /** Return a pointer to CScopeInfo if the entity defines a scope.
 
30832
   *  The object type has to be one of:
 
30833
   *  \li CObjectInfo::NAMESPACE_INFO
 
30834
   *  \li CObjectInfo::FILE_INFO
 
30835
   *  \li CObjectInfo::CLASS_INFO
 
30836
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
30837
   *  \li CObjectInfo::UNION_INFO
 
30838
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
30839
   *  \li CObjectInfo::FUNCTION_INFO
 
30840
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
30841
   *  \li CObjectInfo::TEMPLATE_INFO
 
30842
   *  \li CObjectInfo::LOCAL_INFO
 
30843
   *
 
30844
   *  \return The valid pointer or NULL. */
 
30845
  CScopeInfo         *ScopeInfo () const; 
 
30846
  /** Return a pointer to CClassInfo if the entity is a class.
 
30847
   *  The object type has to be one of:
 
30848
   *  \li CObjectInfo::CLASS_INFO
 
30849
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
30850
   *
 
30851
   *  \return The valid pointer or NULL. */
 
30852
  CClassInfo         *ClassInfo () const;
 
30853
  /** Return a pointer to CUnionInfo if the entity is a union.
 
30854
   *  The object type has to be one of:
 
30855
   *  \li CObjectInfo::UNION_INFO
 
30856
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
30857
   *
 
30858
   *  \return The valid pointer or NULL. */
 
30859
  CUnionInfo         *UnionInfo () const;
 
30860
  /** Return a pointer to CEnumInfo if the entity is an enumeration.
 
30861
   *  The object type has to be one of:
 
30862
   *  \li CObjectInfo::ENUM_INFO
 
30863
   *
 
30864
   *  \return The valid pointer or NULL. */
 
30865
  CEnumInfo          *EnumInfo () const;
 
30866
  /** Return a pointer to CFunctionInfo if the entity is a function,
 
30867
   *  method, or overloaded operator.
 
30868
   *  The object type has to be one of:
 
30869
   *  \li CObjectInfo::FUNCTION_INFO
 
30870
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
30871
   *
 
30872
   *  \return The valid pointer or NULL. */
 
30873
  CFunctionInfo      *FunctionInfo () const;
 
30874
  /** Return a pointer to CNamespaceInfo if the entity is a namespace.
 
30875
   *  The object type has to be one of:
 
30876
   *  \li CObjectInfo::NAMESPACE_INFO
 
30877
   *  \li CObjectInfo::FILE_INFO
 
30878
   *
 
30879
   *  \return The valid pointer or NULL. */
 
30880
  CNamespaceInfo     *NamespaceInfo () const;
 
30881
  /** Return a pointer to CEnumeratorInfo if the entity is an 
 
30882
   *  enumeration constant.
 
30883
   *  The object type has to be one of:
 
30884
   *  \li CObjectInfo::ENUMERATOR_INFO
 
30885
   *
 
30886
   *  \return The valid pointer or NULL. */
 
30887
  CEnumeratorInfo    *EnumeratorInfo () const;
 
30888
  /** Return a pointer to CTemplateInfo if the entity is a template.
 
30889
   *  The object type has to be one of:
 
30890
   *  \li CObjectInfo::TEMPLATE_INFO
 
30891
   *
 
30892
   *  \return The valid pointer or NULL. */
 
30893
  CTemplateInfo      *TemplateInfo () const; 
 
30894
  /** Return a pointer to CClassInstance if the entity is an instance
 
30895
   *  of a class template.
 
30896
   *  The object type has to be one of:
 
30897
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
30898
   *
 
30899
   *  \return The valid pointer or NULL. */
 
30900
  CClassInstance     *ClassInstance () const; 
 
30901
  /** Return a pointer to CFctInstance if the entity is an instance
 
30902
   *  of a function template.
 
30903
   *  The object type has to be one of:
 
30904
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
30905
   *
 
30906
   *  \return The valid pointer or NULL. */
 
30907
  CFctInstance       *FctInstance () const; 
 
30908
  /** Return a pointer to CUnionInstance if the entity is an instance
 
30909
   *  of a union template.
 
30910
   *  The object type has to be one of:
 
30911
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
30912
   *
 
30913
   *  \return The valid pointer or NULL. */
 
30914
  CUnionInstance     *UnionInstance () const; 
 
30915
 
 
30916
  /** Return a pointer to CTemplateInfo if the entity is a template.
 
30917
   *  The object type has to be one of:
 
30918
   *  \li CObjectInfo::CLASS_INFO
 
30919
   *  \li CObjectInfo::UNION_INFO
 
30920
   *  \li CObjectInfo::FUNCTION_INFO
 
30921
   *  \li CObjectInfo::TEMPLATE_PARAM_INFO
 
30922
   *
 
30923
   *  \return The valid pointer or NULL. */
 
30924
  CTemplateInfo      *Template () const;
 
30925
  /** Return a pointer to CTemplateInstance if the entity is an
 
30926
   *  instance of a class or function template.
 
30927
   *  The object type has to be one of:
 
30928
   *  \li CObjectInfo::CLASS_INSTANCE_INFO
 
30929
   *  \li CObjectInfo::UNION_INSTANCE_INFO
 
30930
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
30931
   *
 
30932
   *  \return The valid pointer or NULL. */
 
30933
  CTemplateInstance  *TemplateInstance () const;
 
30934
  
 
30935
  /** Get the scope in which the entity was declared. */
 
30936
  CScopeInfo         *Scope () const; 
 
30937
  /** Get the scope of qualified names. The scope of a class member
 
30938
   *  for instance is the corresponding class. If a function is declared
 
30939
   *  in a namespace, then the qualified scope is that namespace. */
 
30940
  CStructure         *QualifiedScope () const;
 
30941
  /** Get the class containing the class member described by this object.
 
30942
   *  The object type has to be one of:
 
30943
   *  \li CObjectInfo::FUNCTION_INFO
 
30944
   *  \li CObjectInfo::FCT_INSTANCE_INFO
 
30945
   *  \li CObjectInfo::ATTRIBUTE_INFO
 
30946
   *  \li CObjectInfo::ENUMERATOR_INFO 
 
30947
   *
 
30948
   *  \return The class or union, or NULL if not a member of a class or union. */
 
30949
  CRecord            *ClassScope () const;
 
30950
  /** Get the scope of a friend class or function. This is not 
 
30951
   *  the scope in which the friend class or function 
 
30952
   *  was declared. A friend function of a class may be declared
 
30953
   *  first inside the scope of a class definition. But the
 
30954
   *  declared function does not belong to this scope. In fact
 
30955
   *  it belongs to the nearest non-class scope (usually the
 
30956
   *  file scope). This is the assigned scope. 
 
30957
   *  \return The assigned scope or NULL. */
 
30958
  CStructure          *AssignedScope () const; 
 
30959
 
 
30960
  /** Get the type of this semantic object. */
 
30961
  ObjectId            Id () const;
 
30962
  /** Get the name of entity described by this semantic object. */
 
30963
  const DString&      Name () const; 
 
30964
  /** Get the qualified name of the entity described by this semantic object. 
 
30965
   *  \param abs Create root qualified name (like ::X::Y::Z).
 
30966
   *  \param tdef Insert the name of a typedef instead of the named type. */
 
30967
  const char         *QualName (bool abs = false, bool tdef = false);
 
30968
  /** Get the semantic information object for the definition of an entity.
 
30969
   *  Some entities, like functions and classes, can be declared several
 
30970
   *  times before a definition of the entity appears. The semantic objects
 
30971
   *  for the definition and declarations are linked. This method searches
 
30972
   *  the linked semantic objects for the semantic object of the definition
 
30973
   *  of the entity.
 
30974
   *  \return The semantic object for the definition or this object if
 
30975
   *          no definition found. */
 
30976
  CObjectInfo        *DefObject () const;
 
30977
  /** Get the data type of the entity. */
 
30978
  CTypeInfo          *TypeInfo () const;
 
30979
  /** Get the source file information. Contains the position and token 
 
30980
   *  of the entity in the source file. */
 
30981
  CSourceInfo        *SourceInfo () const;
 
30982
  /** Get the semantic information database object containing this
 
30983
   *  semantic object. 
 
30984
   *  \deprecated Use CObjectInfo::SemDB() instead. */
 
30985
  CSemDatabase       *ClassDB () const; 
 
30986
  /** Get the semantic information database object containing this
 
30987
   *  semantic object. */
 
30988
  CSemDatabase       *SemDB () const; 
 
30989
  /** Get the syntax tree node for the entity described by this 
 
30990
   *  semantic object. */
 
30991
  CTree              *Tree () const;
 
30992
  /** Get the next semantic object linked with this object. Usually
 
30993
   *  the definition and the declarations of an entity are linked. */
 
30994
  CObjectInfo        *NextObject () const;
 
30995
  /** Get the previous semantic object linked with this object. Usually
 
30996
   *  the definition and the declarations of an entity are linked. */
 
30997
  CObjectInfo        *PrevObject () const;
 
30998
  /** Get the semantic object for the base class entity this entity
 
30999
   *  is overloading. 
 
31000
   *  \note Not yet implemented! 
 
31001
   *  \return Always returns NULL. */
 
31002
  CObjectInfo        *BaseObject () const;
 
31003
  /** Get the initializer of the entity.
 
31004
   *  \return The initializer expression or NULL if no initializer. */
 
31005
  CT_ExprList        *Init () const;
 
31006
  /** Get the member protection of the entity, if it is a class member. */
 
31007
  CProtection::Type   Protection () const;
 
31008
  /** Get the linkage of the entity. */
 
31009
  CLinkage::Type      Linkage () const;
 
31010
  /** Get the storage class of the entity. */
 
31011
  CStorage::Type      Storage () const;
 
31012
  /** Get the entity encoding language. */
 
31013
  const CLanguage    &Language () const;
 
31014
  /** Get the entity encoding language. */
 
31015
  CLanguage          &Language ();
 
31016
 
 
31017
  /** Check if the entity is a type. */
 
31018
  bool                isType () const;
 
31019
  /** Check if the entity is an object. */
 
31020
  bool                isObject () const;
 
31021
  /** Check if the entity is anonymous (has no explicit name). */
 
31022
  bool                isAnonymous () const;
 
31023
  /** Check if the entity is a class or function template, or a 
 
31024
   *  template template parameter. */
 
31025
  bool                isTemplate () const;
 
31026
  /** Check if the entity is a class or function template instance. */
 
31027
  bool                isTemplateInstance () const;
 
31028
  /** Check if the entity describes a built-in type or function.
 
31029
   *  In this case the entity has no syntax tree (Tree() returns NULL). */
 
31030
  bool                isBuiltin () const;
 
31031
  /** Check if the entity is a method or data member of a class. */
 
31032
  bool                isClassMember () const;
 
31033
  /** Check if the entity is declared \e virtual. */
 
31034
  bool                isVirtual () const;
 
31035
  /** Check if the entity is declared \e static. */
 
31036
  bool                isStatic () const;
 
31037
  /** Check if the entity is declared \e __thread. */
 
31038
  bool                isThreadLocal () const;
 
31039
  /** Check if the entity is declared \e extern. */
 
31040
  bool                isExtern () const;
 
31041
  /** Check if the entity is declared \e mutable. */
 
31042
  bool                isMutable () const;
 
31043
  /** Check if the entity is declared \e register. */
 
31044
  bool                isRegister () const;
 
31045
  /** Check if the entity is declared \e explicit. */
 
31046
  bool                isExplicit () const;
 
31047
  /** Check if the entity is declared \e inline. */
 
31048
  bool                isInline () const;
 
31049
  /** Check if the entity is declared \e auto. */
 
31050
  bool                isAuto () const;
 
31051
  /** Check if the given semantic object is registered as
 
31052
   *  being connected to this semantic object in any way.
 
31053
   *  \param s The semantic object. */
 
31054
  bool                isRegistered (const CStructure* s) const;
 
31055
 
 
31056
  /** Set the name of the entity.
 
31057
   *  \param s The name. */
 
31058
  void                Name (const char* s) { Name(DString(s==0?"":s)); }
 
31059
  /** Set the name of the entity.
 
31060
   *  \param ds The name. */
 
31061
  void                Name (const DString& ds);
 
31062
  /** Set the type of the entity. 
 
31063
   *  \param type The type information. */
 
31064
  void                TypeInfo (CTypeInfo *type);
 
31065
  /** Set the base class object for the entity this entity overloads.
 
31066
   *  \param base The base object. */
 
31067
  void                BaseObject (CObjectInfo *base);
 
31068
  /** Set the member access protection of the entity. 
 
31069
   *  \param p The protection. */
 
31070
  void                Protection (CProtection::Type p);
 
31071
  /** Set the linkage of the entity.
 
31072
   *  \param l The linkage. */
 
31073
  void                Linkage (CLinkage::Type l);
 
31074
  /** Set the storage class of the entity. 
 
31075
   *  \param s The storage class. */
 
31076
  void                Storage (CStorage::Type s);
 
31077
  /** Set the source file information for the entity.
 
31078
   *  \param finfo The file information. */
 
31079
  void                FileInfo (CFileInfo *finfo);
 
31080
  /** Set the syntax tree node of the entity.
 
31081
   *  \param tree The syntax tree node. */
 
31082
  void                Tree (CTree *tree);    
 
31083
  /** Set the semantic information database object containing
 
31084
   *  this semantic object. 
 
31085
   *  \deprecated Use CObjectInfo::SemDB(CSemDatabase*) instead. 
 
31086
   *  \param db The semantic database. */
 
31087
  void                ClassDB (CSemDatabase *db);
 
31088
  /** Set the semantic information database object containing
 
31089
   *  this semantic object. 
 
31090
   *  \param db The semantic database. */
 
31091
  void                SemDB (CSemDatabase *db);
 
31092
  /** Set that only the members of this semantic object are destroyed 
 
31093
   *  in the destructor. Otherwise it is also tried to remove all 
 
31094
   *  references to this object in other semantic objects. */
 
31095
  void                DeleteMembersOnly ();
 
31096
  /** Set the link to next semantic object. Usually the semantic objects
 
31097
   *  for the definition and declaration of an entity are linked. 
 
31098
   *  \param obj The next object in the chain. */
 
31099
  void                NextObject (CObjectInfo *obj); 
 
31100
  /** Set the link to next semantic object. Usually the semantic objects
 
31101
   *  for the definition and declaration of an entity are linked.
 
31102
   *  \param obj The previous object in the chain. */
 
31103
  void                PrevObject (CObjectInfo *obj); 
 
31104
  /** Unlink this semantic object. Usually the semantic objects
 
31105
   *  for the definition and declaration of an entity are linked. 
 
31106
   *  This method removes this object from the chain. */
 
31107
  void                Unlink (); 
 
31108
  /** Register the given semantic object as being connected to 
 
31109
   *  this semantic object in any way.
 
31110
   *  \param s The semantic object. */
 
31111
  void                Register (CStructure *s);
 
31112
  /** Unregister the given semantic object as being connected to 
 
31113
   *  this semantic object in any way.
 
31114
   *  \param s The semantic object. */
 
31115
  void                Unregister (CStructure *s);
 
31116
  /** Set whether the entity was declared \e virtual.
 
31117
   *  \param v True for yes, false for no. */
 
31118
  void                isVirtual (bool v);
 
31119
  /** Set whether the entity was declared \e static.
 
31120
   *  \param v True for yes, false for no. */
 
31121
  void                isStatic (bool v);
 
31122
  /** Set whether the entity was declared \e __thread.
 
31123
   *  \param v True for yes, false for no. */
 
31124
  void                isThreadLocal (bool v);
 
31125
  /** Set whether the entity was declared \e extern.
 
31126
   *  \param v True for yes, false for no. */
 
31127
  void                isExtern (bool v);
 
31128
  /** Set whether the entity was declared \e mutable.
 
31129
   *  \param v True for yes, false for no. */
 
31130
  void                isMutable (bool v);
 
31131
  /** Set whether the entity was declared \e register.
 
31132
   *  \param v True for yes, false for no. */
 
31133
  void                isRegister (bool v);
 
31134
  /** Set whether the entity was declared \e explicit.
 
31135
   *  \param v True for yes, false for no. */
 
31136
  void                isExplicit (bool v);
 
31137
  /** Set whether the entity was declared \e inline.
 
31138
   *  \param v True for yes, false for no. */
 
31139
  void                isInline (bool v);
 
31140
  /** Set whether the entity was declared \e auto.
 
31141
   *  \param v True for yes, false for no. */
 
31142
  void                isAuto (bool v);
 
31143
  /** Set the assigned scope of the entity. This is the scope of
 
31144
   *  a friend class or function. It is not the scope in which the 
 
31145
   *  friend class or function was declared. A friend function of 
 
31146
   *  a class may be declared first inside the scope of a class 
 
31147
   *  definition. But the declared function does not belong to 
 
31148
   *  this scope. In fact it belongs to the nearest non-class scope 
 
31149
   *  (usually the file scope). This is the assigned scope.
 
31150
   *  \param s The assigned scope. */
 
31151
  void                AssignedScope (CStructure *s);
 
31152
 
 
31153
protected:  
 
31154
  /** Constructor.
 
31155
   *  \param id The semantic object type. */
 
31156
  CObjectInfo (ObjectId id);
 
31157
 
 
31158
  /** Clean up the semantic object. This is usually done before
 
31159
   *  the semantic object is destroyed. */
 
31160
  void CleanUp ();
 
31161
public:
 
31162
  typedef AC::TL<bool,AC::TL<Puma::DString,AC::TL<const char *,AC::TL<bool,AC::TL<bool,AC::TL<Puma::CTypeInfo *,AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CObjectInfo *,AC::TL<Puma::CSemDatabase *,AC::TL<Puma::CTree *,AC::TL<Puma::CObjectInfo::ObjectId,AC::TL<Puma::CSpecifiers,AC::TL<Puma::CSourceInfo,AC::TL<Puma::CProtection::Type,AC::TL<Puma::CLinkage::Type,AC::TL<Puma::CStorage::Type,AC::TL<Puma::CLanguage,AC::TL<Puma::CStructure *,AC::TL<Puma::CStructure *,AC::TL<Puma::Array< Puma::CStructure * >,AC::TLE > > > > > > > > > > > > > > > > > > > > > __AttrTypes;
 
31163
  const char *__attr_name (unsigned i) const {
 
31164
    static const char *names[] = { "_DeleteMembersOnly", "_Name", "_QualName", "_abs", "_tdef", "_TypeInfo", "_BaseObject", "_Next", "_Prev", "_SemDB", "_Tree", "_Id", "_Specifiers", "_SourceInfo", "_Protection", "_Linkage", "_Storage", "_Language", "_QualScope", "_AssignedScope", "_Registered" }; return names[i];
 
31165
  }
 
31166
  const void *__attr (unsigned __i) const {
 
31167
    switch (__i) { case 20: return &_DeleteMembersOnly; case 21: return &_Name; case 22: return &_QualName; case 23: return &_abs; case 24: return &_tdef; case 25: return &_TypeInfo; case 26: return &_BaseObject; case 27: return &_Next; case 28: return &_Prev; case 29: return &_SemDB; case 30: return &_Tree; case 31: return &_Id; case 32: return &_Specifiers; case 33: return &_SourceInfo; case 34: return &_Protection; case 35: return &_Linkage; case 36: return &_Storage; case 37: return &_Language; case 38: return &_QualScope; case 39: return &_AssignedScope; case 41: return &_Registered; default: return 0; }
 
31168
  }
 
31169
#line 629 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CObjectInfo.h"
 
31170
};
 
31171
 
 
31172
inline CObjectInfo::CObjectInfo (CObjectInfo::ObjectId id) :
 
31173
  _DeleteMembersOnly (false),
 
31174
  _Name              (),
 
31175
  _QualName          ((const char*)0),
 
31176
  _abs               (false),
 
31177
  _tdef              (false),
 
31178
  _TypeInfo          ((CTypeInfo*)0),
 
31179
  _BaseObject        ((CObjectInfo*)0),
 
31180
  _Next              ((CObjectInfo*)this),
 
31181
  _Prev              ((CObjectInfo*)this),
 
31182
  _SemDB             ((CSemDatabase*)0),
 
31183
  _Tree              ((CTree*)0),
 
31184
  _Id                (id),
 
31185
  _Protection        (CProtection::PROT_NONE), 
 
31186
  _Linkage           (CLinkage::LINK_NONE),
 
31187
  _Storage           (CStorage::CLASS_NONE),
 
31188
  _QualScope         ((CStructure*)0),
 
31189
  _AssignedScope     ((CStructure*)0)
 
31190
 {}
 
31191
 
 
31192
inline CObjectInfo::ObjectId CObjectInfo::Id () const
 
31193
 { return _Id; }
 
31194
 
 
31195
inline bool CObjectInfo::operator !=(const CObjectInfo &info) const
 
31196
 { return ! (*this == info); }
 
31197
 
 
31198
inline const DString& CObjectInfo::Name () const 
 
31199
 { return _Name; }
 
31200
inline CTypeInfo *CObjectInfo::TypeInfo () const
 
31201
 { return _TypeInfo; }
 
31202
inline CSourceInfo *CObjectInfo::SourceInfo () const
 
31203
 { return (CSourceInfo*)&_SourceInfo; }
 
31204
inline CProtection::Type CObjectInfo::Protection () const
 
31205
 { return _Protection; }
 
31206
inline CLinkage::Type CObjectInfo::Linkage () const
 
31207
 { return _Linkage; }
 
31208
inline CStorage::Type CObjectInfo::Storage () const
 
31209
 { return _Storage; }
 
31210
inline CLanguage &CObjectInfo::Language ()
 
31211
 { return _Language; }
 
31212
inline const CLanguage &CObjectInfo::Language () const
 
31213
 { return _Language; }
 
31214
inline CObjectInfo *CObjectInfo::BaseObject () const
 
31215
 { return _BaseObject; }
 
31216
inline CTree *CObjectInfo::Tree () const 
 
31217
 { return _Tree; }
 
31218
inline CSemDatabase *CObjectInfo::ClassDB () const
 
31219
 { return _SemDB; }
 
31220
inline CSemDatabase *CObjectInfo::SemDB () const
 
31221
 { return _SemDB; }
 
31222
inline CT_ExprList *CObjectInfo::Init () const 
 
31223
 { return (CT_ExprList*)0; }
 
31224
 
 
31225
inline void CObjectInfo::Protection (CProtection::Type s)
 
31226
 { _Protection = s; }
 
31227
inline void CObjectInfo::Linkage (CLinkage::Type s)
 
31228
 { _Linkage = s; }
 
31229
inline void CObjectInfo::Storage (CStorage::Type s)
 
31230
 { _Storage = s; }
 
31231
inline void CObjectInfo::BaseObject (CObjectInfo *info)
 
31232
 { _BaseObject = info; }
 
31233
inline void CObjectInfo::Tree (CTree *t)    
 
31234
 { _Tree = t; }
 
31235
inline void CObjectInfo::ClassDB (CSemDatabase *db) 
 
31236
 { _SemDB = db; }
 
31237
inline void CObjectInfo::SemDB (CSemDatabase *db) 
 
31238
 { _SemDB = db; }
 
31239
inline void CObjectInfo::DeleteMembersOnly () 
 
31240
 { _DeleteMembersOnly = true; }
 
31241
 
 
31242
inline void CObjectInfo::Register (CStructure *scope)
 
31243
 { _Registered.append (scope); }
 
31244
 
 
31245
inline bool CObjectInfo::isAnonymous () const 
 
31246
 { return (Name ().empty () || *Name ().c_str () == '%'); }
 
31247
inline bool CObjectInfo::isBuiltin () const
 
31248
 { return ! Tree (); }
 
31249
 
 
31250
inline bool CObjectInfo::isVirtual () const
 
31251
 { return _Specifiers == CSpecifiers::SPEC_VIRTUAL; }
 
31252
inline bool CObjectInfo::isStatic () const
 
31253
 { return _Specifiers == CSpecifiers::SPEC_STATIC; }
 
31254
inline bool CObjectInfo::isThreadLocal () const
 
31255
 { return _Specifiers == CSpecifiers::SPEC_THREAD; }
 
31256
inline bool CObjectInfo::isExtern () const
 
31257
 { return _Specifiers == CSpecifiers::SPEC_EXTERN; }
 
31258
inline bool CObjectInfo::isMutable () const
 
31259
 { return _Specifiers == CSpecifiers::SPEC_MUTABLE; }
 
31260
inline bool CObjectInfo::isRegister () const
 
31261
 { return _Specifiers == CSpecifiers::SPEC_REGISTER; }
 
31262
inline bool CObjectInfo::isExplicit () const
 
31263
 { return _Specifiers == CSpecifiers::SPEC_EXPLICIT; }
 
31264
inline bool CObjectInfo::isInline () const
 
31265
 { return _Specifiers == CSpecifiers::SPEC_INLINE; }
 
31266
inline bool CObjectInfo::isAuto () const
 
31267
 { return _Specifiers == CSpecifiers::SPEC_AUTO; }
 
31268
 
 
31269
inline void CObjectInfo::isVirtual (bool v)
 
31270
 { if (v) _Specifiers += CSpecifiers::SPEC_VIRTUAL; 
 
31271
   else   _Specifiers -= CSpecifiers::SPEC_VIRTUAL; }
 
31272
inline void CObjectInfo::isStatic (bool v)
 
31273
 { if (v) _Specifiers += CSpecifiers::SPEC_STATIC; 
 
31274
   else   _Specifiers -= CSpecifiers::SPEC_STATIC; }
 
31275
inline void CObjectInfo::isThreadLocal (bool v)
 
31276
 { if (v) _Specifiers += CSpecifiers::SPEC_THREAD; 
 
31277
   else   _Specifiers -= CSpecifiers::SPEC_THREAD; }
 
31278
inline void CObjectInfo::isExtern (bool v)
 
31279
 { if (v) _Specifiers += CSpecifiers::SPEC_EXTERN; 
 
31280
   else   _Specifiers -= CSpecifiers::SPEC_EXTERN; }
 
31281
inline void CObjectInfo::isMutable (bool v)
 
31282
 { if (v) _Specifiers += CSpecifiers::SPEC_MUTABLE; 
 
31283
   else   _Specifiers -= CSpecifiers::SPEC_MUTABLE; }
 
31284
inline void CObjectInfo::isRegister (bool v)
 
31285
 { if (v) _Specifiers += CSpecifiers::SPEC_REGISTER; 
 
31286
   else   _Specifiers -= CSpecifiers::SPEC_REGISTER; }
 
31287
inline void CObjectInfo::isExplicit (bool v)
 
31288
 { if (v) _Specifiers += CSpecifiers::SPEC_EXPLICIT; 
 
31289
   else   _Specifiers -= CSpecifiers::SPEC_EXPLICIT; }
 
31290
inline void CObjectInfo::isInline (bool v)
 
31291
 { if (v) _Specifiers += CSpecifiers::SPEC_INLINE; 
 
31292
   else   _Specifiers -= CSpecifiers::SPEC_INLINE; }
 
31293
inline void CObjectInfo::isAuto (bool v)
 
31294
 { if (v) _Specifiers += CSpecifiers::SPEC_AUTO; 
 
31295
   else   _Specifiers -= CSpecifiers::SPEC_AUTO; }
 
31296
 
 
31297
// link objects
 
31298
 
 
31299
inline CObjectInfo *CObjectInfo::NextObject () const
 
31300
 { return _Next; }
 
31301
inline CObjectInfo *CObjectInfo::PrevObject () const
 
31302
 { return _Prev; }
 
31303
 
 
31304
inline CMemberAliasInfo *CObjectInfo::MemberAliasInfo () const
 
31305
 { return _Id == MEMBERALIAS_INFO ? (CMemberAliasInfo*)this : (CMemberAliasInfo*)0; }
 
31306
inline CBaseClassInfo *CObjectInfo::BaseClassInfo () const
 
31307
 { return _Id == BASECLASS_INFO ? (CBaseClassInfo*)this : (CBaseClassInfo*)0; }
 
31308
inline CClassInfo *CObjectInfo::ClassInfo () const
 
31309
 { return _Id == CLASS_INFO || _Id == CLASS_INSTANCE_INFO ? (CClassInfo*)this : (CClassInfo*)0; }
 
31310
inline CUnionInfo *CObjectInfo::UnionInfo () const
 
31311
 { return _Id == UNION_INFO || _Id == UNION_INSTANCE_INFO ? (CUnionInfo*)this : (CUnionInfo*)0; }
 
31312
inline CEnumInfo *CObjectInfo::EnumInfo () const
 
31313
 { return _Id == ENUM_INFO ? (CEnumInfo*)this : (CEnumInfo*)0; }
 
31314
inline CUsingInfo *CObjectInfo::UsingInfo () const
 
31315
 { return _Id == USING_INFO ? (CUsingInfo*)this : (CUsingInfo*)0; }
 
31316
inline CEnumeratorInfo *CObjectInfo::EnumeratorInfo () const
 
31317
 { return _Id == ENUMERATOR_INFO ? (CEnumeratorInfo*)this : (CEnumeratorInfo*)0; }
 
31318
inline CTypedefInfo *CObjectInfo::TypedefInfo () const
 
31319
 { return _Id == TYPEDEF_INFO ? (CTypedefInfo*)this : (CTypedefInfo*)0; }
 
31320
inline CFunctionInfo *CObjectInfo::FunctionInfo () const
 
31321
 { return _Id == FUNCTION_INFO || _Id == FCT_INSTANCE_INFO ? (CFunctionInfo*)this : (CFunctionInfo*)0; }
 
31322
inline CArgumentInfo *CObjectInfo::ArgumentInfo () const
 
31323
 { return _Id == ARGUMENT_INFO ? (CArgumentInfo*)this : (CArgumentInfo*)0; }
 
31324
inline CAttributeInfo *CObjectInfo::AttributeInfo () const
 
31325
 { return _Id == ATTRIBUTE_INFO || _Id == ENUMERATOR_INFO ? (CAttributeInfo*)this : (CAttributeInfo*)0; }
 
31326
inline CNamespaceInfo *CObjectInfo::NamespaceInfo () const
 
31327
 { return _Id == NAMESPACE_INFO || _Id == FILE_INFO ? (CNamespaceInfo*)this : (CNamespaceInfo*)0; }
 
31328
inline CLabelInfo *CObjectInfo::LabelInfo () const
 
31329
 { return _Id == LABEL_INFO ? (CLabelInfo*)this : (CLabelInfo*)0; }
 
31330
inline CFileInfo *CObjectInfo::FileInfo () const
 
31331
 { return _Id == FILE_INFO ? (CFileInfo*)this : (CFileInfo*)0; }
 
31332
inline CStructure *CObjectInfo::Structure () const
 
31333
 { return NamespaceInfo () || ClassInfo () || UnionInfo () || 
 
31334
          FunctionInfo () || TemplateInfo () || LocalScope () ? 
 
31335
          (CStructure*)this : (CStructure*)0; }
 
31336
inline CRecord *CObjectInfo::Record () const
 
31337
 { return ClassInfo () || UnionInfo () ? (CRecord*)this : (CRecord*)0; }
 
31338
inline CLocalScope *CObjectInfo::LocalScope () const
 
31339
 { return _Id == LOCAL_INFO ? (CLocalScope*)this : (CLocalScope*)0; }
 
31340
inline CTemplateParamInfo *CObjectInfo::TemplateParamInfo () const
 
31341
 { return _Id == TEMPLATE_PARAM_INFO ? (CTemplateParamInfo*)this : (CTemplateParamInfo*)0; }
 
31342
inline CTemplateInfo *CObjectInfo::TemplateInfo () const
 
31343
 { return _Id == TEMPLATE_INFO ? (CTemplateInfo*)this : (CTemplateInfo*)0; }
 
31344
inline CScopeInfo *CObjectInfo::ScopeInfo () const
 
31345
 { return /*_Id == SCOPE_INFO ||*/ Structure () ? (CScopeInfo*)this : (CScopeInfo*)0; }
 
31346
inline CObjectInfo *CObjectInfo::ObjectInfo () const
 
31347
 { return (CObjectInfo*)this; }
 
31348
inline CClassInstance *CObjectInfo::ClassInstance () const
 
31349
 { return _Id == CLASS_INSTANCE_INFO ? (CClassInstance*)this : (CClassInstance*)0; }
 
31350
inline CUnionInstance *CObjectInfo::UnionInstance () const
 
31351
 { return _Id == UNION_INSTANCE_INFO ? (CUnionInstance*)this : (CUnionInstance*)0; }
 
31352
inline CFctInstance *CObjectInfo::FctInstance () const
 
31353
 { return _Id == FCT_INSTANCE_INFO ? (CFctInstance*)this : (CFctInstance*)0; }
 
31354
 
 
31355
inline CStructure *CObjectInfo::QualifiedScope () const
 
31356
 { return _QualScope; }
 
31357
 
 
31358
inline void CObjectInfo::AssignedScope (CStructure *s)
 
31359
 { _AssignedScope = s; }
 
31360
inline CStructure *CObjectInfo::AssignedScope () const
 
31361
 { return _AssignedScope; }
 
31362
 
 
31363
 
 
31364
} // namespace Puma
 
31365
 
 
31366
#endif /* __CObjectInfo_h__ */
 
31367
 
 
31368
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
31369
namespace Puma {
 
31370
 
 
31371
 
 
31372
class CLocalScope;
 
31373
class CFunctionInfo;
 
31374
class CNamespaceInfo;
 
31375
class CClassInfo;
 
31376
class CUnionInfo;
 
31377
class CTemplateInfo;
 
31378
 
 
31379
/** \class CScopeInfo CScopeInfo.h Puma/CScopeInfo.h
 
31380
 *  Semantic information about a scope. Several syntactic
 
31381
 *  constructs have its own scope, such as class definitions,
 
31382
 *  functions, and compound statements. */
 
31383
 
 
31384
#line 31385 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
31385
} // closed Puma
 
31386
class CCExprResolve;
 
31387
class CExprResolve;
 
31388
class WinIfExists;
 
31389
class WinImportHandler;
 
31390
class WinMacros;
 
31391
class WinAsm;
 
31392
class WinDeclSpecs;
 
31393
class WinMemberExplSpec;
 
31394
class WinTypeKeywords;
 
31395
class WinFriend;
 
31396
class ExtAC;
 
31397
class ExtACBuilderCoupling;
 
31398
class ExtACSyntaxCoupling;
 
31399
class ExtACTree;
 
31400
class ExtACKeywords;
 
31401
class ExtGnu;
 
31402
class PragmaOnceUnitState;
 
31403
class PragmaOnce;
 
31404
class CMatchSyntax;
 
31405
namespace Puma {
 
31406
 
 
31407
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
31408
class CScopeInfo : public CObjectInfo {
 
31409
#line 31410 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
31410
  friend class ::CCExprResolve;
 
31411
  friend class ::CExprResolve;
 
31412
  friend class ::WinIfExists;
 
31413
  friend class ::WinImportHandler;
 
31414
  friend class ::WinMacros;
 
31415
  friend class ::WinAsm;
 
31416
  friend class ::WinDeclSpecs;
 
31417
  friend class ::WinMemberExplSpec;
 
31418
  friend class ::WinTypeKeywords;
 
31419
  friend class ::WinFriend;
 
31420
  friend class ::ExtAC;
 
31421
  friend class ::ExtACBuilderCoupling;
 
31422
  friend class ::ExtACSyntaxCoupling;
 
31423
  friend class ::ExtACTree;
 
31424
  friend class ::ExtACKeywords;
 
31425
  friend class ::ExtGnu;
 
31426
  friend class ::PragmaOnceUnitState;
 
31427
  friend class ::PragmaOnce;
 
31428
  friend class ::CMatchSyntax;
 
31429
 
 
31430
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
31431
 
 
31432
  Array<CScopeInfo*> _Children; // child scopes
 
31433
  CScopeInfo *_Parent; // parent scope
 
31434
 
 
31435
protected:
 
31436
  /** Constructor.
 
31437
   *  \param id The object type. */
 
31438
  CScopeInfo (ObjectId id);
 
31439
 
 
31440
public:
 
31441
  /** Destructor. */
 
31442
  ~CScopeInfo ();
 
31443
 
 
31444
  /** Get the number of child scopes (nested scopes). */
 
31445
  unsigned Children () const;
 
31446
  /** Get the n-th child scope.
 
31447
   *  \param n The index of the child scope.
 
31448
   *  \return The n-th child scope or NULL. */
 
31449
  CScopeInfo *Child (unsigned) const;
 
31450
  /** Get the parent scope of this scope. The top
 
31451
   *  scope is the file scope. 
 
31452
   *  \return The parent scope, or this scope if no parent. */
 
31453
  CScopeInfo *Parent () const;
 
31454
  /** Check if this is a file (file scope). */
 
31455
  bool isFile () const;
 
31456
  /** Check if this is namespace. */
 
31457
  bool isNamespace () const;
 
31458
  /** Check if this is class or union. */
 
31459
  bool isRecord () const;
 
31460
  /** Check if this is a class. */
 
31461
  bool isClass () const;
 
31462
  /** Check if this is a union. */
 
31463
  bool isUnion () const;
 
31464
  /** Check if this is a function. */
 
31465
  bool isFunction () const;
 
31466
  /** Check if this is a class method. */
 
31467
  bool isMethod () const;
 
31468
  /** Check if this is a class template. */
 
31469
  bool isClassTemplate () const;
 
31470
  /** Check if this is a function template. */
 
31471
  bool isFctTemplate () const;
 
31472
  /** Check if this is a local scope. */
 
31473
  bool isLocalScope () const;
 
31474
  /** Check if this is a local class or union. */
 
31475
  bool isLocalRecord () const;
 
31476
  /** Check if this is a local class. */
 
31477
  bool isLocalClass () const;
 
31478
  /** Check if this is a local union. */
 
31479
  bool isLocalUnion () const;
 
31480
  /** Check if this is the global (file) scope. */
 
31481
  bool GlobalScope () const;
 
31482
  
 
31483
  /** Check if this scope is inside a class or 
 
31484
   *  function template scope. */
 
31485
  bool insideTemplate () const;
 
31486
  /** Check if this scope is inside a class or
 
31487
   *  union scope. */
 
31488
  bool insideRecord () const;
 
31489
  /** Check if this scope is inside a class scope. */
 
31490
  bool insideClass () const;
 
31491
  /** Check if this scope is inside a union scope. */
 
31492
  bool insideUnion () const;
 
31493
  /** Check if this scope is inside a function scope. */
 
31494
  bool insideFunction () const;
 
31495
  /** Check if this scope is inside a class method scope. */
 
31496
  bool insideMethod () const;
 
31497
 
 
31498
  /** Set the parent scope of this scope.
 
31499
   *  \param scope The parent scope. */
 
31500
  void Parent (const CScopeInfo *scope);
 
31501
  /** Add a child scope to this scope.
 
31502
   *  \param scope The child scope. */
 
31503
  void addChild (CScopeInfo *scope);
 
31504
  /** Remove a child scope.
 
31505
   *  \param scope The child scope. */
 
31506
  void removeChild (const CScopeInfo *scope);
 
31507
  
 
31508
  /** Create a new local scope information object. */
 
31509
  CLocalScope *newLocalScope ();
 
31510
  /** Create a new function or function template 
 
31511
   *  instance semantic object. 
 
31512
   *  \param inst \e true if to a function template instance. */
 
31513
  CFunctionInfo *newFunction (bool inst = false);
 
31514
  /** Create a new class or class template 
 
31515
   *  instance semantic object. 
 
31516
   *  \param inst \e true if to a class template instance. */
 
31517
  CClassInfo *newClass (bool inst = false);
 
31518
  /** Create a new union or union template 
 
31519
   *  instance semantic object. 
 
31520
   *  \param inst \e true if to a union template instance. */
 
31521
  CUnionInfo *newUnion (bool inst = false);
 
31522
  /** Create a new namespace semantic object. */
 
31523
  CNamespaceInfo *newNamespace ();
 
31524
  /** Create a new template semantic object. */
 
31525
  CTemplateInfo *newTemplate ();
 
31526
 
 
31527
  /** Delete the given local scope semantic object. 
 
31528
   *  \param scope The local scope. */
 
31529
  void deleteLocalScope (const CLocalScope *scope);
 
31530
  /** Delete the given function semantic object.
 
31531
   *  \param fct The function. */
 
31532
  void deleteFunction (const CFunctionInfo *fct);
 
31533
  /** Delete the given class semantic object.
 
31534
   *  \param c The class. */
 
31535
  void deleteClass (const CClassInfo *c);
 
31536
  /** Delete the given union semantic object.
 
31537
   *  \param u The union. */
 
31538
  void deleteUnion (const CUnionInfo *u);
 
31539
  /** Delete the given namespace semantic object. 
 
31540
   *  \param ns The namespace. */
 
31541
  void deleteNamespace (const CNamespaceInfo *ns);
 
31542
  /** Delete the given template semantic object.
 
31543
   *  \param tpl The template. */
 
31544
  void deleteTemplate (const CTemplateInfo *tpl);
 
31545
public:
 
31546
  typedef AC::TL<Puma::Array< Puma::CScopeInfo * >,AC::TL<Puma::CScopeInfo *,AC::TLE > > __AttrTypes;
 
31547
  const char *__attr_name (unsigned i) const {
 
31548
    static const char *names[] = { "_Children", "_Parent" }; return names[i];
 
31549
  }
 
31550
  const void *__attr (unsigned __i) const {
 
31551
    switch (__i) { case 1: return &_Children; case 2: return &_Parent; default: return 0; }
 
31552
  }
 
31553
#line 156 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CScopeInfo.h"
 
31554
};
 
31555
 
 
31556
 
 
31557
inline CScopeInfo::CScopeInfo (CObjectInfo::ObjectId id) :
 
31558
  CObjectInfo (id),
 
31559
  _Children (20, 20),
 
31560
  _Parent ((CScopeInfo*)this)
 
31561
 {}
 
31562
 
 
31563
inline unsigned CScopeInfo::Children () const
 
31564
 { return _Children.length (); }
 
31565
inline CScopeInfo *CScopeInfo::Child (unsigned n) const
 
31566
 { return _Children.lookup (n); }
 
31567
inline CScopeInfo *CScopeInfo::Parent () const
 
31568
 { return _Parent; }
 
31569
 
 
31570
inline bool CScopeInfo::isLocalScope () const
 
31571
 { return LocalScope (); }
 
31572
inline bool CScopeInfo::isFile () const 
 
31573
 { return FileInfo (); }
 
31574
inline bool CScopeInfo::isNamespace () const 
 
31575
 { return NamespaceInfo (); }
 
31576
inline bool CScopeInfo::isRecord () const 
 
31577
 { return Record (); }
 
31578
inline bool CScopeInfo::isClass () const 
 
31579
 { return ClassInfo (); }
 
31580
inline bool CScopeInfo::isUnion () const 
 
31581
 { return UnionInfo (); }
 
31582
inline bool CScopeInfo::isFunction () const 
 
31583
 { return FunctionInfo (); }
 
31584
inline bool CScopeInfo::GlobalScope () const 
 
31585
 { return FileInfo (); }
 
31586
 
 
31587
inline bool CScopeInfo::insideFunction () const 
 
31588
 { return isFunction () || (Parent () && Parent () != this && 
 
31589
                            Parent ()->insideFunction ()); }
 
31590
inline bool CScopeInfo::insideMethod () const 
 
31591
 { return isMethod () || (Parent () && Parent () != this && 
 
31592
                          Parent ()->insideMethod ()); }
 
31593
inline bool CScopeInfo::insideRecord () const 
 
31594
 { return isRecord () || (Parent () && Parent () != this && 
 
31595
                          Parent ()->insideRecord ()); }
 
31596
inline bool CScopeInfo::insideTemplate () const 
 
31597
 { return isTemplate () || (Parent () && Parent () != this && 
 
31598
                            Parent ()->insideTemplate ()); }
 
31599
inline bool CScopeInfo::insideClass () const 
 
31600
 { return isClass () || (Parent () && Parent () != this && 
 
31601
                         Parent ()->insideClass ()); }
 
31602
inline bool CScopeInfo::insideUnion () const 
 
31603
 { return isUnion () || (Parent () && Parent () != this && 
 
31604
                         Parent ()->insideUnion ()); }
 
31605
 
 
31606
inline bool CScopeInfo::isLocalClass () const 
 
31607
 { return isClass () && insideFunction (); }
 
31608
inline bool CScopeInfo::isLocalUnion () const 
 
31609
 { return isUnion () && insideFunction (); }
 
31610
inline bool CScopeInfo::isLocalRecord () const 
 
31611
 { return isRecord () && insideFunction (); }
 
31612
 
 
31613
 
 
31614
} // namespace Puma
 
31615
 
 
31616
#endif /* __CScopeInfo_h__ */
 
31617
 
 
31618
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
31619
#ifndef __puma
 
31620
 
 
31621
#include <map>
 
31622
#include <set>
 
31623
#include <list>
 
31624
#include <string>
 
31625
#include "Puma/DString.h"
 
31626
using namespace std;
 
31627
 
 
31628
#endif
 
31629
 
 
31630
namespace Puma {
 
31631
 
 
31632
 
 
31633
class CAttributeInfo;
 
31634
class CTemplateParamInfo;
 
31635
class CFunctionInfo;
 
31636
class CClassInfo;
 
31637
class CUnionInfo;
 
31638
class CEnumInfo;
 
31639
class CTypedefInfo;
 
31640
class CNamespaceInfo;
 
31641
class CUsingInfo;
 
31642
class CMemberAliasInfo;
 
31643
 
 
31644
 
 
31645
/** \class CStructure CStructure.h Puma/CStructure.h
 
31646
 *  Base class of all semantic information classes for
 
31647
 *  entities that can contain other entity declarations
 
31648
 *  (like classes, namespaces, functions). */
 
31649
 
 
31650
#line 31651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
31651
} // closed Puma
 
31652
class CCExprResolve;
 
31653
class CExprResolve;
 
31654
class WinIfExists;
 
31655
class WinImportHandler;
 
31656
class WinMacros;
 
31657
class WinAsm;
 
31658
class WinDeclSpecs;
 
31659
class WinMemberExplSpec;
 
31660
class WinTypeKeywords;
 
31661
class WinFriend;
 
31662
class ExtAC;
 
31663
class ExtACBuilderCoupling;
 
31664
class ExtACSyntaxCoupling;
 
31665
class ExtACTree;
 
31666
class ExtACKeywords;
 
31667
class ExtGnu;
 
31668
class PragmaOnceUnitState;
 
31669
class PragmaOnce;
 
31670
class CMatchSyntax;
 
31671
namespace Puma {
 
31672
 
 
31673
#line 58 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
31674
class CStructure : public CScopeInfo {
 
31675
#line 31676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
31676
  friend class ::CCExprResolve;
 
31677
  friend class ::CExprResolve;
 
31678
  friend class ::WinIfExists;
 
31679
  friend class ::WinImportHandler;
 
31680
  friend class ::WinMacros;
 
31681
  friend class ::WinAsm;
 
31682
  friend class ::WinDeclSpecs;
 
31683
  friend class ::WinMemberExplSpec;
 
31684
  friend class ::WinTypeKeywords;
 
31685
  friend class ::WinFriend;
 
31686
  friend class ::ExtAC;
 
31687
  friend class ::ExtACBuilderCoupling;
 
31688
  friend class ::ExtACSyntaxCoupling;
 
31689
  friend class ::ExtACTree;
 
31690
  friend class ::ExtACKeywords;
 
31691
  friend class ::ExtGnu;
 
31692
  friend class ::PragmaOnceUnitState;
 
31693
  friend class ::PragmaOnce;
 
31694
  friend class ::CMatchSyntax;
 
31695
 
 
31696
#line 58 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
31697
 
 
31698
public:
 
31699
#ifndef __puma
 
31700
  /** List type for semantic objects. */
 
31701
  typedef list<CObjectInfo*> ObjectInfoList;
 
31702
  /** Map type for entity name to semantic object mapping. */
 
31703
  typedef map<DString,ObjectInfoList> ObjectsByName;
 
31704
  /** Set type for semantic objects. */
 
31705
  typedef set<CObjectInfo*> ObjectInfoSet;
 
31706
#endif 
 
31707
 
 
31708
private:
 
31709
  CStructure                *_Shared;
 
31710
  Array<CObjectInfo*>        _Objects; // ALL objects (mixed, in the order added to)
 
31711
  Array<CAttributeInfo*>     _Attributes;
 
31712
  Array<CTemplateParamInfo*> _TemplateParams;
 
31713
  Array<CFunctionInfo*>      _Functions;
 
31714
  Array<CObjectInfo*>        _Types;
 
31715
  Array<CUsingInfo*>         _Usings;     
 
31716
  Array<CRecord*>            _Friends;
 
31717
  Array<CNamespaceInfo*>     _Namespaces;     
 
31718
  Array<CMemberAliasInfo*>   _Aliases;     
 
31719
#ifndef __puma
 
31720
  ObjectsByName              _ObjectMap;
 
31721
  ObjectInfoSet              _ObjectSet;
 
31722
#endif
 
31723
 
 
31724
protected:
 
31725
  /** Constructor.
 
31726
   *  \param id The object type. */
 
31727
  CStructure (ObjectId id);
 
31728
 
 
31729
public:
 
31730
  /** Destructor. */
 
31731
  ~CStructure ();
 
31732
 
 
31733
#ifndef __puma
 
31734
  /** Get the entity name to semantic object map. */
 
31735
  ObjectsByName& ObjectInfoMap() { return _Shared->_ObjectMap; }
 
31736
  /** Get the entity name to semantic object map. */
 
31737
  const ObjectInfoSet& ObjectInfos() const { return _Shared->_ObjectSet; }
 
31738
#endif 
 
31739
 
 
31740
  /** Get the number of contained semantic objects. */
 
31741
  unsigned Objects () const;
 
31742
  /** Get the number of contained semantic objects for
 
31743
   *  entities with the given name. 
 
31744
   *  \param name The name of the entity. */
 
31745
  unsigned Objects (const DString& name) const;
 
31746
  /** Get the number of contained semantic objects for
 
31747
   *  type declarations. */
 
31748
  unsigned Types () const;
 
31749
  /** Get the number of contained semantic objects for
 
31750
   *  declarations of types with the given name. 
 
31751
   *  \param name The name of the type. */
 
31752
  unsigned Types (const DString& name) const;
 
31753
  /** Get the number of contained semantic objects for
 
31754
   *  object declarations. */
 
31755
  unsigned Attributes () const;
 
31756
  /** Get the number of contained semantic objects for
 
31757
   *  declarations of objects with the given name. 
 
31758
   *  \param name The name of the object. */
 
31759
  unsigned Attributes (const DString& name) const;
 
31760
  /** Get the number of contained semantic objects for
 
31761
   *  template parameter declarations. */
 
31762
  unsigned TemplateParams () const;
 
31763
  /** Get the number of contained semantic objects for
 
31764
   *  declarations of template parameters with the given name. 
 
31765
   *  \param name The name of the template parameter. */
 
31766
  unsigned TemplateParams (const DString& name) const;
 
31767
  /** Get the number of contained semantic objects for
 
31768
   *  function declarations. */
 
31769
  unsigned Functions () const;
 
31770
  /** Get the number of contained semantic objects for
 
31771
   *  declarations of functions with the given name. 
 
31772
   *  \param name The name of the function. */
 
31773
  unsigned Functions (const DString& name) const;
 
31774
  /** Get the number of contained semantic objects for
 
31775
   *  used members. */
 
31776
  unsigned Usings () const;
 
31777
  /** Get the number of contained semantic objects for
 
31778
   *  used members with the given name. 
 
31779
   *  \param name The name of the member. */
 
31780
  unsigned Usings (const DString& name) const;
 
31781
  /** Get the number of contained semantic objects for
 
31782
   *  namespace declarations. */
 
31783
  unsigned Namespaces () const;
 
31784
  /** Get the number of contained semantic objects for
 
31785
   *  declarations of namespaces with the given name. 
 
31786
   *  \param name The name of the namespace. */
 
31787
  unsigned Namespaces (const DString& name) const;
 
31788
  /** Get the number of contained semantic objects for
 
31789
   *  friend declarations. */
 
31790
  unsigned Friends () const;
 
31791
  /** Get the number of contained semantic objects for
 
31792
   *  declarations of friends with the given name. 
 
31793
   *  \param name The name of the friend. */
 
31794
  unsigned Friends (const DString& name) const;
 
31795
 
 
31796
  /** Get the n-th contained semantic object. 
 
31797
   *  \param n The index of the semantic object. */
 
31798
  CObjectInfo *Object (unsigned n) const;
 
31799
  /** Get the n-th contained semantic object for
 
31800
   *  entities with the given name. 
 
31801
   *  \param name The name of the entity.
 
31802
   *  \param n Optional index of the semantic object (defaults to 0). */
 
31803
  CObjectInfo *Object (const DString& name, unsigned n = 0) const;
 
31804
  /** Get the n-th contained semantic object for a type. 
 
31805
   *  \param n The index of the semantic object. */
 
31806
  CObjectInfo *Type (unsigned n) const;
 
31807
  /** Get the n-th contained semantic object for
 
31808
   *  types with the given name. 
 
31809
   *  \param name The name of the type.
 
31810
   *  \param n Optional index of the semantic object (defaults to 0). */
 
31811
  CObjectInfo *Type (const DString& name, unsigned n = 0) const;
 
31812
  /** Get the n-th contained semantic object for a using-directive.
 
31813
   *  \param n The index of the semantic object. */
 
31814
  CUsingInfo *Using (unsigned n) const;
 
31815
  /** Get the n-th contained semantic object for
 
31816
   *  used members with the given name. 
 
31817
   *  \param name The name of the member.
 
31818
   *  \param n Optional index of the semantic object (defaults to 0). */
 
31819
  CUsingInfo *Using (const DString& name, unsigned n = 0) const;
 
31820
  /** Get the n-th contained semantic object for a namespace. 
 
31821
   *  \param n The index of the semantic object. */
 
31822
  CNamespaceInfo *Namespace (unsigned n) const;
 
31823
  /** Get the n-th contained semantic object for
 
31824
   *  namespaces with the given name. 
 
31825
   *  \param name The name of the namespace.
 
31826
   *  \param n Optional index of the semantic object (defaults to 0). */
 
31827
  CNamespaceInfo *Namespace (const DString& name, unsigned n = 0) const;
 
31828
  /** Get the n-th contained semantic object for a friend. 
 
31829
   *  \param n The index of the semantic object. */
 
31830
  CRecord *Friend (unsigned n) const;
 
31831
  /** Get the n-th contained semantic object for
 
31832
   *  friends with the given name. 
 
31833
   *  \param name The name of the friend.
 
31834
   *  \param n Optional index of the semantic object (defaults to 0). */
 
31835
  CRecord *Friend (const DString& name, unsigned n = 0) const;
 
31836
  /** Get the n-th contained semantic object for an object. 
 
31837
   *  \param n The index of the semantic object. */
 
31838
  CAttributeInfo *Attribute (unsigned n) const;
 
31839
  /** Get the n-th contained semantic object for
 
31840
   *  objects with the given name. 
 
31841
   *  \param name The name of the object.
 
31842
   *  \param n Optional index of the semantic object (defaults to 0). */
 
31843
  CAttributeInfo *Attribute (const DString& name, unsigned n = 0) const;
 
31844
  /** Get the n-th contained semantic object for a template parameter. 
 
31845
   *  \param n The index of the semantic object. */
 
31846
  CTemplateParamInfo *TemplateParam (unsigned n) const;
 
31847
  /** Get the n-th contained semantic object for
 
31848
   *  template parameters with the given name. 
 
31849
   *  \param name The name of the template parameter.
 
31850
   *  \param n Optional index of the semantic object (defaults to 0). */
 
31851
  CTemplateParamInfo *TemplateParam (const DString& name, unsigned n = 0) const;
 
31852
  /** Get the n-th contained semantic object for a function. 
 
31853
   *  \param n The index of the semantic object. */
 
31854
  CFunctionInfo *Function (unsigned n) const;
 
31855
  /** Get the n-th contained semantic object for
 
31856
   *  functions with the given name. 
 
31857
   *  \param name The name of the function.
 
31858
   *  \param n Optional index of the semantic object (defaults to 0). */
 
31859
  CFunctionInfo *Function (const DString& name, unsigned n = 0) const;
 
31860
  /** Get the contained semantic object for functions with the 
 
31861
   *  given name and type. 
 
31862
   *  \param name The name of the function.
 
31863
   *  \param type The type of the function. */
 
31864
  CFunctionInfo *Function (const DString& name, CTypeInfo *type) const;
 
31865
 
 
31866
  /** Check if an alias exists for the given entity in this scope.
 
31867
   *  \param info The semantic object of the entity. */
 
31868
  bool isMemberAlias (const CObjectInfo *info) const;
 
31869
  /** Get the member alias information for the aliased entity.
 
31870
   *  \param info The semantic object of the entity. */
 
31871
  CMemberAliasInfo *MemberAlias (const CObjectInfo *info) const;
 
31872
 
 
31873
  /** Set a common data object for the linked semantic objects.
 
31874
   *  \param share The common data object. */
 
31875
  void setShared (CStructure *share);
 
31876
  
 
31877
  /** Add a semantic object. 
 
31878
   *  \param info The semantic object. */
 
31879
  void addObject (CObjectInfo *info);
 
31880
  /** Add a semantic object for an object.
 
31881
   *  \param info The semantic object. */
 
31882
  void addAttribute (CAttributeInfo *info);
 
31883
  /** Add a semantic object for a template parameter.
 
31884
   *  \param info The semantic object. */
 
31885
  void addTemplateParam (CTemplateParamInfo *info);
 
31886
  /** Add a semantic object for a function.
 
31887
   *  \param info The semantic object. */
 
31888
  void addFunction (CFunctionInfo *info);
 
31889
  /** Add a semantic object for a type.
 
31890
   *  \param info The semantic object. */
 
31891
  void addType (CObjectInfo *info);
 
31892
  /** Add a semantic object for a using-directive.
 
31893
   *  \param info The semantic object. */
 
31894
  void addUsing (CUsingInfo *info);
 
31895
  /** Add a semantic object for a namespace.
 
31896
   *  \param info The semantic object. */
 
31897
  void addNamespace (CNamespaceInfo *info);
 
31898
  /** Add a semantic object for a friend.
 
31899
   *  \param info The semantic object. */
 
31900
  void addFriend (CRecord *info);
 
31901
  
 
31902
  /** Remove the semantic object.
 
31903
   *  \param info The semantic object. */
 
31904
  void removeObject (const CObjectInfo *info);
 
31905
  /** Remove the semantic object for an object.
 
31906
   *  \param info The semantic object. */
 
31907
  void removeAttribute (const CAttributeInfo *info);
 
31908
  /** Remove the semantic object for a template parameter.
 
31909
   *  \param info The semantic object. */
 
31910
  void removeTemplateParam (const CTemplateParamInfo *info);
 
31911
  /** Remove the semantic object for a function.
 
31912
   *  \param info The semantic object. */
 
31913
  void removeFunction (const CFunctionInfo *info);
 
31914
  /** Remove the semantic object for a type.
 
31915
   *  \param info The semantic object. */
 
31916
  void removeType (const CObjectInfo *info);
 
31917
  /** Remove the semantic object for a using-directive.
 
31918
   *  \param info The semantic object. */
 
31919
  void removeUsing (const CUsingInfo *info);
 
31920
  /** Remove the semantic object for a namespace.
 
31921
   *  \param info The semantic object. */
 
31922
  void removeNamespace (const CNamespaceInfo *info);
 
31923
  /** Remove the semantic object for a friend.
 
31924
   *  \param info The semantic object. */
 
31925
  void removeFriend (const CRecord *info);
 
31926
  /** Remove the semantic object for a member alias.
 
31927
   *  \param info The semantic object. */
 
31928
  void removeMemberAlias (const CMemberAliasInfo *info);
 
31929
 
 
31930
  /** Unregister this semantic object at all contained
 
31931
   *  semantic objects. */
 
31932
  void removeRegisterEntry ();
 
31933
  
 
31934
  /** Add a semantic object to the name map. 
 
31935
   *  \warning For internal use only!
 
31936
   *  \param info The semantic object. */
 
31937
  void addObjectName(CObjectInfo* info);
 
31938
  /** Remove the given semantic object for the entity
 
31939
   *  with the given name from the name map. 
 
31940
   *  \warning For internal use only!
 
31941
   *  \param name The name of the entity. 
 
31942
   *  \param info The semantic object. */
 
31943
  void removeObjectName (const DString& name, CObjectInfo* info);
 
31944
 
 
31945
  /** Create a new semantic object for an object declaration. */
 
31946
  CAttributeInfo *newAttribute ();
 
31947
  /** Create a new semantic object for an enumeration. */
 
31948
  CEnumInfo *newEnum ();
 
31949
  /** Create a new semantic object for a using-directive. */
 
31950
  CUsingInfo *newUsing ();
 
31951
  /** Create a new semantic object for a typedef. */
 
31952
  CTypedefInfo *newTypedef ();
 
31953
  /** Create a new semantic object for a member alias. 
 
31954
   *  \param member The aliased member. */
 
31955
  CMemberAliasInfo *newMemberAlias (CObjectInfo *member);
 
31956
  
 
31957
  /** Remove and destroy the given semantic object for an object. 
 
31958
   *  \param info The semantic object. */
 
31959
  void deleteAttribute (const CAttributeInfo *info); 
 
31960
  /** Remove and destroy the given semantic object for an enumeration. 
 
31961
   *  \param info The semantic object. */
 
31962
  void deleteEnum (const CEnumInfo *info);
 
31963
  /** Remove and destroy the given semantic object for a using-directive. 
 
31964
   *  \param info The semantic object. */
 
31965
  void deleteUsing (const CUsingInfo *info);
 
31966
  /** Remove and destroy the given semantic object for a typedef. 
 
31967
   *  \param info The semantic object. */
 
31968
  void deleteTypedef (const CTypedefInfo *info);
 
31969
  /** Remove and destroy the given semantic object for a member alias. 
 
31970
   *  \param info The semantic object. */
 
31971
  void deleteMemberAlias (const CMemberAliasInfo *info);
 
31972
public:
 
31973
  typedef AC::TL<Puma::CStructure *,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CAttributeInfo * >,AC::TL<Puma::Array< Puma::CTemplateParamInfo * >,AC::TL<Puma::Array< Puma::CFunctionInfo * >,AC::TL<Puma::Array< Puma::CObjectInfo * >,AC::TL<Puma::Array< Puma::CUsingInfo * >,AC::TL<Puma::Array< Puma::CRecord * >,AC::TL<Puma::Array< Puma::CNamespaceInfo * >,AC::TL<Puma::Array< Puma::CMemberAliasInfo * >,AC::TLE > > > > > > > > > > __AttrTypes;
 
31974
  const char *__attr_name (unsigned i) const {
 
31975
    static const char *names[] = { "_Shared", "_Objects", "_Attributes", "_TemplateParams", "_Functions", "_Types", "_Usings", "_Friends", "_Namespaces", "_Aliases" }; return names[i];
 
31976
  }
 
31977
  const void *__attr (unsigned __i) const {
 
31978
    switch (__i) { case 0: return &_Shared; case 2: return &_Objects; case 4: return &_Attributes; case 6: return &_TemplateParams; case 8: return &_Functions; case 10: return &_Types; case 12: return &_Usings; case 14: return &_Friends; case 16: return &_Namespaces; case 18: return &_Aliases; default: return 0; }
 
31979
  }
 
31980
#line 333 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CStructure.h"
 
31981
};
 
31982
 
 
31983
#define INIT_SIZE 20
 
31984
#define INCR_SIZE 20
 
31985
 
 
31986
inline CStructure::CStructure (CObjectInfo::ObjectId id) :
 
31987
  CScopeInfo (id),
 
31988
  _Shared (this),
 
31989
  _Objects (INIT_SIZE, INCR_SIZE),
 
31990
  _Attributes (INIT_SIZE, INCR_SIZE),
 
31991
  _TemplateParams (INIT_SIZE, INCR_SIZE),
 
31992
  _Functions (INIT_SIZE, INCR_SIZE),
 
31993
  _Types (INIT_SIZE, INCR_SIZE),
 
31994
  _Usings (INIT_SIZE, INCR_SIZE),
 
31995
  _Friends (INIT_SIZE, INCR_SIZE),
 
31996
  _Namespaces (INIT_SIZE, INCR_SIZE),
 
31997
  _Aliases (INIT_SIZE, INCR_SIZE)
 
31998
 {}
 
31999
 
 
32000
inline unsigned CStructure::Objects () const
 
32001
 { return _Objects.length (); }
 
32002
inline unsigned CStructure::Types () const
 
32003
 { return _Types.length (); }
 
32004
inline unsigned CStructure::Attributes () const
 
32005
 { return _Attributes.length (); }
 
32006
inline unsigned CStructure::TemplateParams () const
 
32007
 { return _TemplateParams.length (); }
 
32008
inline unsigned CStructure::Functions () const
 
32009
 { return _Functions.length (); }
 
32010
inline unsigned CStructure::Usings () const
 
32011
 { return _Usings.length (); }
 
32012
inline unsigned CStructure::Namespaces () const
 
32013
 { return _Namespaces.length (); }
 
32014
inline unsigned CStructure::Friends () const
 
32015
 { return _Friends.length (); }
 
32016
inline CObjectInfo *CStructure::Object (unsigned n) const
 
32017
 { return _Objects.lookup (n); }
 
32018
inline CObjectInfo *CStructure::Type (unsigned n) const
 
32019
 { return _Types.lookup (n); }
 
32020
inline CAttributeInfo *CStructure::Attribute (unsigned n) const
 
32021
 { return _Attributes.lookup (n); }
 
32022
inline CTemplateParamInfo *CStructure::TemplateParam (unsigned n) const
 
32023
 { return _TemplateParams.lookup (n); }
 
32024
inline CFunctionInfo *CStructure::Function (unsigned n) const
 
32025
 { return _Functions.lookup (n); }
 
32026
inline CUsingInfo *CStructure::Using (unsigned n) const
 
32027
 { return _Usings.lookup (n); }
 
32028
inline CNamespaceInfo *CStructure::Namespace (unsigned n) const
 
32029
 { return _Namespaces.lookup (n); }
 
32030
inline CRecord *CStructure::Friend (unsigned n) const
 
32031
 { return _Friends.lookup (n); }
 
32032
 
 
32033
inline bool CStructure::isMemberAlias (const CObjectInfo *info) const
 
32034
 { return (MemberAlias (info)); }
 
32035
 
 
32036
 
 
32037
} // namespace Puma
 
32038
 
 
32039
#endif /* __CStructure_h__ */
 
32040
 
 
32041
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
32042
 
 
32043
#line 32044 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32044
 
 
32045
#ifndef __ac_fwd_ExtGnu__
 
32046
#define __ac_fwd_ExtGnu__
 
32047
class ExtGnu;
 
32048
namespace AC {
 
32049
  template <class JoinPoint>
 
32050
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
32051
  template <class JoinPoint>
 
32052
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
32053
  template <class JoinPoint>
 
32054
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_around (JoinPoint *tjp);
 
32055
  template <class JoinPoint>
 
32056
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_after (JoinPoint *tjp);
 
32057
  template <class JoinPoint>
 
32058
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
32059
  template <class JoinPoint>
 
32060
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
32061
  template <class JoinPoint>
 
32062
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
32063
  template <class JoinPoint>
 
32064
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
32065
  template <class JoinPoint>
 
32066
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_around (JoinPoint *tjp);
 
32067
  template <class JoinPoint>
 
32068
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
32069
  template <class JoinPoint>
 
32070
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
32071
  template <class JoinPoint>
 
32072
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_after (JoinPoint *tjp);
 
32073
  template <class JoinPoint>
 
32074
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
32075
  template <class JoinPoint>
 
32076
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_before (JoinPoint *tjp);
 
32077
  template <class JoinPoint>
 
32078
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
32079
  template <class JoinPoint>
 
32080
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
32081
  template <class JoinPoint>
 
32082
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
32083
  template <class JoinPoint>
 
32084
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
32085
  template <class JoinPoint>
 
32086
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_after (JoinPoint *tjp);
 
32087
  template <class JoinPoint>
 
32088
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_after (JoinPoint *tjp);
 
32089
  template <class JoinPoint>
 
32090
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_before (JoinPoint *tjp);
 
32091
  template <class JoinPoint>
 
32092
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a21_around (JoinPoint *tjp);
 
32093
  template <class JoinPoint>
 
32094
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a22_after (JoinPoint *tjp);
 
32095
  template <class JoinPoint>
 
32096
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a23_before (JoinPoint *tjp);
 
32097
  template <class JoinPoint>
 
32098
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a24_around (JoinPoint *tjp);
 
32099
  template <class JoinPoint>
 
32100
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a25_after (JoinPoint *tjp);
 
32101
}
 
32102
#endif
 
32103
 
 
32104
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
32105
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
32106
#endif
 
32107
 
 
32108
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
32109
// This file is part of PUMA.
 
32110
// Copyright (C) 1999-2003  The PUMA developer team.
 
32111
//                                                                
 
32112
// This program is free software;  you can redistribute it and/or 
 
32113
// modify it under the terms of the GNU General Public License as 
 
32114
// published by the Free Software Foundation; either version 2 of 
 
32115
// the License, or (at your option) any later version.            
 
32116
//                                                                
 
32117
// This program is distributed in the hope that it will be useful,
 
32118
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
32119
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
32120
// GNU General Public License for more details.                   
 
32121
//                                                                
 
32122
// You should have received a copy of the GNU General Public      
 
32123
// License along with this program; if not, write to the Free     
 
32124
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
32125
// MA  02111-1307  USA                                            
 
32126
 
 
32127
#ifndef __CSemVisitor_h__
 
32128
#define __CSemVisitor_h__
 
32129
 
 
32130
 
 
32131
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CVisitor.h"
 
32132
// This file is part of PUMA.
 
32133
// Copyright (C) 1999-2003  The PUMA developer team.
 
32134
//                                                                
 
32135
// This program is free software;  you can redistribute it and/or 
 
32136
// modify it under the terms of the GNU General Public License as 
 
32137
// published by the Free Software Foundation; either version 2 of 
 
32138
// the License, or (at your option) any later version.            
 
32139
//                                                                
 
32140
// This program is distributed in the hope that it will be useful,
 
32141
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
32142
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
32143
// GNU General Public License for more details.                   
 
32144
//                                                                
 
32145
// You should have received a copy of the GNU General Public      
 
32146
// License along with this program; if not, write to the Free     
 
32147
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
32148
// MA  02111-1307  USA                                            
 
32149
 
 
32150
#ifndef __CVisitor_h__
 
32151
#define __CVisitor_h__
 
32152
 
 
32153
/** \file
 
32154
 *  CTree based tree visitor. */
 
32155
 
 
32156
namespace Puma {
 
32157
 
 
32158
 
 
32159
class CTree;
 
32160
 
 
32161
/** \class CVisitor CVisitor.h Puma/CVisitor.h
 
32162
 *  Tree visitor implementation for CTree based syntax trees. To be derived 
 
32163
 *  for visiting concrete syntax trees.
 
32164
 *  
 
32165
 *  This class performs depth-first tree-traversal based on CTree tree 
 
32166
 *  structures. The traversal is started by calling CVisitor::visit()
 
32167
 *  with the root node of the tree to traverse as its argument. 
 
32168
 *  For every node of the tree CVisitor::pre_visit() is called 
 
32169
 *  before its child nodes are visited, and CVisitor::post_visit()
 
32170
 *  is called after its child nodes are visited. To perform actions 
 
32171
 *  on the visited nodes, CVisitor::pre_visit() and CVisitor::post_visit() 
 
32172
 *  have to be overloaded. */
 
32173
 
 
32174
#line 32175 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32175
} // closed Puma
 
32176
class CCExprResolve;
 
32177
class CExprResolve;
 
32178
class WinIfExists;
 
32179
class WinImportHandler;
 
32180
class WinMacros;
 
32181
class WinAsm;
 
32182
class WinDeclSpecs;
 
32183
class WinMemberExplSpec;
 
32184
class WinTypeKeywords;
 
32185
class WinFriend;
 
32186
class ExtAC;
 
32187
class ExtACBuilderCoupling;
 
32188
class ExtACSyntaxCoupling;
 
32189
class ExtACTree;
 
32190
class ExtACKeywords;
 
32191
class ExtGnu;
 
32192
class PragmaOnceUnitState;
 
32193
class PragmaOnce;
 
32194
class CMatchSyntax;
 
32195
namespace Puma {
 
32196
 
 
32197
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CVisitor.h"
 
32198
class CVisitor {
 
32199
#line 32200 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32200
  friend class ::CCExprResolve;
 
32201
  friend class ::CExprResolve;
 
32202
  friend class ::WinIfExists;
 
32203
  friend class ::WinImportHandler;
 
32204
  friend class ::WinMacros;
 
32205
  friend class ::WinAsm;
 
32206
  friend class ::WinDeclSpecs;
 
32207
  friend class ::WinMemberExplSpec;
 
32208
  friend class ::WinTypeKeywords;
 
32209
  friend class ::WinFriend;
 
32210
  friend class ::ExtAC;
 
32211
  friend class ::ExtACBuilderCoupling;
 
32212
  friend class ::ExtACSyntaxCoupling;
 
32213
  friend class ::ExtACTree;
 
32214
  friend class ::ExtACKeywords;
 
32215
  friend class ::ExtGnu;
 
32216
  friend class ::PragmaOnceUnitState;
 
32217
  friend class ::PragmaOnce;
 
32218
  friend class ::CMatchSyntax;
 
32219
 
 
32220
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CVisitor.h"
 
32221
 
 
32222
  bool _aborted;
 
32223
  bool _pruned;
 
32224
 
 
32225
  void visit_sons (CTree *node);
 
32226
 
 
32227
public:
 
32228
  /** Constructor. */
 
32229
  CVisitor () : _aborted (false), _pruned (false) {}
 
32230
  /** Destructor. */
 
32231
  virtual ~CVisitor () {}
 
32232
 
 
32233
  /** Set the aborted state.
 
32234
   *  \param v True for aborted, false for not aborted. */
 
32235
  void abort (bool v = true) { _aborted = v; }
 
32236
  /** Set the pruned state (don't visit the sub-tree).
 
32237
   *  \param v True for pruned, false for not pruned. */
 
32238
  void prune (bool v = true) { _pruned = v; }
 
32239
  /** Check if the node visiting is aborted. */
 
32240
  bool aborted () const { return _aborted; }
 
32241
  /** Check if the visiting the sub-tree is aborted. */
 
32242
  bool pruned () const { return _pruned; }
 
32243
  
 
32244
  /** Visit the given syntax tree node.
 
32245
   *  \param node The node to visit. */
 
32246
  void visit (CTree *node);
 
32247
 
 
32248
  /** Apply actions before the given node is visited.
 
32249
   *  To be implemented by derived visitors.
 
32250
   *  \param node The node to visit. */
 
32251
  virtual void pre_visit (CTree *node);
 
32252
  /** Apply actions after the given node is visited.
 
32253
   *  To be implemented by derived visitors.
 
32254
   *  \param node The node to visit. */
 
32255
  virtual void post_visit (CTree *node);
 
32256
public:
 
32257
  typedef AC::TL<bool,AC::TL<bool,AC::TLE > > __AttrTypes;
 
32258
  const char *__attr_name (unsigned i) const {
 
32259
    static const char *names[] = { "_aborted", "_pruned" }; return names[i];
 
32260
  }
 
32261
  const void *__attr (unsigned __i) const {
 
32262
    switch (__i) { case 0: return &_aborted; case 1: return &_pruned; default: return 0; }
 
32263
  }
 
32264
#line 77 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CVisitor.h"
 
32265
};
 
32266
 
 
32267
 
 
32268
} // namespace Puma
 
32269
 
 
32270
#endif /* __CVisitor_h__ */
 
32271
 
 
32272
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/Limits.h"
 
32273
/* This file was generated by the PUMA library, version 1.1. */
 
32274
 
 
32275
// This file is part of PUMA.
 
32276
// Copyright (C) 1999-2003  The PUMA developer team.
 
32277
//                                                                
 
32278
// This program is free software;  you can redistribute it and/or 
 
32279
// modify it under the terms of the GNU General Public License as 
 
32280
// published by the Free Software Foundation; either version 2 of 
 
32281
// the License, or (at your option) any later version.            
 
32282
//                                                                
 
32283
// This program is distributed in the hope that it will be useful,
 
32284
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
32285
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
32286
// GNU General Public License for more details.                   
 
32287
//                                                                
 
32288
// You should have received a copy of the GNU General Public      
 
32289
// License along with this program; if not, write to the Free     
 
32290
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
32291
// MA  02111-1307  USA                                            
 
32292
 
 
32293
#ifndef __Limits_h__
 
32294
#define __Limits_h__
 
32295
 
 
32296
#include <limits.h>
 
32297
 
 
32298
namespace Puma {
 
32299
 
 
32300
 
 
32301
// type `long long' support
 
32302
 
 
32303
#if defined(__GNUC__) || defined(_MSC_VER)
 
32304
typedef long long LONG_LONG;
 
32305
typedef unsigned long long U_LONG_LONG;
 
32306
#else /* __GNUC__ */
 
32307
typedef long LONG_LONG;
 
32308
typedef unsigned long U_LONG_LONG;
 
32309
#endif /* __GNUC__ */
 
32310
 
 
32311
#ifndef LLONG_MAX
 
32312
#  if defined(__GNUC__) || defined(_MSC_VER)
 
32313
#    define LLONG_MAX        9223372036854775807LL
 
32314
#    define LLONG_MIN        (-LLONG_MAX - 1LL)
 
32315
#    define ULLONG_MAX        18446744073709551615ULL
 
32316
#  else /* __GNUC__ */
 
32317
#    define LLONG_MAX        LONG_MAX
 
32318
#    define LLONG_MIN        LONG_MIN
 
32319
#    define ULLONG_MAX       ULONG_MAX
 
32320
#  endif /* __GNUC__ */
 
32321
#endif /* LLONG_MAX */
 
32322
 
 
32323
// type size (in bits)
 
32324
 
 
32325
#define BOOL_SIZE             8
 
32326
#define CHAR_SIZE             8
 
32327
#define SCHAR_SIZE            8
 
32328
#define UCHAR_SIZE            8
 
32329
#define SHORT_SIZE            16
 
32330
#define USHORT_SIZE           16
 
32331
#define WCHAR_T_SIZE          32
 
32332
#define INT_SIZE              32
 
32333
#define UINT_SIZE             32
 
32334
#define LONG_SIZE             32
 
32335
#define ULONG_SIZE            32
 
32336
#define LLONG_SIZE            64
 
32337
#define ULLONG_SIZE           64
 
32338
 
 
32339
#define FLOAT_SIZE            32
 
32340
#define DOUBLE_SIZE           64
 
32341
#define LDOUBLE_SIZE          96
 
32342
 
 
32343
#define PTR_SIZE              32
 
32344
#define MEMB_PTR_SIZE         64
 
32345
 
 
32346
#define ENUM_SIZE             32
 
32347
 
 
32348
 
 
32349
} // namespace Puma
 
32350
 
 
32351
#endif /* __Limits_h__ */
 
32352
 
 
32353
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32354
 
 
32355
#line 32356 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32356
 
 
32357
#ifndef __ac_fwd_ExtACTree__
 
32358
#define __ac_fwd_ExtACTree__
 
32359
class ExtACTree;
 
32360
namespace AC {
 
32361
  template <class JoinPoint>
 
32362
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp);
 
32363
  template <class JoinPoint>
 
32364
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp);
 
32365
}
 
32366
#endif
 
32367
 
 
32368
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
32369
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
32370
#endif
 
32371
 
 
32372
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32373
// This file is part of PUMA.
 
32374
// Copyright (C) 1999-2003  The PUMA developer team.
 
32375
//                                                                
 
32376
// This program is free software;  you can redistribute it and/or 
 
32377
// modify it under the terms of the GNU General Public License as 
 
32378
// published by the Free Software Foundation; either version 2 of 
 
32379
// the License, or (at your option) any later version.            
 
32380
//                                                                
 
32381
// This program is distributed in the hope that it will be useful,
 
32382
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
32383
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
32384
// GNU General Public License for more details.                   
 
32385
//                                                                
 
32386
// You should have received a copy of the GNU General Public      
 
32387
// License along with this program; if not, write to the Free     
 
32388
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
32389
// MA  02111-1307  USA                                            
 
32390
 
 
32391
#ifndef __CTree_h__
 
32392
#define __CTree_h__
 
32393
 
 
32394
/** \file 
 
32395
 *  C/C++ syntax tree classes. */
 
32396
 
 
32397
namespace Puma {
 
32398
 
 
32399
 
 
32400
// Syntax tree node hierarchy:
 
32401
class CTree;
 
32402
class   CT_Statement;          
 
32403
class     CT_LabelStmt;
 
32404
class     CT_IfStmt;
 
32405
class     CT_IfElseStmt;
 
32406
class     CT_SwitchStmt;
 
32407
class     CT_BreakStmt;
 
32408
class     CT_ExprStmt;
 
32409
class     CT_WhileStmt;
 
32410
class     CT_DoStmt;
 
32411
class     CT_ForStmt;
 
32412
class     CT_ContinueStmt;
 
32413
class     CT_ReturnStmt;
 
32414
class     CT_GotoStmt;
 
32415
class     CT_DeclStmt;
 
32416
class     CT_CaseStmt;
 
32417
class     CT_DefaultStmt;
 
32418
class     CT_TryStmt;
 
32419
class   CT_Expression;
 
32420
class     CT_Call;
 
32421
class       CT_CallExpr;
 
32422
class       CT_ImplicitCall;
 
32423
class     CT_ThrowExpr;
 
32424
class     CT_NewExpr;
 
32425
class     CT_DeleteExpr;
 
32426
class     CT_ConstructExpr;
 
32427
class     CT_Integer;
 
32428
class     CT_Character;
 
32429
class       CT_WideCharacter;
 
32430
class     CT_Float;
 
32431
class     CT_Bool;
 
32432
class     CT_BracedExpr;
 
32433
class     CT_BinaryExpr;
 
32434
class       CT_MembPtrExpr;
 
32435
class         CT_MembRefExpr;
 
32436
class     CT_UnaryExpr;
 
32437
class       CT_PostfixExpr;
 
32438
class       CT_AddrExpr;
 
32439
class       CT_DerefExpr;
 
32440
class     CT_IfThenExpr;
 
32441
class     CT_CmpdLiteral;
 
32442
class     CT_IndexExpr;
 
32443
class     CT_CastExpr;
 
32444
class     CT_StaticCast;
 
32445
class       CT_ConstCast;
 
32446
class       CT_ReintCast;
 
32447
class       CT_DynamicCast;
 
32448
class     CT_TypeidExpr;
 
32449
class     CT_SizeofExpr;
 
32450
class     CT_AlignofExpr;
 
32451
class     CT_TypeTraitExpr;
 
32452
class     CT_OffsetofExpr;
 
32453
class     CT_MembDesignator;
 
32454
class     CT_IndexDesignator;
 
32455
class     CT_ImplicitCast;
 
32456
class     CT_MembInit;
 
32457
class   CT_DeclSpec;
 
32458
class     CT_PrimDeclSpec;
 
32459
class     CT_NamedType;
 
32460
class     CT_ClassSpec;
 
32461
class       CT_UnionSpec;
 
32462
class       CT_EnumSpec;
 
32463
class     CT_ExceptionSpec;
 
32464
class   CT_Declarator;
 
32465
class     CT_InitDeclarator;
 
32466
class     CT_BracedDeclarator;
 
32467
class     CT_ArrayDeclarator;
 
32468
class     CT_FctDeclarator;
 
32469
class     CT_RefDeclarator;
 
32470
class     CT_PtrDeclarator;
 
32471
class     CT_MembPtrDeclarator;
 
32472
class     CT_BitFieldDeclarator;
 
32473
class   CT_Decl;
 
32474
class     CT_ObjDecl;
 
32475
class     CT_ArgDecl;
 
32476
class     CT_AccessDecl;
 
32477
class       CT_UsingDecl;
 
32478
class     CT_FctDef;
 
32479
class     CT_AsmDef;
 
32480
class     CT_EnumDef;
 
32481
class     CT_ClassDef;
 
32482
class       CT_UnionDef;
 
32483
class     CT_Enumerator;
 
32484
class     CT_LinkageSpec;
 
32485
class     CT_Handler;
 
32486
class     CT_TemplateDecl;
 
32487
class     CT_TemplateParamDecl;
 
32488
class       CT_TypeParamDecl;
 
32489
class       CT_NonTypeParamDecl;
 
32490
class     CT_NamespaceDef;
 
32491
class     CT_NamespaceAliasDef;
 
32492
class     CT_UsingDirective;
 
32493
class     CT_Condition;
 
32494
class   CT_List;
 
32495
class     CT_CmpdStmt;
 
32496
class     CT_DeclSpecSeq;
 
32497
class     CT_HandlerSeq;
 
32498
class     CT_DesignatorSeq;
 
32499
class     CT_DeclList;
 
32500
class       CT_Program;
 
32501
class       CT_ArgDeclList;
 
32502
class         CT_ArgNameList;
 
32503
class       CT_ArgDeclSeq;
 
32504
class       CT_MembList;
 
32505
class     CT_ExprList;
 
32506
class     CT_DeclaratorList;
 
32507
class     CT_BaseSpecList;
 
32508
class     CT_MembInitList;
 
32509
class     CT_SimpleName;
 
32510
class       CT_SpecialName;
 
32511
class         CT_PrivateName;
 
32512
class         CT_OperatorName;
 
32513
class         CT_DestructorName;
 
32514
class         CT_ConversionName;
 
32515
class         CT_TemplateName;
 
32516
class       CT_QualName;
 
32517
class         CT_RootQualName;
 
32518
class     CT_String;
 
32519
class       CT_WideString;
 
32520
class     CT_TemplateParamList;
 
32521
class     CT_TemplateArgList;
 
32522
class   CT_Token;
 
32523
class   CT_Error;
 
32524
class   CT_BaseSpec;
 
32525
class   CT_AccessSpec;
 
32526
class   CT_ArrayDelimiter;
 
32527
class   CT_Any;
 
32528
class   CT_AnyList;
 
32529
class   CT_AnyExtension;
 
32530
class   CT_AnyCondition;
 
32531
 
 
32532
 
 
32533
} // namespace Puma
 
32534
 
 
32535
#include "Puma/ErrorSeverity.h"
 
32536
#include "Puma/CSemObject.h"
 
32537
#include "Puma/CSemScope.h"
 
32538
#include "Puma/CSemValue.h"
 
32539
#include "Puma/CExprValue.h"
 
32540
#include "Puma/CStrLiteral.h"
 
32541
#include "Puma/CTypeInfo.h"
 
32542
#include "Puma/Printable.h"
 
32543
#include "Puma/CTokens.h"
 
32544
#include "Puma/Token.h"
 
32545
 
 
32546
#include <iostream>
 
32547
#include <map>
 
32548
#include <string.h>
 
32549
using namespace std;
 
32550
 
 
32551
namespace Puma {
 
32552
 
 
32553
 
 
32554
class ErrorStream;
 
32555
class CObjectInfo;
 
32556
class CStructure;
 
32557
 
 
32558
/*****************************************************************************/
 
32559
/*                                                                           */
 
32560
/*                    S y n t a x  t r e e  n o d e s                        */
 
32561
/*                                                                           */
 
32562
/*****************************************************************************/
 
32563
 
 
32564
/** \class CTree CTree.h Puma/CTree.h
 
32565
 *  Base class for all C/C++ syntax tree classes. 
 
32566
 *
 
32567
 *  The syntax tree is the result of the syntactic analysis of the input source 
 
32568
 *  code representing its syntactic structure according to the accepted grammar
 
32569
 *  (see class Syntax). 
 
32570
 *
 
32571
 *  Objects of this class and classes derived from this class are created by 
 
32572
 *  the tree builder component of %Puma during the parse process. A syntax tree 
 
32573
 *  shall be destroyed using the tree builder that has created it by calling its 
 
32574
 *  method Builder::destroy(CTree*) with the root node of the syntax tree as its 
 
32575
 *  argument.
 
32576
 *  
 
32577
 *  The navigation in the syntax tree is done using the methods CTree::Parent(), 
 
32578
 *  CTree::Sons(), and CTree::Son(int) const. In a syntax tree "sons" are 
 
32579
 *  understood as the syntactic child nodes of a syntax tree node, whereas 
 
32580
 *  "daughters" are understood are their semantic child nodes. 
 
32581
 *
 
32582
 *  Another way to traverse a syntax tree is to implement an own tree visitor 
 
32583
 *  based on class Puma::CVisitor. This is recommended especially for larger 
 
32584
 *  syntax trees.
 
32585
 *
 
32586
 *  A syntax tree node can be identified by comparing its node name with the node 
 
32587
 *  identifier of the expected syntax tree node:
 
32588
 *  \code if (node->NodeName() == Puma::CT_BinaryExpr::NodeId()) ... \endcode
 
32589
 *  
 
32590
 *  Based on the syntax tree further semantic analyses can be performed. Semantic 
 
32591
 *  information, like scope, value, type, and object information, is linked into 
 
32592
 *  the syntax tree. It can be accessed using the methods CTree::SemScope(), 
 
32593
 *  CTree::SemValue(), and CTree::SemObject(). Some nodes provide short-cuts to
 
32594
 *  the semantic type and value information by implementing the methods 
 
32595
 *  CTree::Type() and CTree::Value().
 
32596
 *
 
32597
 *  The information of the syntax tree can be used to perform high-level 
 
32598
 *  transformations of the source code (see class ManipCommander). */
 
32599
 
 
32600
#line 32601 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32601
} // closed Puma
 
32602
class CCExprResolve;
 
32603
class CExprResolve;
 
32604
class WinIfExists;
 
32605
class WinImportHandler;
 
32606
class WinMacros;
 
32607
class WinAsm;
 
32608
class WinDeclSpecs;
 
32609
class WinMemberExplSpec;
 
32610
class WinTypeKeywords;
 
32611
class WinFriend;
 
32612
class ExtAC;
 
32613
class ExtACBuilderCoupling;
 
32614
class ExtACSyntaxCoupling;
 
32615
class ExtACTree;
 
32616
class ExtACKeywords;
 
32617
class ExtGnu;
 
32618
class PragmaOnceUnitState;
 
32619
class PragmaOnce;
 
32620
class CMatchSyntax;
 
32621
namespace Puma {
 
32622
 
 
32623
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32624
 
 
32625
#line 32626 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32626
} // closed Puma
 
32627
 
 
32628
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32629
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
32630
#include "CCExprResolveH.ah"
 
32631
#endif
 
32632
namespace Puma {
 
32633
 
 
32634
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32635
 
 
32636
#line 32637 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32637
} // closed Puma
 
32638
 
 
32639
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32640
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
32641
#include "CExprResolveH.ah"
 
32642
#endif
 
32643
namespace Puma {
 
32644
 
 
32645
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32646
class CTree {
 
32647
#line 32648 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32648
  friend class ::CCExprResolve;
 
32649
  friend class ::CExprResolve;
 
32650
  friend class ::WinIfExists;
 
32651
  friend class ::WinImportHandler;
 
32652
  friend class ::WinMacros;
 
32653
  friend class ::WinAsm;
 
32654
  friend class ::WinDeclSpecs;
 
32655
  friend class ::WinMemberExplSpec;
 
32656
  friend class ::WinTypeKeywords;
 
32657
  friend class ::WinFriend;
 
32658
  friend class ::ExtAC;
 
32659
  friend class ::ExtACBuilderCoupling;
 
32660
  friend class ::ExtACSyntaxCoupling;
 
32661
  friend class ::ExtACTree;
 
32662
  friend class ::ExtACKeywords;
 
32663
  friend class ::ExtGnu;
 
32664
  friend class ::PragmaOnceUnitState;
 
32665
  friend class ::PragmaOnce;
 
32666
  friend class ::CMatchSyntax;
 
32667
 
 
32668
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32669
 
 
32670
  CTree * _parent;
 
32671
 
 
32672
public:
 
32673
  /*DEBUG*/static int alloc;
 
32674
  /*DEBUG*/static int release;
 
32675
 
 
32676
protected:
 
32677
  /** Get the n-th son from given sons array. Skips empty (NULL) array items.
 
32678
   *  \param sons The sons array.
 
32679
   *  \param len Length of the sons array.
 
32680
   *  \param n Index of the son.
 
32681
   *  \return The n-th son or NULL. */
 
32682
  CTree *Son (CTree * const *sons, int len, int n) const;
 
32683
  /** Get the number of sons in the given sons array. Skips empty (NULL) array items.
 
32684
   *  \param sons The sons array.
 
32685
   *  \param len Length of the sons array. */
 
32686
  int Sons (CTree * const *sons, int len) const;
 
32687
  /** Replace a son.
 
32688
   *  \param sons The sons array.
 
32689
   *  \param len Length of the sons array.
 
32690
   *  \param old_son The son to replace.
 
32691
   *  \param new_son The new son. */
 
32692
  void ReplaceSon (CTree **sons, int len, CTree *old_son, CTree *new_son);
 
32693
  /** Replace a son if it equals the given son.
 
32694
   *  \param son The actual son.
 
32695
   *  \param old_son The son to replace, must match the actual son.
 
32696
   *  \param new_son The new son, overwrites the actual son. */
 
32697
  void ReplaceSon (CTree *&son, CTree *old_son, CTree *new_son);
 
32698
  /** Add a new son.
 
32699
   *  \param son The actual son.
 
32700
   *  \param new_son The new son, overwrites the actual son. */
 
32701
  void AddSon (CTree *&son, CTree *new_son);
 
32702
  /** Set the parent tree node.
 
32703
   *  \param parent The new parent tree node. */
 
32704
  void SetParent (const CTree *parent) { _parent = (CTree*)parent; }
 
32705
  /** Set the parent tree node of the given tree node.
 
32706
   *  \param node The tree node.
 
32707
   *  \param parent The new parent. */
 
32708
  void SetParent (CTree *node, const CTree *parent) { node->_parent = (CTree*)parent; }
 
32709
  
 
32710
protected:
 
32711
  /** Default constructor. */
 
32712
  CTree () : _parent(0) { /*DEBUG*/alloc++; }
 
32713
 
 
32714
public:
 
32715
  /** Destructor. */
 
32716
  virtual ~CTree () { /*DEBUG*/release++; }
 
32717
  /** Get the number of sons. */
 
32718
  virtual int Sons () const = 0;
 
32719
  /** Get the n-th son.
 
32720
   *  \param n The index of the son.
 
32721
   *  \return The n-th son or NULL. */
 
32722
  virtual CTree *Son (int n) const { return (CTree*)0; }
 
32723
  /** Get the node name (node identifier). */
 
32724
  virtual const char *NodeName () const = 0;
 
32725
  /** Get the first token of the syntactic construct represented by this sub-tree.
 
32726
   *  \return The token or NULL. */
 
32727
  virtual Token *token () const;
 
32728
  /** Get the last token of the syntactic construct represented by this sub-tree.
 
32729
   *  \return The token or NULL. */
 
32730
  virtual Token *end_token () const;
 
32731
  /** Get the CT_Token node of the first token of the syntactic construct represented by this sub-tree.
 
32732
   *  \return The token node or NULL. */
 
32733
  virtual CT_Token *token_node () const;
 
32734
  /** Get the CT_Token node of the last token of the syntactic construct represented by this sub-tree.
 
32735
   *  \return The token node or NULL. */
 
32736
  virtual CT_Token *end_token_node () const;
 
32737
  /** Replace a son.
 
32738
   *  \param old_son The son to replace.
 
32739
   *  \param new_son The son with which to replace. */
 
32740
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {}
 
32741
  /** Get the parent node.
 
32742
   *  \return The parent node or NULL. */
 
32743
  virtual CTree *Parent () const { return (CTree*)_parent; }
 
32744
 
 
32745
public: // semantic information
 
32746
  /** Get the semantic type of the node.
 
32747
   *  \return The type object or NULL. */
 
32748
  virtual CTypeInfo *Type () const { return (CTypeInfo*)0; }
 
32749
  /** Get the calculated value of the expression.
 
32750
   *  \return The value object or NULL. */
 
32751
  virtual CExprValue *Value () const { return (CExprValue*)0; }
 
32752
  
 
32753
  /** Get the scope opened by the node.
 
32754
   *  \return The scope object or NULL. */
 
32755
  virtual CSemScope *SemScope () const { return (CSemScope*)0; }
 
32756
  /** Get the semantic value of the node.
 
32757
   *  \return The value object or NULL. */
 
32758
  virtual CSemValue *SemValue () const { return (CSemValue*)0; }
 
32759
  /** Get the semantic information of the node.
 
32760
   *  \return The semantic object or NULL. */
 
32761
  virtual CSemObject *SemObject () const { return (CSemObject*)0; }
 
32762
  
 
32763
public: // node classification function
 
32764
  /** Get a pointer to CT_SimpleName if the current node represents a name.
 
32765
   *  \return The CT_SimpleName node or NULL. */
 
32766
  virtual CT_SimpleName *IsSimpleName () { return 0; }
 
32767
  /** Get a pointer to CT_String if the current node represents a string.
 
32768
   *  \return The CT_String node or NULL. */
 
32769
  virtual CT_String *IsString () { return 0; }
 
32770
  /** Get a pointer to CT_Declarator if the current node represents a declarator.
 
32771
   *  \return The CT_Declarator pointer or NULL. */
 
32772
  virtual CT_Declarator *IsDeclarator () { return 0; }
 
32773
  /** Get a pointer to CT_Statement if the current node represents a statement.
 
32774
   *  \return The CT_Statement pointer or NULL. */
 
32775
  virtual CT_Statement *IsStatement () { return 0; }
 
32776
  /** Get a pointer to CT_Expression if the current node represents a expression.
 
32777
   *  \return The CT_Expression pointer or NULL. */
 
32778
  virtual CT_Expression *IsExpression () { return 0; }
 
32779
  /** Get a pointer to CT_Decl if the current node represents a declaration.
 
32780
   *  \return The CT_Decl pointer or NULL. */
 
32781
  virtual CT_Decl *IsDeclaration () { return 0; }
 
32782
  /** Get a pointer to CT_Call if the current node represents a call expression.
 
32783
   *  \return The CT_Call pointer or NULL. */
 
32784
  virtual CT_Call *IsCall () { return 0; }
 
32785
   private:
 
32786
  typedef CTree CCExprResolveCTree;
 
32787
 
 
32788
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
32789
 public :
 
32790
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
32791
  typedef CTree CExprResolveCTree;
 
32792
 
 
32793
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
32794
 public :
 
32795
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
32796
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
32797
  const char *__attr_name (unsigned i) const {
 
32798
    static const char *names[] = { "_parent" }; return names[i];
 
32799
  }
 
32800
  const void *__attr (unsigned __i) const {
 
32801
    switch (__i) { case 0: return &_parent; default: return 0; }
 
32802
  }
 
32803
#line 343 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32804
};
 
32805
 
 
32806
/** \class CT_Error CTree.h Puma/CTree.h
 
32807
 *  Error tree node that is inserted into the tree for syntactic constructs
 
32808
 *  that could not be parsed. */
 
32809
 
 
32810
#line 32811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32811
} // closed Puma
 
32812
class CCExprResolve;
 
32813
class CExprResolve;
 
32814
class WinIfExists;
 
32815
class WinImportHandler;
 
32816
class WinMacros;
 
32817
class WinAsm;
 
32818
class WinDeclSpecs;
 
32819
class WinMemberExplSpec;
 
32820
class WinTypeKeywords;
 
32821
class WinFriend;
 
32822
class ExtAC;
 
32823
class ExtACBuilderCoupling;
 
32824
class ExtACSyntaxCoupling;
 
32825
class ExtACTree;
 
32826
class ExtACKeywords;
 
32827
class ExtGnu;
 
32828
class PragmaOnceUnitState;
 
32829
class PragmaOnce;
 
32830
class CMatchSyntax;
 
32831
namespace Puma {
 
32832
 
 
32833
#line 348 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32834
class CT_Error : public CTree {
 
32835
#line 32836 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32836
  friend class ::CCExprResolve;
 
32837
  friend class ::CExprResolve;
 
32838
  friend class ::WinIfExists;
 
32839
  friend class ::WinImportHandler;
 
32840
  friend class ::WinMacros;
 
32841
  friend class ::WinAsm;
 
32842
  friend class ::WinDeclSpecs;
 
32843
  friend class ::WinMemberExplSpec;
 
32844
  friend class ::WinTypeKeywords;
 
32845
  friend class ::WinFriend;
 
32846
  friend class ::ExtAC;
 
32847
  friend class ::ExtACBuilderCoupling;
 
32848
  friend class ::ExtACSyntaxCoupling;
 
32849
  friend class ::ExtACTree;
 
32850
  friend class ::ExtACKeywords;
 
32851
  friend class ::ExtGnu;
 
32852
  friend class ::PragmaOnceUnitState;
 
32853
  friend class ::PragmaOnce;
 
32854
  friend class ::CMatchSyntax;
 
32855
 
 
32856
#line 348 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32857
 
 
32858
public:
 
32859
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32860
  static const char *NodeId ();
 
32861
  /** Get the name of the node. Can be compared with NodeId(). */
 
32862
  const char *NodeName () const { return NodeId (); }
 
32863
  /** Get the number of sons. */
 
32864
  int Sons () const { return 0; }
 
32865
public:
 
32866
  typedef AC::TLE __AttrTypes;
 
32867
  const char *__attr_name (unsigned i) const { return 0; }
 
32868
  const void *__attr (unsigned __i) const { return 0; }
 
32869
#line 356 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32870
};
 
32871
 
 
32872
/** \class CT_Token CTree.h Puma/CTree.h
 
32873
 *  Tree node representing a single token in the source code. */
 
32874
 
 
32875
#line 32876 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32876
} // closed Puma
 
32877
class CCExprResolve;
 
32878
class CExprResolve;
 
32879
class WinIfExists;
 
32880
class WinImportHandler;
 
32881
class WinMacros;
 
32882
class WinAsm;
 
32883
class WinDeclSpecs;
 
32884
class WinMemberExplSpec;
 
32885
class WinTypeKeywords;
 
32886
class WinFriend;
 
32887
class ExtAC;
 
32888
class ExtACBuilderCoupling;
 
32889
class ExtACSyntaxCoupling;
 
32890
class ExtACTree;
 
32891
class ExtACKeywords;
 
32892
class ExtGnu;
 
32893
class PragmaOnceUnitState;
 
32894
class PragmaOnce;
 
32895
class CMatchSyntax;
 
32896
namespace Puma {
 
32897
 
 
32898
#line 360 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32899
class CT_Token : public CTree {
 
32900
#line 32901 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32901
  friend class ::CCExprResolve;
 
32902
  friend class ::CExprResolve;
 
32903
  friend class ::WinIfExists;
 
32904
  friend class ::WinImportHandler;
 
32905
  friend class ::WinMacros;
 
32906
  friend class ::WinAsm;
 
32907
  friend class ::WinDeclSpecs;
 
32908
  friend class ::WinMemberExplSpec;
 
32909
  friend class ::WinTypeKeywords;
 
32910
  friend class ::WinFriend;
 
32911
  friend class ::ExtAC;
 
32912
  friend class ::ExtACBuilderCoupling;
 
32913
  friend class ::ExtACSyntaxCoupling;
 
32914
  friend class ::ExtACTree;
 
32915
  friend class ::ExtACKeywords;
 
32916
  friend class ::ExtGnu;
 
32917
  friend class ::PragmaOnceUnitState;
 
32918
  friend class ::PragmaOnce;
 
32919
  friend class ::CMatchSyntax;
 
32920
 
 
32921
#line 360 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32922
 
 
32923
  Token *_token;
 
32924
  unsigned long int _number;
 
32925
  
 
32926
public:
 
32927
  /** Constructor. 
 
32928
   *  \param token The represented token.
 
32929
   *  \param number The token number (a consecutive number). */
 
32930
  CT_Token (Token *token, unsigned long int number = 0) : 
 
32931
    _token (token), _number (number) {}
 
32932
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
32933
  static const char *NodeId ();
 
32934
  /** Get the name of the node. Can be compared with NodeId(). */
 
32935
  const char *NodeName () const { return NodeId (); }
 
32936
  /** Get the number of sons. */
 
32937
  int Sons () const { return 0; }
 
32938
  /** Get the represented token. */
 
32939
  Token *token () const { return _token; }
 
32940
  /** Get the represented token. */
 
32941
  Token *end_token () const { return _token; }
 
32942
  /** Get this. */
 
32943
  CT_Token *token_node () const { return (CT_Token*)this; }
 
32944
  /** Get this. */
 
32945
  CT_Token *end_token_node () const { return (CT_Token*)this; }
 
32946
  /** Set the token number. 
 
32947
   *  \param number The token number. */ 
 
32948
  void Number (unsigned long int number) { _number = number; }
 
32949
  /** Get the token number. Can be used to indentify this token. */
 
32950
  unsigned long int Number () const { return _number; }
 
32951
  
 
32952
public:
 
32953
  /** Own new operator reusing memory. */
 
32954
  void *operator new (size_t);
 
32955
  /** Own delete operator. */
 
32956
  void operator delete (void *);
 
32957
public:
 
32958
  typedef AC::TL<Puma::Token *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
32959
  const char *__attr_name (unsigned i) const {
 
32960
    static const char *names[] = { "_token", "_number" }; return names[i];
 
32961
  }
 
32962
  const void *__attr (unsigned __i) const {
 
32963
    switch (__i) { case 0: return &_token; case 1: return &_number; default: return 0; }
 
32964
  }
 
32965
#line 395 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
32966
};
 
32967
 
 
32968
/*****************************************************************************/
 
32969
/*                                                                           */
 
32970
/*                              List nodes                                   */
 
32971
/*                                                                           */
 
32972
/*****************************************************************************/
 
32973
 
 
32974
/** \class CT_List CTree.h Puma/CTree.h
 
32975
 *  Base class for tree nodes representing lists. */
 
32976
 
 
32977
#line 32978 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
32978
} // closed Puma
 
32979
class CCExprResolve;
 
32980
class CExprResolve;
 
32981
class WinIfExists;
 
32982
class WinImportHandler;
 
32983
class WinMacros;
 
32984
class WinAsm;
 
32985
class WinDeclSpecs;
 
32986
class WinMemberExplSpec;
 
32987
class WinTypeKeywords;
 
32988
class WinFriend;
 
32989
class ExtAC;
 
32990
class ExtACBuilderCoupling;
 
32991
class ExtACSyntaxCoupling;
 
32992
class ExtACTree;
 
32993
class ExtACKeywords;
 
32994
class ExtGnu;
 
32995
class PragmaOnceUnitState;
 
32996
class PragmaOnce;
 
32997
class CMatchSyntax;
 
32998
namespace Puma {
 
32999
 
 
33000
#line 405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33001
class CT_List : public CTree {
 
33002
#line 33003 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33003
  friend class ::CCExprResolve;
 
33004
  friend class ::CExprResolve;
 
33005
  friend class ::WinIfExists;
 
33006
  friend class ::WinImportHandler;
 
33007
  friend class ::WinMacros;
 
33008
  friend class ::WinAsm;
 
33009
  friend class ::WinDeclSpecs;
 
33010
  friend class ::WinMemberExplSpec;
 
33011
  friend class ::WinTypeKeywords;
 
33012
  friend class ::WinFriend;
 
33013
  friend class ::ExtAC;
 
33014
  friend class ::ExtACBuilderCoupling;
 
33015
  friend class ::ExtACSyntaxCoupling;
 
33016
  friend class ::ExtACTree;
 
33017
  friend class ::ExtACKeywords;
 
33018
  friend class ::ExtGnu;
 
33019
  friend class ::PragmaOnceUnitState;
 
33020
  friend class ::PragmaOnce;
 
33021
  friend class ::CMatchSyntax;
 
33022
 
 
33023
#line 405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33024
 
 
33025
  /** Son to index map type. */
 
33026
  typedef std::map<CTree*,int> SonToIndexMap;
 
33027
 
 
33028
  Array<CTree*> _sons;
 
33029
  int _properties;
 
33030
  SonToIndexMap _son2idx;
 
33031
 
 
33032
protected:
 
33033
  /** Constructor.
 
33034
   *  \param size The initial list size.
 
33035
   *  \param incr The initial increment count. 
 
33036
   *  \param props The list properties (bit array). */
 
33037
  CT_List(int size = 5, int incr = 5, int props = 0) : 
 
33038
    _sons (size, incr), _properties (props) {}
 
33039
 
 
33040
public:
 
33041
  /** %List properties. */
 
33042
  enum {
 
33043
    /** %List has a start token, like ':' in ":a(1),b(2)" */
 
33044
    OPEN = 1,         
 
33045
    /** %List has an end token */
 
33046
    CLOSE = 2,        
 
33047
    /** %List has opening and closing delimiters, like '(' and ')' */
 
33048
    OPEN_CLOSE = 3,   
 
33049
    /** %List has separators, like ',' */
 
33050
    SEPARATORS = 4,   
 
33051
    /** %List pretend to be empty, like for "(void)" */
 
33052
    FORCE_EMPTY = 8,  
 
33053
    /** %List has trailing separator, like "a,b,c," */
 
33054
    END_SEP = 16,     
 
33055
    /** %List has no separator before last element, like "(a,b...)" */
 
33056
    NO_LAST_SEP = 32, 
 
33057
    /** %List has an introduction chararacter, like "=" in "={a,b}" */
 
33058
    INTRO = 64        
 
33059
  };
 
33060
 
 
33061
  /** Get the number of list entries. */
 
33062
  int Entries () const;
 
33063
  /** Get the n-th list entry.
 
33064
   *  \param n The index of the entry. 
 
33065
   *  \return The list entry or NULL. */
 
33066
  CTree *Entry (int n) const;
 
33067
  /** Get the number of sons. */
 
33068
  int Sons () const { return _sons.length (); }
 
33069
  /** Get the n-th son.
 
33070
   *  \param n The index of the son. 
 
33071
   *  \return The n-th son or NULL. */
 
33072
  CTree *Son (int n) const { return _sons.lookup (n); }
 
33073
  /** Get the list properties. */
 
33074
  int GetProperties () const { return _properties; }
 
33075
  /** Add a list property.
 
33076
   *  \param p The property to add. */
 
33077
  void AddProperties (int p) { _properties |= p; }
 
33078
  /** Add a son.
 
33079
   *  \param s The son to add. */
 
33080
  void AddSon (CTree *s);
 
33081
  /** Prepend a son.
 
33082
   *  \param s The son to prepend. */
 
33083
  void PrefixSon (CTree *s);
 
33084
  /** Insert a son before another son.
 
33085
   *  \param before The son to insert the new son before.
 
33086
   *  \param son The son to insert. */
 
33087
  void InsertSon (CTree *before, CTree *son); 
 
33088
  /** Replace a son.
 
33089
   *  \param old_son The son to replace.
 
33090
   *  \param new_son The new son. */
 
33091
  void ReplaceSon (CTree *old_son, CTree *new_son);
 
33092
  /** Remove a son.
 
33093
   *  \param son The son to remove. */
 
33094
  void RemoveSon (CTree *son);
 
33095
  /** Insert a son at the given index. 
 
33096
   *  \param idx The index at which to insert.
 
33097
   *  \param s The son to insert. */
 
33098
  void InsertSon (int idx, CTree *s);
 
33099
  /** Replace the son at the given index.
 
33100
   *  \param idx The index of the son to replace.
 
33101
   *  \param s The new son. */
 
33102
  void ReplaceSon (int idx, CTree *s);
 
33103
  /** Remove the son at the given index. 
 
33104
   *  \param idx The index of the son to remove. */
 
33105
  void RemoveSon (int idx);
 
33106
public:
 
33107
  typedef AC::TL<Puma::Array< Puma::CTree * >,AC::TL<int,AC::TL<std::map< Puma::CTree *,int >,AC::TLE > > > __AttrTypes;
 
33108
  const char *__attr_name (unsigned i) const {
 
33109
    static const char *names[] = { "_sons", "_properties", "_son2idx" }; return names[i];
 
33110
  }
 
33111
  const void *__attr (unsigned __i) const {
 
33112
    switch (__i) { case 3: return &_sons; case 4: return &_properties; case 5: return &_son2idx; default: return 0; }
 
33113
  }
 
33114
#line 487 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33115
};
 
33116
 
 
33117
/** \class CT_ExprList CTree.h Puma/CTree.h
 
33118
 *  Tree node representing an expression list. */
 
33119
 
 
33120
#line 33121 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33121
} // closed Puma
 
33122
class CCExprResolve;
 
33123
class CExprResolve;
 
33124
class WinIfExists;
 
33125
class WinImportHandler;
 
33126
class WinMacros;
 
33127
class WinAsm;
 
33128
class WinDeclSpecs;
 
33129
class WinMemberExplSpec;
 
33130
class WinTypeKeywords;
 
33131
class WinFriend;
 
33132
class ExtAC;
 
33133
class ExtACBuilderCoupling;
 
33134
class ExtACSyntaxCoupling;
 
33135
class ExtACTree;
 
33136
class ExtACKeywords;
 
33137
class ExtGnu;
 
33138
class PragmaOnceUnitState;
 
33139
class PragmaOnce;
 
33140
class CMatchSyntax;
 
33141
namespace Puma {
 
33142
 
 
33143
#line 491 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33144
class CT_ExprList : public CT_List, public CSemValue, public CSemObject {
 
33145
#line 33146 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33146
  friend class ::CCExprResolve;
 
33147
  friend class ::CExprResolve;
 
33148
  friend class ::WinIfExists;
 
33149
  friend class ::WinImportHandler;
 
33150
  friend class ::WinMacros;
 
33151
  friend class ::WinAsm;
 
33152
  friend class ::WinDeclSpecs;
 
33153
  friend class ::WinMemberExplSpec;
 
33154
  friend class ::WinTypeKeywords;
 
33155
  friend class ::WinFriend;
 
33156
  friend class ::ExtAC;
 
33157
  friend class ::ExtACBuilderCoupling;
 
33158
  friend class ::ExtACSyntaxCoupling;
 
33159
  friend class ::ExtACTree;
 
33160
  friend class ::ExtACKeywords;
 
33161
  friend class ::ExtGnu;
 
33162
  friend class ::PragmaOnceUnitState;
 
33163
  friend class ::PragmaOnce;
 
33164
  friend class ::CMatchSyntax;
 
33165
 
 
33166
#line 491 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33167
 
 
33168
public:
 
33169
  /** Constructor. */
 
33170
  CT_ExprList () { AddProperties (SEPARATORS); }
 
33171
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33172
  static const char *NodeId ();
 
33173
  /** Get the name of the node. Can be compared with NodeId(). */
 
33174
  const char *NodeName () const { return NodeId (); }
 
33175
 
 
33176
  /** Get the type of the last expression in the expression list.
 
33177
   *  \return The type or NULL. */
 
33178
  CTypeInfo *Type () const { return type; }
 
33179
  /** Get the value of the last expression in the expression list.
 
33180
   *  \return The value of NULL. */
 
33181
  CExprValue *Value () const { return value; }
 
33182
  /** Get the semantic value of the node. */
 
33183
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
33184
  /** Get the semantic information about the node. */
 
33185
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
33186
public:
 
33187
  typedef AC::TLE __AttrTypes;
 
33188
  const char *__attr_name (unsigned i) const { return 0; }
 
33189
  const void *__attr (unsigned __i) const { return 0; }
 
33190
#line 510 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33191
};
 
33192
 
 
33193
/** \class CT_DeclaratorList CTree.h Puma/CTree.h
 
33194
 *  Tree node representing a list of declarators. */
 
33195
 
 
33196
#line 33197 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33197
} // closed Puma
 
33198
class CCExprResolve;
 
33199
class CExprResolve;
 
33200
class WinIfExists;
 
33201
class WinImportHandler;
 
33202
class WinMacros;
 
33203
class WinAsm;
 
33204
class WinDeclSpecs;
 
33205
class WinMemberExplSpec;
 
33206
class WinTypeKeywords;
 
33207
class WinFriend;
 
33208
class ExtAC;
 
33209
class ExtACBuilderCoupling;
 
33210
class ExtACSyntaxCoupling;
 
33211
class ExtACTree;
 
33212
class ExtACKeywords;
 
33213
class ExtGnu;
 
33214
class PragmaOnceUnitState;
 
33215
class PragmaOnce;
 
33216
class CMatchSyntax;
 
33217
namespace Puma {
 
33218
 
 
33219
#line 514 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33220
class CT_DeclaratorList : public CT_List {
 
33221
#line 33222 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33222
  friend class ::CCExprResolve;
 
33223
  friend class ::CExprResolve;
 
33224
  friend class ::WinIfExists;
 
33225
  friend class ::WinImportHandler;
 
33226
  friend class ::WinMacros;
 
33227
  friend class ::WinAsm;
 
33228
  friend class ::WinDeclSpecs;
 
33229
  friend class ::WinMemberExplSpec;
 
33230
  friend class ::WinTypeKeywords;
 
33231
  friend class ::WinFriend;
 
33232
  friend class ::ExtAC;
 
33233
  friend class ::ExtACBuilderCoupling;
 
33234
  friend class ::ExtACSyntaxCoupling;
 
33235
  friend class ::ExtACTree;
 
33236
  friend class ::ExtACKeywords;
 
33237
  friend class ::ExtGnu;
 
33238
  friend class ::PragmaOnceUnitState;
 
33239
  friend class ::PragmaOnce;
 
33240
  friend class ::CMatchSyntax;
 
33241
 
 
33242
#line 514 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33243
 
 
33244
public:
 
33245
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33246
  static const char *NodeId ();
 
33247
  /** Get the name of the node. Can be compared with NodeId(). */
 
33248
  const char *NodeName () const { return NodeId (); }
 
33249
public:
 
33250
  typedef AC::TLE __AttrTypes;
 
33251
  const char *__attr_name (unsigned i) const { return 0; }
 
33252
  const void *__attr (unsigned __i) const { return 0; }
 
33253
#line 520 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33254
};
 
33255
 
 
33256
/** \class CT_EnumeratorList CTree.h Puma/CTree.h
 
33257
 *  Tree node representing a list of enumerator constants. */
 
33258
 
 
33259
#line 33260 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33260
} // closed Puma
 
33261
class CCExprResolve;
 
33262
class CExprResolve;
 
33263
class WinIfExists;
 
33264
class WinImportHandler;
 
33265
class WinMacros;
 
33266
class WinAsm;
 
33267
class WinDeclSpecs;
 
33268
class WinMemberExplSpec;
 
33269
class WinTypeKeywords;
 
33270
class WinFriend;
 
33271
class ExtAC;
 
33272
class ExtACBuilderCoupling;
 
33273
class ExtACSyntaxCoupling;
 
33274
class ExtACTree;
 
33275
class ExtACKeywords;
 
33276
class ExtGnu;
 
33277
class PragmaOnceUnitState;
 
33278
class PragmaOnce;
 
33279
class CMatchSyntax;
 
33280
namespace Puma {
 
33281
 
 
33282
#line 524 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33283
class CT_EnumeratorList : public CT_List {
 
33284
#line 33285 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33285
  friend class ::CCExprResolve;
 
33286
  friend class ::CExprResolve;
 
33287
  friend class ::WinIfExists;
 
33288
  friend class ::WinImportHandler;
 
33289
  friend class ::WinMacros;
 
33290
  friend class ::WinAsm;
 
33291
  friend class ::WinDeclSpecs;
 
33292
  friend class ::WinMemberExplSpec;
 
33293
  friend class ::WinTypeKeywords;
 
33294
  friend class ::WinFriend;
 
33295
  friend class ::ExtAC;
 
33296
  friend class ::ExtACBuilderCoupling;
 
33297
  friend class ::ExtACSyntaxCoupling;
 
33298
  friend class ::ExtACTree;
 
33299
  friend class ::ExtACKeywords;
 
33300
  friend class ::ExtGnu;
 
33301
  friend class ::PragmaOnceUnitState;
 
33302
  friend class ::PragmaOnce;
 
33303
  friend class ::CMatchSyntax;
 
33304
 
 
33305
#line 524 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33306
 
 
33307
public:
 
33308
  /** Constructor. */
 
33309
  CT_EnumeratorList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
33310
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33311
  static const char *NodeId ();
 
33312
  /** Get the name of the node. Can be compared with NodeId(). */
 
33313
  const char *NodeName () const { return NodeId (); }
 
33314
public:
 
33315
  typedef AC::TLE __AttrTypes;
 
33316
  const char *__attr_name (unsigned i) const { return 0; }
 
33317
  const void *__attr (unsigned __i) const { return 0; }
 
33318
#line 532 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33319
};
 
33320
   
 
33321
/** \class CT_DeclList CTree.h Puma/CTree.h
 
33322
 *  Tree node representing a list of declarations. */
 
33323
 
 
33324
#line 33325 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33325
} // closed Puma
 
33326
class CCExprResolve;
 
33327
class CExprResolve;
 
33328
class WinIfExists;
 
33329
class WinImportHandler;
 
33330
class WinMacros;
 
33331
class WinAsm;
 
33332
class WinDeclSpecs;
 
33333
class WinMemberExplSpec;
 
33334
class WinTypeKeywords;
 
33335
class WinFriend;
 
33336
class ExtAC;
 
33337
class ExtACBuilderCoupling;
 
33338
class ExtACSyntaxCoupling;
 
33339
class ExtACTree;
 
33340
class ExtACKeywords;
 
33341
class ExtGnu;
 
33342
class PragmaOnceUnitState;
 
33343
class PragmaOnce;
 
33344
class CMatchSyntax;
 
33345
namespace Puma {
 
33346
 
 
33347
#line 536 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33348
class CT_DeclList : public CT_List {
 
33349
#line 33350 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33350
  friend class ::CCExprResolve;
 
33351
  friend class ::CExprResolve;
 
33352
  friend class ::WinIfExists;
 
33353
  friend class ::WinImportHandler;
 
33354
  friend class ::WinMacros;
 
33355
  friend class ::WinAsm;
 
33356
  friend class ::WinDeclSpecs;
 
33357
  friend class ::WinMemberExplSpec;
 
33358
  friend class ::WinTypeKeywords;
 
33359
  friend class ::WinFriend;
 
33360
  friend class ::ExtAC;
 
33361
  friend class ::ExtACBuilderCoupling;
 
33362
  friend class ::ExtACSyntaxCoupling;
 
33363
  friend class ::ExtACTree;
 
33364
  friend class ::ExtACKeywords;
 
33365
  friend class ::ExtGnu;
 
33366
  friend class ::PragmaOnceUnitState;
 
33367
  friend class ::PragmaOnce;
 
33368
  friend class ::CMatchSyntax;
 
33369
 
 
33370
#line 536 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33371
 
 
33372
public:
 
33373
  /** Constructor. 
 
33374
   *  \param size The initial size of the list.
 
33375
   *  \param incr The initial increment count of the list. */
 
33376
  CT_DeclList (int size = 20, int incr = 20) : CT_List (size, incr) {}
 
33377
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33378
  static const char *NodeId ();
 
33379
  /** Get the name of the node. Can be compared with NodeId(). */
 
33380
  const char *NodeName () const { return NodeId (); }
 
33381
  /** Set the linkage specifiers to each declaration in the list.
 
33382
   *  \param l The linkage specifiers node. */
 
33383
  void Linkage (CT_LinkageSpec *l);
 
33384
public:
 
33385
  typedef AC::TLE __AttrTypes;
 
33386
  const char *__attr_name (unsigned i) const { return 0; }
 
33387
  const void *__attr (unsigned __i) const { return 0; }
 
33388
#line 549 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33389
};
 
33390
 
 
33391
/** \class CT_DeclSpecSeq CTree.h Puma/CTree.h
 
33392
 *  Tree node representing a sequence of declaration specifiers. */
 
33393
 
 
33394
#line 33395 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33395
} // closed Puma
 
33396
class CCExprResolve;
 
33397
class CExprResolve;
 
33398
class WinIfExists;
 
33399
class WinImportHandler;
 
33400
class WinMacros;
 
33401
class WinAsm;
 
33402
class WinDeclSpecs;
 
33403
class WinMemberExplSpec;
 
33404
class WinTypeKeywords;
 
33405
class WinFriend;
 
33406
class ExtAC;
 
33407
class ExtACBuilderCoupling;
 
33408
class ExtACSyntaxCoupling;
 
33409
class ExtACTree;
 
33410
class ExtACKeywords;
 
33411
class ExtGnu;
 
33412
class PragmaOnceUnitState;
 
33413
class PragmaOnce;
 
33414
class CMatchSyntax;
 
33415
namespace Puma {
 
33416
 
 
33417
#line 553 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33418
class CT_DeclSpecSeq : public CT_List {
 
33419
#line 33420 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33420
  friend class ::CCExprResolve;
 
33421
  friend class ::CExprResolve;
 
33422
  friend class ::WinIfExists;
 
33423
  friend class ::WinImportHandler;
 
33424
  friend class ::WinMacros;
 
33425
  friend class ::WinAsm;
 
33426
  friend class ::WinDeclSpecs;
 
33427
  friend class ::WinMemberExplSpec;
 
33428
  friend class ::WinTypeKeywords;
 
33429
  friend class ::WinFriend;
 
33430
  friend class ::ExtAC;
 
33431
  friend class ::ExtACBuilderCoupling;
 
33432
  friend class ::ExtACSyntaxCoupling;
 
33433
  friend class ::ExtACTree;
 
33434
  friend class ::ExtACKeywords;
 
33435
  friend class ::ExtGnu;
 
33436
  friend class ::PragmaOnceUnitState;
 
33437
  friend class ::PragmaOnce;
 
33438
  friend class ::CMatchSyntax;
 
33439
 
 
33440
#line 553 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33441
 
 
33442
public:
 
33443
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33444
  static const char *NodeId ();
 
33445
  /** Get the name of the node. Can be compared with NodeId(). */
 
33446
  const char *NodeName () const { return NodeId (); }
 
33447
public:
 
33448
  typedef AC::TLE __AttrTypes;
 
33449
  const char *__attr_name (unsigned i) const { return 0; }
 
33450
  const void *__attr (unsigned __i) const { return 0; }
 
33451
#line 559 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33452
};
 
33453
 
 
33454
/** \class CT_CmpdStmt CTree.h Puma/CTree.h
 
33455
 *  Tree node representing a compound statement. */
 
33456
 
 
33457
#line 33458 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33458
} // closed Puma
 
33459
class CCExprResolve;
 
33460
class CExprResolve;
 
33461
class WinIfExists;
 
33462
class WinImportHandler;
 
33463
class WinMacros;
 
33464
class WinAsm;
 
33465
class WinDeclSpecs;
 
33466
class WinMemberExplSpec;
 
33467
class WinTypeKeywords;
 
33468
class WinFriend;
 
33469
class ExtAC;
 
33470
class ExtACBuilderCoupling;
 
33471
class ExtACSyntaxCoupling;
 
33472
class ExtACTree;
 
33473
class ExtACKeywords;
 
33474
class ExtGnu;
 
33475
class PragmaOnceUnitState;
 
33476
class PragmaOnce;
 
33477
class CMatchSyntax;
 
33478
namespace Puma {
 
33479
 
 
33480
#line 563 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33481
class CT_CmpdStmt : public CT_List, public CSemScope {
 
33482
#line 33483 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33483
  friend class ::CCExprResolve;
 
33484
  friend class ::CExprResolve;
 
33485
  friend class ::WinIfExists;
 
33486
  friend class ::WinImportHandler;
 
33487
  friend class ::WinMacros;
 
33488
  friend class ::WinAsm;
 
33489
  friend class ::WinDeclSpecs;
 
33490
  friend class ::WinMemberExplSpec;
 
33491
  friend class ::WinTypeKeywords;
 
33492
  friend class ::WinFriend;
 
33493
  friend class ::ExtAC;
 
33494
  friend class ::ExtACBuilderCoupling;
 
33495
  friend class ::ExtACSyntaxCoupling;
 
33496
  friend class ::ExtACTree;
 
33497
  friend class ::ExtACKeywords;
 
33498
  friend class ::ExtGnu;
 
33499
  friend class ::PragmaOnceUnitState;
 
33500
  friend class ::PragmaOnce;
 
33501
  friend class ::CMatchSyntax;
 
33502
 
 
33503
#line 563 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33504
 
 
33505
public:
 
33506
  /* Constructor. */
 
33507
  CT_CmpdStmt () { AddProperties (OPEN_CLOSE); }
 
33508
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33509
  static const char *NodeId ();
 
33510
  /** Get the name of the node. Can be compared with NodeId(). */
 
33511
  const char *NodeName () const { return NodeId (); }
 
33512
  /** Get the scope opened by the compound statement. */
 
33513
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
33514
public:
 
33515
  typedef AC::TLE __AttrTypes;
 
33516
  const char *__attr_name (unsigned i) const { return 0; }
 
33517
  const void *__attr (unsigned __i) const { return 0; }
 
33518
#line 573 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33519
};
 
33520
 
 
33521
/** \class CT_HandlerSeq CTree.h Puma/CTree.h
 
33522
 *  Tree node representing an exception handler sequence. */
 
33523
 
 
33524
#line 33525 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33525
} // closed Puma
 
33526
class CCExprResolve;
 
33527
class CExprResolve;
 
33528
class WinIfExists;
 
33529
class WinImportHandler;
 
33530
class WinMacros;
 
33531
class WinAsm;
 
33532
class WinDeclSpecs;
 
33533
class WinMemberExplSpec;
 
33534
class WinTypeKeywords;
 
33535
class WinFriend;
 
33536
class ExtAC;
 
33537
class ExtACBuilderCoupling;
 
33538
class ExtACSyntaxCoupling;
 
33539
class ExtACTree;
 
33540
class ExtACKeywords;
 
33541
class ExtGnu;
 
33542
class PragmaOnceUnitState;
 
33543
class PragmaOnce;
 
33544
class CMatchSyntax;
 
33545
namespace Puma {
 
33546
 
 
33547
#line 577 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33548
class CT_HandlerSeq : public CT_List {
 
33549
#line 33550 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33550
  friend class ::CCExprResolve;
 
33551
  friend class ::CExprResolve;
 
33552
  friend class ::WinIfExists;
 
33553
  friend class ::WinImportHandler;
 
33554
  friend class ::WinMacros;
 
33555
  friend class ::WinAsm;
 
33556
  friend class ::WinDeclSpecs;
 
33557
  friend class ::WinMemberExplSpec;
 
33558
  friend class ::WinTypeKeywords;
 
33559
  friend class ::WinFriend;
 
33560
  friend class ::ExtAC;
 
33561
  friend class ::ExtACBuilderCoupling;
 
33562
  friend class ::ExtACSyntaxCoupling;
 
33563
  friend class ::ExtACTree;
 
33564
  friend class ::ExtACKeywords;
 
33565
  friend class ::ExtGnu;
 
33566
  friend class ::PragmaOnceUnitState;
 
33567
  friend class ::PragmaOnce;
 
33568
  friend class ::CMatchSyntax;
 
33569
 
 
33570
#line 577 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33571
 
 
33572
public:
 
33573
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33574
  static const char *NodeId ();
 
33575
  /** Get the name of the node. Can be compared with NodeId(). */
 
33576
  const char *NodeName () const { return NodeId (); }
 
33577
public:
 
33578
  typedef AC::TLE __AttrTypes;
 
33579
  const char *__attr_name (unsigned i) const { return 0; }
 
33580
  const void *__attr (unsigned __i) const { return 0; }
 
33581
#line 583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33582
};
 
33583
 
 
33584
/** \class CT_TemplateParamList CTree.h Puma/CTree.h
 
33585
 *  Tree node representing a template parameter list. */
 
33586
 
 
33587
#line 33588 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33588
} // closed Puma
 
33589
class CCExprResolve;
 
33590
class CExprResolve;
 
33591
class WinIfExists;
 
33592
class WinImportHandler;
 
33593
class WinMacros;
 
33594
class WinAsm;
 
33595
class WinDeclSpecs;
 
33596
class WinMemberExplSpec;
 
33597
class WinTypeKeywords;
 
33598
class WinFriend;
 
33599
class ExtAC;
 
33600
class ExtACBuilderCoupling;
 
33601
class ExtACSyntaxCoupling;
 
33602
class ExtACTree;
 
33603
class ExtACKeywords;
 
33604
class ExtGnu;
 
33605
class PragmaOnceUnitState;
 
33606
class PragmaOnce;
 
33607
class CMatchSyntax;
 
33608
namespace Puma {
 
33609
 
 
33610
#line 587 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33611
class CT_TemplateParamList : public CT_List, public CSemScope {
 
33612
#line 33613 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33613
  friend class ::CCExprResolve;
 
33614
  friend class ::CExprResolve;
 
33615
  friend class ::WinIfExists;
 
33616
  friend class ::WinImportHandler;
 
33617
  friend class ::WinMacros;
 
33618
  friend class ::WinAsm;
 
33619
  friend class ::WinDeclSpecs;
 
33620
  friend class ::WinMemberExplSpec;
 
33621
  friend class ::WinTypeKeywords;
 
33622
  friend class ::WinFriend;
 
33623
  friend class ::ExtAC;
 
33624
  friend class ::ExtACBuilderCoupling;
 
33625
  friend class ::ExtACSyntaxCoupling;
 
33626
  friend class ::ExtACTree;
 
33627
  friend class ::ExtACKeywords;
 
33628
  friend class ::ExtGnu;
 
33629
  friend class ::PragmaOnceUnitState;
 
33630
  friend class ::PragmaOnce;
 
33631
  friend class ::CMatchSyntax;
 
33632
 
 
33633
#line 587 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33634
 
 
33635
public:
 
33636
  CT_TemplateParamList () { AddProperties (INTRO | SEPARATORS | OPEN_CLOSE); }
 
33637
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33638
  static const char *NodeId ();
 
33639
  /** Get the name of the node. Can be compared with NodeId(). */
 
33640
  const char *NodeName () const { return NodeId (); }
 
33641
  /** Get the scope opened by the template parameter list. */
 
33642
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
33643
public:
 
33644
  typedef AC::TLE __AttrTypes;
 
33645
  const char *__attr_name (unsigned i) const { return 0; }
 
33646
  const void *__attr (unsigned __i) const { return 0; }
 
33647
#line 596 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33648
};
 
33649
 
 
33650
/** \class CT_TemplateArgList CTree.h Puma/CTree.h
 
33651
 *  Tree node representing a template argument list. */
 
33652
 
 
33653
#line 33654 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33654
} // closed Puma
 
33655
class CCExprResolve;
 
33656
class CExprResolve;
 
33657
class WinIfExists;
 
33658
class WinImportHandler;
 
33659
class WinMacros;
 
33660
class WinAsm;
 
33661
class WinDeclSpecs;
 
33662
class WinMemberExplSpec;
 
33663
class WinTypeKeywords;
 
33664
class WinFriend;
 
33665
class ExtAC;
 
33666
class ExtACBuilderCoupling;
 
33667
class ExtACSyntaxCoupling;
 
33668
class ExtACTree;
 
33669
class ExtACKeywords;
 
33670
class ExtGnu;
 
33671
class PragmaOnceUnitState;
 
33672
class PragmaOnce;
 
33673
class CMatchSyntax;
 
33674
namespace Puma {
 
33675
 
 
33676
#line 600 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33677
class CT_TemplateArgList : public CT_List {
 
33678
#line 33679 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33679
  friend class ::CCExprResolve;
 
33680
  friend class ::CExprResolve;
 
33681
  friend class ::WinIfExists;
 
33682
  friend class ::WinImportHandler;
 
33683
  friend class ::WinMacros;
 
33684
  friend class ::WinAsm;
 
33685
  friend class ::WinDeclSpecs;
 
33686
  friend class ::WinMemberExplSpec;
 
33687
  friend class ::WinTypeKeywords;
 
33688
  friend class ::WinFriend;
 
33689
  friend class ::ExtAC;
 
33690
  friend class ::ExtACBuilderCoupling;
 
33691
  friend class ::ExtACSyntaxCoupling;
 
33692
  friend class ::ExtACTree;
 
33693
  friend class ::ExtACKeywords;
 
33694
  friend class ::ExtGnu;
 
33695
  friend class ::PragmaOnceUnitState;
 
33696
  friend class ::PragmaOnce;
 
33697
  friend class ::CMatchSyntax;
 
33698
 
 
33699
#line 600 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33700
 
 
33701
public:
 
33702
  /** Constructor. */
 
33703
  CT_TemplateArgList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
33704
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33705
  static const char *NodeId ();
 
33706
  /** Get the name of the node. Can be compared with NodeId(). */
 
33707
  const char *NodeName () const { return NodeId (); }
 
33708
public:
 
33709
  typedef AC::TLE __AttrTypes;
 
33710
  const char *__attr_name (unsigned i) const { return 0; }
 
33711
  const void *__attr (unsigned __i) const { return 0; }
 
33712
#line 608 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33713
};
 
33714
 
 
33715
/*****************************************************************************/
 
33716
/*                                                                           */
 
33717
/*                              Expressions                                  */
 
33718
/*                                                                           */
 
33719
/*****************************************************************************/
 
33720
 
 
33721
/** \class CT_Expression CTree.h Puma/CTree.h
 
33722
 *  Base class for all expression tree nodes. */
 
33723
 
 
33724
#line 33725 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33725
} // closed Puma
 
33726
class CCExprResolve;
 
33727
class CExprResolve;
 
33728
class WinIfExists;
 
33729
class WinImportHandler;
 
33730
class WinMacros;
 
33731
class WinAsm;
 
33732
class WinDeclSpecs;
 
33733
class WinMemberExplSpec;
 
33734
class WinTypeKeywords;
 
33735
class WinFriend;
 
33736
class ExtAC;
 
33737
class ExtACBuilderCoupling;
 
33738
class ExtACSyntaxCoupling;
 
33739
class ExtACTree;
 
33740
class ExtACKeywords;
 
33741
class ExtGnu;
 
33742
class PragmaOnceUnitState;
 
33743
class PragmaOnce;
 
33744
class CMatchSyntax;
 
33745
namespace Puma {
 
33746
 
 
33747
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33748
 
 
33749
#line 33750 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33750
} // closed Puma
 
33751
 
 
33752
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33753
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33754
#include "CCExprResolveH.ah"
 
33755
#endif
 
33756
namespace Puma {
 
33757
 
 
33758
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33759
 
 
33760
#line 33761 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33761
} // closed Puma
 
33762
 
 
33763
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33764
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33765
#include "CExprResolveH.ah"
 
33766
#endif
 
33767
namespace Puma {
 
33768
 
 
33769
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33770
class CT_Expression : public CTree, public CSemValue {
 
33771
#line 33772 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33772
  friend class ::CCExprResolve;
 
33773
  friend class ::CExprResolve;
 
33774
  friend class ::WinIfExists;
 
33775
  friend class ::WinImportHandler;
 
33776
  friend class ::WinMacros;
 
33777
  friend class ::WinAsm;
 
33778
  friend class ::WinDeclSpecs;
 
33779
  friend class ::WinMemberExplSpec;
 
33780
  friend class ::WinTypeKeywords;
 
33781
  friend class ::WinFriend;
 
33782
  friend class ::ExtAC;
 
33783
  friend class ::ExtACBuilderCoupling;
 
33784
  friend class ::ExtACSyntaxCoupling;
 
33785
  friend class ::ExtACTree;
 
33786
  friend class ::ExtACKeywords;
 
33787
  friend class ::ExtGnu;
 
33788
  friend class ::PragmaOnceUnitState;
 
33789
  friend class ::PragmaOnce;
 
33790
  friend class ::CMatchSyntax;
 
33791
 
 
33792
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33793
 
 
33794
protected:
 
33795
  /** Constructor. */
 
33796
  CT_Expression () {}
 
33797
 
 
33798
public:
 
33799
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33800
  static const char *NodeId ();
 
33801
  /** Get the name of the node. Can be compared with NodeId(). */
 
33802
  const char *NodeName () const { return NodeId (); }
 
33803
  /** Get the type of the expression.
 
33804
   *  \return The type information object or NULL. */
 
33805
  CTypeInfo *Type () const { return type; }
 
33806
  /** Get the value of the expression.
 
33807
   *  \return The value object or NULL. */
 
33808
  CExprValue *Value () const { return value; }
 
33809
  /** Get the semantic value information of the expression.
 
33810
   *  \return The value object or NULL. */
 
33811
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
33812
  /** Get this. */
 
33813
  virtual CT_Expression *IsExpression () { return this; }
 
33814
   private:
 
33815
  typedef CT_Expression CCExprResolveExpr;
 
33816
 
 
33817
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33818
 public :
 
33819
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33820
  typedef CT_Expression CExprResolveExpr;
 
33821
 
 
33822
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33823
 public :
 
33824
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33825
  typedef AC::TLE __AttrTypes;
 
33826
  const char *__attr_name (unsigned i) const { return 0; }
 
33827
  const void *__attr (unsigned __i) const { return 0; }
 
33828
#line 639 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33829
};
 
33830
 
 
33831
/** \class CT_Call CTree.h Puma/CTree.h
 
33832
 *  Tree node representing explicit or implicit function calls 
 
33833
 *  including built-in or user-defined functions and overloaded
 
33834
 *  operators. */
 
33835
 
 
33836
#line 33837 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33837
} // closed Puma
 
33838
class CCExprResolve;
 
33839
class CExprResolve;
 
33840
class WinIfExists;
 
33841
class WinImportHandler;
 
33842
class WinMacros;
 
33843
class WinAsm;
 
33844
class WinDeclSpecs;
 
33845
class WinMemberExplSpec;
 
33846
class WinTypeKeywords;
 
33847
class WinFriend;
 
33848
class ExtAC;
 
33849
class ExtACBuilderCoupling;
 
33850
class ExtACSyntaxCoupling;
 
33851
class ExtACTree;
 
33852
class ExtACKeywords;
 
33853
class ExtGnu;
 
33854
class PragmaOnceUnitState;
 
33855
class PragmaOnce;
 
33856
class CMatchSyntax;
 
33857
namespace Puma {
 
33858
 
 
33859
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33860
 
 
33861
#line 33862 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33862
} // closed Puma
 
33863
 
 
33864
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33865
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33866
#include "CCExprResolveH.ah"
 
33867
#endif
 
33868
namespace Puma {
 
33869
 
 
33870
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33871
 
 
33872
#line 33873 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33873
} // closed Puma
 
33874
 
 
33875
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33876
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33877
#include "CExprResolveH.ah"
 
33878
#endif
 
33879
namespace Puma {
 
33880
 
 
33881
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33882
class CT_Call : public CT_Expression, public CSemObject {
 
33883
#line 33884 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33884
  friend class ::CCExprResolve;
 
33885
  friend class ::CExprResolve;
 
33886
  friend class ::WinIfExists;
 
33887
  friend class ::WinImportHandler;
 
33888
  friend class ::WinMacros;
 
33889
  friend class ::WinAsm;
 
33890
  friend class ::WinDeclSpecs;
 
33891
  friend class ::WinMemberExplSpec;
 
33892
  friend class ::WinTypeKeywords;
 
33893
  friend class ::WinFriend;
 
33894
  friend class ::ExtAC;
 
33895
  friend class ::ExtACBuilderCoupling;
 
33896
  friend class ::ExtACSyntaxCoupling;
 
33897
  friend class ::ExtACTree;
 
33898
  friend class ::ExtACKeywords;
 
33899
  friend class ::ExtGnu;
 
33900
  friend class ::PragmaOnceUnitState;
 
33901
  friend class ::PragmaOnce;
 
33902
  friend class ::CMatchSyntax;
 
33903
 
 
33904
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33905
 
 
33906
protected:
 
33907
  /** Constructor. */
 
33908
  CT_Call () {}
 
33909
  
 
33910
public:
 
33911
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
33912
  static const char *NodeId ();
 
33913
  /** Get the name of the node. Can be compared with NodeId(). */
 
33914
  const char *NodeName () const { return NodeId (); }
 
33915
  /** Get the semantic information of the call. */
 
33916
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
33917
  /** Get this. */
 
33918
  CT_Call *IsCall () { return this; }
 
33919
   private:
 
33920
  typedef CT_Call CCExprResolveExpr;
 
33921
 
 
33922
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
33923
 public :
 
33924
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
33925
  typedef CT_Call CExprResolveExpr;
 
33926
 
 
33927
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
33928
 public :
 
33929
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
33930
  typedef AC::TLE __AttrTypes;
 
33931
  const char *__attr_name (unsigned i) const { return 0; }
 
33932
  const void *__attr (unsigned __i) const { return 0; }
 
33933
#line 659 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33934
};
 
33935
 
 
33936
/** \class CT_ImplicitCall CTree.h Puma/CTree.h
 
33937
 *  Tree node representing implicit function calls detected by
 
33938
 *  the semantic analysis. 
 
33939
 *  Example:
 
33940
 *  \code
 
33941
 * class Number {
 
33942
 *   int _n;
 
33943
 * public:
 
33944
 *   Number(int n) : _n(n) {}
 
33945
 *   int operator+(const Number& n) { return n._n + _n; }
 
33946
 * };
 
33947
 *     
 
33948
 * Number one(1), two(2);
 
33949
 * one + two;  // implicitely calls one.operator+(two)
 
33950
 *  \endcode */
 
33951
 
 
33952
#line 33953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33953
} // closed Puma
 
33954
class CCExprResolve;
 
33955
class CExprResolve;
 
33956
class WinIfExists;
 
33957
class WinImportHandler;
 
33958
class WinMacros;
 
33959
class WinAsm;
 
33960
class WinDeclSpecs;
 
33961
class WinMemberExplSpec;
 
33962
class WinTypeKeywords;
 
33963
class WinFriend;
 
33964
class ExtAC;
 
33965
class ExtACBuilderCoupling;
 
33966
class ExtACSyntaxCoupling;
 
33967
class ExtACTree;
 
33968
class ExtACKeywords;
 
33969
class ExtGnu;
 
33970
class PragmaOnceUnitState;
 
33971
class PragmaOnce;
 
33972
class CMatchSyntax;
 
33973
namespace Puma {
 
33974
 
 
33975
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33976
 
 
33977
#line 33978 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33978
} // closed Puma
 
33979
 
 
33980
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33981
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
33982
#include "CCExprResolveH.ah"
 
33983
#endif
 
33984
namespace Puma {
 
33985
 
 
33986
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33987
 
 
33988
#line 33989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
33989
} // closed Puma
 
33990
 
 
33991
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33992
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
33993
#include "CExprResolveH.ah"
 
33994
#endif
 
33995
namespace Puma {
 
33996
 
 
33997
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
33998
class CT_ImplicitCall : public CT_Call {
 
33999
#line 34000 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34000
  friend class ::CCExprResolve;
 
34001
  friend class ::CExprResolve;
 
34002
  friend class ::WinIfExists;
 
34003
  friend class ::WinImportHandler;
 
34004
  friend class ::WinMacros;
 
34005
  friend class ::WinAsm;
 
34006
  friend class ::WinDeclSpecs;
 
34007
  friend class ::WinMemberExplSpec;
 
34008
  friend class ::WinTypeKeywords;
 
34009
  friend class ::WinFriend;
 
34010
  friend class ::ExtAC;
 
34011
  friend class ::ExtACBuilderCoupling;
 
34012
  friend class ::ExtACSyntaxCoupling;
 
34013
  friend class ::ExtACTree;
 
34014
  friend class ::ExtACKeywords;
 
34015
  friend class ::ExtGnu;
 
34016
  friend class ::PragmaOnceUnitState;
 
34017
  friend class ::PragmaOnce;
 
34018
  friend class ::CMatchSyntax;
 
34019
 
 
34020
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34021
 
 
34022
  CTree *_arg;
 
34023
 
 
34024
public:
 
34025
  /** Constructor.
 
34026
   *  \param arg The call argument. */
 
34027
  CT_ImplicitCall (CTree *arg) { AddSon (_arg, arg); }
 
34028
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34029
  static const char *NodeId ();
 
34030
  /** Get the name of the node. Can be compared with NodeId(). */
 
34031
  const char *NodeName () const { return NodeId (); }
 
34032
  /** Get the number of sons. */
 
34033
  int Sons () const { return 1; }
 
34034
  /** Get the n-th son.
 
34035
   *  \param n The index of the son.
 
34036
   *  \return The n-th son or NULL. */
 
34037
  CTree *Son (int n) const { return (n == 0) ? _arg : (CTree*)0; }
 
34038
  /** Replace a son.
 
34039
   *  \param old_son The son to replace.
 
34040
   *  \param new_son The new son. */
 
34041
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
34042
   { CTree::ReplaceSon (_arg, old_son, new_son); }
 
34043
   private:
 
34044
  typedef CT_ImplicitCall CCExprResolveExpr;
 
34045
 
 
34046
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34047
 public :
 
34048
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34049
  typedef CT_ImplicitCall CExprResolveExpr;
 
34050
 
 
34051
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34052
 public :
 
34053
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34054
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
34055
  const char *__attr_name (unsigned i) const {
 
34056
    static const char *names[] = { "_arg" }; return names[i];
 
34057
  }
 
34058
  const void *__attr (unsigned __i) const {
 
34059
    switch (__i) { case 0: return &_arg; default: return 0; }
 
34060
  }
 
34061
#line 698 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34062
};
 
34063
 
 
34064
/** \class CT_String CTree.h Puma/CTree.h
 
34065
 *  Tree node representing a string literal. 
 
34066
 *  Example: \code "abc" \endcode */
 
34067
 
 
34068
#line 34069 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34069
} // closed Puma
 
34070
class CCExprResolve;
 
34071
class CExprResolve;
 
34072
class WinIfExists;
 
34073
class WinImportHandler;
 
34074
class WinMacros;
 
34075
class WinAsm;
 
34076
class WinDeclSpecs;
 
34077
class WinMemberExplSpec;
 
34078
class WinTypeKeywords;
 
34079
class WinFriend;
 
34080
class ExtAC;
 
34081
class ExtACBuilderCoupling;
 
34082
class ExtACSyntaxCoupling;
 
34083
class ExtACTree;
 
34084
class ExtACKeywords;
 
34085
class ExtGnu;
 
34086
class PragmaOnceUnitState;
 
34087
class PragmaOnce;
 
34088
class CMatchSyntax;
 
34089
namespace Puma {
 
34090
 
 
34091
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34092
 
 
34093
#line 34094 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34094
} // closed Puma
 
34095
 
 
34096
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34097
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34098
#include "CCExprResolveH.ah"
 
34099
#endif
 
34100
namespace Puma {
 
34101
 
 
34102
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34103
 
 
34104
#line 34105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34105
} // closed Puma
 
34106
 
 
34107
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34108
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34109
#include "CExprResolveH.ah"
 
34110
#endif
 
34111
namespace Puma {
 
34112
 
 
34113
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34114
class CT_String : public CT_List, public CSemValue {
 
34115
#line 34116 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34116
  friend class ::CCExprResolve;
 
34117
  friend class ::CExprResolve;
 
34118
  friend class ::WinIfExists;
 
34119
  friend class ::WinImportHandler;
 
34120
  friend class ::WinMacros;
 
34121
  friend class ::WinAsm;
 
34122
  friend class ::WinDeclSpecs;
 
34123
  friend class ::WinMemberExplSpec;
 
34124
  friend class ::WinTypeKeywords;
 
34125
  friend class ::WinFriend;
 
34126
  friend class ::ExtAC;
 
34127
  friend class ::ExtACBuilderCoupling;
 
34128
  friend class ::ExtACSyntaxCoupling;
 
34129
  friend class ::ExtACTree;
 
34130
  friend class ::ExtACKeywords;
 
34131
  friend class ::ExtGnu;
 
34132
  friend class ::PragmaOnceUnitState;
 
34133
  friend class ::PragmaOnce;
 
34134
  friend class ::CMatchSyntax;
 
34135
 
 
34136
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34137
 
 
34138
public:
 
34139
  /** Constructor. 
 
34140
   *  \param size The number of sub-strings. */
 
34141
  CT_String (int size) : CT_List (size, 1) {}
 
34142
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34143
  static const char *NodeId ();
 
34144
  /** Get the name of the node. Can be compared with NodeId(). */
 
34145
  const char *NodeName () const { return NodeId (); }
 
34146
 
 
34147
  /** Get the type of the string. 
 
34148
   *  \return The type or NULL. */
 
34149
  CTypeInfo *Type () const { return type; }
 
34150
  /** Get the string value.
 
34151
   *  \return The value or NULL. */
 
34152
  CExprValue *Value () const { return value; }
 
34153
  /** Get the semantic value info object.
 
34154
   *  \return The semantic value object or NULL. */
 
34155
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
34156
  /** Get this. */
 
34157
  virtual CT_String *IsString () { return this; }
 
34158
   private:
 
34159
  typedef CT_String CCExprResolveExpr;
 
34160
 
 
34161
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34162
 public :
 
34163
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34164
  typedef CT_String CExprResolveExpr;
 
34165
 
 
34166
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34167
 public :
 
34168
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34169
  typedef AC::TLE __AttrTypes;
 
34170
  const char *__attr_name (unsigned i) const { return 0; }
 
34171
  const void *__attr (unsigned __i) const { return 0; }
 
34172
#line 724 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34173
};
 
34174
 
 
34175
/** \class CT_WideString CTree.h Puma/CTree.h
 
34176
 *  Tree node representing a wide string literal. 
 
34177
 *  Example: \code L"abc" \endcode */
 
34178
 
 
34179
#line 34180 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34180
} // closed Puma
 
34181
class CCExprResolve;
 
34182
class CExprResolve;
 
34183
class WinIfExists;
 
34184
class WinImportHandler;
 
34185
class WinMacros;
 
34186
class WinAsm;
 
34187
class WinDeclSpecs;
 
34188
class WinMemberExplSpec;
 
34189
class WinTypeKeywords;
 
34190
class WinFriend;
 
34191
class ExtAC;
 
34192
class ExtACBuilderCoupling;
 
34193
class ExtACSyntaxCoupling;
 
34194
class ExtACTree;
 
34195
class ExtACKeywords;
 
34196
class ExtGnu;
 
34197
class PragmaOnceUnitState;
 
34198
class PragmaOnce;
 
34199
class CMatchSyntax;
 
34200
namespace Puma {
 
34201
 
 
34202
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34203
 
 
34204
#line 34205 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34205
} // closed Puma
 
34206
 
 
34207
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34208
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34209
#include "CCExprResolveH.ah"
 
34210
#endif
 
34211
namespace Puma {
 
34212
 
 
34213
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34214
 
 
34215
#line 34216 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34216
} // closed Puma
 
34217
 
 
34218
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34219
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34220
#include "CExprResolveH.ah"
 
34221
#endif
 
34222
namespace Puma {
 
34223
 
 
34224
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34225
class CT_WideString : public CT_String {
 
34226
#line 34227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34227
  friend class ::CCExprResolve;
 
34228
  friend class ::CExprResolve;
 
34229
  friend class ::WinIfExists;
 
34230
  friend class ::WinImportHandler;
 
34231
  friend class ::WinMacros;
 
34232
  friend class ::WinAsm;
 
34233
  friend class ::WinDeclSpecs;
 
34234
  friend class ::WinMemberExplSpec;
 
34235
  friend class ::WinTypeKeywords;
 
34236
  friend class ::WinFriend;
 
34237
  friend class ::ExtAC;
 
34238
  friend class ::ExtACBuilderCoupling;
 
34239
  friend class ::ExtACSyntaxCoupling;
 
34240
  friend class ::ExtACTree;
 
34241
  friend class ::ExtACKeywords;
 
34242
  friend class ::ExtGnu;
 
34243
  friend class ::PragmaOnceUnitState;
 
34244
  friend class ::PragmaOnce;
 
34245
  friend class ::CMatchSyntax;
 
34246
 
 
34247
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34248
 
 
34249
public:
 
34250
  /** Constructor.
 
34251
   *  \param size The number of sub-strings. */
 
34252
  CT_WideString (int size) : CT_String (size) {}
 
34253
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34254
  static const char *NodeId ();
 
34255
  /** Get the name of the node. Can be compared with NodeId(). */
 
34256
  const char *NodeName () const { return NodeId (); }
 
34257
   private:
 
34258
  typedef CT_WideString CCExprResolveExpr;
 
34259
 
 
34260
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34261
 public :
 
34262
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34263
  typedef CT_WideString CExprResolveExpr;
 
34264
 
 
34265
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34266
 public :
 
34267
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34268
  typedef AC::TLE __AttrTypes;
 
34269
  const char *__attr_name (unsigned i) const { return 0; }
 
34270
  const void *__attr (unsigned __i) const { return 0; }
 
34271
#line 738 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34272
};
 
34273
 
 
34274
/** \class CT_Integer CTree.h Puma/CTree.h
 
34275
 *  Tree node representing an integer constant. 
 
34276
 *  Example: \code 1234 \endcode */
 
34277
 
 
34278
#line 34279 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34279
} // closed Puma
 
34280
class CCExprResolve;
 
34281
class CExprResolve;
 
34282
class WinIfExists;
 
34283
class WinImportHandler;
 
34284
class WinMacros;
 
34285
class WinAsm;
 
34286
class WinDeclSpecs;
 
34287
class WinMemberExplSpec;
 
34288
class WinTypeKeywords;
 
34289
class WinFriend;
 
34290
class ExtAC;
 
34291
class ExtACBuilderCoupling;
 
34292
class ExtACSyntaxCoupling;
 
34293
class ExtACTree;
 
34294
class ExtACKeywords;
 
34295
class ExtGnu;
 
34296
class PragmaOnceUnitState;
 
34297
class PragmaOnce;
 
34298
class CMatchSyntax;
 
34299
namespace Puma {
 
34300
 
 
34301
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34302
 
 
34303
#line 34304 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34304
} // closed Puma
 
34305
 
 
34306
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34307
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34308
#include "CCExprResolveH.ah"
 
34309
#endif
 
34310
namespace Puma {
 
34311
 
 
34312
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34313
 
 
34314
#line 34315 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34315
} // closed Puma
 
34316
 
 
34317
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34318
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34319
#include "CExprResolveH.ah"
 
34320
#endif
 
34321
namespace Puma {
 
34322
 
 
34323
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34324
class CT_Integer : public CT_Expression {
 
34325
#line 34326 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34326
  friend class ::CCExprResolve;
 
34327
  friend class ::CExprResolve;
 
34328
  friend class ::WinIfExists;
 
34329
  friend class ::WinImportHandler;
 
34330
  friend class ::WinMacros;
 
34331
  friend class ::WinAsm;
 
34332
  friend class ::WinDeclSpecs;
 
34333
  friend class ::WinMemberExplSpec;
 
34334
  friend class ::WinTypeKeywords;
 
34335
  friend class ::WinFriend;
 
34336
  friend class ::ExtAC;
 
34337
  friend class ::ExtACBuilderCoupling;
 
34338
  friend class ::ExtACSyntaxCoupling;
 
34339
  friend class ::ExtACTree;
 
34340
  friend class ::ExtACKeywords;
 
34341
  friend class ::ExtGnu;
 
34342
  friend class ::PragmaOnceUnitState;
 
34343
  friend class ::PragmaOnce;
 
34344
  friend class ::CMatchSyntax;
 
34345
 
 
34346
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34347
 
 
34348
  CTree *_value;  // CT_Token
 
34349
 
 
34350
public:
 
34351
  /** Constructor.
 
34352
   *  \param token The token containing the integer value. */
 
34353
  CT_Integer (CTree *token) { AddSon (_value, token); }
 
34354
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34355
  static const char *NodeId ();
 
34356
  /** Get the name of the node. Can be compared with NodeId(). */
 
34357
  const char *NodeName () const { return NodeId (); }
 
34358
  /** Get the number of sons. */
 
34359
  int Sons () const { return _value ? 1 : 0; }
 
34360
  /** Get the n-th son.
 
34361
   *  \param n The index of the son.
 
34362
   *  \return The n-th son or NULL. */
 
34363
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
34364
  /** Replace a son.
 
34365
   *  \param old_son The son to replace.
 
34366
   *  \param new_son The new son. */
 
34367
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
34368
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
34369
   private:
 
34370
  typedef CT_Integer CCExprResolveExpr;
 
34371
 
 
34372
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34373
 public :
 
34374
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34375
  typedef CT_Integer CExprResolveExpr;
 
34376
 
 
34377
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34378
 public :
 
34379
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34380
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
34381
  const char *__attr_name (unsigned i) const {
 
34382
    static const char *names[] = { "_value" }; return names[i];
 
34383
  }
 
34384
  const void *__attr (unsigned __i) const {
 
34385
    switch (__i) { case 0: return &_value; default: return 0; }
 
34386
  }
 
34387
#line 765 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34388
};
 
34389
 
 
34390
/** \class CT_Character CTree.h Puma/CTree.h
 
34391
 *  Tree node representing a single character constant. 
 
34392
 *  Example: \code 'a' \endcode */
 
34393
 
 
34394
#line 34395 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34395
} // closed Puma
 
34396
class CCExprResolve;
 
34397
class CExprResolve;
 
34398
class WinIfExists;
 
34399
class WinImportHandler;
 
34400
class WinMacros;
 
34401
class WinAsm;
 
34402
class WinDeclSpecs;
 
34403
class WinMemberExplSpec;
 
34404
class WinTypeKeywords;
 
34405
class WinFriend;
 
34406
class ExtAC;
 
34407
class ExtACBuilderCoupling;
 
34408
class ExtACSyntaxCoupling;
 
34409
class ExtACTree;
 
34410
class ExtACKeywords;
 
34411
class ExtGnu;
 
34412
class PragmaOnceUnitState;
 
34413
class PragmaOnce;
 
34414
class CMatchSyntax;
 
34415
namespace Puma {
 
34416
 
 
34417
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34418
 
 
34419
#line 34420 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34420
} // closed Puma
 
34421
 
 
34422
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34423
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34424
#include "CCExprResolveH.ah"
 
34425
#endif
 
34426
namespace Puma {
 
34427
 
 
34428
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34429
 
 
34430
#line 34431 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34431
} // closed Puma
 
34432
 
 
34433
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34434
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34435
#include "CExprResolveH.ah"
 
34436
#endif
 
34437
namespace Puma {
 
34438
 
 
34439
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34440
class CT_Character : public CT_Expression {
 
34441
#line 34442 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34442
  friend class ::CCExprResolve;
 
34443
  friend class ::CExprResolve;
 
34444
  friend class ::WinIfExists;
 
34445
  friend class ::WinImportHandler;
 
34446
  friend class ::WinMacros;
 
34447
  friend class ::WinAsm;
 
34448
  friend class ::WinDeclSpecs;
 
34449
  friend class ::WinMemberExplSpec;
 
34450
  friend class ::WinTypeKeywords;
 
34451
  friend class ::WinFriend;
 
34452
  friend class ::ExtAC;
 
34453
  friend class ::ExtACBuilderCoupling;
 
34454
  friend class ::ExtACSyntaxCoupling;
 
34455
  friend class ::ExtACTree;
 
34456
  friend class ::ExtACKeywords;
 
34457
  friend class ::ExtGnu;
 
34458
  friend class ::PragmaOnceUnitState;
 
34459
  friend class ::PragmaOnce;
 
34460
  friend class ::CMatchSyntax;
 
34461
 
 
34462
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34463
 
 
34464
  CTree *_value;  // CT_Token
 
34465
 
 
34466
public:
 
34467
  /** Constructor.
 
34468
   *  \param token The token containing the character value. */
 
34469
  CT_Character (CTree *token) { AddSon (_value, token); }
 
34470
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34471
  static const char *NodeId ();
 
34472
  /** Get the name of the node. Can be compared with NodeId(). */
 
34473
  const char *NodeName () const { return NodeId (); }
 
34474
  /** Get the number of sons. */
 
34475
  int Sons () const { return 1; }
 
34476
  /** Get the n-th son.
 
34477
   *  \param n The index of the son.
 
34478
   *  \return The n-th son or NULL. */
 
34479
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
34480
  /** Replace a son.
 
34481
   *  \param old_son The son to replace.
 
34482
   *  \param new_son The new son. */
 
34483
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
34484
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
34485
   private:
 
34486
  typedef CT_Character CCExprResolveExpr;
 
34487
 
 
34488
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34489
 public :
 
34490
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34491
  typedef CT_Character CExprResolveExpr;
 
34492
 
 
34493
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34494
 public :
 
34495
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34496
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
34497
  const char *__attr_name (unsigned i) const {
 
34498
    static const char *names[] = { "_value" }; return names[i];
 
34499
  }
 
34500
  const void *__attr (unsigned __i) const {
 
34501
    switch (__i) { case 0: return &_value; default: return 0; }
 
34502
  }
 
34503
#line 792 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34504
};
 
34505
 
 
34506
/** \class CT_WideCharacter CTree.h Puma/CTree.h
 
34507
 *  Tree node representing a wide character constant. 
 
34508
 *  Example: \code L'a' \endcode */
 
34509
 
 
34510
#line 34511 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34511
} // closed Puma
 
34512
class CCExprResolve;
 
34513
class CExprResolve;
 
34514
class WinIfExists;
 
34515
class WinImportHandler;
 
34516
class WinMacros;
 
34517
class WinAsm;
 
34518
class WinDeclSpecs;
 
34519
class WinMemberExplSpec;
 
34520
class WinTypeKeywords;
 
34521
class WinFriend;
 
34522
class ExtAC;
 
34523
class ExtACBuilderCoupling;
 
34524
class ExtACSyntaxCoupling;
 
34525
class ExtACTree;
 
34526
class ExtACKeywords;
 
34527
class ExtGnu;
 
34528
class PragmaOnceUnitState;
 
34529
class PragmaOnce;
 
34530
class CMatchSyntax;
 
34531
namespace Puma {
 
34532
 
 
34533
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34534
 
 
34535
#line 34536 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34536
} // closed Puma
 
34537
 
 
34538
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34539
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34540
#include "CCExprResolveH.ah"
 
34541
#endif
 
34542
namespace Puma {
 
34543
 
 
34544
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34545
 
 
34546
#line 34547 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34547
} // closed Puma
 
34548
 
 
34549
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34550
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34551
#include "CExprResolveH.ah"
 
34552
#endif
 
34553
namespace Puma {
 
34554
 
 
34555
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34556
class CT_WideCharacter : public CT_Character {
 
34557
#line 34558 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34558
  friend class ::CCExprResolve;
 
34559
  friend class ::CExprResolve;
 
34560
  friend class ::WinIfExists;
 
34561
  friend class ::WinImportHandler;
 
34562
  friend class ::WinMacros;
 
34563
  friend class ::WinAsm;
 
34564
  friend class ::WinDeclSpecs;
 
34565
  friend class ::WinMemberExplSpec;
 
34566
  friend class ::WinTypeKeywords;
 
34567
  friend class ::WinFriend;
 
34568
  friend class ::ExtAC;
 
34569
  friend class ::ExtACBuilderCoupling;
 
34570
  friend class ::ExtACSyntaxCoupling;
 
34571
  friend class ::ExtACTree;
 
34572
  friend class ::ExtACKeywords;
 
34573
  friend class ::ExtGnu;
 
34574
  friend class ::PragmaOnceUnitState;
 
34575
  friend class ::PragmaOnce;
 
34576
  friend class ::CMatchSyntax;
 
34577
 
 
34578
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34579
 
 
34580
public:
 
34581
  /** Constructor.
 
34582
   *  \param token The token containing the wide character value. */
 
34583
  CT_WideCharacter (CTree *token) : CT_Character (token) {}
 
34584
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34585
  static const char *NodeId ();
 
34586
  /** Get the name of the node. Can be compared with NodeId(). */
 
34587
  const char *NodeName () const { return NodeId (); }
 
34588
   private:
 
34589
  typedef CT_WideCharacter CCExprResolveExpr;
 
34590
 
 
34591
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34592
 public :
 
34593
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34594
  typedef CT_WideCharacter CExprResolveExpr;
 
34595
 
 
34596
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34597
 public :
 
34598
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34599
  typedef AC::TLE __AttrTypes;
 
34600
  const char *__attr_name (unsigned i) const { return 0; }
 
34601
  const void *__attr (unsigned __i) const { return 0; }
 
34602
#line 806 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34603
};
 
34604
 
 
34605
/** \class CT_Float CTree.h Puma/CTree.h
 
34606
 *  Tree node representing a floating point constant. 
 
34607
 *  Example: \code 12.34 \endcode */
 
34608
 
 
34609
#line 34610 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34610
} // closed Puma
 
34611
class CCExprResolve;
 
34612
class CExprResolve;
 
34613
class WinIfExists;
 
34614
class WinImportHandler;
 
34615
class WinMacros;
 
34616
class WinAsm;
 
34617
class WinDeclSpecs;
 
34618
class WinMemberExplSpec;
 
34619
class WinTypeKeywords;
 
34620
class WinFriend;
 
34621
class ExtAC;
 
34622
class ExtACBuilderCoupling;
 
34623
class ExtACSyntaxCoupling;
 
34624
class ExtACTree;
 
34625
class ExtACKeywords;
 
34626
class ExtGnu;
 
34627
class PragmaOnceUnitState;
 
34628
class PragmaOnce;
 
34629
class CMatchSyntax;
 
34630
namespace Puma {
 
34631
 
 
34632
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34633
 
 
34634
#line 34635 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34635
} // closed Puma
 
34636
 
 
34637
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34638
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34639
#include "CCExprResolveH.ah"
 
34640
#endif
 
34641
namespace Puma {
 
34642
 
 
34643
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34644
 
 
34645
#line 34646 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34646
} // closed Puma
 
34647
 
 
34648
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34649
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34650
#include "CExprResolveH.ah"
 
34651
#endif
 
34652
namespace Puma {
 
34653
 
 
34654
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34655
class CT_Float : public CT_Expression {
 
34656
#line 34657 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34657
  friend class ::CCExprResolve;
 
34658
  friend class ::CExprResolve;
 
34659
  friend class ::WinIfExists;
 
34660
  friend class ::WinImportHandler;
 
34661
  friend class ::WinMacros;
 
34662
  friend class ::WinAsm;
 
34663
  friend class ::WinDeclSpecs;
 
34664
  friend class ::WinMemberExplSpec;
 
34665
  friend class ::WinTypeKeywords;
 
34666
  friend class ::WinFriend;
 
34667
  friend class ::ExtAC;
 
34668
  friend class ::ExtACBuilderCoupling;
 
34669
  friend class ::ExtACSyntaxCoupling;
 
34670
  friend class ::ExtACTree;
 
34671
  friend class ::ExtACKeywords;
 
34672
  friend class ::ExtGnu;
 
34673
  friend class ::PragmaOnceUnitState;
 
34674
  friend class ::PragmaOnce;
 
34675
  friend class ::CMatchSyntax;
 
34676
 
 
34677
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34678
 
 
34679
  CTree *_value;  // CT_Token
 
34680
 
 
34681
public:
 
34682
  /** Constructor.
 
34683
   *  \param token The token containing the floating point value. */
 
34684
  CT_Float (CTree *token) { AddSon (_value, token); }
 
34685
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34686
  static const char *NodeId ();
 
34687
  /** Get the name of the node. Can be compared with NodeId(). */
 
34688
  const char *NodeName () const { return NodeId (); }
 
34689
  /** Get the number of sons. */
 
34690
  int Sons () const { return 1; }
 
34691
  /** Get the n-th son.
 
34692
   *  \param n The index of the son.
 
34693
   *  \return The n-th son or NULL. */
 
34694
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
34695
  /** Replace a son.
 
34696
   *  \param old_son The son to replace.
 
34697
   *  \param new_son The new son. */
 
34698
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
34699
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
34700
   private:
 
34701
  typedef CT_Float CCExprResolveExpr;
 
34702
 
 
34703
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34704
 public :
 
34705
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34706
  typedef CT_Float CExprResolveExpr;
 
34707
 
 
34708
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34709
 public :
 
34710
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34711
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
34712
  const char *__attr_name (unsigned i) const {
 
34713
    static const char *names[] = { "_value" }; return names[i];
 
34714
  }
 
34715
  const void *__attr (unsigned __i) const {
 
34716
    switch (__i) { case 0: return &_value; default: return 0; }
 
34717
  }
 
34718
#line 833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34719
};
 
34720
 
 
34721
/** \class CT_Bool CTree.h Puma/CTree.h
 
34722
 *  Tree node representing a boolean literal. 
 
34723
 *  Examples: 
 
34724
 *  \code 
 
34725
 * true
 
34726
 * false
 
34727
 *  \endcode */
 
34728
 
 
34729
#line 34730 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34730
} // closed Puma
 
34731
class CCExprResolve;
 
34732
class CExprResolve;
 
34733
class WinIfExists;
 
34734
class WinImportHandler;
 
34735
class WinMacros;
 
34736
class WinAsm;
 
34737
class WinDeclSpecs;
 
34738
class WinMemberExplSpec;
 
34739
class WinTypeKeywords;
 
34740
class WinFriend;
 
34741
class ExtAC;
 
34742
class ExtACBuilderCoupling;
 
34743
class ExtACSyntaxCoupling;
 
34744
class ExtACTree;
 
34745
class ExtACKeywords;
 
34746
class ExtGnu;
 
34747
class PragmaOnceUnitState;
 
34748
class PragmaOnce;
 
34749
class CMatchSyntax;
 
34750
namespace Puma {
 
34751
 
 
34752
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34753
 
 
34754
#line 34755 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34755
} // closed Puma
 
34756
 
 
34757
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34758
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34759
#include "CCExprResolveH.ah"
 
34760
#endif
 
34761
namespace Puma {
 
34762
 
 
34763
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34764
 
 
34765
#line 34766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34766
} // closed Puma
 
34767
 
 
34768
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34769
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34770
#include "CExprResolveH.ah"
 
34771
#endif
 
34772
namespace Puma {
 
34773
 
 
34774
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34775
class CT_Bool : public CT_Expression {
 
34776
#line 34777 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34777
  friend class ::CCExprResolve;
 
34778
  friend class ::CExprResolve;
 
34779
  friend class ::WinIfExists;
 
34780
  friend class ::WinImportHandler;
 
34781
  friend class ::WinMacros;
 
34782
  friend class ::WinAsm;
 
34783
  friend class ::WinDeclSpecs;
 
34784
  friend class ::WinMemberExplSpec;
 
34785
  friend class ::WinTypeKeywords;
 
34786
  friend class ::WinFriend;
 
34787
  friend class ::ExtAC;
 
34788
  friend class ::ExtACBuilderCoupling;
 
34789
  friend class ::ExtACSyntaxCoupling;
 
34790
  friend class ::ExtACTree;
 
34791
  friend class ::ExtACKeywords;
 
34792
  friend class ::ExtGnu;
 
34793
  friend class ::PragmaOnceUnitState;
 
34794
  friend class ::PragmaOnce;
 
34795
  friend class ::CMatchSyntax;
 
34796
 
 
34797
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34798
 
 
34799
  CTree *_value;  // CT_Token
 
34800
 
 
34801
public:
 
34802
  /** Constructor.
 
34803
   *  \param token The token containing the boolean value. */
 
34804
  CT_Bool (CTree *token) { AddSon (_value, token); }
 
34805
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34806
  static const char *NodeId ();
 
34807
  /** Get the name of the node. Can be compared with NodeId(). */
 
34808
  const char *NodeName () const { return NodeId (); }
 
34809
  /** Get the number of sons. */
 
34810
  int Sons () const { return 1; }
 
34811
  /** Get the n-th son.
 
34812
   *  \param n The index of the son.
 
34813
   *  \return The n-th son or NULL. */
 
34814
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
34815
  /** Replace a son.
 
34816
   *  \param old_son The son to replace.
 
34817
   *  \param new_son The new son. */
 
34818
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
34819
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
34820
   private:
 
34821
  typedef CT_Bool CCExprResolveExpr;
 
34822
 
 
34823
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34824
 public :
 
34825
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34826
  typedef CT_Bool CExprResolveExpr;
 
34827
 
 
34828
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34829
 public :
 
34830
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34831
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
34832
  const char *__attr_name (unsigned i) const {
 
34833
    static const char *names[] = { "_value" }; return names[i];
 
34834
  }
 
34835
  const void *__attr (unsigned __i) const {
 
34836
    switch (__i) { case 0: return &_value; default: return 0; }
 
34837
  }
 
34838
#line 864 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34839
};
 
34840
 
 
34841
/** \class CT_BracedExpr CTree.h Puma/CTree.h
 
34842
 *  Tree node representing a braced expression.
 
34843
 *  Example: \code (a+b) \endcode */
 
34844
 
 
34845
#line 34846 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34846
} // closed Puma
 
34847
class CCExprResolve;
 
34848
class CExprResolve;
 
34849
class WinIfExists;
 
34850
class WinImportHandler;
 
34851
class WinMacros;
 
34852
class WinAsm;
 
34853
class WinDeclSpecs;
 
34854
class WinMemberExplSpec;
 
34855
class WinTypeKeywords;
 
34856
class WinFriend;
 
34857
class ExtAC;
 
34858
class ExtACBuilderCoupling;
 
34859
class ExtACSyntaxCoupling;
 
34860
class ExtACTree;
 
34861
class ExtACKeywords;
 
34862
class ExtGnu;
 
34863
class PragmaOnceUnitState;
 
34864
class PragmaOnce;
 
34865
class CMatchSyntax;
 
34866
namespace Puma {
 
34867
 
 
34868
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34869
 
 
34870
#line 34871 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34871
} // closed Puma
 
34872
 
 
34873
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34874
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34875
#include "CCExprResolveH.ah"
 
34876
#endif
 
34877
namespace Puma {
 
34878
 
 
34879
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34880
 
 
34881
#line 34882 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34882
} // closed Puma
 
34883
 
 
34884
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34885
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
34886
#include "CExprResolveH.ah"
 
34887
#endif
 
34888
namespace Puma {
 
34889
 
 
34890
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34891
class CT_BracedExpr : public CT_Expression {
 
34892
#line 34893 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34893
  friend class ::CCExprResolve;
 
34894
  friend class ::CExprResolve;
 
34895
  friend class ::WinIfExists;
 
34896
  friend class ::WinImportHandler;
 
34897
  friend class ::WinMacros;
 
34898
  friend class ::WinAsm;
 
34899
  friend class ::WinDeclSpecs;
 
34900
  friend class ::WinMemberExplSpec;
 
34901
  friend class ::WinTypeKeywords;
 
34902
  friend class ::WinFriend;
 
34903
  friend class ::ExtAC;
 
34904
  friend class ::ExtACBuilderCoupling;
 
34905
  friend class ::ExtACSyntaxCoupling;
 
34906
  friend class ::ExtACTree;
 
34907
  friend class ::ExtACKeywords;
 
34908
  friend class ::ExtGnu;
 
34909
  friend class ::PragmaOnceUnitState;
 
34910
  friend class ::PragmaOnce;
 
34911
  friend class ::CMatchSyntax;
 
34912
 
 
34913
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34914
 
 
34915
  CTree *sons[3]; // open, expr, close
 
34916
 
 
34917
public:
 
34918
  /** Constructor.
 
34919
   *  \param o The opening brace.
 
34920
   *  \param e The enclosed expression.
 
34921
   *  \param c The closing brace. */
 
34922
  CT_BracedExpr (CTree *o, CTree *e, CTree *c) { 
 
34923
    AddSon (sons[0], o); AddSon (sons[1], e); AddSon (sons[2], c); 
 
34924
  }
 
34925
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
34926
  static const char *NodeId ();
 
34927
  /** Get the name of the node. Can be compared with NodeId(). */
 
34928
  const char *NodeName () const { return NodeId (); }
 
34929
  /** Get the number of sons. */
 
34930
  int Sons () const { return 3; }
 
34931
  /** Get the n-th son.
 
34932
   *  \param n The index of the son.
 
34933
   *  \return The n-th son or NULL. */
 
34934
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
34935
  /** Get the enclosed expression. */
 
34936
  CTree *Expr () const { return sons[1]; }
 
34937
  /** Get the semantic value of the expression. */
 
34938
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
34939
  /** Replace a son.
 
34940
   *  \param old_son The son to replace.
 
34941
   *  \param new_son The new son. */
 
34942
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
34943
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
34944
  }
 
34945
   private:
 
34946
  typedef CT_BracedExpr CCExprResolveExpr;
 
34947
 
 
34948
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
34949
 public :
 
34950
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
34951
  typedef CT_BracedExpr CExprResolveExpr;
 
34952
 
 
34953
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
34954
 public :
 
34955
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
34956
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
34957
  const char *__attr_name (unsigned i) const {
 
34958
    static const char *names[] = { "sons" }; return names[i];
 
34959
  }
 
34960
  const void *__attr (unsigned __i) const {
 
34961
    switch (__i) { case 0: return &sons; default: return 0; }
 
34962
  }
 
34963
#line 900 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34964
};
 
34965
 
 
34966
/** \class CT_SimpleName CTree.h Puma/CTree.h
 
34967
 *  Base class for all tree nodes representing a name. 
 
34968
 *  Example: \code a \endcode */
 
34969
 
 
34970
#line 34971 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34971
} // closed Puma
 
34972
class CCExprResolve;
 
34973
class CExprResolve;
 
34974
class WinIfExists;
 
34975
class WinImportHandler;
 
34976
class WinMacros;
 
34977
class WinAsm;
 
34978
class WinDeclSpecs;
 
34979
class WinMemberExplSpec;
 
34980
class WinTypeKeywords;
 
34981
class WinFriend;
 
34982
class ExtAC;
 
34983
class ExtACBuilderCoupling;
 
34984
class ExtACSyntaxCoupling;
 
34985
class ExtACTree;
 
34986
class ExtACKeywords;
 
34987
class ExtGnu;
 
34988
class PragmaOnceUnitState;
 
34989
class PragmaOnce;
 
34990
class CMatchSyntax;
 
34991
namespace Puma {
 
34992
 
 
34993
#line 905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
34994
 
 
34995
#line 34996 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
34996
} // closed Puma
 
34997
 
 
34998
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
34999
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35000
#include "CCExprResolveH.ah"
 
35001
#endif
 
35002
namespace Puma {
 
35003
 
 
35004
#line 905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35005
 
 
35006
#line 35007 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35007
} // closed Puma
 
35008
 
 
35009
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35010
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35011
#include "CExprResolveH.ah"
 
35012
#endif
 
35013
namespace Puma {
 
35014
 
 
35015
#line 905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35016
class CT_SimpleName : public CT_List, public Printable, 
 
35017
                      public CSemValue, public CSemObject {
 
35018
#line 35019 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35019
  friend class ::CCExprResolve;
 
35020
  friend class ::CExprResolve;
 
35021
  friend class ::WinIfExists;
 
35022
  friend class ::WinImportHandler;
 
35023
  friend class ::WinMacros;
 
35024
  friend class ::WinAsm;
 
35025
  friend class ::WinDeclSpecs;
 
35026
  friend class ::WinMemberExplSpec;
 
35027
  friend class ::WinTypeKeywords;
 
35028
  friend class ::WinFriend;
 
35029
  friend class ::ExtAC;
 
35030
  friend class ::ExtACBuilderCoupling;
 
35031
  friend class ::ExtACSyntaxCoupling;
 
35032
  friend class ::ExtACTree;
 
35033
  friend class ::ExtACKeywords;
 
35034
  friend class ::ExtGnu;
 
35035
  friend class ::PragmaOnceUnitState;
 
35036
  friend class ::PragmaOnce;
 
35037
  friend class ::CMatchSyntax;
 
35038
 
 
35039
#line 906 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35040
 
 
35041
protected:
 
35042
  /** Constructor.
 
35043
   *  \param size The number of sub-names (for qualified names). */
 
35044
  CT_SimpleName (int size) : CT_List (size, 1) {}
 
35045
  /** Constructor.
 
35046
   *  \param size The number of sub-names (for qualified names). 
 
35047
   *  \param properties Additional name list properties (for root qualified names). */
 
35048
  CT_SimpleName (int size, int properties) : 
 
35049
    CT_List (size, 2, properties) {}
 
35050
  
 
35051
public:
 
35052
  /** Constructor.
 
35053
   *  \param n The sub-tree containing the name. */
 
35054
  CT_SimpleName (CTree *n) : CT_List (1, 1) { AddSon (n); }
 
35055
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35056
  static const char *NodeId ();
 
35057
  /** Get the name of the node. Can be compared with NodeId(). */
 
35058
  const char *NodeName () const { return NodeId (); }
 
35059
  /** Get the string containing the name. */
 
35060
  virtual const char *Text () const 
 
35061
   { return Son (Sons ()-1)->token ()->text (); }
 
35062
  /** Print the name on the given stream. 
 
35063
   *  \param os The output stream. */
 
35064
  virtual void print (ostream &os) const { os << Text (); }
 
35065
  /** Get this. */
 
35066
  virtual CT_SimpleName *Name () const { return (CT_SimpleName*)this; }
 
35067
  /** Get the type of the entity represented by the name. */
 
35068
  CTypeInfo *Type () const { return type; }
 
35069
  /** Get the value of the entity represented by the name. */ 
 
35070
  CExprValue *Value () const { return value; }
 
35071
  /** Get the sematic value information of the name. */
 
35072
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
35073
  /** Get the sematic information about the name. */
 
35074
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
35075
  /** Get this. */
 
35076
  virtual CT_SimpleName *IsSimpleName () { return this; }  
 
35077
 
 
35078
public:
 
35079
  /** Own new operator reusing memory. */
 
35080
  void *operator new (size_t);
 
35081
  /** Own delete operator. */
 
35082
  void operator delete (void *);
 
35083
   private:
 
35084
  typedef CT_SimpleName CCExprResolveExpr;
 
35085
 
 
35086
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35087
 public :
 
35088
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35089
  typedef CT_SimpleName CExprResolveExpr;
 
35090
 
 
35091
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35092
 public :
 
35093
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35094
  typedef AC::TLE __AttrTypes;
 
35095
  const char *__attr_name (unsigned i) const { return 0; }
 
35096
  const void *__attr (unsigned __i) const { return 0; }
 
35097
#line 949 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35098
};
 
35099
 
 
35100
/** \class CT_SpecialName CTree.h Puma/CTree.h
 
35101
 *  Base class for tree nodes representing a special name, like destructor names. */
 
35102
 
 
35103
#line 35104 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35104
} // closed Puma
 
35105
class CCExprResolve;
 
35106
class CExprResolve;
 
35107
class WinIfExists;
 
35108
class WinImportHandler;
 
35109
class WinMacros;
 
35110
class WinAsm;
 
35111
class WinDeclSpecs;
 
35112
class WinMemberExplSpec;
 
35113
class WinTypeKeywords;
 
35114
class WinFriend;
 
35115
class ExtAC;
 
35116
class ExtACBuilderCoupling;
 
35117
class ExtACSyntaxCoupling;
 
35118
class ExtACTree;
 
35119
class ExtACKeywords;
 
35120
class ExtGnu;
 
35121
class PragmaOnceUnitState;
 
35122
class PragmaOnce;
 
35123
class CMatchSyntax;
 
35124
namespace Puma {
 
35125
 
 
35126
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35127
 
 
35128
#line 35129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35129
} // closed Puma
 
35130
 
 
35131
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35132
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35133
#include "CCExprResolveH.ah"
 
35134
#endif
 
35135
namespace Puma {
 
35136
 
 
35137
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35138
 
 
35139
#line 35140 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35140
} // closed Puma
 
35141
 
 
35142
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35143
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35144
#include "CExprResolveH.ah"
 
35145
#endif
 
35146
namespace Puma {
 
35147
 
 
35148
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35149
class CT_SpecialName : public CT_SimpleName {
 
35150
#line 35151 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35151
  friend class ::CCExprResolve;
 
35152
  friend class ::CExprResolve;
 
35153
  friend class ::WinIfExists;
 
35154
  friend class ::WinImportHandler;
 
35155
  friend class ::WinMacros;
 
35156
  friend class ::WinAsm;
 
35157
  friend class ::WinDeclSpecs;
 
35158
  friend class ::WinMemberExplSpec;
 
35159
  friend class ::WinTypeKeywords;
 
35160
  friend class ::WinFriend;
 
35161
  friend class ::ExtAC;
 
35162
  friend class ::ExtACBuilderCoupling;
 
35163
  friend class ::ExtACSyntaxCoupling;
 
35164
  friend class ::ExtACTree;
 
35165
  friend class ::ExtACKeywords;
 
35166
  friend class ::ExtGnu;
 
35167
  friend class ::PragmaOnceUnitState;
 
35168
  friend class ::PragmaOnce;
 
35169
  friend class ::CMatchSyntax;
 
35170
 
 
35171
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35172
 
 
35173
  char *_name;
 
35174
  
 
35175
protected:
 
35176
  /** Constructor.
 
35177
   *  \param size The number of sub-names (for qualified names). */
 
35178
  CT_SpecialName (int size = 1) : CT_SimpleName (size), _name (0) {}
 
35179
  
 
35180
public:
 
35181
  /** Destructor. Deletes the name string. */
 
35182
  ~CT_SpecialName () { if (_name) delete[] _name; }
 
35183
  /** Get the string containing the name. */
 
35184
  const char *Text () const { return _name; }
 
35185
  /** Set the name. The name is copied.
 
35186
   *  \param n The name. */
 
35187
  void Name (const char *n) { 
 
35188
    if (n) { 
 
35189
      _name = new char[strlen(n) + 1];
 
35190
      strcpy (_name,n);
 
35191
    }
 
35192
  }
 
35193
 
 
35194
public:
 
35195
  /** Own new operator reusing memory. */
 
35196
  void *operator new (size_t);
 
35197
  /** Own delete operator. */
 
35198
  void operator delete (void *);
 
35199
   private:
 
35200
  typedef CT_SpecialName CCExprResolveExpr;
 
35201
 
 
35202
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35203
 public :
 
35204
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35205
  typedef CT_SpecialName CExprResolveExpr;
 
35206
 
 
35207
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35208
 public :
 
35209
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35210
  typedef AC::TL<char *,AC::TLE > __AttrTypes;
 
35211
  const char *__attr_name (unsigned i) const {
 
35212
    static const char *names[] = { "_name" }; return names[i];
 
35213
  }
 
35214
  const void *__attr (unsigned __i) const {
 
35215
    switch (__i) { case 0: return &_name; default: return 0; }
 
35216
  }
 
35217
#line 980 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35218
};
 
35219
 
 
35220
/** \class CT_PrivateName CTree.h Puma/CTree.h
 
35221
 *  Tree node representing a private name. Private names 
 
35222
 *  are generated names for instance for abstract declarators.
 
35223
 *  Example: 
 
35224
 *  \code 
 
35225
 * void foo(int*);  // first parameter of foo has private name
 
35226
 *  \endcode */
 
35227
 
 
35228
#line 35229 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35229
} // closed Puma
 
35230
class CCExprResolve;
 
35231
class CExprResolve;
 
35232
class WinIfExists;
 
35233
class WinImportHandler;
 
35234
class WinMacros;
 
35235
class WinAsm;
 
35236
class WinDeclSpecs;
 
35237
class WinMemberExplSpec;
 
35238
class WinTypeKeywords;
 
35239
class WinFriend;
 
35240
class ExtAC;
 
35241
class ExtACBuilderCoupling;
 
35242
class ExtACSyntaxCoupling;
 
35243
class ExtACTree;
 
35244
class ExtACKeywords;
 
35245
class ExtGnu;
 
35246
class PragmaOnceUnitState;
 
35247
class PragmaOnce;
 
35248
class CMatchSyntax;
 
35249
namespace Puma {
 
35250
 
 
35251
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35252
 
 
35253
#line 35254 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35254
} // closed Puma
 
35255
 
 
35256
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35257
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35258
#include "CCExprResolveH.ah"
 
35259
#endif
 
35260
namespace Puma {
 
35261
 
 
35262
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35263
 
 
35264
#line 35265 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35265
} // closed Puma
 
35266
 
 
35267
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35268
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35269
#include "CExprResolveH.ah"
 
35270
#endif
 
35271
namespace Puma {
 
35272
 
 
35273
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35274
class CT_PrivateName : public CT_SpecialName {
 
35275
#line 35276 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35276
  friend class ::CCExprResolve;
 
35277
  friend class ::CExprResolve;
 
35278
  friend class ::WinIfExists;
 
35279
  friend class ::WinImportHandler;
 
35280
  friend class ::WinMacros;
 
35281
  friend class ::WinAsm;
 
35282
  friend class ::WinDeclSpecs;
 
35283
  friend class ::WinMemberExplSpec;
 
35284
  friend class ::WinTypeKeywords;
 
35285
  friend class ::WinFriend;
 
35286
  friend class ::ExtAC;
 
35287
  friend class ::ExtACBuilderCoupling;
 
35288
  friend class ::ExtACSyntaxCoupling;
 
35289
  friend class ::ExtACTree;
 
35290
  friend class ::ExtACKeywords;
 
35291
  friend class ::ExtGnu;
 
35292
  friend class ::PragmaOnceUnitState;
 
35293
  friend class ::PragmaOnce;
 
35294
  friend class ::CMatchSyntax;
 
35295
 
 
35296
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35297
 
 
35298
public:
 
35299
  /** Constructor.
 
35300
   *  \param n The private (generated) name. */
 
35301
  CT_PrivateName (const char *n) { Name (n); }
 
35302
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35303
  static const char *NodeId ();
 
35304
  /** Get the name of the node. Can be compared with NodeId(). */
 
35305
  const char *NodeName () const { return NodeId (); }
 
35306
  /** Get the number of sons. */
 
35307
  int Sons () const { return 0; }
 
35308
  /** Get the n-th son.
 
35309
   *  \param n The index of the son.
 
35310
   *  \return The n-th son or NULL. */
 
35311
  CTree *Son (int n) const { return (CTree*)0; }
 
35312
 
 
35313
public:
 
35314
  /** Own new operator reusing memory. */
 
35315
  void *operator new (size_t);
 
35316
  /** Own delete operator. */
 
35317
  void operator delete (void *);
 
35318
   private:
 
35319
  typedef CT_PrivateName CCExprResolveExpr;
 
35320
 
 
35321
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35322
 public :
 
35323
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35324
  typedef CT_PrivateName CExprResolveExpr;
 
35325
 
 
35326
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35327
 public :
 
35328
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35329
  typedef AC::TLE __AttrTypes;
 
35330
  const char *__attr_name (unsigned i) const { return 0; }
 
35331
  const void *__attr (unsigned __i) const { return 0; }
 
35332
#line 1010 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35333
};
 
35334
 
 
35335
/** \class CT_DestructorName CTree.h Puma/CTree.h
 
35336
 *  Tree node representing a destructor name.
 
35337
 *  Example: \code ~X \endcode */
 
35338
 
 
35339
#line 35340 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35340
} // closed Puma
 
35341
class CCExprResolve;
 
35342
class CExprResolve;
 
35343
class WinIfExists;
 
35344
class WinImportHandler;
 
35345
class WinMacros;
 
35346
class WinAsm;
 
35347
class WinDeclSpecs;
 
35348
class WinMemberExplSpec;
 
35349
class WinTypeKeywords;
 
35350
class WinFriend;
 
35351
class ExtAC;
 
35352
class ExtACBuilderCoupling;
 
35353
class ExtACSyntaxCoupling;
 
35354
class ExtACTree;
 
35355
class ExtACKeywords;
 
35356
class ExtGnu;
 
35357
class PragmaOnceUnitState;
 
35358
class PragmaOnce;
 
35359
class CMatchSyntax;
 
35360
namespace Puma {
 
35361
 
 
35362
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35363
 
 
35364
#line 35365 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35365
} // closed Puma
 
35366
 
 
35367
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35368
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35369
#include "CCExprResolveH.ah"
 
35370
#endif
 
35371
namespace Puma {
 
35372
 
 
35373
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35374
 
 
35375
#line 35376 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35376
} // closed Puma
 
35377
 
 
35378
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35379
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35380
#include "CExprResolveH.ah"
 
35381
#endif
 
35382
namespace Puma {
 
35383
 
 
35384
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35385
class CT_DestructorName : public CT_SpecialName {
 
35386
#line 35387 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35387
  friend class ::CCExprResolve;
 
35388
  friend class ::CExprResolve;
 
35389
  friend class ::WinIfExists;
 
35390
  friend class ::WinImportHandler;
 
35391
  friend class ::WinMacros;
 
35392
  friend class ::WinAsm;
 
35393
  friend class ::WinDeclSpecs;
 
35394
  friend class ::WinMemberExplSpec;
 
35395
  friend class ::WinTypeKeywords;
 
35396
  friend class ::WinFriend;
 
35397
  friend class ::ExtAC;
 
35398
  friend class ::ExtACBuilderCoupling;
 
35399
  friend class ::ExtACSyntaxCoupling;
 
35400
  friend class ::ExtACTree;
 
35401
  friend class ::ExtACKeywords;
 
35402
  friend class ::ExtGnu;
 
35403
  friend class ::PragmaOnceUnitState;
 
35404
  friend class ::PragmaOnce;
 
35405
  friend class ::CMatchSyntax;
 
35406
 
 
35407
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35408
 
 
35409
public:
 
35410
  /** Constructor.
 
35411
   *  \param t The tilde operator.
 
35412
   *  \param n The class name. */
 
35413
  CT_DestructorName (CTree *t, CTree *n);
 
35414
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35415
  static const char *NodeId ();
 
35416
  /** Get the name of the node. Can be compared with NodeId(). */
 
35417
  const char *NodeName () const { return NodeId (); }
 
35418
 
 
35419
public:
 
35420
  /** Own new operator reusing memory. */
 
35421
  void *operator new (size_t);
 
35422
  /** Own delete operator. */
 
35423
  void operator delete (void *);
 
35424
   private:
 
35425
  typedef CT_DestructorName CCExprResolveExpr;
 
35426
 
 
35427
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35428
 public :
 
35429
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35430
  typedef CT_DestructorName CExprResolveExpr;
 
35431
 
 
35432
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35433
 public :
 
35434
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35435
  typedef AC::TLE __AttrTypes;
 
35436
  const char *__attr_name (unsigned i) const { return 0; }
 
35437
  const void *__attr (unsigned __i) const { return 0; }
 
35438
#line 1031 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35439
};
 
35440
 
 
35441
/** \class CT_TemplateName CTree.h Puma/CTree.h
 
35442
 *  Tree node representing a template name.
 
35443
 *  Example: \code X<T> \endcode */
 
35444
 
 
35445
#line 35446 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35446
} // closed Puma
 
35447
class CCExprResolve;
 
35448
class CExprResolve;
 
35449
class WinIfExists;
 
35450
class WinImportHandler;
 
35451
class WinMacros;
 
35452
class WinAsm;
 
35453
class WinDeclSpecs;
 
35454
class WinMemberExplSpec;
 
35455
class WinTypeKeywords;
 
35456
class WinFriend;
 
35457
class ExtAC;
 
35458
class ExtACBuilderCoupling;
 
35459
class ExtACSyntaxCoupling;
 
35460
class ExtACTree;
 
35461
class ExtACKeywords;
 
35462
class ExtGnu;
 
35463
class PragmaOnceUnitState;
 
35464
class PragmaOnce;
 
35465
class CMatchSyntax;
 
35466
namespace Puma {
 
35467
 
 
35468
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35469
 
 
35470
#line 35471 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35471
} // closed Puma
 
35472
 
 
35473
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35474
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35475
#include "CCExprResolveH.ah"
 
35476
#endif
 
35477
namespace Puma {
 
35478
 
 
35479
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35480
 
 
35481
#line 35482 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35482
} // closed Puma
 
35483
 
 
35484
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35485
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35486
#include "CExprResolveH.ah"
 
35487
#endif
 
35488
namespace Puma {
 
35489
 
 
35490
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35491
class CT_TemplateName : public CT_SpecialName {
 
35492
#line 35493 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35493
  friend class ::CCExprResolve;
 
35494
  friend class ::CExprResolve;
 
35495
  friend class ::WinIfExists;
 
35496
  friend class ::WinImportHandler;
 
35497
  friend class ::WinMacros;
 
35498
  friend class ::WinAsm;
 
35499
  friend class ::WinDeclSpecs;
 
35500
  friend class ::WinMemberExplSpec;
 
35501
  friend class ::WinTypeKeywords;
 
35502
  friend class ::WinFriend;
 
35503
  friend class ::ExtAC;
 
35504
  friend class ::ExtACBuilderCoupling;
 
35505
  friend class ::ExtACSyntaxCoupling;
 
35506
  friend class ::ExtACTree;
 
35507
  friend class ::ExtACKeywords;
 
35508
  friend class ::ExtGnu;
 
35509
  friend class ::PragmaOnceUnitState;
 
35510
  friend class ::PragmaOnce;
 
35511
  friend class ::CMatchSyntax;
 
35512
 
 
35513
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35514
 
 
35515
public:
 
35516
  /** Constructor.
 
35517
   *  \param n The template class or function name.
 
35518
   *  \param a The template argument list. */
 
35519
  CT_TemplateName (CTree *n, CTree *a) 
 
35520
   { AddSon (n); AddSon (a); }
 
35521
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35522
  static const char *NodeId ();
 
35523
  /** Get the name of the node. Can be compared with NodeId(). */
 
35524
  const char *NodeName () const { return NodeId (); }
 
35525
  /** Get the template argument list. */
 
35526
  CT_TemplateArgList *Arguments () const 
 
35527
   { return (CT_TemplateArgList*)Son (Sons ()-1); }
 
35528
  /** Get the template class or function name. */
 
35529
  CT_SimpleName *TemplateName () const 
 
35530
   { return (CT_SimpleName*)Son (Sons ()-2); }
 
35531
  // may change in the future
 
35532
  const char *Text () const { return TemplateName ()->Text (); }
 
35533
 
 
35534
public:
 
35535
  /** Own new operator reusing memory. */
 
35536
  void *operator new (size_t);
 
35537
  /** Own delete operator. */
 
35538
  void operator delete (void *);
 
35539
   private:
 
35540
  typedef CT_TemplateName CCExprResolveExpr;
 
35541
 
 
35542
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35543
 public :
 
35544
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35545
  typedef CT_TemplateName CExprResolveExpr;
 
35546
 
 
35547
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35548
 public :
 
35549
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35550
  typedef AC::TLE __AttrTypes;
 
35551
  const char *__attr_name (unsigned i) const { return 0; }
 
35552
  const void *__attr (unsigned __i) const { return 0; }
 
35553
#line 1061 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35554
};
 
35555
 
 
35556
/** \class CT_OperatorName CTree.h Puma/CTree.h
 
35557
 *  Tree node representing the name of an overloaded operator. 
 
35558
 *  Example: \code operator== \endcode */
 
35559
 
 
35560
#line 35561 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35561
} // closed Puma
 
35562
class CCExprResolve;
 
35563
class CExprResolve;
 
35564
class WinIfExists;
 
35565
class WinImportHandler;
 
35566
class WinMacros;
 
35567
class WinAsm;
 
35568
class WinDeclSpecs;
 
35569
class WinMemberExplSpec;
 
35570
class WinTypeKeywords;
 
35571
class WinFriend;
 
35572
class ExtAC;
 
35573
class ExtACBuilderCoupling;
 
35574
class ExtACSyntaxCoupling;
 
35575
class ExtACTree;
 
35576
class ExtACKeywords;
 
35577
class ExtGnu;
 
35578
class PragmaOnceUnitState;
 
35579
class PragmaOnce;
 
35580
class CMatchSyntax;
 
35581
namespace Puma {
 
35582
 
 
35583
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35584
 
 
35585
#line 35586 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35586
} // closed Puma
 
35587
 
 
35588
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35589
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35590
#include "CCExprResolveH.ah"
 
35591
#endif
 
35592
namespace Puma {
 
35593
 
 
35594
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35595
 
 
35596
#line 35597 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35597
} // closed Puma
 
35598
 
 
35599
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35600
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35601
#include "CExprResolveH.ah"
 
35602
#endif
 
35603
namespace Puma {
 
35604
 
 
35605
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35606
class CT_OperatorName : public CT_SpecialName {
 
35607
#line 35608 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35608
  friend class ::CCExprResolve;
 
35609
  friend class ::CExprResolve;
 
35610
  friend class ::WinIfExists;
 
35611
  friend class ::WinImportHandler;
 
35612
  friend class ::WinMacros;
 
35613
  friend class ::WinAsm;
 
35614
  friend class ::WinDeclSpecs;
 
35615
  friend class ::WinMemberExplSpec;
 
35616
  friend class ::WinTypeKeywords;
 
35617
  friend class ::WinFriend;
 
35618
  friend class ::ExtAC;
 
35619
  friend class ::ExtACBuilderCoupling;
 
35620
  friend class ::ExtACSyntaxCoupling;
 
35621
  friend class ::ExtACTree;
 
35622
  friend class ::ExtACKeywords;
 
35623
  friend class ::ExtGnu;
 
35624
  friend class ::PragmaOnceUnitState;
 
35625
  friend class ::PragmaOnce;
 
35626
  friend class ::CMatchSyntax;
 
35627
 
 
35628
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35629
 
 
35630
  int _oper;
 
35631
 
 
35632
public:
 
35633
  /** Complex operator types. */
 
35634
  enum { 
 
35635
    FCT_CALL = -100,  /** Function call operator, i.e. (). */
 
35636
    SUBSCRIPT,        /** Array subscript operator, i.e. []. */
 
35637
    NEW_ARRAY,        /** New array operator, i.e. new[]. */
 
35638
    DEL_ARRAY         /** Delete array operator, i.e. delete[]. */
 
35639
  };
 
35640
 
 
35641
public:
 
35642
  /** Constructor.
 
35643
   *  \param op The token containing the operator. */
 
35644
  CT_OperatorName (CTree *op);
 
35645
  /** Constructor.
 
35646
   *  \param f The operator function keyword 'operator'.
 
35647
   *  \param op The token containing the operator. 
 
35648
   *  \param o The token of '[' or '('.
 
35649
   *  \param c The token of ']' or ')'. */
 
35650
  CT_OperatorName (CTree *f, CTree *op, CTree *o, CTree *c);
 
35651
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35652
  static const char *NodeId ();
 
35653
  /** Get the name of the node. Can be compared with NodeId(). */
 
35654
  const char *NodeName () const { return NodeId (); }
 
35655
  /** Get the operator type (either the token type or one of 
 
35656
   *  the complex operator types). */
 
35657
  int Operator () const { return _oper; }
 
35658
 
 
35659
public:
 
35660
  /** Own new operator reusing memory. */
 
35661
  void *operator new (size_t);
 
35662
  /** Own delete operator. */
 
35663
  void operator delete (void *);
 
35664
   private:
 
35665
  typedef CT_OperatorName CCExprResolveExpr;
 
35666
 
 
35667
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35668
 public :
 
35669
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35670
  typedef CT_OperatorName CExprResolveExpr;
 
35671
 
 
35672
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35673
 public :
 
35674
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35675
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
35676
  const char *__attr_name (unsigned i) const {
 
35677
    static const char *names[] = { "_oper" }; return names[i];
 
35678
  }
 
35679
  const void *__attr (unsigned __i) const {
 
35680
    switch (__i) { case 0: return &_oper; default: return 0; }
 
35681
  }
 
35682
#line 1101 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35683
};
 
35684
 
 
35685
/** \class CT_ConversionName CTree.h Puma/CTree.h
 
35686
 *  Tree node representing the name of a conversion function.
 
35687
 *  Example: \code operator int* \endcode */
 
35688
 
 
35689
#line 35690 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35690
} // closed Puma
 
35691
class CCExprResolve;
 
35692
class CExprResolve;
 
35693
class WinIfExists;
 
35694
class WinImportHandler;
 
35695
class WinMacros;
 
35696
class WinAsm;
 
35697
class WinDeclSpecs;
 
35698
class WinMemberExplSpec;
 
35699
class WinTypeKeywords;
 
35700
class WinFriend;
 
35701
class ExtAC;
 
35702
class ExtACBuilderCoupling;
 
35703
class ExtACSyntaxCoupling;
 
35704
class ExtACTree;
 
35705
class ExtACKeywords;
 
35706
class ExtGnu;
 
35707
class PragmaOnceUnitState;
 
35708
class PragmaOnce;
 
35709
class CMatchSyntax;
 
35710
namespace Puma {
 
35711
 
 
35712
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35713
 
 
35714
#line 35715 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35715
} // closed Puma
 
35716
 
 
35717
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35718
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35719
#include "CCExprResolveH.ah"
 
35720
#endif
 
35721
namespace Puma {
 
35722
 
 
35723
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35724
 
 
35725
#line 35726 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35726
} // closed Puma
 
35727
 
 
35728
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35729
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35730
#include "CExprResolveH.ah"
 
35731
#endif
 
35732
namespace Puma {
 
35733
 
 
35734
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35735
class CT_ConversionName : public CT_SpecialName {
 
35736
#line 35737 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35737
  friend class ::CCExprResolve;
 
35738
  friend class ::CExprResolve;
 
35739
  friend class ::WinIfExists;
 
35740
  friend class ::WinImportHandler;
 
35741
  friend class ::WinMacros;
 
35742
  friend class ::WinAsm;
 
35743
  friend class ::WinDeclSpecs;
 
35744
  friend class ::WinMemberExplSpec;
 
35745
  friend class ::WinTypeKeywords;
 
35746
  friend class ::WinFriend;
 
35747
  friend class ::ExtAC;
 
35748
  friend class ::ExtACBuilderCoupling;
 
35749
  friend class ::ExtACSyntaxCoupling;
 
35750
  friend class ::ExtACTree;
 
35751
  friend class ::ExtACKeywords;
 
35752
  friend class ::ExtGnu;
 
35753
  friend class ::PragmaOnceUnitState;
 
35754
  friend class ::PragmaOnce;
 
35755
  friend class ::CMatchSyntax;
 
35756
 
 
35757
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35758
 
 
35759
public:
 
35760
  /** Constructor.
 
35761
   *  \param f The operator function keyword 'operator'.
 
35762
   *  \param t The sub-tree containing the conversion type. */
 
35763
  CT_ConversionName (CTree *f, CTree *t);
 
35764
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35765
  static const char *NodeId ();
 
35766
  /** Get the name of the node. Can be compared with NodeId(). */
 
35767
  const char *NodeName () const { return NodeId (); }
 
35768
  /** Get the conversion type. */
 
35769
  CT_NamedType *TypeName () const { return (CT_NamedType*)Son (Sons ()-1); }
 
35770
 
 
35771
public:
 
35772
  /** Own new operator reusing memory. */
 
35773
  void *operator new (size_t);
 
35774
  /** Own delete operator. */
 
35775
  void operator delete (void *);
 
35776
   private:
 
35777
  typedef CT_ConversionName CCExprResolveExpr;
 
35778
 
 
35779
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35780
 public :
 
35781
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35782
  typedef CT_ConversionName CExprResolveExpr;
 
35783
 
 
35784
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35785
 public :
 
35786
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35787
  typedef AC::TLE __AttrTypes;
 
35788
  const char *__attr_name (unsigned i) const { return 0; }
 
35789
  const void *__attr (unsigned __i) const { return 0; }
 
35790
#line 1124 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35791
};
 
35792
 
 
35793
/** \class CT_QualName CTree.h Puma/CTree.h
 
35794
 *  Tree node representing a qualified name.
 
35795
 *  Example: \code X::Y::Z \endcode */
 
35796
 
 
35797
#line 35798 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35798
} // closed Puma
 
35799
class CCExprResolve;
 
35800
class CExprResolve;
 
35801
class WinIfExists;
 
35802
class WinImportHandler;
 
35803
class WinMacros;
 
35804
class WinAsm;
 
35805
class WinDeclSpecs;
 
35806
class WinMemberExplSpec;
 
35807
class WinTypeKeywords;
 
35808
class WinFriend;
 
35809
class ExtAC;
 
35810
class ExtACBuilderCoupling;
 
35811
class ExtACSyntaxCoupling;
 
35812
class ExtACTree;
 
35813
class ExtACKeywords;
 
35814
class ExtGnu;
 
35815
class PragmaOnceUnitState;
 
35816
class PragmaOnce;
 
35817
class CMatchSyntax;
 
35818
namespace Puma {
 
35819
 
 
35820
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35821
 
 
35822
#line 35823 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35823
} // closed Puma
 
35824
 
 
35825
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35826
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35827
#include "CCExprResolveH.ah"
 
35828
#endif
 
35829
namespace Puma {
 
35830
 
 
35831
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35832
 
 
35833
#line 35834 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35834
} // closed Puma
 
35835
 
 
35836
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35837
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35838
#include "CExprResolveH.ah"
 
35839
#endif
 
35840
namespace Puma {
 
35841
 
 
35842
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35843
class CT_QualName : public CT_SimpleName {
 
35844
#line 35845 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35845
  friend class ::CCExprResolve;
 
35846
  friend class ::CExprResolve;
 
35847
  friend class ::WinIfExists;
 
35848
  friend class ::WinImportHandler;
 
35849
  friend class ::WinMacros;
 
35850
  friend class ::WinAsm;
 
35851
  friend class ::WinDeclSpecs;
 
35852
  friend class ::WinMemberExplSpec;
 
35853
  friend class ::WinTypeKeywords;
 
35854
  friend class ::WinFriend;
 
35855
  friend class ::ExtAC;
 
35856
  friend class ::ExtACBuilderCoupling;
 
35857
  friend class ::ExtACSyntaxCoupling;
 
35858
  friend class ::ExtACTree;
 
35859
  friend class ::ExtACKeywords;
 
35860
  friend class ::ExtGnu;
 
35861
  friend class ::PragmaOnceUnitState;
 
35862
  friend class ::PragmaOnce;
 
35863
  friend class ::CMatchSyntax;
 
35864
 
 
35865
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35866
 
 
35867
public:
 
35868
  /** Constructor.
 
35869
   *  \param size The initial number sub-names plus separators. */
 
35870
  CT_QualName (int size = 3) : 
 
35871
    CT_SimpleName (size, CT_List::SEPARATORS) {}
 
35872
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35873
  static const char *NodeId ();
 
35874
  /** Get the name of the node. Can be compared with NodeId(). */
 
35875
  const char *NodeName () const { return NodeId (); }
 
35876
  /** Print the qualified name on the given stream. 
 
35877
   *  \param os The output stream. */
 
35878
  void print (ostream &os) const;
 
35879
  /** Get the last name of the qualified name, e.g. Z of qualified name X::Y::Z. */
 
35880
  CT_SimpleName *Name () const { return (CT_SimpleName*)Son (Sons ()-1); }
 
35881
  /** Get the string containing the last name of the qualified name. */
 
35882
  const char *Text () const { return Name ()->Text (); }
 
35883
  /** Get the type of the last name. */
 
35884
  CTypeInfo *Type () const { return Name ()->Type (); }
 
35885
  /** Get the value of the last name. */
 
35886
  CExprValue *Value () const { return Name ()->Value (); }
 
35887
  /** Get the semantic value object of the last name. */
 
35888
  CSemValue *SemValue () const { return Name ()->SemValue (); }
 
35889
  /** Get the semantic information of the last name. */
 
35890
  CSemObject *SemObject () const { return Name ()->SemObject (); }
 
35891
 
 
35892
public:
 
35893
  /** Own new operator reusing memory. */
 
35894
  void *operator new (size_t);
 
35895
  /** Own delete operator. */
 
35896
  void operator delete (void *);
 
35897
   private:
 
35898
  typedef CT_QualName CCExprResolveExpr;
 
35899
 
 
35900
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
35901
 public :
 
35902
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
35903
  typedef CT_QualName CExprResolveExpr;
 
35904
 
 
35905
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
35906
 public :
 
35907
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
35908
  typedef AC::TLE __AttrTypes;
 
35909
  const char *__attr_name (unsigned i) const { return 0; }
 
35910
  const void *__attr (unsigned __i) const { return 0; }
 
35911
#line 1160 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35912
};
 
35913
 
 
35914
/** \class CT_RootQualName CTree.h Puma/CTree.h
 
35915
 *  Tree node representing a qualified name with introducing name separator.
 
35916
 *  Example: \code ::X::Y::Z \endcode */
 
35917
 
 
35918
#line 35919 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35919
} // closed Puma
 
35920
class CCExprResolve;
 
35921
class CExprResolve;
 
35922
class WinIfExists;
 
35923
class WinImportHandler;
 
35924
class WinMacros;
 
35925
class WinAsm;
 
35926
class WinDeclSpecs;
 
35927
class WinMemberExplSpec;
 
35928
class WinTypeKeywords;
 
35929
class WinFriend;
 
35930
class ExtAC;
 
35931
class ExtACBuilderCoupling;
 
35932
class ExtACSyntaxCoupling;
 
35933
class ExtACTree;
 
35934
class ExtACKeywords;
 
35935
class ExtGnu;
 
35936
class PragmaOnceUnitState;
 
35937
class PragmaOnce;
 
35938
class CMatchSyntax;
 
35939
namespace Puma {
 
35940
 
 
35941
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35942
 
 
35943
#line 35944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35944
} // closed Puma
 
35945
 
 
35946
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35947
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
35948
#include "CCExprResolveH.ah"
 
35949
#endif
 
35950
namespace Puma {
 
35951
 
 
35952
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35953
 
 
35954
#line 35955 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35955
} // closed Puma
 
35956
 
 
35957
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35958
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
35959
#include "CExprResolveH.ah"
 
35960
#endif
 
35961
namespace Puma {
 
35962
 
 
35963
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35964
class CT_RootQualName : public CT_QualName {
 
35965
#line 35966 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
35966
  friend class ::CCExprResolve;
 
35967
  friend class ::CExprResolve;
 
35968
  friend class ::WinIfExists;
 
35969
  friend class ::WinImportHandler;
 
35970
  friend class ::WinMacros;
 
35971
  friend class ::WinAsm;
 
35972
  friend class ::WinDeclSpecs;
 
35973
  friend class ::WinMemberExplSpec;
 
35974
  friend class ::WinTypeKeywords;
 
35975
  friend class ::WinFriend;
 
35976
  friend class ::ExtAC;
 
35977
  friend class ::ExtACBuilderCoupling;
 
35978
  friend class ::ExtACSyntaxCoupling;
 
35979
  friend class ::ExtACTree;
 
35980
  friend class ::ExtACKeywords;
 
35981
  friend class ::ExtGnu;
 
35982
  friend class ::PragmaOnceUnitState;
 
35983
  friend class ::PragmaOnce;
 
35984
  friend class ::CMatchSyntax;
 
35985
 
 
35986
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
35987
 
 
35988
public:
 
35989
  /** Constructor.
 
35990
   *  \param size Initial number of sub-name plus separator. */
 
35991
  CT_RootQualName (int size = 2) : 
 
35992
    CT_QualName (size) { AddProperties (INTRO); }
 
35993
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
35994
  static const char *NodeId ();
 
35995
  /** Get the name of the node. Can be compared with NodeId(). */
 
35996
  const char *NodeName () const { return NodeId (); }
 
35997
 
 
35998
public:
 
35999
  /** Own new operator reusing memory. */
 
36000
  void *operator new (size_t);
 
36001
  /** Own delete operator. */
 
36002
  void operator delete (void *);
 
36003
   private:
 
36004
  typedef CT_RootQualName CCExprResolveExpr;
 
36005
 
 
36006
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36007
 public :
 
36008
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36009
  typedef CT_RootQualName CExprResolveExpr;
 
36010
 
 
36011
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36012
 public :
 
36013
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36014
  typedef AC::TLE __AttrTypes;
 
36015
  const char *__attr_name (unsigned i) const { return 0; }
 
36016
  const void *__attr (unsigned __i) const { return 0; }
 
36017
#line 1181 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36018
};
 
36019
 
 
36020
/** \class CT_BinaryExpr CTree.h Puma/CTree.h
 
36021
 *  Tree node representing a binary expression.
 
36022
 *  Example: \code a+b \endcode */
 
36023
 
 
36024
#line 36025 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36025
} // closed Puma
 
36026
class CCExprResolve;
 
36027
class CExprResolve;
 
36028
class WinIfExists;
 
36029
class WinImportHandler;
 
36030
class WinMacros;
 
36031
class WinAsm;
 
36032
class WinDeclSpecs;
 
36033
class WinMemberExplSpec;
 
36034
class WinTypeKeywords;
 
36035
class WinFriend;
 
36036
class ExtAC;
 
36037
class ExtACBuilderCoupling;
 
36038
class ExtACSyntaxCoupling;
 
36039
class ExtACTree;
 
36040
class ExtACKeywords;
 
36041
class ExtGnu;
 
36042
class PragmaOnceUnitState;
 
36043
class PragmaOnce;
 
36044
class CMatchSyntax;
 
36045
namespace Puma {
 
36046
 
 
36047
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36048
 
 
36049
#line 36050 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36050
} // closed Puma
 
36051
 
 
36052
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36053
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36054
#include "CCExprResolveH.ah"
 
36055
#endif
 
36056
namespace Puma {
 
36057
 
 
36058
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36059
 
 
36060
#line 36061 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36061
} // closed Puma
 
36062
 
 
36063
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36064
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36065
#include "CExprResolveH.ah"
 
36066
#endif
 
36067
namespace Puma {
 
36068
 
 
36069
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36070
class CT_BinaryExpr : public CT_Call {
 
36071
#line 36072 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36072
  friend class ::CCExprResolve;
 
36073
  friend class ::CExprResolve;
 
36074
  friend class ::WinIfExists;
 
36075
  friend class ::WinImportHandler;
 
36076
  friend class ::WinMacros;
 
36077
  friend class ::WinAsm;
 
36078
  friend class ::WinDeclSpecs;
 
36079
  friend class ::WinMemberExplSpec;
 
36080
  friend class ::WinTypeKeywords;
 
36081
  friend class ::WinFriend;
 
36082
  friend class ::ExtAC;
 
36083
  friend class ::ExtACBuilderCoupling;
 
36084
  friend class ::ExtACSyntaxCoupling;
 
36085
  friend class ::ExtACTree;
 
36086
  friend class ::ExtACKeywords;
 
36087
  friend class ::ExtGnu;
 
36088
  friend class ::PragmaOnceUnitState;
 
36089
  friend class ::PragmaOnce;
 
36090
  friend class ::CMatchSyntax;
 
36091
 
 
36092
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36093
 
 
36094
  CTree *sons[3]; // expr, oper, expr
 
36095
 
 
36096
public:
 
36097
  /** Constructor. 
 
36098
   *  \param l Left hand side of the expression. 
 
36099
   *  \param o The operator token. 
 
36100
   *  \param r Right hand side of the expression. */
 
36101
  CT_BinaryExpr (CTree *l, CTree *o, CTree *r) {
 
36102
    AddSon (sons[0], l); AddSon (sons[1], o); AddSon (sons[2], r);
 
36103
  }
 
36104
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36105
  static const char *NodeId ();
 
36106
  /** Get the name of the node. Can be compared with NodeId(). */
 
36107
  const char *NodeName () const { return NodeId (); }
 
36108
  /** Get the number of sons. */
 
36109
  int Sons () const { return 3; }
 
36110
  /** Get the n-th son.
 
36111
   *  \param n The index of the son.
 
36112
   *  \return The n-th son or NULL. */
 
36113
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
36114
  /** Replace a son.
 
36115
   *  \param old_son The son to replace.
 
36116
   *  \param new_son The new son. */
 
36117
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
36118
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
36119
  }
 
36120
   private:
 
36121
  typedef CT_BinaryExpr CCExprResolveExpr;
 
36122
 
 
36123
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36124
 public :
 
36125
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36126
  typedef CT_BinaryExpr CExprResolveExpr;
 
36127
 
 
36128
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36129
 public :
 
36130
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36131
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
36132
  const char *__attr_name (unsigned i) const {
 
36133
    static const char *names[] = { "sons" }; return names[i];
 
36134
  }
 
36135
  const void *__attr (unsigned __i) const {
 
36136
    switch (__i) { case 0: return &sons; default: return 0; }
 
36137
  }
 
36138
#line 1213 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36139
};
 
36140
 
 
36141
/** \class CT_MembPtrExpr CTree.h Puma/CTree.h
 
36142
 *  Tree node representing a member pointer expression.
 
36143
 *  Example: \code a->b \endcode */
 
36144
 
 
36145
#line 36146 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36146
} // closed Puma
 
36147
class CCExprResolve;
 
36148
class CExprResolve;
 
36149
class WinIfExists;
 
36150
class WinImportHandler;
 
36151
class WinMacros;
 
36152
class WinAsm;
 
36153
class WinDeclSpecs;
 
36154
class WinMemberExplSpec;
 
36155
class WinTypeKeywords;
 
36156
class WinFriend;
 
36157
class ExtAC;
 
36158
class ExtACBuilderCoupling;
 
36159
class ExtACSyntaxCoupling;
 
36160
class ExtACTree;
 
36161
class ExtACKeywords;
 
36162
class ExtGnu;
 
36163
class PragmaOnceUnitState;
 
36164
class PragmaOnce;
 
36165
class CMatchSyntax;
 
36166
namespace Puma {
 
36167
 
 
36168
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36169
 
 
36170
#line 36171 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36171
} // closed Puma
 
36172
 
 
36173
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36174
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36175
#include "CCExprResolveH.ah"
 
36176
#endif
 
36177
namespace Puma {
 
36178
 
 
36179
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36180
 
 
36181
#line 36182 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36182
} // closed Puma
 
36183
 
 
36184
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36185
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36186
#include "CExprResolveH.ah"
 
36187
#endif
 
36188
namespace Puma {
 
36189
 
 
36190
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36191
class CT_MembPtrExpr : public CT_Expression, public CSemObject {
 
36192
#line 36193 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36193
  friend class ::CCExprResolve;
 
36194
  friend class ::CExprResolve;
 
36195
  friend class ::WinIfExists;
 
36196
  friend class ::WinImportHandler;
 
36197
  friend class ::WinMacros;
 
36198
  friend class ::WinAsm;
 
36199
  friend class ::WinDeclSpecs;
 
36200
  friend class ::WinMemberExplSpec;
 
36201
  friend class ::WinTypeKeywords;
 
36202
  friend class ::WinFriend;
 
36203
  friend class ::ExtAC;
 
36204
  friend class ::ExtACBuilderCoupling;
 
36205
  friend class ::ExtACSyntaxCoupling;
 
36206
  friend class ::ExtACTree;
 
36207
  friend class ::ExtACKeywords;
 
36208
  friend class ::ExtGnu;
 
36209
  friend class ::PragmaOnceUnitState;
 
36210
  friend class ::PragmaOnce;
 
36211
  friend class ::CMatchSyntax;
 
36212
 
 
36213
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36214
 
 
36215
  CTree *sons[3]; // expr, oper, expr
 
36216
  
 
36217
public:
 
36218
  /** Constructor.
 
36219
   *  \param e Expression on which to call the member.
 
36220
   *  \param o The arrow operator token.
 
36221
   *  \param i The member name. */
 
36222
  CT_MembPtrExpr (CTree *e, CTree *o, CTree *i) {
 
36223
    AddSon (sons[0], e); AddSon (sons[1], o); AddSon (sons[2], i);
 
36224
  }
 
36225
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36226
  static const char *NodeId ();
 
36227
  /** Get the name of the node. Can be compared with NodeId(). */
 
36228
  const char *NodeName () const { return NodeId (); }
 
36229
  /** Get the number of sons. */
 
36230
  int Sons () const { return 3; }
 
36231
  /** Get the n-th son.
 
36232
   *  \param n The index of the son.
 
36233
   *  \return The n-th son or NULL. */
 
36234
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
36235
  /** Replace a son.
 
36236
   *  \param old_son The son to replace.
 
36237
   *  \param new_son The new son. */
 
36238
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
36239
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
36240
  }
 
36241
   private:
 
36242
  typedef CT_MembPtrExpr CCExprResolveExpr;
 
36243
 
 
36244
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36245
 public :
 
36246
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36247
  typedef CT_MembPtrExpr CExprResolveExpr;
 
36248
 
 
36249
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36250
 public :
 
36251
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36252
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
36253
  const char *__attr_name (unsigned i) const {
 
36254
    static const char *names[] = { "sons" }; return names[i];
 
36255
  }
 
36256
  const void *__attr (unsigned __i) const {
 
36257
    switch (__i) { case 0: return &sons; default: return 0; }
 
36258
  }
 
36259
#line 1245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36260
};
 
36261
 
 
36262
/** \class CT_MembRefExpr CTree.h Puma/CTree.h
 
36263
 *  Tree node representing a member reference expression.
 
36264
 *  Example: \code a.b \endcode */
 
36265
 
 
36266
#line 36267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36267
} // closed Puma
 
36268
class CCExprResolve;
 
36269
class CExprResolve;
 
36270
class WinIfExists;
 
36271
class WinImportHandler;
 
36272
class WinMacros;
 
36273
class WinAsm;
 
36274
class WinDeclSpecs;
 
36275
class WinMemberExplSpec;
 
36276
class WinTypeKeywords;
 
36277
class WinFriend;
 
36278
class ExtAC;
 
36279
class ExtACBuilderCoupling;
 
36280
class ExtACSyntaxCoupling;
 
36281
class ExtACTree;
 
36282
class ExtACKeywords;
 
36283
class ExtGnu;
 
36284
class PragmaOnceUnitState;
 
36285
class PragmaOnce;
 
36286
class CMatchSyntax;
 
36287
namespace Puma {
 
36288
 
 
36289
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36290
 
 
36291
#line 36292 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36292
} // closed Puma
 
36293
 
 
36294
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36295
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36296
#include "CCExprResolveH.ah"
 
36297
#endif
 
36298
namespace Puma {
 
36299
 
 
36300
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36301
 
 
36302
#line 36303 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36303
} // closed Puma
 
36304
 
 
36305
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36306
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36307
#include "CExprResolveH.ah"
 
36308
#endif
 
36309
namespace Puma {
 
36310
 
 
36311
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36312
class CT_MembRefExpr : public CT_MembPtrExpr {
 
36313
#line 36314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36314
  friend class ::CCExprResolve;
 
36315
  friend class ::CExprResolve;
 
36316
  friend class ::WinIfExists;
 
36317
  friend class ::WinImportHandler;
 
36318
  friend class ::WinMacros;
 
36319
  friend class ::WinAsm;
 
36320
  friend class ::WinDeclSpecs;
 
36321
  friend class ::WinMemberExplSpec;
 
36322
  friend class ::WinTypeKeywords;
 
36323
  friend class ::WinFriend;
 
36324
  friend class ::ExtAC;
 
36325
  friend class ::ExtACBuilderCoupling;
 
36326
  friend class ::ExtACSyntaxCoupling;
 
36327
  friend class ::ExtACTree;
 
36328
  friend class ::ExtACKeywords;
 
36329
  friend class ::ExtGnu;
 
36330
  friend class ::PragmaOnceUnitState;
 
36331
  friend class ::PragmaOnce;
 
36332
  friend class ::CMatchSyntax;
 
36333
 
 
36334
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36335
 
 
36336
public:
 
36337
  /** Constructor.
 
36338
   *  \param e Expression on which to call the member.
 
36339
   *  \param o The dot operator.
 
36340
   *  \param i The member name. */
 
36341
  CT_MembRefExpr (CTree *e, CTree *o, CTree *i) :
 
36342
    CT_MembPtrExpr (e, o, i) {}
 
36343
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36344
  static const char *NodeId ();
 
36345
  /** Get the name of the node. Can be compared with NodeId(). */
 
36346
  const char *NodeName () const { return NodeId (); }
 
36347
   private:
 
36348
  typedef CT_MembRefExpr CCExprResolveExpr;
 
36349
 
 
36350
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36351
 public :
 
36352
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36353
  typedef CT_MembRefExpr CExprResolveExpr;
 
36354
 
 
36355
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36356
 public :
 
36357
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36358
  typedef AC::TLE __AttrTypes;
 
36359
  const char *__attr_name (unsigned i) const { return 0; }
 
36360
  const void *__attr (unsigned __i) const { return 0; }
 
36361
#line 1262 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36362
};
 
36363
 
 
36364
/** \class CT_UnaryExpr CTree.h Puma/CTree.h
 
36365
 *  Base class for tree nodes representing unary expressions. 
 
36366
 *  Example: \code !a \endcode */
 
36367
 
 
36368
#line 36369 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36369
} // closed Puma
 
36370
class CCExprResolve;
 
36371
class CExprResolve;
 
36372
class WinIfExists;
 
36373
class WinImportHandler;
 
36374
class WinMacros;
 
36375
class WinAsm;
 
36376
class WinDeclSpecs;
 
36377
class WinMemberExplSpec;
 
36378
class WinTypeKeywords;
 
36379
class WinFriend;
 
36380
class ExtAC;
 
36381
class ExtACBuilderCoupling;
 
36382
class ExtACSyntaxCoupling;
 
36383
class ExtACTree;
 
36384
class ExtACKeywords;
 
36385
class ExtGnu;
 
36386
class PragmaOnceUnitState;
 
36387
class PragmaOnce;
 
36388
class CMatchSyntax;
 
36389
namespace Puma {
 
36390
 
 
36391
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36392
 
 
36393
#line 36394 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36394
} // closed Puma
 
36395
 
 
36396
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36397
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36398
#include "CCExprResolveH.ah"
 
36399
#endif
 
36400
namespace Puma {
 
36401
 
 
36402
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36403
 
 
36404
#line 36405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36405
} // closed Puma
 
36406
 
 
36407
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36408
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36409
#include "CExprResolveH.ah"
 
36410
#endif
 
36411
namespace Puma {
 
36412
 
 
36413
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36414
class CT_UnaryExpr : public CT_Call {
 
36415
#line 36416 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36416
  friend class ::CCExprResolve;
 
36417
  friend class ::CExprResolve;
 
36418
  friend class ::WinIfExists;
 
36419
  friend class ::WinImportHandler;
 
36420
  friend class ::WinMacros;
 
36421
  friend class ::WinAsm;
 
36422
  friend class ::WinDeclSpecs;
 
36423
  friend class ::WinMemberExplSpec;
 
36424
  friend class ::WinTypeKeywords;
 
36425
  friend class ::WinFriend;
 
36426
  friend class ::ExtAC;
 
36427
  friend class ::ExtACBuilderCoupling;
 
36428
  friend class ::ExtACSyntaxCoupling;
 
36429
  friend class ::ExtACTree;
 
36430
  friend class ::ExtACKeywords;
 
36431
  friend class ::ExtGnu;
 
36432
  friend class ::PragmaOnceUnitState;
 
36433
  friend class ::PragmaOnce;
 
36434
  friend class ::CMatchSyntax;
 
36435
 
 
36436
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36437
 
 
36438
  CTree *sons[2]; // oper, expr
 
36439
 
 
36440
public:
 
36441
  /** Constructor.
 
36442
   *  \param o The unary operator.
 
36443
   *  \param e The expression on which the operator is invoked. */
 
36444
  CT_UnaryExpr (CTree *o, CTree *e) { AddSon (sons[0], o); AddSon (sons[1], e); }
 
36445
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36446
  static const char *NodeId ();
 
36447
  /** Get the name of the node. Can be compared with NodeId(). */
 
36448
  const char *NodeName () const { return NodeId (); }
 
36449
  /** Get the number of sons. */
 
36450
  int Sons () const { return 2; }
 
36451
  /** Get the n-th son.
 
36452
   *  \param n The index of the son.
 
36453
   *  \return The n-th son or NULL. */
 
36454
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
36455
  /** Replace a son.
 
36456
   *  \param old_son The son to replace.
 
36457
   *  \param new_son The new son. */
 
36458
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
36459
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
36460
  }
 
36461
  /** Get the expression node. */
 
36462
  CTree *Expr () const { return sons[1]; }
 
36463
   private:
 
36464
  typedef CT_UnaryExpr CCExprResolveExpr;
 
36465
 
 
36466
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36467
 public :
 
36468
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36469
  typedef CT_UnaryExpr CExprResolveExpr;
 
36470
 
 
36471
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36472
 public :
 
36473
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36474
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
36475
  const char *__attr_name (unsigned i) const {
 
36476
    static const char *names[] = { "sons" }; return names[i];
 
36477
  }
 
36478
  const void *__attr (unsigned __i) const {
 
36479
    switch (__i) { case 0: return &sons; default: return 0; }
 
36480
  }
 
36481
#line 1293 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36482
};
 
36483
 
 
36484
/** \class CT_PostfixExpr CTree.h Puma/CTree.h
 
36485
 *  Tree node representing a postfix expression.
 
36486
 *  Example: \code a++ \endcode */
 
36487
 
 
36488
#line 36489 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36489
} // closed Puma
 
36490
class CCExprResolve;
 
36491
class CExprResolve;
 
36492
class WinIfExists;
 
36493
class WinImportHandler;
 
36494
class WinMacros;
 
36495
class WinAsm;
 
36496
class WinDeclSpecs;
 
36497
class WinMemberExplSpec;
 
36498
class WinTypeKeywords;
 
36499
class WinFriend;
 
36500
class ExtAC;
 
36501
class ExtACBuilderCoupling;
 
36502
class ExtACSyntaxCoupling;
 
36503
class ExtACTree;
 
36504
class ExtACKeywords;
 
36505
class ExtGnu;
 
36506
class PragmaOnceUnitState;
 
36507
class PragmaOnce;
 
36508
class CMatchSyntax;
 
36509
namespace Puma {
 
36510
 
 
36511
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36512
 
 
36513
#line 36514 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36514
} // closed Puma
 
36515
 
 
36516
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36517
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36518
#include "CCExprResolveH.ah"
 
36519
#endif
 
36520
namespace Puma {
 
36521
 
 
36522
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36523
 
 
36524
#line 36525 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36525
} // closed Puma
 
36526
 
 
36527
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36528
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36529
#include "CExprResolveH.ah"
 
36530
#endif
 
36531
namespace Puma {
 
36532
 
 
36533
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36534
class CT_PostfixExpr : public CT_UnaryExpr {
 
36535
#line 36536 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36536
  friend class ::CCExprResolve;
 
36537
  friend class ::CExprResolve;
 
36538
  friend class ::WinIfExists;
 
36539
  friend class ::WinImportHandler;
 
36540
  friend class ::WinMacros;
 
36541
  friend class ::WinAsm;
 
36542
  friend class ::WinDeclSpecs;
 
36543
  friend class ::WinMemberExplSpec;
 
36544
  friend class ::WinTypeKeywords;
 
36545
  friend class ::WinFriend;
 
36546
  friend class ::ExtAC;
 
36547
  friend class ::ExtACBuilderCoupling;
 
36548
  friend class ::ExtACSyntaxCoupling;
 
36549
  friend class ::ExtACTree;
 
36550
  friend class ::ExtACKeywords;
 
36551
  friend class ::ExtGnu;
 
36552
  friend class ::PragmaOnceUnitState;
 
36553
  friend class ::PragmaOnce;
 
36554
  friend class ::CMatchSyntax;
 
36555
 
 
36556
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36557
 
 
36558
public:
 
36559
  /** Constructor.
 
36560
   *  \param e The expression on which to invoke the operator. 
 
36561
   *  \param o The postfix operator. */
 
36562
  CT_PostfixExpr (CTree *e, CTree *o) :
 
36563
    CT_UnaryExpr (e, o) {}
 
36564
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36565
  static const char *NodeId ();
 
36566
  /** Get the name of the node. Can be compared with NodeId(). */
 
36567
  const char *NodeName () const { return NodeId (); }
 
36568
   private:
 
36569
  typedef CT_PostfixExpr CCExprResolveExpr;
 
36570
 
 
36571
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36572
 public :
 
36573
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36574
  typedef CT_PostfixExpr CExprResolveExpr;
 
36575
 
 
36576
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36577
 public :
 
36578
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36579
  typedef AC::TLE __AttrTypes;
 
36580
  const char *__attr_name (unsigned i) const { return 0; }
 
36581
  const void *__attr (unsigned __i) const { return 0; }
 
36582
#line 1309 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36583
};
 
36584
 
 
36585
/** \class CT_AddrExpr CTree.h Puma/CTree.h
 
36586
 *  Tree node representing an address expression.
 
36587
 *  Example: \code &a \endcode */
 
36588
 
 
36589
#line 36590 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36590
} // closed Puma
 
36591
class CCExprResolve;
 
36592
class CExprResolve;
 
36593
class WinIfExists;
 
36594
class WinImportHandler;
 
36595
class WinMacros;
 
36596
class WinAsm;
 
36597
class WinDeclSpecs;
 
36598
class WinMemberExplSpec;
 
36599
class WinTypeKeywords;
 
36600
class WinFriend;
 
36601
class ExtAC;
 
36602
class ExtACBuilderCoupling;
 
36603
class ExtACSyntaxCoupling;
 
36604
class ExtACTree;
 
36605
class ExtACKeywords;
 
36606
class ExtGnu;
 
36607
class PragmaOnceUnitState;
 
36608
class PragmaOnce;
 
36609
class CMatchSyntax;
 
36610
namespace Puma {
 
36611
 
 
36612
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36613
 
 
36614
#line 36615 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36615
} // closed Puma
 
36616
 
 
36617
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36618
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36619
#include "CCExprResolveH.ah"
 
36620
#endif
 
36621
namespace Puma {
 
36622
 
 
36623
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36624
 
 
36625
#line 36626 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36626
} // closed Puma
 
36627
 
 
36628
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36629
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36630
#include "CExprResolveH.ah"
 
36631
#endif
 
36632
namespace Puma {
 
36633
 
 
36634
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36635
class CT_AddrExpr : public CT_UnaryExpr {
 
36636
#line 36637 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36637
  friend class ::CCExprResolve;
 
36638
  friend class ::CExprResolve;
 
36639
  friend class ::WinIfExists;
 
36640
  friend class ::WinImportHandler;
 
36641
  friend class ::WinMacros;
 
36642
  friend class ::WinAsm;
 
36643
  friend class ::WinDeclSpecs;
 
36644
  friend class ::WinMemberExplSpec;
 
36645
  friend class ::WinTypeKeywords;
 
36646
  friend class ::WinFriend;
 
36647
  friend class ::ExtAC;
 
36648
  friend class ::ExtACBuilderCoupling;
 
36649
  friend class ::ExtACSyntaxCoupling;
 
36650
  friend class ::ExtACTree;
 
36651
  friend class ::ExtACKeywords;
 
36652
  friend class ::ExtGnu;
 
36653
  friend class ::PragmaOnceUnitState;
 
36654
  friend class ::PragmaOnce;
 
36655
  friend class ::CMatchSyntax;
 
36656
 
 
36657
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36658
 
 
36659
public:
 
36660
  /** Constructor.
 
36661
   *  \param o The address operator, i.e. '&'.
 
36662
   *  \param e The expression from which to take the address. */
 
36663
  CT_AddrExpr (CTree *o, CTree *e) :
 
36664
    CT_UnaryExpr (o, e) {}
 
36665
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36666
  static const char *NodeId ();
 
36667
  /** Get the name of the node. Can be compared with NodeId(). */
 
36668
  const char *NodeName () const { return NodeId (); }
 
36669
   private:
 
36670
  typedef CT_AddrExpr CCExprResolveExpr;
 
36671
 
 
36672
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36673
 public :
 
36674
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36675
  typedef CT_AddrExpr CExprResolveExpr;
 
36676
 
 
36677
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36678
 public :
 
36679
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36680
  typedef AC::TLE __AttrTypes;
 
36681
  const char *__attr_name (unsigned i) const { return 0; }
 
36682
  const void *__attr (unsigned __i) const { return 0; }
 
36683
#line 1325 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36684
};
 
36685
 
 
36686
/** \class CT_DerefExpr CTree.h Puma/CTree.h
 
36687
 *  Tree node representing a pointer dereferencing expression.
 
36688
 *  Example: \code *a \endcode */
 
36689
 
 
36690
#line 36691 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36691
} // closed Puma
 
36692
class CCExprResolve;
 
36693
class CExprResolve;
 
36694
class WinIfExists;
 
36695
class WinImportHandler;
 
36696
class WinMacros;
 
36697
class WinAsm;
 
36698
class WinDeclSpecs;
 
36699
class WinMemberExplSpec;
 
36700
class WinTypeKeywords;
 
36701
class WinFriend;
 
36702
class ExtAC;
 
36703
class ExtACBuilderCoupling;
 
36704
class ExtACSyntaxCoupling;
 
36705
class ExtACTree;
 
36706
class ExtACKeywords;
 
36707
class ExtGnu;
 
36708
class PragmaOnceUnitState;
 
36709
class PragmaOnce;
 
36710
class CMatchSyntax;
 
36711
namespace Puma {
 
36712
 
 
36713
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36714
 
 
36715
#line 36716 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36716
} // closed Puma
 
36717
 
 
36718
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36719
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36720
#include "CCExprResolveH.ah"
 
36721
#endif
 
36722
namespace Puma {
 
36723
 
 
36724
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36725
 
 
36726
#line 36727 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36727
} // closed Puma
 
36728
 
 
36729
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36730
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36731
#include "CExprResolveH.ah"
 
36732
#endif
 
36733
namespace Puma {
 
36734
 
 
36735
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36736
class CT_DerefExpr : public CT_UnaryExpr {
 
36737
#line 36738 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36738
  friend class ::CCExprResolve;
 
36739
  friend class ::CExprResolve;
 
36740
  friend class ::WinIfExists;
 
36741
  friend class ::WinImportHandler;
 
36742
  friend class ::WinMacros;
 
36743
  friend class ::WinAsm;
 
36744
  friend class ::WinDeclSpecs;
 
36745
  friend class ::WinMemberExplSpec;
 
36746
  friend class ::WinTypeKeywords;
 
36747
  friend class ::WinFriend;
 
36748
  friend class ::ExtAC;
 
36749
  friend class ::ExtACBuilderCoupling;
 
36750
  friend class ::ExtACSyntaxCoupling;
 
36751
  friend class ::ExtACTree;
 
36752
  friend class ::ExtACKeywords;
 
36753
  friend class ::ExtGnu;
 
36754
  friend class ::PragmaOnceUnitState;
 
36755
  friend class ::PragmaOnce;
 
36756
  friend class ::CMatchSyntax;
 
36757
 
 
36758
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36759
 
 
36760
public:
 
36761
  /** Constructor.
 
36762
   *  \param o The dereferencing operator, i.e. '*'.
 
36763
   *  \param e The expression to dereference. */
 
36764
  CT_DerefExpr (CTree *o, CTree *e) :
 
36765
    CT_UnaryExpr (o, e) {}
 
36766
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36767
  static const char *NodeId ();
 
36768
  /** Get the name of the node. Can be compared with NodeId(). */
 
36769
  const char *NodeName () const { return NodeId (); }
 
36770
   private:
 
36771
  typedef CT_DerefExpr CCExprResolveExpr;
 
36772
 
 
36773
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36774
 public :
 
36775
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36776
  typedef CT_DerefExpr CExprResolveExpr;
 
36777
 
 
36778
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36779
 public :
 
36780
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36781
  typedef AC::TLE __AttrTypes;
 
36782
  const char *__attr_name (unsigned i) const { return 0; }
 
36783
  const void *__attr (unsigned __i) const { return 0; }
 
36784
#line 1341 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36785
};
 
36786
 
 
36787
/** \class CT_DeleteExpr CTree.h Puma/CTree.h
 
36788
 *  Tree node representing a delete expression.
 
36789
 *  Example: \code delete a \endcode */
 
36790
 
 
36791
#line 36792 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36792
} // closed Puma
 
36793
class CCExprResolve;
 
36794
class CExprResolve;
 
36795
class WinIfExists;
 
36796
class WinImportHandler;
 
36797
class WinMacros;
 
36798
class WinAsm;
 
36799
class WinDeclSpecs;
 
36800
class WinMemberExplSpec;
 
36801
class WinTypeKeywords;
 
36802
class WinFriend;
 
36803
class ExtAC;
 
36804
class ExtACBuilderCoupling;
 
36805
class ExtACSyntaxCoupling;
 
36806
class ExtACTree;
 
36807
class ExtACKeywords;
 
36808
class ExtGnu;
 
36809
class PragmaOnceUnitState;
 
36810
class PragmaOnce;
 
36811
class CMatchSyntax;
 
36812
namespace Puma {
 
36813
 
 
36814
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36815
 
 
36816
#line 36817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36817
} // closed Puma
 
36818
 
 
36819
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36820
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36821
#include "CCExprResolveH.ah"
 
36822
#endif
 
36823
namespace Puma {
 
36824
 
 
36825
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36826
 
 
36827
#line 36828 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36828
} // closed Puma
 
36829
 
 
36830
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36831
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36832
#include "CExprResolveH.ah"
 
36833
#endif
 
36834
namespace Puma {
 
36835
 
 
36836
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36837
class CT_DeleteExpr : public CT_Expression, public CSemObject {
 
36838
#line 36839 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36839
  friend class ::CCExprResolve;
 
36840
  friend class ::CExprResolve;
 
36841
  friend class ::WinIfExists;
 
36842
  friend class ::WinImportHandler;
 
36843
  friend class ::WinMacros;
 
36844
  friend class ::WinAsm;
 
36845
  friend class ::WinDeclSpecs;
 
36846
  friend class ::WinMemberExplSpec;
 
36847
  friend class ::WinTypeKeywords;
 
36848
  friend class ::WinFriend;
 
36849
  friend class ::ExtAC;
 
36850
  friend class ::ExtACBuilderCoupling;
 
36851
  friend class ::ExtACSyntaxCoupling;
 
36852
  friend class ::ExtACTree;
 
36853
  friend class ::ExtACKeywords;
 
36854
  friend class ::ExtGnu;
 
36855
  friend class ::PragmaOnceUnitState;
 
36856
  friend class ::PragmaOnce;
 
36857
  friend class ::CMatchSyntax;
 
36858
 
 
36859
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36860
 
 
36861
  CTree *sons[2]; // oper, expr
 
36862
 
 
36863
public:
 
36864
  /** Constructor.
 
36865
   *  \param op The delete operator.
 
36866
   *  \param e The expression representing the object to delete. */
 
36867
  CT_DeleteExpr (CTree *op, CTree *e) { AddSon (sons[0], op); AddSon (sons[1], e); }
 
36868
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
36869
  static const char *NodeId ();
 
36870
  /** Get the name of the node. Can be compared with NodeId(). */
 
36871
  const char *NodeName () const { return NodeId (); }
 
36872
  /** Get the number of sons. */
 
36873
  int Sons () const { return 2; }
 
36874
  /** Get the n-th son.
 
36875
   *  \param n The index of the son.
 
36876
   *  \return The n-th son or NULL. */
 
36877
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
36878
  /** Replace a son.
 
36879
   *  \param old_son The son to replace.
 
36880
   *  \param new_son The new son. */
 
36881
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
36882
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
36883
  }
 
36884
  /** Get the expression. */
 
36885
  CTree *Expr () const { return sons[1]; }
 
36886
  /** Get the operator name, i.e. 'delete' or 'delete[]'. */
 
36887
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
36888
  /** Get the semantic information. */
 
36889
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
36890
   private:
 
36891
  typedef CT_DeleteExpr CCExprResolveExpr;
 
36892
 
 
36893
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
36894
 public :
 
36895
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
36896
  typedef CT_DeleteExpr CExprResolveExpr;
 
36897
 
 
36898
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
36899
 public :
 
36900
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
36901
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
36902
  const char *__attr_name (unsigned i) const {
 
36903
    static const char *names[] = { "sons" }; return names[i];
 
36904
  }
 
36905
  const void *__attr (unsigned __i) const {
 
36906
    switch (__i) { case 0: return &sons; default: return 0; }
 
36907
  }
 
36908
#line 1376 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36909
};
 
36910
 
 
36911
/** \class CT_NewExpr CTree.h Puma/CTree.h
 
36912
 *  Tree node representing a new expression.
 
36913
 *  Example: \code new A() \endcode */
 
36914
 
 
36915
#line 36916 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36916
} // closed Puma
 
36917
class CCExprResolve;
 
36918
class CExprResolve;
 
36919
class WinIfExists;
 
36920
class WinImportHandler;
 
36921
class WinMacros;
 
36922
class WinAsm;
 
36923
class WinDeclSpecs;
 
36924
class WinMemberExplSpec;
 
36925
class WinTypeKeywords;
 
36926
class WinFriend;
 
36927
class ExtAC;
 
36928
class ExtACBuilderCoupling;
 
36929
class ExtACSyntaxCoupling;
 
36930
class ExtACTree;
 
36931
class ExtACKeywords;
 
36932
class ExtGnu;
 
36933
class PragmaOnceUnitState;
 
36934
class PragmaOnce;
 
36935
class CMatchSyntax;
 
36936
namespace Puma {
 
36937
 
 
36938
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36939
 
 
36940
#line 36941 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36941
} // closed Puma
 
36942
 
 
36943
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36944
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
36945
#include "CCExprResolveH.ah"
 
36946
#endif
 
36947
namespace Puma {
 
36948
 
 
36949
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36950
 
 
36951
#line 36952 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36952
} // closed Puma
 
36953
 
 
36954
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36955
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
36956
#include "CExprResolveH.ah"
 
36957
#endif
 
36958
namespace Puma {
 
36959
 
 
36960
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36961
class CT_NewExpr : public CT_Expression, public CSemObject {
 
36962
#line 36963 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
36963
  friend class ::CCExprResolve;
 
36964
  friend class ::CExprResolve;
 
36965
  friend class ::WinIfExists;
 
36966
  friend class ::WinImportHandler;
 
36967
  friend class ::WinMacros;
 
36968
  friend class ::WinAsm;
 
36969
  friend class ::WinDeclSpecs;
 
36970
  friend class ::WinMemberExplSpec;
 
36971
  friend class ::WinTypeKeywords;
 
36972
  friend class ::WinFriend;
 
36973
  friend class ::ExtAC;
 
36974
  friend class ::ExtACBuilderCoupling;
 
36975
  friend class ::ExtACSyntaxCoupling;
 
36976
  friend class ::ExtACTree;
 
36977
  friend class ::ExtACKeywords;
 
36978
  friend class ::ExtGnu;
 
36979
  friend class ::PragmaOnceUnitState;
 
36980
  friend class ::PragmaOnce;
 
36981
  friend class ::CMatchSyntax;
 
36982
 
 
36983
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
36984
 
 
36985
  CTree *sons[6]; // oper, placement, open, type, close, init
 
36986
 
 
36987
public:
 
36988
  /** Constructor.
 
36989
   *  \param op The new operator.
 
36990
   *  \param p The optional placement expression.
 
36991
   *  \param o The optional left parenthesis around the type identifier.
 
36992
   *  \param t The type identifier specifying the type of the object to create.
 
36993
   *  \param c The optional right parenthesis around the type identifier.
 
36994
   *  \param i The optional initializer. */
 
36995
  CT_NewExpr (CTree *op, CTree *p, CTree *o, CTree *t, CTree *c, CTree *i) {
 
36996
    AddSon (sons[0], op); AddSon (sons[1], p); AddSon (sons[2], o); 
 
36997
    AddSon (sons[3], t); AddSon (sons[4], c); AddSon (sons[5], i); 
 
36998
  }
 
36999
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37000
  static const char *NodeId ();
 
37001
  /** Get the name of the node. Can be compared with NodeId(). */
 
37002
  const char *NodeName () const { return NodeId (); }
 
37003
  /** Get the number of sons. */
 
37004
  int Sons () const { return CTree::Sons (sons, 6); }
 
37005
  /** Get the n-th son.
 
37006
   *  \param n The index of the son.
 
37007
   *  \return The n-th son or NULL. */
 
37008
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
37009
  /** Replace a son.
 
37010
   *  \param old_son The son to replace.
 
37011
   *  \param new_son The new son. */
 
37012
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37013
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
37014
  }
 
37015
  /** Get the operator name. */
 
37016
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
37017
  /** Get the placement expression. */
 
37018
  CT_ExprList *Placement () const { return (CT_ExprList*)sons[1];; }
 
37019
  /** Get the initializer. */
 
37020
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[5]; }
 
37021
  /** Get the type of the object to create. */
 
37022
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[3]; }
 
37023
  /** Get the semantic information. */
 
37024
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
37025
   private:
 
37026
  typedef CT_NewExpr CCExprResolveExpr;
 
37027
 
 
37028
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37029
 public :
 
37030
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37031
  typedef CT_NewExpr CExprResolveExpr;
 
37032
 
 
37033
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37034
 public :
 
37035
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37036
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
37037
  const char *__attr_name (unsigned i) const {
 
37038
    static const char *names[] = { "sons" }; return names[i];
 
37039
  }
 
37040
  const void *__attr (unsigned __i) const {
 
37041
    switch (__i) { case 0: return &sons; default: return 0; }
 
37042
  }
 
37043
#line 1422 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37044
};
 
37045
 
 
37046
/** \class CT_IfThenExpr CTree.h Puma/CTree.h
 
37047
 *  Tree node representing an if-then expression.
 
37048
 *  Example: \code a>0?a:b \endcode or \code a?:b \endcode */
 
37049
 
 
37050
#line 37051 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37051
} // closed Puma
 
37052
class CCExprResolve;
 
37053
class CExprResolve;
 
37054
class WinIfExists;
 
37055
class WinImportHandler;
 
37056
class WinMacros;
 
37057
class WinAsm;
 
37058
class WinDeclSpecs;
 
37059
class WinMemberExplSpec;
 
37060
class WinTypeKeywords;
 
37061
class WinFriend;
 
37062
class ExtAC;
 
37063
class ExtACBuilderCoupling;
 
37064
class ExtACSyntaxCoupling;
 
37065
class ExtACTree;
 
37066
class ExtACKeywords;
 
37067
class ExtGnu;
 
37068
class PragmaOnceUnitState;
 
37069
class PragmaOnce;
 
37070
class CMatchSyntax;
 
37071
namespace Puma {
 
37072
 
 
37073
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37074
 
 
37075
#line 37076 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37076
} // closed Puma
 
37077
 
 
37078
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37079
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37080
#include "CCExprResolveH.ah"
 
37081
#endif
 
37082
namespace Puma {
 
37083
 
 
37084
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37085
 
 
37086
#line 37087 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37087
} // closed Puma
 
37088
 
 
37089
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37090
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37091
#include "CExprResolveH.ah"
 
37092
#endif
 
37093
namespace Puma {
 
37094
 
 
37095
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37096
class CT_IfThenExpr : public CT_Expression {
 
37097
#line 37098 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37098
  friend class ::CCExprResolve;
 
37099
  friend class ::CExprResolve;
 
37100
  friend class ::WinIfExists;
 
37101
  friend class ::WinImportHandler;
 
37102
  friend class ::WinMacros;
 
37103
  friend class ::WinAsm;
 
37104
  friend class ::WinDeclSpecs;
 
37105
  friend class ::WinMemberExplSpec;
 
37106
  friend class ::WinTypeKeywords;
 
37107
  friend class ::WinFriend;
 
37108
  friend class ::ExtAC;
 
37109
  friend class ::ExtACBuilderCoupling;
 
37110
  friend class ::ExtACSyntaxCoupling;
 
37111
  friend class ::ExtACTree;
 
37112
  friend class ::ExtACKeywords;
 
37113
  friend class ::ExtGnu;
 
37114
  friend class ::PragmaOnceUnitState;
 
37115
  friend class ::PragmaOnce;
 
37116
  friend class ::CMatchSyntax;
 
37117
 
 
37118
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37119
 
 
37120
  CTree *sons[5]; // cond, oper, left, colon, right
 
37121
 
 
37122
public:
 
37123
  /** Constructor.
 
37124
   *  \param c1 The condition expression.
 
37125
   *  \param o The question mark operator. 
 
37126
   *  \param l The expression to the left of the colon.
 
37127
   *  \param c2 The colon operator.
 
37128
   *  \param r The expression to the right of the colon. */ 
 
37129
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *l, CTree *c2, CTree *r) {
 
37130
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], l); 
 
37131
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
37132
  }
 
37133
  /** Constructor.
 
37134
   *  \param c1 The condition expression.
 
37135
   *  \param o The question mark operator. 
 
37136
   *  \param c2 The colon operator.
 
37137
   *  \param r The expression to the right of the colon. */ 
 
37138
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *c2, CTree *r) {
 
37139
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], 0); 
 
37140
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
37141
  }
 
37142
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37143
  static const char *NodeId ();
 
37144
  /** Get the name of the node. Can be compared with NodeId(). */
 
37145
  const char *NodeName () const { return NodeId (); }
 
37146
  /** Get the number of sons. */
 
37147
  int Sons () const { return CTree::Sons (sons, 5); }
 
37148
  /** Get the n-th son.
 
37149
   *  \param n The index of the son.
 
37150
   *  \return The n-th son or NULL. */
 
37151
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
37152
  /** Get the condition expression. */
 
37153
  CTree *Condition () const { return sons[0]; }
 
37154
  /** Get the left expression (condition=true). */
 
37155
  CTree *LeftOperand () const { return sons[2]; }
 
37156
  /** Get the right expression (condition=false). */
 
37157
  CTree *RightOperand () const { return sons[4]; }
 
37158
  /** Replace a son.
 
37159
   *  \param old_son The son to replace.
 
37160
   *  \param new_son The new son. */
 
37161
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37162
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
37163
  }
 
37164
   private:
 
37165
  typedef CT_IfThenExpr CCExprResolveExpr;
 
37166
 
 
37167
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37168
 public :
 
37169
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37170
  typedef CT_IfThenExpr CExprResolveExpr;
 
37171
 
 
37172
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37173
 public :
 
37174
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37175
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
37176
  const char *__attr_name (unsigned i) const {
 
37177
    static const char *names[] = { "sons" }; return names[i];
 
37178
  }
 
37179
  const void *__attr (unsigned __i) const {
 
37180
    switch (__i) { case 0: return &sons; default: return 0; }
 
37181
  }
 
37182
#line 1472 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37183
};
 
37184
 
 
37185
/** \class CT_CmpdLiteral CTree.h Puma/CTree.h
 
37186
 *  Tree node representing a compound literal.
 
37187
 *  Example: \code (int[]){1,2,3) \endcode */
 
37188
 
 
37189
#line 37190 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37190
} // closed Puma
 
37191
class CCExprResolve;
 
37192
class CExprResolve;
 
37193
class WinIfExists;
 
37194
class WinImportHandler;
 
37195
class WinMacros;
 
37196
class WinAsm;
 
37197
class WinDeclSpecs;
 
37198
class WinMemberExplSpec;
 
37199
class WinTypeKeywords;
 
37200
class WinFriend;
 
37201
class ExtAC;
 
37202
class ExtACBuilderCoupling;
 
37203
class ExtACSyntaxCoupling;
 
37204
class ExtACTree;
 
37205
class ExtACKeywords;
 
37206
class ExtGnu;
 
37207
class PragmaOnceUnitState;
 
37208
class PragmaOnce;
 
37209
class CMatchSyntax;
 
37210
namespace Puma {
 
37211
 
 
37212
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37213
 
 
37214
#line 37215 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37215
} // closed Puma
 
37216
 
 
37217
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37218
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37219
#include "CCExprResolveH.ah"
 
37220
#endif
 
37221
namespace Puma {
 
37222
 
 
37223
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37224
 
 
37225
#line 37226 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37226
} // closed Puma
 
37227
 
 
37228
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37229
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37230
#include "CExprResolveH.ah"
 
37231
#endif
 
37232
namespace Puma {
 
37233
 
 
37234
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37235
class CT_CmpdLiteral : public CT_Expression, public CSemObject {
 
37236
#line 37237 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37237
  friend class ::CCExprResolve;
 
37238
  friend class ::CExprResolve;
 
37239
  friend class ::WinIfExists;
 
37240
  friend class ::WinImportHandler;
 
37241
  friend class ::WinMacros;
 
37242
  friend class ::WinAsm;
 
37243
  friend class ::WinDeclSpecs;
 
37244
  friend class ::WinMemberExplSpec;
 
37245
  friend class ::WinTypeKeywords;
 
37246
  friend class ::WinFriend;
 
37247
  friend class ::ExtAC;
 
37248
  friend class ::ExtACBuilderCoupling;
 
37249
  friend class ::ExtACSyntaxCoupling;
 
37250
  friend class ::ExtACTree;
 
37251
  friend class ::ExtACKeywords;
 
37252
  friend class ::ExtGnu;
 
37253
  friend class ::PragmaOnceUnitState;
 
37254
  friend class ::PragmaOnce;
 
37255
  friend class ::CMatchSyntax;
 
37256
 
 
37257
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37258
 
 
37259
  CTree *sons[4]; // open, type, close, init
 
37260
 
 
37261
public:
 
37262
  /** Constructor.
 
37263
   *  \param r Left parenthesis of the type name.
 
37264
   *  \param t The type name.
 
37265
   *  \param cr Right parenthesis of the type name.
 
37266
   *  \param i The initializer list. */
 
37267
  CT_CmpdLiteral (CTree *r, CTree *t, CTree *cr, CTree *i) {
 
37268
    AddSon (sons[0], r); AddSon (sons[1], t); 
 
37269
    AddSon (sons[2], cr); AddSon (sons[3], i);
 
37270
  }
 
37271
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37272
  static const char *NodeId ();
 
37273
  /** Get the name of the node. Can be compared with NodeId(). */
 
37274
  const char *NodeName () const { return NodeId (); }
 
37275
  /** Get the number of sons. */
 
37276
  int Sons () const { return 4; }
 
37277
  /** Get the n-th son.
 
37278
   *  \param n The index of the son.
 
37279
   *  \return The n-th son or NULL. */
 
37280
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
37281
  /** Replace a son.
 
37282
   *  \param old_son The son to replace.
 
37283
   *  \param new_son The new son. */
 
37284
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37285
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
37286
  }
 
37287
  /** Get the type name. */
 
37288
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
37289
  /** Get the initializer list. */
 
37290
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[3]; }
 
37291
  /** Get the semantic information about the created object. */
 
37292
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
37293
   private:
 
37294
  typedef CT_CmpdLiteral CCExprResolveExpr;
 
37295
 
 
37296
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37297
 public :
 
37298
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37299
  typedef CT_CmpdLiteral CExprResolveExpr;
 
37300
 
 
37301
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37302
 public :
 
37303
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37304
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
37305
  const char *__attr_name (unsigned i) const {
 
37306
    static const char *names[] = { "sons" }; return names[i];
 
37307
  }
 
37308
  const void *__attr (unsigned __i) const {
 
37309
    switch (__i) { case 0: return &sons; default: return 0; }
 
37310
  }
 
37311
#line 1512 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37312
};
 
37313
 
 
37314
/** \class CT_ConstructExpr CTree.h Puma/CTree.h
 
37315
 *  Tree node representing a construct expression.
 
37316
 *  Example: \code std::string("abc") \endcode */
 
37317
 
 
37318
#line 37319 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37319
} // closed Puma
 
37320
class CCExprResolve;
 
37321
class CExprResolve;
 
37322
class WinIfExists;
 
37323
class WinImportHandler;
 
37324
class WinMacros;
 
37325
class WinAsm;
 
37326
class WinDeclSpecs;
 
37327
class WinMemberExplSpec;
 
37328
class WinTypeKeywords;
 
37329
class WinFriend;
 
37330
class ExtAC;
 
37331
class ExtACBuilderCoupling;
 
37332
class ExtACSyntaxCoupling;
 
37333
class ExtACTree;
 
37334
class ExtACKeywords;
 
37335
class ExtGnu;
 
37336
class PragmaOnceUnitState;
 
37337
class PragmaOnce;
 
37338
class CMatchSyntax;
 
37339
namespace Puma {
 
37340
 
 
37341
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37342
 
 
37343
#line 37344 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37344
} // closed Puma
 
37345
 
 
37346
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37347
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37348
#include "CCExprResolveH.ah"
 
37349
#endif
 
37350
namespace Puma {
 
37351
 
 
37352
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37353
 
 
37354
#line 37355 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37355
} // closed Puma
 
37356
 
 
37357
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37358
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37359
#include "CExprResolveH.ah"
 
37360
#endif
 
37361
namespace Puma {
 
37362
 
 
37363
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37364
class CT_ConstructExpr : public CT_Expression, public CSemObject {
 
37365
#line 37366 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37366
  friend class ::CCExprResolve;
 
37367
  friend class ::CExprResolve;
 
37368
  friend class ::WinIfExists;
 
37369
  friend class ::WinImportHandler;
 
37370
  friend class ::WinMacros;
 
37371
  friend class ::WinAsm;
 
37372
  friend class ::WinDeclSpecs;
 
37373
  friend class ::WinMemberExplSpec;
 
37374
  friend class ::WinTypeKeywords;
 
37375
  friend class ::WinFriend;
 
37376
  friend class ::ExtAC;
 
37377
  friend class ::ExtACBuilderCoupling;
 
37378
  friend class ::ExtACSyntaxCoupling;
 
37379
  friend class ::ExtACTree;
 
37380
  friend class ::ExtACKeywords;
 
37381
  friend class ::ExtGnu;
 
37382
  friend class ::PragmaOnceUnitState;
 
37383
  friend class ::PragmaOnce;
 
37384
  friend class ::CMatchSyntax;
 
37385
 
 
37386
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37387
 
 
37388
  CTree *sons[2]; // type, init
 
37389
 
 
37390
public:
 
37391
  /** Constructor.
 
37392
   *  \param t The type name.
 
37393
   *  \param i The initializer list. */
 
37394
  CT_ConstructExpr (CTree *t, CTree *i) { AddSon (sons[0], t); AddSon (sons[1], i); }
 
37395
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37396
  static const char *NodeId ();
 
37397
  /** Get the name of the node. Can be compared with NodeId(). */
 
37398
  const char *NodeName () const { return NodeId (); }
 
37399
  /** Get the number of sons. */
 
37400
  int Sons () const { return 2; }
 
37401
  /** Get the n-th son.
 
37402
   *  \param n The index of the son.
 
37403
   *  \return The n-th son or NULL. */
 
37404
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
37405
  /** Replace a son.
 
37406
   *  \param old_son The son to replace.
 
37407
   *  \param new_son The new son. */
 
37408
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37409
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
37410
  }
 
37411
  /** Get the type name. */
 
37412
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[0]; }
 
37413
  /** Get the initializer. */
 
37414
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
37415
  /** Get the semantic information about the created object. */
 
37416
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
37417
   private:
 
37418
  typedef CT_ConstructExpr CCExprResolveExpr;
 
37419
 
 
37420
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37421
 public :
 
37422
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37423
  typedef CT_ConstructExpr CExprResolveExpr;
 
37424
 
 
37425
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37426
 public :
 
37427
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37428
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
37429
  const char *__attr_name (unsigned i) const {
 
37430
    static const char *names[] = { "sons" }; return names[i];
 
37431
  }
 
37432
  const void *__attr (unsigned __i) const {
 
37433
    switch (__i) { case 0: return &sons; default: return 0; }
 
37434
  }
 
37435
#line 1547 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37436
};
 
37437
 
 
37438
/** \class CT_ThrowExpr CTree.h Puma/CTree.h
 
37439
 *  Tree node representing a throw expression.
 
37440
 *  Example: \code throw std::exception() \endcode */
 
37441
 
 
37442
#line 37443 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37443
} // closed Puma
 
37444
class CCExprResolve;
 
37445
class CExprResolve;
 
37446
class WinIfExists;
 
37447
class WinImportHandler;
 
37448
class WinMacros;
 
37449
class WinAsm;
 
37450
class WinDeclSpecs;
 
37451
class WinMemberExplSpec;
 
37452
class WinTypeKeywords;
 
37453
class WinFriend;
 
37454
class ExtAC;
 
37455
class ExtACBuilderCoupling;
 
37456
class ExtACSyntaxCoupling;
 
37457
class ExtACTree;
 
37458
class ExtACKeywords;
 
37459
class ExtGnu;
 
37460
class PragmaOnceUnitState;
 
37461
class PragmaOnce;
 
37462
class CMatchSyntax;
 
37463
namespace Puma {
 
37464
 
 
37465
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37466
 
 
37467
#line 37468 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37468
} // closed Puma
 
37469
 
 
37470
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37471
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37472
#include "CCExprResolveH.ah"
 
37473
#endif
 
37474
namespace Puma {
 
37475
 
 
37476
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37477
 
 
37478
#line 37479 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37479
} // closed Puma
 
37480
 
 
37481
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37482
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37483
#include "CExprResolveH.ah"
 
37484
#endif
 
37485
namespace Puma {
 
37486
 
 
37487
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37488
class CT_ThrowExpr : public CT_Expression {
 
37489
#line 37490 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37490
  friend class ::CCExprResolve;
 
37491
  friend class ::CExprResolve;
 
37492
  friend class ::WinIfExists;
 
37493
  friend class ::WinImportHandler;
 
37494
  friend class ::WinMacros;
 
37495
  friend class ::WinAsm;
 
37496
  friend class ::WinDeclSpecs;
 
37497
  friend class ::WinMemberExplSpec;
 
37498
  friend class ::WinTypeKeywords;
 
37499
  friend class ::WinFriend;
 
37500
  friend class ::ExtAC;
 
37501
  friend class ::ExtACBuilderCoupling;
 
37502
  friend class ::ExtACSyntaxCoupling;
 
37503
  friend class ::ExtACTree;
 
37504
  friend class ::ExtACKeywords;
 
37505
  friend class ::ExtGnu;
 
37506
  friend class ::PragmaOnceUnitState;
 
37507
  friend class ::PragmaOnce;
 
37508
  friend class ::CMatchSyntax;
 
37509
 
 
37510
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37511
 
 
37512
  CTree *sons[2]; // throw, expr
 
37513
 
 
37514
public:
 
37515
  /** Constructor.
 
37516
   *  \param t The 'throw' keyword.
 
37517
   *  \param e The expression. */
 
37518
  CT_ThrowExpr (CTree *t, CTree *e = (CTree*)0) { AddSon (sons[0], t); AddSon (sons[1], e); }
 
37519
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37520
  static const char *NodeId ();
 
37521
  /** Get the name of the node. Can be compared with NodeId(). */
 
37522
  const char *NodeName () const { return NodeId (); }
 
37523
  /** Get the number of sons. */
 
37524
  int Sons () const { return CTree::Sons (sons, 2); }
 
37525
  /** Get the n-th son.
 
37526
   *  \param n The index of the son.
 
37527
   *  \return The n-th son or NULL. */
 
37528
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
37529
  /** Replace a son.
 
37530
   *  \param old_son The son to replace.
 
37531
   *  \param new_son The new son. */
 
37532
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37533
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
37534
  }
 
37535
  /** Get the expression. */
 
37536
  CTree *Expr () const { return sons[1]; }
 
37537
   private:
 
37538
  typedef CT_ThrowExpr CCExprResolveExpr;
 
37539
 
 
37540
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37541
 public :
 
37542
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37543
  typedef CT_ThrowExpr CExprResolveExpr;
 
37544
 
 
37545
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37546
 public :
 
37547
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37548
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
37549
  const char *__attr_name (unsigned i) const {
 
37550
    static const char *names[] = { "sons" }; return names[i];
 
37551
  }
 
37552
  const void *__attr (unsigned __i) const {
 
37553
    switch (__i) { case 0: return &sons; default: return 0; }
 
37554
  }
 
37555
#line 1578 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37556
};
 
37557
 
 
37558
/** \class CT_IndexExpr CTree.h Puma/CTree.h
 
37559
 *  Tree node representing an index expression. 
 
37560
 *  Example: \code a[1] \endcode */
 
37561
 
 
37562
#line 37563 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37563
} // closed Puma
 
37564
class CCExprResolve;
 
37565
class CExprResolve;
 
37566
class WinIfExists;
 
37567
class WinImportHandler;
 
37568
class WinMacros;
 
37569
class WinAsm;
 
37570
class WinDeclSpecs;
 
37571
class WinMemberExplSpec;
 
37572
class WinTypeKeywords;
 
37573
class WinFriend;
 
37574
class ExtAC;
 
37575
class ExtACBuilderCoupling;
 
37576
class ExtACSyntaxCoupling;
 
37577
class ExtACTree;
 
37578
class ExtACKeywords;
 
37579
class ExtGnu;
 
37580
class PragmaOnceUnitState;
 
37581
class PragmaOnce;
 
37582
class CMatchSyntax;
 
37583
namespace Puma {
 
37584
 
 
37585
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37586
 
 
37587
#line 37588 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37588
} // closed Puma
 
37589
 
 
37590
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37591
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37592
#include "CCExprResolveH.ah"
 
37593
#endif
 
37594
namespace Puma {
 
37595
 
 
37596
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37597
 
 
37598
#line 37599 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37599
} // closed Puma
 
37600
 
 
37601
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37602
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37603
#include "CExprResolveH.ah"
 
37604
#endif
 
37605
namespace Puma {
 
37606
 
 
37607
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37608
class CT_IndexExpr : public CT_Call {
 
37609
#line 37610 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37610
  friend class ::CCExprResolve;
 
37611
  friend class ::CExprResolve;
 
37612
  friend class ::WinIfExists;
 
37613
  friend class ::WinImportHandler;
 
37614
  friend class ::WinMacros;
 
37615
  friend class ::WinAsm;
 
37616
  friend class ::WinDeclSpecs;
 
37617
  friend class ::WinMemberExplSpec;
 
37618
  friend class ::WinTypeKeywords;
 
37619
  friend class ::WinFriend;
 
37620
  friend class ::ExtAC;
 
37621
  friend class ::ExtACBuilderCoupling;
 
37622
  friend class ::ExtACSyntaxCoupling;
 
37623
  friend class ::ExtACTree;
 
37624
  friend class ::ExtACKeywords;
 
37625
  friend class ::ExtGnu;
 
37626
  friend class ::PragmaOnceUnitState;
 
37627
  friend class ::PragmaOnce;
 
37628
  friend class ::CMatchSyntax;
 
37629
 
 
37630
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37631
 
 
37632
  CTree *sons[4]; // expr, open, index, close
 
37633
 
 
37634
public:
 
37635
  /** Constructor.
 
37636
   *  \param e The expression on which to invoke the index operator.
 
37637
   *  \param o Left parenthesis of the index expression.
 
37638
   *  \param i The index expression. 
 
37639
   *  \param c Right parenthesis of the index expression. */
 
37640
  CT_IndexExpr (CTree *e, CTree *o, CTree *i, CTree *c) {
 
37641
    AddSon (sons[0], e); AddSon (sons[1], o); 
 
37642
    AddSon (sons[2], i); AddSon (sons[3], c);
 
37643
  }
 
37644
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37645
  static const char *NodeId ();
 
37646
  /** Get the name of the node. Can be compared with NodeId(). */
 
37647
  const char *NodeName () const { return NodeId (); }
 
37648
  /** Get the number of sons. */
 
37649
  int Sons () const { return 4; }
 
37650
  /** Get the n-th son.
 
37651
   *  \param n The index of the son.
 
37652
   *  \return The n-th son or NULL. */
 
37653
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
37654
  /** Replace a son.
 
37655
   *  \param old_son The son to replace.
 
37656
   *  \param new_son The new son. */
 
37657
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37658
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
37659
  }
 
37660
   private:
 
37661
  typedef CT_IndexExpr CCExprResolveExpr;
 
37662
 
 
37663
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37664
 public :
 
37665
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37666
  typedef CT_IndexExpr CExprResolveExpr;
 
37667
 
 
37668
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37669
 public :
 
37670
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37671
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
37672
  const char *__attr_name (unsigned i) const {
 
37673
    static const char *names[] = { "sons" }; return names[i];
 
37674
  }
 
37675
  const void *__attr (unsigned __i) const {
 
37676
    switch (__i) { case 0: return &sons; default: return 0; }
 
37677
  }
 
37678
#line 1612 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37679
};
 
37680
 
 
37681
/** \class CT_CallExpr CTree.h Puma/CTree.h
 
37682
 *  Tree node representing a function call expression.
 
37683
 *  Example: \code f(i) \endcode */
 
37684
 
 
37685
#line 37686 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37686
} // closed Puma
 
37687
class CCExprResolve;
 
37688
class CExprResolve;
 
37689
class WinIfExists;
 
37690
class WinImportHandler;
 
37691
class WinMacros;
 
37692
class WinAsm;
 
37693
class WinDeclSpecs;
 
37694
class WinMemberExplSpec;
 
37695
class WinTypeKeywords;
 
37696
class WinFriend;
 
37697
class ExtAC;
 
37698
class ExtACBuilderCoupling;
 
37699
class ExtACSyntaxCoupling;
 
37700
class ExtACTree;
 
37701
class ExtACKeywords;
 
37702
class ExtGnu;
 
37703
class PragmaOnceUnitState;
 
37704
class PragmaOnce;
 
37705
class CMatchSyntax;
 
37706
namespace Puma {
 
37707
 
 
37708
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37709
 
 
37710
#line 37711 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37711
} // closed Puma
 
37712
 
 
37713
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37714
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37715
#include "CCExprResolveH.ah"
 
37716
#endif
 
37717
namespace Puma {
 
37718
 
 
37719
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37720
 
 
37721
#line 37722 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37722
} // closed Puma
 
37723
 
 
37724
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37725
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37726
#include "CExprResolveH.ah"
 
37727
#endif
 
37728
namespace Puma {
 
37729
 
 
37730
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37731
class CT_CallExpr : public CT_Call {
 
37732
#line 37733 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37733
  friend class ::CCExprResolve;
 
37734
  friend class ::CExprResolve;
 
37735
  friend class ::WinIfExists;
 
37736
  friend class ::WinImportHandler;
 
37737
  friend class ::WinMacros;
 
37738
  friend class ::WinAsm;
 
37739
  friend class ::WinDeclSpecs;
 
37740
  friend class ::WinMemberExplSpec;
 
37741
  friend class ::WinTypeKeywords;
 
37742
  friend class ::WinFriend;
 
37743
  friend class ::ExtAC;
 
37744
  friend class ::ExtACBuilderCoupling;
 
37745
  friend class ::ExtACSyntaxCoupling;
 
37746
  friend class ::ExtACTree;
 
37747
  friend class ::ExtACKeywords;
 
37748
  friend class ::ExtGnu;
 
37749
  friend class ::PragmaOnceUnitState;
 
37750
  friend class ::PragmaOnce;
 
37751
  friend class ::CMatchSyntax;
 
37752
 
 
37753
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37754
 
 
37755
  CTree *sons[2]; // expr, args
 
37756
 
 
37757
public:
 
37758
  /** Constructor.
 
37759
   *  \param e The expression on which the call is invoked. */
 
37760
  CT_CallExpr (CTree *e) { AddSon (sons[0], e); AddSon (sons[1], 0); }
 
37761
  /** Constructor.
 
37762
   *  \param e The expression on which the call is invoked.
 
37763
   *  \param l The argument list of the call. */
 
37764
  CT_CallExpr (CTree *e, CTree *l) { AddSon (sons[0], e); AddSon (sons[1], l); }
 
37765
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37766
  static const char *NodeId ();
 
37767
  /** Get the name of the node. Can be compared with NodeId(). */
 
37768
  const char *NodeName () const { return NodeId (); }
 
37769
  /** Get the number of sons. */
 
37770
  int Sons () const { return CTree::Sons (sons, 2); }
 
37771
  /** Get the n-th son.
 
37772
   *  \param n The index of the son.
 
37773
   *  \return The n-th son or NULL. */
 
37774
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
37775
  /** Replace a son.
 
37776
   *  \param old_son The son to replace.
 
37777
   *  \param new_son The new son. */
 
37778
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37779
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
37780
  }
 
37781
  CTree *Expr () const { return sons[0]; }
 
37782
  CT_ExprList *Arguments () const { return (CT_ExprList*)sons[1]; }
 
37783
   private:
 
37784
  typedef CT_CallExpr CCExprResolveExpr;
 
37785
 
 
37786
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37787
 public :
 
37788
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37789
  typedef CT_CallExpr CExprResolveExpr;
 
37790
 
 
37791
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37792
 public :
 
37793
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37794
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
37795
  const char *__attr_name (unsigned i) const {
 
37796
    static const char *names[] = { "sons" }; return names[i];
 
37797
  }
 
37798
  const void *__attr (unsigned __i) const {
 
37799
    switch (__i) { case 0: return &sons; default: return 0; }
 
37800
  }
 
37801
#line 1646 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37802
};
 
37803
 
 
37804
/** \class CT_CastExpr CTree.h Puma/CTree.h
 
37805
 *  Tree node representing a cast expression.
 
37806
 *  Example: \code (int)a \endcode */
 
37807
 
 
37808
#line 37809 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37809
} // closed Puma
 
37810
class CCExprResolve;
 
37811
class CExprResolve;
 
37812
class WinIfExists;
 
37813
class WinImportHandler;
 
37814
class WinMacros;
 
37815
class WinAsm;
 
37816
class WinDeclSpecs;
 
37817
class WinMemberExplSpec;
 
37818
class WinTypeKeywords;
 
37819
class WinFriend;
 
37820
class ExtAC;
 
37821
class ExtACBuilderCoupling;
 
37822
class ExtACSyntaxCoupling;
 
37823
class ExtACTree;
 
37824
class ExtACKeywords;
 
37825
class ExtGnu;
 
37826
class PragmaOnceUnitState;
 
37827
class PragmaOnce;
 
37828
class CMatchSyntax;
 
37829
namespace Puma {
 
37830
 
 
37831
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37832
 
 
37833
#line 37834 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37834
} // closed Puma
 
37835
 
 
37836
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37837
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37838
#include "CCExprResolveH.ah"
 
37839
#endif
 
37840
namespace Puma {
 
37841
 
 
37842
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37843
 
 
37844
#line 37845 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37845
} // closed Puma
 
37846
 
 
37847
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37848
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37849
#include "CExprResolveH.ah"
 
37850
#endif
 
37851
namespace Puma {
 
37852
 
 
37853
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37854
class CT_CastExpr : public CT_Expression {
 
37855
#line 37856 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37856
  friend class ::CCExprResolve;
 
37857
  friend class ::CExprResolve;
 
37858
  friend class ::WinIfExists;
 
37859
  friend class ::WinImportHandler;
 
37860
  friend class ::WinMacros;
 
37861
  friend class ::WinAsm;
 
37862
  friend class ::WinDeclSpecs;
 
37863
  friend class ::WinMemberExplSpec;
 
37864
  friend class ::WinTypeKeywords;
 
37865
  friend class ::WinFriend;
 
37866
  friend class ::ExtAC;
 
37867
  friend class ::ExtACBuilderCoupling;
 
37868
  friend class ::ExtACSyntaxCoupling;
 
37869
  friend class ::ExtACTree;
 
37870
  friend class ::ExtACKeywords;
 
37871
  friend class ::ExtGnu;
 
37872
  friend class ::PragmaOnceUnitState;
 
37873
  friend class ::PragmaOnce;
 
37874
  friend class ::CMatchSyntax;
 
37875
 
 
37876
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37877
 
 
37878
  CTree *sons[4]; // open, type, close, expr
 
37879
 
 
37880
public:
 
37881
  /** Constructor.
 
37882
   *  \param o Left parenthesis of the type name.
 
37883
   *  \param t The type to cast to.
 
37884
   *  \param c Right parenthesis of the type name. 
 
37885
   *  \param e The expression to cast. */
 
37886
  CT_CastExpr (CTree *o, CTree *t, CTree *c, CTree *e) {
 
37887
    AddSon (sons[0], o); AddSon (sons[1], t); 
 
37888
    AddSon (sons[2], c); AddSon (sons[3], e);
 
37889
  }
 
37890
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
37891
  static const char *NodeId ();
 
37892
  /** Get the name of the node. Can be compared with NodeId(). */
 
37893
  const char *NodeName () const { return NodeId (); }
 
37894
  /** Get the number of sons. */
 
37895
  int Sons () const { return 4; }
 
37896
  /** Get the n-th son.
 
37897
   *  \param n The index of the son.
 
37898
   *  \return The n-th son or NULL. */
 
37899
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
37900
  /** Replace a son.
 
37901
   *  \param old_son The son to replace.
 
37902
   *  \param new_son The new son. */
 
37903
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
37904
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
37905
  }
 
37906
  /** Get the casted expression. */
 
37907
  CTree *Expr () const { return sons[3]; }
 
37908
  /** Get the type to cast to. */
 
37909
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
37910
   private:
 
37911
  typedef CT_CastExpr CCExprResolveExpr;
 
37912
 
 
37913
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
37914
 public :
 
37915
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
37916
  typedef CT_CastExpr CExprResolveExpr;
 
37917
 
 
37918
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
37919
 public :
 
37920
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
37921
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
37922
  const char *__attr_name (unsigned i) const {
 
37923
    static const char *names[] = { "sons" }; return names[i];
 
37924
  }
 
37925
  const void *__attr (unsigned __i) const {
 
37926
    switch (__i) { case 0: return &sons; default: return 0; }
 
37927
  }
 
37928
#line 1684 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37929
};
 
37930
 
 
37931
/** \class CT_StaticCast CTree.h Puma/CTree.h
 
37932
 *  Tree node representing a static cast.
 
37933
 *  Example: \code static_cast<int>(a) \endcode */
 
37934
 
 
37935
#line 37936 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37936
} // closed Puma
 
37937
class CCExprResolve;
 
37938
class CExprResolve;
 
37939
class WinIfExists;
 
37940
class WinImportHandler;
 
37941
class WinMacros;
 
37942
class WinAsm;
 
37943
class WinDeclSpecs;
 
37944
class WinMemberExplSpec;
 
37945
class WinTypeKeywords;
 
37946
class WinFriend;
 
37947
class ExtAC;
 
37948
class ExtACBuilderCoupling;
 
37949
class ExtACSyntaxCoupling;
 
37950
class ExtACTree;
 
37951
class ExtACKeywords;
 
37952
class ExtGnu;
 
37953
class PragmaOnceUnitState;
 
37954
class PragmaOnce;
 
37955
class CMatchSyntax;
 
37956
namespace Puma {
 
37957
 
 
37958
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37959
 
 
37960
#line 37961 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37961
} // closed Puma
 
37962
 
 
37963
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37964
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
37965
#include "CCExprResolveH.ah"
 
37966
#endif
 
37967
namespace Puma {
 
37968
 
 
37969
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37970
 
 
37971
#line 37972 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37972
} // closed Puma
 
37973
 
 
37974
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37975
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
37976
#include "CExprResolveH.ah"
 
37977
#endif
 
37978
namespace Puma {
 
37979
 
 
37980
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
37981
class CT_StaticCast : public CT_Expression {
 
37982
#line 37983 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
37983
  friend class ::CCExprResolve;
 
37984
  friend class ::CExprResolve;
 
37985
  friend class ::WinIfExists;
 
37986
  friend class ::WinImportHandler;
 
37987
  friend class ::WinMacros;
 
37988
  friend class ::WinAsm;
 
37989
  friend class ::WinDeclSpecs;
 
37990
  friend class ::WinMemberExplSpec;
 
37991
  friend class ::WinTypeKeywords;
 
37992
  friend class ::WinFriend;
 
37993
  friend class ::ExtAC;
 
37994
  friend class ::ExtACBuilderCoupling;
 
37995
  friend class ::ExtACSyntaxCoupling;
 
37996
  friend class ::ExtACTree;
 
37997
  friend class ::ExtACKeywords;
 
37998
  friend class ::ExtGnu;
 
37999
  friend class ::PragmaOnceUnitState;
 
38000
  friend class ::PragmaOnce;
 
38001
  friend class ::CMatchSyntax;
 
38002
 
 
38003
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38004
 
 
38005
  CTree *sons[5]; // cast, open, type, close, expr
 
38006
 
 
38007
public:
 
38008
  /** Constructor.
 
38009
   *  \param cst The cast operator, i.e. 'static_cast'.
 
38010
   *  \param o Left arrow bracket of the type name.
 
38011
   *  \param t The type to cast to.
 
38012
   *  \param c Right array bracket of the type name.
 
38013
   *  \param e The expression to cast. */
 
38014
  CT_StaticCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) {
 
38015
    AddSon (sons[0], cst); AddSon (sons[1], o); AddSon (sons[2], t); 
 
38016
    AddSon (sons[3], c); AddSon (sons[4], e);
 
38017
  }
 
38018
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38019
  static const char *NodeId ();
 
38020
  /** Get the name of the node. Can be compared with NodeId(). */
 
38021
  const char *NodeName () const { return NodeId (); }
 
38022
  /** Get the number of sons. */
 
38023
  int Sons () const { return 5; }
 
38024
  /** Get the n-th son.
 
38025
   *  \param n The index of the son.
 
38026
   *  \return The n-th son or NULL. */
 
38027
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
38028
  /** Replace a son.
 
38029
   *  \param old_son The son to replace.
 
38030
   *  \param new_son The new son. */
 
38031
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38032
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
38033
  }
 
38034
  /** Get the casted expression. */
 
38035
  CTree *Expr () const { return sons[4]; }
 
38036
  /** Get the type to cast to. */
 
38037
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
38038
   private:
 
38039
  typedef CT_StaticCast CCExprResolveExpr;
 
38040
 
 
38041
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
38042
 public :
 
38043
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
38044
  typedef CT_StaticCast CExprResolveExpr;
 
38045
 
 
38046
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
38047
 public :
 
38048
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
38049
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
38050
  const char *__attr_name (unsigned i) const {
 
38051
    static const char *names[] = { "sons" }; return names[i];
 
38052
  }
 
38053
  const void *__attr (unsigned __i) const {
 
38054
    switch (__i) { case 0: return &sons; default: return 0; }
 
38055
  }
 
38056
#line 1723 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38057
};
 
38058
 
 
38059
/** \class CT_ConstCast CTree.h Puma/CTree.h
 
38060
 *  Tree node representing a const cast.
 
38061
 *  Example: \code const_cast<int>(a) \endcode */
 
38062
 
 
38063
#line 38064 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38064
} // closed Puma
 
38065
class CCExprResolve;
 
38066
class CExprResolve;
 
38067
class WinIfExists;
 
38068
class WinImportHandler;
 
38069
class WinMacros;
 
38070
class WinAsm;
 
38071
class WinDeclSpecs;
 
38072
class WinMemberExplSpec;
 
38073
class WinTypeKeywords;
 
38074
class WinFriend;
 
38075
class ExtAC;
 
38076
class ExtACBuilderCoupling;
 
38077
class ExtACSyntaxCoupling;
 
38078
class ExtACTree;
 
38079
class ExtACKeywords;
 
38080
class ExtGnu;
 
38081
class PragmaOnceUnitState;
 
38082
class PragmaOnce;
 
38083
class CMatchSyntax;
 
38084
namespace Puma {
 
38085
 
 
38086
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38087
 
 
38088
#line 38089 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38089
} // closed Puma
 
38090
 
 
38091
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38092
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38093
#include "CCExprResolveH.ah"
 
38094
#endif
 
38095
namespace Puma {
 
38096
 
 
38097
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38098
 
 
38099
#line 38100 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38100
} // closed Puma
 
38101
 
 
38102
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38103
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38104
#include "CExprResolveH.ah"
 
38105
#endif
 
38106
namespace Puma {
 
38107
 
 
38108
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38109
class CT_ConstCast : public CT_StaticCast {
 
38110
#line 38111 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38111
  friend class ::CCExprResolve;
 
38112
  friend class ::CExprResolve;
 
38113
  friend class ::WinIfExists;
 
38114
  friend class ::WinImportHandler;
 
38115
  friend class ::WinMacros;
 
38116
  friend class ::WinAsm;
 
38117
  friend class ::WinDeclSpecs;
 
38118
  friend class ::WinMemberExplSpec;
 
38119
  friend class ::WinTypeKeywords;
 
38120
  friend class ::WinFriend;
 
38121
  friend class ::ExtAC;
 
38122
  friend class ::ExtACBuilderCoupling;
 
38123
  friend class ::ExtACSyntaxCoupling;
 
38124
  friend class ::ExtACTree;
 
38125
  friend class ::ExtACKeywords;
 
38126
  friend class ::ExtGnu;
 
38127
  friend class ::PragmaOnceUnitState;
 
38128
  friend class ::PragmaOnce;
 
38129
  friend class ::CMatchSyntax;
 
38130
 
 
38131
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38132
 
 
38133
public:
 
38134
  /** Constructor.
 
38135
   *  \param cst The cast operator, i.e. 'const_cast'.
 
38136
   *  \param o Left arrow bracket of the type name.
 
38137
   *  \param t The type to cast to.
 
38138
   *  \param c Right array bracket of the type name.
 
38139
   *  \param e The expression to cast. */
 
38140
  CT_ConstCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
38141
    CT_StaticCast (cst, o, t, c, e) {}
 
38142
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38143
  static const char *NodeId ();
 
38144
  /** Get the name of the node. Can be compared with NodeId(). */
 
38145
  const char *NodeName () const { return NodeId (); }
 
38146
   private:
 
38147
  typedef CT_ConstCast CCExprResolveExpr;
 
38148
 
 
38149
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
38150
 public :
 
38151
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
38152
  typedef CT_ConstCast CExprResolveExpr;
 
38153
 
 
38154
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
38155
 public :
 
38156
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
38157
  typedef AC::TLE __AttrTypes;
 
38158
  const char *__attr_name (unsigned i) const { return 0; }
 
38159
  const void *__attr (unsigned __i) const { return 0; }
 
38160
#line 1742 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38161
};
 
38162
 
 
38163
/** \class CT_ReintCast CTree.h Puma/CTree.h
 
38164
 *  Tree node representing a reinterpret cast.
 
38165
 *  Example: \code reinterpret_cast<int>(a) \endcode */
 
38166
 
 
38167
#line 38168 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38168
} // closed Puma
 
38169
class CCExprResolve;
 
38170
class CExprResolve;
 
38171
class WinIfExists;
 
38172
class WinImportHandler;
 
38173
class WinMacros;
 
38174
class WinAsm;
 
38175
class WinDeclSpecs;
 
38176
class WinMemberExplSpec;
 
38177
class WinTypeKeywords;
 
38178
class WinFriend;
 
38179
class ExtAC;
 
38180
class ExtACBuilderCoupling;
 
38181
class ExtACSyntaxCoupling;
 
38182
class ExtACTree;
 
38183
class ExtACKeywords;
 
38184
class ExtGnu;
 
38185
class PragmaOnceUnitState;
 
38186
class PragmaOnce;
 
38187
class CMatchSyntax;
 
38188
namespace Puma {
 
38189
 
 
38190
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38191
 
 
38192
#line 38193 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38193
} // closed Puma
 
38194
 
 
38195
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38196
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38197
#include "CCExprResolveH.ah"
 
38198
#endif
 
38199
namespace Puma {
 
38200
 
 
38201
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38202
 
 
38203
#line 38204 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38204
} // closed Puma
 
38205
 
 
38206
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38207
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38208
#include "CExprResolveH.ah"
 
38209
#endif
 
38210
namespace Puma {
 
38211
 
 
38212
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38213
class CT_ReintCast : public CT_StaticCast {
 
38214
#line 38215 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38215
  friend class ::CCExprResolve;
 
38216
  friend class ::CExprResolve;
 
38217
  friend class ::WinIfExists;
 
38218
  friend class ::WinImportHandler;
 
38219
  friend class ::WinMacros;
 
38220
  friend class ::WinAsm;
 
38221
  friend class ::WinDeclSpecs;
 
38222
  friend class ::WinMemberExplSpec;
 
38223
  friend class ::WinTypeKeywords;
 
38224
  friend class ::WinFriend;
 
38225
  friend class ::ExtAC;
 
38226
  friend class ::ExtACBuilderCoupling;
 
38227
  friend class ::ExtACSyntaxCoupling;
 
38228
  friend class ::ExtACTree;
 
38229
  friend class ::ExtACKeywords;
 
38230
  friend class ::ExtGnu;
 
38231
  friend class ::PragmaOnceUnitState;
 
38232
  friend class ::PragmaOnce;
 
38233
  friend class ::CMatchSyntax;
 
38234
 
 
38235
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38236
 
 
38237
public:
 
38238
  /** Constructor.
 
38239
   *  \param cst The cast operator, i.e. 'reinterpret_cast'.
 
38240
   *  \param o Left arrow bracket of the type name.
 
38241
   *  \param t The type to cast to.
 
38242
   *  \param c Right array bracket of the type name.
 
38243
   *  \param e The expression to cast. */
 
38244
  CT_ReintCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
38245
    CT_StaticCast (cst, o, t, c, e) {}
 
38246
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38247
  static const char *NodeId ();
 
38248
  /** Get the name of the node. Can be compared with NodeId(). */
 
38249
  const char *NodeName () const { return NodeId (); }
 
38250
   private:
 
38251
  typedef CT_ReintCast CCExprResolveExpr;
 
38252
 
 
38253
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
38254
 public :
 
38255
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
38256
  typedef CT_ReintCast CExprResolveExpr;
 
38257
 
 
38258
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
38259
 public :
 
38260
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
38261
  typedef AC::TLE __AttrTypes;
 
38262
  const char *__attr_name (unsigned i) const { return 0; }
 
38263
  const void *__attr (unsigned __i) const { return 0; }
 
38264
#line 1761 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38265
};
 
38266
 
 
38267
/** \class CT_DynamicCast CTree.h Puma/CTree.h
 
38268
 *  Tree node representing a dynamic cast.
 
38269
 *  Example: \code dynamic_cast<int>(a) \endcode */
 
38270
 
 
38271
#line 38272 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38272
} // closed Puma
 
38273
class CCExprResolve;
 
38274
class CExprResolve;
 
38275
class WinIfExists;
 
38276
class WinImportHandler;
 
38277
class WinMacros;
 
38278
class WinAsm;
 
38279
class WinDeclSpecs;
 
38280
class WinMemberExplSpec;
 
38281
class WinTypeKeywords;
 
38282
class WinFriend;
 
38283
class ExtAC;
 
38284
class ExtACBuilderCoupling;
 
38285
class ExtACSyntaxCoupling;
 
38286
class ExtACTree;
 
38287
class ExtACKeywords;
 
38288
class ExtGnu;
 
38289
class PragmaOnceUnitState;
 
38290
class PragmaOnce;
 
38291
class CMatchSyntax;
 
38292
namespace Puma {
 
38293
 
 
38294
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38295
 
 
38296
#line 38297 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38297
} // closed Puma
 
38298
 
 
38299
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38300
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38301
#include "CCExprResolveH.ah"
 
38302
#endif
 
38303
namespace Puma {
 
38304
 
 
38305
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38306
 
 
38307
#line 38308 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38308
} // closed Puma
 
38309
 
 
38310
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38311
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38312
#include "CExprResolveH.ah"
 
38313
#endif
 
38314
namespace Puma {
 
38315
 
 
38316
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38317
class CT_DynamicCast : public CT_StaticCast {
 
38318
#line 38319 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38319
  friend class ::CCExprResolve;
 
38320
  friend class ::CExprResolve;
 
38321
  friend class ::WinIfExists;
 
38322
  friend class ::WinImportHandler;
 
38323
  friend class ::WinMacros;
 
38324
  friend class ::WinAsm;
 
38325
  friend class ::WinDeclSpecs;
 
38326
  friend class ::WinMemberExplSpec;
 
38327
  friend class ::WinTypeKeywords;
 
38328
  friend class ::WinFriend;
 
38329
  friend class ::ExtAC;
 
38330
  friend class ::ExtACBuilderCoupling;
 
38331
  friend class ::ExtACSyntaxCoupling;
 
38332
  friend class ::ExtACTree;
 
38333
  friend class ::ExtACKeywords;
 
38334
  friend class ::ExtGnu;
 
38335
  friend class ::PragmaOnceUnitState;
 
38336
  friend class ::PragmaOnce;
 
38337
  friend class ::CMatchSyntax;
 
38338
 
 
38339
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38340
 
 
38341
public:
 
38342
  /** Constructor.
 
38343
   *  \param cst The cast operator, i.e. 'dynamic_cast'.
 
38344
   *  \param o Left arrow bracket of the type name.
 
38345
   *  \param t The type to cast to.
 
38346
   *  \param c Right array bracket of the type name.
 
38347
   *  \param e The expression to cast. */
 
38348
  CT_DynamicCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
38349
    CT_StaticCast (cst, o, t, c, e) {}
 
38350
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38351
  static const char *NodeId ();
 
38352
  /** Get the name of the node. Can be compared with NodeId(). */
 
38353
  const char *NodeName () const { return NodeId (); }
 
38354
   private:
 
38355
  typedef CT_DynamicCast CCExprResolveExpr;
 
38356
 
 
38357
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
38358
 public :
 
38359
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
38360
  typedef CT_DynamicCast CExprResolveExpr;
 
38361
 
 
38362
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
38363
 public :
 
38364
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
38365
  typedef AC::TLE __AttrTypes;
 
38366
  const char *__attr_name (unsigned i) const { return 0; }
 
38367
  const void *__attr (unsigned __i) const { return 0; }
 
38368
#line 1780 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38369
};
 
38370
 
 
38371
/** \class CT_ImplicitCast CTree.h Puma/CTree.h
 
38372
 *  Tree node representing an implicit cast.
 
38373
 *  Example: 
 
38374
 *  \code 
 
38375
 * int i = 1.2;  // implicit cast from float to int 
 
38376
 *  \endcode */
 
38377
 
 
38378
#line 38379 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38379
} // closed Puma
 
38380
class CCExprResolve;
 
38381
class CExprResolve;
 
38382
class WinIfExists;
 
38383
class WinImportHandler;
 
38384
class WinMacros;
 
38385
class WinAsm;
 
38386
class WinDeclSpecs;
 
38387
class WinMemberExplSpec;
 
38388
class WinTypeKeywords;
 
38389
class WinFriend;
 
38390
class ExtAC;
 
38391
class ExtACBuilderCoupling;
 
38392
class ExtACSyntaxCoupling;
 
38393
class ExtACTree;
 
38394
class ExtACKeywords;
 
38395
class ExtGnu;
 
38396
class PragmaOnceUnitState;
 
38397
class PragmaOnce;
 
38398
class CMatchSyntax;
 
38399
namespace Puma {
 
38400
 
 
38401
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38402
 
 
38403
#line 38404 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38404
} // closed Puma
 
38405
 
 
38406
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38407
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38408
#include "CCExprResolveH.ah"
 
38409
#endif
 
38410
namespace Puma {
 
38411
 
 
38412
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38413
 
 
38414
#line 38415 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38415
} // closed Puma
 
38416
 
 
38417
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38418
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38419
#include "CExprResolveH.ah"
 
38420
#endif
 
38421
namespace Puma {
 
38422
 
 
38423
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38424
class CT_ImplicitCast : public CT_Expression {
 
38425
#line 38426 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38426
  friend class ::CCExprResolve;
 
38427
  friend class ::CExprResolve;
 
38428
  friend class ::WinIfExists;
 
38429
  friend class ::WinImportHandler;
 
38430
  friend class ::WinMacros;
 
38431
  friend class ::WinAsm;
 
38432
  friend class ::WinDeclSpecs;
 
38433
  friend class ::WinMemberExplSpec;
 
38434
  friend class ::WinTypeKeywords;
 
38435
  friend class ::WinFriend;
 
38436
  friend class ::ExtAC;
 
38437
  friend class ::ExtACBuilderCoupling;
 
38438
  friend class ::ExtACSyntaxCoupling;
 
38439
  friend class ::ExtACTree;
 
38440
  friend class ::ExtACKeywords;
 
38441
  friend class ::ExtGnu;
 
38442
  friend class ::PragmaOnceUnitState;
 
38443
  friend class ::PragmaOnce;
 
38444
  friend class ::CMatchSyntax;
 
38445
 
 
38446
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38447
 
 
38448
  CTree *_expr; // casted expression
 
38449
 
 
38450
public:
 
38451
  /** Constructor.
 
38452
   *  \param e The expression that is implicitely casted. */
 
38453
  CT_ImplicitCast (CTree *e) { AddSon (_expr, e); }
 
38454
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38455
  static const char *NodeId ();
 
38456
  /** Get the name of the node. Can be compared with NodeId(). */
 
38457
  const char *NodeName () const { return NodeId (); }
 
38458
  /** Get the number of sons. */
 
38459
  int Sons () const { return 1; }
 
38460
  /** Get the n-th son.
 
38461
   *  \param n The index of the son.
 
38462
   *  \return The n-th son or NULL. */
 
38463
  CTree *Son (int n) const { return n == 0 ? _expr : (CTree*)0; }
 
38464
  /** Get the casted expression. */
 
38465
  CTree *Expr () const { return _expr; }
 
38466
  /** Replace a son.
 
38467
   *  \param old_son The son to replace.
 
38468
   *  \param new_son The new son. */
 
38469
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
38470
   { CTree::ReplaceSon (_expr, old_son, new_son); }
 
38471
   private:
 
38472
  typedef CT_ImplicitCast CCExprResolveExpr;
 
38473
 
 
38474
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
38475
 public :
 
38476
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
38477
  typedef CT_ImplicitCast CExprResolveExpr;
 
38478
 
 
38479
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
38480
 public :
 
38481
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
38482
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
38483
  const char *__attr_name (unsigned i) const {
 
38484
    static const char *names[] = { "_expr" }; return names[i];
 
38485
  }
 
38486
  const void *__attr (unsigned __i) const {
 
38487
    switch (__i) { case 0: return &_expr; default: return 0; }
 
38488
  }
 
38489
#line 1812 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38490
};
 
38491
 
 
38492
/** \class CT_TypeidExpr CTree.h Puma/CTree.h
 
38493
 *  Tree node representing a typeid expression.
 
38494
 *  Example: \code typeid(X) \endcode */
 
38495
 
 
38496
#line 38497 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38497
} // closed Puma
 
38498
class CCExprResolve;
 
38499
class CExprResolve;
 
38500
class WinIfExists;
 
38501
class WinImportHandler;
 
38502
class WinMacros;
 
38503
class WinAsm;
 
38504
class WinDeclSpecs;
 
38505
class WinMemberExplSpec;
 
38506
class WinTypeKeywords;
 
38507
class WinFriend;
 
38508
class ExtAC;
 
38509
class ExtACBuilderCoupling;
 
38510
class ExtACSyntaxCoupling;
 
38511
class ExtACTree;
 
38512
class ExtACKeywords;
 
38513
class ExtGnu;
 
38514
class PragmaOnceUnitState;
 
38515
class PragmaOnce;
 
38516
class CMatchSyntax;
 
38517
namespace Puma {
 
38518
 
 
38519
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38520
 
 
38521
#line 38522 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38522
} // closed Puma
 
38523
 
 
38524
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38525
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38526
#include "CCExprResolveH.ah"
 
38527
#endif
 
38528
namespace Puma {
 
38529
 
 
38530
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38531
 
 
38532
#line 38533 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38533
} // closed Puma
 
38534
 
 
38535
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38536
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38537
#include "CExprResolveH.ah"
 
38538
#endif
 
38539
namespace Puma {
 
38540
 
 
38541
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38542
class CT_TypeidExpr : public CT_Expression {
 
38543
#line 38544 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38544
  friend class ::CCExprResolve;
 
38545
  friend class ::CExprResolve;
 
38546
  friend class ::WinIfExists;
 
38547
  friend class ::WinImportHandler;
 
38548
  friend class ::WinMacros;
 
38549
  friend class ::WinAsm;
 
38550
  friend class ::WinDeclSpecs;
 
38551
  friend class ::WinMemberExplSpec;
 
38552
  friend class ::WinTypeKeywords;
 
38553
  friend class ::WinFriend;
 
38554
  friend class ::ExtAC;
 
38555
  friend class ::ExtACBuilderCoupling;
 
38556
  friend class ::ExtACSyntaxCoupling;
 
38557
  friend class ::ExtACTree;
 
38558
  friend class ::ExtACKeywords;
 
38559
  friend class ::ExtGnu;
 
38560
  friend class ::PragmaOnceUnitState;
 
38561
  friend class ::PragmaOnce;
 
38562
  friend class ::CMatchSyntax;
 
38563
 
 
38564
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38565
 
 
38566
  CTree *sons[4]; // typeid, open, type_id/expr, close
 
38567
 
 
38568
public:
 
38569
  /** Constructor.
 
38570
   *  \param tid The 'typeid' operator.
 
38571
   *  \param o The left parenthesis of the type name or expression.
 
38572
   *  \param e The expression or type name for which to get the type identifier.
 
38573
   *  \param c The right parenthesis of the type name or expression. */
 
38574
  CT_TypeidExpr (CTree *tid, CTree *o, CTree *e, CTree *c) {
 
38575
    AddSon (sons[0], tid); AddSon (sons[1], o); 
 
38576
    AddSon (sons[2], e); AddSon (sons[3], c);
 
38577
  }
 
38578
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38579
  static const char *NodeId ();
 
38580
  /** Get the name of the node. Can be compared with NodeId(). */
 
38581
  const char *NodeName () const { return NodeId (); }
 
38582
  /** Get the number of sons. */
 
38583
  int Sons () const { return 4; }
 
38584
  /** Get the n-th son.
 
38585
   *  \param n The index of the son.
 
38586
   *  \return The n-th son or NULL. */
 
38587
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
38588
  /** Replace a son.
 
38589
   *  \param old_son The son to replace.
 
38590
   *  \param new_son The new son. */
 
38591
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38592
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
38593
  }
 
38594
  /** Get the typeid argument, i.e. the expression or type name for
 
38595
   *  which to get the type identifier. */
 
38596
  CTree *Arg () const { return sons[2]; }
 
38597
   private:
 
38598
  typedef CT_TypeidExpr CCExprResolveExpr;
 
38599
 
 
38600
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
38601
 public :
 
38602
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
38603
  typedef CT_TypeidExpr CExprResolveExpr;
 
38604
 
 
38605
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
38606
 public :
 
38607
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
38608
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
38609
  const char *__attr_name (unsigned i) const {
 
38610
    static const char *names[] = { "sons" }; return names[i];
 
38611
  }
 
38612
  const void *__attr (unsigned __i) const {
 
38613
    switch (__i) { case 0: return &sons; default: return 0; }
 
38614
  }
 
38615
#line 1849 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38616
};
 
38617
 
 
38618
/** \class CT_SizeofExpr CTree.h Puma/CTree.h
 
38619
 *  Tree node representing a sizeof expression.
 
38620
 *  Example: \code sizeof(int*) \endcode */
 
38621
 
 
38622
#line 38623 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38623
} // closed Puma
 
38624
class CCExprResolve;
 
38625
class CExprResolve;
 
38626
class WinIfExists;
 
38627
class WinImportHandler;
 
38628
class WinMacros;
 
38629
class WinAsm;
 
38630
class WinDeclSpecs;
 
38631
class WinMemberExplSpec;
 
38632
class WinTypeKeywords;
 
38633
class WinFriend;
 
38634
class ExtAC;
 
38635
class ExtACBuilderCoupling;
 
38636
class ExtACSyntaxCoupling;
 
38637
class ExtACTree;
 
38638
class ExtACKeywords;
 
38639
class ExtGnu;
 
38640
class PragmaOnceUnitState;
 
38641
class PragmaOnce;
 
38642
class CMatchSyntax;
 
38643
namespace Puma {
 
38644
 
 
38645
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38646
 
 
38647
#line 38648 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38648
} // closed Puma
 
38649
 
 
38650
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38651
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38652
#include "CCExprResolveH.ah"
 
38653
#endif
 
38654
namespace Puma {
 
38655
 
 
38656
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38657
 
 
38658
#line 38659 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38659
} // closed Puma
 
38660
 
 
38661
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38662
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38663
#include "CExprResolveH.ah"
 
38664
#endif
 
38665
namespace Puma {
 
38666
 
 
38667
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38668
class CT_SizeofExpr : public CT_Expression {
 
38669
#line 38670 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38670
  friend class ::CCExprResolve;
 
38671
  friend class ::CExprResolve;
 
38672
  friend class ::WinIfExists;
 
38673
  friend class ::WinImportHandler;
 
38674
  friend class ::WinMacros;
 
38675
  friend class ::WinAsm;
 
38676
  friend class ::WinDeclSpecs;
 
38677
  friend class ::WinMemberExplSpec;
 
38678
  friend class ::WinTypeKeywords;
 
38679
  friend class ::WinFriend;
 
38680
  friend class ::ExtAC;
 
38681
  friend class ::ExtACBuilderCoupling;
 
38682
  friend class ::ExtACSyntaxCoupling;
 
38683
  friend class ::ExtACTree;
 
38684
  friend class ::ExtACKeywords;
 
38685
  friend class ::ExtGnu;
 
38686
  friend class ::PragmaOnceUnitState;
 
38687
  friend class ::PragmaOnce;
 
38688
  friend class ::CMatchSyntax;
 
38689
 
 
38690
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38691
 
 
38692
  CTree *sons[5]; // key, open, type, close, expr
 
38693
 
 
38694
public:
 
38695
  /** Constructor.
 
38696
   *  \param k The 'sizeof' keyword.
 
38697
   *  \param o Left parenthesis around the type name.
 
38698
   *  \param t The type from which to get the size.
 
38699
   *  \param c Right parenthesis around the type name. */
 
38700
  CT_SizeofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
38701
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
38702
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
38703
  }
 
38704
  /** Constructor.
 
38705
   *  \param k The 'sizeof' keyword.
 
38706
   *  \param e The expression from which to get the size. */
 
38707
  CT_SizeofExpr (CTree *k, CTree *e) {
 
38708
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
38709
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
38710
  }
 
38711
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38712
  static const char *NodeId ();
 
38713
  /** Get the name of the node. Can be compared with NodeId(). */
 
38714
  const char *NodeName () const { return NodeId (); }
 
38715
  /** Get the number of sons. */
 
38716
  int Sons () const { return CTree::Sons (sons, 5); }
 
38717
  /** Get the n-th son.
 
38718
   *  \param n The index of the son.
 
38719
   *  \return The n-th son or NULL. */
 
38720
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
38721
  /** Replace a son.
 
38722
   *  \param old_son The son to replace.
 
38723
   *  \param new_son The new son. */
 
38724
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38725
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
38726
  }
 
38727
  /** Get the expression. */
 
38728
  CTree *Expr () const { return sons[4]; }
 
38729
  /** Get the type name. */
 
38730
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
38731
   private:
 
38732
  typedef CT_SizeofExpr CCExprResolveExpr;
 
38733
 
 
38734
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
38735
 public :
 
38736
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
38737
  typedef CT_SizeofExpr CExprResolveExpr;
 
38738
 
 
38739
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
38740
 public :
 
38741
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
38742
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
38743
  const char *__attr_name (unsigned i) const {
 
38744
    static const char *names[] = { "sons" }; return names[i];
 
38745
  }
 
38746
  const void *__attr (unsigned __i) const {
 
38747
    switch (__i) { case 0: return &sons; default: return 0; }
 
38748
  }
 
38749
#line 1894 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38750
};
 
38751
 
 
38752
/** \class CT_AlignofExpr CTree.h Puma/CTree.h
 
38753
 *  Tree node representing an alignof expression.
 
38754
 *  Example: \code __alignof(int) \endcode */
 
38755
 
 
38756
#line 38757 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38757
} // closed Puma
 
38758
class CCExprResolve;
 
38759
class CExprResolve;
 
38760
class WinIfExists;
 
38761
class WinImportHandler;
 
38762
class WinMacros;
 
38763
class WinAsm;
 
38764
class WinDeclSpecs;
 
38765
class WinMemberExplSpec;
 
38766
class WinTypeKeywords;
 
38767
class WinFriend;
 
38768
class ExtAC;
 
38769
class ExtACBuilderCoupling;
 
38770
class ExtACSyntaxCoupling;
 
38771
class ExtACTree;
 
38772
class ExtACKeywords;
 
38773
class ExtGnu;
 
38774
class PragmaOnceUnitState;
 
38775
class PragmaOnce;
 
38776
class CMatchSyntax;
 
38777
namespace Puma {
 
38778
 
 
38779
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38780
 
 
38781
#line 38782 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38782
} // closed Puma
 
38783
 
 
38784
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38785
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38786
#include "CCExprResolveH.ah"
 
38787
#endif
 
38788
namespace Puma {
 
38789
 
 
38790
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38791
 
 
38792
#line 38793 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38793
} // closed Puma
 
38794
 
 
38795
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38796
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38797
#include "CExprResolveH.ah"
 
38798
#endif
 
38799
namespace Puma {
 
38800
 
 
38801
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38802
class CT_AlignofExpr : public CT_Expression {
 
38803
#line 38804 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38804
  friend class ::CCExprResolve;
 
38805
  friend class ::CExprResolve;
 
38806
  friend class ::WinIfExists;
 
38807
  friend class ::WinImportHandler;
 
38808
  friend class ::WinMacros;
 
38809
  friend class ::WinAsm;
 
38810
  friend class ::WinDeclSpecs;
 
38811
  friend class ::WinMemberExplSpec;
 
38812
  friend class ::WinTypeKeywords;
 
38813
  friend class ::WinFriend;
 
38814
  friend class ::ExtAC;
 
38815
  friend class ::ExtACBuilderCoupling;
 
38816
  friend class ::ExtACSyntaxCoupling;
 
38817
  friend class ::ExtACTree;
 
38818
  friend class ::ExtACKeywords;
 
38819
  friend class ::ExtGnu;
 
38820
  friend class ::PragmaOnceUnitState;
 
38821
  friend class ::PragmaOnce;
 
38822
  friend class ::CMatchSyntax;
 
38823
 
 
38824
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38825
 
 
38826
  CTree *sons[5]; // key, open, type, close, expr
 
38827
 
 
38828
public:
 
38829
  /** Constructor.
 
38830
   *  \param k The 'alignof' keyword.
 
38831
   *  \param o Left parenthesis around the type name.
 
38832
   *  \param t The type from which to get the alignment.
 
38833
   *  \param c Right parenthesis around the type name. */
 
38834
  CT_AlignofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
38835
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
38836
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
38837
  }
 
38838
  /** Constructor.
 
38839
   *  \param k The 'alignof' keyword.
 
38840
   *  \param e The expression from which to get the alignment. */
 
38841
  CT_AlignofExpr (CTree *k, CTree *e) {
 
38842
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
38843
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
38844
  }
 
38845
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38846
  static const char *NodeId ();
 
38847
  /** Get the name of the node. Can be compared with NodeId(). */
 
38848
  const char *NodeName () const { return NodeId (); }
 
38849
  /** Get the number of sons. */
 
38850
  int Sons () const { return CTree::Sons (sons, 5); }
 
38851
  /** Get the n-th son.
 
38852
   *  \param n The index of the son.
 
38853
   *  \return The n-th son or NULL. */
 
38854
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
38855
  /** Replace a son.
 
38856
   *  \param old_son The son to replace.
 
38857
   *  \param new_son The new son. */
 
38858
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
38859
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
38860
  }
 
38861
  /** Get the expression. */
 
38862
  CTree *Expr () const { return sons[4]; }
 
38863
  /** Get the type name. */
 
38864
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
38865
   private:
 
38866
  typedef CT_AlignofExpr CCExprResolveExpr;
 
38867
 
 
38868
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
38869
 public :
 
38870
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
38871
  typedef CT_AlignofExpr CExprResolveExpr;
 
38872
 
 
38873
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
38874
 public :
 
38875
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
38876
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
38877
  const char *__attr_name (unsigned i) const {
 
38878
    static const char *names[] = { "sons" }; return names[i];
 
38879
  }
 
38880
  const void *__attr (unsigned __i) const {
 
38881
    switch (__i) { case 0: return &sons; default: return 0; }
 
38882
  }
 
38883
#line 1939 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38884
};
 
38885
 
 
38886
/** \class CT_TypeTraitExpr CTree.h Puma/CTree.h
 
38887
 *  Tree node representing an type trait expression.
 
38888
 *  Example: \code __is_enum(E) \endcode */
 
38889
 
 
38890
#line 38891 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38891
} // closed Puma
 
38892
class CCExprResolve;
 
38893
class CExprResolve;
 
38894
class WinIfExists;
 
38895
class WinImportHandler;
 
38896
class WinMacros;
 
38897
class WinAsm;
 
38898
class WinDeclSpecs;
 
38899
class WinMemberExplSpec;
 
38900
class WinTypeKeywords;
 
38901
class WinFriend;
 
38902
class ExtAC;
 
38903
class ExtACBuilderCoupling;
 
38904
class ExtACSyntaxCoupling;
 
38905
class ExtACTree;
 
38906
class ExtACKeywords;
 
38907
class ExtGnu;
 
38908
class PragmaOnceUnitState;
 
38909
class PragmaOnce;
 
38910
class CMatchSyntax;
 
38911
namespace Puma {
 
38912
 
 
38913
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38914
 
 
38915
#line 38916 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38916
} // closed Puma
 
38917
 
 
38918
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38919
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
38920
#include "CCExprResolveH.ah"
 
38921
#endif
 
38922
namespace Puma {
 
38923
 
 
38924
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38925
 
 
38926
#line 38927 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38927
} // closed Puma
 
38928
 
 
38929
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38930
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
38931
#include "CExprResolveH.ah"
 
38932
#endif
 
38933
namespace Puma {
 
38934
 
 
38935
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38936
class CT_TypeTraitExpr : public CT_Expression {
 
38937
#line 38938 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
38938
  friend class ::CCExprResolve;
 
38939
  friend class ::CExprResolve;
 
38940
  friend class ::WinIfExists;
 
38941
  friend class ::WinImportHandler;
 
38942
  friend class ::WinMacros;
 
38943
  friend class ::WinAsm;
 
38944
  friend class ::WinDeclSpecs;
 
38945
  friend class ::WinMemberExplSpec;
 
38946
  friend class ::WinTypeKeywords;
 
38947
  friend class ::WinFriend;
 
38948
  friend class ::ExtAC;
 
38949
  friend class ::ExtACBuilderCoupling;
 
38950
  friend class ::ExtACSyntaxCoupling;
 
38951
  friend class ::ExtACTree;
 
38952
  friend class ::ExtACKeywords;
 
38953
  friend class ::ExtGnu;
 
38954
  friend class ::PragmaOnceUnitState;
 
38955
  friend class ::PragmaOnce;
 
38956
  friend class ::CMatchSyntax;
 
38957
 
 
38958
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
38959
 
 
38960
  CTree *sons[6]; // key, open, type, comma, type, close
 
38961
 
 
38962
public:
 
38963
  /** Constructor.
 
38964
   *  \param k The type trait keyword.
 
38965
   *  \param o Left parenthesis around the type name.
 
38966
   *  \param t The type from which to get the trait.
 
38967
   *  \param c Right parenthesis around the type name. */
 
38968
  CT_TypeTraitExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
38969
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t);
 
38970
    AddSon (sons[3], 0); AddSon (sons[4], 0); AddSon (sons[5], c);
 
38971
  }
 
38972
  /** Constructor.
 
38973
   *  \param k The type trait keyword.
 
38974
   *  \param o Left parenthesis around the type name.
 
38975
   *  \param t1 The first type from which to get the trait.
 
38976
   *  \param cc The comma between the types.
 
38977
   *  \param t2 The second type from which to get the trait.
 
38978
   *  \param c Right parenthesis around the type name. */
 
38979
  CT_TypeTraitExpr (CTree *k, CTree *o, CTree *t1, CTree *cc, CTree *t2, CTree *c) {
 
38980
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t1);
 
38981
    AddSon (sons[3], cc); AddSon (sons[4], t2); AddSon (sons[5], c);
 
38982
  }
 
38983
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
38984
  static const char *NodeId ();
 
38985
  /** Get the name of the node. Can be compared with NodeId(). */
 
38986
  const char *NodeName () const { return NodeId (); }
 
38987
  /** Get the number of sons. */
 
38988
  int Sons () const { return CTree::Sons (sons, 6); }
 
38989
  /** Get the n-th son.
 
38990
   *  \param n The index of the son.
 
38991
   *  \return The n-th son or NULL. */
 
38992
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
38993
  /** Replace a son.
 
38994
   *  \param old_son The son to replace.
 
38995
   *  \param new_son The new son. */
 
38996
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
38997
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
38998
  }
 
38999
  /** Get the type trait operator. */
 
39000
  int Operator () const { return sons[0]->token ()->type (); }
 
39001
  /** Get the first type. */
 
39002
  CT_NamedType *FirstType () const { return (CT_NamedType*)sons[2]; }
 
39003
  /** Get the second type. */
 
39004
  CT_NamedType *SecondType () const { return (CT_NamedType*)sons[4]; }
 
39005
   private:
 
39006
  typedef CT_TypeTraitExpr CCExprResolveExpr;
 
39007
 
 
39008
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
39009
 public :
 
39010
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
39011
  typedef CT_TypeTraitExpr CExprResolveExpr;
 
39012
 
 
39013
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
39014
 public :
 
39015
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
39016
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
39017
  const char *__attr_name (unsigned i) const {
 
39018
    static const char *names[] = { "sons" }; return names[i];
 
39019
  }
 
39020
  const void *__attr (unsigned __i) const {
 
39021
    switch (__i) { case 0: return &sons; default: return 0; }
 
39022
  }
 
39023
#line 1990 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39024
};
 
39025
 
 
39026
/** \class CT_OffsetofExpr CTree.h Puma/CTree.h
 
39027
 *  Tree node representing an offsetof expression.
 
39028
 *  Example: \code offsetof(Circle,radius) \endcode */
 
39029
 
 
39030
#line 39031 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39031
} // closed Puma
 
39032
class CCExprResolve;
 
39033
class CExprResolve;
 
39034
class WinIfExists;
 
39035
class WinImportHandler;
 
39036
class WinMacros;
 
39037
class WinAsm;
 
39038
class WinDeclSpecs;
 
39039
class WinMemberExplSpec;
 
39040
class WinTypeKeywords;
 
39041
class WinFriend;
 
39042
class ExtAC;
 
39043
class ExtACBuilderCoupling;
 
39044
class ExtACSyntaxCoupling;
 
39045
class ExtACTree;
 
39046
class ExtACKeywords;
 
39047
class ExtGnu;
 
39048
class PragmaOnceUnitState;
 
39049
class PragmaOnce;
 
39050
class CMatchSyntax;
 
39051
namespace Puma {
 
39052
 
 
39053
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39054
 
 
39055
#line 39056 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39056
} // closed Puma
 
39057
 
 
39058
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
39059
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
39060
#include "CCExprResolveH.ah"
 
39061
#endif
 
39062
namespace Puma {
 
39063
 
 
39064
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39065
 
 
39066
#line 39067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39067
} // closed Puma
 
39068
 
 
39069
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
39070
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
39071
#include "CExprResolveH.ah"
 
39072
#endif
 
39073
namespace Puma {
 
39074
 
 
39075
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39076
class CT_OffsetofExpr : public CT_Expression {
 
39077
#line 39078 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39078
  friend class ::CCExprResolve;
 
39079
  friend class ::CExprResolve;
 
39080
  friend class ::WinIfExists;
 
39081
  friend class ::WinImportHandler;
 
39082
  friend class ::WinMacros;
 
39083
  friend class ::WinAsm;
 
39084
  friend class ::WinDeclSpecs;
 
39085
  friend class ::WinMemberExplSpec;
 
39086
  friend class ::WinTypeKeywords;
 
39087
  friend class ::WinFriend;
 
39088
  friend class ::ExtAC;
 
39089
  friend class ::ExtACBuilderCoupling;
 
39090
  friend class ::ExtACSyntaxCoupling;
 
39091
  friend class ::ExtACTree;
 
39092
  friend class ::ExtACKeywords;
 
39093
  friend class ::ExtGnu;
 
39094
  friend class ::PragmaOnceUnitState;
 
39095
  friend class ::PragmaOnce;
 
39096
  friend class ::CMatchSyntax;
 
39097
 
 
39098
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39099
 
 
39100
  CTree *sons[6]; // key, open, type, comma, member, close
 
39101
 
 
39102
public:
 
39103
  /** Constructor.
 
39104
   *  \param k The 'offsetof' keyword.
 
39105
   *  \param o Left parenthesis around the parameters.
 
39106
   *  \param t The type containing the member.
 
39107
   *  \param co The comma between type and member.
 
39108
   *  \param m The member for which to get the offset.
 
39109
   *  \param c Right parenthesis around the parameters. */
 
39110
  CT_OffsetofExpr (CTree *k, CTree *o, CTree *t, CTree *co, CTree *m, CTree *c) {
 
39111
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
39112
    AddSon (sons[3], co); AddSon (sons[4], m); AddSon (sons[5], c);
 
39113
  }
 
39114
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39115
  static const char *NodeId ();
 
39116
  /** Get the name of the node. Can be compared with NodeId(). */
 
39117
  const char *NodeName () const { return NodeId (); }
 
39118
  /** Get the number of sons. */
 
39119
  int Sons () const { return 6; }
 
39120
  /** Get the n-th son.
 
39121
   *  \param n The index of the son.
 
39122
   *  \return The n-th son or NULL. */
 
39123
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
39124
  /** Replace a son.
 
39125
   *  \param old_son The son to replace.
 
39126
   *  \param new_son The new son. */
 
39127
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39128
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
39129
  }
 
39130
  /** Get the typename. */
 
39131
  CTree *TypeName () const { return sons[2]; }
 
39132
  /** Get the member designator. */
 
39133
  CT_DesignatorSeq *MemberDesignator () const { return (CT_DesignatorSeq*)sons[4]; }
 
39134
   private:
 
39135
  typedef CT_OffsetofExpr CCExprResolveExpr;
 
39136
 
 
39137
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
39138
 public :
 
39139
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
39140
  typedef CT_OffsetofExpr CExprResolveExpr;
 
39141
 
 
39142
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
39143
 public :
 
39144
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
39145
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
39146
  const char *__attr_name (unsigned i) const {
 
39147
    static const char *names[] = { "sons" }; return names[i];
 
39148
  }
 
39149
  const void *__attr (unsigned __i) const {
 
39150
    switch (__i) { case 0: return &sons; default: return 0; }
 
39151
  }
 
39152
#line 2030 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39153
};
 
39154
 
 
39155
/** \class CT_IndexDesignator CTree.h Puma/CTree.h
 
39156
 *  Tree node representing an index designator.
 
39157
 *  Example: \code [1] \endcode */
 
39158
 
 
39159
#line 39160 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39160
} // closed Puma
 
39161
class CCExprResolve;
 
39162
class CExprResolve;
 
39163
class WinIfExists;
 
39164
class WinImportHandler;
 
39165
class WinMacros;
 
39166
class WinAsm;
 
39167
class WinDeclSpecs;
 
39168
class WinMemberExplSpec;
 
39169
class WinTypeKeywords;
 
39170
class WinFriend;
 
39171
class ExtAC;
 
39172
class ExtACBuilderCoupling;
 
39173
class ExtACSyntaxCoupling;
 
39174
class ExtACTree;
 
39175
class ExtACKeywords;
 
39176
class ExtGnu;
 
39177
class PragmaOnceUnitState;
 
39178
class PragmaOnce;
 
39179
class CMatchSyntax;
 
39180
namespace Puma {
 
39181
 
 
39182
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39183
 
 
39184
#line 39185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39185
} // closed Puma
 
39186
 
 
39187
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
39188
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
39189
#include "CCExprResolveH.ah"
 
39190
#endif
 
39191
namespace Puma {
 
39192
 
 
39193
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39194
 
 
39195
#line 39196 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39196
} // closed Puma
 
39197
 
 
39198
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
39199
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
39200
#include "CExprResolveH.ah"
 
39201
#endif
 
39202
namespace Puma {
 
39203
 
 
39204
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39205
class CT_IndexDesignator : public CT_Expression {
 
39206
#line 39207 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39207
  friend class ::CCExprResolve;
 
39208
  friend class ::CExprResolve;
 
39209
  friend class ::WinIfExists;
 
39210
  friend class ::WinImportHandler;
 
39211
  friend class ::WinMacros;
 
39212
  friend class ::WinAsm;
 
39213
  friend class ::WinDeclSpecs;
 
39214
  friend class ::WinMemberExplSpec;
 
39215
  friend class ::WinTypeKeywords;
 
39216
  friend class ::WinFriend;
 
39217
  friend class ::ExtAC;
 
39218
  friend class ::ExtACBuilderCoupling;
 
39219
  friend class ::ExtACSyntaxCoupling;
 
39220
  friend class ::ExtACTree;
 
39221
  friend class ::ExtACKeywords;
 
39222
  friend class ::ExtGnu;
 
39223
  friend class ::PragmaOnceUnitState;
 
39224
  friend class ::PragmaOnce;
 
39225
  friend class ::CMatchSyntax;
 
39226
 
 
39227
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39228
 
 
39229
  CTree *sons[3]; // open, index, close
 
39230
 
 
39231
public:
 
39232
  /** Constructor.
 
39233
   *  \param o Left bracket of the index designator.
 
39234
   *  \param i The index expression.
 
39235
   *  \param c Right bracket of the index designator. */
 
39236
  CT_IndexDesignator (CTree *o, CTree *i, CTree *c) {
 
39237
    AddSon (sons[0], o); AddSon (sons[1], i); AddSon (sons[2], c);
 
39238
  }
 
39239
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39240
  static const char *NodeId ();
 
39241
  /** Get the name of the node. Can be compared with NodeId(). */
 
39242
  const char *NodeName () const { return NodeId (); }
 
39243
  /** Get the number of sons. */
 
39244
  int Sons () const { return 3; }
 
39245
  /** Get the n-th son.
 
39246
   *  \param n The index of the son.
 
39247
   *  \return The n-th son or NULL. */
 
39248
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
39249
  /** Replace a son.
 
39250
   *  \param old_son The son to replace.
 
39251
   *  \param new_son The new son. */
 
39252
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39253
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
39254
  }
 
39255
   private:
 
39256
  typedef CT_IndexDesignator CCExprResolveExpr;
 
39257
 
 
39258
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
39259
 public :
 
39260
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
39261
  typedef CT_IndexDesignator CExprResolveExpr;
 
39262
 
 
39263
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
39264
 public :
 
39265
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
39266
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
39267
  const char *__attr_name (unsigned i) const {
 
39268
    static const char *names[] = { "sons" }; return names[i];
 
39269
  }
 
39270
  const void *__attr (unsigned __i) const {
 
39271
    switch (__i) { case 0: return &sons; default: return 0; }
 
39272
  }
 
39273
#line 2062 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39274
};
 
39275
 
 
39276
/** \class CT_MembDesignator CTree.h Puma/CTree.h
 
39277
 *  Tree node representing a member designator.
 
39278
 *  Example: \code .a \endcode */
 
39279
 
 
39280
#line 39281 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39281
} // closed Puma
 
39282
class CCExprResolve;
 
39283
class CExprResolve;
 
39284
class WinIfExists;
 
39285
class WinImportHandler;
 
39286
class WinMacros;
 
39287
class WinAsm;
 
39288
class WinDeclSpecs;
 
39289
class WinMemberExplSpec;
 
39290
class WinTypeKeywords;
 
39291
class WinFriend;
 
39292
class ExtAC;
 
39293
class ExtACBuilderCoupling;
 
39294
class ExtACSyntaxCoupling;
 
39295
class ExtACTree;
 
39296
class ExtACKeywords;
 
39297
class ExtGnu;
 
39298
class PragmaOnceUnitState;
 
39299
class PragmaOnce;
 
39300
class CMatchSyntax;
 
39301
namespace Puma {
 
39302
 
 
39303
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39304
 
 
39305
#line 39306 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39306
} // closed Puma
 
39307
 
 
39308
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
39309
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
39310
#include "CCExprResolveH.ah"
 
39311
#endif
 
39312
namespace Puma {
 
39313
 
 
39314
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39315
 
 
39316
#line 39317 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39317
} // closed Puma
 
39318
 
 
39319
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
39320
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
39321
#include "CExprResolveH.ah"
 
39322
#endif
 
39323
namespace Puma {
 
39324
 
 
39325
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39326
class CT_MembDesignator : public CT_Expression {
 
39327
#line 39328 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39328
  friend class ::CCExprResolve;
 
39329
  friend class ::CExprResolve;
 
39330
  friend class ::WinIfExists;
 
39331
  friend class ::WinImportHandler;
 
39332
  friend class ::WinMacros;
 
39333
  friend class ::WinAsm;
 
39334
  friend class ::WinDeclSpecs;
 
39335
  friend class ::WinMemberExplSpec;
 
39336
  friend class ::WinTypeKeywords;
 
39337
  friend class ::WinFriend;
 
39338
  friend class ::ExtAC;
 
39339
  friend class ::ExtACBuilderCoupling;
 
39340
  friend class ::ExtACSyntaxCoupling;
 
39341
  friend class ::ExtACTree;
 
39342
  friend class ::ExtACKeywords;
 
39343
  friend class ::ExtGnu;
 
39344
  friend class ::PragmaOnceUnitState;
 
39345
  friend class ::PragmaOnce;
 
39346
  friend class ::CMatchSyntax;
 
39347
 
 
39348
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39349
 
 
39350
  CTree *sons[2]; // dot, member
 
39351
 
 
39352
public:
 
39353
  /** Constructor.
 
39354
   *  \param d The dot before the member name.
 
39355
   *  \param m The member name. */
 
39356
  CT_MembDesignator (CTree *d, CTree *m) { AddSon (sons[0], d); AddSon (sons[1], m); }
 
39357
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39358
  static const char *NodeId ();
 
39359
  /** Get the name of the node. Can be compared with NodeId(). */
 
39360
  const char *NodeName () const { return NodeId (); }
 
39361
  /** Get the number of sons. */
 
39362
  int Sons () const { return 2; }
 
39363
  /** Get the n-th son.
 
39364
   *  \param n The index of the son.
 
39365
   *  \return The n-th son or NULL. */
 
39366
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
39367
  /** Replace a son.
 
39368
   *  \param old_son The son to replace.
 
39369
   *  \param new_son The new son. */
 
39370
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39371
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
39372
  }
 
39373
   private:
 
39374
  typedef CT_MembDesignator CCExprResolveExpr;
 
39375
 
 
39376
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
39377
 public :
 
39378
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
39379
  typedef CT_MembDesignator CExprResolveExpr;
 
39380
 
 
39381
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
39382
 public :
 
39383
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
39384
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
39385
  const char *__attr_name (unsigned i) const {
 
39386
    static const char *names[] = { "sons" }; return names[i];
 
39387
  }
 
39388
  const void *__attr (unsigned __i) const {
 
39389
    switch (__i) { case 0: return &sons; default: return 0; }
 
39390
  }
 
39391
#line 2091 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39392
};
 
39393
 
 
39394
/** \class CT_DesignatorSeq CTree.h Puma/CTree.h
 
39395
 *  Tree node representing a designator sequence.
 
39396
 *  Example: \code .a.b.c \endcode */
 
39397
 
 
39398
#line 39399 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39399
} // closed Puma
 
39400
class CCExprResolve;
 
39401
class CExprResolve;
 
39402
class WinIfExists;
 
39403
class WinImportHandler;
 
39404
class WinMacros;
 
39405
class WinAsm;
 
39406
class WinDeclSpecs;
 
39407
class WinMemberExplSpec;
 
39408
class WinTypeKeywords;
 
39409
class WinFriend;
 
39410
class ExtAC;
 
39411
class ExtACBuilderCoupling;
 
39412
class ExtACSyntaxCoupling;
 
39413
class ExtACTree;
 
39414
class ExtACKeywords;
 
39415
class ExtGnu;
 
39416
class PragmaOnceUnitState;
 
39417
class PragmaOnce;
 
39418
class CMatchSyntax;
 
39419
namespace Puma {
 
39420
 
 
39421
#line 2096 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39422
class CT_DesignatorSeq : public CT_List, public CSemValue {
 
39423
#line 39424 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39424
  friend class ::CCExprResolve;
 
39425
  friend class ::CExprResolve;
 
39426
  friend class ::WinIfExists;
 
39427
  friend class ::WinImportHandler;
 
39428
  friend class ::WinMacros;
 
39429
  friend class ::WinAsm;
 
39430
  friend class ::WinDeclSpecs;
 
39431
  friend class ::WinMemberExplSpec;
 
39432
  friend class ::WinTypeKeywords;
 
39433
  friend class ::WinFriend;
 
39434
  friend class ::ExtAC;
 
39435
  friend class ::ExtACBuilderCoupling;
 
39436
  friend class ::ExtACSyntaxCoupling;
 
39437
  friend class ::ExtACTree;
 
39438
  friend class ::ExtACKeywords;
 
39439
  friend class ::ExtGnu;
 
39440
  friend class ::PragmaOnceUnitState;
 
39441
  friend class ::PragmaOnce;
 
39442
  friend class ::CMatchSyntax;
 
39443
 
 
39444
#line 2096 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39445
 
 
39446
public:
 
39447
  /** Constructor.
 
39448
   *  \param size Initial number of designators. */
 
39449
  CT_DesignatorSeq (int size = 1) : CT_List (size, 2) {}
 
39450
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39451
  static const char *NodeId ();
 
39452
  /** Get the name of the node. Can be compared with NodeId(). */
 
39453
  const char *NodeName () const { return NodeId (); }
 
39454
 
 
39455
  /** Get the type of the entity to initialize. */
 
39456
  CTypeInfo *Type () const { return type; }
 
39457
  /** Get the value of the entity to initialize. */
 
39458
  CExprValue *Value () const { return value; }
 
39459
  /** Get the semantic value object. */
 
39460
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
39461
public:
 
39462
  typedef AC::TLE __AttrTypes;
 
39463
  const char *__attr_name (unsigned i) const { return 0; }
 
39464
  const void *__attr (unsigned __i) const { return 0; }
 
39465
#line 2112 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39466
};
 
39467
 
 
39468
/*****************************************************************************/
 
39469
/*                                                                           */
 
39470
/*                         Declaration specifiers                            */
 
39471
/*                                                                           */
 
39472
/*****************************************************************************/
 
39473
 
 
39474
/** \class CT_DeclSpec CTree.h Puma/CTree.h
 
39475
 *  Base class for all tree nodes representing declaration specifiers. */
 
39476
 
 
39477
#line 39478 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39478
} // closed Puma
 
39479
class CCExprResolve;
 
39480
class CExprResolve;
 
39481
class WinIfExists;
 
39482
class WinImportHandler;
 
39483
class WinMacros;
 
39484
class WinAsm;
 
39485
class WinDeclSpecs;
 
39486
class WinMemberExplSpec;
 
39487
class WinTypeKeywords;
 
39488
class WinFriend;
 
39489
class ExtAC;
 
39490
class ExtACBuilderCoupling;
 
39491
class ExtACSyntaxCoupling;
 
39492
class ExtACTree;
 
39493
class ExtACKeywords;
 
39494
class ExtGnu;
 
39495
class PragmaOnceUnitState;
 
39496
class PragmaOnce;
 
39497
class CMatchSyntax;
 
39498
namespace Puma {
 
39499
 
 
39500
#line 2122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39501
class CT_DeclSpec : public CTree {
 
39502
#line 39503 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39503
  friend class ::CCExprResolve;
 
39504
  friend class ::CExprResolve;
 
39505
  friend class ::WinIfExists;
 
39506
  friend class ::WinImportHandler;
 
39507
  friend class ::WinMacros;
 
39508
  friend class ::WinAsm;
 
39509
  friend class ::WinDeclSpecs;
 
39510
  friend class ::WinMemberExplSpec;
 
39511
  friend class ::WinTypeKeywords;
 
39512
  friend class ::WinFriend;
 
39513
  friend class ::ExtAC;
 
39514
  friend class ::ExtACBuilderCoupling;
 
39515
  friend class ::ExtACSyntaxCoupling;
 
39516
  friend class ::ExtACTree;
 
39517
  friend class ::ExtACKeywords;
 
39518
  friend class ::ExtGnu;
 
39519
  friend class ::PragmaOnceUnitState;
 
39520
  friend class ::PragmaOnce;
 
39521
  friend class ::CMatchSyntax;
 
39522
 
 
39523
#line 2122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39524
 
 
39525
protected:
 
39526
  /** Constructor. */
 
39527
  CT_DeclSpec () {}
 
39528
public:
 
39529
  typedef AC::TLE __AttrTypes;
 
39530
  const char *__attr_name (unsigned i) const { return 0; }
 
39531
  const void *__attr (unsigned __i) const { return 0; }
 
39532
#line 2126 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39533
};
 
39534
 
 
39535
/** \class CT_PrimDeclSpec CTree.h Puma/CTree.h
 
39536
 *  Tree node representing a primitive declaration specifier. */
 
39537
 
 
39538
#line 39539 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39539
} // closed Puma
 
39540
class CCExprResolve;
 
39541
class CExprResolve;
 
39542
class WinIfExists;
 
39543
class WinImportHandler;
 
39544
class WinMacros;
 
39545
class WinAsm;
 
39546
class WinDeclSpecs;
 
39547
class WinMemberExplSpec;
 
39548
class WinTypeKeywords;
 
39549
class WinFriend;
 
39550
class ExtAC;
 
39551
class ExtACBuilderCoupling;
 
39552
class ExtACSyntaxCoupling;
 
39553
class ExtACTree;
 
39554
class ExtACKeywords;
 
39555
class ExtGnu;
 
39556
class PragmaOnceUnitState;
 
39557
class PragmaOnce;
 
39558
class CMatchSyntax;
 
39559
namespace Puma {
 
39560
 
 
39561
#line 2130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39562
class CT_PrimDeclSpec : public CT_DeclSpec {
 
39563
#line 39564 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39564
  friend class ::CCExprResolve;
 
39565
  friend class ::CExprResolve;
 
39566
  friend class ::WinIfExists;
 
39567
  friend class ::WinImportHandler;
 
39568
  friend class ::WinMacros;
 
39569
  friend class ::WinAsm;
 
39570
  friend class ::WinDeclSpecs;
 
39571
  friend class ::WinMemberExplSpec;
 
39572
  friend class ::WinTypeKeywords;
 
39573
  friend class ::WinFriend;
 
39574
  friend class ::ExtAC;
 
39575
  friend class ::ExtACBuilderCoupling;
 
39576
  friend class ::ExtACSyntaxCoupling;
 
39577
  friend class ::ExtACTree;
 
39578
  friend class ::ExtACKeywords;
 
39579
  friend class ::ExtGnu;
 
39580
  friend class ::PragmaOnceUnitState;
 
39581
  friend class ::PragmaOnce;
 
39582
  friend class ::CMatchSyntax;
 
39583
 
 
39584
#line 2130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39585
 
 
39586
public:
 
39587
  /** Declaration specifier types. */
 
39588
  enum Type { 
 
39589
    PDS_FRIEND,    /** friend */
 
39590
    PDS_TYPEDEF,   /** typedef */
 
39591
    PDS_AUTO,      /** auto */
 
39592
    PDS_REGISTER,  /** register */
 
39593
    PDS_STATIC,    /** static */
 
39594
    PDS_EXTERN,    /** extern */
 
39595
    PDS_MUTABLE,   /** mutable */
 
39596
    PDS_INLINE,    /** inline */
 
39597
    PDS_VIRTUAL,   /** virtual */
 
39598
    PDS_EXPLICIT,  /** explicit */
 
39599
    PDS_CONST,     /** const */
 
39600
    PDS_VOLATILE,  /** volatile */
 
39601
    PDS_RESTRICT,  /** restrict */
 
39602
    PDS_CHAR,      /** char */
 
39603
    PDS_WCHAR_T,   /** wchar_t */
 
39604
    PDS_BOOL,      /** bool */
 
39605
    PDS_C_BOOL,    /** _Bool */
 
39606
    PDS_SHORT,     /** short */
 
39607
    PDS_INT,       /** int */
 
39608
    PDS_LONG,      /** long */
 
39609
    PDS_SIGNED,    /** signed */
 
39610
    PDS_UNSIGNED,  /** unsigned */
 
39611
    PDS_FLOAT,     /** float */
 
39612
    PDS_DOUBLE,    /** double */
 
39613
    PDS_VOID,      /** void */
 
39614
    // GNU C++ specific storage specifier
 
39615
    PDS_THREAD,    /** __thread */
 
39616
    // AspectC++ specific type specifier
 
39617
    PDS_UNKNOWN_T, /** unknown_t */
 
39618
    // Win specific declaration specifiers
 
39619
    PDS_CDECL,     /** __cdecl */
 
39620
    PDS_STDCALL,   /** __stdcall */
 
39621
    PDS_FASTCALL,  /** __fastcall */
 
39622
    PDS_INT64,     /** __int64 */
 
39623
    PDS_UNKNOWN,   /** Unknown declaration specifier. */
 
39624
    PDS_NUM        /** Number of declaration specifier types. */
 
39625
  };
 
39626
 
 
39627
private:
 
39628
  Type _type;
 
39629
  CTree *_token; // has to be a CT_Token
 
39630
 
 
39631
  void determine_type ();
 
39632
 
 
39633
public:
 
39634
  /** Constructor.
 
39635
   *  \param t The token containing the declaration specifier. */
 
39636
  CT_PrimDeclSpec (CT_Token *t) { AddSon (_token, (CTree*)t); determine_type (); }
 
39637
  /** Constructor.
 
39638
   *  \param t The declaration specifier type. */
 
39639
  CT_PrimDeclSpec (Type t) : _token (0) { _type = t; }
 
39640
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39641
  static const char *NodeId ();
 
39642
  /** Get the name of the node. Can be compared with NodeId(). */
 
39643
  const char *NodeName () const { return NodeId (); }
 
39644
  /** Get the number of sons. */
 
39645
  int Sons () const { return _token ? 1 : 0; }
 
39646
  /** Get the n-th son.
 
39647
   *  \param n The index of the son.
 
39648
   *  \return The n-th son or NULL. */
 
39649
  CTree *Son (int n) const 
 
39650
   { return (n == 0) ? _token : (CTree*)0; }
 
39651
  /** Get the textual representation of the declaration specifier.
 
39652
   *  \return The string representation or " ". */
 
39653
  const char *SpecText () const 
 
39654
   { return _token ? _token->token ()->text () : " "; }
 
39655
  /** Get the declaration specifier type. */
 
39656
  Type SpecType () const { return _type; }
 
39657
  /** Number of declaration specifier types. */
 
39658
  static const int NumTypes = PDS_NUM;
 
39659
  /** Replace a son.
 
39660
   *  \param old_son The son to replace.
 
39661
   *  \param new_son The new son. */
 
39662
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39663
    CTree::ReplaceSon (_token, (CTree*)old_son, (CTree*)new_son);
 
39664
    determine_type ();
 
39665
  }
 
39666
public:
 
39667
  typedef AC::TL<Puma::CT_PrimDeclSpec::Type,AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
39668
  const char *__attr_name (unsigned i) const {
 
39669
    static const char *names[] = { "_type", "_token" }; return names[i];
 
39670
  }
 
39671
  const void *__attr (unsigned __i) const {
 
39672
    switch (__i) { case 33: return &_type; case 34: return &_token; default: return 0; }
 
39673
  }
 
39674
#line 2211 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39675
};
 
39676
 
 
39677
/** \class CT_NamedType CTree.h Puma/CTree.h
 
39678
 *  Tree node representing a named type.
 
39679
 *  Example: \code (int*)a \endcode where int* is a 
 
39680
 *  type with a generated name. */
 
39681
 
 
39682
#line 39683 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39683
} // closed Puma
 
39684
class CCExprResolve;
 
39685
class CExprResolve;
 
39686
class WinIfExists;
 
39687
class WinImportHandler;
 
39688
class WinMacros;
 
39689
class WinAsm;
 
39690
class WinDeclSpecs;
 
39691
class WinMemberExplSpec;
 
39692
class WinTypeKeywords;
 
39693
class WinFriend;
 
39694
class ExtAC;
 
39695
class ExtACBuilderCoupling;
 
39696
class ExtACSyntaxCoupling;
 
39697
class ExtACTree;
 
39698
class ExtACKeywords;
 
39699
class ExtGnu;
 
39700
class PragmaOnceUnitState;
 
39701
class PragmaOnce;
 
39702
class CMatchSyntax;
 
39703
namespace Puma {
 
39704
 
 
39705
#line 2217 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39706
class CT_NamedType : public CT_DeclSpec, public CSemObject {
 
39707
#line 39708 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39708
  friend class ::CCExprResolve;
 
39709
  friend class ::CExprResolve;
 
39710
  friend class ::WinIfExists;
 
39711
  friend class ::WinImportHandler;
 
39712
  friend class ::WinMacros;
 
39713
  friend class ::WinAsm;
 
39714
  friend class ::WinDeclSpecs;
 
39715
  friend class ::WinMemberExplSpec;
 
39716
  friend class ::WinTypeKeywords;
 
39717
  friend class ::WinFriend;
 
39718
  friend class ::ExtAC;
 
39719
  friend class ::ExtACBuilderCoupling;
 
39720
  friend class ::ExtACSyntaxCoupling;
 
39721
  friend class ::ExtACTree;
 
39722
  friend class ::ExtACKeywords;
 
39723
  friend class ::ExtGnu;
 
39724
  friend class ::PragmaOnceUnitState;
 
39725
  friend class ::PragmaOnce;
 
39726
  friend class ::CMatchSyntax;
 
39727
 
 
39728
#line 2217 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39729
 
 
39730
  CTree *sons[2]; // declspecs, declarator
 
39731
 
 
39732
public:
 
39733
  /** Constructor.
 
39734
   *  \param dss The declaration specifier sequence of the type.
 
39735
   *  \param d The type declarator. */
 
39736
  CT_NamedType (CTree *dss, CTree *d) { AddSon (sons[0], dss); AddSon (sons[1], d); }
 
39737
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39738
  static const char *NodeId ();
 
39739
  /** Get the name of the node. Can be compared with NodeId(). */
 
39740
  const char *NodeName () const { return NodeId (); }
 
39741
  /** Get the number of sons. */
 
39742
  int Sons () const { return CTree::Sons (sons, 2); }
 
39743
  /** Get the n-th son.
 
39744
   *  \param n The index of the son.
 
39745
   *  \return The n-th son or NULL. */
 
39746
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
39747
  /** Get the declarator. */
 
39748
  CTree *Declarator () const { return sons[1]; }
 
39749
  /** Replace a son.
 
39750
   *  \param old_son The son to replace.
 
39751
   *  \param new_son The new son. */
 
39752
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39753
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
39754
  }
 
39755
  /** Get the semantic information about the created temporary object. */
 
39756
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
39757
public:
 
39758
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
39759
  const char *__attr_name (unsigned i) const {
 
39760
    static const char *names[] = { "sons" }; return names[i];
 
39761
  }
 
39762
  const void *__attr (unsigned __i) const {
 
39763
    switch (__i) { case 0: return &sons; default: return 0; }
 
39764
  }
 
39765
#line 2245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39766
};
 
39767
      
 
39768
/** \class CT_ClassSpec CTree.h Puma/CTree.h
 
39769
 *  Tree node representing a class specifier.
 
39770
 *  Example: \code class X \endcode */
 
39771
 
 
39772
#line 39773 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39773
} // closed Puma
 
39774
class CCExprResolve;
 
39775
class CExprResolve;
 
39776
class WinIfExists;
 
39777
class WinImportHandler;
 
39778
class WinMacros;
 
39779
class WinAsm;
 
39780
class WinDeclSpecs;
 
39781
class WinMemberExplSpec;
 
39782
class WinTypeKeywords;
 
39783
class WinFriend;
 
39784
class ExtAC;
 
39785
class ExtACBuilderCoupling;
 
39786
class ExtACSyntaxCoupling;
 
39787
class ExtACTree;
 
39788
class ExtACKeywords;
 
39789
class ExtGnu;
 
39790
class PragmaOnceUnitState;
 
39791
class PragmaOnce;
 
39792
class CMatchSyntax;
 
39793
namespace Puma {
 
39794
 
 
39795
#line 2250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39796
class CT_ClassSpec : public CT_DeclSpec, public CSemObject {
 
39797
#line 39798 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39798
  friend class ::CCExprResolve;
 
39799
  friend class ::CExprResolve;
 
39800
  friend class ::WinIfExists;
 
39801
  friend class ::WinImportHandler;
 
39802
  friend class ::WinMacros;
 
39803
  friend class ::WinAsm;
 
39804
  friend class ::WinDeclSpecs;
 
39805
  friend class ::WinMemberExplSpec;
 
39806
  friend class ::WinTypeKeywords;
 
39807
  friend class ::WinFriend;
 
39808
  friend class ::ExtAC;
 
39809
  friend class ::ExtACBuilderCoupling;
 
39810
  friend class ::ExtACSyntaxCoupling;
 
39811
  friend class ::ExtACTree;
 
39812
  friend class ::ExtACKeywords;
 
39813
  friend class ::ExtGnu;
 
39814
  friend class ::PragmaOnceUnitState;
 
39815
  friend class ::PragmaOnce;
 
39816
  friend class ::CMatchSyntax;
 
39817
 
 
39818
#line 2250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39819
 
 
39820
  CTree *sons[2]; // key, name
 
39821
  
 
39822
public:
 
39823
  /** Constructor.
 
39824
   *  \param k The 'class' or 'struct' keyword.
 
39825
   *  \param n The class name. */
 
39826
  CT_ClassSpec (CTree *k, CTree *n) { AddSon (sons[0], k); AddSon (sons[1], n); }
 
39827
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39828
  static const char *NodeId ();
 
39829
  /** Get the name of the node. Can be compared with NodeId(). */
 
39830
  const char *NodeName () const { return NodeId (); }
 
39831
  /** Get the number of sons. */
 
39832
  int Sons () const { return 2; }
 
39833
  /** Get the n-th son.
 
39834
   *  \param n The index of the son.
 
39835
   *  \return The n-th son or NULL. */
 
39836
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
39837
  /** Get the class name. */
 
39838
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
39839
  /** Get the semantic information about the class. */
 
39840
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
39841
  /** Replace a son.
 
39842
   *  \param old_son The son to replace.
 
39843
   *  \param new_son The new son. */
 
39844
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
39845
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
39846
  }
 
39847
public:
 
39848
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
39849
  const char *__attr_name (unsigned i) const {
 
39850
    static const char *names[] = { "sons" }; return names[i];
 
39851
  }
 
39852
  const void *__attr (unsigned __i) const {
 
39853
    switch (__i) { case 0: return &sons; default: return 0; }
 
39854
  }
 
39855
#line 2278 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39856
};
 
39857
 
 
39858
/** \class CT_UnionSpec CTree.h Puma/CTree.h
 
39859
 *  Tree node representing a union specifier.
 
39860
 *  Example: \code union X \endcode */
 
39861
 
 
39862
#line 39863 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39863
} // closed Puma
 
39864
class CCExprResolve;
 
39865
class CExprResolve;
 
39866
class WinIfExists;
 
39867
class WinImportHandler;
 
39868
class WinMacros;
 
39869
class WinAsm;
 
39870
class WinDeclSpecs;
 
39871
class WinMemberExplSpec;
 
39872
class WinTypeKeywords;
 
39873
class WinFriend;
 
39874
class ExtAC;
 
39875
class ExtACBuilderCoupling;
 
39876
class ExtACSyntaxCoupling;
 
39877
class ExtACTree;
 
39878
class ExtACKeywords;
 
39879
class ExtGnu;
 
39880
class PragmaOnceUnitState;
 
39881
class PragmaOnce;
 
39882
class CMatchSyntax;
 
39883
namespace Puma {
 
39884
 
 
39885
#line 2283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39886
class CT_UnionSpec : public CT_ClassSpec {
 
39887
#line 39888 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39888
  friend class ::CCExprResolve;
 
39889
  friend class ::CExprResolve;
 
39890
  friend class ::WinIfExists;
 
39891
  friend class ::WinImportHandler;
 
39892
  friend class ::WinMacros;
 
39893
  friend class ::WinAsm;
 
39894
  friend class ::WinDeclSpecs;
 
39895
  friend class ::WinMemberExplSpec;
 
39896
  friend class ::WinTypeKeywords;
 
39897
  friend class ::WinFriend;
 
39898
  friend class ::ExtAC;
 
39899
  friend class ::ExtACBuilderCoupling;
 
39900
  friend class ::ExtACSyntaxCoupling;
 
39901
  friend class ::ExtACTree;
 
39902
  friend class ::ExtACKeywords;
 
39903
  friend class ::ExtGnu;
 
39904
  friend class ::PragmaOnceUnitState;
 
39905
  friend class ::PragmaOnce;
 
39906
  friend class ::CMatchSyntax;
 
39907
 
 
39908
#line 2283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39909
 
 
39910
public:
 
39911
  /** Constructor.
 
39912
   *  \param k The 'union' keyword.
 
39913
   *  \param n The name of the union. */
 
39914
  CT_UnionSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
39915
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39916
  static const char *NodeId ();
 
39917
  /** Get the name of the node. Can be compared with NodeId(). */
 
39918
  const char *NodeName () const { return NodeId (); }
 
39919
public:
 
39920
  typedef AC::TLE __AttrTypes;
 
39921
  const char *__attr_name (unsigned i) const { return 0; }
 
39922
  const void *__attr (unsigned __i) const { return 0; }
 
39923
#line 2293 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39924
};
 
39925
 
 
39926
/** \class CT_EnumSpec CTree.h Puma/CTree.h
 
39927
 *  Tree node representing an enumeration specifier.
 
39928
 *  Example: \code enum X \endcode */
 
39929
 
 
39930
#line 39931 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39931
} // closed Puma
 
39932
class CCExprResolve;
 
39933
class CExprResolve;
 
39934
class WinIfExists;
 
39935
class WinImportHandler;
 
39936
class WinMacros;
 
39937
class WinAsm;
 
39938
class WinDeclSpecs;
 
39939
class WinMemberExplSpec;
 
39940
class WinTypeKeywords;
 
39941
class WinFriend;
 
39942
class ExtAC;
 
39943
class ExtACBuilderCoupling;
 
39944
class ExtACSyntaxCoupling;
 
39945
class ExtACTree;
 
39946
class ExtACKeywords;
 
39947
class ExtGnu;
 
39948
class PragmaOnceUnitState;
 
39949
class PragmaOnce;
 
39950
class CMatchSyntax;
 
39951
namespace Puma {
 
39952
 
 
39953
#line 2298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39954
class CT_EnumSpec : public CT_ClassSpec {
 
39955
#line 39956 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39956
  friend class ::CCExprResolve;
 
39957
  friend class ::CExprResolve;
 
39958
  friend class ::WinIfExists;
 
39959
  friend class ::WinImportHandler;
 
39960
  friend class ::WinMacros;
 
39961
  friend class ::WinAsm;
 
39962
  friend class ::WinDeclSpecs;
 
39963
  friend class ::WinMemberExplSpec;
 
39964
  friend class ::WinTypeKeywords;
 
39965
  friend class ::WinFriend;
 
39966
  friend class ::ExtAC;
 
39967
  friend class ::ExtACBuilderCoupling;
 
39968
  friend class ::ExtACSyntaxCoupling;
 
39969
  friend class ::ExtACTree;
 
39970
  friend class ::ExtACKeywords;
 
39971
  friend class ::ExtGnu;
 
39972
  friend class ::PragmaOnceUnitState;
 
39973
  friend class ::PragmaOnce;
 
39974
  friend class ::CMatchSyntax;
 
39975
 
 
39976
#line 2298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39977
 
 
39978
public:
 
39979
  /** Constructor.
 
39980
   *  \param k The 'enum' keyword. 
 
39981
   *  \param n The name of the enumeration. */
 
39982
  CT_EnumSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
39983
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
39984
  static const char *NodeId ();
 
39985
  /** Get the name of the node. Can be compared with NodeId(). */
 
39986
  const char *NodeName () const { return NodeId (); }
 
39987
public:
 
39988
  typedef AC::TLE __AttrTypes;
 
39989
  const char *__attr_name (unsigned i) const { return 0; }
 
39990
  const void *__attr (unsigned __i) const { return 0; }
 
39991
#line 2308 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
39992
};
 
39993
 
 
39994
/** \class CT_ExceptionSpec CTree.h Puma/CTree.h
 
39995
 *  Tree node representing an exception specifier.
 
39996
 *  Example: \code throw(std::exception) \endcode */
 
39997
 
 
39998
#line 39999 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
39999
} // closed Puma
 
40000
class CCExprResolve;
 
40001
class CExprResolve;
 
40002
class WinIfExists;
 
40003
class WinImportHandler;
 
40004
class WinMacros;
 
40005
class WinAsm;
 
40006
class WinDeclSpecs;
 
40007
class WinMemberExplSpec;
 
40008
class WinTypeKeywords;
 
40009
class WinFriend;
 
40010
class ExtAC;
 
40011
class ExtACBuilderCoupling;
 
40012
class ExtACSyntaxCoupling;
 
40013
class ExtACTree;
 
40014
class ExtACKeywords;
 
40015
class ExtGnu;
 
40016
class PragmaOnceUnitState;
 
40017
class PragmaOnce;
 
40018
class CMatchSyntax;
 
40019
namespace Puma {
 
40020
 
 
40021
#line 2313 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40022
class CT_ExceptionSpec : public CT_DeclSpec {
 
40023
#line 40024 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40024
  friend class ::CCExprResolve;
 
40025
  friend class ::CExprResolve;
 
40026
  friend class ::WinIfExists;
 
40027
  friend class ::WinImportHandler;
 
40028
  friend class ::WinMacros;
 
40029
  friend class ::WinAsm;
 
40030
  friend class ::WinDeclSpecs;
 
40031
  friend class ::WinMemberExplSpec;
 
40032
  friend class ::WinTypeKeywords;
 
40033
  friend class ::WinFriend;
 
40034
  friend class ::ExtAC;
 
40035
  friend class ::ExtACBuilderCoupling;
 
40036
  friend class ::ExtACSyntaxCoupling;
 
40037
  friend class ::ExtACTree;
 
40038
  friend class ::ExtACKeywords;
 
40039
  friend class ::ExtGnu;
 
40040
  friend class ::PragmaOnceUnitState;
 
40041
  friend class ::PragmaOnce;
 
40042
  friend class ::CMatchSyntax;
 
40043
 
 
40044
#line 2313 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40045
 
 
40046
  CTree *sons[2]; // throw, type_id_list
 
40047
  
 
40048
public:
 
40049
  /** Constructor.
 
40050
   *  \param k The 'throw' keyword.
 
40051
   *  \param l The type list for the exception type to throw. */
 
40052
  CT_ExceptionSpec (CTree *k, CTree *l) { AddSon (sons[0], k); AddSon (sons[1], l); }
 
40053
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40054
  static const char *NodeId ();
 
40055
  /** Get the name of the node. Can be compared with NodeId(). */
 
40056
  const char *NodeName () const { return NodeId (); }
 
40057
  /** Get the number of sons. */
 
40058
  int Sons () const { return 2; }
 
40059
  /** Get the n-th son.
 
40060
   *  \param n The index of the son.
 
40061
   *  \return The n-th son or NULL. */
 
40062
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
40063
  /** Get the exception type list. */
 
40064
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
40065
  /** Replace a son.
 
40066
   *  \param old_son The son to replace.
 
40067
   *  \param new_son The new son. */
 
40068
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40069
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
40070
  }
 
40071
public:
 
40072
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
40073
  const char *__attr_name (unsigned i) const {
 
40074
    static const char *names[] = { "sons" }; return names[i];
 
40075
  }
 
40076
  const void *__attr (unsigned __i) const {
 
40077
    switch (__i) { case 0: return &sons; default: return 0; }
 
40078
  }
 
40079
#line 2339 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40080
};
 
40081
 
 
40082
/*****************************************************************************/
 
40083
/*                                                                           */
 
40084
/*                              Declarations                                 */
 
40085
/*                                                                           */
 
40086
/*****************************************************************************/
 
40087
 
 
40088
/** \class CT_Decl CTree.h Puma/CTree.h
 
40089
 *  Base class for all tree nodes representing declarations. */
 
40090
 
 
40091
#line 40092 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40092
} // closed Puma
 
40093
class CCExprResolve;
 
40094
class CExprResolve;
 
40095
class WinIfExists;
 
40096
class WinImportHandler;
 
40097
class WinMacros;
 
40098
class WinAsm;
 
40099
class WinDeclSpecs;
 
40100
class WinMemberExplSpec;
 
40101
class WinTypeKeywords;
 
40102
class WinFriend;
 
40103
class ExtAC;
 
40104
class ExtACBuilderCoupling;
 
40105
class ExtACSyntaxCoupling;
 
40106
class ExtACTree;
 
40107
class ExtACKeywords;
 
40108
class ExtGnu;
 
40109
class PragmaOnceUnitState;
 
40110
class PragmaOnce;
 
40111
class CMatchSyntax;
 
40112
namespace Puma {
 
40113
 
 
40114
#line 2349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40115
class CT_Decl : public CTree {
 
40116
#line 40117 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40117
  friend class ::CCExprResolve;
 
40118
  friend class ::CExprResolve;
 
40119
  friend class ::WinIfExists;
 
40120
  friend class ::WinImportHandler;
 
40121
  friend class ::WinMacros;
 
40122
  friend class ::WinAsm;
 
40123
  friend class ::WinDeclSpecs;
 
40124
  friend class ::WinMemberExplSpec;
 
40125
  friend class ::WinTypeKeywords;
 
40126
  friend class ::WinFriend;
 
40127
  friend class ::ExtAC;
 
40128
  friend class ::ExtACBuilderCoupling;
 
40129
  friend class ::ExtACSyntaxCoupling;
 
40130
  friend class ::ExtACTree;
 
40131
  friend class ::ExtACKeywords;
 
40132
  friend class ::ExtGnu;
 
40133
  friend class ::PragmaOnceUnitState;
 
40134
  friend class ::PragmaOnce;
 
40135
  friend class ::CMatchSyntax;
 
40136
 
 
40137
#line 2349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40138
 
 
40139
  CT_LinkageSpec *_linkage;
 
40140
  
 
40141
protected:
 
40142
  /** Constructor. */
 
40143
  CT_Decl () : _linkage (0) {}
 
40144
  
 
40145
public:
 
40146
  /** Set the linkage of the declared entity.
 
40147
   *  \param l The linkage specifiers. */
 
40148
  void Linkage (CT_LinkageSpec *l) { _linkage = l; }
 
40149
  /** Get the linkage specifiers. */
 
40150
  CT_LinkageSpec *Linkage () const { return _linkage; }
 
40151
  /** Get this. */
 
40152
  virtual CT_Decl *IsDeclaration () { return this; }
 
40153
public:
 
40154
  typedef AC::TL<Puma::CT_LinkageSpec *,AC::TLE > __AttrTypes;
 
40155
  const char *__attr_name (unsigned i) const {
 
40156
    static const char *names[] = { "_linkage" }; return names[i];
 
40157
  }
 
40158
  const void *__attr (unsigned __i) const {
 
40159
    switch (__i) { case 0: return &_linkage; default: return 0; }
 
40160
  }
 
40161
#line 2364 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40162
};
 
40163
 
 
40164
/** \class CT_Program CTree.h Puma/CTree.h
 
40165
 *  Root node of C/C++ syntax trees. */
 
40166
 
 
40167
#line 40168 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40168
} // closed Puma
 
40169
class CCExprResolve;
 
40170
class CExprResolve;
 
40171
class WinIfExists;
 
40172
class WinImportHandler;
 
40173
class WinMacros;
 
40174
class WinAsm;
 
40175
class WinDeclSpecs;
 
40176
class WinMemberExplSpec;
 
40177
class WinTypeKeywords;
 
40178
class WinFriend;
 
40179
class ExtAC;
 
40180
class ExtACBuilderCoupling;
 
40181
class ExtACSyntaxCoupling;
 
40182
class ExtACTree;
 
40183
class ExtACKeywords;
 
40184
class ExtGnu;
 
40185
class PragmaOnceUnitState;
 
40186
class PragmaOnce;
 
40187
class CMatchSyntax;
 
40188
namespace Puma {
 
40189
 
 
40190
#line 2368 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40191
class CT_Program : public CT_DeclList, public CSemScope {
 
40192
#line 40193 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40193
  friend class ::CCExprResolve;
 
40194
  friend class ::CExprResolve;
 
40195
  friend class ::WinIfExists;
 
40196
  friend class ::WinImportHandler;
 
40197
  friend class ::WinMacros;
 
40198
  friend class ::WinAsm;
 
40199
  friend class ::WinDeclSpecs;
 
40200
  friend class ::WinMemberExplSpec;
 
40201
  friend class ::WinTypeKeywords;
 
40202
  friend class ::WinFriend;
 
40203
  friend class ::ExtAC;
 
40204
  friend class ::ExtACBuilderCoupling;
 
40205
  friend class ::ExtACSyntaxCoupling;
 
40206
  friend class ::ExtACTree;
 
40207
  friend class ::ExtACKeywords;
 
40208
  friend class ::ExtGnu;
 
40209
  friend class ::PragmaOnceUnitState;
 
40210
  friend class ::PragmaOnce;
 
40211
  friend class ::CMatchSyntax;
 
40212
 
 
40213
#line 2368 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40214
 
 
40215
public:
 
40216
  /** Constructor.
 
40217
   *  \param size The initial number of declarations in the program.
 
40218
   *  \param incr The initial increment count. */
 
40219
  CT_Program (int size = 20, int incr = 20) : CT_DeclList (size, incr) {}
 
40220
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40221
  static const char *NodeId ();
 
40222
  /** Get the name of the node. Can be compared with NodeId(). */
 
40223
  const char *NodeName () const { return NodeId (); }
 
40224
  /** Get the top scope. */
 
40225
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
40226
public:
 
40227
  typedef AC::TLE __AttrTypes;
 
40228
  const char *__attr_name (unsigned i) const { return 0; }
 
40229
  const void *__attr (unsigned __i) const { return 0; }
 
40230
#line 2380 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40231
};
 
40232
   
 
40233
/** \class CT_ObjDecl CTree.h Puma/CTree.h
 
40234
 *  Tree node representing an object declaration.
 
40235
 *  Example: \code int *i \endcode */
 
40236
 
 
40237
#line 40238 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40238
} // closed Puma
 
40239
class CCExprResolve;
 
40240
class CExprResolve;
 
40241
class WinIfExists;
 
40242
class WinImportHandler;
 
40243
class WinMacros;
 
40244
class WinAsm;
 
40245
class WinDeclSpecs;
 
40246
class WinMemberExplSpec;
 
40247
class WinTypeKeywords;
 
40248
class WinFriend;
 
40249
class ExtAC;
 
40250
class ExtACBuilderCoupling;
 
40251
class ExtACSyntaxCoupling;
 
40252
class ExtACTree;
 
40253
class ExtACKeywords;
 
40254
class ExtGnu;
 
40255
class PragmaOnceUnitState;
 
40256
class PragmaOnce;
 
40257
class CMatchSyntax;
 
40258
namespace Puma {
 
40259
 
 
40260
#line 2385 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40261
class CT_ObjDecl : public CT_Decl {
 
40262
#line 40263 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40263
  friend class ::CCExprResolve;
 
40264
  friend class ::CExprResolve;
 
40265
  friend class ::WinIfExists;
 
40266
  friend class ::WinImportHandler;
 
40267
  friend class ::WinMacros;
 
40268
  friend class ::WinAsm;
 
40269
  friend class ::WinDeclSpecs;
 
40270
  friend class ::WinMemberExplSpec;
 
40271
  friend class ::WinTypeKeywords;
 
40272
  friend class ::WinFriend;
 
40273
  friend class ::ExtAC;
 
40274
  friend class ::ExtACBuilderCoupling;
 
40275
  friend class ::ExtACSyntaxCoupling;
 
40276
  friend class ::ExtACTree;
 
40277
  friend class ::ExtACKeywords;
 
40278
  friend class ::ExtGnu;
 
40279
  friend class ::PragmaOnceUnitState;
 
40280
  friend class ::PragmaOnce;
 
40281
  friend class ::CMatchSyntax;
 
40282
 
 
40283
#line 2385 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40284
 
 
40285
  CTree *sons[3]; // declspecs, declarators, colon
 
40286
 
 
40287
public:
 
40288
  /** Constructor.
 
40289
   *  \param dsl The declaration specifier sequence.
 
40290
   *  \param dl The declarator list.
 
40291
   *  \param c Optional colon. */
 
40292
  CT_ObjDecl (CTree *dsl, CTree *dl, CTree *c) {
 
40293
    AddSon (sons[0], dsl); AddSon (sons[1], dl); AddSon (sons[2], c);
 
40294
  }
 
40295
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40296
  static const char *NodeId ();
 
40297
  /** Get the name of the node. Can be compared with NodeId(). */
 
40298
  const char *NodeName () const { return NodeId (); }
 
40299
  /** Get the number of sons. */
 
40300
  int Sons () const { return 3; }
 
40301
  /** Get the n-th son.
 
40302
   *  \param n The index of the son.
 
40303
   *  \return The n-th son or NULL. */
 
40304
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
40305
  /** Get the declaration specifier sequence. */
 
40306
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
40307
  /** Get the declarator list. */
 
40308
  CT_DeclaratorList *Declarators () const { return (CT_DeclaratorList*)sons[1]; }
 
40309
  /** Replace a son.
 
40310
   *  \param old_son The son to replace.
 
40311
   *  \param new_son The new son. */
 
40312
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40313
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
40314
  }
 
40315
public:
 
40316
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
40317
  const char *__attr_name (unsigned i) const {
 
40318
    static const char *names[] = { "sons" }; return names[i];
 
40319
  }
 
40320
  const void *__attr (unsigned __i) const {
 
40321
    switch (__i) { case 0: return &sons; default: return 0; }
 
40322
  }
 
40323
#line 2416 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40324
};
 
40325
 
 
40326
/** \class CT_TemplateDecl CTree.h Puma/CTree.h
 
40327
 *  Tree node representing a template declaration. */
 
40328
 
 
40329
#line 40330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40330
} // closed Puma
 
40331
class CCExprResolve;
 
40332
class CExprResolve;
 
40333
class WinIfExists;
 
40334
class WinImportHandler;
 
40335
class WinMacros;
 
40336
class WinAsm;
 
40337
class WinDeclSpecs;
 
40338
class WinMemberExplSpec;
 
40339
class WinTypeKeywords;
 
40340
class WinFriend;
 
40341
class ExtAC;
 
40342
class ExtACBuilderCoupling;
 
40343
class ExtACSyntaxCoupling;
 
40344
class ExtACTree;
 
40345
class ExtACKeywords;
 
40346
class ExtGnu;
 
40347
class PragmaOnceUnitState;
 
40348
class PragmaOnce;
 
40349
class CMatchSyntax;
 
40350
namespace Puma {
 
40351
 
 
40352
#line 2420 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40353
class CT_TemplateDecl : public CT_Decl, public CSemScope {
 
40354
#line 40355 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40355
  friend class ::CCExprResolve;
 
40356
  friend class ::CExprResolve;
 
40357
  friend class ::WinIfExists;
 
40358
  friend class ::WinImportHandler;
 
40359
  friend class ::WinMacros;
 
40360
  friend class ::WinAsm;
 
40361
  friend class ::WinDeclSpecs;
 
40362
  friend class ::WinMemberExplSpec;
 
40363
  friend class ::WinTypeKeywords;
 
40364
  friend class ::WinFriend;
 
40365
  friend class ::ExtAC;
 
40366
  friend class ::ExtACBuilderCoupling;
 
40367
  friend class ::ExtACSyntaxCoupling;
 
40368
  friend class ::ExtACTree;
 
40369
  friend class ::ExtACKeywords;
 
40370
  friend class ::ExtGnu;
 
40371
  friend class ::PragmaOnceUnitState;
 
40372
  friend class ::PragmaOnce;
 
40373
  friend class ::CMatchSyntax;
 
40374
 
 
40375
#line 2420 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40376
 
 
40377
  CTree *sons[3]; // export, param_list, decl
 
40378
 
 
40379
public:
 
40380
  /** Constructor.
 
40381
   *  \param e Optional 'export' keyword. 
 
40382
   *  \param p The template parameter list.
 
40383
   *  \param d The class or function declaration. */
 
40384
  CT_TemplateDecl (CTree *e, CTree *p, CTree *d) {
 
40385
    AddSon (sons[0], e); AddSon (sons[1], p); AddSon (sons[2], d);
 
40386
  }
 
40387
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40388
  static const char *NodeId ();
 
40389
  /** Get the name of the node. Can be compared with NodeId(). */
 
40390
  const char *NodeName () const { return NodeId (); }
 
40391
  /** Get the number of sons. */
 
40392
  int Sons () const { return CTree::Sons (sons, 3); }
 
40393
  /** Get the n-th son.
 
40394
   *  \param n The index of the son.
 
40395
   *  \return The n-th son or NULL. */
 
40396
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
40397
  /** Replace a son.
 
40398
   *  \param old_son The son to replace.
 
40399
   *  \param new_son The new son. */
 
40400
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40401
    CTree::ReplaceSon (sons, 3, old_son, new_son); 
 
40402
  }
 
40403
  /** Get the 'export' keyword. */
 
40404
  CTree *Export () const { return sons[0]; }
 
40405
  /** Get the template parameter list. */
 
40406
  CT_TemplateParamList *Parameters () const { 
 
40407
    return (CT_TemplateParamList*)sons[1]; 
 
40408
  }
 
40409
  /** Get the class or function declaration. */
 
40410
  CTree *Declaration () const { return sons[2]; }
 
40411
  /** Get the scope opened by the template declaration. */
 
40412
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
40413
public:
 
40414
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
40415
  const char *__attr_name (unsigned i) const {
 
40416
    static const char *names[] = { "sons" }; return names[i];
 
40417
  }
 
40418
  const void *__attr (unsigned __i) const {
 
40419
    switch (__i) { case 0: return &sons; default: return 0; }
 
40420
  }
 
40421
#line 2457 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40422
};
 
40423
 
 
40424
/** \class CT_TemplateParamDecl CTree.h Puma/CTree.h
 
40425
 *  Base class for all tree nodesrepresenting a template parameter declaration. */
 
40426
 
 
40427
#line 40428 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40428
} // closed Puma
 
40429
class CCExprResolve;
 
40430
class CExprResolve;
 
40431
class WinIfExists;
 
40432
class WinImportHandler;
 
40433
class WinMacros;
 
40434
class WinAsm;
 
40435
class WinDeclSpecs;
 
40436
class WinMemberExplSpec;
 
40437
class WinTypeKeywords;
 
40438
class WinFriend;
 
40439
class ExtAC;
 
40440
class ExtACBuilderCoupling;
 
40441
class ExtACSyntaxCoupling;
 
40442
class ExtACTree;
 
40443
class ExtACKeywords;
 
40444
class ExtGnu;
 
40445
class PragmaOnceUnitState;
 
40446
class PragmaOnce;
 
40447
class CMatchSyntax;
 
40448
namespace Puma {
 
40449
 
 
40450
#line 2461 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40451
class CT_TemplateParamDecl : public CT_Decl, public CSemObject {
 
40452
#line 40453 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40453
  friend class ::CCExprResolve;
 
40454
  friend class ::CExprResolve;
 
40455
  friend class ::WinIfExists;
 
40456
  friend class ::WinImportHandler;
 
40457
  friend class ::WinMacros;
 
40458
  friend class ::WinAsm;
 
40459
  friend class ::WinDeclSpecs;
 
40460
  friend class ::WinMemberExplSpec;
 
40461
  friend class ::WinTypeKeywords;
 
40462
  friend class ::WinFriend;
 
40463
  friend class ::ExtAC;
 
40464
  friend class ::ExtACBuilderCoupling;
 
40465
  friend class ::ExtACSyntaxCoupling;
 
40466
  friend class ::ExtACTree;
 
40467
  friend class ::ExtACKeywords;
 
40468
  friend class ::ExtGnu;
 
40469
  friend class ::PragmaOnceUnitState;
 
40470
  friend class ::PragmaOnce;
 
40471
  friend class ::CMatchSyntax;
 
40472
 
 
40473
#line 2461 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40474
 
 
40475
protected:
 
40476
  /** Constructor. */
 
40477
  CT_TemplateParamDecl () {}
 
40478
  
 
40479
public:
 
40480
  /** Get the template default argument. */
 
40481
  virtual CT_ExprList *DefaultArgument () const = 0;
 
40482
  /** Get the semantic information about the template parameter. */
 
40483
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
40484
public:
 
40485
  typedef AC::TLE __AttrTypes;
 
40486
  const char *__attr_name (unsigned i) const { return 0; }
 
40487
  const void *__attr (unsigned __i) const { return 0; }
 
40488
#line 2471 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40489
};
 
40490
 
 
40491
/** \class CT_NonTypeParamDecl CTree.h Puma/CTree.h
 
40492
 *  Tree node representing a template non-type parameter declaration. */
 
40493
 
 
40494
#line 40495 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40495
} // closed Puma
 
40496
class CCExprResolve;
 
40497
class CExprResolve;
 
40498
class WinIfExists;
 
40499
class WinImportHandler;
 
40500
class WinMacros;
 
40501
class WinAsm;
 
40502
class WinDeclSpecs;
 
40503
class WinMemberExplSpec;
 
40504
class WinTypeKeywords;
 
40505
class WinFriend;
 
40506
class ExtAC;
 
40507
class ExtACBuilderCoupling;
 
40508
class ExtACSyntaxCoupling;
 
40509
class ExtACTree;
 
40510
class ExtACKeywords;
 
40511
class ExtGnu;
 
40512
class PragmaOnceUnitState;
 
40513
class PragmaOnce;
 
40514
class CMatchSyntax;
 
40515
namespace Puma {
 
40516
 
 
40517
#line 2475 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40518
class CT_NonTypeParamDecl : public CT_TemplateParamDecl {
 
40519
#line 40520 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40520
  friend class ::CCExprResolve;
 
40521
  friend class ::CExprResolve;
 
40522
  friend class ::WinIfExists;
 
40523
  friend class ::WinImportHandler;
 
40524
  friend class ::WinMacros;
 
40525
  friend class ::WinAsm;
 
40526
  friend class ::WinDeclSpecs;
 
40527
  friend class ::WinMemberExplSpec;
 
40528
  friend class ::WinTypeKeywords;
 
40529
  friend class ::WinFriend;
 
40530
  friend class ::ExtAC;
 
40531
  friend class ::ExtACBuilderCoupling;
 
40532
  friend class ::ExtACSyntaxCoupling;
 
40533
  friend class ::ExtACTree;
 
40534
  friend class ::ExtACKeywords;
 
40535
  friend class ::ExtGnu;
 
40536
  friend class ::PragmaOnceUnitState;
 
40537
  friend class ::PragmaOnce;
 
40538
  friend class ::CMatchSyntax;
 
40539
 
 
40540
#line 2475 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40541
 
 
40542
  CTree *sons[3]; // declspecs, declarator, init
 
40543
 
 
40544
public:
 
40545
  /** Constructor.
 
40546
   *  \param dsl The declaration specifier sequence.
 
40547
   *  \param d The parameter declarator.
 
40548
   *  \param i The default template argument. */
 
40549
  CT_NonTypeParamDecl (CTree *dsl, CTree *d, CTree *i = (CTree*)0) {
 
40550
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], i);
 
40551
  }
 
40552
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40553
  static const char *NodeId ();
 
40554
  /** Get the name of the node. Can be compared with NodeId(). */
 
40555
  const char *NodeName () const { return NodeId (); }
 
40556
  /** Get the number of sons. */
 
40557
  int Sons () const { return CTree::Sons (sons, 3); }
 
40558
  /** Get the n-th son.
 
40559
   *  \param n The index of the son.
 
40560
   *  \return The n-th son or NULL. */
 
40561
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
40562
  /** Get the declaration specifier sequence. */
 
40563
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
40564
  /** Get the parameter declarator. */
 
40565
  CTree *Declarator () const { return sons[1]; }
 
40566
  /** Get the default template argument. */
 
40567
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[2]; }
 
40568
  /** Get the semantic information about the template parameter. */
 
40569
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
40570
  /** Set the default template argument. 
 
40571
   *  \param i The default argument. */
 
40572
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
40573
  /** Replace a son.
 
40574
   *  \param old_son The son to replace.
 
40575
   *  \param new_son The new son. */
 
40576
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40577
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
40578
  }
 
40579
public:
 
40580
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
40581
  const char *__attr_name (unsigned i) const {
 
40582
    static const char *names[] = { "sons" }; return names[i];
 
40583
  }
 
40584
  const void *__attr (unsigned __i) const {
 
40585
    switch (__i) { case 0: return &sons; default: return 0; }
 
40586
  }
 
40587
#line 2513 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40588
};
 
40589
 
 
40590
/** \class CT_TypeParamDecl CTree.h Puma/CTree.h
 
40591
 *  Tree node representing a template type parameter declaration. */
 
40592
 
 
40593
#line 40594 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40594
} // closed Puma
 
40595
class CCExprResolve;
 
40596
class CExprResolve;
 
40597
class WinIfExists;
 
40598
class WinImportHandler;
 
40599
class WinMacros;
 
40600
class WinAsm;
 
40601
class WinDeclSpecs;
 
40602
class WinMemberExplSpec;
 
40603
class WinTypeKeywords;
 
40604
class WinFriend;
 
40605
class ExtAC;
 
40606
class ExtACBuilderCoupling;
 
40607
class ExtACSyntaxCoupling;
 
40608
class ExtACTree;
 
40609
class ExtACKeywords;
 
40610
class ExtGnu;
 
40611
class PragmaOnceUnitState;
 
40612
class PragmaOnce;
 
40613
class CMatchSyntax;
 
40614
namespace Puma {
 
40615
 
 
40616
#line 2517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40617
class CT_TypeParamDecl : public CT_TemplateParamDecl {
 
40618
#line 40619 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40619
  friend class ::CCExprResolve;
 
40620
  friend class ::CExprResolve;
 
40621
  friend class ::WinIfExists;
 
40622
  friend class ::WinImportHandler;
 
40623
  friend class ::WinMacros;
 
40624
  friend class ::WinAsm;
 
40625
  friend class ::WinDeclSpecs;
 
40626
  friend class ::WinMemberExplSpec;
 
40627
  friend class ::WinTypeKeywords;
 
40628
  friend class ::WinFriend;
 
40629
  friend class ::ExtAC;
 
40630
  friend class ::ExtACBuilderCoupling;
 
40631
  friend class ::ExtACSyntaxCoupling;
 
40632
  friend class ::ExtACTree;
 
40633
  friend class ::ExtACKeywords;
 
40634
  friend class ::ExtGnu;
 
40635
  friend class ::PragmaOnceUnitState;
 
40636
  friend class ::PragmaOnce;
 
40637
  friend class ::CMatchSyntax;
 
40638
 
 
40639
#line 2517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40640
 
 
40641
  CTree *sons[4]; // params, key, id, init
 
40642
 
 
40643
public:
 
40644
  /** Constructor.
 
40645
   *  \param pl The template parameter list of an template template parameter.
 
40646
   *  \param k The type keyword, i.e. 'class' or 'typename'.
 
40647
   *  \param id The parameter identifier.
 
40648
   *  \param i The default template argument. */
 
40649
  CT_TypeParamDecl (CTree *pl, CTree *k, CTree *id, CTree *i = (CTree*)0) { 
 
40650
    AddSon (sons[0], pl); AddSon (sons[1], k); 
 
40651
    AddSon (sons[2], id); AddSon (sons[3], i);
 
40652
  }
 
40653
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40654
  static const char *NodeId ();
 
40655
  /** Get the name of the node. Can be compared with NodeId(). */
 
40656
  const char *NodeName () const { return NodeId (); }
 
40657
  /** Get the number of sons. */
 
40658
  int Sons () const { return CTree::Sons (sons, 4); }
 
40659
  /** Get the n-th son.
 
40660
   *  \param n The index of the son.
 
40661
   *  \return The n-th son or NULL. */
 
40662
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
40663
  /** Get the template parameter list of a template template parameter. */
 
40664
  CT_TemplateParamList *Parameters () const { 
 
40665
    return (CT_TemplateParamList*)sons[0]; 
 
40666
  }
 
40667
  /** Get the templare parameter name. */
 
40668
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
40669
  /** Get the template default argument. */
 
40670
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[3]; }
 
40671
  /** Set the template default argument.
 
40672
   *  \param i The default argument. */
 
40673
  void Initializer (CTree *i) { AddSon (sons[3], i); }
 
40674
  /** Replace a son.
 
40675
   *  \param old_son The son to replace.
 
40676
   *  \param new_son The new son. */
 
40677
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40678
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
40679
  }
 
40680
public:
 
40681
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
40682
  const char *__attr_name (unsigned i) const {
 
40683
    static const char *names[] = { "sons" }; return names[i];
 
40684
  }
 
40685
  const void *__attr (unsigned __i) const {
 
40686
    switch (__i) { case 0: return &sons; default: return 0; }
 
40687
  }
 
40688
#line 2557 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40689
};
 
40690
 
 
40691
/** \class CT_EnumDef CTree.h Puma/CTree.h
 
40692
 *  Tree node representing the definition of an enumeration. 
 
40693
 *  Example: \code enum E { A, B, C } \endcode */
 
40694
 
 
40695
#line 40696 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40696
} // closed Puma
 
40697
class CCExprResolve;
 
40698
class CExprResolve;
 
40699
class WinIfExists;
 
40700
class WinImportHandler;
 
40701
class WinMacros;
 
40702
class WinAsm;
 
40703
class WinDeclSpecs;
 
40704
class WinMemberExplSpec;
 
40705
class WinTypeKeywords;
 
40706
class WinFriend;
 
40707
class ExtAC;
 
40708
class ExtACBuilderCoupling;
 
40709
class ExtACSyntaxCoupling;
 
40710
class ExtACTree;
 
40711
class ExtACKeywords;
 
40712
class ExtGnu;
 
40713
class PragmaOnceUnitState;
 
40714
class PragmaOnce;
 
40715
class CMatchSyntax;
 
40716
namespace Puma {
 
40717
 
 
40718
#line 2562 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40719
class CT_EnumDef : public CT_Decl, public CSemObject {
 
40720
#line 40721 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40721
  friend class ::CCExprResolve;
 
40722
  friend class ::CExprResolve;
 
40723
  friend class ::WinIfExists;
 
40724
  friend class ::WinImportHandler;
 
40725
  friend class ::WinMacros;
 
40726
  friend class ::WinAsm;
 
40727
  friend class ::WinDeclSpecs;
 
40728
  friend class ::WinMemberExplSpec;
 
40729
  friend class ::WinTypeKeywords;
 
40730
  friend class ::WinFriend;
 
40731
  friend class ::ExtAC;
 
40732
  friend class ::ExtACBuilderCoupling;
 
40733
  friend class ::ExtACSyntaxCoupling;
 
40734
  friend class ::ExtACTree;
 
40735
  friend class ::ExtACKeywords;
 
40736
  friend class ::ExtGnu;
 
40737
  friend class ::PragmaOnceUnitState;
 
40738
  friend class ::PragmaOnce;
 
40739
  friend class ::CMatchSyntax;
 
40740
 
 
40741
#line 2562 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40742
 
 
40743
  CTree *sons[3]; // key, name, enumerators
 
40744
 
 
40745
public:
 
40746
  /** Constructor.
 
40747
   *  \param k The keyword 'enum'.
 
40748
   *  \param n The name of the enumeration. */
 
40749
  CT_EnumDef (CTree *k, CTree *n) {
 
40750
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], 0); 
 
40751
  }
 
40752
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40753
  static const char *NodeId ();
 
40754
  /** Get the name of the node. Can be compared with NodeId(). */
 
40755
  const char *NodeName () const { return NodeId (); }
 
40756
  /** Get the number of sons. */
 
40757
  int Sons () const { return CTree::Sons (sons, 3); }
 
40758
  /** Get the n-th son.
 
40759
   *  \param n The index of the son.
 
40760
   *  \return The n-th son or NULL. */
 
40761
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
40762
  /** Get the name of the enumeration. */
 
40763
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
40764
  /** Set the list of enumeration constants.
 
40765
   *  \param el The enumerator list. */
 
40766
  void Enumerators (CTree *el) { AddSon (sons[2], el); }
 
40767
  /** Get the list of enumeration constants. */
 
40768
  CT_EnumeratorList *Enumerators () const { return (CT_EnumeratorList*)sons[2]; }
 
40769
  /** Replace a son.
 
40770
   *  \param old_son The son to replace.
 
40771
   *  \param new_son The new son. */
 
40772
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40773
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
40774
  }
 
40775
  /** Get the semantic information about the enumeration. */
 
40776
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
40777
public:
 
40778
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
40779
  const char *__attr_name (unsigned i) const {
 
40780
    static const char *names[] = { "sons" }; return names[i];
 
40781
  }
 
40782
  const void *__attr (unsigned __i) const {
 
40783
    switch (__i) { case 0: return &sons; default: return 0; }
 
40784
  }
 
40785
#line 2597 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40786
};
 
40787
 
 
40788
/** \class CT_Enumerator CTree.h Puma/CTree.h
 
40789
 *  Tree node representing a single enumeration constant. */
 
40790
 
 
40791
#line 40792 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40792
} // closed Puma
 
40793
class CCExprResolve;
 
40794
class CExprResolve;
 
40795
class WinIfExists;
 
40796
class WinImportHandler;
 
40797
class WinMacros;
 
40798
class WinAsm;
 
40799
class WinDeclSpecs;
 
40800
class WinMemberExplSpec;
 
40801
class WinTypeKeywords;
 
40802
class WinFriend;
 
40803
class ExtAC;
 
40804
class ExtACBuilderCoupling;
 
40805
class ExtACSyntaxCoupling;
 
40806
class ExtACTree;
 
40807
class ExtACKeywords;
 
40808
class ExtGnu;
 
40809
class PragmaOnceUnitState;
 
40810
class PragmaOnce;
 
40811
class CMatchSyntax;
 
40812
namespace Puma {
 
40813
 
 
40814
#line 2601 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40815
class CT_Enumerator : public CT_Decl, public CSemObject {
 
40816
#line 40817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40817
  friend class ::CCExprResolve;
 
40818
  friend class ::CExprResolve;
 
40819
  friend class ::WinIfExists;
 
40820
  friend class ::WinImportHandler;
 
40821
  friend class ::WinMacros;
 
40822
  friend class ::WinAsm;
 
40823
  friend class ::WinDeclSpecs;
 
40824
  friend class ::WinMemberExplSpec;
 
40825
  friend class ::WinTypeKeywords;
 
40826
  friend class ::WinFriend;
 
40827
  friend class ::ExtAC;
 
40828
  friend class ::ExtACBuilderCoupling;
 
40829
  friend class ::ExtACSyntaxCoupling;
 
40830
  friend class ::ExtACTree;
 
40831
  friend class ::ExtACKeywords;
 
40832
  friend class ::ExtGnu;
 
40833
  friend class ::PragmaOnceUnitState;
 
40834
  friend class ::PragmaOnce;
 
40835
  friend class ::CMatchSyntax;
 
40836
 
 
40837
#line 2601 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40838
 
 
40839
  CTree *sons[2]; // name, init
 
40840
 
 
40841
public:
 
40842
  /** Constructor.
 
40843
   *  \param n The name of the enumerator. */
 
40844
  CT_Enumerator (CTree *n) { AddSon (sons[0], n); AddSon (sons[1], 0); }
 
40845
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40846
  static const char *NodeId ();
 
40847
  /** Get the name of the node. Can be compared with NodeId(). */
 
40848
  const char *NodeName () const { return NodeId (); }
 
40849
  /** Get the number of sons. */
 
40850
  int Sons () const { return CTree::Sons (sons, 2); }
 
40851
  /** Get the n-th son.
 
40852
   *  \param n The index of the son.
 
40853
   *  \return The n-th son or NULL. */
 
40854
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
40855
  /** Get the name of the enumerator. */
 
40856
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
40857
  /** Set the initializer expression of the enumerator. */
 
40858
  void Initializer (CTree *i) { AddSon (sons[1], i); }
 
40859
  /** Get the initializer expression of the enumerator. */
 
40860
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
40861
  /** Replace a son.
 
40862
   *  \param old_son The son to replace.
 
40863
   *  \param new_son The new son. */
 
40864
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40865
    CTree::ReplaceSon (sons, 2, old_son, new_son); 
 
40866
  }
 
40867
  /** Get the semantic information about the enumerator. */
 
40868
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
40869
public:
 
40870
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
40871
  const char *__attr_name (unsigned i) const {
 
40872
    static const char *names[] = { "sons" }; return names[i];
 
40873
  }
 
40874
  const void *__attr (unsigned __i) const {
 
40875
    switch (__i) { case 0: return &sons; default: return 0; }
 
40876
  }
 
40877
#line 2632 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40878
};
 
40879
 
 
40880
/** \class CT_FctDef CTree.h Puma/CTree.h
 
40881
 *  Tree node representing a function definition. 
 
40882
 *  Example:
 
40883
 *  \code
 
40884
 * int mul(int x, int y) {
 
40885
 *   return x*y;
 
40886
 * }
 
40887
 *  \endcode */
 
40888
 
 
40889
#line 40890 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40890
} // closed Puma
 
40891
class CCExprResolve;
 
40892
class CExprResolve;
 
40893
class WinIfExists;
 
40894
class WinImportHandler;
 
40895
class WinMacros;
 
40896
class WinAsm;
 
40897
class WinDeclSpecs;
 
40898
class WinMemberExplSpec;
 
40899
class WinTypeKeywords;
 
40900
class WinFriend;
 
40901
class ExtAC;
 
40902
class ExtACBuilderCoupling;
 
40903
class ExtACSyntaxCoupling;
 
40904
class ExtACTree;
 
40905
class ExtACKeywords;
 
40906
class ExtGnu;
 
40907
class PragmaOnceUnitState;
 
40908
class PragmaOnce;
 
40909
class CMatchSyntax;
 
40910
namespace Puma {
 
40911
 
 
40912
#line 2642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40913
class CT_FctDef : public CT_Decl, public CSemObject {
 
40914
#line 40915 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
40915
  friend class ::CCExprResolve;
 
40916
  friend class ::CExprResolve;
 
40917
  friend class ::WinIfExists;
 
40918
  friend class ::WinImportHandler;
 
40919
  friend class ::WinMacros;
 
40920
  friend class ::WinAsm;
 
40921
  friend class ::WinDeclSpecs;
 
40922
  friend class ::WinMemberExplSpec;
 
40923
  friend class ::WinTypeKeywords;
 
40924
  friend class ::WinFriend;
 
40925
  friend class ::ExtAC;
 
40926
  friend class ::ExtACBuilderCoupling;
 
40927
  friend class ::ExtACSyntaxCoupling;
 
40928
  friend class ::ExtACTree;
 
40929
  friend class ::ExtACKeywords;
 
40930
  friend class ::ExtGnu;
 
40931
  friend class ::PragmaOnceUnitState;
 
40932
  friend class ::PragmaOnce;
 
40933
  friend class ::CMatchSyntax;
 
40934
 
 
40935
#line 2642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
40936
 
 
40937
  CTree *sons[7]; // declspecs, declarator, try, ctor_init, args, body, handlers
 
40938
 
 
40939
public:
 
40940
  /** Constructor.
 
40941
   *  \param dss The declaration specifier sequence. 
 
40942
   *  \param d The function declarator.
 
40943
   *  \param t Optional keyword 'try' for a function try-block.
 
40944
   *  \param ci Optional constructor initializer list.
 
40945
   *  \param as Optional K&R argument declaration list.
 
40946
   *  \param b The function body.
 
40947
   *  \param hs Exception handler sequence for a function try-block. */
 
40948
  CT_FctDef (CTree *dss, CTree *d, CTree *t, CTree *ci, CTree *as, 
 
40949
             CTree *b, CTree *hs) {
 
40950
    AddSon (sons[0], dss); AddSon (sons[1], d); AddSon (sons[2], t); 
 
40951
    AddSon (sons[3], ci); AddSon (sons[4], as); AddSon (sons[5], b); 
 
40952
    AddSon (sons[6], hs); 
 
40953
  }
 
40954
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
40955
  static const char *NodeId ();
 
40956
  /** Get the name of the node. Can be compared with NodeId(). */
 
40957
  const char *NodeName () const { return NodeId (); }
 
40958
  /** Get the number of sons. */
 
40959
  int Sons () const { return CTree::Sons (sons, 7); }
 
40960
  /** Get the n-th son.
 
40961
   *  \param n The index of the son.
 
40962
   *  \return The n-th son or NULL. */
 
40963
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
40964
  /** Get the declaration specifier sequence. */
 
40965
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
40966
  /** Get the function declarator. */
 
40967
  CTree *Declarator () const { return sons[1]; }
 
40968
  /** Get the 'try' keyword of the function try-block. */
 
40969
  CT_Token *TryKey () const { return (CT_Token*)sons[2]; }
 
40970
  /** Get the constructor initializer list. */
 
40971
  CTree *CtorInit () const { return sons[3]; }
 
40972
  /** Get the K&R argument declaration sequence. */
 
40973
  CT_ArgDeclSeq *ArgDeclSeq () const { return (CT_ArgDeclSeq*)sons[4]; }
 
40974
  /** Get the function body. */
 
40975
  CT_CmpdStmt *Body () const { return (CT_CmpdStmt*)sons[5]; }
 
40976
  /** Get the exception handler sequence of a function try-block. */
 
40977
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[6]; }
 
40978
  /** Get the semantic information about the function. */
 
40979
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
40980
  /** Set the constructor initializer list. 
 
40981
   *  \param i The initializer list. */
 
40982
  void CtorInit (CTree *i) { AddSon (sons[3], i); }
 
40983
  /** Set the function body.
 
40984
   *  \param b The function body. */
 
40985
  void Body (CTree *b) { AddSon (sons[5], b); }
 
40986
  /** Set the function try-block.
 
40987
   *  \param t The keyword 'try'.
 
40988
   *  \param c Optional constructor initializer list.
 
40989
   *  \param b The function body.
 
40990
   *  \param h The exception handler sequence. */
 
40991
  void FctTryBlock (CTree *t, CTree *c, CTree *b, CTree *h) { 
 
40992
    AddSon (sons[2], t); AddSon (sons[3], c); 
 
40993
    AddSon (sons[5], b); AddSon (sons[6], h);
 
40994
  }
 
40995
  /** Replace a son.
 
40996
   *  \param old_son The son to replace.
 
40997
   *  \param new_son The new son. */
 
40998
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
40999
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
41000
  }
 
41001
public:
 
41002
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
41003
  const char *__attr_name (unsigned i) const {
 
41004
    static const char *names[] = { "sons" }; return names[i];
 
41005
  }
 
41006
  const void *__attr (unsigned __i) const {
 
41007
    switch (__i) { case 0: return &sons; default: return 0; }
 
41008
  }
 
41009
#line 2707 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41010
};
 
41011
 
 
41012
/** \class CT_AsmDef CTree.h Puma/CTree.h
 
41013
 *  Tree node representing an inline assembly definition. 
 
41014
 *  Example: \code asm("movl %ecx %eax"); \endcode */
 
41015
 
 
41016
#line 41017 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41017
} // closed Puma
 
41018
class CCExprResolve;
 
41019
class CExprResolve;
 
41020
class WinIfExists;
 
41021
class WinImportHandler;
 
41022
class WinMacros;
 
41023
class WinAsm;
 
41024
class WinDeclSpecs;
 
41025
class WinMemberExplSpec;
 
41026
class WinTypeKeywords;
 
41027
class WinFriend;
 
41028
class ExtAC;
 
41029
class ExtACBuilderCoupling;
 
41030
class ExtACSyntaxCoupling;
 
41031
class ExtACTree;
 
41032
class ExtACKeywords;
 
41033
class ExtGnu;
 
41034
class PragmaOnceUnitState;
 
41035
class PragmaOnce;
 
41036
class CMatchSyntax;
 
41037
namespace Puma {
 
41038
 
 
41039
#line 2712 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41040
class CT_AsmDef : public CT_Decl {
 
41041
#line 41042 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41042
  friend class ::CCExprResolve;
 
41043
  friend class ::CExprResolve;
 
41044
  friend class ::WinIfExists;
 
41045
  friend class ::WinImportHandler;
 
41046
  friend class ::WinMacros;
 
41047
  friend class ::WinAsm;
 
41048
  friend class ::WinDeclSpecs;
 
41049
  friend class ::WinMemberExplSpec;
 
41050
  friend class ::WinTypeKeywords;
 
41051
  friend class ::WinFriend;
 
41052
  friend class ::ExtAC;
 
41053
  friend class ::ExtACBuilderCoupling;
 
41054
  friend class ::ExtACSyntaxCoupling;
 
41055
  friend class ::ExtACTree;
 
41056
  friend class ::ExtACKeywords;
 
41057
  friend class ::ExtGnu;
 
41058
  friend class ::PragmaOnceUnitState;
 
41059
  friend class ::PragmaOnce;
 
41060
  friend class ::CMatchSyntax;
 
41061
 
 
41062
#line 2712 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41063
 
 
41064
  CTree *sons[5]; // asm, open, str, close, semi_colon
 
41065
 
 
41066
public:
 
41067
  /** Constructor.
 
41068
   *  \param a The keyword 'asm'.
 
41069
   *  \param o Left parenthesis around the assembler code string. 
 
41070
   *  \param s The assembler code.
 
41071
   *  \param c Right parenthesis around the assembler code string.
 
41072
   *  \param sc Trailing semi-colon. */
 
41073
  CT_AsmDef (CTree *a, CTree *o, CTree *s, CTree *c, CTree *sc) {
 
41074
    AddSon (sons[0], a); AddSon (sons[1], o); AddSon (sons[2], s); 
 
41075
    AddSon (sons[3], c); AddSon (sons[4], sc); 
 
41076
  }
 
41077
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41078
  static const char *NodeId ();
 
41079
  /** Get the name of the node. Can be compared with NodeId(). */
 
41080
  const char *NodeName () const { return NodeId (); }
 
41081
  /** Get the number of sons. */
 
41082
  int Sons () const { return 5; }
 
41083
  /** Get the n-th son.
 
41084
   *  \param n The index of the son.
 
41085
   *  \return The n-th son or NULL. */
 
41086
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
41087
  /** Get the assembler code. */
 
41088
  CT_String *Instructions () const { return (CT_String*)sons[2]; }
 
41089
  /** Replace a son.
 
41090
   *  \param old_son The son to replace.
 
41091
   *  \param new_son The new son. */
 
41092
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41093
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
41094
  }
 
41095
public:
 
41096
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
41097
  const char *__attr_name (unsigned i) const {
 
41098
    static const char *names[] = { "sons" }; return names[i];
 
41099
  }
 
41100
  const void *__attr (unsigned __i) const {
 
41101
    switch (__i) { case 0: return &sons; default: return 0; }
 
41102
  }
 
41103
#line 2744 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41104
};
 
41105
 
 
41106
/** \class CT_Handler CTree.h Puma/CTree.h
 
41107
 *  Tree node representing an exception handler. */
 
41108
 
 
41109
#line 41110 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41110
} // closed Puma
 
41111
class CCExprResolve;
 
41112
class CExprResolve;
 
41113
class WinIfExists;
 
41114
class WinImportHandler;
 
41115
class WinMacros;
 
41116
class WinAsm;
 
41117
class WinDeclSpecs;
 
41118
class WinMemberExplSpec;
 
41119
class WinTypeKeywords;
 
41120
class WinFriend;
 
41121
class ExtAC;
 
41122
class ExtACBuilderCoupling;
 
41123
class ExtACSyntaxCoupling;
 
41124
class ExtACTree;
 
41125
class ExtACKeywords;
 
41126
class ExtGnu;
 
41127
class PragmaOnceUnitState;
 
41128
class PragmaOnce;
 
41129
class CMatchSyntax;
 
41130
namespace Puma {
 
41131
 
 
41132
#line 2748 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41133
class CT_Handler : public CT_Decl, public CSemScope {
 
41134
#line 41135 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41135
  friend class ::CCExprResolve;
 
41136
  friend class ::CExprResolve;
 
41137
  friend class ::WinIfExists;
 
41138
  friend class ::WinImportHandler;
 
41139
  friend class ::WinMacros;
 
41140
  friend class ::WinAsm;
 
41141
  friend class ::WinDeclSpecs;
 
41142
  friend class ::WinMemberExplSpec;
 
41143
  friend class ::WinTypeKeywords;
 
41144
  friend class ::WinFriend;
 
41145
  friend class ::ExtAC;
 
41146
  friend class ::ExtACBuilderCoupling;
 
41147
  friend class ::ExtACSyntaxCoupling;
 
41148
  friend class ::ExtACTree;
 
41149
  friend class ::ExtACKeywords;
 
41150
  friend class ::ExtGnu;
 
41151
  friend class ::PragmaOnceUnitState;
 
41152
  friend class ::PragmaOnce;
 
41153
  friend class ::CMatchSyntax;
 
41154
 
 
41155
#line 2748 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41156
 
 
41157
  CTree *sons[3]; // catch, exception_decl, stmt
 
41158
 
 
41159
public:
 
41160
  /** Constructor.
 
41161
   *  \param c The keyword 'catch'.
 
41162
   *  \param e The exception object declaration.
 
41163
   *  \param s The exception handling statement. */
 
41164
  CT_Handler (CTree *c, CTree *e, CTree *s) {
 
41165
    AddSon (sons[0], c); AddSon (sons[1], e); AddSon (sons[2], s);
 
41166
  }
 
41167
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41168
  static const char *NodeId ();
 
41169
  /** Get the name of the node. Can be compared with NodeId(). */
 
41170
  const char *NodeName () const { return NodeId (); }
 
41171
  /** Get the number of sons. */
 
41172
  int Sons () const { return 3; }
 
41173
  /** Get the n-th son.
 
41174
   *  \param n The index of the son.
 
41175
   *  \return The n-th son or NULL. */
 
41176
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
41177
  /** Get the exception object declaration. */
 
41178
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
41179
  /** Get the exception handling statement. */
 
41180
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
41181
  /** Replace a son.
 
41182
   *  \param old_son The son to replace.
 
41183
   *  \param new_son The new son. */
 
41184
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41185
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
41186
  }
 
41187
  /** Get the scope opened by the handler. */
 
41188
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
41189
public:
 
41190
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
41191
  const char *__attr_name (unsigned i) const {
 
41192
    static const char *names[] = { "sons" }; return names[i];
 
41193
  }
 
41194
  const void *__attr (unsigned __i) const {
 
41195
    switch (__i) { case 0: return &sons; default: return 0; }
 
41196
  }
 
41197
#line 2781 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41198
};
 
41199
 
 
41200
/** \class CT_LinkageSpec CTree.h Puma/CTree.h
 
41201
 *  Tree node representing a list of declaration with a specific linkage. */
 
41202
 
 
41203
#line 41204 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41204
} // closed Puma
 
41205
class CCExprResolve;
 
41206
class CExprResolve;
 
41207
class WinIfExists;
 
41208
class WinImportHandler;
 
41209
class WinMacros;
 
41210
class WinAsm;
 
41211
class WinDeclSpecs;
 
41212
class WinMemberExplSpec;
 
41213
class WinTypeKeywords;
 
41214
class WinFriend;
 
41215
class ExtAC;
 
41216
class ExtACBuilderCoupling;
 
41217
class ExtACSyntaxCoupling;
 
41218
class ExtACTree;
 
41219
class ExtACKeywords;
 
41220
class ExtGnu;
 
41221
class PragmaOnceUnitState;
 
41222
class PragmaOnce;
 
41223
class CMatchSyntax;
 
41224
namespace Puma {
 
41225
 
 
41226
#line 2785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41227
class CT_LinkageSpec : public CT_Decl {
 
41228
#line 41229 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41229
  friend class ::CCExprResolve;
 
41230
  friend class ::CExprResolve;
 
41231
  friend class ::WinIfExists;
 
41232
  friend class ::WinImportHandler;
 
41233
  friend class ::WinMacros;
 
41234
  friend class ::WinAsm;
 
41235
  friend class ::WinDeclSpecs;
 
41236
  friend class ::WinMemberExplSpec;
 
41237
  friend class ::WinTypeKeywords;
 
41238
  friend class ::WinFriend;
 
41239
  friend class ::ExtAC;
 
41240
  friend class ::ExtACBuilderCoupling;
 
41241
  friend class ::ExtACSyntaxCoupling;
 
41242
  friend class ::ExtACTree;
 
41243
  friend class ::ExtACKeywords;
 
41244
  friend class ::ExtGnu;
 
41245
  friend class ::PragmaOnceUnitState;
 
41246
  friend class ::PragmaOnce;
 
41247
  friend class ::CMatchSyntax;
 
41248
 
 
41249
#line 2785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41250
 
 
41251
  CTree *sons[5]; // extern, str, open, decls, close
 
41252
 
 
41253
public:
 
41254
  /** Constructor.
 
41255
   *  \param e The keyword 'extern'.
 
41256
   *  \param s The linkage identifier, e.g. "C".
 
41257
   *  \param o Left parenthesis around the declaration list.
 
41258
   *  \param d The list of declarations.
 
41259
   *  \param c Right parenthesis around the declaration list. */
 
41260
  CT_LinkageSpec (CTree *e, CTree *s, CTree *o, CTree *d, CTree *c) {
 
41261
    AddSon (sons[0], e); AddSon (sons[1], s); AddSon (sons[2], o); 
 
41262
    AddSon (sons[3], d); AddSon (sons[4], c);
 
41263
    if (isList ())
 
41264
      ((CT_DeclList*)Decls ())->Linkage (this);
 
41265
    else
 
41266
      ((CT_Decl*)Decls ())->Linkage (this);
 
41267
  }
 
41268
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41269
  static const char *NodeId ();
 
41270
  /** Get the name of the node. Can be compared with NodeId(). */
 
41271
  const char *NodeName () const { return NodeId (); }
 
41272
  /** Get the number of sons. */
 
41273
  int Sons () const { return CTree::Sons (sons, 5); }
 
41274
  /** Get the n-th son.
 
41275
   *  \param n The index of the son.
 
41276
   *  \return The n-th son or NULL. */
 
41277
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
41278
  /** Get the linkage identifier. */
 
41279
  CT_String *Linkage () const { return (CT_String*)sons[1]; }
 
41280
  /** Get the list declarations. */
 
41281
  CTree *Decls () const { return sons[3]; }
 
41282
  /** Check if there is more than one enclosed declaration. 
 
41283
   *  In this case the node returned by Decls() is a CT_DeclList
 
41284
   *  node. */
 
41285
  bool isList () const {
 
41286
    return Decls ()->NodeName () == CT_DeclList::NodeId ();
 
41287
  }
 
41288
  /** Replace a son.
 
41289
   *  \param old_son The son to replace.
 
41290
   *  \param new_son The new son. */
 
41291
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41292
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
41293
  }
 
41294
public:
 
41295
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
41296
  const char *__attr_name (unsigned i) const {
 
41297
    static const char *names[] = { "sons" }; return names[i];
 
41298
  }
 
41299
  const void *__attr (unsigned __i) const {
 
41300
    switch (__i) { case 0: return &sons; default: return 0; }
 
41301
  }
 
41302
#line 2829 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41303
};
 
41304
 
 
41305
/** \class CT_ArgDecl CTree.h Puma/CTree.h
 
41306
 *  Tree node representing the declaration of a function parameter. */
 
41307
 
 
41308
#line 41309 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41309
} // closed Puma
 
41310
class CCExprResolve;
 
41311
class CExprResolve;
 
41312
class WinIfExists;
 
41313
class WinImportHandler;
 
41314
class WinMacros;
 
41315
class WinAsm;
 
41316
class WinDeclSpecs;
 
41317
class WinMemberExplSpec;
 
41318
class WinTypeKeywords;
 
41319
class WinFriend;
 
41320
class ExtAC;
 
41321
class ExtACBuilderCoupling;
 
41322
class ExtACSyntaxCoupling;
 
41323
class ExtACTree;
 
41324
class ExtACKeywords;
 
41325
class ExtGnu;
 
41326
class PragmaOnceUnitState;
 
41327
class PragmaOnce;
 
41328
class CMatchSyntax;
 
41329
namespace Puma {
 
41330
 
 
41331
#line 2833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41332
class CT_ArgDecl : public CT_Decl, public CSemObject {
 
41333
#line 41334 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41334
  friend class ::CCExprResolve;
 
41335
  friend class ::CExprResolve;
 
41336
  friend class ::WinIfExists;
 
41337
  friend class ::WinImportHandler;
 
41338
  friend class ::WinMacros;
 
41339
  friend class ::WinAsm;
 
41340
  friend class ::WinDeclSpecs;
 
41341
  friend class ::WinMemberExplSpec;
 
41342
  friend class ::WinTypeKeywords;
 
41343
  friend class ::WinFriend;
 
41344
  friend class ::ExtAC;
 
41345
  friend class ::ExtACBuilderCoupling;
 
41346
  friend class ::ExtACSyntaxCoupling;
 
41347
  friend class ::ExtACTree;
 
41348
  friend class ::ExtACKeywords;
 
41349
  friend class ::ExtGnu;
 
41350
  friend class ::PragmaOnceUnitState;
 
41351
  friend class ::PragmaOnce;
 
41352
  friend class ::CMatchSyntax;
 
41353
 
 
41354
#line 2833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41355
 
 
41356
  CTree *sons[4]; // declspecs, declarator, init, ellipsis
 
41357
 
 
41358
public:
 
41359
  /** Constructor.
 
41360
   *  \param dsl The declaration specifier sequence.
 
41361
   *  \param d The parameter declarator. */
 
41362
  CT_ArgDecl (CTree *dsl, CTree *d) {
 
41363
    AddSon (sons[0], dsl); AddSon (sons[1], d); 
 
41364
    AddSon (sons[2], 0); AddSon (sons[3], 0); 
 
41365
  }
 
41366
  /** Constructor.
 
41367
   *  \param ellipsis The variable argument list operator "...". */
 
41368
  CT_ArgDecl (CTree *ellipsis) {
 
41369
    AddSon (sons[0], 0); AddSon (sons[1], 0); 
 
41370
    AddSon (sons[2], 0); AddSon (sons[3], ellipsis); 
 
41371
  }
 
41372
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41373
  static const char *NodeId ();
 
41374
  /** Get the name of the node. Can be compared with NodeId(). */
 
41375
  const char *NodeName () const { return NodeId (); }
 
41376
  /** Get the number of sons. */
 
41377
  int Sons () const { return CTree::Sons (sons, 4); }
 
41378
  /** Get the n-th son.
 
41379
   *  \param n The index of the son.
 
41380
   *  \return The n-th son or NULL. */
 
41381
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
41382
  /** Get the declaration specifier sequence. */
 
41383
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
41384
  /** Get the function parameter declarator. */
 
41385
  CTree *Declarator () const { return sons[1]; }
 
41386
  /** Get the default argument. */
 
41387
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
41388
  /** Get the variable argument list operator. */
 
41389
  CT_Token *Ellipsis () const { return (CT_Token*)sons[3]; }
 
41390
  /** Get the semantic information about the function parameter. */
 
41391
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
41392
  /** Set the default argument. */
 
41393
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
41394
  /** Replace a son.
 
41395
   *  \param old_son The son to replace.
 
41396
   *  \param new_son The new son. */
 
41397
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41398
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
41399
  }
 
41400
public:
 
41401
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
41402
  const char *__attr_name (unsigned i) const {
 
41403
    static const char *names[] = { "sons" }; return names[i];
 
41404
  }
 
41405
  const void *__attr (unsigned __i) const {
 
41406
    switch (__i) { case 0: return &sons; default: return 0; }
 
41407
  }
 
41408
#line 2878 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41409
};
 
41410
 
 
41411
/** \class CT_ArgDeclList CTree.h Puma/CTree.h
 
41412
 *  Tree node representing a function parameter list. */
 
41413
 
 
41414
#line 41415 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41415
} // closed Puma
 
41416
class CCExprResolve;
 
41417
class CExprResolve;
 
41418
class WinIfExists;
 
41419
class WinImportHandler;
 
41420
class WinMacros;
 
41421
class WinAsm;
 
41422
class WinDeclSpecs;
 
41423
class WinMemberExplSpec;
 
41424
class WinTypeKeywords;
 
41425
class WinFriend;
 
41426
class ExtAC;
 
41427
class ExtACBuilderCoupling;
 
41428
class ExtACSyntaxCoupling;
 
41429
class ExtACTree;
 
41430
class ExtACKeywords;
 
41431
class ExtGnu;
 
41432
class PragmaOnceUnitState;
 
41433
class PragmaOnce;
 
41434
class CMatchSyntax;
 
41435
namespace Puma {
 
41436
 
 
41437
#line 2882 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41438
class CT_ArgDeclList : public CT_DeclList, public CSemScope {
 
41439
#line 41440 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41440
  friend class ::CCExprResolve;
 
41441
  friend class ::CExprResolve;
 
41442
  friend class ::WinIfExists;
 
41443
  friend class ::WinImportHandler;
 
41444
  friend class ::WinMacros;
 
41445
  friend class ::WinAsm;
 
41446
  friend class ::WinDeclSpecs;
 
41447
  friend class ::WinMemberExplSpec;
 
41448
  friend class ::WinTypeKeywords;
 
41449
  friend class ::WinFriend;
 
41450
  friend class ::ExtAC;
 
41451
  friend class ::ExtACBuilderCoupling;
 
41452
  friend class ::ExtACSyntaxCoupling;
 
41453
  friend class ::ExtACTree;
 
41454
  friend class ::ExtACKeywords;
 
41455
  friend class ::ExtGnu;
 
41456
  friend class ::PragmaOnceUnitState;
 
41457
  friend class ::PragmaOnce;
 
41458
  friend class ::CMatchSyntax;
 
41459
 
 
41460
#line 2882 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41461
 
 
41462
public:
 
41463
  /** Constructor.
 
41464
   *  \param size The initial size of the list.
 
41465
   *  \param props The list properties. */
 
41466
  CT_ArgDeclList (int size = 2, int props = SEPARATORS | OPEN_CLOSE) : 
 
41467
   CT_DeclList (size, 2) { AddProperties (props); }
 
41468
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41469
  static const char *NodeId ();
 
41470
  /** Get the name of the node. Can be compared with NodeId(). */
 
41471
  const char *NodeName () const { return NodeId (); }
 
41472
  /** Get the scope opened by the parameter list. */
 
41473
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
41474
public:
 
41475
  typedef AC::TLE __AttrTypes;
 
41476
  const char *__attr_name (unsigned i) const { return 0; }
 
41477
  const void *__attr (unsigned __i) const { return 0; }
 
41478
#line 2895 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41479
};
 
41480
 
 
41481
/** \class CT_ArgDeclSeq CTree.h Puma/CTree.h
 
41482
 *  Tree node representing a K&R function parameter declarations list. */
 
41483
 
 
41484
#line 41485 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41485
} // closed Puma
 
41486
class CCExprResolve;
 
41487
class CExprResolve;
 
41488
class WinIfExists;
 
41489
class WinImportHandler;
 
41490
class WinMacros;
 
41491
class WinAsm;
 
41492
class WinDeclSpecs;
 
41493
class WinMemberExplSpec;
 
41494
class WinTypeKeywords;
 
41495
class WinFriend;
 
41496
class ExtAC;
 
41497
class ExtACBuilderCoupling;
 
41498
class ExtACSyntaxCoupling;
 
41499
class ExtACTree;
 
41500
class ExtACKeywords;
 
41501
class ExtGnu;
 
41502
class PragmaOnceUnitState;
 
41503
class PragmaOnce;
 
41504
class CMatchSyntax;
 
41505
namespace Puma {
 
41506
 
 
41507
#line 2899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41508
class CT_ArgDeclSeq : public CT_DeclList, public CSemScope {
 
41509
#line 41510 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41510
  friend class ::CCExprResolve;
 
41511
  friend class ::CExprResolve;
 
41512
  friend class ::WinIfExists;
 
41513
  friend class ::WinImportHandler;
 
41514
  friend class ::WinMacros;
 
41515
  friend class ::WinAsm;
 
41516
  friend class ::WinDeclSpecs;
 
41517
  friend class ::WinMemberExplSpec;
 
41518
  friend class ::WinTypeKeywords;
 
41519
  friend class ::WinFriend;
 
41520
  friend class ::ExtAC;
 
41521
  friend class ::ExtACBuilderCoupling;
 
41522
  friend class ::ExtACSyntaxCoupling;
 
41523
  friend class ::ExtACTree;
 
41524
  friend class ::ExtACKeywords;
 
41525
  friend class ::ExtGnu;
 
41526
  friend class ::PragmaOnceUnitState;
 
41527
  friend class ::PragmaOnce;
 
41528
  friend class ::CMatchSyntax;
 
41529
 
 
41530
#line 2899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41531
 
 
41532
public:
 
41533
  /** Constructor.
 
41534
   *  \param size The initial size of the list. */
 
41535
  CT_ArgDeclSeq (int size = 2) : CT_DeclList (size, 2) {}
 
41536
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41537
  static const char *NodeId ();
 
41538
  /** Get the name of the node. Can be compared with NodeId(). */
 
41539
  const char *NodeName () const { return NodeId (); }
 
41540
  /** Get the scope opened by the parameter declarations list. */
 
41541
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
41542
public:
 
41543
  typedef AC::TLE __AttrTypes;
 
41544
  const char *__attr_name (unsigned i) const { return 0; }
 
41545
  const void *__attr (unsigned __i) const { return 0; }
 
41546
#line 2910 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41547
};
 
41548
 
 
41549
/** \class CT_ArgNameList CTree.h Puma/CTree.h
 
41550
 *  Tree node representing a K&R function parameter name list. */
 
41551
 
 
41552
#line 41553 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41553
} // closed Puma
 
41554
class CCExprResolve;
 
41555
class CExprResolve;
 
41556
class WinIfExists;
 
41557
class WinImportHandler;
 
41558
class WinMacros;
 
41559
class WinAsm;
 
41560
class WinDeclSpecs;
 
41561
class WinMemberExplSpec;
 
41562
class WinTypeKeywords;
 
41563
class WinFriend;
 
41564
class ExtAC;
 
41565
class ExtACBuilderCoupling;
 
41566
class ExtACSyntaxCoupling;
 
41567
class ExtACTree;
 
41568
class ExtACKeywords;
 
41569
class ExtGnu;
 
41570
class PragmaOnceUnitState;
 
41571
class PragmaOnce;
 
41572
class CMatchSyntax;
 
41573
namespace Puma {
 
41574
 
 
41575
#line 2914 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41576
class CT_ArgNameList : public CT_ArgDeclList {
 
41577
#line 41578 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41578
  friend class ::CCExprResolve;
 
41579
  friend class ::CExprResolve;
 
41580
  friend class ::WinIfExists;
 
41581
  friend class ::WinImportHandler;
 
41582
  friend class ::WinMacros;
 
41583
  friend class ::WinAsm;
 
41584
  friend class ::WinDeclSpecs;
 
41585
  friend class ::WinMemberExplSpec;
 
41586
  friend class ::WinTypeKeywords;
 
41587
  friend class ::WinFriend;
 
41588
  friend class ::ExtAC;
 
41589
  friend class ::ExtACBuilderCoupling;
 
41590
  friend class ::ExtACSyntaxCoupling;
 
41591
  friend class ::ExtACTree;
 
41592
  friend class ::ExtACKeywords;
 
41593
  friend class ::ExtGnu;
 
41594
  friend class ::PragmaOnceUnitState;
 
41595
  friend class ::PragmaOnce;
 
41596
  friend class ::CMatchSyntax;
 
41597
 
 
41598
#line 2914 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41599
 
 
41600
public:
 
41601
  /** Constructor. */
 
41602
  CT_ArgNameList () : CT_ArgDeclList () {}
 
41603
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41604
  static const char *NodeId ();
 
41605
  /** Get the name of the node. Can be compared with NodeId(). */
 
41606
  const char *NodeName () const { return NodeId (); }
 
41607
public:
 
41608
  typedef AC::TLE __AttrTypes;
 
41609
  const char *__attr_name (unsigned i) const { return 0; }
 
41610
  const void *__attr (unsigned __i) const { return 0; }
 
41611
#line 2922 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41612
};
 
41613
 
 
41614
/** \class CT_NamespaceDef CTree.h Puma/CTree.h
 
41615
 *  Tree node representing a namespace definition.
 
41616
 *  Example: \code namespace a {} \endcode */
 
41617
 
 
41618
#line 41619 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41619
} // closed Puma
 
41620
class CCExprResolve;
 
41621
class CExprResolve;
 
41622
class WinIfExists;
 
41623
class WinImportHandler;
 
41624
class WinMacros;
 
41625
class WinAsm;
 
41626
class WinDeclSpecs;
 
41627
class WinMemberExplSpec;
 
41628
class WinTypeKeywords;
 
41629
class WinFriend;
 
41630
class ExtAC;
 
41631
class ExtACBuilderCoupling;
 
41632
class ExtACSyntaxCoupling;
 
41633
class ExtACTree;
 
41634
class ExtACKeywords;
 
41635
class ExtGnu;
 
41636
class PragmaOnceUnitState;
 
41637
class PragmaOnce;
 
41638
class CMatchSyntax;
 
41639
namespace Puma {
 
41640
 
 
41641
#line 2927 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41642
class CT_NamespaceDef : public CT_Decl, public CSemObject {
 
41643
#line 41644 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41644
  friend class ::CCExprResolve;
 
41645
  friend class ::CExprResolve;
 
41646
  friend class ::WinIfExists;
 
41647
  friend class ::WinImportHandler;
 
41648
  friend class ::WinMacros;
 
41649
  friend class ::WinAsm;
 
41650
  friend class ::WinDeclSpecs;
 
41651
  friend class ::WinMemberExplSpec;
 
41652
  friend class ::WinTypeKeywords;
 
41653
  friend class ::WinFriend;
 
41654
  friend class ::ExtAC;
 
41655
  friend class ::ExtACBuilderCoupling;
 
41656
  friend class ::ExtACSyntaxCoupling;
 
41657
  friend class ::ExtACTree;
 
41658
  friend class ::ExtACKeywords;
 
41659
  friend class ::ExtGnu;
 
41660
  friend class ::PragmaOnceUnitState;
 
41661
  friend class ::PragmaOnce;
 
41662
  friend class ::CMatchSyntax;
 
41663
 
 
41664
#line 2927 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41665
 
 
41666
  CTree *sons[3]; // ns, name, members
 
41667
 
 
41668
public:
 
41669
  /** Constructor.
 
41670
   *  \param n The keyword 'namespace'.
 
41671
   *  \param nm The name of the namespace. */
 
41672
  CT_NamespaceDef (CTree *n, CTree *nm) {
 
41673
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], 0); 
 
41674
  }
 
41675
  /** Constructor.
 
41676
   *  \param n The keyword 'namespace'.
 
41677
   *  \param nm The name of the namespace. 
 
41678
   *  \param m The namespace member declarations list. */
 
41679
  CT_NamespaceDef (CTree *n, CTree *nm, CTree *m) {
 
41680
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], m); 
 
41681
  }
 
41682
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41683
  static const char *NodeId ();
 
41684
  /** Get the name of the node. Can be compared with NodeId(). */
 
41685
  const char *NodeName () const { return NodeId (); }
 
41686
  /** Get the number of sons. */
 
41687
  int Sons () const { return CTree::Sons (sons, 3); }
 
41688
  /** Get the n-th son.
 
41689
   *  \param n The index of the son.
 
41690
   *  \return The n-th son or NULL. */
 
41691
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
41692
  /** Set the namespace member declarations list. */
 
41693
  void Members (CTree *m) { AddSon (sons[2], m); }
 
41694
  /** Get the namespace member declarations list. */
 
41695
  CT_MembList *Members () const { return (CT_MembList*)sons[2]; }
 
41696
  /** Get the name of the namespace. */
 
41697
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
41698
  /** Get the semantic information about the namespace. */
 
41699
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
41700
  /** Replace a son.
 
41701
   *  \param old_son The son to replace.
 
41702
   *  \param new_son The new son. */
 
41703
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41704
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
41705
  }
 
41706
public:
 
41707
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
41708
  const char *__attr_name (unsigned i) const {
 
41709
    static const char *names[] = { "sons" }; return names[i];
 
41710
  }
 
41711
  const void *__attr (unsigned __i) const {
 
41712
    switch (__i) { case 0: return &sons; default: return 0; }
 
41713
  }
 
41714
#line 2968 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41715
};
 
41716
 
 
41717
/** \class CT_NamespaceAliasDef CTree.h Puma/CTree.h
 
41718
 *  Tree node representing a namespace alias definition.
 
41719
 *  Example: \code namespace b = a; \endcode */
 
41720
 
 
41721
#line 41722 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41722
} // closed Puma
 
41723
class CCExprResolve;
 
41724
class CExprResolve;
 
41725
class WinIfExists;
 
41726
class WinImportHandler;
 
41727
class WinMacros;
 
41728
class WinAsm;
 
41729
class WinDeclSpecs;
 
41730
class WinMemberExplSpec;
 
41731
class WinTypeKeywords;
 
41732
class WinFriend;
 
41733
class ExtAC;
 
41734
class ExtACBuilderCoupling;
 
41735
class ExtACSyntaxCoupling;
 
41736
class ExtACTree;
 
41737
class ExtACKeywords;
 
41738
class ExtGnu;
 
41739
class PragmaOnceUnitState;
 
41740
class PragmaOnce;
 
41741
class CMatchSyntax;
 
41742
namespace Puma {
 
41743
 
 
41744
#line 2973 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41745
class CT_NamespaceAliasDef : public CT_Decl, public CSemObject {
 
41746
#line 41747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41747
  friend class ::CCExprResolve;
 
41748
  friend class ::CExprResolve;
 
41749
  friend class ::WinIfExists;
 
41750
  friend class ::WinImportHandler;
 
41751
  friend class ::WinMacros;
 
41752
  friend class ::WinAsm;
 
41753
  friend class ::WinDeclSpecs;
 
41754
  friend class ::WinMemberExplSpec;
 
41755
  friend class ::WinTypeKeywords;
 
41756
  friend class ::WinFriend;
 
41757
  friend class ::ExtAC;
 
41758
  friend class ::ExtACBuilderCoupling;
 
41759
  friend class ::ExtACSyntaxCoupling;
 
41760
  friend class ::ExtACTree;
 
41761
  friend class ::ExtACKeywords;
 
41762
  friend class ::ExtGnu;
 
41763
  friend class ::PragmaOnceUnitState;
 
41764
  friend class ::PragmaOnce;
 
41765
  friend class ::CMatchSyntax;
 
41766
 
 
41767
#line 2973 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41768
 
 
41769
  CTree *sons[5]; // ns, alias, assign, name, semi_colon
 
41770
 
 
41771
public:
 
41772
  /** Constructor.
 
41773
   *  \param n The keyword 'namespace'.
 
41774
   *  \param a The name of the namespace alias.
 
41775
   *  \param as The assignment operator '='.
 
41776
   *  \param nm The name of the original namespace.
 
41777
   *  \param s The trailing semi-colon. */
 
41778
  CT_NamespaceAliasDef (CTree *n, CTree *a, CTree *as, CTree *nm, CTree *s) {
 
41779
    AddSon (sons[0], n); AddSon (sons[1], a); AddSon (sons[2], as); 
 
41780
    AddSon (sons[3], nm); AddSon (sons[4], s); 
 
41781
  }
 
41782
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41783
  static const char *NodeId ();
 
41784
  /** Get the name of the node. Can be compared with NodeId(). */
 
41785
  const char *NodeName () const { return NodeId (); }
 
41786
  /** Get the number of sons. */
 
41787
  int Sons () const { return 5; }
 
41788
  /** Get the n-th son.
 
41789
   *  \param n The index of the son.
 
41790
   *  \return The n-th son or NULL. */
 
41791
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
41792
  /** Get the name of the original namespace. */
 
41793
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[3]; }
 
41794
  /** Get the name of the namespace alias. */
 
41795
  CT_SimpleName *Alias () const { return (CT_SimpleName*)sons[1]; }
 
41796
  /** Get the semantic information about the namespace alias. */
 
41797
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
41798
  /** Replace a son.
 
41799
   *  \param old_son The son to replace.
 
41800
   *  \param new_son The new son. */
 
41801
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41802
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
41803
  }
 
41804
public:
 
41805
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
41806
  const char *__attr_name (unsigned i) const {
 
41807
    static const char *names[] = { "sons" }; return names[i];
 
41808
  }
 
41809
  const void *__attr (unsigned __i) const {
 
41810
    switch (__i) { case 0: return &sons; default: return 0; }
 
41811
  }
 
41812
#line 3009 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41813
};
 
41814
 
 
41815
/** \class CT_UsingDirective CTree.h Puma/CTree.h
 
41816
 *  Tree node representing a namespace using directive.
 
41817
 *  Example: \code using namespace std; \endcode */
 
41818
 
 
41819
#line 41820 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41820
} // closed Puma
 
41821
class CCExprResolve;
 
41822
class CExprResolve;
 
41823
class WinIfExists;
 
41824
class WinImportHandler;
 
41825
class WinMacros;
 
41826
class WinAsm;
 
41827
class WinDeclSpecs;
 
41828
class WinMemberExplSpec;
 
41829
class WinTypeKeywords;
 
41830
class WinFriend;
 
41831
class ExtAC;
 
41832
class ExtACBuilderCoupling;
 
41833
class ExtACSyntaxCoupling;
 
41834
class ExtACTree;
 
41835
class ExtACKeywords;
 
41836
class ExtGnu;
 
41837
class PragmaOnceUnitState;
 
41838
class PragmaOnce;
 
41839
class CMatchSyntax;
 
41840
namespace Puma {
 
41841
 
 
41842
#line 3014 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41843
class CT_UsingDirective : public CT_Decl {
 
41844
#line 41845 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41845
  friend class ::CCExprResolve;
 
41846
  friend class ::CExprResolve;
 
41847
  friend class ::WinIfExists;
 
41848
  friend class ::WinImportHandler;
 
41849
  friend class ::WinMacros;
 
41850
  friend class ::WinAsm;
 
41851
  friend class ::WinDeclSpecs;
 
41852
  friend class ::WinMemberExplSpec;
 
41853
  friend class ::WinTypeKeywords;
 
41854
  friend class ::WinFriend;
 
41855
  friend class ::ExtAC;
 
41856
  friend class ::ExtACBuilderCoupling;
 
41857
  friend class ::ExtACSyntaxCoupling;
 
41858
  friend class ::ExtACTree;
 
41859
  friend class ::ExtACKeywords;
 
41860
  friend class ::ExtGnu;
 
41861
  friend class ::PragmaOnceUnitState;
 
41862
  friend class ::PragmaOnce;
 
41863
  friend class ::CMatchSyntax;
 
41864
 
 
41865
#line 3014 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41866
 
 
41867
  CTree *sons[4]; // using, ns, name, semi_colon
 
41868
 
 
41869
public:
 
41870
  /** Constructor. 
 
41871
   *  \param u The keyword 'using'.
 
41872
   *  \param ns The keyword 'namespace'. 
 
41873
   *  \param n The name of the namespace.
 
41874
   *  \param s The trailing semi-colon. */
 
41875
  CT_UsingDirective (CTree *u, CTree *ns, CTree *n, CTree *s) {
 
41876
    AddSon (sons[0], u); AddSon (sons[1], ns); AddSon (sons[2], n); 
 
41877
    AddSon (sons[3], s); 
 
41878
  }
 
41879
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
41880
  static const char *NodeId ();
 
41881
  /** Get the name of the node. Can be compared with NodeId(). */
 
41882
  const char *NodeName () const { return NodeId (); }
 
41883
  /** Get the number of sons. */
 
41884
  int Sons () const { return 4; }
 
41885
  /** Get the n-th son.
 
41886
   *  \param n The index of the son.
 
41887
   *  \return The n-th son or NULL. */
 
41888
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
41889
  /** Get the name of the namespace. */
 
41890
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
41891
  /** Replace a son.
 
41892
   *  \param old_son The son to replace.
 
41893
   *  \param new_son The new son. */
 
41894
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
41895
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
41896
  }
 
41897
public:
 
41898
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
41899
  const char *__attr_name (unsigned i) const {
 
41900
    static const char *names[] = { "sons" }; return names[i];
 
41901
  }
 
41902
  const void *__attr (unsigned __i) const {
 
41903
    switch (__i) { case 0: return &sons; default: return 0; }
 
41904
  }
 
41905
#line 3045 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41906
};
 
41907
 
 
41908
/*****************************************************************************/
 
41909
/*                                                                           */
 
41910
/*                              Declarators                                  */
 
41911
/*                                                                           */
 
41912
/*****************************************************************************/
 
41913
 
 
41914
/** \class CT_Declarator CTree.h Puma/CTree.h
 
41915
 *  Base class for all tree nodes representing declarators. */
 
41916
 
 
41917
#line 41918 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41918
} // closed Puma
 
41919
class CCExprResolve;
 
41920
class CExprResolve;
 
41921
class WinIfExists;
 
41922
class WinImportHandler;
 
41923
class WinMacros;
 
41924
class WinAsm;
 
41925
class WinDeclSpecs;
 
41926
class WinMemberExplSpec;
 
41927
class WinTypeKeywords;
 
41928
class WinFriend;
 
41929
class ExtAC;
 
41930
class ExtACBuilderCoupling;
 
41931
class ExtACSyntaxCoupling;
 
41932
class ExtACTree;
 
41933
class ExtACKeywords;
 
41934
class ExtGnu;
 
41935
class PragmaOnceUnitState;
 
41936
class PragmaOnce;
 
41937
class CMatchSyntax;
 
41938
namespace Puma {
 
41939
 
 
41940
#line 3055 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41941
class CT_Declarator : public CTree {
 
41942
#line 41943 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41943
  friend class ::CCExprResolve;
 
41944
  friend class ::CExprResolve;
 
41945
  friend class ::WinIfExists;
 
41946
  friend class ::WinImportHandler;
 
41947
  friend class ::WinMacros;
 
41948
  friend class ::WinAsm;
 
41949
  friend class ::WinDeclSpecs;
 
41950
  friend class ::WinMemberExplSpec;
 
41951
  friend class ::WinTypeKeywords;
 
41952
  friend class ::WinFriend;
 
41953
  friend class ::ExtAC;
 
41954
  friend class ::ExtACBuilderCoupling;
 
41955
  friend class ::ExtACSyntaxCoupling;
 
41956
  friend class ::ExtACTree;
 
41957
  friend class ::ExtACKeywords;
 
41958
  friend class ::ExtGnu;
 
41959
  friend class ::PragmaOnceUnitState;
 
41960
  friend class ::PragmaOnce;
 
41961
  friend class ::CMatchSyntax;
 
41962
 
 
41963
#line 3055 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41964
 
 
41965
protected:
 
41966
  /** Constructor. */
 
41967
  CT_Declarator () {}
 
41968
 
 
41969
public:
 
41970
  /** Get the declarator. */
 
41971
  virtual CTree *Declarator () const = 0;
 
41972
  /** Get this. */
 
41973
  virtual CT_Declarator *IsDeclarator () { return this; }
 
41974
  /** Get the declared name. */
 
41975
  CT_SimpleName *Name ();
 
41976
  /** Get the declared name and set last_declarator to 
 
41977
   *  the declarator containing the name. 
 
41978
   *  \param last_declarator To be set to the declarator containing the name. */
 
41979
  CT_SimpleName *Name (CT_Declarator *&last_declarator);
 
41980
public:
 
41981
  typedef AC::TLE __AttrTypes;
 
41982
  const char *__attr_name (unsigned i) const { return 0; }
 
41983
  const void *__attr (unsigned __i) const { return 0; }
 
41984
#line 3071 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
41985
};
 
41986
 
 
41987
/** \class CT_InitDeclarator CTree.h Puma/CTree.h
 
41988
 *  Tree node representing a declarator with initializer.
 
41989
 *  Example: \code int *i = 0; \endcode */
 
41990
 
 
41991
#line 41992 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
41992
} // closed Puma
 
41993
class CCExprResolve;
 
41994
class CExprResolve;
 
41995
class WinIfExists;
 
41996
class WinImportHandler;
 
41997
class WinMacros;
 
41998
class WinAsm;
 
41999
class WinDeclSpecs;
 
42000
class WinMemberExplSpec;
 
42001
class WinTypeKeywords;
 
42002
class WinFriend;
 
42003
class ExtAC;
 
42004
class ExtACBuilderCoupling;
 
42005
class ExtACSyntaxCoupling;
 
42006
class ExtACTree;
 
42007
class ExtACKeywords;
 
42008
class ExtGnu;
 
42009
class PragmaOnceUnitState;
 
42010
class PragmaOnce;
 
42011
class CMatchSyntax;
 
42012
namespace Puma {
 
42013
 
 
42014
#line 3076 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42015
class CT_InitDeclarator : public CT_Declarator, public CSemObject {
 
42016
#line 42017 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42017
  friend class ::CCExprResolve;
 
42018
  friend class ::CExprResolve;
 
42019
  friend class ::WinIfExists;
 
42020
  friend class ::WinImportHandler;
 
42021
  friend class ::WinMacros;
 
42022
  friend class ::WinAsm;
 
42023
  friend class ::WinDeclSpecs;
 
42024
  friend class ::WinMemberExplSpec;
 
42025
  friend class ::WinTypeKeywords;
 
42026
  friend class ::WinFriend;
 
42027
  friend class ::ExtAC;
 
42028
  friend class ::ExtACBuilderCoupling;
 
42029
  friend class ::ExtACSyntaxCoupling;
 
42030
  friend class ::ExtACTree;
 
42031
  friend class ::ExtACKeywords;
 
42032
  friend class ::ExtGnu;
 
42033
  friend class ::PragmaOnceUnitState;
 
42034
  friend class ::PragmaOnce;
 
42035
  friend class ::CMatchSyntax;
 
42036
 
 
42037
#line 3076 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42038
 
 
42039
  CTree *sons[3]; // declarator, ext, init
 
42040
  CTree *obj_decl;
 
42041
 
 
42042
public:
 
42043
  /** Constructor.
 
42044
   *  \param d The declarator.
 
42045
   *  \param e Optional extension list.
 
42046
   *  \param i The initializer. */
 
42047
  CT_InitDeclarator (CTree *d, CTree *e = 0, CTree *i = 0) {
 
42048
    AddSon (sons[0], d); AddSon (sons[1], e); AddSon (sons[2], i);
 
42049
    AddSon (obj_decl, 0); 
 
42050
  }
 
42051
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42052
  static const char *NodeId ();
 
42053
  /** Get the name of the node. Can be compared with NodeId(). */
 
42054
  const char *NodeName () const { return NodeId (); }
 
42055
  /** Get the number of sons. */
 
42056
  int Sons () const { return CTree::Sons (sons, 3); }
 
42057
  /** Get the n-th son.
 
42058
   *  \param n The index of the son.
 
42059
   *  \return The n-th son or NULL. */
 
42060
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
42061
  /** Get the declarator. */
 
42062
  CTree *Declarator () const { return sons[0]; }
 
42063
  /** Get the extensions list. */
 
42064
  CTree *Extension () const { return sons[1]; }
 
42065
  /** Get the initializer. */
 
42066
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
42067
  /** Get the semantic information about the declared object. */
 
42068
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
42069
  /** Get the object declaration node containing the declarator. */
 
42070
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
42071
  /** Set the initializer. */
 
42072
  void Initializer (CTree* i) { AddSon (sons[2], i); }
 
42073
  /** Set the extensions list. */
 
42074
  void Extension (CTree* e) { AddSon (sons[1], e); }
 
42075
  /** Set the object declaration node containing the declarator. 
 
42076
   *  \param od The object declaration node. */
 
42077
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
42078
  /** Replace a son.
 
42079
   *  \param old_son The son to replace.
 
42080
   *  \param new_son The new son. */
 
42081
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42082
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
42083
  }
 
42084
public:
 
42085
  typedef AC::TL<Puma::CTree * [3],AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
42086
  const char *__attr_name (unsigned i) const {
 
42087
    static const char *names[] = { "sons", "obj_decl" }; return names[i];
 
42088
  }
 
42089
  const void *__attr (unsigned __i) const {
 
42090
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; default: return 0; }
 
42091
  }
 
42092
#line 3122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42093
};
 
42094
 
 
42095
/** \class CT_BracedDeclarator CTree.h Puma/CTree.h
 
42096
 *  Tree node representing a braced declarator.
 
42097
 *  Example: \code int (i); \endcode */
 
42098
 
 
42099
#line 42100 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42100
} // closed Puma
 
42101
class CCExprResolve;
 
42102
class CExprResolve;
 
42103
class WinIfExists;
 
42104
class WinImportHandler;
 
42105
class WinMacros;
 
42106
class WinAsm;
 
42107
class WinDeclSpecs;
 
42108
class WinMemberExplSpec;
 
42109
class WinTypeKeywords;
 
42110
class WinFriend;
 
42111
class ExtAC;
 
42112
class ExtACBuilderCoupling;
 
42113
class ExtACSyntaxCoupling;
 
42114
class ExtACTree;
 
42115
class ExtACKeywords;
 
42116
class ExtGnu;
 
42117
class PragmaOnceUnitState;
 
42118
class PragmaOnce;
 
42119
class CMatchSyntax;
 
42120
namespace Puma {
 
42121
 
 
42122
#line 3127 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42123
class CT_BracedDeclarator : public CT_Declarator {
 
42124
#line 42125 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42125
  friend class ::CCExprResolve;
 
42126
  friend class ::CExprResolve;
 
42127
  friend class ::WinIfExists;
 
42128
  friend class ::WinImportHandler;
 
42129
  friend class ::WinMacros;
 
42130
  friend class ::WinAsm;
 
42131
  friend class ::WinDeclSpecs;
 
42132
  friend class ::WinMemberExplSpec;
 
42133
  friend class ::WinTypeKeywords;
 
42134
  friend class ::WinFriend;
 
42135
  friend class ::ExtAC;
 
42136
  friend class ::ExtACBuilderCoupling;
 
42137
  friend class ::ExtACSyntaxCoupling;
 
42138
  friend class ::ExtACTree;
 
42139
  friend class ::ExtACKeywords;
 
42140
  friend class ::ExtGnu;
 
42141
  friend class ::PragmaOnceUnitState;
 
42142
  friend class ::PragmaOnce;
 
42143
  friend class ::CMatchSyntax;
 
42144
 
 
42145
#line 3127 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42146
 
 
42147
  CTree *sons[4]; // open, win_specs, declarator, close
 
42148
 
 
42149
public:
 
42150
  /** Constructor.
 
42151
   *  \param o Left parenthesis around the declarator.
 
42152
   *  \param d The declarator.
 
42153
   *  \param c Right parenthesis around the declarator. */
 
42154
  CT_BracedDeclarator (CTree *o, CTree *d, CTree *c) {
 
42155
    AddSon (sons[0], o); AddSon (sons[1], 0); 
 
42156
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
42157
  }
 
42158
  /** Constructor.
 
42159
   *  \param o Left parenthesis around the declarator.
 
42160
   *  \param ws Declaration specifiers.
 
42161
   *  \param d The declarator.
 
42162
   *  \param c Right parenthesis around the declarator. */
 
42163
  CT_BracedDeclarator (CTree *o, CTree *ws, CTree *d, CTree *c) {
 
42164
    AddSon (sons[0], o); AddSon (sons[1], ws); 
 
42165
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
42166
  }
 
42167
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42168
  static const char *NodeId ();
 
42169
  /** Get the name of the node. Can be compared with NodeId(). */
 
42170
  const char *NodeName () const { return NodeId (); }
 
42171
  /** Get the number of sons. */
 
42172
  int Sons () const { return CTree::Sons (sons, 4); }
 
42173
  /** Get the n-th son.
 
42174
   *  \param n The index of the son.
 
42175
   *  \return The n-th son or NULL. */
 
42176
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
42177
  /** Get the declarator. */
 
42178
  CTree *Declarator () const { return sons[2]; }
 
42179
  /** Replace a son.
 
42180
   *  \param old_son The son to replace.
 
42181
   *  \param new_son The new son. */
 
42182
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42183
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
42184
  }
 
42185
public:
 
42186
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
42187
  const char *__attr_name (unsigned i) const {
 
42188
    static const char *names[] = { "sons" }; return names[i];
 
42189
  }
 
42190
  const void *__attr (unsigned __i) const {
 
42191
    switch (__i) { case 0: return &sons; default: return 0; }
 
42192
  }
 
42193
#line 3166 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42194
};
 
42195
 
 
42196
/** \class CT_ArrayDelimiter CTree.h Puma/CTree.h
 
42197
 *  Tree node representing an array delimiter.
 
42198
 *  Example: \code [10] \endcode or \code [*] \endcode */
 
42199
 
 
42200
#line 42201 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42201
} // closed Puma
 
42202
class CCExprResolve;
 
42203
class CExprResolve;
 
42204
class WinIfExists;
 
42205
class WinImportHandler;
 
42206
class WinMacros;
 
42207
class WinAsm;
 
42208
class WinDeclSpecs;
 
42209
class WinMemberExplSpec;
 
42210
class WinTypeKeywords;
 
42211
class WinFriend;
 
42212
class ExtAC;
 
42213
class ExtACBuilderCoupling;
 
42214
class ExtACSyntaxCoupling;
 
42215
class ExtACTree;
 
42216
class ExtACKeywords;
 
42217
class ExtGnu;
 
42218
class PragmaOnceUnitState;
 
42219
class PragmaOnce;
 
42220
class CMatchSyntax;
 
42221
namespace Puma {
 
42222
 
 
42223
#line 3171 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42224
class CT_ArrayDelimiter : public CTree {
 
42225
#line 42226 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42226
  friend class ::CCExprResolve;
 
42227
  friend class ::CExprResolve;
 
42228
  friend class ::WinIfExists;
 
42229
  friend class ::WinImportHandler;
 
42230
  friend class ::WinMacros;
 
42231
  friend class ::WinAsm;
 
42232
  friend class ::WinDeclSpecs;
 
42233
  friend class ::WinMemberExplSpec;
 
42234
  friend class ::WinTypeKeywords;
 
42235
  friend class ::WinFriend;
 
42236
  friend class ::ExtAC;
 
42237
  friend class ::ExtACBuilderCoupling;
 
42238
  friend class ::ExtACSyntaxCoupling;
 
42239
  friend class ::ExtACTree;
 
42240
  friend class ::ExtACKeywords;
 
42241
  friend class ::ExtGnu;
 
42242
  friend class ::PragmaOnceUnitState;
 
42243
  friend class ::PragmaOnce;
 
42244
  friend class ::CMatchSyntax;
 
42245
 
 
42246
#line 3171 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42247
 
 
42248
  CTree *sons[4]; // star, static, quals, expr
 
42249
  bool pos0;
 
42250
 
 
42251
public:
 
42252
  /** Constructor.
 
42253
   *  \param m The operator '*'.
 
42254
   *  \param s The keyword 'static'.
 
42255
   *  \param q The const/volatile qualifier sequence. 
 
42256
   *  \param e The array size expression. 
 
42257
   *  \param p Position of keyword 'static', true means before the
 
42258
   *           qualifier sequence and false means behind it. */
 
42259
  CT_ArrayDelimiter (CTree *m, CTree *s, CTree *q, CTree *e, bool p = false) {
 
42260
    AddSon (sons[0], m); AddSon (sons[1], s); 
 
42261
    AddSon (sons[2], q); AddSon (sons[3], e); pos0 = p;
 
42262
  }
 
42263
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42264
  static const char *NodeId ();
 
42265
  /** Get the name of the node. Can be compared with NodeId(). */
 
42266
  const char *NodeName () const { return NodeId (); }
 
42267
  /** Get the number of sons. */
 
42268
  int Sons () const { return CTree::Sons (sons, 4); }
 
42269
  /** Get the n-th son.
 
42270
   *  \param n The index of the son.
 
42271
   *  \return The n-th son or NULL. */
 
42272
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
42273
  /** Get the operator '*'. */
 
42274
  CT_Token *Star () const { return (CT_Token*)sons[0]; }
 
42275
  /** Get the keyword 'static'. */
 
42276
  CT_Token *Static () const { return (CT_Token*)sons[pos0?2:1]; }
 
42277
  /** Get the const/volatile qualifier sequence. */
 
42278
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[pos0?1:2]; }
 
42279
  /** Get the array size expression. */
 
42280
  CTree *Expr () const { return sons[3]; }
 
42281
  /** Replace a son.
 
42282
   *  \param old_son The son to replace.
 
42283
   *  \param new_son The new son. */
 
42284
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42285
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
42286
  }
 
42287
public:
 
42288
  typedef AC::TL<Puma::CTree * [4],AC::TL<bool,AC::TLE > > __AttrTypes;
 
42289
  const char *__attr_name (unsigned i) const {
 
42290
    static const char *names[] = { "sons", "pos0" }; return names[i];
 
42291
  }
 
42292
  const void *__attr (unsigned __i) const {
 
42293
    switch (__i) { case 0: return &sons; case 1: return &pos0; default: return 0; }
 
42294
  }
 
42295
#line 3211 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42296
};
 
42297
 
 
42298
/** \class CT_ArrayDeclarator CTree.h Puma/CTree.h
 
42299
 *  Tree node representing an array declarator.
 
42300
 *  Example: \code a[10] \endcode */
 
42301
 
 
42302
#line 42303 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42303
} // closed Puma
 
42304
class CCExprResolve;
 
42305
class CExprResolve;
 
42306
class WinIfExists;
 
42307
class WinImportHandler;
 
42308
class WinMacros;
 
42309
class WinAsm;
 
42310
class WinDeclSpecs;
 
42311
class WinMemberExplSpec;
 
42312
class WinTypeKeywords;
 
42313
class WinFriend;
 
42314
class ExtAC;
 
42315
class ExtACBuilderCoupling;
 
42316
class ExtACSyntaxCoupling;
 
42317
class ExtACTree;
 
42318
class ExtACKeywords;
 
42319
class ExtGnu;
 
42320
class PragmaOnceUnitState;
 
42321
class PragmaOnce;
 
42322
class CMatchSyntax;
 
42323
namespace Puma {
 
42324
 
 
42325
#line 3216 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42326
class CT_ArrayDeclarator : public CT_Declarator, public CSemValue {
 
42327
#line 42328 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42328
  friend class ::CCExprResolve;
 
42329
  friend class ::CExprResolve;
 
42330
  friend class ::WinIfExists;
 
42331
  friend class ::WinImportHandler;
 
42332
  friend class ::WinMacros;
 
42333
  friend class ::WinAsm;
 
42334
  friend class ::WinDeclSpecs;
 
42335
  friend class ::WinMemberExplSpec;
 
42336
  friend class ::WinTypeKeywords;
 
42337
  friend class ::WinFriend;
 
42338
  friend class ::ExtAC;
 
42339
  friend class ::ExtACBuilderCoupling;
 
42340
  friend class ::ExtACSyntaxCoupling;
 
42341
  friend class ::ExtACTree;
 
42342
  friend class ::ExtACKeywords;
 
42343
  friend class ::ExtGnu;
 
42344
  friend class ::PragmaOnceUnitState;
 
42345
  friend class ::PragmaOnce;
 
42346
  friend class ::CMatchSyntax;
 
42347
 
 
42348
#line 3216 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42349
 
 
42350
  CTree *sons[4]; // declarator, open, delim, close
 
42351
 
 
42352
public:
 
42353
  /** Constructor.
 
42354
   *  \param d The array declarator.
 
42355
   *  \param o Left bracket around the delimiter.
 
42356
   *  \param ad The array delimiter.
 
42357
   *  \param c Right bracket around the delimiter. */
 
42358
  CT_ArrayDeclarator (CTree *d, CTree *o, CTree *ad, CTree *c) {
 
42359
    AddSon (sons[0], d); AddSon (sons[1], o); 
 
42360
    AddSon (sons[2], ad); AddSon (sons[3], c); 
 
42361
  }
 
42362
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42363
  static const char *NodeId ();
 
42364
  /** Get the name of the node. Can be compared with NodeId(). */
 
42365
  const char *NodeName () const { return NodeId (); }
 
42366
  /** Get the number of sons. */
 
42367
  int Sons () const { return 4; }
 
42368
  /** Get the n-th son.
 
42369
   *  \param n The index of the son.
 
42370
   *  \return The n-th son or NULL. */
 
42371
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
42372
  /** Get the array declarator. */
 
42373
  CTree *Declarator () const { return sons[0]; }
 
42374
  /** Get the array delimiter. */
 
42375
  CT_ArrayDelimiter *Delimiter () const 
 
42376
   { return (CT_ArrayDelimiter*)sons[2]; }
 
42377
  /** Replace a son.
 
42378
   *  \param old_son The son to replace.
 
42379
   *  \param new_son The new son. */
 
42380
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42381
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
42382
  }
 
42383
  /** Get the semantic information for the type of the declared array. */
 
42384
  CTypeInfo *Type () const { return type; }
 
42385
  /** Get the semantic information for the value of the declared array. */
 
42386
  CExprValue *Value () const { return value; }
 
42387
  /** Get the semantic information object. */
 
42388
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
42389
public:
 
42390
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
42391
  const char *__attr_name (unsigned i) const {
 
42392
    static const char *names[] = { "sons" }; return names[i];
 
42393
  }
 
42394
  const void *__attr (unsigned __i) const {
 
42395
    switch (__i) { case 0: return &sons; default: return 0; }
 
42396
  }
 
42397
#line 3256 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42398
};
 
42399
 
 
42400
/** \class CT_FctDeclarator CTree.h Puma/CTree.h
 
42401
 *  Tree node representing a function declarator.
 
42402
 *  Example: \code f(int a) const \endcode */
 
42403
 
 
42404
#line 42405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42405
} // closed Puma
 
42406
class CCExprResolve;
 
42407
class CExprResolve;
 
42408
class WinIfExists;
 
42409
class WinImportHandler;
 
42410
class WinMacros;
 
42411
class WinAsm;
 
42412
class WinDeclSpecs;
 
42413
class WinMemberExplSpec;
 
42414
class WinTypeKeywords;
 
42415
class WinFriend;
 
42416
class ExtAC;
 
42417
class ExtACBuilderCoupling;
 
42418
class ExtACSyntaxCoupling;
 
42419
class ExtACTree;
 
42420
class ExtACKeywords;
 
42421
class ExtGnu;
 
42422
class PragmaOnceUnitState;
 
42423
class PragmaOnce;
 
42424
class CMatchSyntax;
 
42425
namespace Puma {
 
42426
 
 
42427
#line 3261 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42428
class CT_FctDeclarator : public CT_Declarator {
 
42429
#line 42430 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42430
  friend class ::CCExprResolve;
 
42431
  friend class ::CExprResolve;
 
42432
  friend class ::WinIfExists;
 
42433
  friend class ::WinImportHandler;
 
42434
  friend class ::WinMacros;
 
42435
  friend class ::WinAsm;
 
42436
  friend class ::WinDeclSpecs;
 
42437
  friend class ::WinMemberExplSpec;
 
42438
  friend class ::WinTypeKeywords;
 
42439
  friend class ::WinFriend;
 
42440
  friend class ::ExtAC;
 
42441
  friend class ::ExtACBuilderCoupling;
 
42442
  friend class ::ExtACSyntaxCoupling;
 
42443
  friend class ::ExtACTree;
 
42444
  friend class ::ExtACKeywords;
 
42445
  friend class ::ExtGnu;
 
42446
  friend class ::PragmaOnceUnitState;
 
42447
  friend class ::PragmaOnce;
 
42448
  friend class ::CMatchSyntax;
 
42449
 
 
42450
#line 3261 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42451
 
 
42452
  CTree *sons[4]; // declarator, args, cv_quals, exception_specs
 
42453
 
 
42454
public:
 
42455
  /** Constructor.
 
42456
   *  \param d The function declarator.
 
42457
   *  \param args The function parameter list.
 
42458
   *  \param cv The function qualifiers.
 
42459
   *  \param es The exception specifier. */
 
42460
  CT_FctDeclarator (CTree *d, CTree *args, CTree *cv, CTree *es) {
 
42461
    AddSon (sons[0], d); AddSon (sons[1], args); 
 
42462
    AddSon (sons[2], cv); AddSon (sons[3], es); 
 
42463
  }
 
42464
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42465
  static const char *NodeId ();
 
42466
  /** Get the name of the node. Can be compared with NodeId(). */
 
42467
  const char *NodeName () const { return NodeId (); }
 
42468
  /** Get the number of sons. */
 
42469
  int Sons () const { return CTree::Sons (sons, 4); }
 
42470
  /** Get the n-th son.
 
42471
   *  \param n The index of the son.
 
42472
   *  \return The n-th son or NULL. */
 
42473
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
42474
  /** Get the function declarator. */
 
42475
  CTree *Declarator () const { return sons[0]; }
 
42476
  /** Get the function parameter list. */
 
42477
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
42478
  /** Get the function qualifier list. */
 
42479
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[2]; }
 
42480
  /** Get the exception specifier. */
 
42481
  CT_ExceptionSpec *ExceptionSpecs () const { return (CT_ExceptionSpec*)sons[3]; }
 
42482
  /** Replace a son.
 
42483
   *  \param old_son The son to replace.
 
42484
   *  \param new_son The new son. */
 
42485
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42486
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
42487
  }
 
42488
public:
 
42489
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
42490
  const char *__attr_name (unsigned i) const {
 
42491
    static const char *names[] = { "sons" }; return names[i];
 
42492
  }
 
42493
  const void *__attr (unsigned __i) const {
 
42494
    switch (__i) { case 0: return &sons; default: return 0; }
 
42495
  }
 
42496
#line 3298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42497
};
 
42498
 
 
42499
/** \class CT_RefDeclarator CTree.h Puma/CTree.h
 
42500
 *  Tree node representing a reference declarator.
 
42501
 *  Example: \code &a \endcode */
 
42502
 
 
42503
#line 42504 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42504
} // closed Puma
 
42505
class CCExprResolve;
 
42506
class CExprResolve;
 
42507
class WinIfExists;
 
42508
class WinImportHandler;
 
42509
class WinMacros;
 
42510
class WinAsm;
 
42511
class WinDeclSpecs;
 
42512
class WinMemberExplSpec;
 
42513
class WinTypeKeywords;
 
42514
class WinFriend;
 
42515
class ExtAC;
 
42516
class ExtACBuilderCoupling;
 
42517
class ExtACSyntaxCoupling;
 
42518
class ExtACTree;
 
42519
class ExtACKeywords;
 
42520
class ExtGnu;
 
42521
class PragmaOnceUnitState;
 
42522
class PragmaOnce;
 
42523
class CMatchSyntax;
 
42524
namespace Puma {
 
42525
 
 
42526
#line 3303 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42527
class CT_RefDeclarator : public CT_Declarator {
 
42528
#line 42529 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42529
  friend class ::CCExprResolve;
 
42530
  friend class ::CExprResolve;
 
42531
  friend class ::WinIfExists;
 
42532
  friend class ::WinImportHandler;
 
42533
  friend class ::WinMacros;
 
42534
  friend class ::WinAsm;
 
42535
  friend class ::WinDeclSpecs;
 
42536
  friend class ::WinMemberExplSpec;
 
42537
  friend class ::WinTypeKeywords;
 
42538
  friend class ::WinFriend;
 
42539
  friend class ::ExtAC;
 
42540
  friend class ::ExtACBuilderCoupling;
 
42541
  friend class ::ExtACSyntaxCoupling;
 
42542
  friend class ::ExtACTree;
 
42543
  friend class ::ExtACKeywords;
 
42544
  friend class ::ExtGnu;
 
42545
  friend class ::PragmaOnceUnitState;
 
42546
  friend class ::PragmaOnce;
 
42547
  friend class ::CMatchSyntax;
 
42548
 
 
42549
#line 3303 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42550
 
 
42551
  CTree *sons[2]; // ref, declarator
 
42552
 
 
42553
public:
 
42554
  /** Constructor.
 
42555
   *  \param r The reference operator '&'.
 
42556
   *  \param d The declarator. */
 
42557
  CT_RefDeclarator (CTree *r, CTree *d) { AddSon (sons[0], r); AddSon (sons[1], d); }
 
42558
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42559
  static const char *NodeId ();
 
42560
  /** Get the name of the node. Can be compared with NodeId(). */
 
42561
  const char *NodeName () const { return NodeId (); }
 
42562
  /** Get the number of sons. */
 
42563
  int Sons () const { return 2; }
 
42564
  /** Get the n-th son.
 
42565
   *  \param n The index of the son.
 
42566
   *  \return The n-th son or NULL. */
 
42567
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
42568
  /** Get the declarator. */
 
42569
  CTree *Declarator () const { return sons[1]; }
 
42570
  /** Replace a son.
 
42571
   *  \param old_son The son to replace.
 
42572
   *  \param new_son The new son. */
 
42573
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
42574
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
42575
  }
 
42576
public:
 
42577
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
42578
  const char *__attr_name (unsigned i) const {
 
42579
    static const char *names[] = { "sons" }; return names[i];
 
42580
  }
 
42581
  const void *__attr (unsigned __i) const {
 
42582
    switch (__i) { case 0: return &sons; default: return 0; }
 
42583
  }
 
42584
#line 3329 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42585
};
 
42586
 
 
42587
/** \class CT_PtrDeclarator CTree.h Puma/CTree.h
 
42588
 *  Tree node representing a pointer declarator.
 
42589
 *  Example: \code *a \endcode */
 
42590
 
 
42591
#line 42592 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42592
} // closed Puma
 
42593
class CCExprResolve;
 
42594
class CExprResolve;
 
42595
class WinIfExists;
 
42596
class WinImportHandler;
 
42597
class WinMacros;
 
42598
class WinAsm;
 
42599
class WinDeclSpecs;
 
42600
class WinMemberExplSpec;
 
42601
class WinTypeKeywords;
 
42602
class WinFriend;
 
42603
class ExtAC;
 
42604
class ExtACBuilderCoupling;
 
42605
class ExtACSyntaxCoupling;
 
42606
class ExtACTree;
 
42607
class ExtACKeywords;
 
42608
class ExtGnu;
 
42609
class PragmaOnceUnitState;
 
42610
class PragmaOnce;
 
42611
class CMatchSyntax;
 
42612
namespace Puma {
 
42613
 
 
42614
#line 3334 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42615
class CT_PtrDeclarator : public CT_Declarator {
 
42616
#line 42617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42617
  friend class ::CCExprResolve;
 
42618
  friend class ::CExprResolve;
 
42619
  friend class ::WinIfExists;
 
42620
  friend class ::WinImportHandler;
 
42621
  friend class ::WinMacros;
 
42622
  friend class ::WinAsm;
 
42623
  friend class ::WinDeclSpecs;
 
42624
  friend class ::WinMemberExplSpec;
 
42625
  friend class ::WinTypeKeywords;
 
42626
  friend class ::WinFriend;
 
42627
  friend class ::ExtAC;
 
42628
  friend class ::ExtACBuilderCoupling;
 
42629
  friend class ::ExtACSyntaxCoupling;
 
42630
  friend class ::ExtACTree;
 
42631
  friend class ::ExtACKeywords;
 
42632
  friend class ::ExtGnu;
 
42633
  friend class ::PragmaOnceUnitState;
 
42634
  friend class ::PragmaOnce;
 
42635
  friend class ::CMatchSyntax;
 
42636
 
 
42637
#line 3334 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42638
 
 
42639
  CTree *sons[3]; // ptr, cv_quals, declarator
 
42640
 
 
42641
public:
 
42642
  /** Constructor.
 
42643
   *  \param p The pointer operator '*'.
 
42644
   *  \param c The const/volatile pointer qualifier sequence.
 
42645
   *  \param d The declarator. */
 
42646
  CT_PtrDeclarator (CTree *p, CTree *c, CTree *d) {
 
42647
    AddSon (sons[0], p); AddSon (sons[1], c); AddSon (sons[2], d); 
 
42648
  }
 
42649
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42650
  static const char *NodeId ();
 
42651
  /** Get the name of the node. Can be compared with NodeId(). */
 
42652
  const char *NodeName () const { return NodeId (); }
 
42653
  /** Get the number of sons. */
 
42654
  int Sons () const { return CTree::Sons (sons, 3); }
 
42655
  /** Get the n-th son.
 
42656
   *  \param n The index of the son.
 
42657
   *  \return The n-th son or NULL. */
 
42658
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
42659
  /** Get the declarator. */
 
42660
  CTree *Declarator () const { return sons[2]; }
 
42661
  /** Get the const/volatile qualifier sequence. */
 
42662
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[1]; }
 
42663
  /** Replace a son.
 
42664
   *  \param old_son The son to replace.
 
42665
   *  \param new_son The new son. */
 
42666
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42667
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
42668
  }
 
42669
public:
 
42670
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
42671
  const char *__attr_name (unsigned i) const {
 
42672
    static const char *names[] = { "sons" }; return names[i];
 
42673
  }
 
42674
  const void *__attr (unsigned __i) const {
 
42675
    switch (__i) { case 0: return &sons; default: return 0; }
 
42676
  }
 
42677
#line 3365 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42678
};
 
42679
 
 
42680
/** \class CT_MembPtrDeclarator CTree.h Puma/CTree.h
 
42681
 *  Tree node representing a member pointer declarator.
 
42682
 *  Example: \code *X::a \endcode */
 
42683
 
 
42684
#line 42685 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42685
} // closed Puma
 
42686
class CCExprResolve;
 
42687
class CExprResolve;
 
42688
class WinIfExists;
 
42689
class WinImportHandler;
 
42690
class WinMacros;
 
42691
class WinAsm;
 
42692
class WinDeclSpecs;
 
42693
class WinMemberExplSpec;
 
42694
class WinTypeKeywords;
 
42695
class WinFriend;
 
42696
class ExtAC;
 
42697
class ExtACBuilderCoupling;
 
42698
class ExtACSyntaxCoupling;
 
42699
class ExtACTree;
 
42700
class ExtACKeywords;
 
42701
class ExtGnu;
 
42702
class PragmaOnceUnitState;
 
42703
class PragmaOnce;
 
42704
class CMatchSyntax;
 
42705
namespace Puma {
 
42706
 
 
42707
#line 3370 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42708
class CT_MembPtrDeclarator : public CT_Declarator {
 
42709
#line 42710 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42710
  friend class ::CCExprResolve;
 
42711
  friend class ::CExprResolve;
 
42712
  friend class ::WinIfExists;
 
42713
  friend class ::WinImportHandler;
 
42714
  friend class ::WinMacros;
 
42715
  friend class ::WinAsm;
 
42716
  friend class ::WinDeclSpecs;
 
42717
  friend class ::WinMemberExplSpec;
 
42718
  friend class ::WinTypeKeywords;
 
42719
  friend class ::WinFriend;
 
42720
  friend class ::ExtAC;
 
42721
  friend class ::ExtACBuilderCoupling;
 
42722
  friend class ::ExtACSyntaxCoupling;
 
42723
  friend class ::ExtACTree;
 
42724
  friend class ::ExtACKeywords;
 
42725
  friend class ::ExtGnu;
 
42726
  friend class ::PragmaOnceUnitState;
 
42727
  friend class ::PragmaOnce;
 
42728
  friend class ::CMatchSyntax;
 
42729
 
 
42730
#line 3370 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42731
 
 
42732
  CTree *sons[5]; // class, colon, ptr, cv_quals, declarator
 
42733
 
 
42734
public:
 
42735
  /** Constructor.
 
42736
   *  \param c The class name.
 
42737
   *  \param cc The scope operator '::'.
 
42738
   *  \param p The name of the pointer.
 
42739
   *  \param q The const/volatile pointer qualifier sequence.
 
42740
   *  \param d The declarator. */
 
42741
  CT_MembPtrDeclarator (CTree *c, CTree *cc, CTree *p, CTree *q, CTree *d) {
 
42742
    AddSon (sons[0], c); AddSon (sons[1], cc); AddSon (sons[2], p); 
 
42743
    AddSon (sons[3], q); AddSon (sons[4], d); 
 
42744
  }
 
42745
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42746
  static const char *NodeId ();
 
42747
  /** Get the name of the node. Can be compared with NodeId(). */
 
42748
  const char *NodeName () const { return NodeId (); }
 
42749
  /** Get the number of sons. */
 
42750
  int Sons () const { return CTree::Sons (sons, 5); }
 
42751
  /** Get the n-th son.
 
42752
   *  \param n The index of the son.
 
42753
   *  \return The n-th son or NULL. */
 
42754
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
42755
  /** Get the name of the declared pointer. */
 
42756
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
42757
  /** Get the declarator. */
 
42758
  CTree *Declarator () const { return sons[4]; }
 
42759
  /** Get the const/volatile qualifier sequence. */
 
42760
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[3]; }
 
42761
  /** Replace a son.
 
42762
   *  \param old_son The son to replace.
 
42763
   *  \param new_son The new son. */
 
42764
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42765
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
42766
  }
 
42767
public:
 
42768
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
42769
  const char *__attr_name (unsigned i) const {
 
42770
    static const char *names[] = { "sons" }; return names[i];
 
42771
  }
 
42772
  const void *__attr (unsigned __i) const {
 
42773
    switch (__i) { case 0: return &sons; default: return 0; }
 
42774
  }
 
42775
#line 3406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42776
};
 
42777
 
 
42778
/** \class CT_BitFieldDeclarator CTree.h Puma/CTree.h
 
42779
 *  Tree node representing a bit-field declarator.
 
42780
 *  Example: \code a : 2 \endcode */
 
42781
 
 
42782
#line 42783 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42783
} // closed Puma
 
42784
class CCExprResolve;
 
42785
class CExprResolve;
 
42786
class WinIfExists;
 
42787
class WinImportHandler;
 
42788
class WinMacros;
 
42789
class WinAsm;
 
42790
class WinDeclSpecs;
 
42791
class WinMemberExplSpec;
 
42792
class WinTypeKeywords;
 
42793
class WinFriend;
 
42794
class ExtAC;
 
42795
class ExtACBuilderCoupling;
 
42796
class ExtACSyntaxCoupling;
 
42797
class ExtACTree;
 
42798
class ExtACKeywords;
 
42799
class ExtGnu;
 
42800
class PragmaOnceUnitState;
 
42801
class PragmaOnce;
 
42802
class CMatchSyntax;
 
42803
namespace Puma {
 
42804
 
 
42805
#line 3411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42806
class CT_BitFieldDeclarator : public CT_Declarator, public CSemObject {
 
42807
#line 42808 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42808
  friend class ::CCExprResolve;
 
42809
  friend class ::CExprResolve;
 
42810
  friend class ::WinIfExists;
 
42811
  friend class ::WinImportHandler;
 
42812
  friend class ::WinMacros;
 
42813
  friend class ::WinAsm;
 
42814
  friend class ::WinDeclSpecs;
 
42815
  friend class ::WinMemberExplSpec;
 
42816
  friend class ::WinTypeKeywords;
 
42817
  friend class ::WinFriend;
 
42818
  friend class ::ExtAC;
 
42819
  friend class ::ExtACBuilderCoupling;
 
42820
  friend class ::ExtACSyntaxCoupling;
 
42821
  friend class ::ExtACTree;
 
42822
  friend class ::ExtACKeywords;
 
42823
  friend class ::ExtGnu;
 
42824
  friend class ::PragmaOnceUnitState;
 
42825
  friend class ::PragmaOnce;
 
42826
  friend class ::CMatchSyntax;
 
42827
 
 
42828
#line 3411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42829
 
 
42830
  CTree *sons[3]; // declarator, colon, expr
 
42831
 
 
42832
public:
 
42833
  /** Constructor.
 
42834
   *  \param d The declarator.
 
42835
   *  \param c The colon between the declarator and the bit count.
 
42836
   *  \param e The expression specifying the number of bits. */
 
42837
  CT_BitFieldDeclarator (CTree *d, CTree *c, CTree *e = 0) {
 
42838
    AddSon (sons[0], d); AddSon (sons[1], c); AddSon (sons[2], e); 
 
42839
  }
 
42840
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
42841
  static const char *NodeId ();
 
42842
  /** Get the name of the node. Can be compared with NodeId(). */
 
42843
  const char *NodeName () const { return NodeId (); }
 
42844
  /** Get the number of sons. */
 
42845
  int Sons () const { return CTree::Sons (sons, 3); }
 
42846
  /** Get the n-th son.
 
42847
   *  \param n The index of the son.
 
42848
   *  \return The n-th son or NULL. */
 
42849
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
42850
  /** Get the declarator. */
 
42851
  CTree *Declarator () const { return sons[0]; }
 
42852
  /** Get the expression specifying the number of bits. */
 
42853
  CTree *Expr () const { return sons[2]; }
 
42854
  /** Set the expression specifying the number of bits. */
 
42855
  void FieldSize (CTree *s) { AddSon (sons[2], s); }
 
42856
  /** Get the semantic information about the declared bit-field. */
 
42857
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
42858
  /** Replace a son.
 
42859
   *  \param old_son The son to replace.
 
42860
   *  \param new_son The new son. */
 
42861
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
42862
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
42863
  }
 
42864
public:
 
42865
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
42866
  const char *__attr_name (unsigned i) const {
 
42867
    static const char *names[] = { "sons" }; return names[i];
 
42868
  }
 
42869
  const void *__attr (unsigned __i) const {
 
42870
    switch (__i) { case 0: return &sons; default: return 0; }
 
42871
  }
 
42872
#line 3446 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42873
};
 
42874
 
 
42875
/*****************************************************************************/
 
42876
/*                                                                           */
 
42877
/*                              Statements                                   */
 
42878
/*                                                                           */
 
42879
/*****************************************************************************/
 
42880
 
 
42881
/** \class CT_Statement CTree.h Puma/CTree.h
 
42882
 *  Base class for all tree nodes representing statements. */
 
42883
 
 
42884
#line 42885 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42885
} // closed Puma
 
42886
class CCExprResolve;
 
42887
class CExprResolve;
 
42888
class WinIfExists;
 
42889
class WinImportHandler;
 
42890
class WinMacros;
 
42891
class WinAsm;
 
42892
class WinDeclSpecs;
 
42893
class WinMemberExplSpec;
 
42894
class WinTypeKeywords;
 
42895
class WinFriend;
 
42896
class ExtAC;
 
42897
class ExtACBuilderCoupling;
 
42898
class ExtACSyntaxCoupling;
 
42899
class ExtACTree;
 
42900
class ExtACKeywords;
 
42901
class ExtGnu;
 
42902
class PragmaOnceUnitState;
 
42903
class PragmaOnce;
 
42904
class CMatchSyntax;
 
42905
namespace Puma {
 
42906
 
 
42907
#line 3456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42908
class CT_Statement : public CTree {
 
42909
#line 42910 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42910
  friend class ::CCExprResolve;
 
42911
  friend class ::CExprResolve;
 
42912
  friend class ::WinIfExists;
 
42913
  friend class ::WinImportHandler;
 
42914
  friend class ::WinMacros;
 
42915
  friend class ::WinAsm;
 
42916
  friend class ::WinDeclSpecs;
 
42917
  friend class ::WinMemberExplSpec;
 
42918
  friend class ::WinTypeKeywords;
 
42919
  friend class ::WinFriend;
 
42920
  friend class ::ExtAC;
 
42921
  friend class ::ExtACBuilderCoupling;
 
42922
  friend class ::ExtACSyntaxCoupling;
 
42923
  friend class ::ExtACTree;
 
42924
  friend class ::ExtACKeywords;
 
42925
  friend class ::ExtGnu;
 
42926
  friend class ::PragmaOnceUnitState;
 
42927
  friend class ::PragmaOnce;
 
42928
  friend class ::CMatchSyntax;
 
42929
 
 
42930
#line 3456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42931
 
 
42932
protected:
 
42933
  /** Constructor. */
 
42934
  CT_Statement () {}
 
42935
  /** Get this. */
 
42936
  virtual CT_Statement *IsStatement () { return this; }
 
42937
public:
 
42938
  typedef AC::TLE __AttrTypes;
 
42939
  const char *__attr_name (unsigned i) const { return 0; }
 
42940
  const void *__attr (unsigned __i) const { return 0; }
 
42941
#line 3462 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42942
};
 
42943
 
 
42944
/** \class CT_LabelStmt CTree.h Puma/CTree.h
 
42945
 *  Tree node representing a label statement.
 
42946
 *  Example: \code incr_a: a++; \endcode */
 
42947
 
 
42948
#line 42949 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42949
} // closed Puma
 
42950
class CCExprResolve;
 
42951
class CExprResolve;
 
42952
class WinIfExists;
 
42953
class WinImportHandler;
 
42954
class WinMacros;
 
42955
class WinAsm;
 
42956
class WinDeclSpecs;
 
42957
class WinMemberExplSpec;
 
42958
class WinTypeKeywords;
 
42959
class WinFriend;
 
42960
class ExtAC;
 
42961
class ExtACBuilderCoupling;
 
42962
class ExtACSyntaxCoupling;
 
42963
class ExtACTree;
 
42964
class ExtACKeywords;
 
42965
class ExtGnu;
 
42966
class PragmaOnceUnitState;
 
42967
class PragmaOnce;
 
42968
class CMatchSyntax;
 
42969
namespace Puma {
 
42970
 
 
42971
#line 3467 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42972
class CT_LabelStmt : public CT_Statement {
 
42973
#line 42974 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
42974
  friend class ::CCExprResolve;
 
42975
  friend class ::CExprResolve;
 
42976
  friend class ::WinIfExists;
 
42977
  friend class ::WinImportHandler;
 
42978
  friend class ::WinMacros;
 
42979
  friend class ::WinAsm;
 
42980
  friend class ::WinDeclSpecs;
 
42981
  friend class ::WinMemberExplSpec;
 
42982
  friend class ::WinTypeKeywords;
 
42983
  friend class ::WinFriend;
 
42984
  friend class ::ExtAC;
 
42985
  friend class ::ExtACBuilderCoupling;
 
42986
  friend class ::ExtACSyntaxCoupling;
 
42987
  friend class ::ExtACTree;
 
42988
  friend class ::ExtACKeywords;
 
42989
  friend class ::ExtGnu;
 
42990
  friend class ::PragmaOnceUnitState;
 
42991
  friend class ::PragmaOnce;
 
42992
  friend class ::CMatchSyntax;
 
42993
 
 
42994
#line 3467 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
42995
 
 
42996
  CTree *sons[3]; // id, colon, stmt
 
42997
 
 
42998
public:
 
42999
  /** Constructor.
 
43000
   *  \param id The name of the label.
 
43001
   *  \param c The colon behind the label.
 
43002
   *  \param stmt The statement following the label. */
 
43003
  CT_LabelStmt (CTree *id, CTree *c, CTree *stmt) {
 
43004
    AddSon (sons[0], id); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
43005
  }
 
43006
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43007
  static const char *NodeId ();
 
43008
  /** Get the name of the node. Can be compared with NodeId(). */
 
43009
  const char *NodeName () const { return NodeId (); }
 
43010
  /** Get the number of sons. */
 
43011
  int Sons () const { return 3; }
 
43012
  /** Get the n-th son.
 
43013
   *  \param n The index of the son.
 
43014
   *  \return The n-th son or NULL. */
 
43015
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
43016
  /** Get the statement. */
 
43017
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
43018
  /** Get the name of the label. */
 
43019
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[0]; }
 
43020
  /** Replace a son.
 
43021
   *  \param old_son The son to replace.
 
43022
   *  \param new_son The new son. */
 
43023
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43024
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
43025
  }
 
43026
public:
 
43027
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
43028
  const char *__attr_name (unsigned i) const {
 
43029
    static const char *names[] = { "sons" }; return names[i];
 
43030
  }
 
43031
  const void *__attr (unsigned __i) const {
 
43032
    switch (__i) { case 0: return &sons; default: return 0; }
 
43033
  }
 
43034
#line 3498 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43035
};
 
43036
 
 
43037
/** \class CT_DefaultStmt CTree.h Puma/CTree.h
 
43038
 *  Tree node representing a default statement of a switch statement.
 
43039
 *  Example: \code default: break; \endcode */
 
43040
 
 
43041
#line 43042 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43042
} // closed Puma
 
43043
class CCExprResolve;
 
43044
class CExprResolve;
 
43045
class WinIfExists;
 
43046
class WinImportHandler;
 
43047
class WinMacros;
 
43048
class WinAsm;
 
43049
class WinDeclSpecs;
 
43050
class WinMemberExplSpec;
 
43051
class WinTypeKeywords;
 
43052
class WinFriend;
 
43053
class ExtAC;
 
43054
class ExtACBuilderCoupling;
 
43055
class ExtACSyntaxCoupling;
 
43056
class ExtACTree;
 
43057
class ExtACKeywords;
 
43058
class ExtGnu;
 
43059
class PragmaOnceUnitState;
 
43060
class PragmaOnce;
 
43061
class CMatchSyntax;
 
43062
namespace Puma {
 
43063
 
 
43064
#line 3503 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43065
class CT_DefaultStmt : public CT_Statement {
 
43066
#line 43067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43067
  friend class ::CCExprResolve;
 
43068
  friend class ::CExprResolve;
 
43069
  friend class ::WinIfExists;
 
43070
  friend class ::WinImportHandler;
 
43071
  friend class ::WinMacros;
 
43072
  friend class ::WinAsm;
 
43073
  friend class ::WinDeclSpecs;
 
43074
  friend class ::WinMemberExplSpec;
 
43075
  friend class ::WinTypeKeywords;
 
43076
  friend class ::WinFriend;
 
43077
  friend class ::ExtAC;
 
43078
  friend class ::ExtACBuilderCoupling;
 
43079
  friend class ::ExtACSyntaxCoupling;
 
43080
  friend class ::ExtACTree;
 
43081
  friend class ::ExtACKeywords;
 
43082
  friend class ::ExtGnu;
 
43083
  friend class ::PragmaOnceUnitState;
 
43084
  friend class ::PragmaOnce;
 
43085
  friend class ::CMatchSyntax;
 
43086
 
 
43087
#line 3503 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43088
 
 
43089
  CTree *sons[3]; // keyword, colon, stmt
 
43090
 
 
43091
public:
 
43092
  /** Constructor.
 
43093
   *  \param kw The keyword 'default'.
 
43094
   *  \param c The colon behind the keyword.
 
43095
   *  \param stmt The statement of the default case. */
 
43096
  CT_DefaultStmt (CTree *kw, CTree *c, CTree *stmt) {
 
43097
    AddSon (sons[0], kw); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
43098
  }
 
43099
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43100
  static const char *NodeId ();
 
43101
  /** Get the name of the node. Can be compared with NodeId(). */
 
43102
  const char *NodeName () const { return NodeId (); }
 
43103
  /** Get the number of sons. */
 
43104
  int Sons () const { return 3; }
 
43105
  /** Get the n-th son.
 
43106
   *  \param n The index of the son.
 
43107
   *  \return The n-th son or NULL. */
 
43108
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
43109
  /** Get the statement. */
 
43110
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
43111
  /** Replace a son.
 
43112
   *  \param old_son The son to replace.
 
43113
   *  \param new_son The new son. */
 
43114
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43115
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
43116
  }
 
43117
public:
 
43118
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
43119
  const char *__attr_name (unsigned i) const {
 
43120
    static const char *names[] = { "sons" }; return names[i];
 
43121
  }
 
43122
  const void *__attr (unsigned __i) const {
 
43123
    switch (__i) { case 0: return &sons; default: return 0; }
 
43124
  }
 
43125
#line 3532 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43126
};
 
43127
 
 
43128
/** \class CT_TryStmt CTree.h Puma/CTree.h
 
43129
 *  Tree node representing a try-catch statement.
 
43130
 *  Example: \code try { f(); } catch (...) {} \endcode */
 
43131
 
 
43132
#line 43133 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43133
} // closed Puma
 
43134
class CCExprResolve;
 
43135
class CExprResolve;
 
43136
class WinIfExists;
 
43137
class WinImportHandler;
 
43138
class WinMacros;
 
43139
class WinAsm;
 
43140
class WinDeclSpecs;
 
43141
class WinMemberExplSpec;
 
43142
class WinTypeKeywords;
 
43143
class WinFriend;
 
43144
class ExtAC;
 
43145
class ExtACBuilderCoupling;
 
43146
class ExtACSyntaxCoupling;
 
43147
class ExtACTree;
 
43148
class ExtACKeywords;
 
43149
class ExtGnu;
 
43150
class PragmaOnceUnitState;
 
43151
class PragmaOnce;
 
43152
class CMatchSyntax;
 
43153
namespace Puma {
 
43154
 
 
43155
#line 3537 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43156
class CT_TryStmt : public CT_Statement {
 
43157
#line 43158 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43158
  friend class ::CCExprResolve;
 
43159
  friend class ::CExprResolve;
 
43160
  friend class ::WinIfExists;
 
43161
  friend class ::WinImportHandler;
 
43162
  friend class ::WinMacros;
 
43163
  friend class ::WinAsm;
 
43164
  friend class ::WinDeclSpecs;
 
43165
  friend class ::WinMemberExplSpec;
 
43166
  friend class ::WinTypeKeywords;
 
43167
  friend class ::WinFriend;
 
43168
  friend class ::ExtAC;
 
43169
  friend class ::ExtACBuilderCoupling;
 
43170
  friend class ::ExtACSyntaxCoupling;
 
43171
  friend class ::ExtACTree;
 
43172
  friend class ::ExtACKeywords;
 
43173
  friend class ::ExtGnu;
 
43174
  friend class ::PragmaOnceUnitState;
 
43175
  friend class ::PragmaOnce;
 
43176
  friend class ::CMatchSyntax;
 
43177
 
 
43178
#line 3537 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43179
 
 
43180
  CTree *sons[3]; // try, stmt, handlers
 
43181
 
 
43182
public:
 
43183
  /** Constructor.
 
43184
   *  \param t The keyword 'try'.
 
43185
   *  \param s The statement enclosed in the try-catch block.
 
43186
   *  \param h The exception handler sequence. */
 
43187
  CT_TryStmt (CTree *t, CTree *s, CTree *h) {
 
43188
    AddSon (sons[0], t); AddSon (sons[1], s); AddSon (sons[2], h); 
 
43189
  }
 
43190
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43191
  static const char *NodeId ();
 
43192
  /** Get the name of the node. Can be compared with NodeId(). */
 
43193
  const char *NodeName () const { return NodeId (); }
 
43194
  /** Get the number of sons. */
 
43195
  int Sons () const { return 3; }
 
43196
  /** Get the n-th son.
 
43197
   *  \param n The index of the son.
 
43198
   *  \return The n-th son or NULL. */
 
43199
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
43200
  /** Get the enclosed statement. */
 
43201
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
43202
  /** Get the exception handler sequence. */
 
43203
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[2]; }
 
43204
  /** Replace a son.
 
43205
   *  \param old_son The son to replace.
 
43206
   *  \param new_son The new son. */
 
43207
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43208
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
43209
  }
 
43210
public:
 
43211
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
43212
  const char *__attr_name (unsigned i) const {
 
43213
    static const char *names[] = { "sons" }; return names[i];
 
43214
  }
 
43215
  const void *__attr (unsigned __i) const {
 
43216
    switch (__i) { case 0: return &sons; default: return 0; }
 
43217
  }
 
43218
#line 3568 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43219
};
 
43220
 
 
43221
/** \class CT_CaseStmt CTree.h Puma/CTree.h
 
43222
 *  Tree node representing a case statement.
 
43223
 *  Example: \code case 42: a=42; \endcode */
 
43224
 
 
43225
#line 43226 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43226
} // closed Puma
 
43227
class CCExprResolve;
 
43228
class CExprResolve;
 
43229
class WinIfExists;
 
43230
class WinImportHandler;
 
43231
class WinMacros;
 
43232
class WinAsm;
 
43233
class WinDeclSpecs;
 
43234
class WinMemberExplSpec;
 
43235
class WinTypeKeywords;
 
43236
class WinFriend;
 
43237
class ExtAC;
 
43238
class ExtACBuilderCoupling;
 
43239
class ExtACSyntaxCoupling;
 
43240
class ExtACTree;
 
43241
class ExtACKeywords;
 
43242
class ExtGnu;
 
43243
class PragmaOnceUnitState;
 
43244
class PragmaOnce;
 
43245
class CMatchSyntax;
 
43246
namespace Puma {
 
43247
 
 
43248
#line 3573 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43249
class CT_CaseStmt : public CT_Statement {
 
43250
#line 43251 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43251
  friend class ::CCExprResolve;
 
43252
  friend class ::CExprResolve;
 
43253
  friend class ::WinIfExists;
 
43254
  friend class ::WinImportHandler;
 
43255
  friend class ::WinMacros;
 
43256
  friend class ::WinAsm;
 
43257
  friend class ::WinDeclSpecs;
 
43258
  friend class ::WinMemberExplSpec;
 
43259
  friend class ::WinTypeKeywords;
 
43260
  friend class ::WinFriend;
 
43261
  friend class ::ExtAC;
 
43262
  friend class ::ExtACBuilderCoupling;
 
43263
  friend class ::ExtACSyntaxCoupling;
 
43264
  friend class ::ExtACTree;
 
43265
  friend class ::ExtACKeywords;
 
43266
  friend class ::ExtGnu;
 
43267
  friend class ::PragmaOnceUnitState;
 
43268
  friend class ::PragmaOnce;
 
43269
  friend class ::CMatchSyntax;
 
43270
 
 
43271
#line 3573 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43272
 
 
43273
  CTree *sons[4]; // keyword, expr, colon, stmt
 
43274
 
 
43275
public:
 
43276
  /** Constructor.
 
43277
   *  \param kw The keyword 'case'.
 
43278
   *  \param expr The constant expression specifying the case value.
 
43279
   *  \param c The colon.
 
43280
   *  \param stmt The statement of the case. */
 
43281
  CT_CaseStmt (CTree *kw, CTree *expr, CTree *c, CTree *stmt) {
 
43282
    AddSon (sons[0], kw); AddSon (sons[1], expr); 
 
43283
    AddSon (sons[2], c); AddSon (sons[3], stmt); 
 
43284
  }
 
43285
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43286
  static const char *NodeId ();
 
43287
  /** Get the name of the node. Can be compared with NodeId(). */
 
43288
  const char *NodeName () const { return NodeId (); }
 
43289
  /** Get the number of sons. */
 
43290
  int Sons () const { return 4; }
 
43291
  /** Get the n-th son.
 
43292
   *  \param n The index of the son.
 
43293
   *  \return The n-th son or NULL. */
 
43294
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
43295
  /** Get the statement. */
 
43296
  CT_Statement *Statement () const { return (CT_Statement*)sons[3]; }
 
43297
  /** Get the expression specifying the case value. */
 
43298
  CTree *Expr () const { return sons[1]; }
 
43299
  /** Replace a son.
 
43300
   *  \param old_son The son to replace.
 
43301
   *  \param new_son The new son. */
 
43302
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43303
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
43304
  }
 
43305
public:
 
43306
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
43307
  const char *__attr_name (unsigned i) const {
 
43308
    static const char *names[] = { "sons" }; return names[i];
 
43309
  }
 
43310
  const void *__attr (unsigned __i) const {
 
43311
    switch (__i) { case 0: return &sons; default: return 0; }
 
43312
  }
 
43313
#line 3606 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43314
};
 
43315
 
 
43316
/** \class CT_ExprStmt CTree.h Puma/CTree.h
 
43317
 *  Tree node representing an expression statement.
 
43318
 *  Example: \code a+b; \endcode */
 
43319
 
 
43320
#line 43321 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43321
} // closed Puma
 
43322
class CCExprResolve;
 
43323
class CExprResolve;
 
43324
class WinIfExists;
 
43325
class WinImportHandler;
 
43326
class WinMacros;
 
43327
class WinAsm;
 
43328
class WinDeclSpecs;
 
43329
class WinMemberExplSpec;
 
43330
class WinTypeKeywords;
 
43331
class WinFriend;
 
43332
class ExtAC;
 
43333
class ExtACBuilderCoupling;
 
43334
class ExtACSyntaxCoupling;
 
43335
class ExtACTree;
 
43336
class ExtACKeywords;
 
43337
class ExtGnu;
 
43338
class PragmaOnceUnitState;
 
43339
class PragmaOnce;
 
43340
class CMatchSyntax;
 
43341
namespace Puma {
 
43342
 
 
43343
#line 3611 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43344
class CT_ExprStmt : public CT_Statement {
 
43345
#line 43346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43346
  friend class ::CCExprResolve;
 
43347
  friend class ::CExprResolve;
 
43348
  friend class ::WinIfExists;
 
43349
  friend class ::WinImportHandler;
 
43350
  friend class ::WinMacros;
 
43351
  friend class ::WinAsm;
 
43352
  friend class ::WinDeclSpecs;
 
43353
  friend class ::WinMemberExplSpec;
 
43354
  friend class ::WinTypeKeywords;
 
43355
  friend class ::WinFriend;
 
43356
  friend class ::ExtAC;
 
43357
  friend class ::ExtACBuilderCoupling;
 
43358
  friend class ::ExtACSyntaxCoupling;
 
43359
  friend class ::ExtACTree;
 
43360
  friend class ::ExtACKeywords;
 
43361
  friend class ::ExtGnu;
 
43362
  friend class ::PragmaOnceUnitState;
 
43363
  friend class ::PragmaOnce;
 
43364
  friend class ::CMatchSyntax;
 
43365
 
 
43366
#line 3611 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43367
 
 
43368
  CTree *sons[2]; // expr, semi_colon
 
43369
 
 
43370
public:
 
43371
  /** Constructor.
 
43372
   *  \param expr The expression.
 
43373
   *  \param sc The trailing semi-colon. */
 
43374
  CT_ExprStmt (CTree *expr, CTree *sc) { AddSon (sons[0], expr); AddSon (sons[1], sc); }
 
43375
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43376
  static const char *NodeId ();
 
43377
  /** Get the name of the node. Can be compared with NodeId(). */
 
43378
  const char *NodeName () const { return NodeId (); }
 
43379
  /** Get the number of sons. */
 
43380
  int Sons () const { return CTree::Sons (sons, 2); }
 
43381
  /** Get the n-th son.
 
43382
   *  \param n The index of the son.
 
43383
   *  \return The n-th son or NULL. */
 
43384
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
43385
  /** Get the expression. */
 
43386
  CTree *Expr () const { return sons[0]; }
 
43387
  /** Replace a son.
 
43388
   *  \param old_son The son to replace.
 
43389
   *  \param new_son The new son. */
 
43390
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43391
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
43392
  }
 
43393
public:
 
43394
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
43395
  const char *__attr_name (unsigned i) const {
 
43396
    static const char *names[] = { "sons" }; return names[i];
 
43397
  }
 
43398
  const void *__attr (unsigned __i) const {
 
43399
    switch (__i) { case 0: return &sons; default: return 0; }
 
43400
  }
 
43401
#line 3637 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43402
};
 
43403
 
 
43404
/** \class CT_DeclStmt CTree.h Puma/CTree.h
 
43405
 *  Tree node representing a declaration statement.
 
43406
 *  Example: \code int i = 0; \endcode */
 
43407
 
 
43408
#line 43409 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43409
} // closed Puma
 
43410
class CCExprResolve;
 
43411
class CExprResolve;
 
43412
class WinIfExists;
 
43413
class WinImportHandler;
 
43414
class WinMacros;
 
43415
class WinAsm;
 
43416
class WinDeclSpecs;
 
43417
class WinMemberExplSpec;
 
43418
class WinTypeKeywords;
 
43419
class WinFriend;
 
43420
class ExtAC;
 
43421
class ExtACBuilderCoupling;
 
43422
class ExtACSyntaxCoupling;
 
43423
class ExtACTree;
 
43424
class ExtACKeywords;
 
43425
class ExtGnu;
 
43426
class PragmaOnceUnitState;
 
43427
class PragmaOnce;
 
43428
class CMatchSyntax;
 
43429
namespace Puma {
 
43430
 
 
43431
#line 3642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43432
class CT_DeclStmt : public CT_Statement {
 
43433
#line 43434 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43434
  friend class ::CCExprResolve;
 
43435
  friend class ::CExprResolve;
 
43436
  friend class ::WinIfExists;
 
43437
  friend class ::WinImportHandler;
 
43438
  friend class ::WinMacros;
 
43439
  friend class ::WinAsm;
 
43440
  friend class ::WinDeclSpecs;
 
43441
  friend class ::WinMemberExplSpec;
 
43442
  friend class ::WinTypeKeywords;
 
43443
  friend class ::WinFriend;
 
43444
  friend class ::ExtAC;
 
43445
  friend class ::ExtACBuilderCoupling;
 
43446
  friend class ::ExtACSyntaxCoupling;
 
43447
  friend class ::ExtACTree;
 
43448
  friend class ::ExtACKeywords;
 
43449
  friend class ::ExtGnu;
 
43450
  friend class ::PragmaOnceUnitState;
 
43451
  friend class ::PragmaOnce;
 
43452
  friend class ::CMatchSyntax;
 
43453
 
 
43454
#line 3642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43455
 
 
43456
  CTree *_decl;
 
43457
 
 
43458
public:
 
43459
  /** Constructor.
 
43460
   *  \param decl The declaration. */
 
43461
  CT_DeclStmt (CTree *decl) { AddSon (_decl, decl); }
 
43462
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43463
  static const char *NodeId ();
 
43464
  /** Get the name of the node. Can be compared with NodeId(). */
 
43465
  const char *NodeName () const { return NodeId (); }
 
43466
  /** Get the number of sons. */
 
43467
  int Sons () const { return 1; }
 
43468
  /** Get the n-th son.
 
43469
   *  \param n The index of the son.
 
43470
   *  \return The n-th son or NULL. */
 
43471
  CTree *Son (int n) const { return n == 0 ? _decl : (CTree*)0; }
 
43472
  /** Replace a son.
 
43473
   *  \param old_son The son to replace.
 
43474
   *  \param new_son The new son. */
 
43475
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
43476
   { CTree::ReplaceSon (_decl, old_son, new_son); }
 
43477
public:
 
43478
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
43479
  const char *__attr_name (unsigned i) const {
 
43480
    static const char *names[] = { "_decl" }; return names[i];
 
43481
  }
 
43482
  const void *__attr (unsigned __i) const {
 
43483
    switch (__i) { case 0: return &_decl; default: return 0; }
 
43484
  }
 
43485
#line 3664 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43486
};
 
43487
 
 
43488
/** \class CT_SwitchStmt CTree.h Puma/CTree.h
 
43489
 *  Tree node representing a switch statement.
 
43490
 *  Example: \code switch(a) { case 0: a++; } \endcode */
 
43491
 
 
43492
#line 43493 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43493
} // closed Puma
 
43494
class CCExprResolve;
 
43495
class CExprResolve;
 
43496
class WinIfExists;
 
43497
class WinImportHandler;
 
43498
class WinMacros;
 
43499
class WinAsm;
 
43500
class WinDeclSpecs;
 
43501
class WinMemberExplSpec;
 
43502
class WinTypeKeywords;
 
43503
class WinFriend;
 
43504
class ExtAC;
 
43505
class ExtACBuilderCoupling;
 
43506
class ExtACSyntaxCoupling;
 
43507
class ExtACTree;
 
43508
class ExtACKeywords;
 
43509
class ExtGnu;
 
43510
class PragmaOnceUnitState;
 
43511
class PragmaOnce;
 
43512
class CMatchSyntax;
 
43513
namespace Puma {
 
43514
 
 
43515
#line 3669 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43516
class CT_SwitchStmt : public CT_Statement, public CSemScope {
 
43517
#line 43518 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43518
  friend class ::CCExprResolve;
 
43519
  friend class ::CExprResolve;
 
43520
  friend class ::WinIfExists;
 
43521
  friend class ::WinImportHandler;
 
43522
  friend class ::WinMacros;
 
43523
  friend class ::WinAsm;
 
43524
  friend class ::WinDeclSpecs;
 
43525
  friend class ::WinMemberExplSpec;
 
43526
  friend class ::WinTypeKeywords;
 
43527
  friend class ::WinFriend;
 
43528
  friend class ::ExtAC;
 
43529
  friend class ::ExtACBuilderCoupling;
 
43530
  friend class ::ExtACSyntaxCoupling;
 
43531
  friend class ::ExtACTree;
 
43532
  friend class ::ExtACKeywords;
 
43533
  friend class ::ExtGnu;
 
43534
  friend class ::PragmaOnceUnitState;
 
43535
  friend class ::PragmaOnce;
 
43536
  friend class ::CMatchSyntax;
 
43537
 
 
43538
#line 3669 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43539
 
 
43540
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
43541
 
 
43542
public:
 
43543
  /** Constructor.
 
43544
   *  \param kw The keyword 'switch'.
 
43545
   *  \param o Left parenthesis before the condition.
 
43546
   *  \param cond The switch-expression. 
 
43547
   *  \param c Right parenthesis behind the condition. 
 
43548
   *  \param stmt The cases of the switch-statement. */
 
43549
  CT_SwitchStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
43550
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
43551
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
43552
  }
 
43553
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43554
  static const char *NodeId ();
 
43555
  /** Get the name of the node. Can be compared with NodeId(). */
 
43556
  const char *NodeName () const { return NodeId (); }
 
43557
  /** Get the number of sons. */
 
43558
  int Sons () const { return 5; }
 
43559
  /** Get the n-th son.
 
43560
   *  \param n The index of the son.
 
43561
   *  \return The n-th son or NULL. */
 
43562
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
43563
  /** Get the cases. */
 
43564
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
43565
  /** Get the switch-expression. */
 
43566
  CTree *Condition () const { return sons[2]; }
 
43567
  /** Replace a son.
 
43568
   *  \param old_son The son to replace.
 
43569
   *  \param new_son The new son. */
 
43570
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43571
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
43572
  }
 
43573
  /** Get the scope opened by the switch-statement. */
 
43574
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
43575
public:
 
43576
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
43577
  const char *__attr_name (unsigned i) const {
 
43578
    static const char *names[] = { "sons" }; return names[i];
 
43579
  }
 
43580
  const void *__attr (unsigned __i) const {
 
43581
    switch (__i) { case 0: return &sons; default: return 0; }
 
43582
  }
 
43583
#line 3705 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43584
};
 
43585
 
 
43586
/** \class CT_IfStmt CTree.h Puma/CTree.h
 
43587
 *  Tree node representing a if-statement.
 
43588
 *  Example: \code if(a==0) a++; \endcode */
 
43589
 
 
43590
#line 43591 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43591
} // closed Puma
 
43592
class CCExprResolve;
 
43593
class CExprResolve;
 
43594
class WinIfExists;
 
43595
class WinImportHandler;
 
43596
class WinMacros;
 
43597
class WinAsm;
 
43598
class WinDeclSpecs;
 
43599
class WinMemberExplSpec;
 
43600
class WinTypeKeywords;
 
43601
class WinFriend;
 
43602
class ExtAC;
 
43603
class ExtACBuilderCoupling;
 
43604
class ExtACSyntaxCoupling;
 
43605
class ExtACTree;
 
43606
class ExtACKeywords;
 
43607
class ExtGnu;
 
43608
class PragmaOnceUnitState;
 
43609
class PragmaOnce;
 
43610
class CMatchSyntax;
 
43611
namespace Puma {
 
43612
 
 
43613
#line 3710 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43614
class CT_IfStmt : public CT_Statement, public CSemScope {
 
43615
#line 43616 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43616
  friend class ::CCExprResolve;
 
43617
  friend class ::CExprResolve;
 
43618
  friend class ::WinIfExists;
 
43619
  friend class ::WinImportHandler;
 
43620
  friend class ::WinMacros;
 
43621
  friend class ::WinAsm;
 
43622
  friend class ::WinDeclSpecs;
 
43623
  friend class ::WinMemberExplSpec;
 
43624
  friend class ::WinTypeKeywords;
 
43625
  friend class ::WinFriend;
 
43626
  friend class ::ExtAC;
 
43627
  friend class ::ExtACBuilderCoupling;
 
43628
  friend class ::ExtACSyntaxCoupling;
 
43629
  friend class ::ExtACTree;
 
43630
  friend class ::ExtACKeywords;
 
43631
  friend class ::ExtGnu;
 
43632
  friend class ::PragmaOnceUnitState;
 
43633
  friend class ::PragmaOnce;
 
43634
  friend class ::CMatchSyntax;
 
43635
 
 
43636
#line 3710 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43637
 
 
43638
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
43639
 
 
43640
public:
 
43641
  /** Constructor.
 
43642
   *  \param kw The keyword 'if'.
 
43643
   *  \param o Left parenthesis before the condition.
 
43644
   *  \param cond The condition.
 
43645
   *  \param c Right parenthesis behind the condition.
 
43646
   *  \param stmt The controlled statement. */
 
43647
  CT_IfStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
43648
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
43649
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
43650
  }
 
43651
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43652
  static const char *NodeId ();
 
43653
  /** Get the name of the node. Can be compared with NodeId(). */
 
43654
  const char *NodeName () const { return NodeId (); }
 
43655
  /** Get the number of sons. */
 
43656
  int Sons () const { return 5; }
 
43657
  /** Get the n-th son.
 
43658
   *  \param n The index of the son.
 
43659
   *  \return The n-th son or NULL. */
 
43660
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
43661
  /** Get the controlled statement. */
 
43662
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
43663
  /** Get the condition. */
 
43664
  CTree *Condition () const { return sons[2]; }
 
43665
  /** Replace a son.
 
43666
   *  \param old_son The son to replace.
 
43667
   *  \param new_son The new son. */
 
43668
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43669
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
43670
  }
 
43671
  /** Get the scope opened by the if-statement. */
 
43672
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
43673
public:
 
43674
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
43675
  const char *__attr_name (unsigned i) const {
 
43676
    static const char *names[] = { "sons" }; return names[i];
 
43677
  }
 
43678
  const void *__attr (unsigned __i) const {
 
43679
    switch (__i) { case 0: return &sons; default: return 0; }
 
43680
  }
 
43681
#line 3746 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43682
};
 
43683
 
 
43684
/** \class CT_IfElseStmt CTree.h Puma/CTree.h
 
43685
 *  Tree node representing a if-else-statement.
 
43686
 *  Example: \code if(a==0) a++; else a=0; \endcode */
 
43687
 
 
43688
#line 43689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43689
} // closed Puma
 
43690
class CCExprResolve;
 
43691
class CExprResolve;
 
43692
class WinIfExists;
 
43693
class WinImportHandler;
 
43694
class WinMacros;
 
43695
class WinAsm;
 
43696
class WinDeclSpecs;
 
43697
class WinMemberExplSpec;
 
43698
class WinTypeKeywords;
 
43699
class WinFriend;
 
43700
class ExtAC;
 
43701
class ExtACBuilderCoupling;
 
43702
class ExtACSyntaxCoupling;
 
43703
class ExtACTree;
 
43704
class ExtACKeywords;
 
43705
class ExtGnu;
 
43706
class PragmaOnceUnitState;
 
43707
class PragmaOnce;
 
43708
class CMatchSyntax;
 
43709
namespace Puma {
 
43710
 
 
43711
#line 3751 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43712
class CT_IfElseStmt : public CT_Statement, public CSemScope {
 
43713
#line 43714 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43714
  friend class ::CCExprResolve;
 
43715
  friend class ::CExprResolve;
 
43716
  friend class ::WinIfExists;
 
43717
  friend class ::WinImportHandler;
 
43718
  friend class ::WinMacros;
 
43719
  friend class ::WinAsm;
 
43720
  friend class ::WinDeclSpecs;
 
43721
  friend class ::WinMemberExplSpec;
 
43722
  friend class ::WinTypeKeywords;
 
43723
  friend class ::WinFriend;
 
43724
  friend class ::ExtAC;
 
43725
  friend class ::ExtACBuilderCoupling;
 
43726
  friend class ::ExtACSyntaxCoupling;
 
43727
  friend class ::ExtACTree;
 
43728
  friend class ::ExtACKeywords;
 
43729
  friend class ::ExtGnu;
 
43730
  friend class ::PragmaOnceUnitState;
 
43731
  friend class ::PragmaOnce;
 
43732
  friend class ::CMatchSyntax;
 
43733
 
 
43734
#line 3751 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43735
 
 
43736
  CTree *sons[7]; // if, open, cond, close, if_stmt, else, else_stmt
 
43737
 
 
43738
public:
 
43739
  /** Constructor.
 
43740
   *  \param i The keyword 'if'.
 
43741
   *  \param o Left parenthesis before the condition.
 
43742
   *  \param cond The condition.
 
43743
   *  \param c Right parenthesis behind the condition.
 
43744
   *  \param is The statement controlled by the if-branch.
 
43745
   *  \param e The keyword 'else'.
 
43746
   *  \param es The statement controlled by the else-branch. */
 
43747
  CT_IfElseStmt (CTree *i, CTree *o, CTree *cond, CTree *c, 
 
43748
                 CTree *is, CTree *e, CTree *es) {
 
43749
    AddSon (sons[0], i); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
43750
    AddSon (sons[3], c); AddSon (sons[4], is); AddSon (sons[5], e); 
 
43751
    AddSon (sons[6], es); 
 
43752
  }
 
43753
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43754
  static const char *NodeId ();
 
43755
  /** Get the name of the node. Can be compared with NodeId(). */
 
43756
  const char *NodeName () const { return NodeId (); }
 
43757
  /** Get the number of sons. */
 
43758
  int Sons () const { return 7; }
 
43759
  /** Get the n-th son.
 
43760
   *  \param n The index of the son.
 
43761
   *  \return The n-th son or NULL. */
 
43762
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
43763
  /** Get the condition. */
 
43764
  CTree *Condition () const { return sons[2]; }
 
43765
  /** Get the statement controlled by the if-branch. */
 
43766
  CT_Statement *IfPart () const { return (CT_Statement*)sons[4]; }
 
43767
  /** Get the statement controlled by the else-branch. */
 
43768
  CT_Statement *ElsePart () const { return (CT_Statement*)sons[6]; }
 
43769
  /** Replace a son.
 
43770
   *  \param old_son The son to replace.
 
43771
   *  \param new_son The new son. */
 
43772
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43773
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
43774
  }
 
43775
  /** Get the scope opened by the if-statement. */
 
43776
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
43777
public:
 
43778
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
43779
  const char *__attr_name (unsigned i) const {
 
43780
    static const char *names[] = { "sons" }; return names[i];
 
43781
  }
 
43782
  const void *__attr (unsigned __i) const {
 
43783
    switch (__i) { case 0: return &sons; default: return 0; }
 
43784
  }
 
43785
#line 3793 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43786
};
 
43787
 
 
43788
/** \class CT_BreakStmt CTree.h Puma/CTree.h
 
43789
 *  Tree node representing a break-statement.
 
43790
 *  Example: \code break; \endcode */
 
43791
 
 
43792
#line 43793 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43793
} // closed Puma
 
43794
class CCExprResolve;
 
43795
class CExprResolve;
 
43796
class WinIfExists;
 
43797
class WinImportHandler;
 
43798
class WinMacros;
 
43799
class WinAsm;
 
43800
class WinDeclSpecs;
 
43801
class WinMemberExplSpec;
 
43802
class WinTypeKeywords;
 
43803
class WinFriend;
 
43804
class ExtAC;
 
43805
class ExtACBuilderCoupling;
 
43806
class ExtACSyntaxCoupling;
 
43807
class ExtACTree;
 
43808
class ExtACKeywords;
 
43809
class ExtGnu;
 
43810
class PragmaOnceUnitState;
 
43811
class PragmaOnce;
 
43812
class CMatchSyntax;
 
43813
namespace Puma {
 
43814
 
 
43815
#line 3798 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43816
class CT_BreakStmt : public CT_Statement {
 
43817
#line 43818 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43818
  friend class ::CCExprResolve;
 
43819
  friend class ::CExprResolve;
 
43820
  friend class ::WinIfExists;
 
43821
  friend class ::WinImportHandler;
 
43822
  friend class ::WinMacros;
 
43823
  friend class ::WinAsm;
 
43824
  friend class ::WinDeclSpecs;
 
43825
  friend class ::WinMemberExplSpec;
 
43826
  friend class ::WinTypeKeywords;
 
43827
  friend class ::WinFriend;
 
43828
  friend class ::ExtAC;
 
43829
  friend class ::ExtACBuilderCoupling;
 
43830
  friend class ::ExtACSyntaxCoupling;
 
43831
  friend class ::ExtACTree;
 
43832
  friend class ::ExtACKeywords;
 
43833
  friend class ::ExtGnu;
 
43834
  friend class ::PragmaOnceUnitState;
 
43835
  friend class ::PragmaOnce;
 
43836
  friend class ::CMatchSyntax;
 
43837
 
 
43838
#line 3798 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43839
 
 
43840
  CTree *sons[2]; // key, semi_colon
 
43841
 
 
43842
public:
 
43843
  /** Constructor.
 
43844
   *  \param key The keyword 'break'.
 
43845
   *  \param sc The trailing semi-colon. */
 
43846
  CT_BreakStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
43847
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43848
  static const char *NodeId ();
 
43849
  /** Get the name of the node. Can be compared with NodeId(). */
 
43850
  const char *NodeName () const { return NodeId (); }
 
43851
  /** Get the number of sons. */
 
43852
  int Sons () const { return 2; }
 
43853
  /** Get the n-th son.
 
43854
   *  \param n The index of the son.
 
43855
   *  \return The n-th son or NULL. */
 
43856
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
43857
  /** Replace a son.
 
43858
   *  \param old_son The son to replace.
 
43859
   *  \param new_son The new son. */
 
43860
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43861
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
43862
  }
 
43863
public:
 
43864
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
43865
  const char *__attr_name (unsigned i) const {
 
43866
    static const char *names[] = { "sons" }; return names[i];
 
43867
  }
 
43868
  const void *__attr (unsigned __i) const {
 
43869
    switch (__i) { case 0: return &sons; default: return 0; }
 
43870
  }
 
43871
#line 3822 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43872
};
 
43873
 
 
43874
/** \class CT_ContinueStmt CTree.h Puma/CTree.h
 
43875
 *  Tree node representing a continue-statement.
 
43876
 *  Example: \code continue; \endcode */
 
43877
 
 
43878
#line 43879 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43879
} // closed Puma
 
43880
class CCExprResolve;
 
43881
class CExprResolve;
 
43882
class WinIfExists;
 
43883
class WinImportHandler;
 
43884
class WinMacros;
 
43885
class WinAsm;
 
43886
class WinDeclSpecs;
 
43887
class WinMemberExplSpec;
 
43888
class WinTypeKeywords;
 
43889
class WinFriend;
 
43890
class ExtAC;
 
43891
class ExtACBuilderCoupling;
 
43892
class ExtACSyntaxCoupling;
 
43893
class ExtACTree;
 
43894
class ExtACKeywords;
 
43895
class ExtGnu;
 
43896
class PragmaOnceUnitState;
 
43897
class PragmaOnce;
 
43898
class CMatchSyntax;
 
43899
namespace Puma {
 
43900
 
 
43901
#line 3827 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43902
class CT_ContinueStmt : public CT_Statement {
 
43903
#line 43904 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43904
  friend class ::CCExprResolve;
 
43905
  friend class ::CExprResolve;
 
43906
  friend class ::WinIfExists;
 
43907
  friend class ::WinImportHandler;
 
43908
  friend class ::WinMacros;
 
43909
  friend class ::WinAsm;
 
43910
  friend class ::WinDeclSpecs;
 
43911
  friend class ::WinMemberExplSpec;
 
43912
  friend class ::WinTypeKeywords;
 
43913
  friend class ::WinFriend;
 
43914
  friend class ::ExtAC;
 
43915
  friend class ::ExtACBuilderCoupling;
 
43916
  friend class ::ExtACSyntaxCoupling;
 
43917
  friend class ::ExtACTree;
 
43918
  friend class ::ExtACKeywords;
 
43919
  friend class ::ExtGnu;
 
43920
  friend class ::PragmaOnceUnitState;
 
43921
  friend class ::PragmaOnce;
 
43922
  friend class ::CMatchSyntax;
 
43923
 
 
43924
#line 3827 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43925
 
 
43926
  CTree *sons[2]; // key, semi_colon
 
43927
 
 
43928
public:
 
43929
  /** Constructor.
 
43930
   *  \param key The keyword 'continue'.
 
43931
   *  \param sc The trailing semi-colon. */
 
43932
  CT_ContinueStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
43933
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
43934
  static const char *NodeId ();
 
43935
  /** Get the name of the node. Can be compared with NodeId(). */
 
43936
  const char *NodeName () const { return NodeId (); }
 
43937
  /** Get the number of sons. */
 
43938
  int Sons () const { return 2; }
 
43939
  /** Get the n-th son.
 
43940
   *  \param n The index of the son.
 
43941
   *  \return The n-th son or NULL. */
 
43942
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
43943
  /** Replace a son.
 
43944
   *  \param old_son The son to replace.
 
43945
   *  \param new_son The new son. */
 
43946
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
43947
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
43948
  }
 
43949
public:
 
43950
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
43951
  const char *__attr_name (unsigned i) const {
 
43952
    static const char *names[] = { "sons" }; return names[i];
 
43953
  }
 
43954
  const void *__attr (unsigned __i) const {
 
43955
    switch (__i) { case 0: return &sons; default: return 0; }
 
43956
  }
 
43957
#line 3851 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43958
};
 
43959
 
 
43960
/** \class CT_GotoStmt CTree.h Puma/CTree.h
 
43961
 *  Tree node representing a goto-stmt.
 
43962
 *  Example: \code goto incr_a; \endcode */
 
43963
 
 
43964
#line 43965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43965
} // closed Puma
 
43966
class CCExprResolve;
 
43967
class CExprResolve;
 
43968
class WinIfExists;
 
43969
class WinImportHandler;
 
43970
class WinMacros;
 
43971
class WinAsm;
 
43972
class WinDeclSpecs;
 
43973
class WinMemberExplSpec;
 
43974
class WinTypeKeywords;
 
43975
class WinFriend;
 
43976
class ExtAC;
 
43977
class ExtACBuilderCoupling;
 
43978
class ExtACSyntaxCoupling;
 
43979
class ExtACTree;
 
43980
class ExtACKeywords;
 
43981
class ExtGnu;
 
43982
class PragmaOnceUnitState;
 
43983
class PragmaOnce;
 
43984
class CMatchSyntax;
 
43985
namespace Puma {
 
43986
 
 
43987
#line 3856 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
43988
class CT_GotoStmt : public CT_Statement {
 
43989
#line 43990 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
43990
  friend class ::CCExprResolve;
 
43991
  friend class ::CExprResolve;
 
43992
  friend class ::WinIfExists;
 
43993
  friend class ::WinImportHandler;
 
43994
  friend class ::WinMacros;
 
43995
  friend class ::WinAsm;
 
43996
  friend class ::WinDeclSpecs;
 
43997
  friend class ::WinMemberExplSpec;
 
43998
  friend class ::WinTypeKeywords;
 
43999
  friend class ::WinFriend;
 
44000
  friend class ::ExtAC;
 
44001
  friend class ::ExtACBuilderCoupling;
 
44002
  friend class ::ExtACSyntaxCoupling;
 
44003
  friend class ::ExtACTree;
 
44004
  friend class ::ExtACKeywords;
 
44005
  friend class ::ExtGnu;
 
44006
  friend class ::PragmaOnceUnitState;
 
44007
  friend class ::PragmaOnce;
 
44008
  friend class ::CMatchSyntax;
 
44009
 
 
44010
#line 3856 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44011
 
 
44012
  CTree *sons[3]; // key, label, semi_colon
 
44013
 
 
44014
public:
 
44015
  /** Constructor.
 
44016
   *  \param key The keyword 'goto'.
 
44017
   *  \param l The name of the jump label.
 
44018
   *  \param sc The trailing semi-colon. */
 
44019
  CT_GotoStmt (CTree *key, CTree *l, CTree *sc) {
 
44020
    AddSon (sons[0], key); AddSon (sons[1], l); AddSon (sons[2], sc); 
 
44021
  }
 
44022
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44023
  static const char *NodeId ();
 
44024
  /** Get the name of the node. Can be compared with NodeId(). */
 
44025
  const char *NodeName () const { return NodeId (); }
 
44026
  /** Get the number of sons. */
 
44027
  int Sons () const { return 3; }
 
44028
  /** Get the n-th son.
 
44029
   *  \param n The index of the son.
 
44030
   *  \return The n-th son or NULL. */
 
44031
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
44032
  /** Get the name of the jump label. */
 
44033
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[1]; }
 
44034
  /** Replace a son.
 
44035
   *  \param old_son The son to replace.
 
44036
   *  \param new_son The new son. */
 
44037
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
44038
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
44039
  }
 
44040
public:
 
44041
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
44042
  const char *__attr_name (unsigned i) const {
 
44043
    static const char *names[] = { "sons" }; return names[i];
 
44044
  }
 
44045
  const void *__attr (unsigned __i) const {
 
44046
    switch (__i) { case 0: return &sons; default: return 0; }
 
44047
  }
 
44048
#line 3885 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44049
};
 
44050
 
 
44051
/** \class CT_ReturnStmt CTree.h Puma/CTree.h
 
44052
 *  Tree node representing a return-statement.
 
44053
 *  Example: \code return 1; \endcode */
 
44054
 
 
44055
#line 44056 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44056
} // closed Puma
 
44057
class CCExprResolve;
 
44058
class CExprResolve;
 
44059
class WinIfExists;
 
44060
class WinImportHandler;
 
44061
class WinMacros;
 
44062
class WinAsm;
 
44063
class WinDeclSpecs;
 
44064
class WinMemberExplSpec;
 
44065
class WinTypeKeywords;
 
44066
class WinFriend;
 
44067
class ExtAC;
 
44068
class ExtACBuilderCoupling;
 
44069
class ExtACSyntaxCoupling;
 
44070
class ExtACTree;
 
44071
class ExtACKeywords;
 
44072
class ExtGnu;
 
44073
class PragmaOnceUnitState;
 
44074
class PragmaOnce;
 
44075
class CMatchSyntax;
 
44076
namespace Puma {
 
44077
 
 
44078
#line 3890 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44079
class CT_ReturnStmt : public CT_Statement {
 
44080
#line 44081 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44081
  friend class ::CCExprResolve;
 
44082
  friend class ::CExprResolve;
 
44083
  friend class ::WinIfExists;
 
44084
  friend class ::WinImportHandler;
 
44085
  friend class ::WinMacros;
 
44086
  friend class ::WinAsm;
 
44087
  friend class ::WinDeclSpecs;
 
44088
  friend class ::WinMemberExplSpec;
 
44089
  friend class ::WinTypeKeywords;
 
44090
  friend class ::WinFriend;
 
44091
  friend class ::ExtAC;
 
44092
  friend class ::ExtACBuilderCoupling;
 
44093
  friend class ::ExtACSyntaxCoupling;
 
44094
  friend class ::ExtACTree;
 
44095
  friend class ::ExtACKeywords;
 
44096
  friend class ::ExtGnu;
 
44097
  friend class ::PragmaOnceUnitState;
 
44098
  friend class ::PragmaOnce;
 
44099
  friend class ::CMatchSyntax;
 
44100
 
 
44101
#line 3890 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44102
 
 
44103
  CTree *sons[3]; // key, expr, semi_colon
 
44104
 
 
44105
public:
 
44106
  /** Constructor.
 
44107
   *  \param key The keyword 'return'.
 
44108
   *  \param e The expression specifying the return value. 
 
44109
   *  \param sc The trailing semi-colon. */
 
44110
  CT_ReturnStmt (CTree *key, CTree *e, CTree *sc) {
 
44111
    AddSon (sons[0], key); AddSon (sons[1], e); AddSon (sons[2], sc); 
 
44112
  }
 
44113
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44114
  static const char *NodeId ();
 
44115
  /** Get the name of the node. Can be compared with NodeId(). */
 
44116
  const char *NodeName () const { return NodeId (); }
 
44117
  /** Get the number of sons. */
 
44118
  int Sons () const { return CTree::Sons (sons, 3); }
 
44119
  /** Get the n-th son.
 
44120
   *  \param n The index of the son.
 
44121
   *  \return The n-th son or NULL. */
 
44122
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
44123
  /** Get the expression specifying the return value. */
 
44124
  CTree *Expr () const { return sons[1]; }
 
44125
  /** Replace a son.
 
44126
   *  \param old_son The son to replace.
 
44127
   *  \param new_son The new son. */
 
44128
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
44129
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
44130
  }
 
44131
public:
 
44132
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
44133
  const char *__attr_name (unsigned i) const {
 
44134
    static const char *names[] = { "sons" }; return names[i];
 
44135
  }
 
44136
  const void *__attr (unsigned __i) const {
 
44137
    switch (__i) { case 0: return &sons; default: return 0; }
 
44138
  }
 
44139
#line 3919 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44140
};
 
44141
 
 
44142
/** \class CT_WhileStmt CTree.h Puma/CTree.h
 
44143
 *  Tree node representing a while-statement.
 
44144
 *  Example: \code while(a>0) a--; \endcode */
 
44145
 
 
44146
#line 44147 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44147
} // closed Puma
 
44148
class CCExprResolve;
 
44149
class CExprResolve;
 
44150
class WinIfExists;
 
44151
class WinImportHandler;
 
44152
class WinMacros;
 
44153
class WinAsm;
 
44154
class WinDeclSpecs;
 
44155
class WinMemberExplSpec;
 
44156
class WinTypeKeywords;
 
44157
class WinFriend;
 
44158
class ExtAC;
 
44159
class ExtACBuilderCoupling;
 
44160
class ExtACSyntaxCoupling;
 
44161
class ExtACTree;
 
44162
class ExtACKeywords;
 
44163
class ExtGnu;
 
44164
class PragmaOnceUnitState;
 
44165
class PragmaOnce;
 
44166
class CMatchSyntax;
 
44167
namespace Puma {
 
44168
 
 
44169
#line 3924 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44170
class CT_WhileStmt : public CT_Statement, public CSemScope {
 
44171
#line 44172 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44172
  friend class ::CCExprResolve;
 
44173
  friend class ::CExprResolve;
 
44174
  friend class ::WinIfExists;
 
44175
  friend class ::WinImportHandler;
 
44176
  friend class ::WinMacros;
 
44177
  friend class ::WinAsm;
 
44178
  friend class ::WinDeclSpecs;
 
44179
  friend class ::WinMemberExplSpec;
 
44180
  friend class ::WinTypeKeywords;
 
44181
  friend class ::WinFriend;
 
44182
  friend class ::ExtAC;
 
44183
  friend class ::ExtACBuilderCoupling;
 
44184
  friend class ::ExtACSyntaxCoupling;
 
44185
  friend class ::ExtACTree;
 
44186
  friend class ::ExtACKeywords;
 
44187
  friend class ::ExtGnu;
 
44188
  friend class ::PragmaOnceUnitState;
 
44189
  friend class ::PragmaOnce;
 
44190
  friend class ::CMatchSyntax;
 
44191
 
 
44192
#line 3924 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44193
 
 
44194
  CTree *sons[5]; // key, open, cond, close, stmt
 
44195
 
 
44196
public:
 
44197
  /** Constructor.
 
44198
   *  \param kw The keyword 'while'.
 
44199
   *  \param o Left parenthesis before the condition.
 
44200
   *  \param cond The loop condition. 
 
44201
   *  \param c Right parenthesis behind the condition. 
 
44202
   *  \param stmt The controlled statement. */
 
44203
  CT_WhileStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
44204
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
44205
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
44206
  }
 
44207
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44208
  static const char *NodeId ();
 
44209
  /** Get the name of the node. Can be compared with NodeId(). */
 
44210
  const char *NodeName () const { return NodeId (); }
 
44211
  /** Get the number of sons. */
 
44212
  int Sons () const { return 5; }
 
44213
  /** Get the n-th son.
 
44214
   *  \param n The index of the son.
 
44215
   *  \return The n-th son or NULL. */
 
44216
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
44217
  /** Get the controlled statement. */
 
44218
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
44219
  /** Get the loop condition. */
 
44220
  CTree *Condition () const { return sons[2]; }
 
44221
  /** Replace a son.
 
44222
   *  \param old_son The son to replace.
 
44223
   *  \param new_son The new son. */
 
44224
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
44225
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
44226
  }
 
44227
  /** Get the scope opened by the while-statement. */
 
44228
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
44229
public:
 
44230
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
44231
  const char *__attr_name (unsigned i) const {
 
44232
    static const char *names[] = { "sons" }; return names[i];
 
44233
  }
 
44234
  const void *__attr (unsigned __i) const {
 
44235
    switch (__i) { case 0: return &sons; default: return 0; }
 
44236
  }
 
44237
#line 3960 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44238
};
 
44239
 
 
44240
/** \class CT_DoStmt CTree.h Puma/CTree.h
 
44241
 *  Tree node representing a do-while-statement.
 
44242
 *  Example: \code do a--; while(a>0); \endcode */
 
44243
 
 
44244
#line 44245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44245
} // closed Puma
 
44246
class CCExprResolve;
 
44247
class CExprResolve;
 
44248
class WinIfExists;
 
44249
class WinImportHandler;
 
44250
class WinMacros;
 
44251
class WinAsm;
 
44252
class WinDeclSpecs;
 
44253
class WinMemberExplSpec;
 
44254
class WinTypeKeywords;
 
44255
class WinFriend;
 
44256
class ExtAC;
 
44257
class ExtACBuilderCoupling;
 
44258
class ExtACSyntaxCoupling;
 
44259
class ExtACTree;
 
44260
class ExtACKeywords;
 
44261
class ExtGnu;
 
44262
class PragmaOnceUnitState;
 
44263
class PragmaOnce;
 
44264
class CMatchSyntax;
 
44265
namespace Puma {
 
44266
 
 
44267
#line 3965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44268
class CT_DoStmt : public CT_Statement {
 
44269
#line 44270 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44270
  friend class ::CCExprResolve;
 
44271
  friend class ::CExprResolve;
 
44272
  friend class ::WinIfExists;
 
44273
  friend class ::WinImportHandler;
 
44274
  friend class ::WinMacros;
 
44275
  friend class ::WinAsm;
 
44276
  friend class ::WinDeclSpecs;
 
44277
  friend class ::WinMemberExplSpec;
 
44278
  friend class ::WinTypeKeywords;
 
44279
  friend class ::WinFriend;
 
44280
  friend class ::ExtAC;
 
44281
  friend class ::ExtACBuilderCoupling;
 
44282
  friend class ::ExtACSyntaxCoupling;
 
44283
  friend class ::ExtACTree;
 
44284
  friend class ::ExtACKeywords;
 
44285
  friend class ::ExtGnu;
 
44286
  friend class ::PragmaOnceUnitState;
 
44287
  friend class ::PragmaOnce;
 
44288
  friend class ::CMatchSyntax;
 
44289
 
 
44290
#line 3965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44291
 
 
44292
  CTree *sons[7]; // do, stmt, while, open, expr, close, semi_colon
 
44293
 
 
44294
public:
 
44295
  /** Constructor.
 
44296
   *  \param d The keyword 'do'.
 
44297
   *  \param stmt The controlled statement.
 
44298
   *  \param w The keyword 'while'.
 
44299
   *  \param o Left parenthesis before the loop condition.
 
44300
   *  \param e The loop condition.
 
44301
   *  \param c Right parenthesis behind the loop condition.
 
44302
   *  \param sc The trailing semi-colon. */
 
44303
  CT_DoStmt (CTree *d, CTree *stmt, CTree *w, CTree *o, CTree *e, 
 
44304
             CTree *c, CTree *sc) {
 
44305
    AddSon (sons[0], d); AddSon (sons[1], stmt); AddSon (sons[2], w); 
 
44306
    AddSon (sons[3], o); AddSon (sons[4], e); AddSon (sons[5], c); 
 
44307
    AddSon (sons[6], sc); 
 
44308
  }
 
44309
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44310
  static const char *NodeId ();
 
44311
  /** Get the name of the node. Can be compared with NodeId(). */
 
44312
  const char *NodeName () const { return NodeId (); }
 
44313
  /** Get the number of sons. */
 
44314
  int Sons () const { return 7; }
 
44315
  /** Get the n-th son.
 
44316
   *  \param n The index of the son.
 
44317
   *  \return The n-th son or NULL. */
 
44318
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
44319
  /** Get the controlled statement. */
 
44320
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
44321
  /** Get the loop condition. */
 
44322
  CTree *Expr () const { return sons[4]; }
 
44323
  /** Replace a son.
 
44324
   *  \param old_son The son to replace.
 
44325
   *  \param new_son The new son. */
 
44326
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
44327
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
44328
  }
 
44329
public:
 
44330
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
44331
  const char *__attr_name (unsigned i) const {
 
44332
    static const char *names[] = { "sons" }; return names[i];
 
44333
  }
 
44334
  const void *__attr (unsigned __i) const {
 
44335
    switch (__i) { case 0: return &sons; default: return 0; }
 
44336
  }
 
44337
#line 4003 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44338
};
 
44339
 
 
44340
/** \class CT_ForStmt CTree.h Puma/CTree.h
 
44341
 *  Tree node representing a for-statement.
 
44342
 *  Example: \code for(int i=0; i<10; i++) f(i); \endcode */
 
44343
 
 
44344
#line 44345 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44345
} // closed Puma
 
44346
class CCExprResolve;
 
44347
class CExprResolve;
 
44348
class WinIfExists;
 
44349
class WinImportHandler;
 
44350
class WinMacros;
 
44351
class WinAsm;
 
44352
class WinDeclSpecs;
 
44353
class WinMemberExplSpec;
 
44354
class WinTypeKeywords;
 
44355
class WinFriend;
 
44356
class ExtAC;
 
44357
class ExtACBuilderCoupling;
 
44358
class ExtACSyntaxCoupling;
 
44359
class ExtACTree;
 
44360
class ExtACKeywords;
 
44361
class ExtGnu;
 
44362
class PragmaOnceUnitState;
 
44363
class PragmaOnce;
 
44364
class CMatchSyntax;
 
44365
namespace Puma {
 
44366
 
 
44367
#line 4008 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44368
class CT_ForStmt : public CT_Statement, public CSemScope {
 
44369
#line 44370 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44370
  friend class ::CCExprResolve;
 
44371
  friend class ::CExprResolve;
 
44372
  friend class ::WinIfExists;
 
44373
  friend class ::WinImportHandler;
 
44374
  friend class ::WinMacros;
 
44375
  friend class ::WinAsm;
 
44376
  friend class ::WinDeclSpecs;
 
44377
  friend class ::WinMemberExplSpec;
 
44378
  friend class ::WinTypeKeywords;
 
44379
  friend class ::WinFriend;
 
44380
  friend class ::ExtAC;
 
44381
  friend class ::ExtACBuilderCoupling;
 
44382
  friend class ::ExtACSyntaxCoupling;
 
44383
  friend class ::ExtACTree;
 
44384
  friend class ::ExtACKeywords;
 
44385
  friend class ::ExtGnu;
 
44386
  friend class ::PragmaOnceUnitState;
 
44387
  friend class ::PragmaOnce;
 
44388
  friend class ::CMatchSyntax;
 
44389
 
 
44390
#line 4008 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44391
 
 
44392
  CTree *sons[8]; // key, open, init, cond, semi_colon, expr, close, stmt
 
44393
 
 
44394
public:
 
44395
  /** Constructor.
 
44396
   *  \param k The keyword 'for'.
 
44397
   *  \param o Left parenthesis.
 
44398
   *  \param i The loop initializer statement.
 
44399
   *  \param co The loop condition.
 
44400
   *  \param sc The semi-colon behind the loop condition.
 
44401
   *  \param e The loop counter expression.
 
44402
   *  \param c Right parenthesis.
 
44403
   *  \param stmt The controlled statement. */
 
44404
  CT_ForStmt (CTree *k, CTree *o, CTree *i, CTree *co, CTree *sc,
 
44405
              CTree *e, CTree *c, CTree *stmt) {
 
44406
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], i); 
 
44407
    AddSon (sons[3], co); AddSon (sons[4], sc); AddSon (sons[5], e); 
 
44408
    AddSon (sons[6], c); AddSon (sons[7], stmt); 
 
44409
  }
 
44410
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44411
  static const char *NodeId ();
 
44412
  /** Get the name of the node. Can be compared with NodeId(). */
 
44413
  const char *NodeName () const { return NodeId (); }
 
44414
  /** Get the number of sons. */
 
44415
  int Sons () const { return CTree::Sons (sons, 8); }
 
44416
  /** Get the n-th son.
 
44417
   *  \param n The index of the son.
 
44418
   *  \return The n-th son or NULL. */
 
44419
  CTree *Son (int n) const { return CTree::Son (sons, 8, n); }
 
44420
  /** Get the loop initializer. */
 
44421
  CTree *InitStmt () const { return sons[2]; }
 
44422
  /** Get the loop condition. */
 
44423
  CTree *Condition () const { return sons[3]; }
 
44424
  /** Get the loop counter expression. */
 
44425
  CTree *Expr () const { return sons[5]; }
 
44426
  /** Get the controlled statement. */
 
44427
  CT_Statement *Statement () const { return (CT_Statement*)sons[7]; }
 
44428
  /** Replace a son.
 
44429
   *  \param old_son The son to replace.
 
44430
   *  \param new_son The new son. */
 
44431
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
44432
    CTree::ReplaceSon (sons, 8, old_son, new_son);
 
44433
  }
 
44434
  /** Get the scope opened by the for-statement. */
 
44435
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
44436
public:
 
44437
  typedef AC::TL<Puma::CTree * [8],AC::TLE > __AttrTypes;
 
44438
  const char *__attr_name (unsigned i) const {
 
44439
    static const char *names[] = { "sons" }; return names[i];
 
44440
  }
 
44441
  const void *__attr (unsigned __i) const {
 
44442
    switch (__i) { case 0: return &sons; default: return 0; }
 
44443
  }
 
44444
#line 4053 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44445
};
 
44446
 
 
44447
/** \class CT_Condition CTree.h Puma/CTree.h
 
44448
 *  Tree node representing a control-statement condition.
 
44449
 *  Example: \code int i = 0 \endcode */
 
44450
 
 
44451
#line 44452 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44452
} // closed Puma
 
44453
class CCExprResolve;
 
44454
class CExprResolve;
 
44455
class WinIfExists;
 
44456
class WinImportHandler;
 
44457
class WinMacros;
 
44458
class WinAsm;
 
44459
class WinDeclSpecs;
 
44460
class WinMemberExplSpec;
 
44461
class WinTypeKeywords;
 
44462
class WinFriend;
 
44463
class ExtAC;
 
44464
class ExtACBuilderCoupling;
 
44465
class ExtACSyntaxCoupling;
 
44466
class ExtACTree;
 
44467
class ExtACKeywords;
 
44468
class ExtGnu;
 
44469
class PragmaOnceUnitState;
 
44470
class PragmaOnce;
 
44471
class CMatchSyntax;
 
44472
namespace Puma {
 
44473
 
 
44474
#line 4058 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44475
class CT_Condition : public CT_Decl, public CSemObject {
 
44476
#line 44477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44477
  friend class ::CCExprResolve;
 
44478
  friend class ::CExprResolve;
 
44479
  friend class ::WinIfExists;
 
44480
  friend class ::WinImportHandler;
 
44481
  friend class ::WinMacros;
 
44482
  friend class ::WinAsm;
 
44483
  friend class ::WinDeclSpecs;
 
44484
  friend class ::WinMemberExplSpec;
 
44485
  friend class ::WinTypeKeywords;
 
44486
  friend class ::WinFriend;
 
44487
  friend class ::ExtAC;
 
44488
  friend class ::ExtACBuilderCoupling;
 
44489
  friend class ::ExtACSyntaxCoupling;
 
44490
  friend class ::ExtACTree;
 
44491
  friend class ::ExtACKeywords;
 
44492
  friend class ::ExtGnu;
 
44493
  friend class ::PragmaOnceUnitState;
 
44494
  friend class ::PragmaOnce;
 
44495
  friend class ::CMatchSyntax;
 
44496
 
 
44497
#line 4058 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44498
 
 
44499
  CTree *sons[3]; // declspecs, declarator, init
 
44500
 
 
44501
public:
 
44502
  /** Constructor.
 
44503
   *  \param dsl The declaration specifier sequence. 
 
44504
   *  \param d The variable declarator. */
 
44505
  CT_Condition (CTree *dsl, CTree *d) {
 
44506
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], 0);
 
44507
  }
 
44508
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44509
  static const char *NodeId ();
 
44510
  /** Get the name of the node. Can be compared with NodeId(). */
 
44511
  const char *NodeName () const { return NodeId (); }
 
44512
  /** Get the number of sons. */
 
44513
  int Sons () const { return CTree::Sons (sons, 3); }
 
44514
  /** Get the n-th son.
 
44515
   *  \param n The index of the son.
 
44516
   *  \return The n-th son or NULL. */
 
44517
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
44518
  /** Get the declaration specifier sequence. */
 
44519
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
44520
  /** Get the declarator. */
 
44521
  CTree *Declarator () const { return sons[1]; }
 
44522
  /** Get the initializer of the declaration. */
 
44523
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
44524
  /** Get the semantic information of the declared object. */
 
44525
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
44526
  /** Set the initializer. */
 
44527
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
44528
  /** Replace a son.
 
44529
   *  \param old_son The son to replace.
 
44530
   *  \param new_son The new son. */
 
44531
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
44532
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
44533
  }
 
44534
public:
 
44535
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
44536
  const char *__attr_name (unsigned i) const {
 
44537
    static const char *names[] = { "sons" }; return names[i];
 
44538
  }
 
44539
  const void *__attr (unsigned __i) const {
 
44540
    switch (__i) { case 0: return &sons; default: return 0; }
 
44541
  }
 
44542
#line 4094 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44543
};
 
44544
 
 
44545
/*****************************************************************************/
 
44546
/*                                                                           */
 
44547
/*                              Classes                                      */
 
44548
/*                                                                           */
 
44549
/*****************************************************************************/
 
44550
 
 
44551
/** \class CT_ClassDef CTree.h Puma/CTree.h
 
44552
 *  Tree node representing a class definition.
 
44553
 *  Example: \code class X : Y { int x; } \endcode */
 
44554
 
 
44555
#line 44556 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44556
} // closed Puma
 
44557
class CCExprResolve;
 
44558
class CExprResolve;
 
44559
class WinIfExists;
 
44560
class WinImportHandler;
 
44561
class WinMacros;
 
44562
class WinAsm;
 
44563
class WinDeclSpecs;
 
44564
class WinMemberExplSpec;
 
44565
class WinTypeKeywords;
 
44566
class WinFriend;
 
44567
class ExtAC;
 
44568
class ExtACBuilderCoupling;
 
44569
class ExtACSyntaxCoupling;
 
44570
class ExtACTree;
 
44571
class ExtACKeywords;
 
44572
class ExtGnu;
 
44573
class PragmaOnceUnitState;
 
44574
class PragmaOnce;
 
44575
class CMatchSyntax;
 
44576
namespace Puma {
 
44577
 
 
44578
#line 4105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44579
 
 
44580
#line 44581 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44581
} // closed Puma
 
44582
 
 
44583
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
44584
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
44585
#include "ExtACTree.ah"
 
44586
#endif
 
44587
namespace Puma {
 
44588
 
 
44589
#line 4105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44590
class CT_ClassDef : public CT_Decl, public CSemObject {
 
44591
#line 44592 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44592
  friend class ::CCExprResolve;
 
44593
  friend class ::CExprResolve;
 
44594
  friend class ::WinIfExists;
 
44595
  friend class ::WinImportHandler;
 
44596
  friend class ::WinMacros;
 
44597
  friend class ::WinAsm;
 
44598
  friend class ::WinDeclSpecs;
 
44599
  friend class ::WinMemberExplSpec;
 
44600
  friend class ::WinTypeKeywords;
 
44601
  friend class ::WinFriend;
 
44602
  friend class ::ExtAC;
 
44603
  friend class ::ExtACBuilderCoupling;
 
44604
  friend class ::ExtACSyntaxCoupling;
 
44605
  friend class ::ExtACTree;
 
44606
  friend class ::ExtACKeywords;
 
44607
  friend class ::ExtGnu;
 
44608
  friend class ::PragmaOnceUnitState;
 
44609
  friend class ::PragmaOnce;
 
44610
  friend class ::CMatchSyntax;
 
44611
 
 
44612
#line 4105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44613
 
 
44614
   
 
44615
#line 44616 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44616
 
 
44617
  struct __ac_wrapper_sons {
 
44618
    typedef ::Puma::CTree * E; typedef E A[4]; A _data;
 
44619
    operator A& () { return _data; }
 
44620
    operator A& () const { return (A&)*(::Puma::CTree * *)_data; }
 
44621
    operator const A& () { return _data; }
 
44622
    operator const A& () const { return _data; }
 
44623
    operator void* () { return _data; }
 
44624
    operator void* () const { return (void*)_data; }
 
44625
    operator const void* () { return _data; }
 
44626
    operator const void* () const { return _data; }
 
44627
    template <typename I> E& operator [] (I i) { return _data[i]; } // for VC++ 2003
 
44628
    template <typename I> const E& operator [] (I i) const { return _data[i]; } // for VC++ 2003
 
44629
  } sons
 
44630
#line 4106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44631
 
 
44632
#line 4106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44633
; // key, name, bases, members
 
44634
  CTree *obj_decl;
 
44635
 
 
44636
public:
 
44637
  /** Constructor.
 
44638
   *  \param k The keyword 'class' or 'struct'.
 
44639
   *  \param n The name of the class.
 
44640
   *  \param b The base class list. */
 
44641
  
 
44642
#line 44643 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44643
 
 
44644
 
 
44645
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 {
 
44646
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 __TJP;
 
44647
  typedef TResult Result;
 
44648
  typedef TThat   That;
 
44649
  typedef TTarget Target;
 
44650
  enum { ARGS = TArgs::ARGS };
 
44651
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
44652
  static const int JPID = 58;
 
44653
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
44654
  struct Res {
 
44655
    typedef void Type;
 
44656
    typedef void ReferredType;
 
44657
  };
 
44658
 
 
44659
  That *_that;
 
44660
 
 
44661
  inline That *that() {return (That*)_that;}
 
44662
 
 
44663
};
 
44664
 
 
44665
 
 
44666
#line 4114 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44667
CT_ClassDef (CTree * arg0, CTree * arg1, CTree * arg2 = (CTree*)0) 
 
44668
#line 44669 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44669
{
 
44670
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TLE > > > > __TJP;
 
44671
    __TJP tjp;
 
44672
  tjp._that =  (__TJP::That*)this;
 
44673
    this->__exec_old_C1(arg0, arg1, arg2);
 
44674
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
44675
  
 
44676
}
 
44677
__attribute__((always_inline)) inline void __exec_old_C1(::Puma::CTree * k,::Puma::CTree * n,::Puma::CTree * b)
 
44678
#line 4114 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44679
{
 
44680
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], b); 
 
44681
    AddSon (sons[3], 0); AddSon (obj_decl, 0); 
 
44682
  }
 
44683
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44684
  static const char *NodeId ();
 
44685
  /** Get the name of the node. Can be compared with NodeId(). */
 
44686
  const char *NodeName () const { return NodeId (); }
 
44687
  /** Get the number of sons. */
 
44688
  int Sons () const { return CTree::Sons (sons, 4); }
 
44689
  /** Get the n-th son.
 
44690
   *  \param n The index of the son.
 
44691
   *  \return The n-th son or NULL. */
 
44692
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
44693
  /** Get the name of the class. */
 
44694
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
44695
  /** Get the member declarations list. */
 
44696
  CT_MembList *Members () const { return (CT_MembList*)sons[3]; }
 
44697
  /** Get the base class specifiers list. */
 
44698
  CT_BaseSpecList *BaseClasses () const { return (CT_BaseSpecList*)sons[2]; }
 
44699
  /** Get the object declaration node containing the class definition. */
 
44700
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
44701
  /** Get the semantic information about the declared class. */
 
44702
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
44703
  /** Set the member declarations list. */
 
44704
  void Members (CTree *m) { AddSon (sons[3], m); }
 
44705
  /** Set the base class specifiers list. */
 
44706
  void BaseClasses (CTree *bc) { AddSon (sons[2], bc); }
 
44707
  /** Set the object declaration containing the class definition. */
 
44708
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
44709
  /** Replace a son.
 
44710
   *  \param old_son The son to replace.
 
44711
   *  \param new_son The new son. */
 
44712
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
44713
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
44714
  }
 
44715
   private:
 
44716
 
 
44717
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
44718
 Puma :: CTree * _intro_members ;
 
44719
Puma :: CTree * _base_intros ;
 
44720
public :
 
44721
Puma :: CTree * IntroMembers ( ) const { return _intro_members ; }
 
44722
void IntroMembers ( Puma :: CTree * members ) { _intro_members = members ; }
 
44723
Puma :: CTree * BaseIntros ( ) const { return _base_intros ; }
 
44724
void BaseIntros ( Puma :: CTree * bases ) { _base_intros = bases ; }public:
 
44725
  typedef AC::TL<Puma::CTree * [4],AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
44726
  const char *__attr_name (unsigned i) const {
 
44727
    static const char *names[] = { "sons", "obj_decl", "_intro_members", "_base_intros" }; return names[i];
 
44728
  }
 
44729
  const void *__attr (unsigned __i) const {
 
44730
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; case 2: return &_intro_members; case 3: return &_base_intros; default: return 0; }
 
44731
  }
 
44732
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44733
 
 
44734
#line 44735 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44735
 
 
44736
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 {
 
44737
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 __TJP;
 
44738
  typedef TResult Result;
 
44739
  typedef TThat   That;
 
44740
  typedef TTarget Target;
 
44741
  enum { ARGS = TArgs::ARGS };
 
44742
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
44743
  static const int JPID = 7428;
 
44744
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
44745
  struct Res {
 
44746
    typedef void Type;
 
44747
    typedef void ReferredType;
 
44748
  };
 
44749
 
 
44750
  That *_that;
 
44751
 
 
44752
  inline That *that() {return (That*)_that;}
 
44753
 
 
44754
};
 
44755
 
 
44756
 
 
44757
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44758
 
 
44759
#line 44760 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44760
 
 
44761
public:
 
44762
inline CT_ClassDef (const Puma::CT_ClassDef & arg0) : Puma::CT_Decl (arg0), Puma::CSemObject (arg0), sons (arg0.sons), obj_decl (arg0.obj_decl), _intro_members (arg0._intro_members), _base_intros (arg0._base_intros) {
 
44763
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< const ::Puma::CT_ClassDef & , AC::TLE > > __TJP;
 
44764
  __TJP tjp;
 
44765
  tjp._that =  (__TJP::That*)this;
 
44766
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
44767
 
 
44768
}
 
44769
 
 
44770
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44771
 
 
44772
#line 44773 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44773
 
 
44774
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefD1Ev_0 {
 
44775
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0 __TJP;
 
44776
  typedef TResult Result;
 
44777
  typedef TThat   That;
 
44778
  typedef TTarget Target;
 
44779
  enum { ARGS = TArgs::ARGS };
 
44780
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
44781
  static const int JPID = 7426;
 
44782
  static const AC::JPType JPTYPE = (AC::JPType)32;
 
44783
  struct Res {
 
44784
    typedef void Type;
 
44785
    typedef void ReferredType;
 
44786
  };
 
44787
 
 
44788
  That *_that;
 
44789
 
 
44790
  inline That *that() {return (That*)_that;}
 
44791
 
 
44792
};
 
44793
 
 
44794
 
 
44795
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44796
 
 
44797
#line 44798 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44798
 
 
44799
public:
 
44800
inline ~CT_ClassDef () {
 
44801
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TLE > __TJP;
 
44802
  __TJP tjp;
 
44803
  tjp._that =  (__TJP::That*)this;
 
44804
  AC::invoke_ExtACTree_ExtACTree_a1_before<__TJP> (&tjp);
 
44805
 
 
44806
}
 
44807
 
 
44808
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44809
};
 
44810
      
 
44811
/** \class CT_UnionDef CTree.h Puma/CTree.h
 
44812
 *  Tree node representing the definition of a union.
 
44813
 *  Example: \code union U { int i; } \endcode */
 
44814
 
 
44815
#line 44816 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44816
} // closed Puma
 
44817
class CCExprResolve;
 
44818
class CExprResolve;
 
44819
class WinIfExists;
 
44820
class WinImportHandler;
 
44821
class WinMacros;
 
44822
class WinAsm;
 
44823
class WinDeclSpecs;
 
44824
class WinMemberExplSpec;
 
44825
class WinTypeKeywords;
 
44826
class WinFriend;
 
44827
class ExtAC;
 
44828
class ExtACBuilderCoupling;
 
44829
class ExtACSyntaxCoupling;
 
44830
class ExtACTree;
 
44831
class ExtACKeywords;
 
44832
class ExtGnu;
 
44833
class PragmaOnceUnitState;
 
44834
class PragmaOnce;
 
44835
class CMatchSyntax;
 
44836
namespace Puma {
 
44837
 
 
44838
#line 4155 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44839
class CT_UnionDef : public CT_ClassDef {
 
44840
#line 44841 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44841
  friend class ::CCExprResolve;
 
44842
  friend class ::CExprResolve;
 
44843
  friend class ::WinIfExists;
 
44844
  friend class ::WinImportHandler;
 
44845
  friend class ::WinMacros;
 
44846
  friend class ::WinAsm;
 
44847
  friend class ::WinDeclSpecs;
 
44848
  friend class ::WinMemberExplSpec;
 
44849
  friend class ::WinTypeKeywords;
 
44850
  friend class ::WinFriend;
 
44851
  friend class ::ExtAC;
 
44852
  friend class ::ExtACBuilderCoupling;
 
44853
  friend class ::ExtACSyntaxCoupling;
 
44854
  friend class ::ExtACTree;
 
44855
  friend class ::ExtACKeywords;
 
44856
  friend class ::ExtGnu;
 
44857
  friend class ::PragmaOnceUnitState;
 
44858
  friend class ::PragmaOnce;
 
44859
  friend class ::CMatchSyntax;
 
44860
 
 
44861
#line 4155 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44862
 
 
44863
public:
 
44864
  /** Constructor.
 
44865
   *  \param k The keyword 'union'.
 
44866
   *  \param n The name of the union.
 
44867
   *  \param b The base union list. */
 
44868
  CT_UnionDef (CTree *k, CTree *n, CTree *b = 0) : CT_ClassDef (k, n, b) {}
 
44869
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44870
  static const char *NodeId ();
 
44871
  /** Get the name of the node. Can be compared with NodeId(). */
 
44872
  const char *NodeName () const { return NodeId (); }
 
44873
public:
 
44874
  typedef AC::TLE __AttrTypes;
 
44875
  const char *__attr_name (unsigned i) const { return 0; }
 
44876
  const void *__attr (unsigned __i) const { return 0; }
 
44877
#line 4166 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44878
};
 
44879
      
 
44880
/** \class CT_MembList CTree.h Puma/CTree.h
 
44881
 *  Tree node representing a member declarations list. */ 
 
44882
 
 
44883
#line 44884 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44884
} // closed Puma
 
44885
class CCExprResolve;
 
44886
class CExprResolve;
 
44887
class WinIfExists;
 
44888
class WinImportHandler;
 
44889
class WinMacros;
 
44890
class WinAsm;
 
44891
class WinDeclSpecs;
 
44892
class WinMemberExplSpec;
 
44893
class WinTypeKeywords;
 
44894
class WinFriend;
 
44895
class ExtAC;
 
44896
class ExtACBuilderCoupling;
 
44897
class ExtACSyntaxCoupling;
 
44898
class ExtACTree;
 
44899
class ExtACKeywords;
 
44900
class ExtGnu;
 
44901
class PragmaOnceUnitState;
 
44902
class PragmaOnce;
 
44903
class CMatchSyntax;
 
44904
namespace Puma {
 
44905
 
 
44906
#line 4170 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44907
class CT_MembList : public CT_DeclList, public CSemScope {
 
44908
#line 44909 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44909
  friend class ::CCExprResolve;
 
44910
  friend class ::CExprResolve;
 
44911
  friend class ::WinIfExists;
 
44912
  friend class ::WinImportHandler;
 
44913
  friend class ::WinMacros;
 
44914
  friend class ::WinAsm;
 
44915
  friend class ::WinDeclSpecs;
 
44916
  friend class ::WinMemberExplSpec;
 
44917
  friend class ::WinTypeKeywords;
 
44918
  friend class ::WinFriend;
 
44919
  friend class ::ExtAC;
 
44920
  friend class ::ExtACBuilderCoupling;
 
44921
  friend class ::ExtACSyntaxCoupling;
 
44922
  friend class ::ExtACTree;
 
44923
  friend class ::ExtACKeywords;
 
44924
  friend class ::ExtGnu;
 
44925
  friend class ::PragmaOnceUnitState;
 
44926
  friend class ::PragmaOnce;
 
44927
  friend class ::CMatchSyntax;
 
44928
 
 
44929
#line 4170 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44930
 
 
44931
public:
 
44932
  CT_MembList (int size = 10, int incr = 10) : 
 
44933
    CT_DeclList (size, incr) {}
 
44934
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
44935
  static const char *NodeId ();
 
44936
  /** Get the name of the node. Can be compared with NodeId(). */
 
44937
  const char *NodeName () const { return NodeId (); }
 
44938
  /** Get the scope opened by the member declarations list. */
 
44939
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
44940
public:
 
44941
  typedef AC::TLE __AttrTypes;
 
44942
  const char *__attr_name (unsigned i) const { return 0; }
 
44943
  const void *__attr (unsigned __i) const { return 0; }
 
44944
#line 4180 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44945
};
 
44946
 
 
44947
/** \class CT_MembInitList CTree.h Puma/CTree.h
 
44948
 *  Tree node representing a constructor initializer list.
 
44949
 *  Example: \code : Base(), m_Member(0) \endcode */
 
44950
 
 
44951
#line 44952 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44952
} // closed Puma
 
44953
class CCExprResolve;
 
44954
class CExprResolve;
 
44955
class WinIfExists;
 
44956
class WinImportHandler;
 
44957
class WinMacros;
 
44958
class WinAsm;
 
44959
class WinDeclSpecs;
 
44960
class WinMemberExplSpec;
 
44961
class WinTypeKeywords;
 
44962
class WinFriend;
 
44963
class ExtAC;
 
44964
class ExtACBuilderCoupling;
 
44965
class ExtACSyntaxCoupling;
 
44966
class ExtACTree;
 
44967
class ExtACKeywords;
 
44968
class ExtGnu;
 
44969
class PragmaOnceUnitState;
 
44970
class PragmaOnce;
 
44971
class CMatchSyntax;
 
44972
namespace Puma {
 
44973
 
 
44974
#line 4185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44975
class CT_MembInitList : public CT_List, public CSemScope {
 
44976
#line 44977 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
44977
  friend class ::CCExprResolve;
 
44978
  friend class ::CExprResolve;
 
44979
  friend class ::WinIfExists;
 
44980
  friend class ::WinImportHandler;
 
44981
  friend class ::WinMacros;
 
44982
  friend class ::WinAsm;
 
44983
  friend class ::WinDeclSpecs;
 
44984
  friend class ::WinMemberExplSpec;
 
44985
  friend class ::WinTypeKeywords;
 
44986
  friend class ::WinFriend;
 
44987
  friend class ::ExtAC;
 
44988
  friend class ::ExtACBuilderCoupling;
 
44989
  friend class ::ExtACSyntaxCoupling;
 
44990
  friend class ::ExtACTree;
 
44991
  friend class ::ExtACKeywords;
 
44992
  friend class ::ExtGnu;
 
44993
  friend class ::PragmaOnceUnitState;
 
44994
  friend class ::PragmaOnce;
 
44995
  friend class ::CMatchSyntax;
 
44996
 
 
44997
#line 4185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
44998
 
 
44999
public:
 
45000
  /** Constructor.
 
45001
   *  \param size The initial size of the list. */
 
45002
  CT_MembInitList (int size = 2) : 
 
45003
    CT_List (size, 2, CT_List::OPEN) {}
 
45004
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45005
  static const char *NodeId ();
 
45006
  /** Get the name of the node. Can be compared with NodeId(). */
 
45007
  const char *NodeName () const { return NodeId (); }
 
45008
  /** Get the scope opened by the member initializer list. */
 
45009
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
45010
public:
 
45011
  typedef AC::TLE __AttrTypes;
 
45012
  const char *__attr_name (unsigned i) const { return 0; }
 
45013
  const void *__attr (unsigned __i) const { return 0; }
 
45014
#line 4197 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45015
};
 
45016
 
 
45017
/** \class CT_MembInit CTree.h Puma/CTree.h
 
45018
 *  Tree node representing a member initializer.
 
45019
 *  Example: \code m_Member(0) \endcode */
 
45020
 
 
45021
#line 45022 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45022
} // closed Puma
 
45023
class CCExprResolve;
 
45024
class CExprResolve;
 
45025
class WinIfExists;
 
45026
class WinImportHandler;
 
45027
class WinMacros;
 
45028
class WinAsm;
 
45029
class WinDeclSpecs;
 
45030
class WinMemberExplSpec;
 
45031
class WinTypeKeywords;
 
45032
class WinFriend;
 
45033
class ExtAC;
 
45034
class ExtACBuilderCoupling;
 
45035
class ExtACSyntaxCoupling;
 
45036
class ExtACTree;
 
45037
class ExtACKeywords;
 
45038
class ExtGnu;
 
45039
class PragmaOnceUnitState;
 
45040
class PragmaOnce;
 
45041
class CMatchSyntax;
 
45042
namespace Puma {
 
45043
 
 
45044
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45045
 
 
45046
#line 45047 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45047
} // closed Puma
 
45048
 
 
45049
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
45050
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
45051
#include "CCExprResolveH.ah"
 
45052
#endif
 
45053
namespace Puma {
 
45054
 
 
45055
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45056
 
 
45057
#line 45058 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45058
} // closed Puma
 
45059
 
 
45060
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
45061
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
45062
#include "CExprResolveH.ah"
 
45063
#endif
 
45064
namespace Puma {
 
45065
 
 
45066
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45067
class CT_MembInit : public CT_Expression, public CSemObject {
 
45068
#line 45069 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45069
  friend class ::CCExprResolve;
 
45070
  friend class ::CExprResolve;
 
45071
  friend class ::WinIfExists;
 
45072
  friend class ::WinImportHandler;
 
45073
  friend class ::WinMacros;
 
45074
  friend class ::WinAsm;
 
45075
  friend class ::WinDeclSpecs;
 
45076
  friend class ::WinMemberExplSpec;
 
45077
  friend class ::WinTypeKeywords;
 
45078
  friend class ::WinFriend;
 
45079
  friend class ::ExtAC;
 
45080
  friend class ::ExtACBuilderCoupling;
 
45081
  friend class ::ExtACSyntaxCoupling;
 
45082
  friend class ::ExtACTree;
 
45083
  friend class ::ExtACKeywords;
 
45084
  friend class ::ExtGnu;
 
45085
  friend class ::PragmaOnceUnitState;
 
45086
  friend class ::PragmaOnce;
 
45087
  friend class ::CMatchSyntax;
 
45088
 
 
45089
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45090
 
 
45091
  CTree *sons[2]; // name, init
 
45092
 
 
45093
public:
 
45094
  /** Constructor.
 
45095
   *  \param n The name of the member.
 
45096
   *  \param i The member initializer. */
 
45097
  CT_MembInit (CTree *n, CTree *i) { AddSon (sons[0], n); AddSon (sons[1], i); }
 
45098
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45099
  static const char *NodeId ();
 
45100
  /** Get the name of the node. Can be compared with NodeId(). */
 
45101
  const char *NodeName () const { return NodeId (); }
 
45102
  /** Get the number of sons. */
 
45103
  int Sons () const { return 2; }
 
45104
  /** Get the n-th son.
 
45105
   *  \param n The index of the son.
 
45106
   *  \return The n-th son or NULL. */
 
45107
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
45108
  /** Replace a son.
 
45109
   *  \param old_son The son to replace.
 
45110
   *  \param new_son The new son. */
 
45111
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
45112
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
45113
  }
 
45114
  /** Get the name of the member. */
 
45115
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
45116
  /** Get the initializer. */
 
45117
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
45118
  /** Get the semantic information about the initialized member. */
 
45119
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
45120
   private:
 
45121
  typedef CT_MembInit CCExprResolveExpr;
 
45122
 
 
45123
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
45124
 public :
 
45125
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
45126
  typedef CT_MembInit CExprResolveExpr;
 
45127
 
 
45128
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
45129
 public :
 
45130
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
45131
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
45132
  const char *__attr_name (unsigned i) const {
 
45133
    static const char *names[] = { "sons" }; return names[i];
 
45134
  }
 
45135
  const void *__attr (unsigned __i) const {
 
45136
    switch (__i) { case 0: return &sons; default: return 0; }
 
45137
  }
 
45138
#line 4232 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45139
};
 
45140
 
 
45141
/** \class CT_BaseSpecList CTree.h Puma/CTree.h
 
45142
 *  Tree node representing a base specifier list.
 
45143
 *  Example: \code : X, Y, Z \endcode */
 
45144
 
 
45145
#line 45146 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45146
} // closed Puma
 
45147
class CCExprResolve;
 
45148
class CExprResolve;
 
45149
class WinIfExists;
 
45150
class WinImportHandler;
 
45151
class WinMacros;
 
45152
class WinAsm;
 
45153
class WinDeclSpecs;
 
45154
class WinMemberExplSpec;
 
45155
class WinTypeKeywords;
 
45156
class WinFriend;
 
45157
class ExtAC;
 
45158
class ExtACBuilderCoupling;
 
45159
class ExtACSyntaxCoupling;
 
45160
class ExtACTree;
 
45161
class ExtACKeywords;
 
45162
class ExtGnu;
 
45163
class PragmaOnceUnitState;
 
45164
class PragmaOnce;
 
45165
class CMatchSyntax;
 
45166
namespace Puma {
 
45167
 
 
45168
#line 4237 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45169
class CT_BaseSpecList : public CT_List {
 
45170
#line 45171 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45171
  friend class ::CCExprResolve;
 
45172
  friend class ::CExprResolve;
 
45173
  friend class ::WinIfExists;
 
45174
  friend class ::WinImportHandler;
 
45175
  friend class ::WinMacros;
 
45176
  friend class ::WinAsm;
 
45177
  friend class ::WinDeclSpecs;
 
45178
  friend class ::WinMemberExplSpec;
 
45179
  friend class ::WinTypeKeywords;
 
45180
  friend class ::WinFriend;
 
45181
  friend class ::ExtAC;
 
45182
  friend class ::ExtACBuilderCoupling;
 
45183
  friend class ::ExtACSyntaxCoupling;
 
45184
  friend class ::ExtACTree;
 
45185
  friend class ::ExtACKeywords;
 
45186
  friend class ::ExtGnu;
 
45187
  friend class ::PragmaOnceUnitState;
 
45188
  friend class ::PragmaOnce;
 
45189
  friend class ::CMatchSyntax;
 
45190
 
 
45191
#line 4237 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45192
 
 
45193
public:
 
45194
  /** Constructor.
 
45195
   *  \param size The initial size of the list. */
 
45196
  CT_BaseSpecList (int size = 2) : 
 
45197
    CT_List (size, 2, CT_List::OPEN|CT_List::SEPARATORS) {}
 
45198
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45199
  static const char *NodeId ();
 
45200
  /** Get the name of the node. Can be compared with NodeId(). */
 
45201
  const char *NodeName () const { return NodeId (); }
 
45202
public:
 
45203
  typedef AC::TLE __AttrTypes;
 
45204
  const char *__attr_name (unsigned i) const { return 0; }
 
45205
  const void *__attr (unsigned __i) const { return 0; }
 
45206
#line 4247 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45207
};
 
45208
 
 
45209
/** \class CT_AccessSpec CTree.h Puma/CTree.h
 
45210
 *  Tree node representing an access specifier.
 
45211
 *  Example: \code public: \endcode */
 
45212
 
 
45213
#line 45214 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45214
} // closed Puma
 
45215
class CCExprResolve;
 
45216
class CExprResolve;
 
45217
class WinIfExists;
 
45218
class WinImportHandler;
 
45219
class WinMacros;
 
45220
class WinAsm;
 
45221
class WinDeclSpecs;
 
45222
class WinMemberExplSpec;
 
45223
class WinTypeKeywords;
 
45224
class WinFriend;
 
45225
class ExtAC;
 
45226
class ExtACBuilderCoupling;
 
45227
class ExtACSyntaxCoupling;
 
45228
class ExtACTree;
 
45229
class ExtACKeywords;
 
45230
class ExtGnu;
 
45231
class PragmaOnceUnitState;
 
45232
class PragmaOnce;
 
45233
class CMatchSyntax;
 
45234
namespace Puma {
 
45235
 
 
45236
#line 4252 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45237
class CT_AccessSpec : public CTree {
 
45238
#line 45239 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45239
  friend class ::CCExprResolve;
 
45240
  friend class ::CExprResolve;
 
45241
  friend class ::WinIfExists;
 
45242
  friend class ::WinImportHandler;
 
45243
  friend class ::WinMacros;
 
45244
  friend class ::WinAsm;
 
45245
  friend class ::WinDeclSpecs;
 
45246
  friend class ::WinMemberExplSpec;
 
45247
  friend class ::WinTypeKeywords;
 
45248
  friend class ::WinFriend;
 
45249
  friend class ::ExtAC;
 
45250
  friend class ::ExtACBuilderCoupling;
 
45251
  friend class ::ExtACSyntaxCoupling;
 
45252
  friend class ::ExtACTree;
 
45253
  friend class ::ExtACKeywords;
 
45254
  friend class ::ExtGnu;
 
45255
  friend class ::PragmaOnceUnitState;
 
45256
  friend class ::PragmaOnce;
 
45257
  friend class ::CMatchSyntax;
 
45258
 
 
45259
#line 4252 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45260
 
 
45261
  CTree *sons[2]; // access, colon
 
45262
 
 
45263
public:
 
45264
  /** Constructor.
 
45265
   *  \param a The access specifier, i.e. 'public', 'private', or 'protected'.
 
45266
   *  \param c The trailing colon. */
 
45267
  CT_AccessSpec (CTree *a, CTree *c) { AddSon (sons[0], a); AddSon (sons[1], c); }
 
45268
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45269
  static const char *NodeId ();
 
45270
  /** Get the name of the node. Can be compared with NodeId(). */
 
45271
  const char *NodeName () const { return NodeId (); }
 
45272
  /** Get the number of sons. */
 
45273
  int Sons () const { return 2; }
 
45274
  /** Get the n-th son.
 
45275
   *  \param n The index of the son.
 
45276
   *  \return The n-th son or NULL. */
 
45277
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
45278
  /** Get the access specifier type (token type). */
 
45279
  int Access () const { return sons[0]->token ()->type (); }
 
45280
  /** Replace a son.
 
45281
   *  \param old_son The son to replace.
 
45282
   *  \param new_son The new son. */
 
45283
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
45284
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
45285
  }
 
45286
public:
 
45287
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
45288
  const char *__attr_name (unsigned i) const {
 
45289
    static const char *names[] = { "sons" }; return names[i];
 
45290
  }
 
45291
  const void *__attr (unsigned __i) const {
 
45292
    switch (__i) { case 0: return &sons; default: return 0; }
 
45293
  }
 
45294
#line 4278 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45295
};
 
45296
 
 
45297
/** \class CT_BaseSpec CTree.h Puma/CTree.h
 
45298
 *  Tree node representing a base class specifier.
 
45299
 *  Example: \code public X \endcode */
 
45300
 
 
45301
#line 45302 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45302
} // closed Puma
 
45303
class CCExprResolve;
 
45304
class CExprResolve;
 
45305
class WinIfExists;
 
45306
class WinImportHandler;
 
45307
class WinMacros;
 
45308
class WinAsm;
 
45309
class WinDeclSpecs;
 
45310
class WinMemberExplSpec;
 
45311
class WinTypeKeywords;
 
45312
class WinFriend;
 
45313
class ExtAC;
 
45314
class ExtACBuilderCoupling;
 
45315
class ExtACSyntaxCoupling;
 
45316
class ExtACTree;
 
45317
class ExtACKeywords;
 
45318
class ExtGnu;
 
45319
class PragmaOnceUnitState;
 
45320
class PragmaOnce;
 
45321
class CMatchSyntax;
 
45322
namespace Puma {
 
45323
 
 
45324
#line 4283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45325
class CT_BaseSpec : public CTree {
 
45326
#line 45327 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45327
  friend class ::CCExprResolve;
 
45328
  friend class ::CExprResolve;
 
45329
  friend class ::WinIfExists;
 
45330
  friend class ::WinImportHandler;
 
45331
  friend class ::WinMacros;
 
45332
  friend class ::WinAsm;
 
45333
  friend class ::WinDeclSpecs;
 
45334
  friend class ::WinMemberExplSpec;
 
45335
  friend class ::WinTypeKeywords;
 
45336
  friend class ::WinFriend;
 
45337
  friend class ::ExtAC;
 
45338
  friend class ::ExtACBuilderCoupling;
 
45339
  friend class ::ExtACSyntaxCoupling;
 
45340
  friend class ::ExtACTree;
 
45341
  friend class ::ExtACKeywords;
 
45342
  friend class ::ExtGnu;
 
45343
  friend class ::PragmaOnceUnitState;
 
45344
  friend class ::PragmaOnce;
 
45345
  friend class ::CMatchSyntax;
 
45346
 
 
45347
#line 4283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45348
 
 
45349
  CTree *sons[3]; // virtual, access, name
 
45350
 
 
45351
public:
 
45352
  /** Constructor.
 
45353
   *  \param v Optional keyword 'virtual'.
 
45354
   *  \param a The optional access specifier.
 
45355
   *  \param n The name of the base class. */
 
45356
  CT_BaseSpec (CTree *v, CTree *a, CTree *n) {
 
45357
    AddSon (sons[0], v); AddSon (sons[1], a); AddSon (sons[2], n); 
 
45358
  }
 
45359
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45360
  static const char *NodeId ();
 
45361
  /** Get the name of the node. Can be compared with NodeId(). */
 
45362
  const char *NodeName () const { return NodeId (); }
 
45363
  /** Get the number of sons. */
 
45364
  int Sons () const { return CTree::Sons (sons, 3); }
 
45365
  /** Get the n-th son.
 
45366
   *  \param n The index of the son.
 
45367
   *  \return The n-th son or NULL. */
 
45368
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
45369
  /** Get the type of the access specifier (token type). */
 
45370
  int Access () const { return sons[1]->token ()->type (); }
 
45371
  /** The access specifier. */
 
45372
  CTree *AccessSpec () const { return sons[1]; }
 
45373
  /** Get the keyword 'virtual'. */
 
45374
  CTree *Virtual () const { return sons[0]; }
 
45375
  /** Get the name of the base class. */
 
45376
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
45377
  /** Replace a son.
 
45378
   *  \param old_son The son to replace.
 
45379
   *  \param new_son The new son. */
 
45380
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
45381
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
45382
  }
 
45383
public:
 
45384
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
45385
  const char *__attr_name (unsigned i) const {
 
45386
    static const char *names[] = { "sons" }; return names[i];
 
45387
  }
 
45388
  const void *__attr (unsigned __i) const {
 
45389
    switch (__i) { case 0: return &sons; default: return 0; }
 
45390
  }
 
45391
#line 4318 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45392
};
 
45393
 
 
45394
/** \class CT_AccessDecl CTree.h Puma/CTree.h
 
45395
 *  Tree node representing a member access declaration.
 
45396
 *  Example: \code m_BaseClassMember; \endcode */
 
45397
 
 
45398
#line 45399 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45399
} // closed Puma
 
45400
class CCExprResolve;
 
45401
class CExprResolve;
 
45402
class WinIfExists;
 
45403
class WinImportHandler;
 
45404
class WinMacros;
 
45405
class WinAsm;
 
45406
class WinDeclSpecs;
 
45407
class WinMemberExplSpec;
 
45408
class WinTypeKeywords;
 
45409
class WinFriend;
 
45410
class ExtAC;
 
45411
class ExtACBuilderCoupling;
 
45412
class ExtACSyntaxCoupling;
 
45413
class ExtACTree;
 
45414
class ExtACKeywords;
 
45415
class ExtGnu;
 
45416
class PragmaOnceUnitState;
 
45417
class PragmaOnce;
 
45418
class CMatchSyntax;
 
45419
namespace Puma {
 
45420
 
 
45421
#line 4323 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45422
class CT_AccessDecl : public CT_Decl {
 
45423
#line 45424 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45424
  friend class ::CCExprResolve;
 
45425
  friend class ::CExprResolve;
 
45426
  friend class ::WinIfExists;
 
45427
  friend class ::WinImportHandler;
 
45428
  friend class ::WinMacros;
 
45429
  friend class ::WinAsm;
 
45430
  friend class ::WinDeclSpecs;
 
45431
  friend class ::WinMemberExplSpec;
 
45432
  friend class ::WinTypeKeywords;
 
45433
  friend class ::WinFriend;
 
45434
  friend class ::ExtAC;
 
45435
  friend class ::ExtACBuilderCoupling;
 
45436
  friend class ::ExtACSyntaxCoupling;
 
45437
  friend class ::ExtACTree;
 
45438
  friend class ::ExtACKeywords;
 
45439
  friend class ::ExtGnu;
 
45440
  friend class ::PragmaOnceUnitState;
 
45441
  friend class ::PragmaOnce;
 
45442
  friend class ::CMatchSyntax;
 
45443
 
 
45444
#line 4323 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45445
 
 
45446
  CTree *sons[2]; // name, semi_colon
 
45447
 
 
45448
public:
 
45449
  /** Constructor.
 
45450
   *  \param n The name of the base class member.
 
45451
   *  \param s The trailing semi-colon. */
 
45452
  CT_AccessDecl (CTree *n, CTree *s) { AddSon (sons[0], n); AddSon (sons[1], s); }
 
45453
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45454
  static const char *NodeId ();
 
45455
  /** Get the name of the node. Can be compared with NodeId(). */
 
45456
  const char *NodeName () const { return NodeId (); }
 
45457
  /** Get the number of sons. */
 
45458
  int Sons () const { return 2; }
 
45459
  /** Get the n-th son.
 
45460
   *  \param n The index of the son.
 
45461
   *  \return The n-th son or NULL. */
 
45462
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
45463
  /** Get the name of the base class member. */
 
45464
  CT_QualName *Member () const { return (CT_QualName*)sons[0]; }
 
45465
  /** Replace a son.
 
45466
   *  \param old_son The son to replace.
 
45467
   *  \param new_son The new son. */
 
45468
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
45469
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
45470
  }
 
45471
public:
 
45472
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
45473
  const char *__attr_name (unsigned i) const {
 
45474
    static const char *names[] = { "sons" }; return names[i];
 
45475
  }
 
45476
  const void *__attr (unsigned __i) const {
 
45477
    switch (__i) { case 0: return &sons; default: return 0; }
 
45478
  }
 
45479
#line 4349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45480
};
 
45481
 
 
45482
/** \class CT_UsingDecl CTree.h Puma/CTree.h
 
45483
 *  Tree node representing a using declaration.
 
45484
 *  Example: \code using Base::m_Member; \endcode */
 
45485
 
 
45486
#line 45487 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45487
} // closed Puma
 
45488
class CCExprResolve;
 
45489
class CExprResolve;
 
45490
class WinIfExists;
 
45491
class WinImportHandler;
 
45492
class WinMacros;
 
45493
class WinAsm;
 
45494
class WinDeclSpecs;
 
45495
class WinMemberExplSpec;
 
45496
class WinTypeKeywords;
 
45497
class WinFriend;
 
45498
class ExtAC;
 
45499
class ExtACBuilderCoupling;
 
45500
class ExtACSyntaxCoupling;
 
45501
class ExtACTree;
 
45502
class ExtACKeywords;
 
45503
class ExtGnu;
 
45504
class PragmaOnceUnitState;
 
45505
class PragmaOnce;
 
45506
class CMatchSyntax;
 
45507
namespace Puma {
 
45508
 
 
45509
#line 4354 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45510
class CT_UsingDecl : public CT_AccessDecl {
 
45511
#line 45512 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45512
  friend class ::CCExprResolve;
 
45513
  friend class ::CExprResolve;
 
45514
  friend class ::WinIfExists;
 
45515
  friend class ::WinImportHandler;
 
45516
  friend class ::WinMacros;
 
45517
  friend class ::WinAsm;
 
45518
  friend class ::WinDeclSpecs;
 
45519
  friend class ::WinMemberExplSpec;
 
45520
  friend class ::WinTypeKeywords;
 
45521
  friend class ::WinFriend;
 
45522
  friend class ::ExtAC;
 
45523
  friend class ::ExtACBuilderCoupling;
 
45524
  friend class ::ExtACSyntaxCoupling;
 
45525
  friend class ::ExtACTree;
 
45526
  friend class ::ExtACKeywords;
 
45527
  friend class ::ExtGnu;
 
45528
  friend class ::PragmaOnceUnitState;
 
45529
  friend class ::PragmaOnce;
 
45530
  friend class ::CMatchSyntax;
 
45531
 
 
45532
#line 4354 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45533
 
 
45534
  CTree *sons[2]; // using, typename
 
45535
 
 
45536
public:
 
45537
  /** Constructor.
 
45538
   *  \param u The keyword 'using'.
 
45539
   *  \param n The name of the entity.
 
45540
   *  \param s The trailing semi-colon. */
 
45541
  CT_UsingDecl (CTree *u, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
45542
    AddSon (sons[0], u); AddSon (sons[1], 0); 
 
45543
  }
 
45544
  /** Constructor.
 
45545
   *  \param u The keyword 'using'.
 
45546
   *  \param t The keyword 'typename'.
 
45547
   *  \param n The name of the entity.
 
45548
   *  \param s The trailing semi-colon. */
 
45549
  CT_UsingDecl (CTree *u, CTree *t, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
45550
    AddSon (sons[0], u); AddSon (sons[1], t); 
 
45551
  }
 
45552
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45553
  static const char *NodeId ();
 
45554
  /** Get the name of the node. Can be compared with NodeId(). */
 
45555
  const char *NodeName () const { return NodeId (); }
 
45556
  /** Get the number of sons. */
 
45557
  int Sons () const { return CTree::Sons (sons, 2) + CT_AccessDecl::Sons (); }
 
45558
  /** Get the n-th son.
 
45559
   *  \param n The index of the son.
 
45560
   *  \return The n-th son or NULL. */
 
45561
  CTree *Son (int n) const {
 
45562
    int num = CTree::Sons (sons, 2);
 
45563
    CTree *result = CTree::Son (sons, 2, n);
 
45564
    return result ? result : CT_AccessDecl::Son (n-num);
 
45565
  }
 
45566
  /** Get the keyword 'typename'. */
 
45567
  CTree *Typename () const { return sons[1]; }
 
45568
  /** Replace a son.
 
45569
   *  \param old_son The son to replace.
 
45570
   *  \param new_son The new son. */
 
45571
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
45572
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
45573
    CT_AccessDecl::ReplaceSon (old_son, new_son);
 
45574
  }
 
45575
public:
 
45576
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
45577
  const char *__attr_name (unsigned i) const {
 
45578
    static const char *names[] = { "sons" }; return names[i];
 
45579
  }
 
45580
  const void *__attr (unsigned __i) const {
 
45581
    switch (__i) { case 0: return &sons; default: return 0; }
 
45582
  }
 
45583
#line 4396 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45584
};
 
45585
 
 
45586
/*****************************************************************************/
 
45587
/*                                                                           */
 
45588
/*                              Wildcards                                    */
 
45589
/*                                                                           */
 
45590
/*****************************************************************************/
 
45591
 
 
45592
/** \class CT_Any CTree.h Puma/CTree.h
 
45593
 *  Tree node representing a wildcard. */
 
45594
 
 
45595
#line 45596 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45596
} // closed Puma
 
45597
class CCExprResolve;
 
45598
class CExprResolve;
 
45599
class WinIfExists;
 
45600
class WinImportHandler;
 
45601
class WinMacros;
 
45602
class WinAsm;
 
45603
class WinDeclSpecs;
 
45604
class WinMemberExplSpec;
 
45605
class WinTypeKeywords;
 
45606
class WinFriend;
 
45607
class ExtAC;
 
45608
class ExtACBuilderCoupling;
 
45609
class ExtACSyntaxCoupling;
 
45610
class ExtACTree;
 
45611
class ExtACKeywords;
 
45612
class ExtGnu;
 
45613
class PragmaOnceUnitState;
 
45614
class PragmaOnce;
 
45615
class CMatchSyntax;
 
45616
namespace Puma {
 
45617
 
 
45618
#line 4406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45619
class CT_Any : public CTree {
 
45620
#line 45621 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45621
  friend class ::CCExprResolve;
 
45622
  friend class ::CExprResolve;
 
45623
  friend class ::WinIfExists;
 
45624
  friend class ::WinImportHandler;
 
45625
  friend class ::WinMacros;
 
45626
  friend class ::WinAsm;
 
45627
  friend class ::WinDeclSpecs;
 
45628
  friend class ::WinMemberExplSpec;
 
45629
  friend class ::WinTypeKeywords;
 
45630
  friend class ::WinFriend;
 
45631
  friend class ::ExtAC;
 
45632
  friend class ::ExtACBuilderCoupling;
 
45633
  friend class ::ExtACSyntaxCoupling;
 
45634
  friend class ::ExtACTree;
 
45635
  friend class ::ExtACKeywords;
 
45636
  friend class ::ExtGnu;
 
45637
  friend class ::PragmaOnceUnitState;
 
45638
  friend class ::PragmaOnce;
 
45639
  friend class ::CMatchSyntax;
 
45640
 
 
45641
#line 4406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45642
 
 
45643
  CTree *sons[2]; // keyword, extension
 
45644
 
 
45645
public:
 
45646
  /** Constructor.
 
45647
   *  \param k The wildcard keyword.
 
45648
   *  \param e The extension. */
 
45649
  CT_Any (CTree *k, CTree *e = (CTree*)0) { AddSon (sons[0], k); AddSon (sons[1], e); }
 
45650
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45651
  static const char *NodeId ();
 
45652
  /** Get the name of the node. Can be compared with NodeId(). */
 
45653
  const char *NodeName () const { return NodeId (); }
 
45654
  /** Get the number of sons. */
 
45655
  int Sons () const { return CTree::Sons (sons, 2); }
 
45656
  /** Get the n-th son.
 
45657
   *  \param n The index of the son.
 
45658
   *  \return The n-th son or NULL. */
 
45659
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
45660
  /** Replace a son.
 
45661
   *  \param old_son The son to replace.
 
45662
   *  \param new_son The new son. */
 
45663
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
45664
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
45665
  }
 
45666
  /** Get the type of the wildcard (token type). */
 
45667
  int AnyType () const { return sons[0]->token ()->type (); }
 
45668
  /** Get the extension. */
 
45669
  CT_AnyExtension *Extension () const { return (CT_AnyExtension*)sons[1]; }
 
45670
public:
 
45671
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
45672
  const char *__attr_name (unsigned i) const {
 
45673
    static const char *names[] = { "sons" }; return names[i];
 
45674
  }
 
45675
  const void *__attr (unsigned __i) const {
 
45676
    switch (__i) { case 0: return &sons; default: return 0; }
 
45677
  }
 
45678
#line 4434 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45679
};
 
45680
 
 
45681
/** \class CT_AnyList CTree.h Puma/CTree.h
 
45682
 *  Tree node representing a list wildcard. */
 
45683
 
 
45684
#line 45685 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45685
} // closed Puma
 
45686
class CCExprResolve;
 
45687
class CExprResolve;
 
45688
class WinIfExists;
 
45689
class WinImportHandler;
 
45690
class WinMacros;
 
45691
class WinAsm;
 
45692
class WinDeclSpecs;
 
45693
class WinMemberExplSpec;
 
45694
class WinTypeKeywords;
 
45695
class WinFriend;
 
45696
class ExtAC;
 
45697
class ExtACBuilderCoupling;
 
45698
class ExtACSyntaxCoupling;
 
45699
class ExtACTree;
 
45700
class ExtACKeywords;
 
45701
class ExtGnu;
 
45702
class PragmaOnceUnitState;
 
45703
class PragmaOnce;
 
45704
class CMatchSyntax;
 
45705
namespace Puma {
 
45706
 
 
45707
#line 4438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45708
class CT_AnyList : public CT_Any {
 
45709
#line 45710 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45710
  friend class ::CCExprResolve;
 
45711
  friend class ::CExprResolve;
 
45712
  friend class ::WinIfExists;
 
45713
  friend class ::WinImportHandler;
 
45714
  friend class ::WinMacros;
 
45715
  friend class ::WinAsm;
 
45716
  friend class ::WinDeclSpecs;
 
45717
  friend class ::WinMemberExplSpec;
 
45718
  friend class ::WinTypeKeywords;
 
45719
  friend class ::WinFriend;
 
45720
  friend class ::ExtAC;
 
45721
  friend class ::ExtACBuilderCoupling;
 
45722
  friend class ::ExtACSyntaxCoupling;
 
45723
  friend class ::ExtACTree;
 
45724
  friend class ::ExtACKeywords;
 
45725
  friend class ::ExtGnu;
 
45726
  friend class ::PragmaOnceUnitState;
 
45727
  friend class ::PragmaOnce;
 
45728
  friend class ::CMatchSyntax;
 
45729
 
 
45730
#line 4438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45731
 
 
45732
public:
 
45733
  /** Constructor.
 
45734
   *  \param k The wildcard keyword.
 
45735
   *  \param e The extension. */
 
45736
  CT_AnyList (CTree *k, CTree *e = (CTree*)0) : CT_Any (k, e) {}
 
45737
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45738
  static const char *NodeId ();
 
45739
  /** Get the name of the node. Can be compared with NodeId(). */
 
45740
  const char *NodeName () const { return NodeId (); }
 
45741
public:
 
45742
  typedef AC::TLE __AttrTypes;
 
45743
  const char *__attr_name (unsigned i) const { return 0; }
 
45744
  const void *__attr (unsigned __i) const { return 0; }
 
45745
#line 4448 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45746
};
 
45747
 
 
45748
/** \class CT_AnyExtension CTree.h Puma/CTree.h
 
45749
 *  Tree node representing a wildcard extension. */
 
45750
 
 
45751
#line 45752 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45752
} // closed Puma
 
45753
class CCExprResolve;
 
45754
class CExprResolve;
 
45755
class WinIfExists;
 
45756
class WinImportHandler;
 
45757
class WinMacros;
 
45758
class WinAsm;
 
45759
class WinDeclSpecs;
 
45760
class WinMemberExplSpec;
 
45761
class WinTypeKeywords;
 
45762
class WinFriend;
 
45763
class ExtAC;
 
45764
class ExtACBuilderCoupling;
 
45765
class ExtACSyntaxCoupling;
 
45766
class ExtACTree;
 
45767
class ExtACKeywords;
 
45768
class ExtGnu;
 
45769
class PragmaOnceUnitState;
 
45770
class PragmaOnce;
 
45771
class CMatchSyntax;
 
45772
namespace Puma {
 
45773
 
 
45774
#line 4452 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45775
class CT_AnyExtension : public CTree, public CSemValue {
 
45776
#line 45777 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45777
  friend class ::CCExprResolve;
 
45778
  friend class ::CExprResolve;
 
45779
  friend class ::WinIfExists;
 
45780
  friend class ::WinImportHandler;
 
45781
  friend class ::WinMacros;
 
45782
  friend class ::WinAsm;
 
45783
  friend class ::WinDeclSpecs;
 
45784
  friend class ::WinMemberExplSpec;
 
45785
  friend class ::WinTypeKeywords;
 
45786
  friend class ::WinFriend;
 
45787
  friend class ::ExtAC;
 
45788
  friend class ::ExtACBuilderCoupling;
 
45789
  friend class ::ExtACSyntaxCoupling;
 
45790
  friend class ::ExtACTree;
 
45791
  friend class ::ExtACKeywords;
 
45792
  friend class ::ExtGnu;
 
45793
  friend class ::PragmaOnceUnitState;
 
45794
  friend class ::PragmaOnce;
 
45795
  friend class ::CMatchSyntax;
 
45796
 
 
45797
#line 4452 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45798
 
 
45799
  CTree *sons[5]; // open, string, comma, cond, close
 
45800
 
 
45801
public:
 
45802
  /** Constructor.
 
45803
   *  \param o Left parenthesis before the extension. 
 
45804
   *  \param n The name of the extension.
 
45805
   *  \param co The comma between the name and the condition. 
 
45806
   *  \param c The condition.
 
45807
   *  \param cr Right parenthesis behind the extension. */
 
45808
  CT_AnyExtension (CTree *o, CTree *n, CTree *co, CTree *c, CTree *cr) {
 
45809
    AddSon (sons[0], o); AddSon (sons[1], n); AddSon (sons[2], co); 
 
45810
    AddSon (sons[3], c); AddSon (sons[4], cr); 
 
45811
  }
 
45812
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45813
  static const char *NodeId ();
 
45814
  /** Get the name of the node. Can be compared with NodeId(). */
 
45815
  const char *NodeName () const { return NodeId (); }
 
45816
  /** Get the number of sons. */
 
45817
  int Sons () const { return CTree::Sons (sons, 5); }
 
45818
  /** Get the n-th son.
 
45819
   *  \param n The index of the son.
 
45820
   *  \return The n-th son or NULL. */
 
45821
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
45822
  /** Replace a son.
 
45823
   *  \param old_son The son to replace.
 
45824
   *  \param new_son The new son. */
 
45825
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
45826
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
45827
  }
 
45828
  /** Get the condition. */
 
45829
  CTree *Condition () const { return sons[3]; }
 
45830
  /** Get the name string. */
 
45831
  CT_Token *String () const { return (CT_Token*)sons[1]; }
 
45832
  /** Get the extension name. */
 
45833
  const char *Name () const { return value ? value->StrLiteral ()->String () : (const char*)0; }
 
45834
  /** Get the value of the extension (the name). */
 
45835
  CExprValue *Value () const { return value; }
 
45836
  /** Get the semantic value information object. */
 
45837
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
45838
public:
 
45839
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
45840
  const char *__attr_name (unsigned i) const {
 
45841
    static const char *names[] = { "sons" }; return names[i];
 
45842
  }
 
45843
  const void *__attr (unsigned __i) const {
 
45844
    switch (__i) { case 0: return &sons; default: return 0; }
 
45845
  }
 
45846
#line 4492 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45847
};
 
45848
 
 
45849
/** \class CT_AnyCondition CTree.h Puma/CTree.h
 
45850
 *  Tree node representing the condition of a wildcard. */
 
45851
 
 
45852
#line 45853 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45853
} // closed Puma
 
45854
class CCExprResolve;
 
45855
class CExprResolve;
 
45856
class WinIfExists;
 
45857
class WinImportHandler;
 
45858
class WinMacros;
 
45859
class WinAsm;
 
45860
class WinDeclSpecs;
 
45861
class WinMemberExplSpec;
 
45862
class WinTypeKeywords;
 
45863
class WinFriend;
 
45864
class ExtAC;
 
45865
class ExtACBuilderCoupling;
 
45866
class ExtACSyntaxCoupling;
 
45867
class ExtACTree;
 
45868
class ExtACKeywords;
 
45869
class ExtGnu;
 
45870
class PragmaOnceUnitState;
 
45871
class PragmaOnce;
 
45872
class CMatchSyntax;
 
45873
namespace Puma {
 
45874
 
 
45875
#line 4496 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45876
class CT_AnyCondition : public CTree {
 
45877
#line 45878 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45878
  friend class ::CCExprResolve;
 
45879
  friend class ::CExprResolve;
 
45880
  friend class ::WinIfExists;
 
45881
  friend class ::WinImportHandler;
 
45882
  friend class ::WinMacros;
 
45883
  friend class ::WinAsm;
 
45884
  friend class ::WinDeclSpecs;
 
45885
  friend class ::WinMemberExplSpec;
 
45886
  friend class ::WinTypeKeywords;
 
45887
  friend class ::WinFriend;
 
45888
  friend class ::ExtAC;
 
45889
  friend class ::ExtACBuilderCoupling;
 
45890
  friend class ::ExtACSyntaxCoupling;
 
45891
  friend class ::ExtACTree;
 
45892
  friend class ::ExtACKeywords;
 
45893
  friend class ::ExtGnu;
 
45894
  friend class ::PragmaOnceUnitState;
 
45895
  friend class ::PragmaOnce;
 
45896
  friend class ::CMatchSyntax;
 
45897
 
 
45898
#line 4496 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45899
 
 
45900
  CTree *sons[3]; // arg1, arg2, arg3
 
45901
 
 
45902
public:
 
45903
  /** Constructor.
 
45904
   *  \param a1 The first argument.
 
45905
   *  \param a2 The optional second argument.
 
45906
   *  \param a3 The optional third argument. */
 
45907
  CT_AnyCondition (CTree *a1, CTree *a2 = (CTree*)0, CTree *a3 = (CTree*)0) {
 
45908
    AddSon (sons[0], a1); AddSon (sons[1], a2); AddSon (sons[2], a3); 
 
45909
  }
 
45910
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
45911
  static const char *NodeId ();
 
45912
  /** Get the name of the node. Can be compared with NodeId(). */
 
45913
  const char *NodeName () const { return NodeId (); }
 
45914
  /** Get the number of sons. */
 
45915
  int Sons () const { return CTree::Sons (sons, 3); }
 
45916
  /** Get the n-th son.
 
45917
   *  \param n The index of the son.
 
45918
   *  \return The n-th son or NULL. */
 
45919
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
45920
  /** Replace a son.
 
45921
   *  \param old_son The son to replace.
 
45922
   *  \param new_son The new son. */
 
45923
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
45924
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
45925
  }
 
45926
public:
 
45927
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
45928
  const char *__attr_name (unsigned i) const {
 
45929
    static const char *names[] = { "sons" }; return names[i];
 
45930
  }
 
45931
  const void *__attr (unsigned __i) const {
 
45932
    switch (__i) { case 0: return &sons; default: return 0; }
 
45933
  }
 
45934
#line 4523 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
45935
};
 
45936
 
 
45937
 
 
45938
} // namespace Puma
 
45939
 
 
45940
#endif /* __CTree_h__ */
 
45941
 
 
45942
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
45943
namespace Puma {
 
45944
 
 
45945
 
 
45946
class CStructure;
 
45947
class CObjectInfo;
 
45948
class CTypeInfo;
 
45949
 
 
45950
 
 
45951
#line 45952 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45952
} // closed Puma
 
45953
class CCExprResolve;
 
45954
class CExprResolve;
 
45955
class WinIfExists;
 
45956
class WinImportHandler;
 
45957
class WinMacros;
 
45958
class WinAsm;
 
45959
class WinDeclSpecs;
 
45960
class WinMemberExplSpec;
 
45961
class WinTypeKeywords;
 
45962
class WinFriend;
 
45963
class ExtAC;
 
45964
class ExtACBuilderCoupling;
 
45965
class ExtACSyntaxCoupling;
 
45966
class ExtACTree;
 
45967
class ExtACKeywords;
 
45968
class ExtGnu;
 
45969
class PragmaOnceUnitState;
 
45970
class PragmaOnce;
 
45971
class CMatchSyntax;
 
45972
namespace Puma {
 
45973
 
 
45974
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
45975
class CSemVisitor : private CVisitor {
 
45976
#line 45977 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
45977
  friend class ::CCExprResolve;
 
45978
  friend class ::CExprResolve;
 
45979
  friend class ::WinIfExists;
 
45980
  friend class ::WinImportHandler;
 
45981
  friend class ::WinMacros;
 
45982
  friend class ::WinAsm;
 
45983
  friend class ::WinDeclSpecs;
 
45984
  friend class ::WinMemberExplSpec;
 
45985
  friend class ::WinTypeKeywords;
 
45986
  friend class ::WinFriend;
 
45987
  friend class ::ExtAC;
 
45988
  friend class ::ExtACBuilderCoupling;
 
45989
  friend class ::ExtACSyntaxCoupling;
 
45990
  friend class ::ExtACTree;
 
45991
  friend class ::ExtACKeywords;
 
45992
  friend class ::ExtGnu;
 
45993
  friend class ::PragmaOnceUnitState;
 
45994
  friend class ::PragmaOnce;
 
45995
  friend class ::CMatchSyntax;
 
45996
 
 
45997
#line 35 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
45998
 
 
45999
protected:
 
46000
  CStructure *current_scope;
 
46001
  ErrorSink &err;
 
46002
 
 
46003
public:
 
46004
  CSemVisitor (ErrorSink &, CStructure * = (CStructure*)0);
 
46005
 
 
46006
  void run (CTree *, CStructure * = (CStructure*)0);
 
46007
  void configure (Config &) {}
 
46008
 
 
46009
  CTypeInfo *resolveExpr (CTree *, CTree *) const;
 
46010
  void resolveInit (CObjectInfo *info, CTree *, CTree *) const;
 
46011
  
 
46012
protected:
 
46013
  void pre_visit (CTree *);
 
46014
  void post_visit (CTree *);
 
46015
 
 
46016
protected:
 
46017
  void pre_action (CT_Program *);
 
46018
  void pre_action (CT_ArgDeclList *);
 
46019
  void pre_action (CT_ArgNameList *);
 
46020
  void pre_action (CT_ArgDeclSeq *);
 
46021
  void pre_action (CT_MembList *);
 
46022
  void pre_action (CT_CmpdStmt *);
 
46023
  void pre_action (CT_IfStmt *);
 
46024
  void pre_action (CT_IfElseStmt *);
 
46025
  void pre_action (CT_SwitchStmt *);
 
46026
  void pre_action (CT_ForStmt *);
 
46027
  void pre_action (CT_WhileStmt *);
 
46028
  void pre_action (CT_DoStmt *);
 
46029
  void pre_action (CT_ExprStmt *);
 
46030
  void pre_action (CT_CaseStmt *);
 
46031
  void pre_action (CT_GotoStmt *);
 
46032
  void pre_action (CT_ReturnStmt *);
 
46033
  void pre_action (CT_InitDeclarator *);
 
46034
  void pre_action (CT_ArrayDeclarator *);
 
46035
  void pre_action (CT_BitFieldDeclarator *);
 
46036
  void pre_action (CT_EnumDef *);
 
46037
  void pre_action (CT_ExprList *);
 
46038
  void pre_action (CT_CmpdLiteral *);
 
46039
  
 
46040
protected:
 
46041
  void post_action (CT_Program *);
 
46042
  void post_action (CT_ArgDeclList *);
 
46043
  void post_action (CT_ArgNameList *);
 
46044
  void post_action (CT_ArgDeclSeq *);
 
46045
  void post_action (CT_MembList *);
 
46046
  void post_action (CT_CmpdStmt *);
 
46047
  void post_action (CT_IfStmt *);
 
46048
  void post_action (CT_IfElseStmt *);
 
46049
  void post_action (CT_SwitchStmt *);
 
46050
  void post_action (CT_ForStmt *);
 
46051
  void post_action (CT_WhileStmt *);
 
46052
 
 
46053
  CT_SimpleName *findName (CTree *) const;
 
46054
 
 
46055
private:
 
46056
  
 
46057
#line 46058 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46058
public: __attribute__((always_inline)) inline void __exec_old_check_goto_label(::Puma::CTree * );
 
46059
private:
 
46060
 
 
46061
#line 93 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
46062
void check_goto_label (CTree *);
 
46063
  
 
46064
public:
 
46065
  typedef AC::TL<Puma::CStructure *,AC::TL<Puma::ErrorSink &,AC::TLE > > __AttrTypes;
 
46066
  const char *__attr_name (unsigned i) const {
 
46067
    static const char *names[] = { "current_scope", "err" }; return names[i];
 
46068
  }
 
46069
  const void *__attr (unsigned __i) const {
 
46070
    switch (__i) { case 0: return &current_scope; case 1: return &err; default: return 0; }
 
46071
  }
 
46072
#line 95 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemVisitor.h"
 
46073
};
 
46074
 
 
46075
} // namespace Puma
 
46076
 
 
46077
#endif /* __CSemVisitor_h__ */
 
46078
 
 
46079
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
46080
 
 
46081
#line 46082 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46082
 
 
46083
#ifndef __ac_fwd_ExtGnu__
 
46084
#define __ac_fwd_ExtGnu__
 
46085
class ExtGnu;
 
46086
namespace AC {
 
46087
  template <class JoinPoint>
 
46088
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp);
 
46089
  template <class JoinPoint>
 
46090
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp);
 
46091
  template <class JoinPoint>
 
46092
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_around (JoinPoint *tjp);
 
46093
  template <class JoinPoint>
 
46094
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_after (JoinPoint *tjp);
 
46095
  template <class JoinPoint>
 
46096
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp);
 
46097
  template <class JoinPoint>
 
46098
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp);
 
46099
  template <class JoinPoint>
 
46100
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp);
 
46101
  template <class JoinPoint>
 
46102
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp);
 
46103
  template <class JoinPoint>
 
46104
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_around (JoinPoint *tjp);
 
46105
  template <class JoinPoint>
 
46106
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp);
 
46107
  template <class JoinPoint>
 
46108
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp);
 
46109
  template <class JoinPoint>
 
46110
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_after (JoinPoint *tjp);
 
46111
  template <class JoinPoint>
 
46112
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp);
 
46113
  template <class JoinPoint>
 
46114
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_before (JoinPoint *tjp);
 
46115
  template <class JoinPoint>
 
46116
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp);
 
46117
  template <class JoinPoint>
 
46118
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp);
 
46119
  template <class JoinPoint>
 
46120
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp);
 
46121
  template <class JoinPoint>
 
46122
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp);
 
46123
  template <class JoinPoint>
 
46124
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_after (JoinPoint *tjp);
 
46125
  template <class JoinPoint>
 
46126
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_after (JoinPoint *tjp);
 
46127
  template <class JoinPoint>
 
46128
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_before (JoinPoint *tjp);
 
46129
  template <class JoinPoint>
 
46130
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a21_around (JoinPoint *tjp);
 
46131
  template <class JoinPoint>
 
46132
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a22_after (JoinPoint *tjp);
 
46133
  template <class JoinPoint>
 
46134
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a23_before (JoinPoint *tjp);
 
46135
  template <class JoinPoint>
 
46136
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a24_around (JoinPoint *tjp);
 
46137
  template <class JoinPoint>
 
46138
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a25_after (JoinPoint *tjp);
 
46139
}
 
46140
#endif
 
46141
 
 
46142
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
46143
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
46144
#endif
 
46145
 
 
46146
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
46147
// This file is part of PUMA.
 
46148
// Copyright (C) 1999-2003  The PUMA developer team.
 
46149
//                                                                
 
46150
// This program is free software;  you can redistribute it and/or 
 
46151
// modify it under the terms of the GNU General Public License as 
 
46152
// published by the Free Software Foundation; either version 2 of 
 
46153
// the License, or (at your option) any later version.            
 
46154
//                                                                
 
46155
// This program is distributed in the hope that it will be useful,
 
46156
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
46157
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
46158
// GNU General Public License for more details.                   
 
46159
//                                                                
 
46160
// You should have received a copy of the GNU General Public      
 
46161
// License along with this program; if not, write to the Free     
 
46162
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
46163
// MA  02111-1307  USA                                            
 
46164
 
 
46165
#ifndef __c_sem_decl_specs_h__
 
46166
#define __c_sem_decl_specs_h__
 
46167
 
 
46168
/** \file
 
46169
 *  Semantic declaration specifier analysis. */
 
46170
 
 
46171
 
 
46172
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46173
 
 
46174
#line 46175 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46175
 
 
46176
#ifndef __ac_fwd_ExtACTree__
 
46177
#define __ac_fwd_ExtACTree__
 
46178
class ExtACTree;
 
46179
namespace AC {
 
46180
  template <class JoinPoint>
 
46181
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a0_after (JoinPoint *tjp);
 
46182
  template <class JoinPoint>
 
46183
  __attribute((always_inline)) inline void invoke_ExtACTree_ExtACTree_a1_before (JoinPoint *tjp);
 
46184
}
 
46185
#endif
 
46186
 
 
46187
#ifndef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
46188
#define __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
46189
#endif
 
46190
 
 
46191
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46192
// This file is part of PUMA.
 
46193
// Copyright (C) 1999-2003  The PUMA developer team.
 
46194
//                                                                
 
46195
// This program is free software;  you can redistribute it and/or 
 
46196
// modify it under the terms of the GNU General Public License as 
 
46197
// published by the Free Software Foundation; either version 2 of 
 
46198
// the License, or (at your option) any later version.            
 
46199
//                                                                
 
46200
// This program is distributed in the hope that it will be useful,
 
46201
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
46202
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
46203
// GNU General Public License for more details.                   
 
46204
//                                                                
 
46205
// You should have received a copy of the GNU General Public      
 
46206
// License along with this program; if not, write to the Free     
 
46207
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
46208
// MA  02111-1307  USA                                            
 
46209
 
 
46210
#ifndef __CTree_h__
 
46211
#define __CTree_h__
 
46212
 
 
46213
/** \file 
 
46214
 *  C/C++ syntax tree classes. */
 
46215
 
 
46216
namespace Puma {
 
46217
 
 
46218
 
 
46219
// Syntax tree node hierarchy:
 
46220
class CTree;
 
46221
class   CT_Statement;          
 
46222
class     CT_LabelStmt;
 
46223
class     CT_IfStmt;
 
46224
class     CT_IfElseStmt;
 
46225
class     CT_SwitchStmt;
 
46226
class     CT_BreakStmt;
 
46227
class     CT_ExprStmt;
 
46228
class     CT_WhileStmt;
 
46229
class     CT_DoStmt;
 
46230
class     CT_ForStmt;
 
46231
class     CT_ContinueStmt;
 
46232
class     CT_ReturnStmt;
 
46233
class     CT_GotoStmt;
 
46234
class     CT_DeclStmt;
 
46235
class     CT_CaseStmt;
 
46236
class     CT_DefaultStmt;
 
46237
class     CT_TryStmt;
 
46238
class   CT_Expression;
 
46239
class     CT_Call;
 
46240
class       CT_CallExpr;
 
46241
class       CT_ImplicitCall;
 
46242
class     CT_ThrowExpr;
 
46243
class     CT_NewExpr;
 
46244
class     CT_DeleteExpr;
 
46245
class     CT_ConstructExpr;
 
46246
class     CT_Integer;
 
46247
class     CT_Character;
 
46248
class       CT_WideCharacter;
 
46249
class     CT_Float;
 
46250
class     CT_Bool;
 
46251
class     CT_BracedExpr;
 
46252
class     CT_BinaryExpr;
 
46253
class       CT_MembPtrExpr;
 
46254
class         CT_MembRefExpr;
 
46255
class     CT_UnaryExpr;
 
46256
class       CT_PostfixExpr;
 
46257
class       CT_AddrExpr;
 
46258
class       CT_DerefExpr;
 
46259
class     CT_IfThenExpr;
 
46260
class     CT_CmpdLiteral;
 
46261
class     CT_IndexExpr;
 
46262
class     CT_CastExpr;
 
46263
class     CT_StaticCast;
 
46264
class       CT_ConstCast;
 
46265
class       CT_ReintCast;
 
46266
class       CT_DynamicCast;
 
46267
class     CT_TypeidExpr;
 
46268
class     CT_SizeofExpr;
 
46269
class     CT_AlignofExpr;
 
46270
class     CT_TypeTraitExpr;
 
46271
class     CT_OffsetofExpr;
 
46272
class     CT_MembDesignator;
 
46273
class     CT_IndexDesignator;
 
46274
class     CT_ImplicitCast;
 
46275
class     CT_MembInit;
 
46276
class   CT_DeclSpec;
 
46277
class     CT_PrimDeclSpec;
 
46278
class     CT_NamedType;
 
46279
class     CT_ClassSpec;
 
46280
class       CT_UnionSpec;
 
46281
class       CT_EnumSpec;
 
46282
class     CT_ExceptionSpec;
 
46283
class   CT_Declarator;
 
46284
class     CT_InitDeclarator;
 
46285
class     CT_BracedDeclarator;
 
46286
class     CT_ArrayDeclarator;
 
46287
class     CT_FctDeclarator;
 
46288
class     CT_RefDeclarator;
 
46289
class     CT_PtrDeclarator;
 
46290
class     CT_MembPtrDeclarator;
 
46291
class     CT_BitFieldDeclarator;
 
46292
class   CT_Decl;
 
46293
class     CT_ObjDecl;
 
46294
class     CT_ArgDecl;
 
46295
class     CT_AccessDecl;
 
46296
class       CT_UsingDecl;
 
46297
class     CT_FctDef;
 
46298
class     CT_AsmDef;
 
46299
class     CT_EnumDef;
 
46300
class     CT_ClassDef;
 
46301
class       CT_UnionDef;
 
46302
class     CT_Enumerator;
 
46303
class     CT_LinkageSpec;
 
46304
class     CT_Handler;
 
46305
class     CT_TemplateDecl;
 
46306
class     CT_TemplateParamDecl;
 
46307
class       CT_TypeParamDecl;
 
46308
class       CT_NonTypeParamDecl;
 
46309
class     CT_NamespaceDef;
 
46310
class     CT_NamespaceAliasDef;
 
46311
class     CT_UsingDirective;
 
46312
class     CT_Condition;
 
46313
class   CT_List;
 
46314
class     CT_CmpdStmt;
 
46315
class     CT_DeclSpecSeq;
 
46316
class     CT_HandlerSeq;
 
46317
class     CT_DesignatorSeq;
 
46318
class     CT_DeclList;
 
46319
class       CT_Program;
 
46320
class       CT_ArgDeclList;
 
46321
class         CT_ArgNameList;
 
46322
class       CT_ArgDeclSeq;
 
46323
class       CT_MembList;
 
46324
class     CT_ExprList;
 
46325
class     CT_DeclaratorList;
 
46326
class     CT_BaseSpecList;
 
46327
class     CT_MembInitList;
 
46328
class     CT_SimpleName;
 
46329
class       CT_SpecialName;
 
46330
class         CT_PrivateName;
 
46331
class         CT_OperatorName;
 
46332
class         CT_DestructorName;
 
46333
class         CT_ConversionName;
 
46334
class         CT_TemplateName;
 
46335
class       CT_QualName;
 
46336
class         CT_RootQualName;
 
46337
class     CT_String;
 
46338
class       CT_WideString;
 
46339
class     CT_TemplateParamList;
 
46340
class     CT_TemplateArgList;
 
46341
class   CT_Token;
 
46342
class   CT_Error;
 
46343
class   CT_BaseSpec;
 
46344
class   CT_AccessSpec;
 
46345
class   CT_ArrayDelimiter;
 
46346
class   CT_Any;
 
46347
class   CT_AnyList;
 
46348
class   CT_AnyExtension;
 
46349
class   CT_AnyCondition;
 
46350
 
 
46351
 
 
46352
} // namespace Puma
 
46353
 
 
46354
#include "Puma/ErrorSeverity.h"
 
46355
#include "Puma/CSemObject.h"
 
46356
#include "Puma/CSemScope.h"
 
46357
#include "Puma/CSemValue.h"
 
46358
#include "Puma/CExprValue.h"
 
46359
#include "Puma/CStrLiteral.h"
 
46360
#include "Puma/CTypeInfo.h"
 
46361
#include "Puma/Printable.h"
 
46362
#include "Puma/CTokens.h"
 
46363
#include "Puma/Token.h"
 
46364
 
 
46365
#include <iostream>
 
46366
#include <map>
 
46367
#include <string.h>
 
46368
using namespace std;
 
46369
 
 
46370
namespace Puma {
 
46371
 
 
46372
 
 
46373
class ErrorStream;
 
46374
class CObjectInfo;
 
46375
class CStructure;
 
46376
 
 
46377
/*****************************************************************************/
 
46378
/*                                                                           */
 
46379
/*                    S y n t a x  t r e e  n o d e s                        */
 
46380
/*                                                                           */
 
46381
/*****************************************************************************/
 
46382
 
 
46383
/** \class CTree CTree.h Puma/CTree.h
 
46384
 *  Base class for all C/C++ syntax tree classes. 
 
46385
 *
 
46386
 *  The syntax tree is the result of the syntactic analysis of the input source 
 
46387
 *  code representing its syntactic structure according to the accepted grammar
 
46388
 *  (see class Syntax). 
 
46389
 *
 
46390
 *  Objects of this class and classes derived from this class are created by 
 
46391
 *  the tree builder component of %Puma during the parse process. A syntax tree 
 
46392
 *  shall be destroyed using the tree builder that has created it by calling its 
 
46393
 *  method Builder::destroy(CTree*) with the root node of the syntax tree as its 
 
46394
 *  argument.
 
46395
 *  
 
46396
 *  The navigation in the syntax tree is done using the methods CTree::Parent(), 
 
46397
 *  CTree::Sons(), and CTree::Son(int) const. In a syntax tree "sons" are 
 
46398
 *  understood as the syntactic child nodes of a syntax tree node, whereas 
 
46399
 *  "daughters" are understood are their semantic child nodes. 
 
46400
 *
 
46401
 *  Another way to traverse a syntax tree is to implement an own tree visitor 
 
46402
 *  based on class Puma::CVisitor. This is recommended especially for larger 
 
46403
 *  syntax trees.
 
46404
 *
 
46405
 *  A syntax tree node can be identified by comparing its node name with the node 
 
46406
 *  identifier of the expected syntax tree node:
 
46407
 *  \code if (node->NodeName() == Puma::CT_BinaryExpr::NodeId()) ... \endcode
 
46408
 *  
 
46409
 *  Based on the syntax tree further semantic analyses can be performed. Semantic 
 
46410
 *  information, like scope, value, type, and object information, is linked into 
 
46411
 *  the syntax tree. It can be accessed using the methods CTree::SemScope(), 
 
46412
 *  CTree::SemValue(), and CTree::SemObject(). Some nodes provide short-cuts to
 
46413
 *  the semantic type and value information by implementing the methods 
 
46414
 *  CTree::Type() and CTree::Value().
 
46415
 *
 
46416
 *  The information of the syntax tree can be used to perform high-level 
 
46417
 *  transformations of the source code (see class ManipCommander). */
 
46418
 
 
46419
#line 46420 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46420
} // closed Puma
 
46421
class CCExprResolve;
 
46422
class CExprResolve;
 
46423
class WinIfExists;
 
46424
class WinImportHandler;
 
46425
class WinMacros;
 
46426
class WinAsm;
 
46427
class WinDeclSpecs;
 
46428
class WinMemberExplSpec;
 
46429
class WinTypeKeywords;
 
46430
class WinFriend;
 
46431
class ExtAC;
 
46432
class ExtACBuilderCoupling;
 
46433
class ExtACSyntaxCoupling;
 
46434
class ExtACTree;
 
46435
class ExtACKeywords;
 
46436
class ExtGnu;
 
46437
class PragmaOnceUnitState;
 
46438
class PragmaOnce;
 
46439
class CMatchSyntax;
 
46440
namespace Puma {
 
46441
 
 
46442
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46443
 
 
46444
#line 46445 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46445
} // closed Puma
 
46446
 
 
46447
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
46448
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
46449
#include "CCExprResolveH.ah"
 
46450
#endif
 
46451
namespace Puma {
 
46452
 
 
46453
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46454
 
 
46455
#line 46456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46456
} // closed Puma
 
46457
 
 
46458
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
46459
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
46460
#include "CExprResolveH.ah"
 
46461
#endif
 
46462
namespace Puma {
 
46463
 
 
46464
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46465
class CTree {
 
46466
#line 46467 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46467
  friend class ::CCExprResolve;
 
46468
  friend class ::CExprResolve;
 
46469
  friend class ::WinIfExists;
 
46470
  friend class ::WinImportHandler;
 
46471
  friend class ::WinMacros;
 
46472
  friend class ::WinAsm;
 
46473
  friend class ::WinDeclSpecs;
 
46474
  friend class ::WinMemberExplSpec;
 
46475
  friend class ::WinTypeKeywords;
 
46476
  friend class ::WinFriend;
 
46477
  friend class ::ExtAC;
 
46478
  friend class ::ExtACBuilderCoupling;
 
46479
  friend class ::ExtACSyntaxCoupling;
 
46480
  friend class ::ExtACTree;
 
46481
  friend class ::ExtACKeywords;
 
46482
  friend class ::ExtGnu;
 
46483
  friend class ::PragmaOnceUnitState;
 
46484
  friend class ::PragmaOnce;
 
46485
  friend class ::CMatchSyntax;
 
46486
 
 
46487
#line 227 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46488
 
 
46489
  CTree * _parent;
 
46490
 
 
46491
public:
 
46492
  /*DEBUG*/static int alloc;
 
46493
  /*DEBUG*/static int release;
 
46494
 
 
46495
protected:
 
46496
  /** Get the n-th son from given sons array. Skips empty (NULL) array items.
 
46497
   *  \param sons The sons array.
 
46498
   *  \param len Length of the sons array.
 
46499
   *  \param n Index of the son.
 
46500
   *  \return The n-th son or NULL. */
 
46501
  CTree *Son (CTree * const *sons, int len, int n) const;
 
46502
  /** Get the number of sons in the given sons array. Skips empty (NULL) array items.
 
46503
   *  \param sons The sons array.
 
46504
   *  \param len Length of the sons array. */
 
46505
  int Sons (CTree * const *sons, int len) const;
 
46506
  /** Replace a son.
 
46507
   *  \param sons The sons array.
 
46508
   *  \param len Length of the sons array.
 
46509
   *  \param old_son The son to replace.
 
46510
   *  \param new_son The new son. */
 
46511
  void ReplaceSon (CTree **sons, int len, CTree *old_son, CTree *new_son);
 
46512
  /** Replace a son if it equals the given son.
 
46513
   *  \param son The actual son.
 
46514
   *  \param old_son The son to replace, must match the actual son.
 
46515
   *  \param new_son The new son, overwrites the actual son. */
 
46516
  void ReplaceSon (CTree *&son, CTree *old_son, CTree *new_son);
 
46517
  /** Add a new son.
 
46518
   *  \param son The actual son.
 
46519
   *  \param new_son The new son, overwrites the actual son. */
 
46520
  void AddSon (CTree *&son, CTree *new_son);
 
46521
  /** Set the parent tree node.
 
46522
   *  \param parent The new parent tree node. */
 
46523
  void SetParent (const CTree *parent) { _parent = (CTree*)parent; }
 
46524
  /** Set the parent tree node of the given tree node.
 
46525
   *  \param node The tree node.
 
46526
   *  \param parent The new parent. */
 
46527
  void SetParent (CTree *node, const CTree *parent) { node->_parent = (CTree*)parent; }
 
46528
  
 
46529
protected:
 
46530
  /** Default constructor. */
 
46531
  CTree () : _parent(0) { /*DEBUG*/alloc++; }
 
46532
 
 
46533
public:
 
46534
  /** Destructor. */
 
46535
  virtual ~CTree () { /*DEBUG*/release++; }
 
46536
  /** Get the number of sons. */
 
46537
  virtual int Sons () const = 0;
 
46538
  /** Get the n-th son.
 
46539
   *  \param n The index of the son.
 
46540
   *  \return The n-th son or NULL. */
 
46541
  virtual CTree *Son (int n) const { return (CTree*)0; }
 
46542
  /** Get the node name (node identifier). */
 
46543
  virtual const char *NodeName () const = 0;
 
46544
  /** Get the first token of the syntactic construct represented by this sub-tree.
 
46545
   *  \return The token or NULL. */
 
46546
  virtual Token *token () const;
 
46547
  /** Get the last token of the syntactic construct represented by this sub-tree.
 
46548
   *  \return The token or NULL. */
 
46549
  virtual Token *end_token () const;
 
46550
  /** Get the CT_Token node of the first token of the syntactic construct represented by this sub-tree.
 
46551
   *  \return The token node or NULL. */
 
46552
  virtual CT_Token *token_node () const;
 
46553
  /** Get the CT_Token node of the last token of the syntactic construct represented by this sub-tree.
 
46554
   *  \return The token node or NULL. */
 
46555
  virtual CT_Token *end_token_node () const;
 
46556
  /** Replace a son.
 
46557
   *  \param old_son The son to replace.
 
46558
   *  \param new_son The son with which to replace. */
 
46559
  virtual void ReplaceSon (CTree *old_son, CTree *new_son) {}
 
46560
  /** Get the parent node.
 
46561
   *  \return The parent node or NULL. */
 
46562
  virtual CTree *Parent () const { return (CTree*)_parent; }
 
46563
 
 
46564
public: // semantic information
 
46565
  /** Get the semantic type of the node.
 
46566
   *  \return The type object or NULL. */
 
46567
  virtual CTypeInfo *Type () const { return (CTypeInfo*)0; }
 
46568
  /** Get the calculated value of the expression.
 
46569
   *  \return The value object or NULL. */
 
46570
  virtual CExprValue *Value () const { return (CExprValue*)0; }
 
46571
  
 
46572
  /** Get the scope opened by the node.
 
46573
   *  \return The scope object or NULL. */
 
46574
  virtual CSemScope *SemScope () const { return (CSemScope*)0; }
 
46575
  /** Get the semantic value of the node.
 
46576
   *  \return The value object or NULL. */
 
46577
  virtual CSemValue *SemValue () const { return (CSemValue*)0; }
 
46578
  /** Get the semantic information of the node.
 
46579
   *  \return The semantic object or NULL. */
 
46580
  virtual CSemObject *SemObject () const { return (CSemObject*)0; }
 
46581
  
 
46582
public: // node classification function
 
46583
  /** Get a pointer to CT_SimpleName if the current node represents a name.
 
46584
   *  \return The CT_SimpleName node or NULL. */
 
46585
  virtual CT_SimpleName *IsSimpleName () { return 0; }
 
46586
  /** Get a pointer to CT_String if the current node represents a string.
 
46587
   *  \return The CT_String node or NULL. */
 
46588
  virtual CT_String *IsString () { return 0; }
 
46589
  /** Get a pointer to CT_Declarator if the current node represents a declarator.
 
46590
   *  \return The CT_Declarator pointer or NULL. */
 
46591
  virtual CT_Declarator *IsDeclarator () { return 0; }
 
46592
  /** Get a pointer to CT_Statement if the current node represents a statement.
 
46593
   *  \return The CT_Statement pointer or NULL. */
 
46594
  virtual CT_Statement *IsStatement () { return 0; }
 
46595
  /** Get a pointer to CT_Expression if the current node represents a expression.
 
46596
   *  \return The CT_Expression pointer or NULL. */
 
46597
  virtual CT_Expression *IsExpression () { return 0; }
 
46598
  /** Get a pointer to CT_Decl if the current node represents a declaration.
 
46599
   *  \return The CT_Decl pointer or NULL. */
 
46600
  virtual CT_Decl *IsDeclaration () { return 0; }
 
46601
  /** Get a pointer to CT_Call if the current node represents a call expression.
 
46602
   *  \return The CT_Call pointer or NULL. */
 
46603
  virtual CT_Call *IsCall () { return 0; }
 
46604
   private:
 
46605
  typedef CTree CCExprResolveCTree;
 
46606
 
 
46607
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
46608
 public :
 
46609
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
46610
  typedef CTree CExprResolveCTree;
 
46611
 
 
46612
#line 32 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
46613
 public :
 
46614
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
46615
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
46616
  const char *__attr_name (unsigned i) const {
 
46617
    static const char *names[] = { "_parent" }; return names[i];
 
46618
  }
 
46619
  const void *__attr (unsigned __i) const {
 
46620
    switch (__i) { case 0: return &_parent; default: return 0; }
 
46621
  }
 
46622
#line 343 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46623
};
 
46624
 
 
46625
/** \class CT_Error CTree.h Puma/CTree.h
 
46626
 *  Error tree node that is inserted into the tree for syntactic constructs
 
46627
 *  that could not be parsed. */
 
46628
 
 
46629
#line 46630 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46630
} // closed Puma
 
46631
class CCExprResolve;
 
46632
class CExprResolve;
 
46633
class WinIfExists;
 
46634
class WinImportHandler;
 
46635
class WinMacros;
 
46636
class WinAsm;
 
46637
class WinDeclSpecs;
 
46638
class WinMemberExplSpec;
 
46639
class WinTypeKeywords;
 
46640
class WinFriend;
 
46641
class ExtAC;
 
46642
class ExtACBuilderCoupling;
 
46643
class ExtACSyntaxCoupling;
 
46644
class ExtACTree;
 
46645
class ExtACKeywords;
 
46646
class ExtGnu;
 
46647
class PragmaOnceUnitState;
 
46648
class PragmaOnce;
 
46649
class CMatchSyntax;
 
46650
namespace Puma {
 
46651
 
 
46652
#line 348 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46653
class CT_Error : public CTree {
 
46654
#line 46655 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46655
  friend class ::CCExprResolve;
 
46656
  friend class ::CExprResolve;
 
46657
  friend class ::WinIfExists;
 
46658
  friend class ::WinImportHandler;
 
46659
  friend class ::WinMacros;
 
46660
  friend class ::WinAsm;
 
46661
  friend class ::WinDeclSpecs;
 
46662
  friend class ::WinMemberExplSpec;
 
46663
  friend class ::WinTypeKeywords;
 
46664
  friend class ::WinFriend;
 
46665
  friend class ::ExtAC;
 
46666
  friend class ::ExtACBuilderCoupling;
 
46667
  friend class ::ExtACSyntaxCoupling;
 
46668
  friend class ::ExtACTree;
 
46669
  friend class ::ExtACKeywords;
 
46670
  friend class ::ExtGnu;
 
46671
  friend class ::PragmaOnceUnitState;
 
46672
  friend class ::PragmaOnce;
 
46673
  friend class ::CMatchSyntax;
 
46674
 
 
46675
#line 348 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46676
 
 
46677
public:
 
46678
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
46679
  static const char *NodeId ();
 
46680
  /** Get the name of the node. Can be compared with NodeId(). */
 
46681
  const char *NodeName () const { return NodeId (); }
 
46682
  /** Get the number of sons. */
 
46683
  int Sons () const { return 0; }
 
46684
public:
 
46685
  typedef AC::TLE __AttrTypes;
 
46686
  const char *__attr_name (unsigned i) const { return 0; }
 
46687
  const void *__attr (unsigned __i) const { return 0; }
 
46688
#line 356 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46689
};
 
46690
 
 
46691
/** \class CT_Token CTree.h Puma/CTree.h
 
46692
 *  Tree node representing a single token in the source code. */
 
46693
 
 
46694
#line 46695 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46695
} // closed Puma
 
46696
class CCExprResolve;
 
46697
class CExprResolve;
 
46698
class WinIfExists;
 
46699
class WinImportHandler;
 
46700
class WinMacros;
 
46701
class WinAsm;
 
46702
class WinDeclSpecs;
 
46703
class WinMemberExplSpec;
 
46704
class WinTypeKeywords;
 
46705
class WinFriend;
 
46706
class ExtAC;
 
46707
class ExtACBuilderCoupling;
 
46708
class ExtACSyntaxCoupling;
 
46709
class ExtACTree;
 
46710
class ExtACKeywords;
 
46711
class ExtGnu;
 
46712
class PragmaOnceUnitState;
 
46713
class PragmaOnce;
 
46714
class CMatchSyntax;
 
46715
namespace Puma {
 
46716
 
 
46717
#line 360 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46718
class CT_Token : public CTree {
 
46719
#line 46720 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46720
  friend class ::CCExprResolve;
 
46721
  friend class ::CExprResolve;
 
46722
  friend class ::WinIfExists;
 
46723
  friend class ::WinImportHandler;
 
46724
  friend class ::WinMacros;
 
46725
  friend class ::WinAsm;
 
46726
  friend class ::WinDeclSpecs;
 
46727
  friend class ::WinMemberExplSpec;
 
46728
  friend class ::WinTypeKeywords;
 
46729
  friend class ::WinFriend;
 
46730
  friend class ::ExtAC;
 
46731
  friend class ::ExtACBuilderCoupling;
 
46732
  friend class ::ExtACSyntaxCoupling;
 
46733
  friend class ::ExtACTree;
 
46734
  friend class ::ExtACKeywords;
 
46735
  friend class ::ExtGnu;
 
46736
  friend class ::PragmaOnceUnitState;
 
46737
  friend class ::PragmaOnce;
 
46738
  friend class ::CMatchSyntax;
 
46739
 
 
46740
#line 360 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46741
 
 
46742
  Token *_token;
 
46743
  unsigned long int _number;
 
46744
  
 
46745
public:
 
46746
  /** Constructor. 
 
46747
   *  \param token The represented token.
 
46748
   *  \param number The token number (a consecutive number). */
 
46749
  CT_Token (Token *token, unsigned long int number = 0) : 
 
46750
    _token (token), _number (number) {}
 
46751
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
46752
  static const char *NodeId ();
 
46753
  /** Get the name of the node. Can be compared with NodeId(). */
 
46754
  const char *NodeName () const { return NodeId (); }
 
46755
  /** Get the number of sons. */
 
46756
  int Sons () const { return 0; }
 
46757
  /** Get the represented token. */
 
46758
  Token *token () const { return _token; }
 
46759
  /** Get the represented token. */
 
46760
  Token *end_token () const { return _token; }
 
46761
  /** Get this. */
 
46762
  CT_Token *token_node () const { return (CT_Token*)this; }
 
46763
  /** Get this. */
 
46764
  CT_Token *end_token_node () const { return (CT_Token*)this; }
 
46765
  /** Set the token number. 
 
46766
   *  \param number The token number. */ 
 
46767
  void Number (unsigned long int number) { _number = number; }
 
46768
  /** Get the token number. Can be used to indentify this token. */
 
46769
  unsigned long int Number () const { return _number; }
 
46770
  
 
46771
public:
 
46772
  /** Own new operator reusing memory. */
 
46773
  void *operator new (size_t);
 
46774
  /** Own delete operator. */
 
46775
  void operator delete (void *);
 
46776
public:
 
46777
  typedef AC::TL<Puma::Token *,AC::TL<unsigned long int,AC::TLE > > __AttrTypes;
 
46778
  const char *__attr_name (unsigned i) const {
 
46779
    static const char *names[] = { "_token", "_number" }; return names[i];
 
46780
  }
 
46781
  const void *__attr (unsigned __i) const {
 
46782
    switch (__i) { case 0: return &_token; case 1: return &_number; default: return 0; }
 
46783
  }
 
46784
#line 395 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46785
};
 
46786
 
 
46787
/*****************************************************************************/
 
46788
/*                                                                           */
 
46789
/*                              List nodes                                   */
 
46790
/*                                                                           */
 
46791
/*****************************************************************************/
 
46792
 
 
46793
/** \class CT_List CTree.h Puma/CTree.h
 
46794
 *  Base class for tree nodes representing lists. */
 
46795
 
 
46796
#line 46797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46797
} // closed Puma
 
46798
class CCExprResolve;
 
46799
class CExprResolve;
 
46800
class WinIfExists;
 
46801
class WinImportHandler;
 
46802
class WinMacros;
 
46803
class WinAsm;
 
46804
class WinDeclSpecs;
 
46805
class WinMemberExplSpec;
 
46806
class WinTypeKeywords;
 
46807
class WinFriend;
 
46808
class ExtAC;
 
46809
class ExtACBuilderCoupling;
 
46810
class ExtACSyntaxCoupling;
 
46811
class ExtACTree;
 
46812
class ExtACKeywords;
 
46813
class ExtGnu;
 
46814
class PragmaOnceUnitState;
 
46815
class PragmaOnce;
 
46816
class CMatchSyntax;
 
46817
namespace Puma {
 
46818
 
 
46819
#line 405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46820
class CT_List : public CTree {
 
46821
#line 46822 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46822
  friend class ::CCExprResolve;
 
46823
  friend class ::CExprResolve;
 
46824
  friend class ::WinIfExists;
 
46825
  friend class ::WinImportHandler;
 
46826
  friend class ::WinMacros;
 
46827
  friend class ::WinAsm;
 
46828
  friend class ::WinDeclSpecs;
 
46829
  friend class ::WinMemberExplSpec;
 
46830
  friend class ::WinTypeKeywords;
 
46831
  friend class ::WinFriend;
 
46832
  friend class ::ExtAC;
 
46833
  friend class ::ExtACBuilderCoupling;
 
46834
  friend class ::ExtACSyntaxCoupling;
 
46835
  friend class ::ExtACTree;
 
46836
  friend class ::ExtACKeywords;
 
46837
  friend class ::ExtGnu;
 
46838
  friend class ::PragmaOnceUnitState;
 
46839
  friend class ::PragmaOnce;
 
46840
  friend class ::CMatchSyntax;
 
46841
 
 
46842
#line 405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46843
 
 
46844
  /** Son to index map type. */
 
46845
  typedef std::map<CTree*,int> SonToIndexMap;
 
46846
 
 
46847
  Array<CTree*> _sons;
 
46848
  int _properties;
 
46849
  SonToIndexMap _son2idx;
 
46850
 
 
46851
protected:
 
46852
  /** Constructor.
 
46853
   *  \param size The initial list size.
 
46854
   *  \param incr The initial increment count. 
 
46855
   *  \param props The list properties (bit array). */
 
46856
  CT_List(int size = 5, int incr = 5, int props = 0) : 
 
46857
    _sons (size, incr), _properties (props) {}
 
46858
 
 
46859
public:
 
46860
  /** %List properties. */
 
46861
  enum {
 
46862
    /** %List has a start token, like ':' in ":a(1),b(2)" */
 
46863
    OPEN = 1,         
 
46864
    /** %List has an end token */
 
46865
    CLOSE = 2,        
 
46866
    /** %List has opening and closing delimiters, like '(' and ')' */
 
46867
    OPEN_CLOSE = 3,   
 
46868
    /** %List has separators, like ',' */
 
46869
    SEPARATORS = 4,   
 
46870
    /** %List pretend to be empty, like for "(void)" */
 
46871
    FORCE_EMPTY = 8,  
 
46872
    /** %List has trailing separator, like "a,b,c," */
 
46873
    END_SEP = 16,     
 
46874
    /** %List has no separator before last element, like "(a,b...)" */
 
46875
    NO_LAST_SEP = 32, 
 
46876
    /** %List has an introduction chararacter, like "=" in "={a,b}" */
 
46877
    INTRO = 64        
 
46878
  };
 
46879
 
 
46880
  /** Get the number of list entries. */
 
46881
  int Entries () const;
 
46882
  /** Get the n-th list entry.
 
46883
   *  \param n The index of the entry. 
 
46884
   *  \return The list entry or NULL. */
 
46885
  CTree *Entry (int n) const;
 
46886
  /** Get the number of sons. */
 
46887
  int Sons () const { return _sons.length (); }
 
46888
  /** Get the n-th son.
 
46889
   *  \param n The index of the son. 
 
46890
   *  \return The n-th son or NULL. */
 
46891
  CTree *Son (int n) const { return _sons.lookup (n); }
 
46892
  /** Get the list properties. */
 
46893
  int GetProperties () const { return _properties; }
 
46894
  /** Add a list property.
 
46895
   *  \param p The property to add. */
 
46896
  void AddProperties (int p) { _properties |= p; }
 
46897
  /** Add a son.
 
46898
   *  \param s The son to add. */
 
46899
  void AddSon (CTree *s);
 
46900
  /** Prepend a son.
 
46901
   *  \param s The son to prepend. */
 
46902
  void PrefixSon (CTree *s);
 
46903
  /** Insert a son before another son.
 
46904
   *  \param before The son to insert the new son before.
 
46905
   *  \param son The son to insert. */
 
46906
  void InsertSon (CTree *before, CTree *son); 
 
46907
  /** Replace a son.
 
46908
   *  \param old_son The son to replace.
 
46909
   *  \param new_son The new son. */
 
46910
  void ReplaceSon (CTree *old_son, CTree *new_son);
 
46911
  /** Remove a son.
 
46912
   *  \param son The son to remove. */
 
46913
  void RemoveSon (CTree *son);
 
46914
  /** Insert a son at the given index. 
 
46915
   *  \param idx The index at which to insert.
 
46916
   *  \param s The son to insert. */
 
46917
  void InsertSon (int idx, CTree *s);
 
46918
  /** Replace the son at the given index.
 
46919
   *  \param idx The index of the son to replace.
 
46920
   *  \param s The new son. */
 
46921
  void ReplaceSon (int idx, CTree *s);
 
46922
  /** Remove the son at the given index. 
 
46923
   *  \param idx The index of the son to remove. */
 
46924
  void RemoveSon (int idx);
 
46925
public:
 
46926
  typedef AC::TL<Puma::Array< Puma::CTree * >,AC::TL<int,AC::TL<std::map< Puma::CTree *,int >,AC::TLE > > > __AttrTypes;
 
46927
  const char *__attr_name (unsigned i) const {
 
46928
    static const char *names[] = { "_sons", "_properties", "_son2idx" }; return names[i];
 
46929
  }
 
46930
  const void *__attr (unsigned __i) const {
 
46931
    switch (__i) { case 3: return &_sons; case 4: return &_properties; case 5: return &_son2idx; default: return 0; }
 
46932
  }
 
46933
#line 487 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46934
};
 
46935
 
 
46936
/** \class CT_ExprList CTree.h Puma/CTree.h
 
46937
 *  Tree node representing an expression list. */
 
46938
 
 
46939
#line 46940 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46940
} // closed Puma
 
46941
class CCExprResolve;
 
46942
class CExprResolve;
 
46943
class WinIfExists;
 
46944
class WinImportHandler;
 
46945
class WinMacros;
 
46946
class WinAsm;
 
46947
class WinDeclSpecs;
 
46948
class WinMemberExplSpec;
 
46949
class WinTypeKeywords;
 
46950
class WinFriend;
 
46951
class ExtAC;
 
46952
class ExtACBuilderCoupling;
 
46953
class ExtACSyntaxCoupling;
 
46954
class ExtACTree;
 
46955
class ExtACKeywords;
 
46956
class ExtGnu;
 
46957
class PragmaOnceUnitState;
 
46958
class PragmaOnce;
 
46959
class CMatchSyntax;
 
46960
namespace Puma {
 
46961
 
 
46962
#line 491 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46963
class CT_ExprList : public CT_List, public CSemValue, public CSemObject {
 
46964
#line 46965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
46965
  friend class ::CCExprResolve;
 
46966
  friend class ::CExprResolve;
 
46967
  friend class ::WinIfExists;
 
46968
  friend class ::WinImportHandler;
 
46969
  friend class ::WinMacros;
 
46970
  friend class ::WinAsm;
 
46971
  friend class ::WinDeclSpecs;
 
46972
  friend class ::WinMemberExplSpec;
 
46973
  friend class ::WinTypeKeywords;
 
46974
  friend class ::WinFriend;
 
46975
  friend class ::ExtAC;
 
46976
  friend class ::ExtACBuilderCoupling;
 
46977
  friend class ::ExtACSyntaxCoupling;
 
46978
  friend class ::ExtACTree;
 
46979
  friend class ::ExtACKeywords;
 
46980
  friend class ::ExtGnu;
 
46981
  friend class ::PragmaOnceUnitState;
 
46982
  friend class ::PragmaOnce;
 
46983
  friend class ::CMatchSyntax;
 
46984
 
 
46985
#line 491 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
46986
 
 
46987
public:
 
46988
  /** Constructor. */
 
46989
  CT_ExprList () { AddProperties (SEPARATORS); }
 
46990
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
46991
  static const char *NodeId ();
 
46992
  /** Get the name of the node. Can be compared with NodeId(). */
 
46993
  const char *NodeName () const { return NodeId (); }
 
46994
 
 
46995
  /** Get the type of the last expression in the expression list.
 
46996
   *  \return The type or NULL. */
 
46997
  CTypeInfo *Type () const { return type; }
 
46998
  /** Get the value of the last expression in the expression list.
 
46999
   *  \return The value of NULL. */
 
47000
  CExprValue *Value () const { return value; }
 
47001
  /** Get the semantic value of the node. */
 
47002
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
47003
  /** Get the semantic information about the node. */
 
47004
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
47005
public:
 
47006
  typedef AC::TLE __AttrTypes;
 
47007
  const char *__attr_name (unsigned i) const { return 0; }
 
47008
  const void *__attr (unsigned __i) const { return 0; }
 
47009
#line 510 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47010
};
 
47011
 
 
47012
/** \class CT_DeclaratorList CTree.h Puma/CTree.h
 
47013
 *  Tree node representing a list of declarators. */
 
47014
 
 
47015
#line 47016 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47016
} // closed Puma
 
47017
class CCExprResolve;
 
47018
class CExprResolve;
 
47019
class WinIfExists;
 
47020
class WinImportHandler;
 
47021
class WinMacros;
 
47022
class WinAsm;
 
47023
class WinDeclSpecs;
 
47024
class WinMemberExplSpec;
 
47025
class WinTypeKeywords;
 
47026
class WinFriend;
 
47027
class ExtAC;
 
47028
class ExtACBuilderCoupling;
 
47029
class ExtACSyntaxCoupling;
 
47030
class ExtACTree;
 
47031
class ExtACKeywords;
 
47032
class ExtGnu;
 
47033
class PragmaOnceUnitState;
 
47034
class PragmaOnce;
 
47035
class CMatchSyntax;
 
47036
namespace Puma {
 
47037
 
 
47038
#line 514 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47039
class CT_DeclaratorList : public CT_List {
 
47040
#line 47041 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47041
  friend class ::CCExprResolve;
 
47042
  friend class ::CExprResolve;
 
47043
  friend class ::WinIfExists;
 
47044
  friend class ::WinImportHandler;
 
47045
  friend class ::WinMacros;
 
47046
  friend class ::WinAsm;
 
47047
  friend class ::WinDeclSpecs;
 
47048
  friend class ::WinMemberExplSpec;
 
47049
  friend class ::WinTypeKeywords;
 
47050
  friend class ::WinFriend;
 
47051
  friend class ::ExtAC;
 
47052
  friend class ::ExtACBuilderCoupling;
 
47053
  friend class ::ExtACSyntaxCoupling;
 
47054
  friend class ::ExtACTree;
 
47055
  friend class ::ExtACKeywords;
 
47056
  friend class ::ExtGnu;
 
47057
  friend class ::PragmaOnceUnitState;
 
47058
  friend class ::PragmaOnce;
 
47059
  friend class ::CMatchSyntax;
 
47060
 
 
47061
#line 514 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47062
 
 
47063
public:
 
47064
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47065
  static const char *NodeId ();
 
47066
  /** Get the name of the node. Can be compared with NodeId(). */
 
47067
  const char *NodeName () const { return NodeId (); }
 
47068
public:
 
47069
  typedef AC::TLE __AttrTypes;
 
47070
  const char *__attr_name (unsigned i) const { return 0; }
 
47071
  const void *__attr (unsigned __i) const { return 0; }
 
47072
#line 520 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47073
};
 
47074
 
 
47075
/** \class CT_EnumeratorList CTree.h Puma/CTree.h
 
47076
 *  Tree node representing a list of enumerator constants. */
 
47077
 
 
47078
#line 47079 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47079
} // closed Puma
 
47080
class CCExprResolve;
 
47081
class CExprResolve;
 
47082
class WinIfExists;
 
47083
class WinImportHandler;
 
47084
class WinMacros;
 
47085
class WinAsm;
 
47086
class WinDeclSpecs;
 
47087
class WinMemberExplSpec;
 
47088
class WinTypeKeywords;
 
47089
class WinFriend;
 
47090
class ExtAC;
 
47091
class ExtACBuilderCoupling;
 
47092
class ExtACSyntaxCoupling;
 
47093
class ExtACTree;
 
47094
class ExtACKeywords;
 
47095
class ExtGnu;
 
47096
class PragmaOnceUnitState;
 
47097
class PragmaOnce;
 
47098
class CMatchSyntax;
 
47099
namespace Puma {
 
47100
 
 
47101
#line 524 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47102
class CT_EnumeratorList : public CT_List {
 
47103
#line 47104 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47104
  friend class ::CCExprResolve;
 
47105
  friend class ::CExprResolve;
 
47106
  friend class ::WinIfExists;
 
47107
  friend class ::WinImportHandler;
 
47108
  friend class ::WinMacros;
 
47109
  friend class ::WinAsm;
 
47110
  friend class ::WinDeclSpecs;
 
47111
  friend class ::WinMemberExplSpec;
 
47112
  friend class ::WinTypeKeywords;
 
47113
  friend class ::WinFriend;
 
47114
  friend class ::ExtAC;
 
47115
  friend class ::ExtACBuilderCoupling;
 
47116
  friend class ::ExtACSyntaxCoupling;
 
47117
  friend class ::ExtACTree;
 
47118
  friend class ::ExtACKeywords;
 
47119
  friend class ::ExtGnu;
 
47120
  friend class ::PragmaOnceUnitState;
 
47121
  friend class ::PragmaOnce;
 
47122
  friend class ::CMatchSyntax;
 
47123
 
 
47124
#line 524 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47125
 
 
47126
public:
 
47127
  /** Constructor. */
 
47128
  CT_EnumeratorList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
47129
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47130
  static const char *NodeId ();
 
47131
  /** Get the name of the node. Can be compared with NodeId(). */
 
47132
  const char *NodeName () const { return NodeId (); }
 
47133
public:
 
47134
  typedef AC::TLE __AttrTypes;
 
47135
  const char *__attr_name (unsigned i) const { return 0; }
 
47136
  const void *__attr (unsigned __i) const { return 0; }
 
47137
#line 532 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47138
};
 
47139
   
 
47140
/** \class CT_DeclList CTree.h Puma/CTree.h
 
47141
 *  Tree node representing a list of declarations. */
 
47142
 
 
47143
#line 47144 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47144
} // closed Puma
 
47145
class CCExprResolve;
 
47146
class CExprResolve;
 
47147
class WinIfExists;
 
47148
class WinImportHandler;
 
47149
class WinMacros;
 
47150
class WinAsm;
 
47151
class WinDeclSpecs;
 
47152
class WinMemberExplSpec;
 
47153
class WinTypeKeywords;
 
47154
class WinFriend;
 
47155
class ExtAC;
 
47156
class ExtACBuilderCoupling;
 
47157
class ExtACSyntaxCoupling;
 
47158
class ExtACTree;
 
47159
class ExtACKeywords;
 
47160
class ExtGnu;
 
47161
class PragmaOnceUnitState;
 
47162
class PragmaOnce;
 
47163
class CMatchSyntax;
 
47164
namespace Puma {
 
47165
 
 
47166
#line 536 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47167
class CT_DeclList : public CT_List {
 
47168
#line 47169 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47169
  friend class ::CCExprResolve;
 
47170
  friend class ::CExprResolve;
 
47171
  friend class ::WinIfExists;
 
47172
  friend class ::WinImportHandler;
 
47173
  friend class ::WinMacros;
 
47174
  friend class ::WinAsm;
 
47175
  friend class ::WinDeclSpecs;
 
47176
  friend class ::WinMemberExplSpec;
 
47177
  friend class ::WinTypeKeywords;
 
47178
  friend class ::WinFriend;
 
47179
  friend class ::ExtAC;
 
47180
  friend class ::ExtACBuilderCoupling;
 
47181
  friend class ::ExtACSyntaxCoupling;
 
47182
  friend class ::ExtACTree;
 
47183
  friend class ::ExtACKeywords;
 
47184
  friend class ::ExtGnu;
 
47185
  friend class ::PragmaOnceUnitState;
 
47186
  friend class ::PragmaOnce;
 
47187
  friend class ::CMatchSyntax;
 
47188
 
 
47189
#line 536 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47190
 
 
47191
public:
 
47192
  /** Constructor. 
 
47193
   *  \param size The initial size of the list.
 
47194
   *  \param incr The initial increment count of the list. */
 
47195
  CT_DeclList (int size = 20, int incr = 20) : CT_List (size, incr) {}
 
47196
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47197
  static const char *NodeId ();
 
47198
  /** Get the name of the node. Can be compared with NodeId(). */
 
47199
  const char *NodeName () const { return NodeId (); }
 
47200
  /** Set the linkage specifiers to each declaration in the list.
 
47201
   *  \param l The linkage specifiers node. */
 
47202
  void Linkage (CT_LinkageSpec *l);
 
47203
public:
 
47204
  typedef AC::TLE __AttrTypes;
 
47205
  const char *__attr_name (unsigned i) const { return 0; }
 
47206
  const void *__attr (unsigned __i) const { return 0; }
 
47207
#line 549 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47208
};
 
47209
 
 
47210
/** \class CT_DeclSpecSeq CTree.h Puma/CTree.h
 
47211
 *  Tree node representing a sequence of declaration specifiers. */
 
47212
 
 
47213
#line 47214 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47214
} // closed Puma
 
47215
class CCExprResolve;
 
47216
class CExprResolve;
 
47217
class WinIfExists;
 
47218
class WinImportHandler;
 
47219
class WinMacros;
 
47220
class WinAsm;
 
47221
class WinDeclSpecs;
 
47222
class WinMemberExplSpec;
 
47223
class WinTypeKeywords;
 
47224
class WinFriend;
 
47225
class ExtAC;
 
47226
class ExtACBuilderCoupling;
 
47227
class ExtACSyntaxCoupling;
 
47228
class ExtACTree;
 
47229
class ExtACKeywords;
 
47230
class ExtGnu;
 
47231
class PragmaOnceUnitState;
 
47232
class PragmaOnce;
 
47233
class CMatchSyntax;
 
47234
namespace Puma {
 
47235
 
 
47236
#line 553 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47237
class CT_DeclSpecSeq : public CT_List {
 
47238
#line 47239 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47239
  friend class ::CCExprResolve;
 
47240
  friend class ::CExprResolve;
 
47241
  friend class ::WinIfExists;
 
47242
  friend class ::WinImportHandler;
 
47243
  friend class ::WinMacros;
 
47244
  friend class ::WinAsm;
 
47245
  friend class ::WinDeclSpecs;
 
47246
  friend class ::WinMemberExplSpec;
 
47247
  friend class ::WinTypeKeywords;
 
47248
  friend class ::WinFriend;
 
47249
  friend class ::ExtAC;
 
47250
  friend class ::ExtACBuilderCoupling;
 
47251
  friend class ::ExtACSyntaxCoupling;
 
47252
  friend class ::ExtACTree;
 
47253
  friend class ::ExtACKeywords;
 
47254
  friend class ::ExtGnu;
 
47255
  friend class ::PragmaOnceUnitState;
 
47256
  friend class ::PragmaOnce;
 
47257
  friend class ::CMatchSyntax;
 
47258
 
 
47259
#line 553 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47260
 
 
47261
public:
 
47262
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47263
  static const char *NodeId ();
 
47264
  /** Get the name of the node. Can be compared with NodeId(). */
 
47265
  const char *NodeName () const { return NodeId (); }
 
47266
public:
 
47267
  typedef AC::TLE __AttrTypes;
 
47268
  const char *__attr_name (unsigned i) const { return 0; }
 
47269
  const void *__attr (unsigned __i) const { return 0; }
 
47270
#line 559 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47271
};
 
47272
 
 
47273
/** \class CT_CmpdStmt CTree.h Puma/CTree.h
 
47274
 *  Tree node representing a compound statement. */
 
47275
 
 
47276
#line 47277 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47277
} // closed Puma
 
47278
class CCExprResolve;
 
47279
class CExprResolve;
 
47280
class WinIfExists;
 
47281
class WinImportHandler;
 
47282
class WinMacros;
 
47283
class WinAsm;
 
47284
class WinDeclSpecs;
 
47285
class WinMemberExplSpec;
 
47286
class WinTypeKeywords;
 
47287
class WinFriend;
 
47288
class ExtAC;
 
47289
class ExtACBuilderCoupling;
 
47290
class ExtACSyntaxCoupling;
 
47291
class ExtACTree;
 
47292
class ExtACKeywords;
 
47293
class ExtGnu;
 
47294
class PragmaOnceUnitState;
 
47295
class PragmaOnce;
 
47296
class CMatchSyntax;
 
47297
namespace Puma {
 
47298
 
 
47299
#line 563 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47300
class CT_CmpdStmt : public CT_List, public CSemScope {
 
47301
#line 47302 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47302
  friend class ::CCExprResolve;
 
47303
  friend class ::CExprResolve;
 
47304
  friend class ::WinIfExists;
 
47305
  friend class ::WinImportHandler;
 
47306
  friend class ::WinMacros;
 
47307
  friend class ::WinAsm;
 
47308
  friend class ::WinDeclSpecs;
 
47309
  friend class ::WinMemberExplSpec;
 
47310
  friend class ::WinTypeKeywords;
 
47311
  friend class ::WinFriend;
 
47312
  friend class ::ExtAC;
 
47313
  friend class ::ExtACBuilderCoupling;
 
47314
  friend class ::ExtACSyntaxCoupling;
 
47315
  friend class ::ExtACTree;
 
47316
  friend class ::ExtACKeywords;
 
47317
  friend class ::ExtGnu;
 
47318
  friend class ::PragmaOnceUnitState;
 
47319
  friend class ::PragmaOnce;
 
47320
  friend class ::CMatchSyntax;
 
47321
 
 
47322
#line 563 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47323
 
 
47324
public:
 
47325
  /* Constructor. */
 
47326
  CT_CmpdStmt () { AddProperties (OPEN_CLOSE); }
 
47327
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47328
  static const char *NodeId ();
 
47329
  /** Get the name of the node. Can be compared with NodeId(). */
 
47330
  const char *NodeName () const { return NodeId (); }
 
47331
  /** Get the scope opened by the compound statement. */
 
47332
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
47333
public:
 
47334
  typedef AC::TLE __AttrTypes;
 
47335
  const char *__attr_name (unsigned i) const { return 0; }
 
47336
  const void *__attr (unsigned __i) const { return 0; }
 
47337
#line 573 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47338
};
 
47339
 
 
47340
/** \class CT_HandlerSeq CTree.h Puma/CTree.h
 
47341
 *  Tree node representing an exception handler sequence. */
 
47342
 
 
47343
#line 47344 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47344
} // closed Puma
 
47345
class CCExprResolve;
 
47346
class CExprResolve;
 
47347
class WinIfExists;
 
47348
class WinImportHandler;
 
47349
class WinMacros;
 
47350
class WinAsm;
 
47351
class WinDeclSpecs;
 
47352
class WinMemberExplSpec;
 
47353
class WinTypeKeywords;
 
47354
class WinFriend;
 
47355
class ExtAC;
 
47356
class ExtACBuilderCoupling;
 
47357
class ExtACSyntaxCoupling;
 
47358
class ExtACTree;
 
47359
class ExtACKeywords;
 
47360
class ExtGnu;
 
47361
class PragmaOnceUnitState;
 
47362
class PragmaOnce;
 
47363
class CMatchSyntax;
 
47364
namespace Puma {
 
47365
 
 
47366
#line 577 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47367
class CT_HandlerSeq : public CT_List {
 
47368
#line 47369 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47369
  friend class ::CCExprResolve;
 
47370
  friend class ::CExprResolve;
 
47371
  friend class ::WinIfExists;
 
47372
  friend class ::WinImportHandler;
 
47373
  friend class ::WinMacros;
 
47374
  friend class ::WinAsm;
 
47375
  friend class ::WinDeclSpecs;
 
47376
  friend class ::WinMemberExplSpec;
 
47377
  friend class ::WinTypeKeywords;
 
47378
  friend class ::WinFriend;
 
47379
  friend class ::ExtAC;
 
47380
  friend class ::ExtACBuilderCoupling;
 
47381
  friend class ::ExtACSyntaxCoupling;
 
47382
  friend class ::ExtACTree;
 
47383
  friend class ::ExtACKeywords;
 
47384
  friend class ::ExtGnu;
 
47385
  friend class ::PragmaOnceUnitState;
 
47386
  friend class ::PragmaOnce;
 
47387
  friend class ::CMatchSyntax;
 
47388
 
 
47389
#line 577 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47390
 
 
47391
public:
 
47392
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47393
  static const char *NodeId ();
 
47394
  /** Get the name of the node. Can be compared with NodeId(). */
 
47395
  const char *NodeName () const { return NodeId (); }
 
47396
public:
 
47397
  typedef AC::TLE __AttrTypes;
 
47398
  const char *__attr_name (unsigned i) const { return 0; }
 
47399
  const void *__attr (unsigned __i) const { return 0; }
 
47400
#line 583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47401
};
 
47402
 
 
47403
/** \class CT_TemplateParamList CTree.h Puma/CTree.h
 
47404
 *  Tree node representing a template parameter list. */
 
47405
 
 
47406
#line 47407 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47407
} // closed Puma
 
47408
class CCExprResolve;
 
47409
class CExprResolve;
 
47410
class WinIfExists;
 
47411
class WinImportHandler;
 
47412
class WinMacros;
 
47413
class WinAsm;
 
47414
class WinDeclSpecs;
 
47415
class WinMemberExplSpec;
 
47416
class WinTypeKeywords;
 
47417
class WinFriend;
 
47418
class ExtAC;
 
47419
class ExtACBuilderCoupling;
 
47420
class ExtACSyntaxCoupling;
 
47421
class ExtACTree;
 
47422
class ExtACKeywords;
 
47423
class ExtGnu;
 
47424
class PragmaOnceUnitState;
 
47425
class PragmaOnce;
 
47426
class CMatchSyntax;
 
47427
namespace Puma {
 
47428
 
 
47429
#line 587 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47430
class CT_TemplateParamList : public CT_List, public CSemScope {
 
47431
#line 47432 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47432
  friend class ::CCExprResolve;
 
47433
  friend class ::CExprResolve;
 
47434
  friend class ::WinIfExists;
 
47435
  friend class ::WinImportHandler;
 
47436
  friend class ::WinMacros;
 
47437
  friend class ::WinAsm;
 
47438
  friend class ::WinDeclSpecs;
 
47439
  friend class ::WinMemberExplSpec;
 
47440
  friend class ::WinTypeKeywords;
 
47441
  friend class ::WinFriend;
 
47442
  friend class ::ExtAC;
 
47443
  friend class ::ExtACBuilderCoupling;
 
47444
  friend class ::ExtACSyntaxCoupling;
 
47445
  friend class ::ExtACTree;
 
47446
  friend class ::ExtACKeywords;
 
47447
  friend class ::ExtGnu;
 
47448
  friend class ::PragmaOnceUnitState;
 
47449
  friend class ::PragmaOnce;
 
47450
  friend class ::CMatchSyntax;
 
47451
 
 
47452
#line 587 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47453
 
 
47454
public:
 
47455
  CT_TemplateParamList () { AddProperties (INTRO | SEPARATORS | OPEN_CLOSE); }
 
47456
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47457
  static const char *NodeId ();
 
47458
  /** Get the name of the node. Can be compared with NodeId(). */
 
47459
  const char *NodeName () const { return NodeId (); }
 
47460
  /** Get the scope opened by the template parameter list. */
 
47461
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
47462
public:
 
47463
  typedef AC::TLE __AttrTypes;
 
47464
  const char *__attr_name (unsigned i) const { return 0; }
 
47465
  const void *__attr (unsigned __i) const { return 0; }
 
47466
#line 596 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47467
};
 
47468
 
 
47469
/** \class CT_TemplateArgList CTree.h Puma/CTree.h
 
47470
 *  Tree node representing a template argument list. */
 
47471
 
 
47472
#line 47473 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47473
} // closed Puma
 
47474
class CCExprResolve;
 
47475
class CExprResolve;
 
47476
class WinIfExists;
 
47477
class WinImportHandler;
 
47478
class WinMacros;
 
47479
class WinAsm;
 
47480
class WinDeclSpecs;
 
47481
class WinMemberExplSpec;
 
47482
class WinTypeKeywords;
 
47483
class WinFriend;
 
47484
class ExtAC;
 
47485
class ExtACBuilderCoupling;
 
47486
class ExtACSyntaxCoupling;
 
47487
class ExtACTree;
 
47488
class ExtACKeywords;
 
47489
class ExtGnu;
 
47490
class PragmaOnceUnitState;
 
47491
class PragmaOnce;
 
47492
class CMatchSyntax;
 
47493
namespace Puma {
 
47494
 
 
47495
#line 600 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47496
class CT_TemplateArgList : public CT_List {
 
47497
#line 47498 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47498
  friend class ::CCExprResolve;
 
47499
  friend class ::CExprResolve;
 
47500
  friend class ::WinIfExists;
 
47501
  friend class ::WinImportHandler;
 
47502
  friend class ::WinMacros;
 
47503
  friend class ::WinAsm;
 
47504
  friend class ::WinDeclSpecs;
 
47505
  friend class ::WinMemberExplSpec;
 
47506
  friend class ::WinTypeKeywords;
 
47507
  friend class ::WinFriend;
 
47508
  friend class ::ExtAC;
 
47509
  friend class ::ExtACBuilderCoupling;
 
47510
  friend class ::ExtACSyntaxCoupling;
 
47511
  friend class ::ExtACTree;
 
47512
  friend class ::ExtACKeywords;
 
47513
  friend class ::ExtGnu;
 
47514
  friend class ::PragmaOnceUnitState;
 
47515
  friend class ::PragmaOnce;
 
47516
  friend class ::CMatchSyntax;
 
47517
 
 
47518
#line 600 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47519
 
 
47520
public:
 
47521
  /** Constructor. */
 
47522
  CT_TemplateArgList () { AddProperties (SEPARATORS | OPEN_CLOSE); }
 
47523
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47524
  static const char *NodeId ();
 
47525
  /** Get the name of the node. Can be compared with NodeId(). */
 
47526
  const char *NodeName () const { return NodeId (); }
 
47527
public:
 
47528
  typedef AC::TLE __AttrTypes;
 
47529
  const char *__attr_name (unsigned i) const { return 0; }
 
47530
  const void *__attr (unsigned __i) const { return 0; }
 
47531
#line 608 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47532
};
 
47533
 
 
47534
/*****************************************************************************/
 
47535
/*                                                                           */
 
47536
/*                              Expressions                                  */
 
47537
/*                                                                           */
 
47538
/*****************************************************************************/
 
47539
 
 
47540
/** \class CT_Expression CTree.h Puma/CTree.h
 
47541
 *  Base class for all expression tree nodes. */
 
47542
 
 
47543
#line 47544 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47544
} // closed Puma
 
47545
class CCExprResolve;
 
47546
class CExprResolve;
 
47547
class WinIfExists;
 
47548
class WinImportHandler;
 
47549
class WinMacros;
 
47550
class WinAsm;
 
47551
class WinDeclSpecs;
 
47552
class WinMemberExplSpec;
 
47553
class WinTypeKeywords;
 
47554
class WinFriend;
 
47555
class ExtAC;
 
47556
class ExtACBuilderCoupling;
 
47557
class ExtACSyntaxCoupling;
 
47558
class ExtACTree;
 
47559
class ExtACKeywords;
 
47560
class ExtGnu;
 
47561
class PragmaOnceUnitState;
 
47562
class PragmaOnce;
 
47563
class CMatchSyntax;
 
47564
namespace Puma {
 
47565
 
 
47566
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47567
 
 
47568
#line 47569 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47569
} // closed Puma
 
47570
 
 
47571
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
47572
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
47573
#include "CCExprResolveH.ah"
 
47574
#endif
 
47575
namespace Puma {
 
47576
 
 
47577
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47578
 
 
47579
#line 47580 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47580
} // closed Puma
 
47581
 
 
47582
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
47583
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
47584
#include "CExprResolveH.ah"
 
47585
#endif
 
47586
namespace Puma {
 
47587
 
 
47588
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47589
class CT_Expression : public CTree, public CSemValue {
 
47590
#line 47591 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47591
  friend class ::CCExprResolve;
 
47592
  friend class ::CExprResolve;
 
47593
  friend class ::WinIfExists;
 
47594
  friend class ::WinImportHandler;
 
47595
  friend class ::WinMacros;
 
47596
  friend class ::WinAsm;
 
47597
  friend class ::WinDeclSpecs;
 
47598
  friend class ::WinMemberExplSpec;
 
47599
  friend class ::WinTypeKeywords;
 
47600
  friend class ::WinFriend;
 
47601
  friend class ::ExtAC;
 
47602
  friend class ::ExtACBuilderCoupling;
 
47603
  friend class ::ExtACSyntaxCoupling;
 
47604
  friend class ::ExtACTree;
 
47605
  friend class ::ExtACKeywords;
 
47606
  friend class ::ExtGnu;
 
47607
  friend class ::PragmaOnceUnitState;
 
47608
  friend class ::PragmaOnce;
 
47609
  friend class ::CMatchSyntax;
 
47610
 
 
47611
#line 618 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47612
 
 
47613
protected:
 
47614
  /** Constructor. */
 
47615
  CT_Expression () {}
 
47616
 
 
47617
public:
 
47618
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47619
  static const char *NodeId ();
 
47620
  /** Get the name of the node. Can be compared with NodeId(). */
 
47621
  const char *NodeName () const { return NodeId (); }
 
47622
  /** Get the type of the expression.
 
47623
   *  \return The type information object or NULL. */
 
47624
  CTypeInfo *Type () const { return type; }
 
47625
  /** Get the value of the expression.
 
47626
   *  \return The value object or NULL. */
 
47627
  CExprValue *Value () const { return value; }
 
47628
  /** Get the semantic value information of the expression.
 
47629
   *  \return The value object or NULL. */
 
47630
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
47631
  /** Get this. */
 
47632
  virtual CT_Expression *IsExpression () { return this; }
 
47633
   private:
 
47634
  typedef CT_Expression CCExprResolveExpr;
 
47635
 
 
47636
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
47637
 public :
 
47638
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
47639
  typedef CT_Expression CExprResolveExpr;
 
47640
 
 
47641
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
47642
 public :
 
47643
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
47644
  typedef AC::TLE __AttrTypes;
 
47645
  const char *__attr_name (unsigned i) const { return 0; }
 
47646
  const void *__attr (unsigned __i) const { return 0; }
 
47647
#line 639 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47648
};
 
47649
 
 
47650
/** \class CT_Call CTree.h Puma/CTree.h
 
47651
 *  Tree node representing explicit or implicit function calls 
 
47652
 *  including built-in or user-defined functions and overloaded
 
47653
 *  operators. */
 
47654
 
 
47655
#line 47656 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47656
} // closed Puma
 
47657
class CCExprResolve;
 
47658
class CExprResolve;
 
47659
class WinIfExists;
 
47660
class WinImportHandler;
 
47661
class WinMacros;
 
47662
class WinAsm;
 
47663
class WinDeclSpecs;
 
47664
class WinMemberExplSpec;
 
47665
class WinTypeKeywords;
 
47666
class WinFriend;
 
47667
class ExtAC;
 
47668
class ExtACBuilderCoupling;
 
47669
class ExtACSyntaxCoupling;
 
47670
class ExtACTree;
 
47671
class ExtACKeywords;
 
47672
class ExtGnu;
 
47673
class PragmaOnceUnitState;
 
47674
class PragmaOnce;
 
47675
class CMatchSyntax;
 
47676
namespace Puma {
 
47677
 
 
47678
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47679
 
 
47680
#line 47681 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47681
} // closed Puma
 
47682
 
 
47683
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
47684
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
47685
#include "CCExprResolveH.ah"
 
47686
#endif
 
47687
namespace Puma {
 
47688
 
 
47689
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47690
 
 
47691
#line 47692 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47692
} // closed Puma
 
47693
 
 
47694
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
47695
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
47696
#include "CExprResolveH.ah"
 
47697
#endif
 
47698
namespace Puma {
 
47699
 
 
47700
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47701
class CT_Call : public CT_Expression, public CSemObject {
 
47702
#line 47703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47703
  friend class ::CCExprResolve;
 
47704
  friend class ::CExprResolve;
 
47705
  friend class ::WinIfExists;
 
47706
  friend class ::WinImportHandler;
 
47707
  friend class ::WinMacros;
 
47708
  friend class ::WinAsm;
 
47709
  friend class ::WinDeclSpecs;
 
47710
  friend class ::WinMemberExplSpec;
 
47711
  friend class ::WinTypeKeywords;
 
47712
  friend class ::WinFriend;
 
47713
  friend class ::ExtAC;
 
47714
  friend class ::ExtACBuilderCoupling;
 
47715
  friend class ::ExtACSyntaxCoupling;
 
47716
  friend class ::ExtACTree;
 
47717
  friend class ::ExtACKeywords;
 
47718
  friend class ::ExtGnu;
 
47719
  friend class ::PragmaOnceUnitState;
 
47720
  friend class ::PragmaOnce;
 
47721
  friend class ::CMatchSyntax;
 
47722
 
 
47723
#line 645 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47724
 
 
47725
protected:
 
47726
  /** Constructor. */
 
47727
  CT_Call () {}
 
47728
  
 
47729
public:
 
47730
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47731
  static const char *NodeId ();
 
47732
  /** Get the name of the node. Can be compared with NodeId(). */
 
47733
  const char *NodeName () const { return NodeId (); }
 
47734
  /** Get the semantic information of the call. */
 
47735
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
47736
  /** Get this. */
 
47737
  CT_Call *IsCall () { return this; }
 
47738
   private:
 
47739
  typedef CT_Call CCExprResolveExpr;
 
47740
 
 
47741
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
47742
 public :
 
47743
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
47744
  typedef CT_Call CExprResolveExpr;
 
47745
 
 
47746
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
47747
 public :
 
47748
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
47749
  typedef AC::TLE __AttrTypes;
 
47750
  const char *__attr_name (unsigned i) const { return 0; }
 
47751
  const void *__attr (unsigned __i) const { return 0; }
 
47752
#line 659 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47753
};
 
47754
 
 
47755
/** \class CT_ImplicitCall CTree.h Puma/CTree.h
 
47756
 *  Tree node representing implicit function calls detected by
 
47757
 *  the semantic analysis. 
 
47758
 *  Example:
 
47759
 *  \code
 
47760
 * class Number {
 
47761
 *   int _n;
 
47762
 * public:
 
47763
 *   Number(int n) : _n(n) {}
 
47764
 *   int operator+(const Number& n) { return n._n + _n; }
 
47765
 * };
 
47766
 *     
 
47767
 * Number one(1), two(2);
 
47768
 * one + two;  // implicitely calls one.operator+(two)
 
47769
 *  \endcode */
 
47770
 
 
47771
#line 47772 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47772
} // closed Puma
 
47773
class CCExprResolve;
 
47774
class CExprResolve;
 
47775
class WinIfExists;
 
47776
class WinImportHandler;
 
47777
class WinMacros;
 
47778
class WinAsm;
 
47779
class WinDeclSpecs;
 
47780
class WinMemberExplSpec;
 
47781
class WinTypeKeywords;
 
47782
class WinFriend;
 
47783
class ExtAC;
 
47784
class ExtACBuilderCoupling;
 
47785
class ExtACSyntaxCoupling;
 
47786
class ExtACTree;
 
47787
class ExtACKeywords;
 
47788
class ExtGnu;
 
47789
class PragmaOnceUnitState;
 
47790
class PragmaOnce;
 
47791
class CMatchSyntax;
 
47792
namespace Puma {
 
47793
 
 
47794
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47795
 
 
47796
#line 47797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47797
} // closed Puma
 
47798
 
 
47799
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
47800
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
47801
#include "CCExprResolveH.ah"
 
47802
#endif
 
47803
namespace Puma {
 
47804
 
 
47805
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47806
 
 
47807
#line 47808 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47808
} // closed Puma
 
47809
 
 
47810
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
47811
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
47812
#include "CExprResolveH.ah"
 
47813
#endif
 
47814
namespace Puma {
 
47815
 
 
47816
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47817
class CT_ImplicitCall : public CT_Call {
 
47818
#line 47819 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47819
  friend class ::CCExprResolve;
 
47820
  friend class ::CExprResolve;
 
47821
  friend class ::WinIfExists;
 
47822
  friend class ::WinImportHandler;
 
47823
  friend class ::WinMacros;
 
47824
  friend class ::WinAsm;
 
47825
  friend class ::WinDeclSpecs;
 
47826
  friend class ::WinMemberExplSpec;
 
47827
  friend class ::WinTypeKeywords;
 
47828
  friend class ::WinFriend;
 
47829
  friend class ::ExtAC;
 
47830
  friend class ::ExtACBuilderCoupling;
 
47831
  friend class ::ExtACSyntaxCoupling;
 
47832
  friend class ::ExtACTree;
 
47833
  friend class ::ExtACKeywords;
 
47834
  friend class ::ExtGnu;
 
47835
  friend class ::PragmaOnceUnitState;
 
47836
  friend class ::PragmaOnce;
 
47837
  friend class ::CMatchSyntax;
 
47838
 
 
47839
#line 676 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47840
 
 
47841
  CTree *_arg;
 
47842
 
 
47843
public:
 
47844
  /** Constructor.
 
47845
   *  \param arg The call argument. */
 
47846
  CT_ImplicitCall (CTree *arg) { AddSon (_arg, arg); }
 
47847
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47848
  static const char *NodeId ();
 
47849
  /** Get the name of the node. Can be compared with NodeId(). */
 
47850
  const char *NodeName () const { return NodeId (); }
 
47851
  /** Get the number of sons. */
 
47852
  int Sons () const { return 1; }
 
47853
  /** Get the n-th son.
 
47854
   *  \param n The index of the son.
 
47855
   *  \return The n-th son or NULL. */
 
47856
  CTree *Son (int n) const { return (n == 0) ? _arg : (CTree*)0; }
 
47857
  /** Replace a son.
 
47858
   *  \param old_son The son to replace.
 
47859
   *  \param new_son The new son. */
 
47860
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
47861
   { CTree::ReplaceSon (_arg, old_son, new_son); }
 
47862
   private:
 
47863
  typedef CT_ImplicitCall CCExprResolveExpr;
 
47864
 
 
47865
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
47866
 public :
 
47867
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
47868
  typedef CT_ImplicitCall CExprResolveExpr;
 
47869
 
 
47870
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
47871
 public :
 
47872
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
47873
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
47874
  const char *__attr_name (unsigned i) const {
 
47875
    static const char *names[] = { "_arg" }; return names[i];
 
47876
  }
 
47877
  const void *__attr (unsigned __i) const {
 
47878
    switch (__i) { case 0: return &_arg; default: return 0; }
 
47879
  }
 
47880
#line 698 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47881
};
 
47882
 
 
47883
/** \class CT_String CTree.h Puma/CTree.h
 
47884
 *  Tree node representing a string literal. 
 
47885
 *  Example: \code "abc" \endcode */
 
47886
 
 
47887
#line 47888 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47888
} // closed Puma
 
47889
class CCExprResolve;
 
47890
class CExprResolve;
 
47891
class WinIfExists;
 
47892
class WinImportHandler;
 
47893
class WinMacros;
 
47894
class WinAsm;
 
47895
class WinDeclSpecs;
 
47896
class WinMemberExplSpec;
 
47897
class WinTypeKeywords;
 
47898
class WinFriend;
 
47899
class ExtAC;
 
47900
class ExtACBuilderCoupling;
 
47901
class ExtACSyntaxCoupling;
 
47902
class ExtACTree;
 
47903
class ExtACKeywords;
 
47904
class ExtGnu;
 
47905
class PragmaOnceUnitState;
 
47906
class PragmaOnce;
 
47907
class CMatchSyntax;
 
47908
namespace Puma {
 
47909
 
 
47910
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47911
 
 
47912
#line 47913 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47913
} // closed Puma
 
47914
 
 
47915
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
47916
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
47917
#include "CCExprResolveH.ah"
 
47918
#endif
 
47919
namespace Puma {
 
47920
 
 
47921
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47922
 
 
47923
#line 47924 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47924
} // closed Puma
 
47925
 
 
47926
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
47927
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
47928
#include "CExprResolveH.ah"
 
47929
#endif
 
47930
namespace Puma {
 
47931
 
 
47932
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47933
class CT_String : public CT_List, public CSemValue {
 
47934
#line 47935 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47935
  friend class ::CCExprResolve;
 
47936
  friend class ::CExprResolve;
 
47937
  friend class ::WinIfExists;
 
47938
  friend class ::WinImportHandler;
 
47939
  friend class ::WinMacros;
 
47940
  friend class ::WinAsm;
 
47941
  friend class ::WinDeclSpecs;
 
47942
  friend class ::WinMemberExplSpec;
 
47943
  friend class ::WinTypeKeywords;
 
47944
  friend class ::WinFriend;
 
47945
  friend class ::ExtAC;
 
47946
  friend class ::ExtACBuilderCoupling;
 
47947
  friend class ::ExtACSyntaxCoupling;
 
47948
  friend class ::ExtACTree;
 
47949
  friend class ::ExtACKeywords;
 
47950
  friend class ::ExtGnu;
 
47951
  friend class ::PragmaOnceUnitState;
 
47952
  friend class ::PragmaOnce;
 
47953
  friend class ::CMatchSyntax;
 
47954
 
 
47955
#line 703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47956
 
 
47957
public:
 
47958
  /** Constructor. 
 
47959
   *  \param size The number of sub-strings. */
 
47960
  CT_String (int size) : CT_List (size, 1) {}
 
47961
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
47962
  static const char *NodeId ();
 
47963
  /** Get the name of the node. Can be compared with NodeId(). */
 
47964
  const char *NodeName () const { return NodeId (); }
 
47965
 
 
47966
  /** Get the type of the string. 
 
47967
   *  \return The type or NULL. */
 
47968
  CTypeInfo *Type () const { return type; }
 
47969
  /** Get the string value.
 
47970
   *  \return The value or NULL. */
 
47971
  CExprValue *Value () const { return value; }
 
47972
  /** Get the semantic value info object.
 
47973
   *  \return The semantic value object or NULL. */
 
47974
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
47975
  /** Get this. */
 
47976
  virtual CT_String *IsString () { return this; }
 
47977
   private:
 
47978
  typedef CT_String CCExprResolveExpr;
 
47979
 
 
47980
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
47981
 public :
 
47982
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
47983
  typedef CT_String CExprResolveExpr;
 
47984
 
 
47985
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
47986
 public :
 
47987
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
47988
  typedef AC::TLE __AttrTypes;
 
47989
  const char *__attr_name (unsigned i) const { return 0; }
 
47990
  const void *__attr (unsigned __i) const { return 0; }
 
47991
#line 724 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
47992
};
 
47993
 
 
47994
/** \class CT_WideString CTree.h Puma/CTree.h
 
47995
 *  Tree node representing a wide string literal. 
 
47996
 *  Example: \code L"abc" \endcode */
 
47997
 
 
47998
#line 47999 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
47999
} // closed Puma
 
48000
class CCExprResolve;
 
48001
class CExprResolve;
 
48002
class WinIfExists;
 
48003
class WinImportHandler;
 
48004
class WinMacros;
 
48005
class WinAsm;
 
48006
class WinDeclSpecs;
 
48007
class WinMemberExplSpec;
 
48008
class WinTypeKeywords;
 
48009
class WinFriend;
 
48010
class ExtAC;
 
48011
class ExtACBuilderCoupling;
 
48012
class ExtACSyntaxCoupling;
 
48013
class ExtACTree;
 
48014
class ExtACKeywords;
 
48015
class ExtGnu;
 
48016
class PragmaOnceUnitState;
 
48017
class PragmaOnce;
 
48018
class CMatchSyntax;
 
48019
namespace Puma {
 
48020
 
 
48021
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48022
 
 
48023
#line 48024 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48024
} // closed Puma
 
48025
 
 
48026
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48027
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48028
#include "CCExprResolveH.ah"
 
48029
#endif
 
48030
namespace Puma {
 
48031
 
 
48032
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48033
 
 
48034
#line 48035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48035
} // closed Puma
 
48036
 
 
48037
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48038
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48039
#include "CExprResolveH.ah"
 
48040
#endif
 
48041
namespace Puma {
 
48042
 
 
48043
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48044
class CT_WideString : public CT_String {
 
48045
#line 48046 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48046
  friend class ::CCExprResolve;
 
48047
  friend class ::CExprResolve;
 
48048
  friend class ::WinIfExists;
 
48049
  friend class ::WinImportHandler;
 
48050
  friend class ::WinMacros;
 
48051
  friend class ::WinAsm;
 
48052
  friend class ::WinDeclSpecs;
 
48053
  friend class ::WinMemberExplSpec;
 
48054
  friend class ::WinTypeKeywords;
 
48055
  friend class ::WinFriend;
 
48056
  friend class ::ExtAC;
 
48057
  friend class ::ExtACBuilderCoupling;
 
48058
  friend class ::ExtACSyntaxCoupling;
 
48059
  friend class ::ExtACTree;
 
48060
  friend class ::ExtACKeywords;
 
48061
  friend class ::ExtGnu;
 
48062
  friend class ::PragmaOnceUnitState;
 
48063
  friend class ::PragmaOnce;
 
48064
  friend class ::CMatchSyntax;
 
48065
 
 
48066
#line 729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48067
 
 
48068
public:
 
48069
  /** Constructor.
 
48070
   *  \param size The number of sub-strings. */
 
48071
  CT_WideString (int size) : CT_String (size) {}
 
48072
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
48073
  static const char *NodeId ();
 
48074
  /** Get the name of the node. Can be compared with NodeId(). */
 
48075
  const char *NodeName () const { return NodeId (); }
 
48076
   private:
 
48077
  typedef CT_WideString CCExprResolveExpr;
 
48078
 
 
48079
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
48080
 public :
 
48081
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
48082
  typedef CT_WideString CExprResolveExpr;
 
48083
 
 
48084
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
48085
 public :
 
48086
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
48087
  typedef AC::TLE __AttrTypes;
 
48088
  const char *__attr_name (unsigned i) const { return 0; }
 
48089
  const void *__attr (unsigned __i) const { return 0; }
 
48090
#line 738 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48091
};
 
48092
 
 
48093
/** \class CT_Integer CTree.h Puma/CTree.h
 
48094
 *  Tree node representing an integer constant. 
 
48095
 *  Example: \code 1234 \endcode */
 
48096
 
 
48097
#line 48098 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48098
} // closed Puma
 
48099
class CCExprResolve;
 
48100
class CExprResolve;
 
48101
class WinIfExists;
 
48102
class WinImportHandler;
 
48103
class WinMacros;
 
48104
class WinAsm;
 
48105
class WinDeclSpecs;
 
48106
class WinMemberExplSpec;
 
48107
class WinTypeKeywords;
 
48108
class WinFriend;
 
48109
class ExtAC;
 
48110
class ExtACBuilderCoupling;
 
48111
class ExtACSyntaxCoupling;
 
48112
class ExtACTree;
 
48113
class ExtACKeywords;
 
48114
class ExtGnu;
 
48115
class PragmaOnceUnitState;
 
48116
class PragmaOnce;
 
48117
class CMatchSyntax;
 
48118
namespace Puma {
 
48119
 
 
48120
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48121
 
 
48122
#line 48123 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48123
} // closed Puma
 
48124
 
 
48125
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48126
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48127
#include "CCExprResolveH.ah"
 
48128
#endif
 
48129
namespace Puma {
 
48130
 
 
48131
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48132
 
 
48133
#line 48134 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48134
} // closed Puma
 
48135
 
 
48136
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48137
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48138
#include "CExprResolveH.ah"
 
48139
#endif
 
48140
namespace Puma {
 
48141
 
 
48142
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48143
class CT_Integer : public CT_Expression {
 
48144
#line 48145 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48145
  friend class ::CCExprResolve;
 
48146
  friend class ::CExprResolve;
 
48147
  friend class ::WinIfExists;
 
48148
  friend class ::WinImportHandler;
 
48149
  friend class ::WinMacros;
 
48150
  friend class ::WinAsm;
 
48151
  friend class ::WinDeclSpecs;
 
48152
  friend class ::WinMemberExplSpec;
 
48153
  friend class ::WinTypeKeywords;
 
48154
  friend class ::WinFriend;
 
48155
  friend class ::ExtAC;
 
48156
  friend class ::ExtACBuilderCoupling;
 
48157
  friend class ::ExtACSyntaxCoupling;
 
48158
  friend class ::ExtACTree;
 
48159
  friend class ::ExtACKeywords;
 
48160
  friend class ::ExtGnu;
 
48161
  friend class ::PragmaOnceUnitState;
 
48162
  friend class ::PragmaOnce;
 
48163
  friend class ::CMatchSyntax;
 
48164
 
 
48165
#line 743 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48166
 
 
48167
  CTree *_value;  // CT_Token
 
48168
 
 
48169
public:
 
48170
  /** Constructor.
 
48171
   *  \param token The token containing the integer value. */
 
48172
  CT_Integer (CTree *token) { AddSon (_value, token); }
 
48173
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
48174
  static const char *NodeId ();
 
48175
  /** Get the name of the node. Can be compared with NodeId(). */
 
48176
  const char *NodeName () const { return NodeId (); }
 
48177
  /** Get the number of sons. */
 
48178
  int Sons () const { return _value ? 1 : 0; }
 
48179
  /** Get the n-th son.
 
48180
   *  \param n The index of the son.
 
48181
   *  \return The n-th son or NULL. */
 
48182
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
48183
  /** Replace a son.
 
48184
   *  \param old_son The son to replace.
 
48185
   *  \param new_son The new son. */
 
48186
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
48187
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
48188
   private:
 
48189
  typedef CT_Integer CCExprResolveExpr;
 
48190
 
 
48191
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
48192
 public :
 
48193
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
48194
  typedef CT_Integer CExprResolveExpr;
 
48195
 
 
48196
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
48197
 public :
 
48198
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
48199
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
48200
  const char *__attr_name (unsigned i) const {
 
48201
    static const char *names[] = { "_value" }; return names[i];
 
48202
  }
 
48203
  const void *__attr (unsigned __i) const {
 
48204
    switch (__i) { case 0: return &_value; default: return 0; }
 
48205
  }
 
48206
#line 765 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48207
};
 
48208
 
 
48209
/** \class CT_Character CTree.h Puma/CTree.h
 
48210
 *  Tree node representing a single character constant. 
 
48211
 *  Example: \code 'a' \endcode */
 
48212
 
 
48213
#line 48214 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48214
} // closed Puma
 
48215
class CCExprResolve;
 
48216
class CExprResolve;
 
48217
class WinIfExists;
 
48218
class WinImportHandler;
 
48219
class WinMacros;
 
48220
class WinAsm;
 
48221
class WinDeclSpecs;
 
48222
class WinMemberExplSpec;
 
48223
class WinTypeKeywords;
 
48224
class WinFriend;
 
48225
class ExtAC;
 
48226
class ExtACBuilderCoupling;
 
48227
class ExtACSyntaxCoupling;
 
48228
class ExtACTree;
 
48229
class ExtACKeywords;
 
48230
class ExtGnu;
 
48231
class PragmaOnceUnitState;
 
48232
class PragmaOnce;
 
48233
class CMatchSyntax;
 
48234
namespace Puma {
 
48235
 
 
48236
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48237
 
 
48238
#line 48239 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48239
} // closed Puma
 
48240
 
 
48241
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48242
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48243
#include "CCExprResolveH.ah"
 
48244
#endif
 
48245
namespace Puma {
 
48246
 
 
48247
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48248
 
 
48249
#line 48250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48250
} // closed Puma
 
48251
 
 
48252
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48253
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48254
#include "CExprResolveH.ah"
 
48255
#endif
 
48256
namespace Puma {
 
48257
 
 
48258
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48259
class CT_Character : public CT_Expression {
 
48260
#line 48261 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48261
  friend class ::CCExprResolve;
 
48262
  friend class ::CExprResolve;
 
48263
  friend class ::WinIfExists;
 
48264
  friend class ::WinImportHandler;
 
48265
  friend class ::WinMacros;
 
48266
  friend class ::WinAsm;
 
48267
  friend class ::WinDeclSpecs;
 
48268
  friend class ::WinMemberExplSpec;
 
48269
  friend class ::WinTypeKeywords;
 
48270
  friend class ::WinFriend;
 
48271
  friend class ::ExtAC;
 
48272
  friend class ::ExtACBuilderCoupling;
 
48273
  friend class ::ExtACSyntaxCoupling;
 
48274
  friend class ::ExtACTree;
 
48275
  friend class ::ExtACKeywords;
 
48276
  friend class ::ExtGnu;
 
48277
  friend class ::PragmaOnceUnitState;
 
48278
  friend class ::PragmaOnce;
 
48279
  friend class ::CMatchSyntax;
 
48280
 
 
48281
#line 770 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48282
 
 
48283
  CTree *_value;  // CT_Token
 
48284
 
 
48285
public:
 
48286
  /** Constructor.
 
48287
   *  \param token The token containing the character value. */
 
48288
  CT_Character (CTree *token) { AddSon (_value, token); }
 
48289
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
48290
  static const char *NodeId ();
 
48291
  /** Get the name of the node. Can be compared with NodeId(). */
 
48292
  const char *NodeName () const { return NodeId (); }
 
48293
  /** Get the number of sons. */
 
48294
  int Sons () const { return 1; }
 
48295
  /** Get the n-th son.
 
48296
   *  \param n The index of the son.
 
48297
   *  \return The n-th son or NULL. */
 
48298
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
48299
  /** Replace a son.
 
48300
   *  \param old_son The son to replace.
 
48301
   *  \param new_son The new son. */
 
48302
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
48303
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
48304
   private:
 
48305
  typedef CT_Character CCExprResolveExpr;
 
48306
 
 
48307
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
48308
 public :
 
48309
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
48310
  typedef CT_Character CExprResolveExpr;
 
48311
 
 
48312
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
48313
 public :
 
48314
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
48315
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
48316
  const char *__attr_name (unsigned i) const {
 
48317
    static const char *names[] = { "_value" }; return names[i];
 
48318
  }
 
48319
  const void *__attr (unsigned __i) const {
 
48320
    switch (__i) { case 0: return &_value; default: return 0; }
 
48321
  }
 
48322
#line 792 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48323
};
 
48324
 
 
48325
/** \class CT_WideCharacter CTree.h Puma/CTree.h
 
48326
 *  Tree node representing a wide character constant. 
 
48327
 *  Example: \code L'a' \endcode */
 
48328
 
 
48329
#line 48330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48330
} // closed Puma
 
48331
class CCExprResolve;
 
48332
class CExprResolve;
 
48333
class WinIfExists;
 
48334
class WinImportHandler;
 
48335
class WinMacros;
 
48336
class WinAsm;
 
48337
class WinDeclSpecs;
 
48338
class WinMemberExplSpec;
 
48339
class WinTypeKeywords;
 
48340
class WinFriend;
 
48341
class ExtAC;
 
48342
class ExtACBuilderCoupling;
 
48343
class ExtACSyntaxCoupling;
 
48344
class ExtACTree;
 
48345
class ExtACKeywords;
 
48346
class ExtGnu;
 
48347
class PragmaOnceUnitState;
 
48348
class PragmaOnce;
 
48349
class CMatchSyntax;
 
48350
namespace Puma {
 
48351
 
 
48352
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48353
 
 
48354
#line 48355 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48355
} // closed Puma
 
48356
 
 
48357
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48358
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48359
#include "CCExprResolveH.ah"
 
48360
#endif
 
48361
namespace Puma {
 
48362
 
 
48363
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48364
 
 
48365
#line 48366 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48366
} // closed Puma
 
48367
 
 
48368
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48369
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48370
#include "CExprResolveH.ah"
 
48371
#endif
 
48372
namespace Puma {
 
48373
 
 
48374
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48375
class CT_WideCharacter : public CT_Character {
 
48376
#line 48377 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48377
  friend class ::CCExprResolve;
 
48378
  friend class ::CExprResolve;
 
48379
  friend class ::WinIfExists;
 
48380
  friend class ::WinImportHandler;
 
48381
  friend class ::WinMacros;
 
48382
  friend class ::WinAsm;
 
48383
  friend class ::WinDeclSpecs;
 
48384
  friend class ::WinMemberExplSpec;
 
48385
  friend class ::WinTypeKeywords;
 
48386
  friend class ::WinFriend;
 
48387
  friend class ::ExtAC;
 
48388
  friend class ::ExtACBuilderCoupling;
 
48389
  friend class ::ExtACSyntaxCoupling;
 
48390
  friend class ::ExtACTree;
 
48391
  friend class ::ExtACKeywords;
 
48392
  friend class ::ExtGnu;
 
48393
  friend class ::PragmaOnceUnitState;
 
48394
  friend class ::PragmaOnce;
 
48395
  friend class ::CMatchSyntax;
 
48396
 
 
48397
#line 797 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48398
 
 
48399
public:
 
48400
  /** Constructor.
 
48401
   *  \param token The token containing the wide character value. */
 
48402
  CT_WideCharacter (CTree *token) : CT_Character (token) {}
 
48403
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
48404
  static const char *NodeId ();
 
48405
  /** Get the name of the node. Can be compared with NodeId(). */
 
48406
  const char *NodeName () const { return NodeId (); }
 
48407
   private:
 
48408
  typedef CT_WideCharacter CCExprResolveExpr;
 
48409
 
 
48410
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
48411
 public :
 
48412
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
48413
  typedef CT_WideCharacter CExprResolveExpr;
 
48414
 
 
48415
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
48416
 public :
 
48417
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
48418
  typedef AC::TLE __AttrTypes;
 
48419
  const char *__attr_name (unsigned i) const { return 0; }
 
48420
  const void *__attr (unsigned __i) const { return 0; }
 
48421
#line 806 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48422
};
 
48423
 
 
48424
/** \class CT_Float CTree.h Puma/CTree.h
 
48425
 *  Tree node representing a floating point constant. 
 
48426
 *  Example: \code 12.34 \endcode */
 
48427
 
 
48428
#line 48429 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48429
} // closed Puma
 
48430
class CCExprResolve;
 
48431
class CExprResolve;
 
48432
class WinIfExists;
 
48433
class WinImportHandler;
 
48434
class WinMacros;
 
48435
class WinAsm;
 
48436
class WinDeclSpecs;
 
48437
class WinMemberExplSpec;
 
48438
class WinTypeKeywords;
 
48439
class WinFriend;
 
48440
class ExtAC;
 
48441
class ExtACBuilderCoupling;
 
48442
class ExtACSyntaxCoupling;
 
48443
class ExtACTree;
 
48444
class ExtACKeywords;
 
48445
class ExtGnu;
 
48446
class PragmaOnceUnitState;
 
48447
class PragmaOnce;
 
48448
class CMatchSyntax;
 
48449
namespace Puma {
 
48450
 
 
48451
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48452
 
 
48453
#line 48454 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48454
} // closed Puma
 
48455
 
 
48456
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48457
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48458
#include "CCExprResolveH.ah"
 
48459
#endif
 
48460
namespace Puma {
 
48461
 
 
48462
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48463
 
 
48464
#line 48465 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48465
} // closed Puma
 
48466
 
 
48467
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48468
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48469
#include "CExprResolveH.ah"
 
48470
#endif
 
48471
namespace Puma {
 
48472
 
 
48473
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48474
class CT_Float : public CT_Expression {
 
48475
#line 48476 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48476
  friend class ::CCExprResolve;
 
48477
  friend class ::CExprResolve;
 
48478
  friend class ::WinIfExists;
 
48479
  friend class ::WinImportHandler;
 
48480
  friend class ::WinMacros;
 
48481
  friend class ::WinAsm;
 
48482
  friend class ::WinDeclSpecs;
 
48483
  friend class ::WinMemberExplSpec;
 
48484
  friend class ::WinTypeKeywords;
 
48485
  friend class ::WinFriend;
 
48486
  friend class ::ExtAC;
 
48487
  friend class ::ExtACBuilderCoupling;
 
48488
  friend class ::ExtACSyntaxCoupling;
 
48489
  friend class ::ExtACTree;
 
48490
  friend class ::ExtACKeywords;
 
48491
  friend class ::ExtGnu;
 
48492
  friend class ::PragmaOnceUnitState;
 
48493
  friend class ::PragmaOnce;
 
48494
  friend class ::CMatchSyntax;
 
48495
 
 
48496
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48497
 
 
48498
  CTree *_value;  // CT_Token
 
48499
 
 
48500
public:
 
48501
  /** Constructor.
 
48502
   *  \param token The token containing the floating point value. */
 
48503
  CT_Float (CTree *token) { AddSon (_value, token); }
 
48504
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
48505
  static const char *NodeId ();
 
48506
  /** Get the name of the node. Can be compared with NodeId(). */
 
48507
  const char *NodeName () const { return NodeId (); }
 
48508
  /** Get the number of sons. */
 
48509
  int Sons () const { return 1; }
 
48510
  /** Get the n-th son.
 
48511
   *  \param n The index of the son.
 
48512
   *  \return The n-th son or NULL. */
 
48513
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
48514
  /** Replace a son.
 
48515
   *  \param old_son The son to replace.
 
48516
   *  \param new_son The new son. */
 
48517
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
48518
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
48519
   private:
 
48520
  typedef CT_Float CCExprResolveExpr;
 
48521
 
 
48522
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
48523
 public :
 
48524
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
48525
  typedef CT_Float CExprResolveExpr;
 
48526
 
 
48527
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
48528
 public :
 
48529
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
48530
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
48531
  const char *__attr_name (unsigned i) const {
 
48532
    static const char *names[] = { "_value" }; return names[i];
 
48533
  }
 
48534
  const void *__attr (unsigned __i) const {
 
48535
    switch (__i) { case 0: return &_value; default: return 0; }
 
48536
  }
 
48537
#line 833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48538
};
 
48539
 
 
48540
/** \class CT_Bool CTree.h Puma/CTree.h
 
48541
 *  Tree node representing a boolean literal. 
 
48542
 *  Examples: 
 
48543
 *  \code 
 
48544
 * true
 
48545
 * false
 
48546
 *  \endcode */
 
48547
 
 
48548
#line 48549 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48549
} // closed Puma
 
48550
class CCExprResolve;
 
48551
class CExprResolve;
 
48552
class WinIfExists;
 
48553
class WinImportHandler;
 
48554
class WinMacros;
 
48555
class WinAsm;
 
48556
class WinDeclSpecs;
 
48557
class WinMemberExplSpec;
 
48558
class WinTypeKeywords;
 
48559
class WinFriend;
 
48560
class ExtAC;
 
48561
class ExtACBuilderCoupling;
 
48562
class ExtACSyntaxCoupling;
 
48563
class ExtACTree;
 
48564
class ExtACKeywords;
 
48565
class ExtGnu;
 
48566
class PragmaOnceUnitState;
 
48567
class PragmaOnce;
 
48568
class CMatchSyntax;
 
48569
namespace Puma {
 
48570
 
 
48571
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48572
 
 
48573
#line 48574 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48574
} // closed Puma
 
48575
 
 
48576
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48577
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48578
#include "CCExprResolveH.ah"
 
48579
#endif
 
48580
namespace Puma {
 
48581
 
 
48582
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48583
 
 
48584
#line 48585 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48585
} // closed Puma
 
48586
 
 
48587
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48588
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48589
#include "CExprResolveH.ah"
 
48590
#endif
 
48591
namespace Puma {
 
48592
 
 
48593
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48594
class CT_Bool : public CT_Expression {
 
48595
#line 48596 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48596
  friend class ::CCExprResolve;
 
48597
  friend class ::CExprResolve;
 
48598
  friend class ::WinIfExists;
 
48599
  friend class ::WinImportHandler;
 
48600
  friend class ::WinMacros;
 
48601
  friend class ::WinAsm;
 
48602
  friend class ::WinDeclSpecs;
 
48603
  friend class ::WinMemberExplSpec;
 
48604
  friend class ::WinTypeKeywords;
 
48605
  friend class ::WinFriend;
 
48606
  friend class ::ExtAC;
 
48607
  friend class ::ExtACBuilderCoupling;
 
48608
  friend class ::ExtACSyntaxCoupling;
 
48609
  friend class ::ExtACTree;
 
48610
  friend class ::ExtACKeywords;
 
48611
  friend class ::ExtGnu;
 
48612
  friend class ::PragmaOnceUnitState;
 
48613
  friend class ::PragmaOnce;
 
48614
  friend class ::CMatchSyntax;
 
48615
 
 
48616
#line 842 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48617
 
 
48618
  CTree *_value;  // CT_Token
 
48619
 
 
48620
public:
 
48621
  /** Constructor.
 
48622
   *  \param token The token containing the boolean value. */
 
48623
  CT_Bool (CTree *token) { AddSon (_value, token); }
 
48624
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
48625
  static const char *NodeId ();
 
48626
  /** Get the name of the node. Can be compared with NodeId(). */
 
48627
  const char *NodeName () const { return NodeId (); }
 
48628
  /** Get the number of sons. */
 
48629
  int Sons () const { return 1; }
 
48630
  /** Get the n-th son.
 
48631
   *  \param n The index of the son.
 
48632
   *  \return The n-th son or NULL. */
 
48633
  CTree *Son (int n) const { return (n == 0) ? _value : (CTree*)0; }
 
48634
  /** Replace a son.
 
48635
   *  \param old_son The son to replace.
 
48636
   *  \param new_son The new son. */
 
48637
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
48638
   { CTree::ReplaceSon (_value, old_son, new_son); }
 
48639
   private:
 
48640
  typedef CT_Bool CCExprResolveExpr;
 
48641
 
 
48642
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
48643
 public :
 
48644
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
48645
  typedef CT_Bool CExprResolveExpr;
 
48646
 
 
48647
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
48648
 public :
 
48649
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
48650
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
48651
  const char *__attr_name (unsigned i) const {
 
48652
    static const char *names[] = { "_value" }; return names[i];
 
48653
  }
 
48654
  const void *__attr (unsigned __i) const {
 
48655
    switch (__i) { case 0: return &_value; default: return 0; }
 
48656
  }
 
48657
#line 864 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48658
};
 
48659
 
 
48660
/** \class CT_BracedExpr CTree.h Puma/CTree.h
 
48661
 *  Tree node representing a braced expression.
 
48662
 *  Example: \code (a+b) \endcode */
 
48663
 
 
48664
#line 48665 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48665
} // closed Puma
 
48666
class CCExprResolve;
 
48667
class CExprResolve;
 
48668
class WinIfExists;
 
48669
class WinImportHandler;
 
48670
class WinMacros;
 
48671
class WinAsm;
 
48672
class WinDeclSpecs;
 
48673
class WinMemberExplSpec;
 
48674
class WinTypeKeywords;
 
48675
class WinFriend;
 
48676
class ExtAC;
 
48677
class ExtACBuilderCoupling;
 
48678
class ExtACSyntaxCoupling;
 
48679
class ExtACTree;
 
48680
class ExtACKeywords;
 
48681
class ExtGnu;
 
48682
class PragmaOnceUnitState;
 
48683
class PragmaOnce;
 
48684
class CMatchSyntax;
 
48685
namespace Puma {
 
48686
 
 
48687
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48688
 
 
48689
#line 48690 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48690
} // closed Puma
 
48691
 
 
48692
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48693
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48694
#include "CCExprResolveH.ah"
 
48695
#endif
 
48696
namespace Puma {
 
48697
 
 
48698
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48699
 
 
48700
#line 48701 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48701
} // closed Puma
 
48702
 
 
48703
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48704
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48705
#include "CExprResolveH.ah"
 
48706
#endif
 
48707
namespace Puma {
 
48708
 
 
48709
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48710
class CT_BracedExpr : public CT_Expression {
 
48711
#line 48712 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48712
  friend class ::CCExprResolve;
 
48713
  friend class ::CExprResolve;
 
48714
  friend class ::WinIfExists;
 
48715
  friend class ::WinImportHandler;
 
48716
  friend class ::WinMacros;
 
48717
  friend class ::WinAsm;
 
48718
  friend class ::WinDeclSpecs;
 
48719
  friend class ::WinMemberExplSpec;
 
48720
  friend class ::WinTypeKeywords;
 
48721
  friend class ::WinFriend;
 
48722
  friend class ::ExtAC;
 
48723
  friend class ::ExtACBuilderCoupling;
 
48724
  friend class ::ExtACSyntaxCoupling;
 
48725
  friend class ::ExtACTree;
 
48726
  friend class ::ExtACKeywords;
 
48727
  friend class ::ExtGnu;
 
48728
  friend class ::PragmaOnceUnitState;
 
48729
  friend class ::PragmaOnce;
 
48730
  friend class ::CMatchSyntax;
 
48731
 
 
48732
#line 869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48733
 
 
48734
  CTree *sons[3]; // open, expr, close
 
48735
 
 
48736
public:
 
48737
  /** Constructor.
 
48738
   *  \param o The opening brace.
 
48739
   *  \param e The enclosed expression.
 
48740
   *  \param c The closing brace. */
 
48741
  CT_BracedExpr (CTree *o, CTree *e, CTree *c) { 
 
48742
    AddSon (sons[0], o); AddSon (sons[1], e); AddSon (sons[2], c); 
 
48743
  }
 
48744
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
48745
  static const char *NodeId ();
 
48746
  /** Get the name of the node. Can be compared with NodeId(). */
 
48747
  const char *NodeName () const { return NodeId (); }
 
48748
  /** Get the number of sons. */
 
48749
  int Sons () const { return 3; }
 
48750
  /** Get the n-th son.
 
48751
   *  \param n The index of the son.
 
48752
   *  \return The n-th son or NULL. */
 
48753
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
48754
  /** Get the enclosed expression. */
 
48755
  CTree *Expr () const { return sons[1]; }
 
48756
  /** Get the semantic value of the expression. */
 
48757
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
48758
  /** Replace a son.
 
48759
   *  \param old_son The son to replace.
 
48760
   *  \param new_son The new son. */
 
48761
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
48762
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
48763
  }
 
48764
   private:
 
48765
  typedef CT_BracedExpr CCExprResolveExpr;
 
48766
 
 
48767
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
48768
 public :
 
48769
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
48770
  typedef CT_BracedExpr CExprResolveExpr;
 
48771
 
 
48772
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
48773
 public :
 
48774
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
48775
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
48776
  const char *__attr_name (unsigned i) const {
 
48777
    static const char *names[] = { "sons" }; return names[i];
 
48778
  }
 
48779
  const void *__attr (unsigned __i) const {
 
48780
    switch (__i) { case 0: return &sons; default: return 0; }
 
48781
  }
 
48782
#line 900 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48783
};
 
48784
 
 
48785
/** \class CT_SimpleName CTree.h Puma/CTree.h
 
48786
 *  Base class for all tree nodes representing a name. 
 
48787
 *  Example: \code a \endcode */
 
48788
 
 
48789
#line 48790 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48790
} // closed Puma
 
48791
class CCExprResolve;
 
48792
class CExprResolve;
 
48793
class WinIfExists;
 
48794
class WinImportHandler;
 
48795
class WinMacros;
 
48796
class WinAsm;
 
48797
class WinDeclSpecs;
 
48798
class WinMemberExplSpec;
 
48799
class WinTypeKeywords;
 
48800
class WinFriend;
 
48801
class ExtAC;
 
48802
class ExtACBuilderCoupling;
 
48803
class ExtACSyntaxCoupling;
 
48804
class ExtACTree;
 
48805
class ExtACKeywords;
 
48806
class ExtGnu;
 
48807
class PragmaOnceUnitState;
 
48808
class PragmaOnce;
 
48809
class CMatchSyntax;
 
48810
namespace Puma {
 
48811
 
 
48812
#line 905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48813
 
 
48814
#line 48815 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48815
} // closed Puma
 
48816
 
 
48817
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48818
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48819
#include "CCExprResolveH.ah"
 
48820
#endif
 
48821
namespace Puma {
 
48822
 
 
48823
#line 905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48824
 
 
48825
#line 48826 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48826
} // closed Puma
 
48827
 
 
48828
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48829
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48830
#include "CExprResolveH.ah"
 
48831
#endif
 
48832
namespace Puma {
 
48833
 
 
48834
#line 905 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48835
class CT_SimpleName : public CT_List, public Printable, 
 
48836
                      public CSemValue, public CSemObject {
 
48837
#line 48838 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48838
  friend class ::CCExprResolve;
 
48839
  friend class ::CExprResolve;
 
48840
  friend class ::WinIfExists;
 
48841
  friend class ::WinImportHandler;
 
48842
  friend class ::WinMacros;
 
48843
  friend class ::WinAsm;
 
48844
  friend class ::WinDeclSpecs;
 
48845
  friend class ::WinMemberExplSpec;
 
48846
  friend class ::WinTypeKeywords;
 
48847
  friend class ::WinFriend;
 
48848
  friend class ::ExtAC;
 
48849
  friend class ::ExtACBuilderCoupling;
 
48850
  friend class ::ExtACSyntaxCoupling;
 
48851
  friend class ::ExtACTree;
 
48852
  friend class ::ExtACKeywords;
 
48853
  friend class ::ExtGnu;
 
48854
  friend class ::PragmaOnceUnitState;
 
48855
  friend class ::PragmaOnce;
 
48856
  friend class ::CMatchSyntax;
 
48857
 
 
48858
#line 906 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48859
 
 
48860
protected:
 
48861
  /** Constructor.
 
48862
   *  \param size The number of sub-names (for qualified names). */
 
48863
  CT_SimpleName (int size) : CT_List (size, 1) {}
 
48864
  /** Constructor.
 
48865
   *  \param size The number of sub-names (for qualified names). 
 
48866
   *  \param properties Additional name list properties (for root qualified names). */
 
48867
  CT_SimpleName (int size, int properties) : 
 
48868
    CT_List (size, 2, properties) {}
 
48869
  
 
48870
public:
 
48871
  /** Constructor.
 
48872
   *  \param n The sub-tree containing the name. */
 
48873
  CT_SimpleName (CTree *n) : CT_List (1, 1) { AddSon (n); }
 
48874
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
48875
  static const char *NodeId ();
 
48876
  /** Get the name of the node. Can be compared with NodeId(). */
 
48877
  const char *NodeName () const { return NodeId (); }
 
48878
  /** Get the string containing the name. */
 
48879
  virtual const char *Text () const 
 
48880
   { return Son (Sons ()-1)->token ()->text (); }
 
48881
  /** Print the name on the given stream. 
 
48882
   *  \param os The output stream. */
 
48883
  virtual void print (ostream &os) const { os << Text (); }
 
48884
  /** Get this. */
 
48885
  virtual CT_SimpleName *Name () const { return (CT_SimpleName*)this; }
 
48886
  /** Get the type of the entity represented by the name. */
 
48887
  CTypeInfo *Type () const { return type; }
 
48888
  /** Get the value of the entity represented by the name. */ 
 
48889
  CExprValue *Value () const { return value; }
 
48890
  /** Get the sematic value information of the name. */
 
48891
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
48892
  /** Get the sematic information about the name. */
 
48893
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
48894
  /** Get this. */
 
48895
  virtual CT_SimpleName *IsSimpleName () { return this; }  
 
48896
 
 
48897
public:
 
48898
  /** Own new operator reusing memory. */
 
48899
  void *operator new (size_t);
 
48900
  /** Own delete operator. */
 
48901
  void operator delete (void *);
 
48902
   private:
 
48903
  typedef CT_SimpleName CCExprResolveExpr;
 
48904
 
 
48905
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
48906
 public :
 
48907
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
48908
  typedef CT_SimpleName CExprResolveExpr;
 
48909
 
 
48910
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
48911
 public :
 
48912
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
48913
  typedef AC::TLE __AttrTypes;
 
48914
  const char *__attr_name (unsigned i) const { return 0; }
 
48915
  const void *__attr (unsigned __i) const { return 0; }
 
48916
#line 949 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48917
};
 
48918
 
 
48919
/** \class CT_SpecialName CTree.h Puma/CTree.h
 
48920
 *  Base class for tree nodes representing a special name, like destructor names. */
 
48921
 
 
48922
#line 48923 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48923
} // closed Puma
 
48924
class CCExprResolve;
 
48925
class CExprResolve;
 
48926
class WinIfExists;
 
48927
class WinImportHandler;
 
48928
class WinMacros;
 
48929
class WinAsm;
 
48930
class WinDeclSpecs;
 
48931
class WinMemberExplSpec;
 
48932
class WinTypeKeywords;
 
48933
class WinFriend;
 
48934
class ExtAC;
 
48935
class ExtACBuilderCoupling;
 
48936
class ExtACSyntaxCoupling;
 
48937
class ExtACTree;
 
48938
class ExtACKeywords;
 
48939
class ExtGnu;
 
48940
class PragmaOnceUnitState;
 
48941
class PragmaOnce;
 
48942
class CMatchSyntax;
 
48943
namespace Puma {
 
48944
 
 
48945
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48946
 
 
48947
#line 48948 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48948
} // closed Puma
 
48949
 
 
48950
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48951
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
48952
#include "CCExprResolveH.ah"
 
48953
#endif
 
48954
namespace Puma {
 
48955
 
 
48956
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48957
 
 
48958
#line 48959 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48959
} // closed Puma
 
48960
 
 
48961
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48962
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
48963
#include "CExprResolveH.ah"
 
48964
#endif
 
48965
namespace Puma {
 
48966
 
 
48967
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48968
class CT_SpecialName : public CT_SimpleName {
 
48969
#line 48970 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
48970
  friend class ::CCExprResolve;
 
48971
  friend class ::CExprResolve;
 
48972
  friend class ::WinIfExists;
 
48973
  friend class ::WinImportHandler;
 
48974
  friend class ::WinMacros;
 
48975
  friend class ::WinAsm;
 
48976
  friend class ::WinDeclSpecs;
 
48977
  friend class ::WinMemberExplSpec;
 
48978
  friend class ::WinTypeKeywords;
 
48979
  friend class ::WinFriend;
 
48980
  friend class ::ExtAC;
 
48981
  friend class ::ExtACBuilderCoupling;
 
48982
  friend class ::ExtACSyntaxCoupling;
 
48983
  friend class ::ExtACTree;
 
48984
  friend class ::ExtACKeywords;
 
48985
  friend class ::ExtGnu;
 
48986
  friend class ::PragmaOnceUnitState;
 
48987
  friend class ::PragmaOnce;
 
48988
  friend class ::CMatchSyntax;
 
48989
 
 
48990
#line 953 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
48991
 
 
48992
  char *_name;
 
48993
  
 
48994
protected:
 
48995
  /** Constructor.
 
48996
   *  \param size The number of sub-names (for qualified names). */
 
48997
  CT_SpecialName (int size = 1) : CT_SimpleName (size), _name (0) {}
 
48998
  
 
48999
public:
 
49000
  /** Destructor. Deletes the name string. */
 
49001
  ~CT_SpecialName () { if (_name) delete[] _name; }
 
49002
  /** Get the string containing the name. */
 
49003
  const char *Text () const { return _name; }
 
49004
  /** Set the name. The name is copied.
 
49005
   *  \param n The name. */
 
49006
  void Name (const char *n) { 
 
49007
    if (n) { 
 
49008
      _name = new char[strlen(n) + 1];
 
49009
      strcpy (_name,n);
 
49010
    }
 
49011
  }
 
49012
 
 
49013
public:
 
49014
  /** Own new operator reusing memory. */
 
49015
  void *operator new (size_t);
 
49016
  /** Own delete operator. */
 
49017
  void operator delete (void *);
 
49018
   private:
 
49019
  typedef CT_SpecialName CCExprResolveExpr;
 
49020
 
 
49021
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
49022
 public :
 
49023
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
49024
  typedef CT_SpecialName CExprResolveExpr;
 
49025
 
 
49026
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
49027
 public :
 
49028
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
49029
  typedef AC::TL<char *,AC::TLE > __AttrTypes;
 
49030
  const char *__attr_name (unsigned i) const {
 
49031
    static const char *names[] = { "_name" }; return names[i];
 
49032
  }
 
49033
  const void *__attr (unsigned __i) const {
 
49034
    switch (__i) { case 0: return &_name; default: return 0; }
 
49035
  }
 
49036
#line 980 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49037
};
 
49038
 
 
49039
/** \class CT_PrivateName CTree.h Puma/CTree.h
 
49040
 *  Tree node representing a private name. Private names 
 
49041
 *  are generated names for instance for abstract declarators.
 
49042
 *  Example: 
 
49043
 *  \code 
 
49044
 * void foo(int*);  // first parameter of foo has private name
 
49045
 *  \endcode */
 
49046
 
 
49047
#line 49048 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49048
} // closed Puma
 
49049
class CCExprResolve;
 
49050
class CExprResolve;
 
49051
class WinIfExists;
 
49052
class WinImportHandler;
 
49053
class WinMacros;
 
49054
class WinAsm;
 
49055
class WinDeclSpecs;
 
49056
class WinMemberExplSpec;
 
49057
class WinTypeKeywords;
 
49058
class WinFriend;
 
49059
class ExtAC;
 
49060
class ExtACBuilderCoupling;
 
49061
class ExtACSyntaxCoupling;
 
49062
class ExtACTree;
 
49063
class ExtACKeywords;
 
49064
class ExtGnu;
 
49065
class PragmaOnceUnitState;
 
49066
class PragmaOnce;
 
49067
class CMatchSyntax;
 
49068
namespace Puma {
 
49069
 
 
49070
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49071
 
 
49072
#line 49073 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49073
} // closed Puma
 
49074
 
 
49075
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49076
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49077
#include "CCExprResolveH.ah"
 
49078
#endif
 
49079
namespace Puma {
 
49080
 
 
49081
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49082
 
 
49083
#line 49084 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49084
} // closed Puma
 
49085
 
 
49086
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49087
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49088
#include "CExprResolveH.ah"
 
49089
#endif
 
49090
namespace Puma {
 
49091
 
 
49092
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49093
class CT_PrivateName : public CT_SpecialName {
 
49094
#line 49095 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49095
  friend class ::CCExprResolve;
 
49096
  friend class ::CExprResolve;
 
49097
  friend class ::WinIfExists;
 
49098
  friend class ::WinImportHandler;
 
49099
  friend class ::WinMacros;
 
49100
  friend class ::WinAsm;
 
49101
  friend class ::WinDeclSpecs;
 
49102
  friend class ::WinMemberExplSpec;
 
49103
  friend class ::WinTypeKeywords;
 
49104
  friend class ::WinFriend;
 
49105
  friend class ::ExtAC;
 
49106
  friend class ::ExtACBuilderCoupling;
 
49107
  friend class ::ExtACSyntaxCoupling;
 
49108
  friend class ::ExtACTree;
 
49109
  friend class ::ExtACKeywords;
 
49110
  friend class ::ExtGnu;
 
49111
  friend class ::PragmaOnceUnitState;
 
49112
  friend class ::PragmaOnce;
 
49113
  friend class ::CMatchSyntax;
 
49114
 
 
49115
#line 989 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49116
 
 
49117
public:
 
49118
  /** Constructor.
 
49119
   *  \param n The private (generated) name. */
 
49120
  CT_PrivateName (const char *n) { Name (n); }
 
49121
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
49122
  static const char *NodeId ();
 
49123
  /** Get the name of the node. Can be compared with NodeId(). */
 
49124
  const char *NodeName () const { return NodeId (); }
 
49125
  /** Get the number of sons. */
 
49126
  int Sons () const { return 0; }
 
49127
  /** Get the n-th son.
 
49128
   *  \param n The index of the son.
 
49129
   *  \return The n-th son or NULL. */
 
49130
  CTree *Son (int n) const { return (CTree*)0; }
 
49131
 
 
49132
public:
 
49133
  /** Own new operator reusing memory. */
 
49134
  void *operator new (size_t);
 
49135
  /** Own delete operator. */
 
49136
  void operator delete (void *);
 
49137
   private:
 
49138
  typedef CT_PrivateName CCExprResolveExpr;
 
49139
 
 
49140
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
49141
 public :
 
49142
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
49143
  typedef CT_PrivateName CExprResolveExpr;
 
49144
 
 
49145
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
49146
 public :
 
49147
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
49148
  typedef AC::TLE __AttrTypes;
 
49149
  const char *__attr_name (unsigned i) const { return 0; }
 
49150
  const void *__attr (unsigned __i) const { return 0; }
 
49151
#line 1010 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49152
};
 
49153
 
 
49154
/** \class CT_DestructorName CTree.h Puma/CTree.h
 
49155
 *  Tree node representing a destructor name.
 
49156
 *  Example: \code ~X \endcode */
 
49157
 
 
49158
#line 49159 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49159
} // closed Puma
 
49160
class CCExprResolve;
 
49161
class CExprResolve;
 
49162
class WinIfExists;
 
49163
class WinImportHandler;
 
49164
class WinMacros;
 
49165
class WinAsm;
 
49166
class WinDeclSpecs;
 
49167
class WinMemberExplSpec;
 
49168
class WinTypeKeywords;
 
49169
class WinFriend;
 
49170
class ExtAC;
 
49171
class ExtACBuilderCoupling;
 
49172
class ExtACSyntaxCoupling;
 
49173
class ExtACTree;
 
49174
class ExtACKeywords;
 
49175
class ExtGnu;
 
49176
class PragmaOnceUnitState;
 
49177
class PragmaOnce;
 
49178
class CMatchSyntax;
 
49179
namespace Puma {
 
49180
 
 
49181
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49182
 
 
49183
#line 49184 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49184
} // closed Puma
 
49185
 
 
49186
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49187
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49188
#include "CCExprResolveH.ah"
 
49189
#endif
 
49190
namespace Puma {
 
49191
 
 
49192
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49193
 
 
49194
#line 49195 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49195
} // closed Puma
 
49196
 
 
49197
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49198
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49199
#include "CExprResolveH.ah"
 
49200
#endif
 
49201
namespace Puma {
 
49202
 
 
49203
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49204
class CT_DestructorName : public CT_SpecialName {
 
49205
#line 49206 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49206
  friend class ::CCExprResolve;
 
49207
  friend class ::CExprResolve;
 
49208
  friend class ::WinIfExists;
 
49209
  friend class ::WinImportHandler;
 
49210
  friend class ::WinMacros;
 
49211
  friend class ::WinAsm;
 
49212
  friend class ::WinDeclSpecs;
 
49213
  friend class ::WinMemberExplSpec;
 
49214
  friend class ::WinTypeKeywords;
 
49215
  friend class ::WinFriend;
 
49216
  friend class ::ExtAC;
 
49217
  friend class ::ExtACBuilderCoupling;
 
49218
  friend class ::ExtACSyntaxCoupling;
 
49219
  friend class ::ExtACTree;
 
49220
  friend class ::ExtACKeywords;
 
49221
  friend class ::ExtGnu;
 
49222
  friend class ::PragmaOnceUnitState;
 
49223
  friend class ::PragmaOnce;
 
49224
  friend class ::CMatchSyntax;
 
49225
 
 
49226
#line 1015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49227
 
 
49228
public:
 
49229
  /** Constructor.
 
49230
   *  \param t The tilde operator.
 
49231
   *  \param n The class name. */
 
49232
  CT_DestructorName (CTree *t, CTree *n);
 
49233
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
49234
  static const char *NodeId ();
 
49235
  /** Get the name of the node. Can be compared with NodeId(). */
 
49236
  const char *NodeName () const { return NodeId (); }
 
49237
 
 
49238
public:
 
49239
  /** Own new operator reusing memory. */
 
49240
  void *operator new (size_t);
 
49241
  /** Own delete operator. */
 
49242
  void operator delete (void *);
 
49243
   private:
 
49244
  typedef CT_DestructorName CCExprResolveExpr;
 
49245
 
 
49246
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
49247
 public :
 
49248
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
49249
  typedef CT_DestructorName CExprResolveExpr;
 
49250
 
 
49251
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
49252
 public :
 
49253
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
49254
  typedef AC::TLE __AttrTypes;
 
49255
  const char *__attr_name (unsigned i) const { return 0; }
 
49256
  const void *__attr (unsigned __i) const { return 0; }
 
49257
#line 1031 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49258
};
 
49259
 
 
49260
/** \class CT_TemplateName CTree.h Puma/CTree.h
 
49261
 *  Tree node representing a template name.
 
49262
 *  Example: \code X<T> \endcode */
 
49263
 
 
49264
#line 49265 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49265
} // closed Puma
 
49266
class CCExprResolve;
 
49267
class CExprResolve;
 
49268
class WinIfExists;
 
49269
class WinImportHandler;
 
49270
class WinMacros;
 
49271
class WinAsm;
 
49272
class WinDeclSpecs;
 
49273
class WinMemberExplSpec;
 
49274
class WinTypeKeywords;
 
49275
class WinFriend;
 
49276
class ExtAC;
 
49277
class ExtACBuilderCoupling;
 
49278
class ExtACSyntaxCoupling;
 
49279
class ExtACTree;
 
49280
class ExtACKeywords;
 
49281
class ExtGnu;
 
49282
class PragmaOnceUnitState;
 
49283
class PragmaOnce;
 
49284
class CMatchSyntax;
 
49285
namespace Puma {
 
49286
 
 
49287
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49288
 
 
49289
#line 49290 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49290
} // closed Puma
 
49291
 
 
49292
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49293
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49294
#include "CCExprResolveH.ah"
 
49295
#endif
 
49296
namespace Puma {
 
49297
 
 
49298
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49299
 
 
49300
#line 49301 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49301
} // closed Puma
 
49302
 
 
49303
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49304
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49305
#include "CExprResolveH.ah"
 
49306
#endif
 
49307
namespace Puma {
 
49308
 
 
49309
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49310
class CT_TemplateName : public CT_SpecialName {
 
49311
#line 49312 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49312
  friend class ::CCExprResolve;
 
49313
  friend class ::CExprResolve;
 
49314
  friend class ::WinIfExists;
 
49315
  friend class ::WinImportHandler;
 
49316
  friend class ::WinMacros;
 
49317
  friend class ::WinAsm;
 
49318
  friend class ::WinDeclSpecs;
 
49319
  friend class ::WinMemberExplSpec;
 
49320
  friend class ::WinTypeKeywords;
 
49321
  friend class ::WinFriend;
 
49322
  friend class ::ExtAC;
 
49323
  friend class ::ExtACBuilderCoupling;
 
49324
  friend class ::ExtACSyntaxCoupling;
 
49325
  friend class ::ExtACTree;
 
49326
  friend class ::ExtACKeywords;
 
49327
  friend class ::ExtGnu;
 
49328
  friend class ::PragmaOnceUnitState;
 
49329
  friend class ::PragmaOnce;
 
49330
  friend class ::CMatchSyntax;
 
49331
 
 
49332
#line 1036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49333
 
 
49334
public:
 
49335
  /** Constructor.
 
49336
   *  \param n The template class or function name.
 
49337
   *  \param a The template argument list. */
 
49338
  CT_TemplateName (CTree *n, CTree *a) 
 
49339
   { AddSon (n); AddSon (a); }
 
49340
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
49341
  static const char *NodeId ();
 
49342
  /** Get the name of the node. Can be compared with NodeId(). */
 
49343
  const char *NodeName () const { return NodeId (); }
 
49344
  /** Get the template argument list. */
 
49345
  CT_TemplateArgList *Arguments () const 
 
49346
   { return (CT_TemplateArgList*)Son (Sons ()-1); }
 
49347
  /** Get the template class or function name. */
 
49348
  CT_SimpleName *TemplateName () const 
 
49349
   { return (CT_SimpleName*)Son (Sons ()-2); }
 
49350
  // may change in the future
 
49351
  const char *Text () const { return TemplateName ()->Text (); }
 
49352
 
 
49353
public:
 
49354
  /** Own new operator reusing memory. */
 
49355
  void *operator new (size_t);
 
49356
  /** Own delete operator. */
 
49357
  void operator delete (void *);
 
49358
   private:
 
49359
  typedef CT_TemplateName CCExprResolveExpr;
 
49360
 
 
49361
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
49362
 public :
 
49363
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
49364
  typedef CT_TemplateName CExprResolveExpr;
 
49365
 
 
49366
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
49367
 public :
 
49368
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
49369
  typedef AC::TLE __AttrTypes;
 
49370
  const char *__attr_name (unsigned i) const { return 0; }
 
49371
  const void *__attr (unsigned __i) const { return 0; }
 
49372
#line 1061 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49373
};
 
49374
 
 
49375
/** \class CT_OperatorName CTree.h Puma/CTree.h
 
49376
 *  Tree node representing the name of an overloaded operator. 
 
49377
 *  Example: \code operator== \endcode */
 
49378
 
 
49379
#line 49380 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49380
} // closed Puma
 
49381
class CCExprResolve;
 
49382
class CExprResolve;
 
49383
class WinIfExists;
 
49384
class WinImportHandler;
 
49385
class WinMacros;
 
49386
class WinAsm;
 
49387
class WinDeclSpecs;
 
49388
class WinMemberExplSpec;
 
49389
class WinTypeKeywords;
 
49390
class WinFriend;
 
49391
class ExtAC;
 
49392
class ExtACBuilderCoupling;
 
49393
class ExtACSyntaxCoupling;
 
49394
class ExtACTree;
 
49395
class ExtACKeywords;
 
49396
class ExtGnu;
 
49397
class PragmaOnceUnitState;
 
49398
class PragmaOnce;
 
49399
class CMatchSyntax;
 
49400
namespace Puma {
 
49401
 
 
49402
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49403
 
 
49404
#line 49405 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49405
} // closed Puma
 
49406
 
 
49407
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49408
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49409
#include "CCExprResolveH.ah"
 
49410
#endif
 
49411
namespace Puma {
 
49412
 
 
49413
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49414
 
 
49415
#line 49416 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49416
} // closed Puma
 
49417
 
 
49418
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49419
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49420
#include "CExprResolveH.ah"
 
49421
#endif
 
49422
namespace Puma {
 
49423
 
 
49424
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49425
class CT_OperatorName : public CT_SpecialName {
 
49426
#line 49427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49427
  friend class ::CCExprResolve;
 
49428
  friend class ::CExprResolve;
 
49429
  friend class ::WinIfExists;
 
49430
  friend class ::WinImportHandler;
 
49431
  friend class ::WinMacros;
 
49432
  friend class ::WinAsm;
 
49433
  friend class ::WinDeclSpecs;
 
49434
  friend class ::WinMemberExplSpec;
 
49435
  friend class ::WinTypeKeywords;
 
49436
  friend class ::WinFriend;
 
49437
  friend class ::ExtAC;
 
49438
  friend class ::ExtACBuilderCoupling;
 
49439
  friend class ::ExtACSyntaxCoupling;
 
49440
  friend class ::ExtACTree;
 
49441
  friend class ::ExtACKeywords;
 
49442
  friend class ::ExtGnu;
 
49443
  friend class ::PragmaOnceUnitState;
 
49444
  friend class ::PragmaOnce;
 
49445
  friend class ::CMatchSyntax;
 
49446
 
 
49447
#line 1066 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49448
 
 
49449
  int _oper;
 
49450
 
 
49451
public:
 
49452
  /** Complex operator types. */
 
49453
  enum { 
 
49454
    FCT_CALL = -100,  /** Function call operator, i.e. (). */
 
49455
    SUBSCRIPT,        /** Array subscript operator, i.e. []. */
 
49456
    NEW_ARRAY,        /** New array operator, i.e. new[]. */
 
49457
    DEL_ARRAY         /** Delete array operator, i.e. delete[]. */
 
49458
  };
 
49459
 
 
49460
public:
 
49461
  /** Constructor.
 
49462
   *  \param op The token containing the operator. */
 
49463
  CT_OperatorName (CTree *op);
 
49464
  /** Constructor.
 
49465
   *  \param f The operator function keyword 'operator'.
 
49466
   *  \param op The token containing the operator. 
 
49467
   *  \param o The token of '[' or '('.
 
49468
   *  \param c The token of ']' or ')'. */
 
49469
  CT_OperatorName (CTree *f, CTree *op, CTree *o, CTree *c);
 
49470
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
49471
  static const char *NodeId ();
 
49472
  /** Get the name of the node. Can be compared with NodeId(). */
 
49473
  const char *NodeName () const { return NodeId (); }
 
49474
  /** Get the operator type (either the token type or one of 
 
49475
   *  the complex operator types). */
 
49476
  int Operator () const { return _oper; }
 
49477
 
 
49478
public:
 
49479
  /** Own new operator reusing memory. */
 
49480
  void *operator new (size_t);
 
49481
  /** Own delete operator. */
 
49482
  void operator delete (void *);
 
49483
   private:
 
49484
  typedef CT_OperatorName CCExprResolveExpr;
 
49485
 
 
49486
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
49487
 public :
 
49488
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
49489
  typedef CT_OperatorName CExprResolveExpr;
 
49490
 
 
49491
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
49492
 public :
 
49493
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
49494
  typedef AC::TL<int,AC::TLE > __AttrTypes;
 
49495
  const char *__attr_name (unsigned i) const {
 
49496
    static const char *names[] = { "_oper" }; return names[i];
 
49497
  }
 
49498
  const void *__attr (unsigned __i) const {
 
49499
    switch (__i) { case 0: return &_oper; default: return 0; }
 
49500
  }
 
49501
#line 1101 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49502
};
 
49503
 
 
49504
/** \class CT_ConversionName CTree.h Puma/CTree.h
 
49505
 *  Tree node representing the name of a conversion function.
 
49506
 *  Example: \code operator int* \endcode */
 
49507
 
 
49508
#line 49509 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49509
} // closed Puma
 
49510
class CCExprResolve;
 
49511
class CExprResolve;
 
49512
class WinIfExists;
 
49513
class WinImportHandler;
 
49514
class WinMacros;
 
49515
class WinAsm;
 
49516
class WinDeclSpecs;
 
49517
class WinMemberExplSpec;
 
49518
class WinTypeKeywords;
 
49519
class WinFriend;
 
49520
class ExtAC;
 
49521
class ExtACBuilderCoupling;
 
49522
class ExtACSyntaxCoupling;
 
49523
class ExtACTree;
 
49524
class ExtACKeywords;
 
49525
class ExtGnu;
 
49526
class PragmaOnceUnitState;
 
49527
class PragmaOnce;
 
49528
class CMatchSyntax;
 
49529
namespace Puma {
 
49530
 
 
49531
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49532
 
 
49533
#line 49534 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49534
} // closed Puma
 
49535
 
 
49536
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49537
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49538
#include "CCExprResolveH.ah"
 
49539
#endif
 
49540
namespace Puma {
 
49541
 
 
49542
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49543
 
 
49544
#line 49545 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49545
} // closed Puma
 
49546
 
 
49547
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49548
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49549
#include "CExprResolveH.ah"
 
49550
#endif
 
49551
namespace Puma {
 
49552
 
 
49553
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49554
class CT_ConversionName : public CT_SpecialName {
 
49555
#line 49556 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49556
  friend class ::CCExprResolve;
 
49557
  friend class ::CExprResolve;
 
49558
  friend class ::WinIfExists;
 
49559
  friend class ::WinImportHandler;
 
49560
  friend class ::WinMacros;
 
49561
  friend class ::WinAsm;
 
49562
  friend class ::WinDeclSpecs;
 
49563
  friend class ::WinMemberExplSpec;
 
49564
  friend class ::WinTypeKeywords;
 
49565
  friend class ::WinFriend;
 
49566
  friend class ::ExtAC;
 
49567
  friend class ::ExtACBuilderCoupling;
 
49568
  friend class ::ExtACSyntaxCoupling;
 
49569
  friend class ::ExtACTree;
 
49570
  friend class ::ExtACKeywords;
 
49571
  friend class ::ExtGnu;
 
49572
  friend class ::PragmaOnceUnitState;
 
49573
  friend class ::PragmaOnce;
 
49574
  friend class ::CMatchSyntax;
 
49575
 
 
49576
#line 1106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49577
 
 
49578
public:
 
49579
  /** Constructor.
 
49580
   *  \param f The operator function keyword 'operator'.
 
49581
   *  \param t The sub-tree containing the conversion type. */
 
49582
  CT_ConversionName (CTree *f, CTree *t);
 
49583
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
49584
  static const char *NodeId ();
 
49585
  /** Get the name of the node. Can be compared with NodeId(). */
 
49586
  const char *NodeName () const { return NodeId (); }
 
49587
  /** Get the conversion type. */
 
49588
  CT_NamedType *TypeName () const { return (CT_NamedType*)Son (Sons ()-1); }
 
49589
 
 
49590
public:
 
49591
  /** Own new operator reusing memory. */
 
49592
  void *operator new (size_t);
 
49593
  /** Own delete operator. */
 
49594
  void operator delete (void *);
 
49595
   private:
 
49596
  typedef CT_ConversionName CCExprResolveExpr;
 
49597
 
 
49598
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
49599
 public :
 
49600
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
49601
  typedef CT_ConversionName CExprResolveExpr;
 
49602
 
 
49603
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
49604
 public :
 
49605
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
49606
  typedef AC::TLE __AttrTypes;
 
49607
  const char *__attr_name (unsigned i) const { return 0; }
 
49608
  const void *__attr (unsigned __i) const { return 0; }
 
49609
#line 1124 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49610
};
 
49611
 
 
49612
/** \class CT_QualName CTree.h Puma/CTree.h
 
49613
 *  Tree node representing a qualified name.
 
49614
 *  Example: \code X::Y::Z \endcode */
 
49615
 
 
49616
#line 49617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49617
} // closed Puma
 
49618
class CCExprResolve;
 
49619
class CExprResolve;
 
49620
class WinIfExists;
 
49621
class WinImportHandler;
 
49622
class WinMacros;
 
49623
class WinAsm;
 
49624
class WinDeclSpecs;
 
49625
class WinMemberExplSpec;
 
49626
class WinTypeKeywords;
 
49627
class WinFriend;
 
49628
class ExtAC;
 
49629
class ExtACBuilderCoupling;
 
49630
class ExtACSyntaxCoupling;
 
49631
class ExtACTree;
 
49632
class ExtACKeywords;
 
49633
class ExtGnu;
 
49634
class PragmaOnceUnitState;
 
49635
class PragmaOnce;
 
49636
class CMatchSyntax;
 
49637
namespace Puma {
 
49638
 
 
49639
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49640
 
 
49641
#line 49642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49642
} // closed Puma
 
49643
 
 
49644
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49645
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49646
#include "CCExprResolveH.ah"
 
49647
#endif
 
49648
namespace Puma {
 
49649
 
 
49650
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49651
 
 
49652
#line 49653 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49653
} // closed Puma
 
49654
 
 
49655
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49656
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49657
#include "CExprResolveH.ah"
 
49658
#endif
 
49659
namespace Puma {
 
49660
 
 
49661
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49662
class CT_QualName : public CT_SimpleName {
 
49663
#line 49664 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49664
  friend class ::CCExprResolve;
 
49665
  friend class ::CExprResolve;
 
49666
  friend class ::WinIfExists;
 
49667
  friend class ::WinImportHandler;
 
49668
  friend class ::WinMacros;
 
49669
  friend class ::WinAsm;
 
49670
  friend class ::WinDeclSpecs;
 
49671
  friend class ::WinMemberExplSpec;
 
49672
  friend class ::WinTypeKeywords;
 
49673
  friend class ::WinFriend;
 
49674
  friend class ::ExtAC;
 
49675
  friend class ::ExtACBuilderCoupling;
 
49676
  friend class ::ExtACSyntaxCoupling;
 
49677
  friend class ::ExtACTree;
 
49678
  friend class ::ExtACKeywords;
 
49679
  friend class ::ExtGnu;
 
49680
  friend class ::PragmaOnceUnitState;
 
49681
  friend class ::PragmaOnce;
 
49682
  friend class ::CMatchSyntax;
 
49683
 
 
49684
#line 1129 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49685
 
 
49686
public:
 
49687
  /** Constructor.
 
49688
   *  \param size The initial number sub-names plus separators. */
 
49689
  CT_QualName (int size = 3) : 
 
49690
    CT_SimpleName (size, CT_List::SEPARATORS) {}
 
49691
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
49692
  static const char *NodeId ();
 
49693
  /** Get the name of the node. Can be compared with NodeId(). */
 
49694
  const char *NodeName () const { return NodeId (); }
 
49695
  /** Print the qualified name on the given stream. 
 
49696
   *  \param os The output stream. */
 
49697
  void print (ostream &os) const;
 
49698
  /** Get the last name of the qualified name, e.g. Z of qualified name X::Y::Z. */
 
49699
  CT_SimpleName *Name () const { return (CT_SimpleName*)Son (Sons ()-1); }
 
49700
  /** Get the string containing the last name of the qualified name. */
 
49701
  const char *Text () const { return Name ()->Text (); }
 
49702
  /** Get the type of the last name. */
 
49703
  CTypeInfo *Type () const { return Name ()->Type (); }
 
49704
  /** Get the value of the last name. */
 
49705
  CExprValue *Value () const { return Name ()->Value (); }
 
49706
  /** Get the semantic value object of the last name. */
 
49707
  CSemValue *SemValue () const { return Name ()->SemValue (); }
 
49708
  /** Get the semantic information of the last name. */
 
49709
  CSemObject *SemObject () const { return Name ()->SemObject (); }
 
49710
 
 
49711
public:
 
49712
  /** Own new operator reusing memory. */
 
49713
  void *operator new (size_t);
 
49714
  /** Own delete operator. */
 
49715
  void operator delete (void *);
 
49716
   private:
 
49717
  typedef CT_QualName CCExprResolveExpr;
 
49718
 
 
49719
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
49720
 public :
 
49721
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
49722
  typedef CT_QualName CExprResolveExpr;
 
49723
 
 
49724
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
49725
 public :
 
49726
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
49727
  typedef AC::TLE __AttrTypes;
 
49728
  const char *__attr_name (unsigned i) const { return 0; }
 
49729
  const void *__attr (unsigned __i) const { return 0; }
 
49730
#line 1160 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49731
};
 
49732
 
 
49733
/** \class CT_RootQualName CTree.h Puma/CTree.h
 
49734
 *  Tree node representing a qualified name with introducing name separator.
 
49735
 *  Example: \code ::X::Y::Z \endcode */
 
49736
 
 
49737
#line 49738 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49738
} // closed Puma
 
49739
class CCExprResolve;
 
49740
class CExprResolve;
 
49741
class WinIfExists;
 
49742
class WinImportHandler;
 
49743
class WinMacros;
 
49744
class WinAsm;
 
49745
class WinDeclSpecs;
 
49746
class WinMemberExplSpec;
 
49747
class WinTypeKeywords;
 
49748
class WinFriend;
 
49749
class ExtAC;
 
49750
class ExtACBuilderCoupling;
 
49751
class ExtACSyntaxCoupling;
 
49752
class ExtACTree;
 
49753
class ExtACKeywords;
 
49754
class ExtGnu;
 
49755
class PragmaOnceUnitState;
 
49756
class PragmaOnce;
 
49757
class CMatchSyntax;
 
49758
namespace Puma {
 
49759
 
 
49760
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49761
 
 
49762
#line 49763 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49763
} // closed Puma
 
49764
 
 
49765
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49766
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49767
#include "CCExprResolveH.ah"
 
49768
#endif
 
49769
namespace Puma {
 
49770
 
 
49771
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49772
 
 
49773
#line 49774 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49774
} // closed Puma
 
49775
 
 
49776
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49777
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49778
#include "CExprResolveH.ah"
 
49779
#endif
 
49780
namespace Puma {
 
49781
 
 
49782
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49783
class CT_RootQualName : public CT_QualName {
 
49784
#line 49785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49785
  friend class ::CCExprResolve;
 
49786
  friend class ::CExprResolve;
 
49787
  friend class ::WinIfExists;
 
49788
  friend class ::WinImportHandler;
 
49789
  friend class ::WinMacros;
 
49790
  friend class ::WinAsm;
 
49791
  friend class ::WinDeclSpecs;
 
49792
  friend class ::WinMemberExplSpec;
 
49793
  friend class ::WinTypeKeywords;
 
49794
  friend class ::WinFriend;
 
49795
  friend class ::ExtAC;
 
49796
  friend class ::ExtACBuilderCoupling;
 
49797
  friend class ::ExtACSyntaxCoupling;
 
49798
  friend class ::ExtACTree;
 
49799
  friend class ::ExtACKeywords;
 
49800
  friend class ::ExtGnu;
 
49801
  friend class ::PragmaOnceUnitState;
 
49802
  friend class ::PragmaOnce;
 
49803
  friend class ::CMatchSyntax;
 
49804
 
 
49805
#line 1165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49806
 
 
49807
public:
 
49808
  /** Constructor.
 
49809
   *  \param size Initial number of sub-name plus separator. */
 
49810
  CT_RootQualName (int size = 2) : 
 
49811
    CT_QualName (size) { AddProperties (INTRO); }
 
49812
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
49813
  static const char *NodeId ();
 
49814
  /** Get the name of the node. Can be compared with NodeId(). */
 
49815
  const char *NodeName () const { return NodeId (); }
 
49816
 
 
49817
public:
 
49818
  /** Own new operator reusing memory. */
 
49819
  void *operator new (size_t);
 
49820
  /** Own delete operator. */
 
49821
  void operator delete (void *);
 
49822
   private:
 
49823
  typedef CT_RootQualName CCExprResolveExpr;
 
49824
 
 
49825
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
49826
 public :
 
49827
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
49828
  typedef CT_RootQualName CExprResolveExpr;
 
49829
 
 
49830
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
49831
 public :
 
49832
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
49833
  typedef AC::TLE __AttrTypes;
 
49834
  const char *__attr_name (unsigned i) const { return 0; }
 
49835
  const void *__attr (unsigned __i) const { return 0; }
 
49836
#line 1181 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49837
};
 
49838
 
 
49839
/** \class CT_BinaryExpr CTree.h Puma/CTree.h
 
49840
 *  Tree node representing a binary expression.
 
49841
 *  Example: \code a+b \endcode */
 
49842
 
 
49843
#line 49844 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49844
} // closed Puma
 
49845
class CCExprResolve;
 
49846
class CExprResolve;
 
49847
class WinIfExists;
 
49848
class WinImportHandler;
 
49849
class WinMacros;
 
49850
class WinAsm;
 
49851
class WinDeclSpecs;
 
49852
class WinMemberExplSpec;
 
49853
class WinTypeKeywords;
 
49854
class WinFriend;
 
49855
class ExtAC;
 
49856
class ExtACBuilderCoupling;
 
49857
class ExtACSyntaxCoupling;
 
49858
class ExtACTree;
 
49859
class ExtACKeywords;
 
49860
class ExtGnu;
 
49861
class PragmaOnceUnitState;
 
49862
class PragmaOnce;
 
49863
class CMatchSyntax;
 
49864
namespace Puma {
 
49865
 
 
49866
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49867
 
 
49868
#line 49869 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49869
} // closed Puma
 
49870
 
 
49871
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49872
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49873
#include "CCExprResolveH.ah"
 
49874
#endif
 
49875
namespace Puma {
 
49876
 
 
49877
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49878
 
 
49879
#line 49880 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49880
} // closed Puma
 
49881
 
 
49882
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49883
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
49884
#include "CExprResolveH.ah"
 
49885
#endif
 
49886
namespace Puma {
 
49887
 
 
49888
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49889
class CT_BinaryExpr : public CT_Call {
 
49890
#line 49891 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49891
  friend class ::CCExprResolve;
 
49892
  friend class ::CExprResolve;
 
49893
  friend class ::WinIfExists;
 
49894
  friend class ::WinImportHandler;
 
49895
  friend class ::WinMacros;
 
49896
  friend class ::WinAsm;
 
49897
  friend class ::WinDeclSpecs;
 
49898
  friend class ::WinMemberExplSpec;
 
49899
  friend class ::WinTypeKeywords;
 
49900
  friend class ::WinFriend;
 
49901
  friend class ::ExtAC;
 
49902
  friend class ::ExtACBuilderCoupling;
 
49903
  friend class ::ExtACSyntaxCoupling;
 
49904
  friend class ::ExtACTree;
 
49905
  friend class ::ExtACKeywords;
 
49906
  friend class ::ExtGnu;
 
49907
  friend class ::PragmaOnceUnitState;
 
49908
  friend class ::PragmaOnce;
 
49909
  friend class ::CMatchSyntax;
 
49910
 
 
49911
#line 1186 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49912
 
 
49913
  CTree *sons[3]; // expr, oper, expr
 
49914
 
 
49915
public:
 
49916
  /** Constructor. 
 
49917
   *  \param l Left hand side of the expression. 
 
49918
   *  \param o The operator token. 
 
49919
   *  \param r Right hand side of the expression. */
 
49920
  CT_BinaryExpr (CTree *l, CTree *o, CTree *r) {
 
49921
    AddSon (sons[0], l); AddSon (sons[1], o); AddSon (sons[2], r);
 
49922
  }
 
49923
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
49924
  static const char *NodeId ();
 
49925
  /** Get the name of the node. Can be compared with NodeId(). */
 
49926
  const char *NodeName () const { return NodeId (); }
 
49927
  /** Get the number of sons. */
 
49928
  int Sons () const { return 3; }
 
49929
  /** Get the n-th son.
 
49930
   *  \param n The index of the son.
 
49931
   *  \return The n-th son or NULL. */
 
49932
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
49933
  /** Replace a son.
 
49934
   *  \param old_son The son to replace.
 
49935
   *  \param new_son The new son. */
 
49936
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
49937
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
49938
  }
 
49939
   private:
 
49940
  typedef CT_BinaryExpr CCExprResolveExpr;
 
49941
 
 
49942
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
49943
 public :
 
49944
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
49945
  typedef CT_BinaryExpr CExprResolveExpr;
 
49946
 
 
49947
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
49948
 public :
 
49949
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
49950
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
49951
  const char *__attr_name (unsigned i) const {
 
49952
    static const char *names[] = { "sons" }; return names[i];
 
49953
  }
 
49954
  const void *__attr (unsigned __i) const {
 
49955
    switch (__i) { case 0: return &sons; default: return 0; }
 
49956
  }
 
49957
#line 1213 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49958
};
 
49959
 
 
49960
/** \class CT_MembPtrExpr CTree.h Puma/CTree.h
 
49961
 *  Tree node representing a member pointer expression.
 
49962
 *  Example: \code a->b \endcode */
 
49963
 
 
49964
#line 49965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49965
} // closed Puma
 
49966
class CCExprResolve;
 
49967
class CExprResolve;
 
49968
class WinIfExists;
 
49969
class WinImportHandler;
 
49970
class WinMacros;
 
49971
class WinAsm;
 
49972
class WinDeclSpecs;
 
49973
class WinMemberExplSpec;
 
49974
class WinTypeKeywords;
 
49975
class WinFriend;
 
49976
class ExtAC;
 
49977
class ExtACBuilderCoupling;
 
49978
class ExtACSyntaxCoupling;
 
49979
class ExtACTree;
 
49980
class ExtACKeywords;
 
49981
class ExtGnu;
 
49982
class PragmaOnceUnitState;
 
49983
class PragmaOnce;
 
49984
class CMatchSyntax;
 
49985
namespace Puma {
 
49986
 
 
49987
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49988
 
 
49989
#line 49990 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
49990
} // closed Puma
 
49991
 
 
49992
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49993
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
49994
#include "CCExprResolveH.ah"
 
49995
#endif
 
49996
namespace Puma {
 
49997
 
 
49998
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
49999
 
 
50000
#line 50001 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50001
} // closed Puma
 
50002
 
 
50003
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50004
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50005
#include "CExprResolveH.ah"
 
50006
#endif
 
50007
namespace Puma {
 
50008
 
 
50009
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50010
class CT_MembPtrExpr : public CT_Expression, public CSemObject {
 
50011
#line 50012 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50012
  friend class ::CCExprResolve;
 
50013
  friend class ::CExprResolve;
 
50014
  friend class ::WinIfExists;
 
50015
  friend class ::WinImportHandler;
 
50016
  friend class ::WinMacros;
 
50017
  friend class ::WinAsm;
 
50018
  friend class ::WinDeclSpecs;
 
50019
  friend class ::WinMemberExplSpec;
 
50020
  friend class ::WinTypeKeywords;
 
50021
  friend class ::WinFriend;
 
50022
  friend class ::ExtAC;
 
50023
  friend class ::ExtACBuilderCoupling;
 
50024
  friend class ::ExtACSyntaxCoupling;
 
50025
  friend class ::ExtACTree;
 
50026
  friend class ::ExtACKeywords;
 
50027
  friend class ::ExtGnu;
 
50028
  friend class ::PragmaOnceUnitState;
 
50029
  friend class ::PragmaOnce;
 
50030
  friend class ::CMatchSyntax;
 
50031
 
 
50032
#line 1218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50033
 
 
50034
  CTree *sons[3]; // expr, oper, expr
 
50035
  
 
50036
public:
 
50037
  /** Constructor.
 
50038
   *  \param e Expression on which to call the member.
 
50039
   *  \param o The arrow operator token.
 
50040
   *  \param i The member name. */
 
50041
  CT_MembPtrExpr (CTree *e, CTree *o, CTree *i) {
 
50042
    AddSon (sons[0], e); AddSon (sons[1], o); AddSon (sons[2], i);
 
50043
  }
 
50044
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
50045
  static const char *NodeId ();
 
50046
  /** Get the name of the node. Can be compared with NodeId(). */
 
50047
  const char *NodeName () const { return NodeId (); }
 
50048
  /** Get the number of sons. */
 
50049
  int Sons () const { return 3; }
 
50050
  /** Get the n-th son.
 
50051
   *  \param n The index of the son.
 
50052
   *  \return The n-th son or NULL. */
 
50053
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
50054
  /** Replace a son.
 
50055
   *  \param old_son The son to replace.
 
50056
   *  \param new_son The new son. */
 
50057
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
50058
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
50059
  }
 
50060
   private:
 
50061
  typedef CT_MembPtrExpr CCExprResolveExpr;
 
50062
 
 
50063
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
50064
 public :
 
50065
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
50066
  typedef CT_MembPtrExpr CExprResolveExpr;
 
50067
 
 
50068
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
50069
 public :
 
50070
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
50071
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
50072
  const char *__attr_name (unsigned i) const {
 
50073
    static const char *names[] = { "sons" }; return names[i];
 
50074
  }
 
50075
  const void *__attr (unsigned __i) const {
 
50076
    switch (__i) { case 0: return &sons; default: return 0; }
 
50077
  }
 
50078
#line 1245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50079
};
 
50080
 
 
50081
/** \class CT_MembRefExpr CTree.h Puma/CTree.h
 
50082
 *  Tree node representing a member reference expression.
 
50083
 *  Example: \code a.b \endcode */
 
50084
 
 
50085
#line 50086 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50086
} // closed Puma
 
50087
class CCExprResolve;
 
50088
class CExprResolve;
 
50089
class WinIfExists;
 
50090
class WinImportHandler;
 
50091
class WinMacros;
 
50092
class WinAsm;
 
50093
class WinDeclSpecs;
 
50094
class WinMemberExplSpec;
 
50095
class WinTypeKeywords;
 
50096
class WinFriend;
 
50097
class ExtAC;
 
50098
class ExtACBuilderCoupling;
 
50099
class ExtACSyntaxCoupling;
 
50100
class ExtACTree;
 
50101
class ExtACKeywords;
 
50102
class ExtGnu;
 
50103
class PragmaOnceUnitState;
 
50104
class PragmaOnce;
 
50105
class CMatchSyntax;
 
50106
namespace Puma {
 
50107
 
 
50108
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50109
 
 
50110
#line 50111 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50111
} // closed Puma
 
50112
 
 
50113
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50114
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50115
#include "CCExprResolveH.ah"
 
50116
#endif
 
50117
namespace Puma {
 
50118
 
 
50119
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50120
 
 
50121
#line 50122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50122
} // closed Puma
 
50123
 
 
50124
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50125
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50126
#include "CExprResolveH.ah"
 
50127
#endif
 
50128
namespace Puma {
 
50129
 
 
50130
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50131
class CT_MembRefExpr : public CT_MembPtrExpr {
 
50132
#line 50133 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50133
  friend class ::CCExprResolve;
 
50134
  friend class ::CExprResolve;
 
50135
  friend class ::WinIfExists;
 
50136
  friend class ::WinImportHandler;
 
50137
  friend class ::WinMacros;
 
50138
  friend class ::WinAsm;
 
50139
  friend class ::WinDeclSpecs;
 
50140
  friend class ::WinMemberExplSpec;
 
50141
  friend class ::WinTypeKeywords;
 
50142
  friend class ::WinFriend;
 
50143
  friend class ::ExtAC;
 
50144
  friend class ::ExtACBuilderCoupling;
 
50145
  friend class ::ExtACSyntaxCoupling;
 
50146
  friend class ::ExtACTree;
 
50147
  friend class ::ExtACKeywords;
 
50148
  friend class ::ExtGnu;
 
50149
  friend class ::PragmaOnceUnitState;
 
50150
  friend class ::PragmaOnce;
 
50151
  friend class ::CMatchSyntax;
 
50152
 
 
50153
#line 1250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50154
 
 
50155
public:
 
50156
  /** Constructor.
 
50157
   *  \param e Expression on which to call the member.
 
50158
   *  \param o The dot operator.
 
50159
   *  \param i The member name. */
 
50160
  CT_MembRefExpr (CTree *e, CTree *o, CTree *i) :
 
50161
    CT_MembPtrExpr (e, o, i) {}
 
50162
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
50163
  static const char *NodeId ();
 
50164
  /** Get the name of the node. Can be compared with NodeId(). */
 
50165
  const char *NodeName () const { return NodeId (); }
 
50166
   private:
 
50167
  typedef CT_MembRefExpr CCExprResolveExpr;
 
50168
 
 
50169
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
50170
 public :
 
50171
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
50172
  typedef CT_MembRefExpr CExprResolveExpr;
 
50173
 
 
50174
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
50175
 public :
 
50176
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
50177
  typedef AC::TLE __AttrTypes;
 
50178
  const char *__attr_name (unsigned i) const { return 0; }
 
50179
  const void *__attr (unsigned __i) const { return 0; }
 
50180
#line 1262 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50181
};
 
50182
 
 
50183
/** \class CT_UnaryExpr CTree.h Puma/CTree.h
 
50184
 *  Base class for tree nodes representing unary expressions. 
 
50185
 *  Example: \code !a \endcode */
 
50186
 
 
50187
#line 50188 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50188
} // closed Puma
 
50189
class CCExprResolve;
 
50190
class CExprResolve;
 
50191
class WinIfExists;
 
50192
class WinImportHandler;
 
50193
class WinMacros;
 
50194
class WinAsm;
 
50195
class WinDeclSpecs;
 
50196
class WinMemberExplSpec;
 
50197
class WinTypeKeywords;
 
50198
class WinFriend;
 
50199
class ExtAC;
 
50200
class ExtACBuilderCoupling;
 
50201
class ExtACSyntaxCoupling;
 
50202
class ExtACTree;
 
50203
class ExtACKeywords;
 
50204
class ExtGnu;
 
50205
class PragmaOnceUnitState;
 
50206
class PragmaOnce;
 
50207
class CMatchSyntax;
 
50208
namespace Puma {
 
50209
 
 
50210
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50211
 
 
50212
#line 50213 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50213
} // closed Puma
 
50214
 
 
50215
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50216
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50217
#include "CCExprResolveH.ah"
 
50218
#endif
 
50219
namespace Puma {
 
50220
 
 
50221
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50222
 
 
50223
#line 50224 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50224
} // closed Puma
 
50225
 
 
50226
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50227
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50228
#include "CExprResolveH.ah"
 
50229
#endif
 
50230
namespace Puma {
 
50231
 
 
50232
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50233
class CT_UnaryExpr : public CT_Call {
 
50234
#line 50235 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50235
  friend class ::CCExprResolve;
 
50236
  friend class ::CExprResolve;
 
50237
  friend class ::WinIfExists;
 
50238
  friend class ::WinImportHandler;
 
50239
  friend class ::WinMacros;
 
50240
  friend class ::WinAsm;
 
50241
  friend class ::WinDeclSpecs;
 
50242
  friend class ::WinMemberExplSpec;
 
50243
  friend class ::WinTypeKeywords;
 
50244
  friend class ::WinFriend;
 
50245
  friend class ::ExtAC;
 
50246
  friend class ::ExtACBuilderCoupling;
 
50247
  friend class ::ExtACSyntaxCoupling;
 
50248
  friend class ::ExtACTree;
 
50249
  friend class ::ExtACKeywords;
 
50250
  friend class ::ExtGnu;
 
50251
  friend class ::PragmaOnceUnitState;
 
50252
  friend class ::PragmaOnce;
 
50253
  friend class ::CMatchSyntax;
 
50254
 
 
50255
#line 1267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50256
 
 
50257
  CTree *sons[2]; // oper, expr
 
50258
 
 
50259
public:
 
50260
  /** Constructor.
 
50261
   *  \param o The unary operator.
 
50262
   *  \param e The expression on which the operator is invoked. */
 
50263
  CT_UnaryExpr (CTree *o, CTree *e) { AddSon (sons[0], o); AddSon (sons[1], e); }
 
50264
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
50265
  static const char *NodeId ();
 
50266
  /** Get the name of the node. Can be compared with NodeId(). */
 
50267
  const char *NodeName () const { return NodeId (); }
 
50268
  /** Get the number of sons. */
 
50269
  int Sons () const { return 2; }
 
50270
  /** Get the n-th son.
 
50271
   *  \param n The index of the son.
 
50272
   *  \return The n-th son or NULL. */
 
50273
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
50274
  /** Replace a son.
 
50275
   *  \param old_son The son to replace.
 
50276
   *  \param new_son The new son. */
 
50277
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
50278
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
50279
  }
 
50280
  /** Get the expression node. */
 
50281
  CTree *Expr () const { return sons[1]; }
 
50282
   private:
 
50283
  typedef CT_UnaryExpr CCExprResolveExpr;
 
50284
 
 
50285
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
50286
 public :
 
50287
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
50288
  typedef CT_UnaryExpr CExprResolveExpr;
 
50289
 
 
50290
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
50291
 public :
 
50292
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
50293
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
50294
  const char *__attr_name (unsigned i) const {
 
50295
    static const char *names[] = { "sons" }; return names[i];
 
50296
  }
 
50297
  const void *__attr (unsigned __i) const {
 
50298
    switch (__i) { case 0: return &sons; default: return 0; }
 
50299
  }
 
50300
#line 1293 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50301
};
 
50302
 
 
50303
/** \class CT_PostfixExpr CTree.h Puma/CTree.h
 
50304
 *  Tree node representing a postfix expression.
 
50305
 *  Example: \code a++ \endcode */
 
50306
 
 
50307
#line 50308 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50308
} // closed Puma
 
50309
class CCExprResolve;
 
50310
class CExprResolve;
 
50311
class WinIfExists;
 
50312
class WinImportHandler;
 
50313
class WinMacros;
 
50314
class WinAsm;
 
50315
class WinDeclSpecs;
 
50316
class WinMemberExplSpec;
 
50317
class WinTypeKeywords;
 
50318
class WinFriend;
 
50319
class ExtAC;
 
50320
class ExtACBuilderCoupling;
 
50321
class ExtACSyntaxCoupling;
 
50322
class ExtACTree;
 
50323
class ExtACKeywords;
 
50324
class ExtGnu;
 
50325
class PragmaOnceUnitState;
 
50326
class PragmaOnce;
 
50327
class CMatchSyntax;
 
50328
namespace Puma {
 
50329
 
 
50330
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50331
 
 
50332
#line 50333 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50333
} // closed Puma
 
50334
 
 
50335
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50336
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50337
#include "CCExprResolveH.ah"
 
50338
#endif
 
50339
namespace Puma {
 
50340
 
 
50341
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50342
 
 
50343
#line 50344 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50344
} // closed Puma
 
50345
 
 
50346
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50347
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50348
#include "CExprResolveH.ah"
 
50349
#endif
 
50350
namespace Puma {
 
50351
 
 
50352
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50353
class CT_PostfixExpr : public CT_UnaryExpr {
 
50354
#line 50355 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50355
  friend class ::CCExprResolve;
 
50356
  friend class ::CExprResolve;
 
50357
  friend class ::WinIfExists;
 
50358
  friend class ::WinImportHandler;
 
50359
  friend class ::WinMacros;
 
50360
  friend class ::WinAsm;
 
50361
  friend class ::WinDeclSpecs;
 
50362
  friend class ::WinMemberExplSpec;
 
50363
  friend class ::WinTypeKeywords;
 
50364
  friend class ::WinFriend;
 
50365
  friend class ::ExtAC;
 
50366
  friend class ::ExtACBuilderCoupling;
 
50367
  friend class ::ExtACSyntaxCoupling;
 
50368
  friend class ::ExtACTree;
 
50369
  friend class ::ExtACKeywords;
 
50370
  friend class ::ExtGnu;
 
50371
  friend class ::PragmaOnceUnitState;
 
50372
  friend class ::PragmaOnce;
 
50373
  friend class ::CMatchSyntax;
 
50374
 
 
50375
#line 1298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50376
 
 
50377
public:
 
50378
  /** Constructor.
 
50379
   *  \param e The expression on which to invoke the operator. 
 
50380
   *  \param o The postfix operator. */
 
50381
  CT_PostfixExpr (CTree *e, CTree *o) :
 
50382
    CT_UnaryExpr (e, o) {}
 
50383
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
50384
  static const char *NodeId ();
 
50385
  /** Get the name of the node. Can be compared with NodeId(). */
 
50386
  const char *NodeName () const { return NodeId (); }
 
50387
   private:
 
50388
  typedef CT_PostfixExpr CCExprResolveExpr;
 
50389
 
 
50390
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
50391
 public :
 
50392
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
50393
  typedef CT_PostfixExpr CExprResolveExpr;
 
50394
 
 
50395
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
50396
 public :
 
50397
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
50398
  typedef AC::TLE __AttrTypes;
 
50399
  const char *__attr_name (unsigned i) const { return 0; }
 
50400
  const void *__attr (unsigned __i) const { return 0; }
 
50401
#line 1309 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50402
};
 
50403
 
 
50404
/** \class CT_AddrExpr CTree.h Puma/CTree.h
 
50405
 *  Tree node representing an address expression.
 
50406
 *  Example: \code &a \endcode */
 
50407
 
 
50408
#line 50409 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50409
} // closed Puma
 
50410
class CCExprResolve;
 
50411
class CExprResolve;
 
50412
class WinIfExists;
 
50413
class WinImportHandler;
 
50414
class WinMacros;
 
50415
class WinAsm;
 
50416
class WinDeclSpecs;
 
50417
class WinMemberExplSpec;
 
50418
class WinTypeKeywords;
 
50419
class WinFriend;
 
50420
class ExtAC;
 
50421
class ExtACBuilderCoupling;
 
50422
class ExtACSyntaxCoupling;
 
50423
class ExtACTree;
 
50424
class ExtACKeywords;
 
50425
class ExtGnu;
 
50426
class PragmaOnceUnitState;
 
50427
class PragmaOnce;
 
50428
class CMatchSyntax;
 
50429
namespace Puma {
 
50430
 
 
50431
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50432
 
 
50433
#line 50434 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50434
} // closed Puma
 
50435
 
 
50436
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50437
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50438
#include "CCExprResolveH.ah"
 
50439
#endif
 
50440
namespace Puma {
 
50441
 
 
50442
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50443
 
 
50444
#line 50445 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50445
} // closed Puma
 
50446
 
 
50447
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50448
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50449
#include "CExprResolveH.ah"
 
50450
#endif
 
50451
namespace Puma {
 
50452
 
 
50453
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50454
class CT_AddrExpr : public CT_UnaryExpr {
 
50455
#line 50456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50456
  friend class ::CCExprResolve;
 
50457
  friend class ::CExprResolve;
 
50458
  friend class ::WinIfExists;
 
50459
  friend class ::WinImportHandler;
 
50460
  friend class ::WinMacros;
 
50461
  friend class ::WinAsm;
 
50462
  friend class ::WinDeclSpecs;
 
50463
  friend class ::WinMemberExplSpec;
 
50464
  friend class ::WinTypeKeywords;
 
50465
  friend class ::WinFriend;
 
50466
  friend class ::ExtAC;
 
50467
  friend class ::ExtACBuilderCoupling;
 
50468
  friend class ::ExtACSyntaxCoupling;
 
50469
  friend class ::ExtACTree;
 
50470
  friend class ::ExtACKeywords;
 
50471
  friend class ::ExtGnu;
 
50472
  friend class ::PragmaOnceUnitState;
 
50473
  friend class ::PragmaOnce;
 
50474
  friend class ::CMatchSyntax;
 
50475
 
 
50476
#line 1314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50477
 
 
50478
public:
 
50479
  /** Constructor.
 
50480
   *  \param o The address operator, i.e. '&'.
 
50481
   *  \param e The expression from which to take the address. */
 
50482
  CT_AddrExpr (CTree *o, CTree *e) :
 
50483
    CT_UnaryExpr (o, e) {}
 
50484
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
50485
  static const char *NodeId ();
 
50486
  /** Get the name of the node. Can be compared with NodeId(). */
 
50487
  const char *NodeName () const { return NodeId (); }
 
50488
   private:
 
50489
  typedef CT_AddrExpr CCExprResolveExpr;
 
50490
 
 
50491
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
50492
 public :
 
50493
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
50494
  typedef CT_AddrExpr CExprResolveExpr;
 
50495
 
 
50496
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
50497
 public :
 
50498
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
50499
  typedef AC::TLE __AttrTypes;
 
50500
  const char *__attr_name (unsigned i) const { return 0; }
 
50501
  const void *__attr (unsigned __i) const { return 0; }
 
50502
#line 1325 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50503
};
 
50504
 
 
50505
/** \class CT_DerefExpr CTree.h Puma/CTree.h
 
50506
 *  Tree node representing a pointer dereferencing expression.
 
50507
 *  Example: \code *a \endcode */
 
50508
 
 
50509
#line 50510 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50510
} // closed Puma
 
50511
class CCExprResolve;
 
50512
class CExprResolve;
 
50513
class WinIfExists;
 
50514
class WinImportHandler;
 
50515
class WinMacros;
 
50516
class WinAsm;
 
50517
class WinDeclSpecs;
 
50518
class WinMemberExplSpec;
 
50519
class WinTypeKeywords;
 
50520
class WinFriend;
 
50521
class ExtAC;
 
50522
class ExtACBuilderCoupling;
 
50523
class ExtACSyntaxCoupling;
 
50524
class ExtACTree;
 
50525
class ExtACKeywords;
 
50526
class ExtGnu;
 
50527
class PragmaOnceUnitState;
 
50528
class PragmaOnce;
 
50529
class CMatchSyntax;
 
50530
namespace Puma {
 
50531
 
 
50532
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50533
 
 
50534
#line 50535 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50535
} // closed Puma
 
50536
 
 
50537
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50538
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50539
#include "CCExprResolveH.ah"
 
50540
#endif
 
50541
namespace Puma {
 
50542
 
 
50543
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50544
 
 
50545
#line 50546 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50546
} // closed Puma
 
50547
 
 
50548
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50549
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50550
#include "CExprResolveH.ah"
 
50551
#endif
 
50552
namespace Puma {
 
50553
 
 
50554
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50555
class CT_DerefExpr : public CT_UnaryExpr {
 
50556
#line 50557 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50557
  friend class ::CCExprResolve;
 
50558
  friend class ::CExprResolve;
 
50559
  friend class ::WinIfExists;
 
50560
  friend class ::WinImportHandler;
 
50561
  friend class ::WinMacros;
 
50562
  friend class ::WinAsm;
 
50563
  friend class ::WinDeclSpecs;
 
50564
  friend class ::WinMemberExplSpec;
 
50565
  friend class ::WinTypeKeywords;
 
50566
  friend class ::WinFriend;
 
50567
  friend class ::ExtAC;
 
50568
  friend class ::ExtACBuilderCoupling;
 
50569
  friend class ::ExtACSyntaxCoupling;
 
50570
  friend class ::ExtACTree;
 
50571
  friend class ::ExtACKeywords;
 
50572
  friend class ::ExtGnu;
 
50573
  friend class ::PragmaOnceUnitState;
 
50574
  friend class ::PragmaOnce;
 
50575
  friend class ::CMatchSyntax;
 
50576
 
 
50577
#line 1330 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50578
 
 
50579
public:
 
50580
  /** Constructor.
 
50581
   *  \param o The dereferencing operator, i.e. '*'.
 
50582
   *  \param e The expression to dereference. */
 
50583
  CT_DerefExpr (CTree *o, CTree *e) :
 
50584
    CT_UnaryExpr (o, e) {}
 
50585
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
50586
  static const char *NodeId ();
 
50587
  /** Get the name of the node. Can be compared with NodeId(). */
 
50588
  const char *NodeName () const { return NodeId (); }
 
50589
   private:
 
50590
  typedef CT_DerefExpr CCExprResolveExpr;
 
50591
 
 
50592
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
50593
 public :
 
50594
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
50595
  typedef CT_DerefExpr CExprResolveExpr;
 
50596
 
 
50597
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
50598
 public :
 
50599
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
50600
  typedef AC::TLE __AttrTypes;
 
50601
  const char *__attr_name (unsigned i) const { return 0; }
 
50602
  const void *__attr (unsigned __i) const { return 0; }
 
50603
#line 1341 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50604
};
 
50605
 
 
50606
/** \class CT_DeleteExpr CTree.h Puma/CTree.h
 
50607
 *  Tree node representing a delete expression.
 
50608
 *  Example: \code delete a \endcode */
 
50609
 
 
50610
#line 50611 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50611
} // closed Puma
 
50612
class CCExprResolve;
 
50613
class CExprResolve;
 
50614
class WinIfExists;
 
50615
class WinImportHandler;
 
50616
class WinMacros;
 
50617
class WinAsm;
 
50618
class WinDeclSpecs;
 
50619
class WinMemberExplSpec;
 
50620
class WinTypeKeywords;
 
50621
class WinFriend;
 
50622
class ExtAC;
 
50623
class ExtACBuilderCoupling;
 
50624
class ExtACSyntaxCoupling;
 
50625
class ExtACTree;
 
50626
class ExtACKeywords;
 
50627
class ExtGnu;
 
50628
class PragmaOnceUnitState;
 
50629
class PragmaOnce;
 
50630
class CMatchSyntax;
 
50631
namespace Puma {
 
50632
 
 
50633
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50634
 
 
50635
#line 50636 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50636
} // closed Puma
 
50637
 
 
50638
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50639
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50640
#include "CCExprResolveH.ah"
 
50641
#endif
 
50642
namespace Puma {
 
50643
 
 
50644
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50645
 
 
50646
#line 50647 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50647
} // closed Puma
 
50648
 
 
50649
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50650
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50651
#include "CExprResolveH.ah"
 
50652
#endif
 
50653
namespace Puma {
 
50654
 
 
50655
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50656
class CT_DeleteExpr : public CT_Expression, public CSemObject {
 
50657
#line 50658 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50658
  friend class ::CCExprResolve;
 
50659
  friend class ::CExprResolve;
 
50660
  friend class ::WinIfExists;
 
50661
  friend class ::WinImportHandler;
 
50662
  friend class ::WinMacros;
 
50663
  friend class ::WinAsm;
 
50664
  friend class ::WinDeclSpecs;
 
50665
  friend class ::WinMemberExplSpec;
 
50666
  friend class ::WinTypeKeywords;
 
50667
  friend class ::WinFriend;
 
50668
  friend class ::ExtAC;
 
50669
  friend class ::ExtACBuilderCoupling;
 
50670
  friend class ::ExtACSyntaxCoupling;
 
50671
  friend class ::ExtACTree;
 
50672
  friend class ::ExtACKeywords;
 
50673
  friend class ::ExtGnu;
 
50674
  friend class ::PragmaOnceUnitState;
 
50675
  friend class ::PragmaOnce;
 
50676
  friend class ::CMatchSyntax;
 
50677
 
 
50678
#line 1346 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50679
 
 
50680
  CTree *sons[2]; // oper, expr
 
50681
 
 
50682
public:
 
50683
  /** Constructor.
 
50684
   *  \param op The delete operator.
 
50685
   *  \param e The expression representing the object to delete. */
 
50686
  CT_DeleteExpr (CTree *op, CTree *e) { AddSon (sons[0], op); AddSon (sons[1], e); }
 
50687
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
50688
  static const char *NodeId ();
 
50689
  /** Get the name of the node. Can be compared with NodeId(). */
 
50690
  const char *NodeName () const { return NodeId (); }
 
50691
  /** Get the number of sons. */
 
50692
  int Sons () const { return 2; }
 
50693
  /** Get the n-th son.
 
50694
   *  \param n The index of the son.
 
50695
   *  \return The n-th son or NULL. */
 
50696
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
50697
  /** Replace a son.
 
50698
   *  \param old_son The son to replace.
 
50699
   *  \param new_son The new son. */
 
50700
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
50701
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
50702
  }
 
50703
  /** Get the expression. */
 
50704
  CTree *Expr () const { return sons[1]; }
 
50705
  /** Get the operator name, i.e. 'delete' or 'delete[]'. */
 
50706
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
50707
  /** Get the semantic information. */
 
50708
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
50709
   private:
 
50710
  typedef CT_DeleteExpr CCExprResolveExpr;
 
50711
 
 
50712
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
50713
 public :
 
50714
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
50715
  typedef CT_DeleteExpr CExprResolveExpr;
 
50716
 
 
50717
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
50718
 public :
 
50719
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
50720
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
50721
  const char *__attr_name (unsigned i) const {
 
50722
    static const char *names[] = { "sons" }; return names[i];
 
50723
  }
 
50724
  const void *__attr (unsigned __i) const {
 
50725
    switch (__i) { case 0: return &sons; default: return 0; }
 
50726
  }
 
50727
#line 1376 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50728
};
 
50729
 
 
50730
/** \class CT_NewExpr CTree.h Puma/CTree.h
 
50731
 *  Tree node representing a new expression.
 
50732
 *  Example: \code new A() \endcode */
 
50733
 
 
50734
#line 50735 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50735
} // closed Puma
 
50736
class CCExprResolve;
 
50737
class CExprResolve;
 
50738
class WinIfExists;
 
50739
class WinImportHandler;
 
50740
class WinMacros;
 
50741
class WinAsm;
 
50742
class WinDeclSpecs;
 
50743
class WinMemberExplSpec;
 
50744
class WinTypeKeywords;
 
50745
class WinFriend;
 
50746
class ExtAC;
 
50747
class ExtACBuilderCoupling;
 
50748
class ExtACSyntaxCoupling;
 
50749
class ExtACTree;
 
50750
class ExtACKeywords;
 
50751
class ExtGnu;
 
50752
class PragmaOnceUnitState;
 
50753
class PragmaOnce;
 
50754
class CMatchSyntax;
 
50755
namespace Puma {
 
50756
 
 
50757
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50758
 
 
50759
#line 50760 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50760
} // closed Puma
 
50761
 
 
50762
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50763
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50764
#include "CCExprResolveH.ah"
 
50765
#endif
 
50766
namespace Puma {
 
50767
 
 
50768
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50769
 
 
50770
#line 50771 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50771
} // closed Puma
 
50772
 
 
50773
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50774
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50775
#include "CExprResolveH.ah"
 
50776
#endif
 
50777
namespace Puma {
 
50778
 
 
50779
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50780
class CT_NewExpr : public CT_Expression, public CSemObject {
 
50781
#line 50782 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50782
  friend class ::CCExprResolve;
 
50783
  friend class ::CExprResolve;
 
50784
  friend class ::WinIfExists;
 
50785
  friend class ::WinImportHandler;
 
50786
  friend class ::WinMacros;
 
50787
  friend class ::WinAsm;
 
50788
  friend class ::WinDeclSpecs;
 
50789
  friend class ::WinMemberExplSpec;
 
50790
  friend class ::WinTypeKeywords;
 
50791
  friend class ::WinFriend;
 
50792
  friend class ::ExtAC;
 
50793
  friend class ::ExtACBuilderCoupling;
 
50794
  friend class ::ExtACSyntaxCoupling;
 
50795
  friend class ::ExtACTree;
 
50796
  friend class ::ExtACKeywords;
 
50797
  friend class ::ExtGnu;
 
50798
  friend class ::PragmaOnceUnitState;
 
50799
  friend class ::PragmaOnce;
 
50800
  friend class ::CMatchSyntax;
 
50801
 
 
50802
#line 1381 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50803
 
 
50804
  CTree *sons[6]; // oper, placement, open, type, close, init
 
50805
 
 
50806
public:
 
50807
  /** Constructor.
 
50808
   *  \param op The new operator.
 
50809
   *  \param p The optional placement expression.
 
50810
   *  \param o The optional left parenthesis around the type identifier.
 
50811
   *  \param t The type identifier specifying the type of the object to create.
 
50812
   *  \param c The optional right parenthesis around the type identifier.
 
50813
   *  \param i The optional initializer. */
 
50814
  CT_NewExpr (CTree *op, CTree *p, CTree *o, CTree *t, CTree *c, CTree *i) {
 
50815
    AddSon (sons[0], op); AddSon (sons[1], p); AddSon (sons[2], o); 
 
50816
    AddSon (sons[3], t); AddSon (sons[4], c); AddSon (sons[5], i); 
 
50817
  }
 
50818
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
50819
  static const char *NodeId ();
 
50820
  /** Get the name of the node. Can be compared with NodeId(). */
 
50821
  const char *NodeName () const { return NodeId (); }
 
50822
  /** Get the number of sons. */
 
50823
  int Sons () const { return CTree::Sons (sons, 6); }
 
50824
  /** Get the n-th son.
 
50825
   *  \param n The index of the son.
 
50826
   *  \return The n-th son or NULL. */
 
50827
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
50828
  /** Replace a son.
 
50829
   *  \param old_son The son to replace.
 
50830
   *  \param new_son The new son. */
 
50831
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
50832
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
50833
  }
 
50834
  /** Get the operator name. */
 
50835
  CT_SimpleName *OperName () const { return (CT_SimpleName*)sons[0]; }
 
50836
  /** Get the placement expression. */
 
50837
  CT_ExprList *Placement () const { return (CT_ExprList*)sons[1];; }
 
50838
  /** Get the initializer. */
 
50839
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[5]; }
 
50840
  /** Get the type of the object to create. */
 
50841
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[3]; }
 
50842
  /** Get the semantic information. */
 
50843
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
50844
   private:
 
50845
  typedef CT_NewExpr CCExprResolveExpr;
 
50846
 
 
50847
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
50848
 public :
 
50849
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
50850
  typedef CT_NewExpr CExprResolveExpr;
 
50851
 
 
50852
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
50853
 public :
 
50854
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
50855
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
50856
  const char *__attr_name (unsigned i) const {
 
50857
    static const char *names[] = { "sons" }; return names[i];
 
50858
  }
 
50859
  const void *__attr (unsigned __i) const {
 
50860
    switch (__i) { case 0: return &sons; default: return 0; }
 
50861
  }
 
50862
#line 1422 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50863
};
 
50864
 
 
50865
/** \class CT_IfThenExpr CTree.h Puma/CTree.h
 
50866
 *  Tree node representing an if-then expression.
 
50867
 *  Example: \code a>0?a:b \endcode or \code a?:b \endcode */
 
50868
 
 
50869
#line 50870 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50870
} // closed Puma
 
50871
class CCExprResolve;
 
50872
class CExprResolve;
 
50873
class WinIfExists;
 
50874
class WinImportHandler;
 
50875
class WinMacros;
 
50876
class WinAsm;
 
50877
class WinDeclSpecs;
 
50878
class WinMemberExplSpec;
 
50879
class WinTypeKeywords;
 
50880
class WinFriend;
 
50881
class ExtAC;
 
50882
class ExtACBuilderCoupling;
 
50883
class ExtACSyntaxCoupling;
 
50884
class ExtACTree;
 
50885
class ExtACKeywords;
 
50886
class ExtGnu;
 
50887
class PragmaOnceUnitState;
 
50888
class PragmaOnce;
 
50889
class CMatchSyntax;
 
50890
namespace Puma {
 
50891
 
 
50892
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50893
 
 
50894
#line 50895 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50895
} // closed Puma
 
50896
 
 
50897
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50898
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
50899
#include "CCExprResolveH.ah"
 
50900
#endif
 
50901
namespace Puma {
 
50902
 
 
50903
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50904
 
 
50905
#line 50906 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50906
} // closed Puma
 
50907
 
 
50908
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50909
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
50910
#include "CExprResolveH.ah"
 
50911
#endif
 
50912
namespace Puma {
 
50913
 
 
50914
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50915
class CT_IfThenExpr : public CT_Expression {
 
50916
#line 50917 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
50917
  friend class ::CCExprResolve;
 
50918
  friend class ::CExprResolve;
 
50919
  friend class ::WinIfExists;
 
50920
  friend class ::WinImportHandler;
 
50921
  friend class ::WinMacros;
 
50922
  friend class ::WinAsm;
 
50923
  friend class ::WinDeclSpecs;
 
50924
  friend class ::WinMemberExplSpec;
 
50925
  friend class ::WinTypeKeywords;
 
50926
  friend class ::WinFriend;
 
50927
  friend class ::ExtAC;
 
50928
  friend class ::ExtACBuilderCoupling;
 
50929
  friend class ::ExtACSyntaxCoupling;
 
50930
  friend class ::ExtACTree;
 
50931
  friend class ::ExtACKeywords;
 
50932
  friend class ::ExtGnu;
 
50933
  friend class ::PragmaOnceUnitState;
 
50934
  friend class ::PragmaOnce;
 
50935
  friend class ::CMatchSyntax;
 
50936
 
 
50937
#line 1427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
50938
 
 
50939
  CTree *sons[5]; // cond, oper, left, colon, right
 
50940
 
 
50941
public:
 
50942
  /** Constructor.
 
50943
   *  \param c1 The condition expression.
 
50944
   *  \param o The question mark operator. 
 
50945
   *  \param l The expression to the left of the colon.
 
50946
   *  \param c2 The colon operator.
 
50947
   *  \param r The expression to the right of the colon. */ 
 
50948
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *l, CTree *c2, CTree *r) {
 
50949
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], l); 
 
50950
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
50951
  }
 
50952
  /** Constructor.
 
50953
   *  \param c1 The condition expression.
 
50954
   *  \param o The question mark operator. 
 
50955
   *  \param c2 The colon operator.
 
50956
   *  \param r The expression to the right of the colon. */ 
 
50957
  CT_IfThenExpr (CTree *c1, CTree *o, CTree *c2, CTree *r) {
 
50958
    AddSon (sons[0], c1); AddSon (sons[1], o); AddSon (sons[2], 0); 
 
50959
    AddSon (sons[3], c2); AddSon (sons[4], r);
 
50960
  }
 
50961
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
50962
  static const char *NodeId ();
 
50963
  /** Get the name of the node. Can be compared with NodeId(). */
 
50964
  const char *NodeName () const { return NodeId (); }
 
50965
  /** Get the number of sons. */
 
50966
  int Sons () const { return CTree::Sons (sons, 5); }
 
50967
  /** Get the n-th son.
 
50968
   *  \param n The index of the son.
 
50969
   *  \return The n-th son or NULL. */
 
50970
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
50971
  /** Get the condition expression. */
 
50972
  CTree *Condition () const { return sons[0]; }
 
50973
  /** Get the left expression (condition=true). */
 
50974
  CTree *LeftOperand () const { return sons[2]; }
 
50975
  /** Get the right expression (condition=false). */
 
50976
  CTree *RightOperand () const { return sons[4]; }
 
50977
  /** Replace a son.
 
50978
   *  \param old_son The son to replace.
 
50979
   *  \param new_son The new son. */
 
50980
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
50981
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
50982
  }
 
50983
   private:
 
50984
  typedef CT_IfThenExpr CCExprResolveExpr;
 
50985
 
 
50986
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
50987
 public :
 
50988
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
50989
  typedef CT_IfThenExpr CExprResolveExpr;
 
50990
 
 
50991
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
50992
 public :
 
50993
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
50994
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
50995
  const char *__attr_name (unsigned i) const {
 
50996
    static const char *names[] = { "sons" }; return names[i];
 
50997
  }
 
50998
  const void *__attr (unsigned __i) const {
 
50999
    switch (__i) { case 0: return &sons; default: return 0; }
 
51000
  }
 
51001
#line 1472 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51002
};
 
51003
 
 
51004
/** \class CT_CmpdLiteral CTree.h Puma/CTree.h
 
51005
 *  Tree node representing a compound literal.
 
51006
 *  Example: \code (int[]){1,2,3) \endcode */
 
51007
 
 
51008
#line 51009 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51009
} // closed Puma
 
51010
class CCExprResolve;
 
51011
class CExprResolve;
 
51012
class WinIfExists;
 
51013
class WinImportHandler;
 
51014
class WinMacros;
 
51015
class WinAsm;
 
51016
class WinDeclSpecs;
 
51017
class WinMemberExplSpec;
 
51018
class WinTypeKeywords;
 
51019
class WinFriend;
 
51020
class ExtAC;
 
51021
class ExtACBuilderCoupling;
 
51022
class ExtACSyntaxCoupling;
 
51023
class ExtACTree;
 
51024
class ExtACKeywords;
 
51025
class ExtGnu;
 
51026
class PragmaOnceUnitState;
 
51027
class PragmaOnce;
 
51028
class CMatchSyntax;
 
51029
namespace Puma {
 
51030
 
 
51031
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51032
 
 
51033
#line 51034 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51034
} // closed Puma
 
51035
 
 
51036
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51037
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51038
#include "CCExprResolveH.ah"
 
51039
#endif
 
51040
namespace Puma {
 
51041
 
 
51042
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51043
 
 
51044
#line 51045 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51045
} // closed Puma
 
51046
 
 
51047
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51048
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51049
#include "CExprResolveH.ah"
 
51050
#endif
 
51051
namespace Puma {
 
51052
 
 
51053
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51054
class CT_CmpdLiteral : public CT_Expression, public CSemObject {
 
51055
#line 51056 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51056
  friend class ::CCExprResolve;
 
51057
  friend class ::CExprResolve;
 
51058
  friend class ::WinIfExists;
 
51059
  friend class ::WinImportHandler;
 
51060
  friend class ::WinMacros;
 
51061
  friend class ::WinAsm;
 
51062
  friend class ::WinDeclSpecs;
 
51063
  friend class ::WinMemberExplSpec;
 
51064
  friend class ::WinTypeKeywords;
 
51065
  friend class ::WinFriend;
 
51066
  friend class ::ExtAC;
 
51067
  friend class ::ExtACBuilderCoupling;
 
51068
  friend class ::ExtACSyntaxCoupling;
 
51069
  friend class ::ExtACTree;
 
51070
  friend class ::ExtACKeywords;
 
51071
  friend class ::ExtGnu;
 
51072
  friend class ::PragmaOnceUnitState;
 
51073
  friend class ::PragmaOnce;
 
51074
  friend class ::CMatchSyntax;
 
51075
 
 
51076
#line 1477 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51077
 
 
51078
  CTree *sons[4]; // open, type, close, init
 
51079
 
 
51080
public:
 
51081
  /** Constructor.
 
51082
   *  \param r Left parenthesis of the type name.
 
51083
   *  \param t The type name.
 
51084
   *  \param cr Right parenthesis of the type name.
 
51085
   *  \param i The initializer list. */
 
51086
  CT_CmpdLiteral (CTree *r, CTree *t, CTree *cr, CTree *i) {
 
51087
    AddSon (sons[0], r); AddSon (sons[1], t); 
 
51088
    AddSon (sons[2], cr); AddSon (sons[3], i);
 
51089
  }
 
51090
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51091
  static const char *NodeId ();
 
51092
  /** Get the name of the node. Can be compared with NodeId(). */
 
51093
  const char *NodeName () const { return NodeId (); }
 
51094
  /** Get the number of sons. */
 
51095
  int Sons () const { return 4; }
 
51096
  /** Get the n-th son.
 
51097
   *  \param n The index of the son.
 
51098
   *  \return The n-th son or NULL. */
 
51099
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
51100
  /** Replace a son.
 
51101
   *  \param old_son The son to replace.
 
51102
   *  \param new_son The new son. */
 
51103
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
51104
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
51105
  }
 
51106
  /** Get the type name. */
 
51107
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
51108
  /** Get the initializer list. */
 
51109
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[3]; }
 
51110
  /** Get the semantic information about the created object. */
 
51111
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
51112
   private:
 
51113
  typedef CT_CmpdLiteral CCExprResolveExpr;
 
51114
 
 
51115
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
51116
 public :
 
51117
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
51118
  typedef CT_CmpdLiteral CExprResolveExpr;
 
51119
 
 
51120
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
51121
 public :
 
51122
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
51123
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
51124
  const char *__attr_name (unsigned i) const {
 
51125
    static const char *names[] = { "sons" }; return names[i];
 
51126
  }
 
51127
  const void *__attr (unsigned __i) const {
 
51128
    switch (__i) { case 0: return &sons; default: return 0; }
 
51129
  }
 
51130
#line 1512 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51131
};
 
51132
 
 
51133
/** \class CT_ConstructExpr CTree.h Puma/CTree.h
 
51134
 *  Tree node representing a construct expression.
 
51135
 *  Example: \code std::string("abc") \endcode */
 
51136
 
 
51137
#line 51138 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51138
} // closed Puma
 
51139
class CCExprResolve;
 
51140
class CExprResolve;
 
51141
class WinIfExists;
 
51142
class WinImportHandler;
 
51143
class WinMacros;
 
51144
class WinAsm;
 
51145
class WinDeclSpecs;
 
51146
class WinMemberExplSpec;
 
51147
class WinTypeKeywords;
 
51148
class WinFriend;
 
51149
class ExtAC;
 
51150
class ExtACBuilderCoupling;
 
51151
class ExtACSyntaxCoupling;
 
51152
class ExtACTree;
 
51153
class ExtACKeywords;
 
51154
class ExtGnu;
 
51155
class PragmaOnceUnitState;
 
51156
class PragmaOnce;
 
51157
class CMatchSyntax;
 
51158
namespace Puma {
 
51159
 
 
51160
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51161
 
 
51162
#line 51163 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51163
} // closed Puma
 
51164
 
 
51165
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51166
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51167
#include "CCExprResolveH.ah"
 
51168
#endif
 
51169
namespace Puma {
 
51170
 
 
51171
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51172
 
 
51173
#line 51174 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51174
} // closed Puma
 
51175
 
 
51176
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51177
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51178
#include "CExprResolveH.ah"
 
51179
#endif
 
51180
namespace Puma {
 
51181
 
 
51182
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51183
class CT_ConstructExpr : public CT_Expression, public CSemObject {
 
51184
#line 51185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51185
  friend class ::CCExprResolve;
 
51186
  friend class ::CExprResolve;
 
51187
  friend class ::WinIfExists;
 
51188
  friend class ::WinImportHandler;
 
51189
  friend class ::WinMacros;
 
51190
  friend class ::WinAsm;
 
51191
  friend class ::WinDeclSpecs;
 
51192
  friend class ::WinMemberExplSpec;
 
51193
  friend class ::WinTypeKeywords;
 
51194
  friend class ::WinFriend;
 
51195
  friend class ::ExtAC;
 
51196
  friend class ::ExtACBuilderCoupling;
 
51197
  friend class ::ExtACSyntaxCoupling;
 
51198
  friend class ::ExtACTree;
 
51199
  friend class ::ExtACKeywords;
 
51200
  friend class ::ExtGnu;
 
51201
  friend class ::PragmaOnceUnitState;
 
51202
  friend class ::PragmaOnce;
 
51203
  friend class ::CMatchSyntax;
 
51204
 
 
51205
#line 1517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51206
 
 
51207
  CTree *sons[2]; // type, init
 
51208
 
 
51209
public:
 
51210
  /** Constructor.
 
51211
   *  \param t The type name.
 
51212
   *  \param i The initializer list. */
 
51213
  CT_ConstructExpr (CTree *t, CTree *i) { AddSon (sons[0], t); AddSon (sons[1], i); }
 
51214
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51215
  static const char *NodeId ();
 
51216
  /** Get the name of the node. Can be compared with NodeId(). */
 
51217
  const char *NodeName () const { return NodeId (); }
 
51218
  /** Get the number of sons. */
 
51219
  int Sons () const { return 2; }
 
51220
  /** Get the n-th son.
 
51221
   *  \param n The index of the son.
 
51222
   *  \return The n-th son or NULL. */
 
51223
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
51224
  /** Replace a son.
 
51225
   *  \param old_son The son to replace.
 
51226
   *  \param new_son The new son. */
 
51227
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
51228
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
51229
  }
 
51230
  /** Get the type name. */
 
51231
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[0]; }
 
51232
  /** Get the initializer. */
 
51233
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
51234
  /** Get the semantic information about the created object. */
 
51235
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
51236
   private:
 
51237
  typedef CT_ConstructExpr CCExprResolveExpr;
 
51238
 
 
51239
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
51240
 public :
 
51241
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
51242
  typedef CT_ConstructExpr CExprResolveExpr;
 
51243
 
 
51244
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
51245
 public :
 
51246
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
51247
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
51248
  const char *__attr_name (unsigned i) const {
 
51249
    static const char *names[] = { "sons" }; return names[i];
 
51250
  }
 
51251
  const void *__attr (unsigned __i) const {
 
51252
    switch (__i) { case 0: return &sons; default: return 0; }
 
51253
  }
 
51254
#line 1547 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51255
};
 
51256
 
 
51257
/** \class CT_ThrowExpr CTree.h Puma/CTree.h
 
51258
 *  Tree node representing a throw expression.
 
51259
 *  Example: \code throw std::exception() \endcode */
 
51260
 
 
51261
#line 51262 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51262
} // closed Puma
 
51263
class CCExprResolve;
 
51264
class CExprResolve;
 
51265
class WinIfExists;
 
51266
class WinImportHandler;
 
51267
class WinMacros;
 
51268
class WinAsm;
 
51269
class WinDeclSpecs;
 
51270
class WinMemberExplSpec;
 
51271
class WinTypeKeywords;
 
51272
class WinFriend;
 
51273
class ExtAC;
 
51274
class ExtACBuilderCoupling;
 
51275
class ExtACSyntaxCoupling;
 
51276
class ExtACTree;
 
51277
class ExtACKeywords;
 
51278
class ExtGnu;
 
51279
class PragmaOnceUnitState;
 
51280
class PragmaOnce;
 
51281
class CMatchSyntax;
 
51282
namespace Puma {
 
51283
 
 
51284
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51285
 
 
51286
#line 51287 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51287
} // closed Puma
 
51288
 
 
51289
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51290
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51291
#include "CCExprResolveH.ah"
 
51292
#endif
 
51293
namespace Puma {
 
51294
 
 
51295
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51296
 
 
51297
#line 51298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51298
} // closed Puma
 
51299
 
 
51300
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51301
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51302
#include "CExprResolveH.ah"
 
51303
#endif
 
51304
namespace Puma {
 
51305
 
 
51306
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51307
class CT_ThrowExpr : public CT_Expression {
 
51308
#line 51309 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51309
  friend class ::CCExprResolve;
 
51310
  friend class ::CExprResolve;
 
51311
  friend class ::WinIfExists;
 
51312
  friend class ::WinImportHandler;
 
51313
  friend class ::WinMacros;
 
51314
  friend class ::WinAsm;
 
51315
  friend class ::WinDeclSpecs;
 
51316
  friend class ::WinMemberExplSpec;
 
51317
  friend class ::WinTypeKeywords;
 
51318
  friend class ::WinFriend;
 
51319
  friend class ::ExtAC;
 
51320
  friend class ::ExtACBuilderCoupling;
 
51321
  friend class ::ExtACSyntaxCoupling;
 
51322
  friend class ::ExtACTree;
 
51323
  friend class ::ExtACKeywords;
 
51324
  friend class ::ExtGnu;
 
51325
  friend class ::PragmaOnceUnitState;
 
51326
  friend class ::PragmaOnce;
 
51327
  friend class ::CMatchSyntax;
 
51328
 
 
51329
#line 1552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51330
 
 
51331
  CTree *sons[2]; // throw, expr
 
51332
 
 
51333
public:
 
51334
  /** Constructor.
 
51335
   *  \param t The 'throw' keyword.
 
51336
   *  \param e The expression. */
 
51337
  CT_ThrowExpr (CTree *t, CTree *e = (CTree*)0) { AddSon (sons[0], t); AddSon (sons[1], e); }
 
51338
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51339
  static const char *NodeId ();
 
51340
  /** Get the name of the node. Can be compared with NodeId(). */
 
51341
  const char *NodeName () const { return NodeId (); }
 
51342
  /** Get the number of sons. */
 
51343
  int Sons () const { return CTree::Sons (sons, 2); }
 
51344
  /** Get the n-th son.
 
51345
   *  \param n The index of the son.
 
51346
   *  \return The n-th son or NULL. */
 
51347
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
51348
  /** Replace a son.
 
51349
   *  \param old_son The son to replace.
 
51350
   *  \param new_son The new son. */
 
51351
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
51352
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
51353
  }
 
51354
  /** Get the expression. */
 
51355
  CTree *Expr () const { return sons[1]; }
 
51356
   private:
 
51357
  typedef CT_ThrowExpr CCExprResolveExpr;
 
51358
 
 
51359
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
51360
 public :
 
51361
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
51362
  typedef CT_ThrowExpr CExprResolveExpr;
 
51363
 
 
51364
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
51365
 public :
 
51366
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
51367
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
51368
  const char *__attr_name (unsigned i) const {
 
51369
    static const char *names[] = { "sons" }; return names[i];
 
51370
  }
 
51371
  const void *__attr (unsigned __i) const {
 
51372
    switch (__i) { case 0: return &sons; default: return 0; }
 
51373
  }
 
51374
#line 1578 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51375
};
 
51376
 
 
51377
/** \class CT_IndexExpr CTree.h Puma/CTree.h
 
51378
 *  Tree node representing an index expression. 
 
51379
 *  Example: \code a[1] \endcode */
 
51380
 
 
51381
#line 51382 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51382
} // closed Puma
 
51383
class CCExprResolve;
 
51384
class CExprResolve;
 
51385
class WinIfExists;
 
51386
class WinImportHandler;
 
51387
class WinMacros;
 
51388
class WinAsm;
 
51389
class WinDeclSpecs;
 
51390
class WinMemberExplSpec;
 
51391
class WinTypeKeywords;
 
51392
class WinFriend;
 
51393
class ExtAC;
 
51394
class ExtACBuilderCoupling;
 
51395
class ExtACSyntaxCoupling;
 
51396
class ExtACTree;
 
51397
class ExtACKeywords;
 
51398
class ExtGnu;
 
51399
class PragmaOnceUnitState;
 
51400
class PragmaOnce;
 
51401
class CMatchSyntax;
 
51402
namespace Puma {
 
51403
 
 
51404
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51405
 
 
51406
#line 51407 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51407
} // closed Puma
 
51408
 
 
51409
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51410
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51411
#include "CCExprResolveH.ah"
 
51412
#endif
 
51413
namespace Puma {
 
51414
 
 
51415
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51416
 
 
51417
#line 51418 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51418
} // closed Puma
 
51419
 
 
51420
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51421
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51422
#include "CExprResolveH.ah"
 
51423
#endif
 
51424
namespace Puma {
 
51425
 
 
51426
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51427
class CT_IndexExpr : public CT_Call {
 
51428
#line 51429 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51429
  friend class ::CCExprResolve;
 
51430
  friend class ::CExprResolve;
 
51431
  friend class ::WinIfExists;
 
51432
  friend class ::WinImportHandler;
 
51433
  friend class ::WinMacros;
 
51434
  friend class ::WinAsm;
 
51435
  friend class ::WinDeclSpecs;
 
51436
  friend class ::WinMemberExplSpec;
 
51437
  friend class ::WinTypeKeywords;
 
51438
  friend class ::WinFriend;
 
51439
  friend class ::ExtAC;
 
51440
  friend class ::ExtACBuilderCoupling;
 
51441
  friend class ::ExtACSyntaxCoupling;
 
51442
  friend class ::ExtACTree;
 
51443
  friend class ::ExtACKeywords;
 
51444
  friend class ::ExtGnu;
 
51445
  friend class ::PragmaOnceUnitState;
 
51446
  friend class ::PragmaOnce;
 
51447
  friend class ::CMatchSyntax;
 
51448
 
 
51449
#line 1583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51450
 
 
51451
  CTree *sons[4]; // expr, open, index, close
 
51452
 
 
51453
public:
 
51454
  /** Constructor.
 
51455
   *  \param e The expression on which to invoke the index operator.
 
51456
   *  \param o Left parenthesis of the index expression.
 
51457
   *  \param i The index expression. 
 
51458
   *  \param c Right parenthesis of the index expression. */
 
51459
  CT_IndexExpr (CTree *e, CTree *o, CTree *i, CTree *c) {
 
51460
    AddSon (sons[0], e); AddSon (sons[1], o); 
 
51461
    AddSon (sons[2], i); AddSon (sons[3], c);
 
51462
  }
 
51463
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51464
  static const char *NodeId ();
 
51465
  /** Get the name of the node. Can be compared with NodeId(). */
 
51466
  const char *NodeName () const { return NodeId (); }
 
51467
  /** Get the number of sons. */
 
51468
  int Sons () const { return 4; }
 
51469
  /** Get the n-th son.
 
51470
   *  \param n The index of the son.
 
51471
   *  \return The n-th son or NULL. */
 
51472
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
51473
  /** Replace a son.
 
51474
   *  \param old_son The son to replace.
 
51475
   *  \param new_son The new son. */
 
51476
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
51477
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
51478
  }
 
51479
   private:
 
51480
  typedef CT_IndexExpr CCExprResolveExpr;
 
51481
 
 
51482
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
51483
 public :
 
51484
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
51485
  typedef CT_IndexExpr CExprResolveExpr;
 
51486
 
 
51487
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
51488
 public :
 
51489
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
51490
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
51491
  const char *__attr_name (unsigned i) const {
 
51492
    static const char *names[] = { "sons" }; return names[i];
 
51493
  }
 
51494
  const void *__attr (unsigned __i) const {
 
51495
    switch (__i) { case 0: return &sons; default: return 0; }
 
51496
  }
 
51497
#line 1612 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51498
};
 
51499
 
 
51500
/** \class CT_CallExpr CTree.h Puma/CTree.h
 
51501
 *  Tree node representing a function call expression.
 
51502
 *  Example: \code f(i) \endcode */
 
51503
 
 
51504
#line 51505 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51505
} // closed Puma
 
51506
class CCExprResolve;
 
51507
class CExprResolve;
 
51508
class WinIfExists;
 
51509
class WinImportHandler;
 
51510
class WinMacros;
 
51511
class WinAsm;
 
51512
class WinDeclSpecs;
 
51513
class WinMemberExplSpec;
 
51514
class WinTypeKeywords;
 
51515
class WinFriend;
 
51516
class ExtAC;
 
51517
class ExtACBuilderCoupling;
 
51518
class ExtACSyntaxCoupling;
 
51519
class ExtACTree;
 
51520
class ExtACKeywords;
 
51521
class ExtGnu;
 
51522
class PragmaOnceUnitState;
 
51523
class PragmaOnce;
 
51524
class CMatchSyntax;
 
51525
namespace Puma {
 
51526
 
 
51527
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51528
 
 
51529
#line 51530 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51530
} // closed Puma
 
51531
 
 
51532
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51533
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51534
#include "CCExprResolveH.ah"
 
51535
#endif
 
51536
namespace Puma {
 
51537
 
 
51538
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51539
 
 
51540
#line 51541 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51541
} // closed Puma
 
51542
 
 
51543
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51544
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51545
#include "CExprResolveH.ah"
 
51546
#endif
 
51547
namespace Puma {
 
51548
 
 
51549
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51550
class CT_CallExpr : public CT_Call {
 
51551
#line 51552 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51552
  friend class ::CCExprResolve;
 
51553
  friend class ::CExprResolve;
 
51554
  friend class ::WinIfExists;
 
51555
  friend class ::WinImportHandler;
 
51556
  friend class ::WinMacros;
 
51557
  friend class ::WinAsm;
 
51558
  friend class ::WinDeclSpecs;
 
51559
  friend class ::WinMemberExplSpec;
 
51560
  friend class ::WinTypeKeywords;
 
51561
  friend class ::WinFriend;
 
51562
  friend class ::ExtAC;
 
51563
  friend class ::ExtACBuilderCoupling;
 
51564
  friend class ::ExtACSyntaxCoupling;
 
51565
  friend class ::ExtACTree;
 
51566
  friend class ::ExtACKeywords;
 
51567
  friend class ::ExtGnu;
 
51568
  friend class ::PragmaOnceUnitState;
 
51569
  friend class ::PragmaOnce;
 
51570
  friend class ::CMatchSyntax;
 
51571
 
 
51572
#line 1617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51573
 
 
51574
  CTree *sons[2]; // expr, args
 
51575
 
 
51576
public:
 
51577
  /** Constructor.
 
51578
   *  \param e The expression on which the call is invoked. */
 
51579
  CT_CallExpr (CTree *e) { AddSon (sons[0], e); AddSon (sons[1], 0); }
 
51580
  /** Constructor.
 
51581
   *  \param e The expression on which the call is invoked.
 
51582
   *  \param l The argument list of the call. */
 
51583
  CT_CallExpr (CTree *e, CTree *l) { AddSon (sons[0], e); AddSon (sons[1], l); }
 
51584
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51585
  static const char *NodeId ();
 
51586
  /** Get the name of the node. Can be compared with NodeId(). */
 
51587
  const char *NodeName () const { return NodeId (); }
 
51588
  /** Get the number of sons. */
 
51589
  int Sons () const { return CTree::Sons (sons, 2); }
 
51590
  /** Get the n-th son.
 
51591
   *  \param n The index of the son.
 
51592
   *  \return The n-th son or NULL. */
 
51593
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
51594
  /** Replace a son.
 
51595
   *  \param old_son The son to replace.
 
51596
   *  \param new_son The new son. */
 
51597
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
51598
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
51599
  }
 
51600
  CTree *Expr () const { return sons[0]; }
 
51601
  CT_ExprList *Arguments () const { return (CT_ExprList*)sons[1]; }
 
51602
   private:
 
51603
  typedef CT_CallExpr CCExprResolveExpr;
 
51604
 
 
51605
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
51606
 public :
 
51607
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
51608
  typedef CT_CallExpr CExprResolveExpr;
 
51609
 
 
51610
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
51611
 public :
 
51612
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
51613
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
51614
  const char *__attr_name (unsigned i) const {
 
51615
    static const char *names[] = { "sons" }; return names[i];
 
51616
  }
 
51617
  const void *__attr (unsigned __i) const {
 
51618
    switch (__i) { case 0: return &sons; default: return 0; }
 
51619
  }
 
51620
#line 1646 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51621
};
 
51622
 
 
51623
/** \class CT_CastExpr CTree.h Puma/CTree.h
 
51624
 *  Tree node representing a cast expression.
 
51625
 *  Example: \code (int)a \endcode */
 
51626
 
 
51627
#line 51628 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51628
} // closed Puma
 
51629
class CCExprResolve;
 
51630
class CExprResolve;
 
51631
class WinIfExists;
 
51632
class WinImportHandler;
 
51633
class WinMacros;
 
51634
class WinAsm;
 
51635
class WinDeclSpecs;
 
51636
class WinMemberExplSpec;
 
51637
class WinTypeKeywords;
 
51638
class WinFriend;
 
51639
class ExtAC;
 
51640
class ExtACBuilderCoupling;
 
51641
class ExtACSyntaxCoupling;
 
51642
class ExtACTree;
 
51643
class ExtACKeywords;
 
51644
class ExtGnu;
 
51645
class PragmaOnceUnitState;
 
51646
class PragmaOnce;
 
51647
class CMatchSyntax;
 
51648
namespace Puma {
 
51649
 
 
51650
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51651
 
 
51652
#line 51653 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51653
} // closed Puma
 
51654
 
 
51655
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51656
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51657
#include "CCExprResolveH.ah"
 
51658
#endif
 
51659
namespace Puma {
 
51660
 
 
51661
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51662
 
 
51663
#line 51664 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51664
} // closed Puma
 
51665
 
 
51666
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51667
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51668
#include "CExprResolveH.ah"
 
51669
#endif
 
51670
namespace Puma {
 
51671
 
 
51672
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51673
class CT_CastExpr : public CT_Expression {
 
51674
#line 51675 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51675
  friend class ::CCExprResolve;
 
51676
  friend class ::CExprResolve;
 
51677
  friend class ::WinIfExists;
 
51678
  friend class ::WinImportHandler;
 
51679
  friend class ::WinMacros;
 
51680
  friend class ::WinAsm;
 
51681
  friend class ::WinDeclSpecs;
 
51682
  friend class ::WinMemberExplSpec;
 
51683
  friend class ::WinTypeKeywords;
 
51684
  friend class ::WinFriend;
 
51685
  friend class ::ExtAC;
 
51686
  friend class ::ExtACBuilderCoupling;
 
51687
  friend class ::ExtACSyntaxCoupling;
 
51688
  friend class ::ExtACTree;
 
51689
  friend class ::ExtACKeywords;
 
51690
  friend class ::ExtGnu;
 
51691
  friend class ::PragmaOnceUnitState;
 
51692
  friend class ::PragmaOnce;
 
51693
  friend class ::CMatchSyntax;
 
51694
 
 
51695
#line 1651 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51696
 
 
51697
  CTree *sons[4]; // open, type, close, expr
 
51698
 
 
51699
public:
 
51700
  /** Constructor.
 
51701
   *  \param o Left parenthesis of the type name.
 
51702
   *  \param t The type to cast to.
 
51703
   *  \param c Right parenthesis of the type name. 
 
51704
   *  \param e The expression to cast. */
 
51705
  CT_CastExpr (CTree *o, CTree *t, CTree *c, CTree *e) {
 
51706
    AddSon (sons[0], o); AddSon (sons[1], t); 
 
51707
    AddSon (sons[2], c); AddSon (sons[3], e);
 
51708
  }
 
51709
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51710
  static const char *NodeId ();
 
51711
  /** Get the name of the node. Can be compared with NodeId(). */
 
51712
  const char *NodeName () const { return NodeId (); }
 
51713
  /** Get the number of sons. */
 
51714
  int Sons () const { return 4; }
 
51715
  /** Get the n-th son.
 
51716
   *  \param n The index of the son.
 
51717
   *  \return The n-th son or NULL. */
 
51718
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
51719
  /** Replace a son.
 
51720
   *  \param old_son The son to replace.
 
51721
   *  \param new_son The new son. */
 
51722
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
51723
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
51724
  }
 
51725
  /** Get the casted expression. */
 
51726
  CTree *Expr () const { return sons[3]; }
 
51727
  /** Get the type to cast to. */
 
51728
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[1]; }
 
51729
   private:
 
51730
  typedef CT_CastExpr CCExprResolveExpr;
 
51731
 
 
51732
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
51733
 public :
 
51734
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
51735
  typedef CT_CastExpr CExprResolveExpr;
 
51736
 
 
51737
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
51738
 public :
 
51739
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
51740
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
51741
  const char *__attr_name (unsigned i) const {
 
51742
    static const char *names[] = { "sons" }; return names[i];
 
51743
  }
 
51744
  const void *__attr (unsigned __i) const {
 
51745
    switch (__i) { case 0: return &sons; default: return 0; }
 
51746
  }
 
51747
#line 1684 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51748
};
 
51749
 
 
51750
/** \class CT_StaticCast CTree.h Puma/CTree.h
 
51751
 *  Tree node representing a static cast.
 
51752
 *  Example: \code static_cast<int>(a) \endcode */
 
51753
 
 
51754
#line 51755 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51755
} // closed Puma
 
51756
class CCExprResolve;
 
51757
class CExprResolve;
 
51758
class WinIfExists;
 
51759
class WinImportHandler;
 
51760
class WinMacros;
 
51761
class WinAsm;
 
51762
class WinDeclSpecs;
 
51763
class WinMemberExplSpec;
 
51764
class WinTypeKeywords;
 
51765
class WinFriend;
 
51766
class ExtAC;
 
51767
class ExtACBuilderCoupling;
 
51768
class ExtACSyntaxCoupling;
 
51769
class ExtACTree;
 
51770
class ExtACKeywords;
 
51771
class ExtGnu;
 
51772
class PragmaOnceUnitState;
 
51773
class PragmaOnce;
 
51774
class CMatchSyntax;
 
51775
namespace Puma {
 
51776
 
 
51777
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51778
 
 
51779
#line 51780 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51780
} // closed Puma
 
51781
 
 
51782
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51783
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51784
#include "CCExprResolveH.ah"
 
51785
#endif
 
51786
namespace Puma {
 
51787
 
 
51788
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51789
 
 
51790
#line 51791 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51791
} // closed Puma
 
51792
 
 
51793
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51794
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51795
#include "CExprResolveH.ah"
 
51796
#endif
 
51797
namespace Puma {
 
51798
 
 
51799
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51800
class CT_StaticCast : public CT_Expression {
 
51801
#line 51802 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51802
  friend class ::CCExprResolve;
 
51803
  friend class ::CExprResolve;
 
51804
  friend class ::WinIfExists;
 
51805
  friend class ::WinImportHandler;
 
51806
  friend class ::WinMacros;
 
51807
  friend class ::WinAsm;
 
51808
  friend class ::WinDeclSpecs;
 
51809
  friend class ::WinMemberExplSpec;
 
51810
  friend class ::WinTypeKeywords;
 
51811
  friend class ::WinFriend;
 
51812
  friend class ::ExtAC;
 
51813
  friend class ::ExtACBuilderCoupling;
 
51814
  friend class ::ExtACSyntaxCoupling;
 
51815
  friend class ::ExtACTree;
 
51816
  friend class ::ExtACKeywords;
 
51817
  friend class ::ExtGnu;
 
51818
  friend class ::PragmaOnceUnitState;
 
51819
  friend class ::PragmaOnce;
 
51820
  friend class ::CMatchSyntax;
 
51821
 
 
51822
#line 1689 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51823
 
 
51824
  CTree *sons[5]; // cast, open, type, close, expr
 
51825
 
 
51826
public:
 
51827
  /** Constructor.
 
51828
   *  \param cst The cast operator, i.e. 'static_cast'.
 
51829
   *  \param o Left arrow bracket of the type name.
 
51830
   *  \param t The type to cast to.
 
51831
   *  \param c Right array bracket of the type name.
 
51832
   *  \param e The expression to cast. */
 
51833
  CT_StaticCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) {
 
51834
    AddSon (sons[0], cst); AddSon (sons[1], o); AddSon (sons[2], t); 
 
51835
    AddSon (sons[3], c); AddSon (sons[4], e);
 
51836
  }
 
51837
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51838
  static const char *NodeId ();
 
51839
  /** Get the name of the node. Can be compared with NodeId(). */
 
51840
  const char *NodeName () const { return NodeId (); }
 
51841
  /** Get the number of sons. */
 
51842
  int Sons () const { return 5; }
 
51843
  /** Get the n-th son.
 
51844
   *  \param n The index of the son.
 
51845
   *  \return The n-th son or NULL. */
 
51846
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
51847
  /** Replace a son.
 
51848
   *  \param old_son The son to replace.
 
51849
   *  \param new_son The new son. */
 
51850
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
51851
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
51852
  }
 
51853
  /** Get the casted expression. */
 
51854
  CTree *Expr () const { return sons[4]; }
 
51855
  /** Get the type to cast to. */
 
51856
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
51857
   private:
 
51858
  typedef CT_StaticCast CCExprResolveExpr;
 
51859
 
 
51860
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
51861
 public :
 
51862
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
51863
  typedef CT_StaticCast CExprResolveExpr;
 
51864
 
 
51865
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
51866
 public :
 
51867
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
51868
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
51869
  const char *__attr_name (unsigned i) const {
 
51870
    static const char *names[] = { "sons" }; return names[i];
 
51871
  }
 
51872
  const void *__attr (unsigned __i) const {
 
51873
    switch (__i) { case 0: return &sons; default: return 0; }
 
51874
  }
 
51875
#line 1723 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51876
};
 
51877
 
 
51878
/** \class CT_ConstCast CTree.h Puma/CTree.h
 
51879
 *  Tree node representing a const cast.
 
51880
 *  Example: \code const_cast<int>(a) \endcode */
 
51881
 
 
51882
#line 51883 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51883
} // closed Puma
 
51884
class CCExprResolve;
 
51885
class CExprResolve;
 
51886
class WinIfExists;
 
51887
class WinImportHandler;
 
51888
class WinMacros;
 
51889
class WinAsm;
 
51890
class WinDeclSpecs;
 
51891
class WinMemberExplSpec;
 
51892
class WinTypeKeywords;
 
51893
class WinFriend;
 
51894
class ExtAC;
 
51895
class ExtACBuilderCoupling;
 
51896
class ExtACSyntaxCoupling;
 
51897
class ExtACTree;
 
51898
class ExtACKeywords;
 
51899
class ExtGnu;
 
51900
class PragmaOnceUnitState;
 
51901
class PragmaOnce;
 
51902
class CMatchSyntax;
 
51903
namespace Puma {
 
51904
 
 
51905
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51906
 
 
51907
#line 51908 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51908
} // closed Puma
 
51909
 
 
51910
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51911
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
51912
#include "CCExprResolveH.ah"
 
51913
#endif
 
51914
namespace Puma {
 
51915
 
 
51916
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51917
 
 
51918
#line 51919 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51919
} // closed Puma
 
51920
 
 
51921
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51922
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
51923
#include "CExprResolveH.ah"
 
51924
#endif
 
51925
namespace Puma {
 
51926
 
 
51927
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51928
class CT_ConstCast : public CT_StaticCast {
 
51929
#line 51930 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51930
  friend class ::CCExprResolve;
 
51931
  friend class ::CExprResolve;
 
51932
  friend class ::WinIfExists;
 
51933
  friend class ::WinImportHandler;
 
51934
  friend class ::WinMacros;
 
51935
  friend class ::WinAsm;
 
51936
  friend class ::WinDeclSpecs;
 
51937
  friend class ::WinMemberExplSpec;
 
51938
  friend class ::WinTypeKeywords;
 
51939
  friend class ::WinFriend;
 
51940
  friend class ::ExtAC;
 
51941
  friend class ::ExtACBuilderCoupling;
 
51942
  friend class ::ExtACSyntaxCoupling;
 
51943
  friend class ::ExtACTree;
 
51944
  friend class ::ExtACKeywords;
 
51945
  friend class ::ExtGnu;
 
51946
  friend class ::PragmaOnceUnitState;
 
51947
  friend class ::PragmaOnce;
 
51948
  friend class ::CMatchSyntax;
 
51949
 
 
51950
#line 1728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51951
 
 
51952
public:
 
51953
  /** Constructor.
 
51954
   *  \param cst The cast operator, i.e. 'const_cast'.
 
51955
   *  \param o Left arrow bracket of the type name.
 
51956
   *  \param t The type to cast to.
 
51957
   *  \param c Right array bracket of the type name.
 
51958
   *  \param e The expression to cast. */
 
51959
  CT_ConstCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
51960
    CT_StaticCast (cst, o, t, c, e) {}
 
51961
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
51962
  static const char *NodeId ();
 
51963
  /** Get the name of the node. Can be compared with NodeId(). */
 
51964
  const char *NodeName () const { return NodeId (); }
 
51965
   private:
 
51966
  typedef CT_ConstCast CCExprResolveExpr;
 
51967
 
 
51968
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
51969
 public :
 
51970
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
51971
  typedef CT_ConstCast CExprResolveExpr;
 
51972
 
 
51973
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
51974
 public :
 
51975
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
51976
  typedef AC::TLE __AttrTypes;
 
51977
  const char *__attr_name (unsigned i) const { return 0; }
 
51978
  const void *__attr (unsigned __i) const { return 0; }
 
51979
#line 1742 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
51980
};
 
51981
 
 
51982
/** \class CT_ReintCast CTree.h Puma/CTree.h
 
51983
 *  Tree node representing a reinterpret cast.
 
51984
 *  Example: \code reinterpret_cast<int>(a) \endcode */
 
51985
 
 
51986
#line 51987 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
51987
} // closed Puma
 
51988
class CCExprResolve;
 
51989
class CExprResolve;
 
51990
class WinIfExists;
 
51991
class WinImportHandler;
 
51992
class WinMacros;
 
51993
class WinAsm;
 
51994
class WinDeclSpecs;
 
51995
class WinMemberExplSpec;
 
51996
class WinTypeKeywords;
 
51997
class WinFriend;
 
51998
class ExtAC;
 
51999
class ExtACBuilderCoupling;
 
52000
class ExtACSyntaxCoupling;
 
52001
class ExtACTree;
 
52002
class ExtACKeywords;
 
52003
class ExtGnu;
 
52004
class PragmaOnceUnitState;
 
52005
class PragmaOnce;
 
52006
class CMatchSyntax;
 
52007
namespace Puma {
 
52008
 
 
52009
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52010
 
 
52011
#line 52012 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52012
} // closed Puma
 
52013
 
 
52014
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52015
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52016
#include "CCExprResolveH.ah"
 
52017
#endif
 
52018
namespace Puma {
 
52019
 
 
52020
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52021
 
 
52022
#line 52023 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52023
} // closed Puma
 
52024
 
 
52025
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52026
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52027
#include "CExprResolveH.ah"
 
52028
#endif
 
52029
namespace Puma {
 
52030
 
 
52031
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52032
class CT_ReintCast : public CT_StaticCast {
 
52033
#line 52034 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52034
  friend class ::CCExprResolve;
 
52035
  friend class ::CExprResolve;
 
52036
  friend class ::WinIfExists;
 
52037
  friend class ::WinImportHandler;
 
52038
  friend class ::WinMacros;
 
52039
  friend class ::WinAsm;
 
52040
  friend class ::WinDeclSpecs;
 
52041
  friend class ::WinMemberExplSpec;
 
52042
  friend class ::WinTypeKeywords;
 
52043
  friend class ::WinFriend;
 
52044
  friend class ::ExtAC;
 
52045
  friend class ::ExtACBuilderCoupling;
 
52046
  friend class ::ExtACSyntaxCoupling;
 
52047
  friend class ::ExtACTree;
 
52048
  friend class ::ExtACKeywords;
 
52049
  friend class ::ExtGnu;
 
52050
  friend class ::PragmaOnceUnitState;
 
52051
  friend class ::PragmaOnce;
 
52052
  friend class ::CMatchSyntax;
 
52053
 
 
52054
#line 1747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52055
 
 
52056
public:
 
52057
  /** Constructor.
 
52058
   *  \param cst The cast operator, i.e. 'reinterpret_cast'.
 
52059
   *  \param o Left arrow bracket of the type name.
 
52060
   *  \param t The type to cast to.
 
52061
   *  \param c Right array bracket of the type name.
 
52062
   *  \param e The expression to cast. */
 
52063
  CT_ReintCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
52064
    CT_StaticCast (cst, o, t, c, e) {}
 
52065
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52066
  static const char *NodeId ();
 
52067
  /** Get the name of the node. Can be compared with NodeId(). */
 
52068
  const char *NodeName () const { return NodeId (); }
 
52069
   private:
 
52070
  typedef CT_ReintCast CCExprResolveExpr;
 
52071
 
 
52072
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52073
 public :
 
52074
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52075
  typedef CT_ReintCast CExprResolveExpr;
 
52076
 
 
52077
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52078
 public :
 
52079
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52080
  typedef AC::TLE __AttrTypes;
 
52081
  const char *__attr_name (unsigned i) const { return 0; }
 
52082
  const void *__attr (unsigned __i) const { return 0; }
 
52083
#line 1761 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52084
};
 
52085
 
 
52086
/** \class CT_DynamicCast CTree.h Puma/CTree.h
 
52087
 *  Tree node representing a dynamic cast.
 
52088
 *  Example: \code dynamic_cast<int>(a) \endcode */
 
52089
 
 
52090
#line 52091 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52091
} // closed Puma
 
52092
class CCExprResolve;
 
52093
class CExprResolve;
 
52094
class WinIfExists;
 
52095
class WinImportHandler;
 
52096
class WinMacros;
 
52097
class WinAsm;
 
52098
class WinDeclSpecs;
 
52099
class WinMemberExplSpec;
 
52100
class WinTypeKeywords;
 
52101
class WinFriend;
 
52102
class ExtAC;
 
52103
class ExtACBuilderCoupling;
 
52104
class ExtACSyntaxCoupling;
 
52105
class ExtACTree;
 
52106
class ExtACKeywords;
 
52107
class ExtGnu;
 
52108
class PragmaOnceUnitState;
 
52109
class PragmaOnce;
 
52110
class CMatchSyntax;
 
52111
namespace Puma {
 
52112
 
 
52113
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52114
 
 
52115
#line 52116 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52116
} // closed Puma
 
52117
 
 
52118
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52119
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52120
#include "CCExprResolveH.ah"
 
52121
#endif
 
52122
namespace Puma {
 
52123
 
 
52124
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52125
 
 
52126
#line 52127 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52127
} // closed Puma
 
52128
 
 
52129
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52130
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52131
#include "CExprResolveH.ah"
 
52132
#endif
 
52133
namespace Puma {
 
52134
 
 
52135
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52136
class CT_DynamicCast : public CT_StaticCast {
 
52137
#line 52138 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52138
  friend class ::CCExprResolve;
 
52139
  friend class ::CExprResolve;
 
52140
  friend class ::WinIfExists;
 
52141
  friend class ::WinImportHandler;
 
52142
  friend class ::WinMacros;
 
52143
  friend class ::WinAsm;
 
52144
  friend class ::WinDeclSpecs;
 
52145
  friend class ::WinMemberExplSpec;
 
52146
  friend class ::WinTypeKeywords;
 
52147
  friend class ::WinFriend;
 
52148
  friend class ::ExtAC;
 
52149
  friend class ::ExtACBuilderCoupling;
 
52150
  friend class ::ExtACSyntaxCoupling;
 
52151
  friend class ::ExtACTree;
 
52152
  friend class ::ExtACKeywords;
 
52153
  friend class ::ExtGnu;
 
52154
  friend class ::PragmaOnceUnitState;
 
52155
  friend class ::PragmaOnce;
 
52156
  friend class ::CMatchSyntax;
 
52157
 
 
52158
#line 1766 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52159
 
 
52160
public:
 
52161
  /** Constructor.
 
52162
   *  \param cst The cast operator, i.e. 'dynamic_cast'.
 
52163
   *  \param o Left arrow bracket of the type name.
 
52164
   *  \param t The type to cast to.
 
52165
   *  \param c Right array bracket of the type name.
 
52166
   *  \param e The expression to cast. */
 
52167
  CT_DynamicCast (CTree *cst, CTree *o, CTree *t, CTree *c, CTree *e) :
 
52168
    CT_StaticCast (cst, o, t, c, e) {}
 
52169
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52170
  static const char *NodeId ();
 
52171
  /** Get the name of the node. Can be compared with NodeId(). */
 
52172
  const char *NodeName () const { return NodeId (); }
 
52173
   private:
 
52174
  typedef CT_DynamicCast CCExprResolveExpr;
 
52175
 
 
52176
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52177
 public :
 
52178
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52179
  typedef CT_DynamicCast CExprResolveExpr;
 
52180
 
 
52181
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52182
 public :
 
52183
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52184
  typedef AC::TLE __AttrTypes;
 
52185
  const char *__attr_name (unsigned i) const { return 0; }
 
52186
  const void *__attr (unsigned __i) const { return 0; }
 
52187
#line 1780 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52188
};
 
52189
 
 
52190
/** \class CT_ImplicitCast CTree.h Puma/CTree.h
 
52191
 *  Tree node representing an implicit cast.
 
52192
 *  Example: 
 
52193
 *  \code 
 
52194
 * int i = 1.2;  // implicit cast from float to int 
 
52195
 *  \endcode */
 
52196
 
 
52197
#line 52198 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52198
} // closed Puma
 
52199
class CCExprResolve;
 
52200
class CExprResolve;
 
52201
class WinIfExists;
 
52202
class WinImportHandler;
 
52203
class WinMacros;
 
52204
class WinAsm;
 
52205
class WinDeclSpecs;
 
52206
class WinMemberExplSpec;
 
52207
class WinTypeKeywords;
 
52208
class WinFriend;
 
52209
class ExtAC;
 
52210
class ExtACBuilderCoupling;
 
52211
class ExtACSyntaxCoupling;
 
52212
class ExtACTree;
 
52213
class ExtACKeywords;
 
52214
class ExtGnu;
 
52215
class PragmaOnceUnitState;
 
52216
class PragmaOnce;
 
52217
class CMatchSyntax;
 
52218
namespace Puma {
 
52219
 
 
52220
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52221
 
 
52222
#line 52223 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52223
} // closed Puma
 
52224
 
 
52225
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52226
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52227
#include "CCExprResolveH.ah"
 
52228
#endif
 
52229
namespace Puma {
 
52230
 
 
52231
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52232
 
 
52233
#line 52234 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52234
} // closed Puma
 
52235
 
 
52236
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52237
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52238
#include "CExprResolveH.ah"
 
52239
#endif
 
52240
namespace Puma {
 
52241
 
 
52242
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52243
class CT_ImplicitCast : public CT_Expression {
 
52244
#line 52245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52245
  friend class ::CCExprResolve;
 
52246
  friend class ::CExprResolve;
 
52247
  friend class ::WinIfExists;
 
52248
  friend class ::WinImportHandler;
 
52249
  friend class ::WinMacros;
 
52250
  friend class ::WinAsm;
 
52251
  friend class ::WinDeclSpecs;
 
52252
  friend class ::WinMemberExplSpec;
 
52253
  friend class ::WinTypeKeywords;
 
52254
  friend class ::WinFriend;
 
52255
  friend class ::ExtAC;
 
52256
  friend class ::ExtACBuilderCoupling;
 
52257
  friend class ::ExtACSyntaxCoupling;
 
52258
  friend class ::ExtACTree;
 
52259
  friend class ::ExtACKeywords;
 
52260
  friend class ::ExtGnu;
 
52261
  friend class ::PragmaOnceUnitState;
 
52262
  friend class ::PragmaOnce;
 
52263
  friend class ::CMatchSyntax;
 
52264
 
 
52265
#line 1788 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52266
 
 
52267
  CTree *_expr; // casted expression
 
52268
 
 
52269
public:
 
52270
  /** Constructor.
 
52271
   *  \param e The expression that is implicitely casted. */
 
52272
  CT_ImplicitCast (CTree *e) { AddSon (_expr, e); }
 
52273
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52274
  static const char *NodeId ();
 
52275
  /** Get the name of the node. Can be compared with NodeId(). */
 
52276
  const char *NodeName () const { return NodeId (); }
 
52277
  /** Get the number of sons. */
 
52278
  int Sons () const { return 1; }
 
52279
  /** Get the n-th son.
 
52280
   *  \param n The index of the son.
 
52281
   *  \return The n-th son or NULL. */
 
52282
  CTree *Son (int n) const { return n == 0 ? _expr : (CTree*)0; }
 
52283
  /** Get the casted expression. */
 
52284
  CTree *Expr () const { return _expr; }
 
52285
  /** Replace a son.
 
52286
   *  \param old_son The son to replace.
 
52287
   *  \param new_son The new son. */
 
52288
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
52289
   { CTree::ReplaceSon (_expr, old_son, new_son); }
 
52290
   private:
 
52291
  typedef CT_ImplicitCast CCExprResolveExpr;
 
52292
 
 
52293
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52294
 public :
 
52295
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52296
  typedef CT_ImplicitCast CExprResolveExpr;
 
52297
 
 
52298
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52299
 public :
 
52300
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52301
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
52302
  const char *__attr_name (unsigned i) const {
 
52303
    static const char *names[] = { "_expr" }; return names[i];
 
52304
  }
 
52305
  const void *__attr (unsigned __i) const {
 
52306
    switch (__i) { case 0: return &_expr; default: return 0; }
 
52307
  }
 
52308
#line 1812 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52309
};
 
52310
 
 
52311
/** \class CT_TypeidExpr CTree.h Puma/CTree.h
 
52312
 *  Tree node representing a typeid expression.
 
52313
 *  Example: \code typeid(X) \endcode */
 
52314
 
 
52315
#line 52316 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52316
} // closed Puma
 
52317
class CCExprResolve;
 
52318
class CExprResolve;
 
52319
class WinIfExists;
 
52320
class WinImportHandler;
 
52321
class WinMacros;
 
52322
class WinAsm;
 
52323
class WinDeclSpecs;
 
52324
class WinMemberExplSpec;
 
52325
class WinTypeKeywords;
 
52326
class WinFriend;
 
52327
class ExtAC;
 
52328
class ExtACBuilderCoupling;
 
52329
class ExtACSyntaxCoupling;
 
52330
class ExtACTree;
 
52331
class ExtACKeywords;
 
52332
class ExtGnu;
 
52333
class PragmaOnceUnitState;
 
52334
class PragmaOnce;
 
52335
class CMatchSyntax;
 
52336
namespace Puma {
 
52337
 
 
52338
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52339
 
 
52340
#line 52341 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52341
} // closed Puma
 
52342
 
 
52343
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52344
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52345
#include "CCExprResolveH.ah"
 
52346
#endif
 
52347
namespace Puma {
 
52348
 
 
52349
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52350
 
 
52351
#line 52352 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52352
} // closed Puma
 
52353
 
 
52354
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52355
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52356
#include "CExprResolveH.ah"
 
52357
#endif
 
52358
namespace Puma {
 
52359
 
 
52360
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52361
class CT_TypeidExpr : public CT_Expression {
 
52362
#line 52363 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52363
  friend class ::CCExprResolve;
 
52364
  friend class ::CExprResolve;
 
52365
  friend class ::WinIfExists;
 
52366
  friend class ::WinImportHandler;
 
52367
  friend class ::WinMacros;
 
52368
  friend class ::WinAsm;
 
52369
  friend class ::WinDeclSpecs;
 
52370
  friend class ::WinMemberExplSpec;
 
52371
  friend class ::WinTypeKeywords;
 
52372
  friend class ::WinFriend;
 
52373
  friend class ::ExtAC;
 
52374
  friend class ::ExtACBuilderCoupling;
 
52375
  friend class ::ExtACSyntaxCoupling;
 
52376
  friend class ::ExtACTree;
 
52377
  friend class ::ExtACKeywords;
 
52378
  friend class ::ExtGnu;
 
52379
  friend class ::PragmaOnceUnitState;
 
52380
  friend class ::PragmaOnce;
 
52381
  friend class ::CMatchSyntax;
 
52382
 
 
52383
#line 1817 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52384
 
 
52385
  CTree *sons[4]; // typeid, open, type_id/expr, close
 
52386
 
 
52387
public:
 
52388
  /** Constructor.
 
52389
   *  \param tid The 'typeid' operator.
 
52390
   *  \param o The left parenthesis of the type name or expression.
 
52391
   *  \param e The expression or type name for which to get the type identifier.
 
52392
   *  \param c The right parenthesis of the type name or expression. */
 
52393
  CT_TypeidExpr (CTree *tid, CTree *o, CTree *e, CTree *c) {
 
52394
    AddSon (sons[0], tid); AddSon (sons[1], o); 
 
52395
    AddSon (sons[2], e); AddSon (sons[3], c);
 
52396
  }
 
52397
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52398
  static const char *NodeId ();
 
52399
  /** Get the name of the node. Can be compared with NodeId(). */
 
52400
  const char *NodeName () const { return NodeId (); }
 
52401
  /** Get the number of sons. */
 
52402
  int Sons () const { return 4; }
 
52403
  /** Get the n-th son.
 
52404
   *  \param n The index of the son.
 
52405
   *  \return The n-th son or NULL. */
 
52406
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
52407
  /** Replace a son.
 
52408
   *  \param old_son The son to replace.
 
52409
   *  \param new_son The new son. */
 
52410
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
52411
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
52412
  }
 
52413
  /** Get the typeid argument, i.e. the expression or type name for
 
52414
   *  which to get the type identifier. */
 
52415
  CTree *Arg () const { return sons[2]; }
 
52416
   private:
 
52417
  typedef CT_TypeidExpr CCExprResolveExpr;
 
52418
 
 
52419
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52420
 public :
 
52421
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52422
  typedef CT_TypeidExpr CExprResolveExpr;
 
52423
 
 
52424
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52425
 public :
 
52426
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52427
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
52428
  const char *__attr_name (unsigned i) const {
 
52429
    static const char *names[] = { "sons" }; return names[i];
 
52430
  }
 
52431
  const void *__attr (unsigned __i) const {
 
52432
    switch (__i) { case 0: return &sons; default: return 0; }
 
52433
  }
 
52434
#line 1849 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52435
};
 
52436
 
 
52437
/** \class CT_SizeofExpr CTree.h Puma/CTree.h
 
52438
 *  Tree node representing a sizeof expression.
 
52439
 *  Example: \code sizeof(int*) \endcode */
 
52440
 
 
52441
#line 52442 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52442
} // closed Puma
 
52443
class CCExprResolve;
 
52444
class CExprResolve;
 
52445
class WinIfExists;
 
52446
class WinImportHandler;
 
52447
class WinMacros;
 
52448
class WinAsm;
 
52449
class WinDeclSpecs;
 
52450
class WinMemberExplSpec;
 
52451
class WinTypeKeywords;
 
52452
class WinFriend;
 
52453
class ExtAC;
 
52454
class ExtACBuilderCoupling;
 
52455
class ExtACSyntaxCoupling;
 
52456
class ExtACTree;
 
52457
class ExtACKeywords;
 
52458
class ExtGnu;
 
52459
class PragmaOnceUnitState;
 
52460
class PragmaOnce;
 
52461
class CMatchSyntax;
 
52462
namespace Puma {
 
52463
 
 
52464
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52465
 
 
52466
#line 52467 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52467
} // closed Puma
 
52468
 
 
52469
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52470
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52471
#include "CCExprResolveH.ah"
 
52472
#endif
 
52473
namespace Puma {
 
52474
 
 
52475
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52476
 
 
52477
#line 52478 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52478
} // closed Puma
 
52479
 
 
52480
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52481
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52482
#include "CExprResolveH.ah"
 
52483
#endif
 
52484
namespace Puma {
 
52485
 
 
52486
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52487
class CT_SizeofExpr : public CT_Expression {
 
52488
#line 52489 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52489
  friend class ::CCExprResolve;
 
52490
  friend class ::CExprResolve;
 
52491
  friend class ::WinIfExists;
 
52492
  friend class ::WinImportHandler;
 
52493
  friend class ::WinMacros;
 
52494
  friend class ::WinAsm;
 
52495
  friend class ::WinDeclSpecs;
 
52496
  friend class ::WinMemberExplSpec;
 
52497
  friend class ::WinTypeKeywords;
 
52498
  friend class ::WinFriend;
 
52499
  friend class ::ExtAC;
 
52500
  friend class ::ExtACBuilderCoupling;
 
52501
  friend class ::ExtACSyntaxCoupling;
 
52502
  friend class ::ExtACTree;
 
52503
  friend class ::ExtACKeywords;
 
52504
  friend class ::ExtGnu;
 
52505
  friend class ::PragmaOnceUnitState;
 
52506
  friend class ::PragmaOnce;
 
52507
  friend class ::CMatchSyntax;
 
52508
 
 
52509
#line 1854 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52510
 
 
52511
  CTree *sons[5]; // key, open, type, close, expr
 
52512
 
 
52513
public:
 
52514
  /** Constructor.
 
52515
   *  \param k The 'sizeof' keyword.
 
52516
   *  \param o Left parenthesis around the type name.
 
52517
   *  \param t The type from which to get the size.
 
52518
   *  \param c Right parenthesis around the type name. */
 
52519
  CT_SizeofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
52520
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
52521
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
52522
  }
 
52523
  /** Constructor.
 
52524
   *  \param k The 'sizeof' keyword.
 
52525
   *  \param e The expression from which to get the size. */
 
52526
  CT_SizeofExpr (CTree *k, CTree *e) {
 
52527
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
52528
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
52529
  }
 
52530
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52531
  static const char *NodeId ();
 
52532
  /** Get the name of the node. Can be compared with NodeId(). */
 
52533
  const char *NodeName () const { return NodeId (); }
 
52534
  /** Get the number of sons. */
 
52535
  int Sons () const { return CTree::Sons (sons, 5); }
 
52536
  /** Get the n-th son.
 
52537
   *  \param n The index of the son.
 
52538
   *  \return The n-th son or NULL. */
 
52539
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
52540
  /** Replace a son.
 
52541
   *  \param old_son The son to replace.
 
52542
   *  \param new_son The new son. */
 
52543
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
52544
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
52545
  }
 
52546
  /** Get the expression. */
 
52547
  CTree *Expr () const { return sons[4]; }
 
52548
  /** Get the type name. */
 
52549
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
52550
   private:
 
52551
  typedef CT_SizeofExpr CCExprResolveExpr;
 
52552
 
 
52553
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52554
 public :
 
52555
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52556
  typedef CT_SizeofExpr CExprResolveExpr;
 
52557
 
 
52558
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52559
 public :
 
52560
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52561
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
52562
  const char *__attr_name (unsigned i) const {
 
52563
    static const char *names[] = { "sons" }; return names[i];
 
52564
  }
 
52565
  const void *__attr (unsigned __i) const {
 
52566
    switch (__i) { case 0: return &sons; default: return 0; }
 
52567
  }
 
52568
#line 1894 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52569
};
 
52570
 
 
52571
/** \class CT_AlignofExpr CTree.h Puma/CTree.h
 
52572
 *  Tree node representing an alignof expression.
 
52573
 *  Example: \code __alignof(int) \endcode */
 
52574
 
 
52575
#line 52576 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52576
} // closed Puma
 
52577
class CCExprResolve;
 
52578
class CExprResolve;
 
52579
class WinIfExists;
 
52580
class WinImportHandler;
 
52581
class WinMacros;
 
52582
class WinAsm;
 
52583
class WinDeclSpecs;
 
52584
class WinMemberExplSpec;
 
52585
class WinTypeKeywords;
 
52586
class WinFriend;
 
52587
class ExtAC;
 
52588
class ExtACBuilderCoupling;
 
52589
class ExtACSyntaxCoupling;
 
52590
class ExtACTree;
 
52591
class ExtACKeywords;
 
52592
class ExtGnu;
 
52593
class PragmaOnceUnitState;
 
52594
class PragmaOnce;
 
52595
class CMatchSyntax;
 
52596
namespace Puma {
 
52597
 
 
52598
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52599
 
 
52600
#line 52601 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52601
} // closed Puma
 
52602
 
 
52603
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52604
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52605
#include "CCExprResolveH.ah"
 
52606
#endif
 
52607
namespace Puma {
 
52608
 
 
52609
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52610
 
 
52611
#line 52612 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52612
} // closed Puma
 
52613
 
 
52614
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52615
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52616
#include "CExprResolveH.ah"
 
52617
#endif
 
52618
namespace Puma {
 
52619
 
 
52620
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52621
class CT_AlignofExpr : public CT_Expression {
 
52622
#line 52623 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52623
  friend class ::CCExprResolve;
 
52624
  friend class ::CExprResolve;
 
52625
  friend class ::WinIfExists;
 
52626
  friend class ::WinImportHandler;
 
52627
  friend class ::WinMacros;
 
52628
  friend class ::WinAsm;
 
52629
  friend class ::WinDeclSpecs;
 
52630
  friend class ::WinMemberExplSpec;
 
52631
  friend class ::WinTypeKeywords;
 
52632
  friend class ::WinFriend;
 
52633
  friend class ::ExtAC;
 
52634
  friend class ::ExtACBuilderCoupling;
 
52635
  friend class ::ExtACSyntaxCoupling;
 
52636
  friend class ::ExtACTree;
 
52637
  friend class ::ExtACKeywords;
 
52638
  friend class ::ExtGnu;
 
52639
  friend class ::PragmaOnceUnitState;
 
52640
  friend class ::PragmaOnce;
 
52641
  friend class ::CMatchSyntax;
 
52642
 
 
52643
#line 1899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52644
 
 
52645
  CTree *sons[5]; // key, open, type, close, expr
 
52646
 
 
52647
public:
 
52648
  /** Constructor.
 
52649
   *  \param k The 'alignof' keyword.
 
52650
   *  \param o Left parenthesis around the type name.
 
52651
   *  \param t The type from which to get the alignment.
 
52652
   *  \param c Right parenthesis around the type name. */
 
52653
  CT_AlignofExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
52654
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
52655
    AddSon (sons[3], c); AddSon (sons[4], 0);
 
52656
  }
 
52657
  /** Constructor.
 
52658
   *  \param k The 'alignof' keyword.
 
52659
   *  \param e The expression from which to get the alignment. */
 
52660
  CT_AlignofExpr (CTree *k, CTree *e) {
 
52661
    AddSon (sons[0], k); AddSon (sons[1], 0); AddSon (sons[2], 0); 
 
52662
    AddSon (sons[3], 0); AddSon (sons[4], e);
 
52663
  }
 
52664
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52665
  static const char *NodeId ();
 
52666
  /** Get the name of the node. Can be compared with NodeId(). */
 
52667
  const char *NodeName () const { return NodeId (); }
 
52668
  /** Get the number of sons. */
 
52669
  int Sons () const { return CTree::Sons (sons, 5); }
 
52670
  /** Get the n-th son.
 
52671
   *  \param n The index of the son.
 
52672
   *  \return The n-th son or NULL. */
 
52673
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
52674
  /** Replace a son.
 
52675
   *  \param old_son The son to replace.
 
52676
   *  \param new_son The new son. */
 
52677
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
52678
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
52679
  }
 
52680
  /** Get the expression. */
 
52681
  CTree *Expr () const { return sons[4]; }
 
52682
  /** Get the type name. */
 
52683
  CT_NamedType *TypeName () const { return (CT_NamedType*)sons[2]; }
 
52684
   private:
 
52685
  typedef CT_AlignofExpr CCExprResolveExpr;
 
52686
 
 
52687
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52688
 public :
 
52689
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52690
  typedef CT_AlignofExpr CExprResolveExpr;
 
52691
 
 
52692
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52693
 public :
 
52694
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52695
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
52696
  const char *__attr_name (unsigned i) const {
 
52697
    static const char *names[] = { "sons" }; return names[i];
 
52698
  }
 
52699
  const void *__attr (unsigned __i) const {
 
52700
    switch (__i) { case 0: return &sons; default: return 0; }
 
52701
  }
 
52702
#line 1939 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52703
};
 
52704
 
 
52705
/** \class CT_TypeTraitExpr CTree.h Puma/CTree.h
 
52706
 *  Tree node representing an type trait expression.
 
52707
 *  Example: \code __is_enum(E) \endcode */
 
52708
 
 
52709
#line 52710 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52710
} // closed Puma
 
52711
class CCExprResolve;
 
52712
class CExprResolve;
 
52713
class WinIfExists;
 
52714
class WinImportHandler;
 
52715
class WinMacros;
 
52716
class WinAsm;
 
52717
class WinDeclSpecs;
 
52718
class WinMemberExplSpec;
 
52719
class WinTypeKeywords;
 
52720
class WinFriend;
 
52721
class ExtAC;
 
52722
class ExtACBuilderCoupling;
 
52723
class ExtACSyntaxCoupling;
 
52724
class ExtACTree;
 
52725
class ExtACKeywords;
 
52726
class ExtGnu;
 
52727
class PragmaOnceUnitState;
 
52728
class PragmaOnce;
 
52729
class CMatchSyntax;
 
52730
namespace Puma {
 
52731
 
 
52732
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52733
 
 
52734
#line 52735 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52735
} // closed Puma
 
52736
 
 
52737
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52738
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52739
#include "CCExprResolveH.ah"
 
52740
#endif
 
52741
namespace Puma {
 
52742
 
 
52743
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52744
 
 
52745
#line 52746 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52746
} // closed Puma
 
52747
 
 
52748
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52749
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52750
#include "CExprResolveH.ah"
 
52751
#endif
 
52752
namespace Puma {
 
52753
 
 
52754
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52755
class CT_TypeTraitExpr : public CT_Expression {
 
52756
#line 52757 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52757
  friend class ::CCExprResolve;
 
52758
  friend class ::CExprResolve;
 
52759
  friend class ::WinIfExists;
 
52760
  friend class ::WinImportHandler;
 
52761
  friend class ::WinMacros;
 
52762
  friend class ::WinAsm;
 
52763
  friend class ::WinDeclSpecs;
 
52764
  friend class ::WinMemberExplSpec;
 
52765
  friend class ::WinTypeKeywords;
 
52766
  friend class ::WinFriend;
 
52767
  friend class ::ExtAC;
 
52768
  friend class ::ExtACBuilderCoupling;
 
52769
  friend class ::ExtACSyntaxCoupling;
 
52770
  friend class ::ExtACTree;
 
52771
  friend class ::ExtACKeywords;
 
52772
  friend class ::ExtGnu;
 
52773
  friend class ::PragmaOnceUnitState;
 
52774
  friend class ::PragmaOnce;
 
52775
  friend class ::CMatchSyntax;
 
52776
 
 
52777
#line 1944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52778
 
 
52779
  CTree *sons[6]; // key, open, type, comma, type, close
 
52780
 
 
52781
public:
 
52782
  /** Constructor.
 
52783
   *  \param k The type trait keyword.
 
52784
   *  \param o Left parenthesis around the type name.
 
52785
   *  \param t The type from which to get the trait.
 
52786
   *  \param c Right parenthesis around the type name. */
 
52787
  CT_TypeTraitExpr (CTree *k, CTree *o, CTree *t, CTree *c) {
 
52788
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t);
 
52789
    AddSon (sons[3], 0); AddSon (sons[4], 0); AddSon (sons[5], c);
 
52790
  }
 
52791
  /** Constructor.
 
52792
   *  \param k The type trait keyword.
 
52793
   *  \param o Left parenthesis around the type name.
 
52794
   *  \param t1 The first type from which to get the trait.
 
52795
   *  \param cc The comma between the types.
 
52796
   *  \param t2 The second type from which to get the trait.
 
52797
   *  \param c Right parenthesis around the type name. */
 
52798
  CT_TypeTraitExpr (CTree *k, CTree *o, CTree *t1, CTree *cc, CTree *t2, CTree *c) {
 
52799
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t1);
 
52800
    AddSon (sons[3], cc); AddSon (sons[4], t2); AddSon (sons[5], c);
 
52801
  }
 
52802
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52803
  static const char *NodeId ();
 
52804
  /** Get the name of the node. Can be compared with NodeId(). */
 
52805
  const char *NodeName () const { return NodeId (); }
 
52806
  /** Get the number of sons. */
 
52807
  int Sons () const { return CTree::Sons (sons, 6); }
 
52808
  /** Get the n-th son.
 
52809
   *  \param n The index of the son.
 
52810
   *  \return The n-th son or NULL. */
 
52811
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
52812
  /** Replace a son.
 
52813
   *  \param old_son The son to replace.
 
52814
   *  \param new_son The new son. */
 
52815
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
52816
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
52817
  }
 
52818
  /** Get the type trait operator. */
 
52819
  int Operator () const { return sons[0]->token ()->type (); }
 
52820
  /** Get the first type. */
 
52821
  CT_NamedType *FirstType () const { return (CT_NamedType*)sons[2]; }
 
52822
  /** Get the second type. */
 
52823
  CT_NamedType *SecondType () const { return (CT_NamedType*)sons[4]; }
 
52824
   private:
 
52825
  typedef CT_TypeTraitExpr CCExprResolveExpr;
 
52826
 
 
52827
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52828
 public :
 
52829
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52830
  typedef CT_TypeTraitExpr CExprResolveExpr;
 
52831
 
 
52832
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52833
 public :
 
52834
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52835
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
52836
  const char *__attr_name (unsigned i) const {
 
52837
    static const char *names[] = { "sons" }; return names[i];
 
52838
  }
 
52839
  const void *__attr (unsigned __i) const {
 
52840
    switch (__i) { case 0: return &sons; default: return 0; }
 
52841
  }
 
52842
#line 1990 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52843
};
 
52844
 
 
52845
/** \class CT_OffsetofExpr CTree.h Puma/CTree.h
 
52846
 *  Tree node representing an offsetof expression.
 
52847
 *  Example: \code offsetof(Circle,radius) \endcode */
 
52848
 
 
52849
#line 52850 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52850
} // closed Puma
 
52851
class CCExprResolve;
 
52852
class CExprResolve;
 
52853
class WinIfExists;
 
52854
class WinImportHandler;
 
52855
class WinMacros;
 
52856
class WinAsm;
 
52857
class WinDeclSpecs;
 
52858
class WinMemberExplSpec;
 
52859
class WinTypeKeywords;
 
52860
class WinFriend;
 
52861
class ExtAC;
 
52862
class ExtACBuilderCoupling;
 
52863
class ExtACSyntaxCoupling;
 
52864
class ExtACTree;
 
52865
class ExtACKeywords;
 
52866
class ExtGnu;
 
52867
class PragmaOnceUnitState;
 
52868
class PragmaOnce;
 
52869
class CMatchSyntax;
 
52870
namespace Puma {
 
52871
 
 
52872
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52873
 
 
52874
#line 52875 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52875
} // closed Puma
 
52876
 
 
52877
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52878
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
52879
#include "CCExprResolveH.ah"
 
52880
#endif
 
52881
namespace Puma {
 
52882
 
 
52883
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52884
 
 
52885
#line 52886 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52886
} // closed Puma
 
52887
 
 
52888
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52889
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
52890
#include "CExprResolveH.ah"
 
52891
#endif
 
52892
namespace Puma {
 
52893
 
 
52894
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52895
class CT_OffsetofExpr : public CT_Expression {
 
52896
#line 52897 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52897
  friend class ::CCExprResolve;
 
52898
  friend class ::CExprResolve;
 
52899
  friend class ::WinIfExists;
 
52900
  friend class ::WinImportHandler;
 
52901
  friend class ::WinMacros;
 
52902
  friend class ::WinAsm;
 
52903
  friend class ::WinDeclSpecs;
 
52904
  friend class ::WinMemberExplSpec;
 
52905
  friend class ::WinTypeKeywords;
 
52906
  friend class ::WinFriend;
 
52907
  friend class ::ExtAC;
 
52908
  friend class ::ExtACBuilderCoupling;
 
52909
  friend class ::ExtACSyntaxCoupling;
 
52910
  friend class ::ExtACTree;
 
52911
  friend class ::ExtACKeywords;
 
52912
  friend class ::ExtGnu;
 
52913
  friend class ::PragmaOnceUnitState;
 
52914
  friend class ::PragmaOnce;
 
52915
  friend class ::CMatchSyntax;
 
52916
 
 
52917
#line 1995 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52918
 
 
52919
  CTree *sons[6]; // key, open, type, comma, member, close
 
52920
 
 
52921
public:
 
52922
  /** Constructor.
 
52923
   *  \param k The 'offsetof' keyword.
 
52924
   *  \param o Left parenthesis around the parameters.
 
52925
   *  \param t The type containing the member.
 
52926
   *  \param co The comma between type and member.
 
52927
   *  \param m The member for which to get the offset.
 
52928
   *  \param c Right parenthesis around the parameters. */
 
52929
  CT_OffsetofExpr (CTree *k, CTree *o, CTree *t, CTree *co, CTree *m, CTree *c) {
 
52930
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], t); 
 
52931
    AddSon (sons[3], co); AddSon (sons[4], m); AddSon (sons[5], c);
 
52932
  }
 
52933
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
52934
  static const char *NodeId ();
 
52935
  /** Get the name of the node. Can be compared with NodeId(). */
 
52936
  const char *NodeName () const { return NodeId (); }
 
52937
  /** Get the number of sons. */
 
52938
  int Sons () const { return 6; }
 
52939
  /** Get the n-th son.
 
52940
   *  \param n The index of the son.
 
52941
   *  \return The n-th son or NULL. */
 
52942
  CTree *Son (int n) const { return CTree::Son (sons, 6, n); }
 
52943
  /** Replace a son.
 
52944
   *  \param old_son The son to replace.
 
52945
   *  \param new_son The new son. */
 
52946
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
52947
    CTree::ReplaceSon (sons, 6, old_son, new_son);
 
52948
  }
 
52949
  /** Get the typename. */
 
52950
  CTree *TypeName () const { return sons[2]; }
 
52951
  /** Get the member designator. */
 
52952
  CT_DesignatorSeq *MemberDesignator () const { return (CT_DesignatorSeq*)sons[4]; }
 
52953
   private:
 
52954
  typedef CT_OffsetofExpr CCExprResolveExpr;
 
52955
 
 
52956
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
52957
 public :
 
52958
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
52959
  typedef CT_OffsetofExpr CExprResolveExpr;
 
52960
 
 
52961
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
52962
 public :
 
52963
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
52964
  typedef AC::TL<Puma::CTree * [6],AC::TLE > __AttrTypes;
 
52965
  const char *__attr_name (unsigned i) const {
 
52966
    static const char *names[] = { "sons" }; return names[i];
 
52967
  }
 
52968
  const void *__attr (unsigned __i) const {
 
52969
    switch (__i) { case 0: return &sons; default: return 0; }
 
52970
  }
 
52971
#line 2030 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
52972
};
 
52973
 
 
52974
/** \class CT_IndexDesignator CTree.h Puma/CTree.h
 
52975
 *  Tree node representing an index designator.
 
52976
 *  Example: \code [1] \endcode */
 
52977
 
 
52978
#line 52979 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
52979
} // closed Puma
 
52980
class CCExprResolve;
 
52981
class CExprResolve;
 
52982
class WinIfExists;
 
52983
class WinImportHandler;
 
52984
class WinMacros;
 
52985
class WinAsm;
 
52986
class WinDeclSpecs;
 
52987
class WinMemberExplSpec;
 
52988
class WinTypeKeywords;
 
52989
class WinFriend;
 
52990
class ExtAC;
 
52991
class ExtACBuilderCoupling;
 
52992
class ExtACSyntaxCoupling;
 
52993
class ExtACTree;
 
52994
class ExtACKeywords;
 
52995
class ExtGnu;
 
52996
class PragmaOnceUnitState;
 
52997
class PragmaOnce;
 
52998
class CMatchSyntax;
 
52999
namespace Puma {
 
53000
 
 
53001
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53002
 
 
53003
#line 53004 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53004
} // closed Puma
 
53005
 
 
53006
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53007
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53008
#include "CCExprResolveH.ah"
 
53009
#endif
 
53010
namespace Puma {
 
53011
 
 
53012
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53013
 
 
53014
#line 53015 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53015
} // closed Puma
 
53016
 
 
53017
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53018
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53019
#include "CExprResolveH.ah"
 
53020
#endif
 
53021
namespace Puma {
 
53022
 
 
53023
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53024
class CT_IndexDesignator : public CT_Expression {
 
53025
#line 53026 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53026
  friend class ::CCExprResolve;
 
53027
  friend class ::CExprResolve;
 
53028
  friend class ::WinIfExists;
 
53029
  friend class ::WinImportHandler;
 
53030
  friend class ::WinMacros;
 
53031
  friend class ::WinAsm;
 
53032
  friend class ::WinDeclSpecs;
 
53033
  friend class ::WinMemberExplSpec;
 
53034
  friend class ::WinTypeKeywords;
 
53035
  friend class ::WinFriend;
 
53036
  friend class ::ExtAC;
 
53037
  friend class ::ExtACBuilderCoupling;
 
53038
  friend class ::ExtACSyntaxCoupling;
 
53039
  friend class ::ExtACTree;
 
53040
  friend class ::ExtACKeywords;
 
53041
  friend class ::ExtGnu;
 
53042
  friend class ::PragmaOnceUnitState;
 
53043
  friend class ::PragmaOnce;
 
53044
  friend class ::CMatchSyntax;
 
53045
 
 
53046
#line 2035 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53047
 
 
53048
  CTree *sons[3]; // open, index, close
 
53049
 
 
53050
public:
 
53051
  /** Constructor.
 
53052
   *  \param o Left bracket of the index designator.
 
53053
   *  \param i The index expression.
 
53054
   *  \param c Right bracket of the index designator. */
 
53055
  CT_IndexDesignator (CTree *o, CTree *i, CTree *c) {
 
53056
    AddSon (sons[0], o); AddSon (sons[1], i); AddSon (sons[2], c);
 
53057
  }
 
53058
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53059
  static const char *NodeId ();
 
53060
  /** Get the name of the node. Can be compared with NodeId(). */
 
53061
  const char *NodeName () const { return NodeId (); }
 
53062
  /** Get the number of sons. */
 
53063
  int Sons () const { return 3; }
 
53064
  /** Get the n-th son.
 
53065
   *  \param n The index of the son.
 
53066
   *  \return The n-th son or NULL. */
 
53067
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
53068
  /** Replace a son.
 
53069
   *  \param old_son The son to replace.
 
53070
   *  \param new_son The new son. */
 
53071
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
53072
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
53073
  }
 
53074
   private:
 
53075
  typedef CT_IndexDesignator CCExprResolveExpr;
 
53076
 
 
53077
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53078
 public :
 
53079
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53080
  typedef CT_IndexDesignator CExprResolveExpr;
 
53081
 
 
53082
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53083
 public :
 
53084
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53085
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
53086
  const char *__attr_name (unsigned i) const {
 
53087
    static const char *names[] = { "sons" }; return names[i];
 
53088
  }
 
53089
  const void *__attr (unsigned __i) const {
 
53090
    switch (__i) { case 0: return &sons; default: return 0; }
 
53091
  }
 
53092
#line 2062 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53093
};
 
53094
 
 
53095
/** \class CT_MembDesignator CTree.h Puma/CTree.h
 
53096
 *  Tree node representing a member designator.
 
53097
 *  Example: \code .a \endcode */
 
53098
 
 
53099
#line 53100 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53100
} // closed Puma
 
53101
class CCExprResolve;
 
53102
class CExprResolve;
 
53103
class WinIfExists;
 
53104
class WinImportHandler;
 
53105
class WinMacros;
 
53106
class WinAsm;
 
53107
class WinDeclSpecs;
 
53108
class WinMemberExplSpec;
 
53109
class WinTypeKeywords;
 
53110
class WinFriend;
 
53111
class ExtAC;
 
53112
class ExtACBuilderCoupling;
 
53113
class ExtACSyntaxCoupling;
 
53114
class ExtACTree;
 
53115
class ExtACKeywords;
 
53116
class ExtGnu;
 
53117
class PragmaOnceUnitState;
 
53118
class PragmaOnce;
 
53119
class CMatchSyntax;
 
53120
namespace Puma {
 
53121
 
 
53122
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53123
 
 
53124
#line 53125 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53125
} // closed Puma
 
53126
 
 
53127
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53128
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
53129
#include "CCExprResolveH.ah"
 
53130
#endif
 
53131
namespace Puma {
 
53132
 
 
53133
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53134
 
 
53135
#line 53136 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53136
} // closed Puma
 
53137
 
 
53138
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53139
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
53140
#include "CExprResolveH.ah"
 
53141
#endif
 
53142
namespace Puma {
 
53143
 
 
53144
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53145
class CT_MembDesignator : public CT_Expression {
 
53146
#line 53147 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53147
  friend class ::CCExprResolve;
 
53148
  friend class ::CExprResolve;
 
53149
  friend class ::WinIfExists;
 
53150
  friend class ::WinImportHandler;
 
53151
  friend class ::WinMacros;
 
53152
  friend class ::WinAsm;
 
53153
  friend class ::WinDeclSpecs;
 
53154
  friend class ::WinMemberExplSpec;
 
53155
  friend class ::WinTypeKeywords;
 
53156
  friend class ::WinFriend;
 
53157
  friend class ::ExtAC;
 
53158
  friend class ::ExtACBuilderCoupling;
 
53159
  friend class ::ExtACSyntaxCoupling;
 
53160
  friend class ::ExtACTree;
 
53161
  friend class ::ExtACKeywords;
 
53162
  friend class ::ExtGnu;
 
53163
  friend class ::PragmaOnceUnitState;
 
53164
  friend class ::PragmaOnce;
 
53165
  friend class ::CMatchSyntax;
 
53166
 
 
53167
#line 2067 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53168
 
 
53169
  CTree *sons[2]; // dot, member
 
53170
 
 
53171
public:
 
53172
  /** Constructor.
 
53173
   *  \param d The dot before the member name.
 
53174
   *  \param m The member name. */
 
53175
  CT_MembDesignator (CTree *d, CTree *m) { AddSon (sons[0], d); AddSon (sons[1], m); }
 
53176
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53177
  static const char *NodeId ();
 
53178
  /** Get the name of the node. Can be compared with NodeId(). */
 
53179
  const char *NodeName () const { return NodeId (); }
 
53180
  /** Get the number of sons. */
 
53181
  int Sons () const { return 2; }
 
53182
  /** Get the n-th son.
 
53183
   *  \param n The index of the son.
 
53184
   *  \return The n-th son or NULL. */
 
53185
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
53186
  /** Replace a son.
 
53187
   *  \param old_son The son to replace.
 
53188
   *  \param new_son The new son. */
 
53189
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
53190
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
53191
  }
 
53192
   private:
 
53193
  typedef CT_MembDesignator CCExprResolveExpr;
 
53194
 
 
53195
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
53196
 public :
 
53197
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
53198
  typedef CT_MembDesignator CExprResolveExpr;
 
53199
 
 
53200
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
53201
 public :
 
53202
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
53203
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
53204
  const char *__attr_name (unsigned i) const {
 
53205
    static const char *names[] = { "sons" }; return names[i];
 
53206
  }
 
53207
  const void *__attr (unsigned __i) const {
 
53208
    switch (__i) { case 0: return &sons; default: return 0; }
 
53209
  }
 
53210
#line 2091 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53211
};
 
53212
 
 
53213
/** \class CT_DesignatorSeq CTree.h Puma/CTree.h
 
53214
 *  Tree node representing a designator sequence.
 
53215
 *  Example: \code .a.b.c \endcode */
 
53216
 
 
53217
#line 53218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53218
} // closed Puma
 
53219
class CCExprResolve;
 
53220
class CExprResolve;
 
53221
class WinIfExists;
 
53222
class WinImportHandler;
 
53223
class WinMacros;
 
53224
class WinAsm;
 
53225
class WinDeclSpecs;
 
53226
class WinMemberExplSpec;
 
53227
class WinTypeKeywords;
 
53228
class WinFriend;
 
53229
class ExtAC;
 
53230
class ExtACBuilderCoupling;
 
53231
class ExtACSyntaxCoupling;
 
53232
class ExtACTree;
 
53233
class ExtACKeywords;
 
53234
class ExtGnu;
 
53235
class PragmaOnceUnitState;
 
53236
class PragmaOnce;
 
53237
class CMatchSyntax;
 
53238
namespace Puma {
 
53239
 
 
53240
#line 2096 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53241
class CT_DesignatorSeq : public CT_List, public CSemValue {
 
53242
#line 53243 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53243
  friend class ::CCExprResolve;
 
53244
  friend class ::CExprResolve;
 
53245
  friend class ::WinIfExists;
 
53246
  friend class ::WinImportHandler;
 
53247
  friend class ::WinMacros;
 
53248
  friend class ::WinAsm;
 
53249
  friend class ::WinDeclSpecs;
 
53250
  friend class ::WinMemberExplSpec;
 
53251
  friend class ::WinTypeKeywords;
 
53252
  friend class ::WinFriend;
 
53253
  friend class ::ExtAC;
 
53254
  friend class ::ExtACBuilderCoupling;
 
53255
  friend class ::ExtACSyntaxCoupling;
 
53256
  friend class ::ExtACTree;
 
53257
  friend class ::ExtACKeywords;
 
53258
  friend class ::ExtGnu;
 
53259
  friend class ::PragmaOnceUnitState;
 
53260
  friend class ::PragmaOnce;
 
53261
  friend class ::CMatchSyntax;
 
53262
 
 
53263
#line 2096 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53264
 
 
53265
public:
 
53266
  /** Constructor.
 
53267
   *  \param size Initial number of designators. */
 
53268
  CT_DesignatorSeq (int size = 1) : CT_List (size, 2) {}
 
53269
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53270
  static const char *NodeId ();
 
53271
  /** Get the name of the node. Can be compared with NodeId(). */
 
53272
  const char *NodeName () const { return NodeId (); }
 
53273
 
 
53274
  /** Get the type of the entity to initialize. */
 
53275
  CTypeInfo *Type () const { return type; }
 
53276
  /** Get the value of the entity to initialize. */
 
53277
  CExprValue *Value () const { return value; }
 
53278
  /** Get the semantic value object. */
 
53279
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
53280
public:
 
53281
  typedef AC::TLE __AttrTypes;
 
53282
  const char *__attr_name (unsigned i) const { return 0; }
 
53283
  const void *__attr (unsigned __i) const { return 0; }
 
53284
#line 2112 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53285
};
 
53286
 
 
53287
/*****************************************************************************/
 
53288
/*                                                                           */
 
53289
/*                         Declaration specifiers                            */
 
53290
/*                                                                           */
 
53291
/*****************************************************************************/
 
53292
 
 
53293
/** \class CT_DeclSpec CTree.h Puma/CTree.h
 
53294
 *  Base class for all tree nodes representing declaration specifiers. */
 
53295
 
 
53296
#line 53297 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53297
} // closed Puma
 
53298
class CCExprResolve;
 
53299
class CExprResolve;
 
53300
class WinIfExists;
 
53301
class WinImportHandler;
 
53302
class WinMacros;
 
53303
class WinAsm;
 
53304
class WinDeclSpecs;
 
53305
class WinMemberExplSpec;
 
53306
class WinTypeKeywords;
 
53307
class WinFriend;
 
53308
class ExtAC;
 
53309
class ExtACBuilderCoupling;
 
53310
class ExtACSyntaxCoupling;
 
53311
class ExtACTree;
 
53312
class ExtACKeywords;
 
53313
class ExtGnu;
 
53314
class PragmaOnceUnitState;
 
53315
class PragmaOnce;
 
53316
class CMatchSyntax;
 
53317
namespace Puma {
 
53318
 
 
53319
#line 2122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53320
class CT_DeclSpec : public CTree {
 
53321
#line 53322 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53322
  friend class ::CCExprResolve;
 
53323
  friend class ::CExprResolve;
 
53324
  friend class ::WinIfExists;
 
53325
  friend class ::WinImportHandler;
 
53326
  friend class ::WinMacros;
 
53327
  friend class ::WinAsm;
 
53328
  friend class ::WinDeclSpecs;
 
53329
  friend class ::WinMemberExplSpec;
 
53330
  friend class ::WinTypeKeywords;
 
53331
  friend class ::WinFriend;
 
53332
  friend class ::ExtAC;
 
53333
  friend class ::ExtACBuilderCoupling;
 
53334
  friend class ::ExtACSyntaxCoupling;
 
53335
  friend class ::ExtACTree;
 
53336
  friend class ::ExtACKeywords;
 
53337
  friend class ::ExtGnu;
 
53338
  friend class ::PragmaOnceUnitState;
 
53339
  friend class ::PragmaOnce;
 
53340
  friend class ::CMatchSyntax;
 
53341
 
 
53342
#line 2122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53343
 
 
53344
protected:
 
53345
  /** Constructor. */
 
53346
  CT_DeclSpec () {}
 
53347
public:
 
53348
  typedef AC::TLE __AttrTypes;
 
53349
  const char *__attr_name (unsigned i) const { return 0; }
 
53350
  const void *__attr (unsigned __i) const { return 0; }
 
53351
#line 2126 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53352
};
 
53353
 
 
53354
/** \class CT_PrimDeclSpec CTree.h Puma/CTree.h
 
53355
 *  Tree node representing a primitive declaration specifier. */
 
53356
 
 
53357
#line 53358 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53358
} // closed Puma
 
53359
class CCExprResolve;
 
53360
class CExprResolve;
 
53361
class WinIfExists;
 
53362
class WinImportHandler;
 
53363
class WinMacros;
 
53364
class WinAsm;
 
53365
class WinDeclSpecs;
 
53366
class WinMemberExplSpec;
 
53367
class WinTypeKeywords;
 
53368
class WinFriend;
 
53369
class ExtAC;
 
53370
class ExtACBuilderCoupling;
 
53371
class ExtACSyntaxCoupling;
 
53372
class ExtACTree;
 
53373
class ExtACKeywords;
 
53374
class ExtGnu;
 
53375
class PragmaOnceUnitState;
 
53376
class PragmaOnce;
 
53377
class CMatchSyntax;
 
53378
namespace Puma {
 
53379
 
 
53380
#line 2130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53381
class CT_PrimDeclSpec : public CT_DeclSpec {
 
53382
#line 53383 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53383
  friend class ::CCExprResolve;
 
53384
  friend class ::CExprResolve;
 
53385
  friend class ::WinIfExists;
 
53386
  friend class ::WinImportHandler;
 
53387
  friend class ::WinMacros;
 
53388
  friend class ::WinAsm;
 
53389
  friend class ::WinDeclSpecs;
 
53390
  friend class ::WinMemberExplSpec;
 
53391
  friend class ::WinTypeKeywords;
 
53392
  friend class ::WinFriend;
 
53393
  friend class ::ExtAC;
 
53394
  friend class ::ExtACBuilderCoupling;
 
53395
  friend class ::ExtACSyntaxCoupling;
 
53396
  friend class ::ExtACTree;
 
53397
  friend class ::ExtACKeywords;
 
53398
  friend class ::ExtGnu;
 
53399
  friend class ::PragmaOnceUnitState;
 
53400
  friend class ::PragmaOnce;
 
53401
  friend class ::CMatchSyntax;
 
53402
 
 
53403
#line 2130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53404
 
 
53405
public:
 
53406
  /** Declaration specifier types. */
 
53407
  enum Type { 
 
53408
    PDS_FRIEND,    /** friend */
 
53409
    PDS_TYPEDEF,   /** typedef */
 
53410
    PDS_AUTO,      /** auto */
 
53411
    PDS_REGISTER,  /** register */
 
53412
    PDS_STATIC,    /** static */
 
53413
    PDS_EXTERN,    /** extern */
 
53414
    PDS_MUTABLE,   /** mutable */
 
53415
    PDS_INLINE,    /** inline */
 
53416
    PDS_VIRTUAL,   /** virtual */
 
53417
    PDS_EXPLICIT,  /** explicit */
 
53418
    PDS_CONST,     /** const */
 
53419
    PDS_VOLATILE,  /** volatile */
 
53420
    PDS_RESTRICT,  /** restrict */
 
53421
    PDS_CHAR,      /** char */
 
53422
    PDS_WCHAR_T,   /** wchar_t */
 
53423
    PDS_BOOL,      /** bool */
 
53424
    PDS_C_BOOL,    /** _Bool */
 
53425
    PDS_SHORT,     /** short */
 
53426
    PDS_INT,       /** int */
 
53427
    PDS_LONG,      /** long */
 
53428
    PDS_SIGNED,    /** signed */
 
53429
    PDS_UNSIGNED,  /** unsigned */
 
53430
    PDS_FLOAT,     /** float */
 
53431
    PDS_DOUBLE,    /** double */
 
53432
    PDS_VOID,      /** void */
 
53433
    // GNU C++ specific storage specifier
 
53434
    PDS_THREAD,    /** __thread */
 
53435
    // AspectC++ specific type specifier
 
53436
    PDS_UNKNOWN_T, /** unknown_t */
 
53437
    // Win specific declaration specifiers
 
53438
    PDS_CDECL,     /** __cdecl */
 
53439
    PDS_STDCALL,   /** __stdcall */
 
53440
    PDS_FASTCALL,  /** __fastcall */
 
53441
    PDS_INT64,     /** __int64 */
 
53442
    PDS_UNKNOWN,   /** Unknown declaration specifier. */
 
53443
    PDS_NUM        /** Number of declaration specifier types. */
 
53444
  };
 
53445
 
 
53446
private:
 
53447
  Type _type;
 
53448
  CTree *_token; // has to be a CT_Token
 
53449
 
 
53450
  void determine_type ();
 
53451
 
 
53452
public:
 
53453
  /** Constructor.
 
53454
   *  \param t The token containing the declaration specifier. */
 
53455
  CT_PrimDeclSpec (CT_Token *t) { AddSon (_token, (CTree*)t); determine_type (); }
 
53456
  /** Constructor.
 
53457
   *  \param t The declaration specifier type. */
 
53458
  CT_PrimDeclSpec (Type t) : _token (0) { _type = t; }
 
53459
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53460
  static const char *NodeId ();
 
53461
  /** Get the name of the node. Can be compared with NodeId(). */
 
53462
  const char *NodeName () const { return NodeId (); }
 
53463
  /** Get the number of sons. */
 
53464
  int Sons () const { return _token ? 1 : 0; }
 
53465
  /** Get the n-th son.
 
53466
   *  \param n The index of the son.
 
53467
   *  \return The n-th son or NULL. */
 
53468
  CTree *Son (int n) const 
 
53469
   { return (n == 0) ? _token : (CTree*)0; }
 
53470
  /** Get the textual representation of the declaration specifier.
 
53471
   *  \return The string representation or " ". */
 
53472
  const char *SpecText () const 
 
53473
   { return _token ? _token->token ()->text () : " "; }
 
53474
  /** Get the declaration specifier type. */
 
53475
  Type SpecType () const { return _type; }
 
53476
  /** Number of declaration specifier types. */
 
53477
  static const int NumTypes = PDS_NUM;
 
53478
  /** Replace a son.
 
53479
   *  \param old_son The son to replace.
 
53480
   *  \param new_son The new son. */
 
53481
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
53482
    CTree::ReplaceSon (_token, (CTree*)old_son, (CTree*)new_son);
 
53483
    determine_type ();
 
53484
  }
 
53485
public:
 
53486
  typedef AC::TL<Puma::CT_PrimDeclSpec::Type,AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
53487
  const char *__attr_name (unsigned i) const {
 
53488
    static const char *names[] = { "_type", "_token" }; return names[i];
 
53489
  }
 
53490
  const void *__attr (unsigned __i) const {
 
53491
    switch (__i) { case 33: return &_type; case 34: return &_token; default: return 0; }
 
53492
  }
 
53493
#line 2211 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53494
};
 
53495
 
 
53496
/** \class CT_NamedType CTree.h Puma/CTree.h
 
53497
 *  Tree node representing a named type.
 
53498
 *  Example: \code (int*)a \endcode where int* is a 
 
53499
 *  type with a generated name. */
 
53500
 
 
53501
#line 53502 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53502
} // closed Puma
 
53503
class CCExprResolve;
 
53504
class CExprResolve;
 
53505
class WinIfExists;
 
53506
class WinImportHandler;
 
53507
class WinMacros;
 
53508
class WinAsm;
 
53509
class WinDeclSpecs;
 
53510
class WinMemberExplSpec;
 
53511
class WinTypeKeywords;
 
53512
class WinFriend;
 
53513
class ExtAC;
 
53514
class ExtACBuilderCoupling;
 
53515
class ExtACSyntaxCoupling;
 
53516
class ExtACTree;
 
53517
class ExtACKeywords;
 
53518
class ExtGnu;
 
53519
class PragmaOnceUnitState;
 
53520
class PragmaOnce;
 
53521
class CMatchSyntax;
 
53522
namespace Puma {
 
53523
 
 
53524
#line 2217 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53525
class CT_NamedType : public CT_DeclSpec, public CSemObject {
 
53526
#line 53527 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53527
  friend class ::CCExprResolve;
 
53528
  friend class ::CExprResolve;
 
53529
  friend class ::WinIfExists;
 
53530
  friend class ::WinImportHandler;
 
53531
  friend class ::WinMacros;
 
53532
  friend class ::WinAsm;
 
53533
  friend class ::WinDeclSpecs;
 
53534
  friend class ::WinMemberExplSpec;
 
53535
  friend class ::WinTypeKeywords;
 
53536
  friend class ::WinFriend;
 
53537
  friend class ::ExtAC;
 
53538
  friend class ::ExtACBuilderCoupling;
 
53539
  friend class ::ExtACSyntaxCoupling;
 
53540
  friend class ::ExtACTree;
 
53541
  friend class ::ExtACKeywords;
 
53542
  friend class ::ExtGnu;
 
53543
  friend class ::PragmaOnceUnitState;
 
53544
  friend class ::PragmaOnce;
 
53545
  friend class ::CMatchSyntax;
 
53546
 
 
53547
#line 2217 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53548
 
 
53549
  CTree *sons[2]; // declspecs, declarator
 
53550
 
 
53551
public:
 
53552
  /** Constructor.
 
53553
   *  \param dss The declaration specifier sequence of the type.
 
53554
   *  \param d The type declarator. */
 
53555
  CT_NamedType (CTree *dss, CTree *d) { AddSon (sons[0], dss); AddSon (sons[1], d); }
 
53556
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53557
  static const char *NodeId ();
 
53558
  /** Get the name of the node. Can be compared with NodeId(). */
 
53559
  const char *NodeName () const { return NodeId (); }
 
53560
  /** Get the number of sons. */
 
53561
  int Sons () const { return CTree::Sons (sons, 2); }
 
53562
  /** Get the n-th son.
 
53563
   *  \param n The index of the son.
 
53564
   *  \return The n-th son or NULL. */
 
53565
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
53566
  /** Get the declarator. */
 
53567
  CTree *Declarator () const { return sons[1]; }
 
53568
  /** Replace a son.
 
53569
   *  \param old_son The son to replace.
 
53570
   *  \param new_son The new son. */
 
53571
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
53572
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
53573
  }
 
53574
  /** Get the semantic information about the created temporary object. */
 
53575
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
53576
public:
 
53577
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
53578
  const char *__attr_name (unsigned i) const {
 
53579
    static const char *names[] = { "sons" }; return names[i];
 
53580
  }
 
53581
  const void *__attr (unsigned __i) const {
 
53582
    switch (__i) { case 0: return &sons; default: return 0; }
 
53583
  }
 
53584
#line 2245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53585
};
 
53586
      
 
53587
/** \class CT_ClassSpec CTree.h Puma/CTree.h
 
53588
 *  Tree node representing a class specifier.
 
53589
 *  Example: \code class X \endcode */
 
53590
 
 
53591
#line 53592 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53592
} // closed Puma
 
53593
class CCExprResolve;
 
53594
class CExprResolve;
 
53595
class WinIfExists;
 
53596
class WinImportHandler;
 
53597
class WinMacros;
 
53598
class WinAsm;
 
53599
class WinDeclSpecs;
 
53600
class WinMemberExplSpec;
 
53601
class WinTypeKeywords;
 
53602
class WinFriend;
 
53603
class ExtAC;
 
53604
class ExtACBuilderCoupling;
 
53605
class ExtACSyntaxCoupling;
 
53606
class ExtACTree;
 
53607
class ExtACKeywords;
 
53608
class ExtGnu;
 
53609
class PragmaOnceUnitState;
 
53610
class PragmaOnce;
 
53611
class CMatchSyntax;
 
53612
namespace Puma {
 
53613
 
 
53614
#line 2250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53615
class CT_ClassSpec : public CT_DeclSpec, public CSemObject {
 
53616
#line 53617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53617
  friend class ::CCExprResolve;
 
53618
  friend class ::CExprResolve;
 
53619
  friend class ::WinIfExists;
 
53620
  friend class ::WinImportHandler;
 
53621
  friend class ::WinMacros;
 
53622
  friend class ::WinAsm;
 
53623
  friend class ::WinDeclSpecs;
 
53624
  friend class ::WinMemberExplSpec;
 
53625
  friend class ::WinTypeKeywords;
 
53626
  friend class ::WinFriend;
 
53627
  friend class ::ExtAC;
 
53628
  friend class ::ExtACBuilderCoupling;
 
53629
  friend class ::ExtACSyntaxCoupling;
 
53630
  friend class ::ExtACTree;
 
53631
  friend class ::ExtACKeywords;
 
53632
  friend class ::ExtGnu;
 
53633
  friend class ::PragmaOnceUnitState;
 
53634
  friend class ::PragmaOnce;
 
53635
  friend class ::CMatchSyntax;
 
53636
 
 
53637
#line 2250 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53638
 
 
53639
  CTree *sons[2]; // key, name
 
53640
  
 
53641
public:
 
53642
  /** Constructor.
 
53643
   *  \param k The 'class' or 'struct' keyword.
 
53644
   *  \param n The class name. */
 
53645
  CT_ClassSpec (CTree *k, CTree *n) { AddSon (sons[0], k); AddSon (sons[1], n); }
 
53646
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53647
  static const char *NodeId ();
 
53648
  /** Get the name of the node. Can be compared with NodeId(). */
 
53649
  const char *NodeName () const { return NodeId (); }
 
53650
  /** Get the number of sons. */
 
53651
  int Sons () const { return 2; }
 
53652
  /** Get the n-th son.
 
53653
   *  \param n The index of the son.
 
53654
   *  \return The n-th son or NULL. */
 
53655
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); } 
 
53656
  /** Get the class name. */
 
53657
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
53658
  /** Get the semantic information about the class. */
 
53659
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
53660
  /** Replace a son.
 
53661
   *  \param old_son The son to replace.
 
53662
   *  \param new_son The new son. */
 
53663
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
53664
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
53665
  }
 
53666
public:
 
53667
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
53668
  const char *__attr_name (unsigned i) const {
 
53669
    static const char *names[] = { "sons" }; return names[i];
 
53670
  }
 
53671
  const void *__attr (unsigned __i) const {
 
53672
    switch (__i) { case 0: return &sons; default: return 0; }
 
53673
  }
 
53674
#line 2278 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53675
};
 
53676
 
 
53677
/** \class CT_UnionSpec CTree.h Puma/CTree.h
 
53678
 *  Tree node representing a union specifier.
 
53679
 *  Example: \code union X \endcode */
 
53680
 
 
53681
#line 53682 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53682
} // closed Puma
 
53683
class CCExprResolve;
 
53684
class CExprResolve;
 
53685
class WinIfExists;
 
53686
class WinImportHandler;
 
53687
class WinMacros;
 
53688
class WinAsm;
 
53689
class WinDeclSpecs;
 
53690
class WinMemberExplSpec;
 
53691
class WinTypeKeywords;
 
53692
class WinFriend;
 
53693
class ExtAC;
 
53694
class ExtACBuilderCoupling;
 
53695
class ExtACSyntaxCoupling;
 
53696
class ExtACTree;
 
53697
class ExtACKeywords;
 
53698
class ExtGnu;
 
53699
class PragmaOnceUnitState;
 
53700
class PragmaOnce;
 
53701
class CMatchSyntax;
 
53702
namespace Puma {
 
53703
 
 
53704
#line 2283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53705
class CT_UnionSpec : public CT_ClassSpec {
 
53706
#line 53707 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53707
  friend class ::CCExprResolve;
 
53708
  friend class ::CExprResolve;
 
53709
  friend class ::WinIfExists;
 
53710
  friend class ::WinImportHandler;
 
53711
  friend class ::WinMacros;
 
53712
  friend class ::WinAsm;
 
53713
  friend class ::WinDeclSpecs;
 
53714
  friend class ::WinMemberExplSpec;
 
53715
  friend class ::WinTypeKeywords;
 
53716
  friend class ::WinFriend;
 
53717
  friend class ::ExtAC;
 
53718
  friend class ::ExtACBuilderCoupling;
 
53719
  friend class ::ExtACSyntaxCoupling;
 
53720
  friend class ::ExtACTree;
 
53721
  friend class ::ExtACKeywords;
 
53722
  friend class ::ExtGnu;
 
53723
  friend class ::PragmaOnceUnitState;
 
53724
  friend class ::PragmaOnce;
 
53725
  friend class ::CMatchSyntax;
 
53726
 
 
53727
#line 2283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53728
 
 
53729
public:
 
53730
  /** Constructor.
 
53731
   *  \param k The 'union' keyword.
 
53732
   *  \param n The name of the union. */
 
53733
  CT_UnionSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
53734
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53735
  static const char *NodeId ();
 
53736
  /** Get the name of the node. Can be compared with NodeId(). */
 
53737
  const char *NodeName () const { return NodeId (); }
 
53738
public:
 
53739
  typedef AC::TLE __AttrTypes;
 
53740
  const char *__attr_name (unsigned i) const { return 0; }
 
53741
  const void *__attr (unsigned __i) const { return 0; }
 
53742
#line 2293 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53743
};
 
53744
 
 
53745
/** \class CT_EnumSpec CTree.h Puma/CTree.h
 
53746
 *  Tree node representing an enumeration specifier.
 
53747
 *  Example: \code enum X \endcode */
 
53748
 
 
53749
#line 53750 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53750
} // closed Puma
 
53751
class CCExprResolve;
 
53752
class CExprResolve;
 
53753
class WinIfExists;
 
53754
class WinImportHandler;
 
53755
class WinMacros;
 
53756
class WinAsm;
 
53757
class WinDeclSpecs;
 
53758
class WinMemberExplSpec;
 
53759
class WinTypeKeywords;
 
53760
class WinFriend;
 
53761
class ExtAC;
 
53762
class ExtACBuilderCoupling;
 
53763
class ExtACSyntaxCoupling;
 
53764
class ExtACTree;
 
53765
class ExtACKeywords;
 
53766
class ExtGnu;
 
53767
class PragmaOnceUnitState;
 
53768
class PragmaOnce;
 
53769
class CMatchSyntax;
 
53770
namespace Puma {
 
53771
 
 
53772
#line 2298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53773
class CT_EnumSpec : public CT_ClassSpec {
 
53774
#line 53775 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53775
  friend class ::CCExprResolve;
 
53776
  friend class ::CExprResolve;
 
53777
  friend class ::WinIfExists;
 
53778
  friend class ::WinImportHandler;
 
53779
  friend class ::WinMacros;
 
53780
  friend class ::WinAsm;
 
53781
  friend class ::WinDeclSpecs;
 
53782
  friend class ::WinMemberExplSpec;
 
53783
  friend class ::WinTypeKeywords;
 
53784
  friend class ::WinFriend;
 
53785
  friend class ::ExtAC;
 
53786
  friend class ::ExtACBuilderCoupling;
 
53787
  friend class ::ExtACSyntaxCoupling;
 
53788
  friend class ::ExtACTree;
 
53789
  friend class ::ExtACKeywords;
 
53790
  friend class ::ExtGnu;
 
53791
  friend class ::PragmaOnceUnitState;
 
53792
  friend class ::PragmaOnce;
 
53793
  friend class ::CMatchSyntax;
 
53794
 
 
53795
#line 2298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53796
 
 
53797
public:
 
53798
  /** Constructor.
 
53799
   *  \param k The 'enum' keyword. 
 
53800
   *  \param n The name of the enumeration. */
 
53801
  CT_EnumSpec (CTree *k, CTree *n) : CT_ClassSpec (k, n) {}
 
53802
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53803
  static const char *NodeId ();
 
53804
  /** Get the name of the node. Can be compared with NodeId(). */
 
53805
  const char *NodeName () const { return NodeId (); }
 
53806
public:
 
53807
  typedef AC::TLE __AttrTypes;
 
53808
  const char *__attr_name (unsigned i) const { return 0; }
 
53809
  const void *__attr (unsigned __i) const { return 0; }
 
53810
#line 2308 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53811
};
 
53812
 
 
53813
/** \class CT_ExceptionSpec CTree.h Puma/CTree.h
 
53814
 *  Tree node representing an exception specifier.
 
53815
 *  Example: \code throw(std::exception) \endcode */
 
53816
 
 
53817
#line 53818 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53818
} // closed Puma
 
53819
class CCExprResolve;
 
53820
class CExprResolve;
 
53821
class WinIfExists;
 
53822
class WinImportHandler;
 
53823
class WinMacros;
 
53824
class WinAsm;
 
53825
class WinDeclSpecs;
 
53826
class WinMemberExplSpec;
 
53827
class WinTypeKeywords;
 
53828
class WinFriend;
 
53829
class ExtAC;
 
53830
class ExtACBuilderCoupling;
 
53831
class ExtACSyntaxCoupling;
 
53832
class ExtACTree;
 
53833
class ExtACKeywords;
 
53834
class ExtGnu;
 
53835
class PragmaOnceUnitState;
 
53836
class PragmaOnce;
 
53837
class CMatchSyntax;
 
53838
namespace Puma {
 
53839
 
 
53840
#line 2313 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53841
class CT_ExceptionSpec : public CT_DeclSpec {
 
53842
#line 53843 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53843
  friend class ::CCExprResolve;
 
53844
  friend class ::CExprResolve;
 
53845
  friend class ::WinIfExists;
 
53846
  friend class ::WinImportHandler;
 
53847
  friend class ::WinMacros;
 
53848
  friend class ::WinAsm;
 
53849
  friend class ::WinDeclSpecs;
 
53850
  friend class ::WinMemberExplSpec;
 
53851
  friend class ::WinTypeKeywords;
 
53852
  friend class ::WinFriend;
 
53853
  friend class ::ExtAC;
 
53854
  friend class ::ExtACBuilderCoupling;
 
53855
  friend class ::ExtACSyntaxCoupling;
 
53856
  friend class ::ExtACTree;
 
53857
  friend class ::ExtACKeywords;
 
53858
  friend class ::ExtGnu;
 
53859
  friend class ::PragmaOnceUnitState;
 
53860
  friend class ::PragmaOnce;
 
53861
  friend class ::CMatchSyntax;
 
53862
 
 
53863
#line 2313 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53864
 
 
53865
  CTree *sons[2]; // throw, type_id_list
 
53866
  
 
53867
public:
 
53868
  /** Constructor.
 
53869
   *  \param k The 'throw' keyword.
 
53870
   *  \param l The type list for the exception type to throw. */
 
53871
  CT_ExceptionSpec (CTree *k, CTree *l) { AddSon (sons[0], k); AddSon (sons[1], l); }
 
53872
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
53873
  static const char *NodeId ();
 
53874
  /** Get the name of the node. Can be compared with NodeId(). */
 
53875
  const char *NodeName () const { return NodeId (); }
 
53876
  /** Get the number of sons. */
 
53877
  int Sons () const { return 2; }
 
53878
  /** Get the n-th son.
 
53879
   *  \param n The index of the son.
 
53880
   *  \return The n-th son or NULL. */
 
53881
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
53882
  /** Get the exception type list. */
 
53883
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
53884
  /** Replace a son.
 
53885
   *  \param old_son The son to replace.
 
53886
   *  \param new_son The new son. */
 
53887
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
53888
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
53889
  }
 
53890
public:
 
53891
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
53892
  const char *__attr_name (unsigned i) const {
 
53893
    static const char *names[] = { "sons" }; return names[i];
 
53894
  }
 
53895
  const void *__attr (unsigned __i) const {
 
53896
    switch (__i) { case 0: return &sons; default: return 0; }
 
53897
  }
 
53898
#line 2339 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53899
};
 
53900
 
 
53901
/*****************************************************************************/
 
53902
/*                                                                           */
 
53903
/*                              Declarations                                 */
 
53904
/*                                                                           */
 
53905
/*****************************************************************************/
 
53906
 
 
53907
/** \class CT_Decl CTree.h Puma/CTree.h
 
53908
 *  Base class for all tree nodes representing declarations. */
 
53909
 
 
53910
#line 53911 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53911
} // closed Puma
 
53912
class CCExprResolve;
 
53913
class CExprResolve;
 
53914
class WinIfExists;
 
53915
class WinImportHandler;
 
53916
class WinMacros;
 
53917
class WinAsm;
 
53918
class WinDeclSpecs;
 
53919
class WinMemberExplSpec;
 
53920
class WinTypeKeywords;
 
53921
class WinFriend;
 
53922
class ExtAC;
 
53923
class ExtACBuilderCoupling;
 
53924
class ExtACSyntaxCoupling;
 
53925
class ExtACTree;
 
53926
class ExtACKeywords;
 
53927
class ExtGnu;
 
53928
class PragmaOnceUnitState;
 
53929
class PragmaOnce;
 
53930
class CMatchSyntax;
 
53931
namespace Puma {
 
53932
 
 
53933
#line 2349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53934
class CT_Decl : public CTree {
 
53935
#line 53936 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53936
  friend class ::CCExprResolve;
 
53937
  friend class ::CExprResolve;
 
53938
  friend class ::WinIfExists;
 
53939
  friend class ::WinImportHandler;
 
53940
  friend class ::WinMacros;
 
53941
  friend class ::WinAsm;
 
53942
  friend class ::WinDeclSpecs;
 
53943
  friend class ::WinMemberExplSpec;
 
53944
  friend class ::WinTypeKeywords;
 
53945
  friend class ::WinFriend;
 
53946
  friend class ::ExtAC;
 
53947
  friend class ::ExtACBuilderCoupling;
 
53948
  friend class ::ExtACSyntaxCoupling;
 
53949
  friend class ::ExtACTree;
 
53950
  friend class ::ExtACKeywords;
 
53951
  friend class ::ExtGnu;
 
53952
  friend class ::PragmaOnceUnitState;
 
53953
  friend class ::PragmaOnce;
 
53954
  friend class ::CMatchSyntax;
 
53955
 
 
53956
#line 2349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53957
 
 
53958
  CT_LinkageSpec *_linkage;
 
53959
  
 
53960
protected:
 
53961
  /** Constructor. */
 
53962
  CT_Decl () : _linkage (0) {}
 
53963
  
 
53964
public:
 
53965
  /** Set the linkage of the declared entity.
 
53966
   *  \param l The linkage specifiers. */
 
53967
  void Linkage (CT_LinkageSpec *l) { _linkage = l; }
 
53968
  /** Get the linkage specifiers. */
 
53969
  CT_LinkageSpec *Linkage () const { return _linkage; }
 
53970
  /** Get this. */
 
53971
  virtual CT_Decl *IsDeclaration () { return this; }
 
53972
public:
 
53973
  typedef AC::TL<Puma::CT_LinkageSpec *,AC::TLE > __AttrTypes;
 
53974
  const char *__attr_name (unsigned i) const {
 
53975
    static const char *names[] = { "_linkage" }; return names[i];
 
53976
  }
 
53977
  const void *__attr (unsigned __i) const {
 
53978
    switch (__i) { case 0: return &_linkage; default: return 0; }
 
53979
  }
 
53980
#line 2364 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
53981
};
 
53982
 
 
53983
/** \class CT_Program CTree.h Puma/CTree.h
 
53984
 *  Root node of C/C++ syntax trees. */
 
53985
 
 
53986
#line 53987 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
53987
} // closed Puma
 
53988
class CCExprResolve;
 
53989
class CExprResolve;
 
53990
class WinIfExists;
 
53991
class WinImportHandler;
 
53992
class WinMacros;
 
53993
class WinAsm;
 
53994
class WinDeclSpecs;
 
53995
class WinMemberExplSpec;
 
53996
class WinTypeKeywords;
 
53997
class WinFriend;
 
53998
class ExtAC;
 
53999
class ExtACBuilderCoupling;
 
54000
class ExtACSyntaxCoupling;
 
54001
class ExtACTree;
 
54002
class ExtACKeywords;
 
54003
class ExtGnu;
 
54004
class PragmaOnceUnitState;
 
54005
class PragmaOnce;
 
54006
class CMatchSyntax;
 
54007
namespace Puma {
 
54008
 
 
54009
#line 2368 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54010
class CT_Program : public CT_DeclList, public CSemScope {
 
54011
#line 54012 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54012
  friend class ::CCExprResolve;
 
54013
  friend class ::CExprResolve;
 
54014
  friend class ::WinIfExists;
 
54015
  friend class ::WinImportHandler;
 
54016
  friend class ::WinMacros;
 
54017
  friend class ::WinAsm;
 
54018
  friend class ::WinDeclSpecs;
 
54019
  friend class ::WinMemberExplSpec;
 
54020
  friend class ::WinTypeKeywords;
 
54021
  friend class ::WinFriend;
 
54022
  friend class ::ExtAC;
 
54023
  friend class ::ExtACBuilderCoupling;
 
54024
  friend class ::ExtACSyntaxCoupling;
 
54025
  friend class ::ExtACTree;
 
54026
  friend class ::ExtACKeywords;
 
54027
  friend class ::ExtGnu;
 
54028
  friend class ::PragmaOnceUnitState;
 
54029
  friend class ::PragmaOnce;
 
54030
  friend class ::CMatchSyntax;
 
54031
 
 
54032
#line 2368 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54033
 
 
54034
public:
 
54035
  /** Constructor.
 
54036
   *  \param size The initial number of declarations in the program.
 
54037
   *  \param incr The initial increment count. */
 
54038
  CT_Program (int size = 20, int incr = 20) : CT_DeclList (size, incr) {}
 
54039
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54040
  static const char *NodeId ();
 
54041
  /** Get the name of the node. Can be compared with NodeId(). */
 
54042
  const char *NodeName () const { return NodeId (); }
 
54043
  /** Get the top scope. */
 
54044
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
54045
public:
 
54046
  typedef AC::TLE __AttrTypes;
 
54047
  const char *__attr_name (unsigned i) const { return 0; }
 
54048
  const void *__attr (unsigned __i) const { return 0; }
 
54049
#line 2380 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54050
};
 
54051
   
 
54052
/** \class CT_ObjDecl CTree.h Puma/CTree.h
 
54053
 *  Tree node representing an object declaration.
 
54054
 *  Example: \code int *i \endcode */
 
54055
 
 
54056
#line 54057 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54057
} // closed Puma
 
54058
class CCExprResolve;
 
54059
class CExprResolve;
 
54060
class WinIfExists;
 
54061
class WinImportHandler;
 
54062
class WinMacros;
 
54063
class WinAsm;
 
54064
class WinDeclSpecs;
 
54065
class WinMemberExplSpec;
 
54066
class WinTypeKeywords;
 
54067
class WinFriend;
 
54068
class ExtAC;
 
54069
class ExtACBuilderCoupling;
 
54070
class ExtACSyntaxCoupling;
 
54071
class ExtACTree;
 
54072
class ExtACKeywords;
 
54073
class ExtGnu;
 
54074
class PragmaOnceUnitState;
 
54075
class PragmaOnce;
 
54076
class CMatchSyntax;
 
54077
namespace Puma {
 
54078
 
 
54079
#line 2385 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54080
class CT_ObjDecl : public CT_Decl {
 
54081
#line 54082 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54082
  friend class ::CCExprResolve;
 
54083
  friend class ::CExprResolve;
 
54084
  friend class ::WinIfExists;
 
54085
  friend class ::WinImportHandler;
 
54086
  friend class ::WinMacros;
 
54087
  friend class ::WinAsm;
 
54088
  friend class ::WinDeclSpecs;
 
54089
  friend class ::WinMemberExplSpec;
 
54090
  friend class ::WinTypeKeywords;
 
54091
  friend class ::WinFriend;
 
54092
  friend class ::ExtAC;
 
54093
  friend class ::ExtACBuilderCoupling;
 
54094
  friend class ::ExtACSyntaxCoupling;
 
54095
  friend class ::ExtACTree;
 
54096
  friend class ::ExtACKeywords;
 
54097
  friend class ::ExtGnu;
 
54098
  friend class ::PragmaOnceUnitState;
 
54099
  friend class ::PragmaOnce;
 
54100
  friend class ::CMatchSyntax;
 
54101
 
 
54102
#line 2385 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54103
 
 
54104
  CTree *sons[3]; // declspecs, declarators, colon
 
54105
 
 
54106
public:
 
54107
  /** Constructor.
 
54108
   *  \param dsl The declaration specifier sequence.
 
54109
   *  \param dl The declarator list.
 
54110
   *  \param c Optional colon. */
 
54111
  CT_ObjDecl (CTree *dsl, CTree *dl, CTree *c) {
 
54112
    AddSon (sons[0], dsl); AddSon (sons[1], dl); AddSon (sons[2], c);
 
54113
  }
 
54114
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54115
  static const char *NodeId ();
 
54116
  /** Get the name of the node. Can be compared with NodeId(). */
 
54117
  const char *NodeName () const { return NodeId (); }
 
54118
  /** Get the number of sons. */
 
54119
  int Sons () const { return 3; }
 
54120
  /** Get the n-th son.
 
54121
   *  \param n The index of the son.
 
54122
   *  \return The n-th son or NULL. */
 
54123
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
54124
  /** Get the declaration specifier sequence. */
 
54125
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
54126
  /** Get the declarator list. */
 
54127
  CT_DeclaratorList *Declarators () const { return (CT_DeclaratorList*)sons[1]; }
 
54128
  /** Replace a son.
 
54129
   *  \param old_son The son to replace.
 
54130
   *  \param new_son The new son. */
 
54131
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54132
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
54133
  }
 
54134
public:
 
54135
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
54136
  const char *__attr_name (unsigned i) const {
 
54137
    static const char *names[] = { "sons" }; return names[i];
 
54138
  }
 
54139
  const void *__attr (unsigned __i) const {
 
54140
    switch (__i) { case 0: return &sons; default: return 0; }
 
54141
  }
 
54142
#line 2416 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54143
};
 
54144
 
 
54145
/** \class CT_TemplateDecl CTree.h Puma/CTree.h
 
54146
 *  Tree node representing a template declaration. */
 
54147
 
 
54148
#line 54149 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54149
} // closed Puma
 
54150
class CCExprResolve;
 
54151
class CExprResolve;
 
54152
class WinIfExists;
 
54153
class WinImportHandler;
 
54154
class WinMacros;
 
54155
class WinAsm;
 
54156
class WinDeclSpecs;
 
54157
class WinMemberExplSpec;
 
54158
class WinTypeKeywords;
 
54159
class WinFriend;
 
54160
class ExtAC;
 
54161
class ExtACBuilderCoupling;
 
54162
class ExtACSyntaxCoupling;
 
54163
class ExtACTree;
 
54164
class ExtACKeywords;
 
54165
class ExtGnu;
 
54166
class PragmaOnceUnitState;
 
54167
class PragmaOnce;
 
54168
class CMatchSyntax;
 
54169
namespace Puma {
 
54170
 
 
54171
#line 2420 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54172
class CT_TemplateDecl : public CT_Decl, public CSemScope {
 
54173
#line 54174 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54174
  friend class ::CCExprResolve;
 
54175
  friend class ::CExprResolve;
 
54176
  friend class ::WinIfExists;
 
54177
  friend class ::WinImportHandler;
 
54178
  friend class ::WinMacros;
 
54179
  friend class ::WinAsm;
 
54180
  friend class ::WinDeclSpecs;
 
54181
  friend class ::WinMemberExplSpec;
 
54182
  friend class ::WinTypeKeywords;
 
54183
  friend class ::WinFriend;
 
54184
  friend class ::ExtAC;
 
54185
  friend class ::ExtACBuilderCoupling;
 
54186
  friend class ::ExtACSyntaxCoupling;
 
54187
  friend class ::ExtACTree;
 
54188
  friend class ::ExtACKeywords;
 
54189
  friend class ::ExtGnu;
 
54190
  friend class ::PragmaOnceUnitState;
 
54191
  friend class ::PragmaOnce;
 
54192
  friend class ::CMatchSyntax;
 
54193
 
 
54194
#line 2420 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54195
 
 
54196
  CTree *sons[3]; // export, param_list, decl
 
54197
 
 
54198
public:
 
54199
  /** Constructor.
 
54200
   *  \param e Optional 'export' keyword. 
 
54201
   *  \param p The template parameter list.
 
54202
   *  \param d The class or function declaration. */
 
54203
  CT_TemplateDecl (CTree *e, CTree *p, CTree *d) {
 
54204
    AddSon (sons[0], e); AddSon (sons[1], p); AddSon (sons[2], d);
 
54205
  }
 
54206
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54207
  static const char *NodeId ();
 
54208
  /** Get the name of the node. Can be compared with NodeId(). */
 
54209
  const char *NodeName () const { return NodeId (); }
 
54210
  /** Get the number of sons. */
 
54211
  int Sons () const { return CTree::Sons (sons, 3); }
 
54212
  /** Get the n-th son.
 
54213
   *  \param n The index of the son.
 
54214
   *  \return The n-th son or NULL. */
 
54215
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
54216
  /** Replace a son.
 
54217
   *  \param old_son The son to replace.
 
54218
   *  \param new_son The new son. */
 
54219
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54220
    CTree::ReplaceSon (sons, 3, old_son, new_son); 
 
54221
  }
 
54222
  /** Get the 'export' keyword. */
 
54223
  CTree *Export () const { return sons[0]; }
 
54224
  /** Get the template parameter list. */
 
54225
  CT_TemplateParamList *Parameters () const { 
 
54226
    return (CT_TemplateParamList*)sons[1]; 
 
54227
  }
 
54228
  /** Get the class or function declaration. */
 
54229
  CTree *Declaration () const { return sons[2]; }
 
54230
  /** Get the scope opened by the template declaration. */
 
54231
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
54232
public:
 
54233
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
54234
  const char *__attr_name (unsigned i) const {
 
54235
    static const char *names[] = { "sons" }; return names[i];
 
54236
  }
 
54237
  const void *__attr (unsigned __i) const {
 
54238
    switch (__i) { case 0: return &sons; default: return 0; }
 
54239
  }
 
54240
#line 2457 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54241
};
 
54242
 
 
54243
/** \class CT_TemplateParamDecl CTree.h Puma/CTree.h
 
54244
 *  Base class for all tree nodesrepresenting a template parameter declaration. */
 
54245
 
 
54246
#line 54247 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54247
} // closed Puma
 
54248
class CCExprResolve;
 
54249
class CExprResolve;
 
54250
class WinIfExists;
 
54251
class WinImportHandler;
 
54252
class WinMacros;
 
54253
class WinAsm;
 
54254
class WinDeclSpecs;
 
54255
class WinMemberExplSpec;
 
54256
class WinTypeKeywords;
 
54257
class WinFriend;
 
54258
class ExtAC;
 
54259
class ExtACBuilderCoupling;
 
54260
class ExtACSyntaxCoupling;
 
54261
class ExtACTree;
 
54262
class ExtACKeywords;
 
54263
class ExtGnu;
 
54264
class PragmaOnceUnitState;
 
54265
class PragmaOnce;
 
54266
class CMatchSyntax;
 
54267
namespace Puma {
 
54268
 
 
54269
#line 2461 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54270
class CT_TemplateParamDecl : public CT_Decl, public CSemObject {
 
54271
#line 54272 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54272
  friend class ::CCExprResolve;
 
54273
  friend class ::CExprResolve;
 
54274
  friend class ::WinIfExists;
 
54275
  friend class ::WinImportHandler;
 
54276
  friend class ::WinMacros;
 
54277
  friend class ::WinAsm;
 
54278
  friend class ::WinDeclSpecs;
 
54279
  friend class ::WinMemberExplSpec;
 
54280
  friend class ::WinTypeKeywords;
 
54281
  friend class ::WinFriend;
 
54282
  friend class ::ExtAC;
 
54283
  friend class ::ExtACBuilderCoupling;
 
54284
  friend class ::ExtACSyntaxCoupling;
 
54285
  friend class ::ExtACTree;
 
54286
  friend class ::ExtACKeywords;
 
54287
  friend class ::ExtGnu;
 
54288
  friend class ::PragmaOnceUnitState;
 
54289
  friend class ::PragmaOnce;
 
54290
  friend class ::CMatchSyntax;
 
54291
 
 
54292
#line 2461 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54293
 
 
54294
protected:
 
54295
  /** Constructor. */
 
54296
  CT_TemplateParamDecl () {}
 
54297
  
 
54298
public:
 
54299
  /** Get the template default argument. */
 
54300
  virtual CT_ExprList *DefaultArgument () const = 0;
 
54301
  /** Get the semantic information about the template parameter. */
 
54302
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
54303
public:
 
54304
  typedef AC::TLE __AttrTypes;
 
54305
  const char *__attr_name (unsigned i) const { return 0; }
 
54306
  const void *__attr (unsigned __i) const { return 0; }
 
54307
#line 2471 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54308
};
 
54309
 
 
54310
/** \class CT_NonTypeParamDecl CTree.h Puma/CTree.h
 
54311
 *  Tree node representing a template non-type parameter declaration. */
 
54312
 
 
54313
#line 54314 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54314
} // closed Puma
 
54315
class CCExprResolve;
 
54316
class CExprResolve;
 
54317
class WinIfExists;
 
54318
class WinImportHandler;
 
54319
class WinMacros;
 
54320
class WinAsm;
 
54321
class WinDeclSpecs;
 
54322
class WinMemberExplSpec;
 
54323
class WinTypeKeywords;
 
54324
class WinFriend;
 
54325
class ExtAC;
 
54326
class ExtACBuilderCoupling;
 
54327
class ExtACSyntaxCoupling;
 
54328
class ExtACTree;
 
54329
class ExtACKeywords;
 
54330
class ExtGnu;
 
54331
class PragmaOnceUnitState;
 
54332
class PragmaOnce;
 
54333
class CMatchSyntax;
 
54334
namespace Puma {
 
54335
 
 
54336
#line 2475 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54337
class CT_NonTypeParamDecl : public CT_TemplateParamDecl {
 
54338
#line 54339 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54339
  friend class ::CCExprResolve;
 
54340
  friend class ::CExprResolve;
 
54341
  friend class ::WinIfExists;
 
54342
  friend class ::WinImportHandler;
 
54343
  friend class ::WinMacros;
 
54344
  friend class ::WinAsm;
 
54345
  friend class ::WinDeclSpecs;
 
54346
  friend class ::WinMemberExplSpec;
 
54347
  friend class ::WinTypeKeywords;
 
54348
  friend class ::WinFriend;
 
54349
  friend class ::ExtAC;
 
54350
  friend class ::ExtACBuilderCoupling;
 
54351
  friend class ::ExtACSyntaxCoupling;
 
54352
  friend class ::ExtACTree;
 
54353
  friend class ::ExtACKeywords;
 
54354
  friend class ::ExtGnu;
 
54355
  friend class ::PragmaOnceUnitState;
 
54356
  friend class ::PragmaOnce;
 
54357
  friend class ::CMatchSyntax;
 
54358
 
 
54359
#line 2475 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54360
 
 
54361
  CTree *sons[3]; // declspecs, declarator, init
 
54362
 
 
54363
public:
 
54364
  /** Constructor.
 
54365
   *  \param dsl The declaration specifier sequence.
 
54366
   *  \param d The parameter declarator.
 
54367
   *  \param i The default template argument. */
 
54368
  CT_NonTypeParamDecl (CTree *dsl, CTree *d, CTree *i = (CTree*)0) {
 
54369
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], i);
 
54370
  }
 
54371
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54372
  static const char *NodeId ();
 
54373
  /** Get the name of the node. Can be compared with NodeId(). */
 
54374
  const char *NodeName () const { return NodeId (); }
 
54375
  /** Get the number of sons. */
 
54376
  int Sons () const { return CTree::Sons (sons, 3); }
 
54377
  /** Get the n-th son.
 
54378
   *  \param n The index of the son.
 
54379
   *  \return The n-th son or NULL. */
 
54380
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
54381
  /** Get the declaration specifier sequence. */
 
54382
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
54383
  /** Get the parameter declarator. */
 
54384
  CTree *Declarator () const { return sons[1]; }
 
54385
  /** Get the default template argument. */
 
54386
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[2]; }
 
54387
  /** Get the semantic information about the template parameter. */
 
54388
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
54389
  /** Set the default template argument. 
 
54390
   *  \param i The default argument. */
 
54391
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
54392
  /** Replace a son.
 
54393
   *  \param old_son The son to replace.
 
54394
   *  \param new_son The new son. */
 
54395
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54396
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
54397
  }
 
54398
public:
 
54399
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
54400
  const char *__attr_name (unsigned i) const {
 
54401
    static const char *names[] = { "sons" }; return names[i];
 
54402
  }
 
54403
  const void *__attr (unsigned __i) const {
 
54404
    switch (__i) { case 0: return &sons; default: return 0; }
 
54405
  }
 
54406
#line 2513 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54407
};
 
54408
 
 
54409
/** \class CT_TypeParamDecl CTree.h Puma/CTree.h
 
54410
 *  Tree node representing a template type parameter declaration. */
 
54411
 
 
54412
#line 54413 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54413
} // closed Puma
 
54414
class CCExprResolve;
 
54415
class CExprResolve;
 
54416
class WinIfExists;
 
54417
class WinImportHandler;
 
54418
class WinMacros;
 
54419
class WinAsm;
 
54420
class WinDeclSpecs;
 
54421
class WinMemberExplSpec;
 
54422
class WinTypeKeywords;
 
54423
class WinFriend;
 
54424
class ExtAC;
 
54425
class ExtACBuilderCoupling;
 
54426
class ExtACSyntaxCoupling;
 
54427
class ExtACTree;
 
54428
class ExtACKeywords;
 
54429
class ExtGnu;
 
54430
class PragmaOnceUnitState;
 
54431
class PragmaOnce;
 
54432
class CMatchSyntax;
 
54433
namespace Puma {
 
54434
 
 
54435
#line 2517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54436
class CT_TypeParamDecl : public CT_TemplateParamDecl {
 
54437
#line 54438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54438
  friend class ::CCExprResolve;
 
54439
  friend class ::CExprResolve;
 
54440
  friend class ::WinIfExists;
 
54441
  friend class ::WinImportHandler;
 
54442
  friend class ::WinMacros;
 
54443
  friend class ::WinAsm;
 
54444
  friend class ::WinDeclSpecs;
 
54445
  friend class ::WinMemberExplSpec;
 
54446
  friend class ::WinTypeKeywords;
 
54447
  friend class ::WinFriend;
 
54448
  friend class ::ExtAC;
 
54449
  friend class ::ExtACBuilderCoupling;
 
54450
  friend class ::ExtACSyntaxCoupling;
 
54451
  friend class ::ExtACTree;
 
54452
  friend class ::ExtACKeywords;
 
54453
  friend class ::ExtGnu;
 
54454
  friend class ::PragmaOnceUnitState;
 
54455
  friend class ::PragmaOnce;
 
54456
  friend class ::CMatchSyntax;
 
54457
 
 
54458
#line 2517 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54459
 
 
54460
  CTree *sons[4]; // params, key, id, init
 
54461
 
 
54462
public:
 
54463
  /** Constructor.
 
54464
   *  \param pl The template parameter list of an template template parameter.
 
54465
   *  \param k The type keyword, i.e. 'class' or 'typename'.
 
54466
   *  \param id The parameter identifier.
 
54467
   *  \param i The default template argument. */
 
54468
  CT_TypeParamDecl (CTree *pl, CTree *k, CTree *id, CTree *i = (CTree*)0) { 
 
54469
    AddSon (sons[0], pl); AddSon (sons[1], k); 
 
54470
    AddSon (sons[2], id); AddSon (sons[3], i);
 
54471
  }
 
54472
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54473
  static const char *NodeId ();
 
54474
  /** Get the name of the node. Can be compared with NodeId(). */
 
54475
  const char *NodeName () const { return NodeId (); }
 
54476
  /** Get the number of sons. */
 
54477
  int Sons () const { return CTree::Sons (sons, 4); }
 
54478
  /** Get the n-th son.
 
54479
   *  \param n The index of the son.
 
54480
   *  \return The n-th son or NULL. */
 
54481
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
54482
  /** Get the template parameter list of a template template parameter. */
 
54483
  CT_TemplateParamList *Parameters () const { 
 
54484
    return (CT_TemplateParamList*)sons[0]; 
 
54485
  }
 
54486
  /** Get the templare parameter name. */
 
54487
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
54488
  /** Get the template default argument. */
 
54489
  CT_ExprList *DefaultArgument () const { return (CT_ExprList*)sons[3]; }
 
54490
  /** Set the template default argument.
 
54491
   *  \param i The default argument. */
 
54492
  void Initializer (CTree *i) { AddSon (sons[3], i); }
 
54493
  /** Replace a son.
 
54494
   *  \param old_son The son to replace.
 
54495
   *  \param new_son The new son. */
 
54496
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54497
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
54498
  }
 
54499
public:
 
54500
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
54501
  const char *__attr_name (unsigned i) const {
 
54502
    static const char *names[] = { "sons" }; return names[i];
 
54503
  }
 
54504
  const void *__attr (unsigned __i) const {
 
54505
    switch (__i) { case 0: return &sons; default: return 0; }
 
54506
  }
 
54507
#line 2557 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54508
};
 
54509
 
 
54510
/** \class CT_EnumDef CTree.h Puma/CTree.h
 
54511
 *  Tree node representing the definition of an enumeration. 
 
54512
 *  Example: \code enum E { A, B, C } \endcode */
 
54513
 
 
54514
#line 54515 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54515
} // closed Puma
 
54516
class CCExprResolve;
 
54517
class CExprResolve;
 
54518
class WinIfExists;
 
54519
class WinImportHandler;
 
54520
class WinMacros;
 
54521
class WinAsm;
 
54522
class WinDeclSpecs;
 
54523
class WinMemberExplSpec;
 
54524
class WinTypeKeywords;
 
54525
class WinFriend;
 
54526
class ExtAC;
 
54527
class ExtACBuilderCoupling;
 
54528
class ExtACSyntaxCoupling;
 
54529
class ExtACTree;
 
54530
class ExtACKeywords;
 
54531
class ExtGnu;
 
54532
class PragmaOnceUnitState;
 
54533
class PragmaOnce;
 
54534
class CMatchSyntax;
 
54535
namespace Puma {
 
54536
 
 
54537
#line 2562 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54538
class CT_EnumDef : public CT_Decl, public CSemObject {
 
54539
#line 54540 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54540
  friend class ::CCExprResolve;
 
54541
  friend class ::CExprResolve;
 
54542
  friend class ::WinIfExists;
 
54543
  friend class ::WinImportHandler;
 
54544
  friend class ::WinMacros;
 
54545
  friend class ::WinAsm;
 
54546
  friend class ::WinDeclSpecs;
 
54547
  friend class ::WinMemberExplSpec;
 
54548
  friend class ::WinTypeKeywords;
 
54549
  friend class ::WinFriend;
 
54550
  friend class ::ExtAC;
 
54551
  friend class ::ExtACBuilderCoupling;
 
54552
  friend class ::ExtACSyntaxCoupling;
 
54553
  friend class ::ExtACTree;
 
54554
  friend class ::ExtACKeywords;
 
54555
  friend class ::ExtGnu;
 
54556
  friend class ::PragmaOnceUnitState;
 
54557
  friend class ::PragmaOnce;
 
54558
  friend class ::CMatchSyntax;
 
54559
 
 
54560
#line 2562 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54561
 
 
54562
  CTree *sons[3]; // key, name, enumerators
 
54563
 
 
54564
public:
 
54565
  /** Constructor.
 
54566
   *  \param k The keyword 'enum'.
 
54567
   *  \param n The name of the enumeration. */
 
54568
  CT_EnumDef (CTree *k, CTree *n) {
 
54569
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], 0); 
 
54570
  }
 
54571
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54572
  static const char *NodeId ();
 
54573
  /** Get the name of the node. Can be compared with NodeId(). */
 
54574
  const char *NodeName () const { return NodeId (); }
 
54575
  /** Get the number of sons. */
 
54576
  int Sons () const { return CTree::Sons (sons, 3); }
 
54577
  /** Get the n-th son.
 
54578
   *  \param n The index of the son.
 
54579
   *  \return The n-th son or NULL. */
 
54580
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
54581
  /** Get the name of the enumeration. */
 
54582
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
54583
  /** Set the list of enumeration constants.
 
54584
   *  \param el The enumerator list. */
 
54585
  void Enumerators (CTree *el) { AddSon (sons[2], el); }
 
54586
  /** Get the list of enumeration constants. */
 
54587
  CT_EnumeratorList *Enumerators () const { return (CT_EnumeratorList*)sons[2]; }
 
54588
  /** Replace a son.
 
54589
   *  \param old_son The son to replace.
 
54590
   *  \param new_son The new son. */
 
54591
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54592
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
54593
  }
 
54594
  /** Get the semantic information about the enumeration. */
 
54595
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
54596
public:
 
54597
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
54598
  const char *__attr_name (unsigned i) const {
 
54599
    static const char *names[] = { "sons" }; return names[i];
 
54600
  }
 
54601
  const void *__attr (unsigned __i) const {
 
54602
    switch (__i) { case 0: return &sons; default: return 0; }
 
54603
  }
 
54604
#line 2597 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54605
};
 
54606
 
 
54607
/** \class CT_Enumerator CTree.h Puma/CTree.h
 
54608
 *  Tree node representing a single enumeration constant. */
 
54609
 
 
54610
#line 54611 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54611
} // closed Puma
 
54612
class CCExprResolve;
 
54613
class CExprResolve;
 
54614
class WinIfExists;
 
54615
class WinImportHandler;
 
54616
class WinMacros;
 
54617
class WinAsm;
 
54618
class WinDeclSpecs;
 
54619
class WinMemberExplSpec;
 
54620
class WinTypeKeywords;
 
54621
class WinFriend;
 
54622
class ExtAC;
 
54623
class ExtACBuilderCoupling;
 
54624
class ExtACSyntaxCoupling;
 
54625
class ExtACTree;
 
54626
class ExtACKeywords;
 
54627
class ExtGnu;
 
54628
class PragmaOnceUnitState;
 
54629
class PragmaOnce;
 
54630
class CMatchSyntax;
 
54631
namespace Puma {
 
54632
 
 
54633
#line 2601 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54634
class CT_Enumerator : public CT_Decl, public CSemObject {
 
54635
#line 54636 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54636
  friend class ::CCExprResolve;
 
54637
  friend class ::CExprResolve;
 
54638
  friend class ::WinIfExists;
 
54639
  friend class ::WinImportHandler;
 
54640
  friend class ::WinMacros;
 
54641
  friend class ::WinAsm;
 
54642
  friend class ::WinDeclSpecs;
 
54643
  friend class ::WinMemberExplSpec;
 
54644
  friend class ::WinTypeKeywords;
 
54645
  friend class ::WinFriend;
 
54646
  friend class ::ExtAC;
 
54647
  friend class ::ExtACBuilderCoupling;
 
54648
  friend class ::ExtACSyntaxCoupling;
 
54649
  friend class ::ExtACTree;
 
54650
  friend class ::ExtACKeywords;
 
54651
  friend class ::ExtGnu;
 
54652
  friend class ::PragmaOnceUnitState;
 
54653
  friend class ::PragmaOnce;
 
54654
  friend class ::CMatchSyntax;
 
54655
 
 
54656
#line 2601 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54657
 
 
54658
  CTree *sons[2]; // name, init
 
54659
 
 
54660
public:
 
54661
  /** Constructor.
 
54662
   *  \param n The name of the enumerator. */
 
54663
  CT_Enumerator (CTree *n) { AddSon (sons[0], n); AddSon (sons[1], 0); }
 
54664
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54665
  static const char *NodeId ();
 
54666
  /** Get the name of the node. Can be compared with NodeId(). */
 
54667
  const char *NodeName () const { return NodeId (); }
 
54668
  /** Get the number of sons. */
 
54669
  int Sons () const { return CTree::Sons (sons, 2); }
 
54670
  /** Get the n-th son.
 
54671
   *  \param n The index of the son.
 
54672
   *  \return The n-th son or NULL. */
 
54673
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
54674
  /** Get the name of the enumerator. */
 
54675
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
54676
  /** Set the initializer expression of the enumerator. */
 
54677
  void Initializer (CTree *i) { AddSon (sons[1], i); }
 
54678
  /** Get the initializer expression of the enumerator. */
 
54679
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
54680
  /** Replace a son.
 
54681
   *  \param old_son The son to replace.
 
54682
   *  \param new_son The new son. */
 
54683
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54684
    CTree::ReplaceSon (sons, 2, old_son, new_son); 
 
54685
  }
 
54686
  /** Get the semantic information about the enumerator. */
 
54687
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
54688
public:
 
54689
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
54690
  const char *__attr_name (unsigned i) const {
 
54691
    static const char *names[] = { "sons" }; return names[i];
 
54692
  }
 
54693
  const void *__attr (unsigned __i) const {
 
54694
    switch (__i) { case 0: return &sons; default: return 0; }
 
54695
  }
 
54696
#line 2632 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54697
};
 
54698
 
 
54699
/** \class CT_FctDef CTree.h Puma/CTree.h
 
54700
 *  Tree node representing a function definition. 
 
54701
 *  Example:
 
54702
 *  \code
 
54703
 * int mul(int x, int y) {
 
54704
 *   return x*y;
 
54705
 * }
 
54706
 *  \endcode */
 
54707
 
 
54708
#line 54709 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54709
} // closed Puma
 
54710
class CCExprResolve;
 
54711
class CExprResolve;
 
54712
class WinIfExists;
 
54713
class WinImportHandler;
 
54714
class WinMacros;
 
54715
class WinAsm;
 
54716
class WinDeclSpecs;
 
54717
class WinMemberExplSpec;
 
54718
class WinTypeKeywords;
 
54719
class WinFriend;
 
54720
class ExtAC;
 
54721
class ExtACBuilderCoupling;
 
54722
class ExtACSyntaxCoupling;
 
54723
class ExtACTree;
 
54724
class ExtACKeywords;
 
54725
class ExtGnu;
 
54726
class PragmaOnceUnitState;
 
54727
class PragmaOnce;
 
54728
class CMatchSyntax;
 
54729
namespace Puma {
 
54730
 
 
54731
#line 2642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54732
class CT_FctDef : public CT_Decl, public CSemObject {
 
54733
#line 54734 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54734
  friend class ::CCExprResolve;
 
54735
  friend class ::CExprResolve;
 
54736
  friend class ::WinIfExists;
 
54737
  friend class ::WinImportHandler;
 
54738
  friend class ::WinMacros;
 
54739
  friend class ::WinAsm;
 
54740
  friend class ::WinDeclSpecs;
 
54741
  friend class ::WinMemberExplSpec;
 
54742
  friend class ::WinTypeKeywords;
 
54743
  friend class ::WinFriend;
 
54744
  friend class ::ExtAC;
 
54745
  friend class ::ExtACBuilderCoupling;
 
54746
  friend class ::ExtACSyntaxCoupling;
 
54747
  friend class ::ExtACTree;
 
54748
  friend class ::ExtACKeywords;
 
54749
  friend class ::ExtGnu;
 
54750
  friend class ::PragmaOnceUnitState;
 
54751
  friend class ::PragmaOnce;
 
54752
  friend class ::CMatchSyntax;
 
54753
 
 
54754
#line 2642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54755
 
 
54756
  CTree *sons[7]; // declspecs, declarator, try, ctor_init, args, body, handlers
 
54757
 
 
54758
public:
 
54759
  /** Constructor.
 
54760
   *  \param dss The declaration specifier sequence. 
 
54761
   *  \param d The function declarator.
 
54762
   *  \param t Optional keyword 'try' for a function try-block.
 
54763
   *  \param ci Optional constructor initializer list.
 
54764
   *  \param as Optional K&R argument declaration list.
 
54765
   *  \param b The function body.
 
54766
   *  \param hs Exception handler sequence for a function try-block. */
 
54767
  CT_FctDef (CTree *dss, CTree *d, CTree *t, CTree *ci, CTree *as, 
 
54768
             CTree *b, CTree *hs) {
 
54769
    AddSon (sons[0], dss); AddSon (sons[1], d); AddSon (sons[2], t); 
 
54770
    AddSon (sons[3], ci); AddSon (sons[4], as); AddSon (sons[5], b); 
 
54771
    AddSon (sons[6], hs); 
 
54772
  }
 
54773
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54774
  static const char *NodeId ();
 
54775
  /** Get the name of the node. Can be compared with NodeId(). */
 
54776
  const char *NodeName () const { return NodeId (); }
 
54777
  /** Get the number of sons. */
 
54778
  int Sons () const { return CTree::Sons (sons, 7); }
 
54779
  /** Get the n-th son.
 
54780
   *  \param n The index of the son.
 
54781
   *  \return The n-th son or NULL. */
 
54782
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
54783
  /** Get the declaration specifier sequence. */
 
54784
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
54785
  /** Get the function declarator. */
 
54786
  CTree *Declarator () const { return sons[1]; }
 
54787
  /** Get the 'try' keyword of the function try-block. */
 
54788
  CT_Token *TryKey () const { return (CT_Token*)sons[2]; }
 
54789
  /** Get the constructor initializer list. */
 
54790
  CTree *CtorInit () const { return sons[3]; }
 
54791
  /** Get the K&R argument declaration sequence. */
 
54792
  CT_ArgDeclSeq *ArgDeclSeq () const { return (CT_ArgDeclSeq*)sons[4]; }
 
54793
  /** Get the function body. */
 
54794
  CT_CmpdStmt *Body () const { return (CT_CmpdStmt*)sons[5]; }
 
54795
  /** Get the exception handler sequence of a function try-block. */
 
54796
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[6]; }
 
54797
  /** Get the semantic information about the function. */
 
54798
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
54799
  /** Set the constructor initializer list. 
 
54800
   *  \param i The initializer list. */
 
54801
  void CtorInit (CTree *i) { AddSon (sons[3], i); }
 
54802
  /** Set the function body.
 
54803
   *  \param b The function body. */
 
54804
  void Body (CTree *b) { AddSon (sons[5], b); }
 
54805
  /** Set the function try-block.
 
54806
   *  \param t The keyword 'try'.
 
54807
   *  \param c Optional constructor initializer list.
 
54808
   *  \param b The function body.
 
54809
   *  \param h The exception handler sequence. */
 
54810
  void FctTryBlock (CTree *t, CTree *c, CTree *b, CTree *h) { 
 
54811
    AddSon (sons[2], t); AddSon (sons[3], c); 
 
54812
    AddSon (sons[5], b); AddSon (sons[6], h);
 
54813
  }
 
54814
  /** Replace a son.
 
54815
   *  \param old_son The son to replace.
 
54816
   *  \param new_son The new son. */
 
54817
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54818
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
54819
  }
 
54820
public:
 
54821
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
54822
  const char *__attr_name (unsigned i) const {
 
54823
    static const char *names[] = { "sons" }; return names[i];
 
54824
  }
 
54825
  const void *__attr (unsigned __i) const {
 
54826
    switch (__i) { case 0: return &sons; default: return 0; }
 
54827
  }
 
54828
#line 2707 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54829
};
 
54830
 
 
54831
/** \class CT_AsmDef CTree.h Puma/CTree.h
 
54832
 *  Tree node representing an inline assembly definition. 
 
54833
 *  Example: \code asm("movl %ecx %eax"); \endcode */
 
54834
 
 
54835
#line 54836 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54836
} // closed Puma
 
54837
class CCExprResolve;
 
54838
class CExprResolve;
 
54839
class WinIfExists;
 
54840
class WinImportHandler;
 
54841
class WinMacros;
 
54842
class WinAsm;
 
54843
class WinDeclSpecs;
 
54844
class WinMemberExplSpec;
 
54845
class WinTypeKeywords;
 
54846
class WinFriend;
 
54847
class ExtAC;
 
54848
class ExtACBuilderCoupling;
 
54849
class ExtACSyntaxCoupling;
 
54850
class ExtACTree;
 
54851
class ExtACKeywords;
 
54852
class ExtGnu;
 
54853
class PragmaOnceUnitState;
 
54854
class PragmaOnce;
 
54855
class CMatchSyntax;
 
54856
namespace Puma {
 
54857
 
 
54858
#line 2712 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54859
class CT_AsmDef : public CT_Decl {
 
54860
#line 54861 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54861
  friend class ::CCExprResolve;
 
54862
  friend class ::CExprResolve;
 
54863
  friend class ::WinIfExists;
 
54864
  friend class ::WinImportHandler;
 
54865
  friend class ::WinMacros;
 
54866
  friend class ::WinAsm;
 
54867
  friend class ::WinDeclSpecs;
 
54868
  friend class ::WinMemberExplSpec;
 
54869
  friend class ::WinTypeKeywords;
 
54870
  friend class ::WinFriend;
 
54871
  friend class ::ExtAC;
 
54872
  friend class ::ExtACBuilderCoupling;
 
54873
  friend class ::ExtACSyntaxCoupling;
 
54874
  friend class ::ExtACTree;
 
54875
  friend class ::ExtACKeywords;
 
54876
  friend class ::ExtGnu;
 
54877
  friend class ::PragmaOnceUnitState;
 
54878
  friend class ::PragmaOnce;
 
54879
  friend class ::CMatchSyntax;
 
54880
 
 
54881
#line 2712 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54882
 
 
54883
  CTree *sons[5]; // asm, open, str, close, semi_colon
 
54884
 
 
54885
public:
 
54886
  /** Constructor.
 
54887
   *  \param a The keyword 'asm'.
 
54888
   *  \param o Left parenthesis around the assembler code string. 
 
54889
   *  \param s The assembler code.
 
54890
   *  \param c Right parenthesis around the assembler code string.
 
54891
   *  \param sc Trailing semi-colon. */
 
54892
  CT_AsmDef (CTree *a, CTree *o, CTree *s, CTree *c, CTree *sc) {
 
54893
    AddSon (sons[0], a); AddSon (sons[1], o); AddSon (sons[2], s); 
 
54894
    AddSon (sons[3], c); AddSon (sons[4], sc); 
 
54895
  }
 
54896
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54897
  static const char *NodeId ();
 
54898
  /** Get the name of the node. Can be compared with NodeId(). */
 
54899
  const char *NodeName () const { return NodeId (); }
 
54900
  /** Get the number of sons. */
 
54901
  int Sons () const { return 5; }
 
54902
  /** Get the n-th son.
 
54903
   *  \param n The index of the son.
 
54904
   *  \return The n-th son or NULL. */
 
54905
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
54906
  /** Get the assembler code. */
 
54907
  CT_String *Instructions () const { return (CT_String*)sons[2]; }
 
54908
  /** Replace a son.
 
54909
   *  \param old_son The son to replace.
 
54910
   *  \param new_son The new son. */
 
54911
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
54912
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
54913
  }
 
54914
public:
 
54915
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
54916
  const char *__attr_name (unsigned i) const {
 
54917
    static const char *names[] = { "sons" }; return names[i];
 
54918
  }
 
54919
  const void *__attr (unsigned __i) const {
 
54920
    switch (__i) { case 0: return &sons; default: return 0; }
 
54921
  }
 
54922
#line 2744 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54923
};
 
54924
 
 
54925
/** \class CT_Handler CTree.h Puma/CTree.h
 
54926
 *  Tree node representing an exception handler. */
 
54927
 
 
54928
#line 54929 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54929
} // closed Puma
 
54930
class CCExprResolve;
 
54931
class CExprResolve;
 
54932
class WinIfExists;
 
54933
class WinImportHandler;
 
54934
class WinMacros;
 
54935
class WinAsm;
 
54936
class WinDeclSpecs;
 
54937
class WinMemberExplSpec;
 
54938
class WinTypeKeywords;
 
54939
class WinFriend;
 
54940
class ExtAC;
 
54941
class ExtACBuilderCoupling;
 
54942
class ExtACSyntaxCoupling;
 
54943
class ExtACTree;
 
54944
class ExtACKeywords;
 
54945
class ExtGnu;
 
54946
class PragmaOnceUnitState;
 
54947
class PragmaOnce;
 
54948
class CMatchSyntax;
 
54949
namespace Puma {
 
54950
 
 
54951
#line 2748 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54952
class CT_Handler : public CT_Decl, public CSemScope {
 
54953
#line 54954 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
54954
  friend class ::CCExprResolve;
 
54955
  friend class ::CExprResolve;
 
54956
  friend class ::WinIfExists;
 
54957
  friend class ::WinImportHandler;
 
54958
  friend class ::WinMacros;
 
54959
  friend class ::WinAsm;
 
54960
  friend class ::WinDeclSpecs;
 
54961
  friend class ::WinMemberExplSpec;
 
54962
  friend class ::WinTypeKeywords;
 
54963
  friend class ::WinFriend;
 
54964
  friend class ::ExtAC;
 
54965
  friend class ::ExtACBuilderCoupling;
 
54966
  friend class ::ExtACSyntaxCoupling;
 
54967
  friend class ::ExtACTree;
 
54968
  friend class ::ExtACKeywords;
 
54969
  friend class ::ExtGnu;
 
54970
  friend class ::PragmaOnceUnitState;
 
54971
  friend class ::PragmaOnce;
 
54972
  friend class ::CMatchSyntax;
 
54973
 
 
54974
#line 2748 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
54975
 
 
54976
  CTree *sons[3]; // catch, exception_decl, stmt
 
54977
 
 
54978
public:
 
54979
  /** Constructor.
 
54980
   *  \param c The keyword 'catch'.
 
54981
   *  \param e The exception object declaration.
 
54982
   *  \param s The exception handling statement. */
 
54983
  CT_Handler (CTree *c, CTree *e, CTree *s) {
 
54984
    AddSon (sons[0], c); AddSon (sons[1], e); AddSon (sons[2], s);
 
54985
  }
 
54986
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
54987
  static const char *NodeId ();
 
54988
  /** Get the name of the node. Can be compared with NodeId(). */
 
54989
  const char *NodeName () const { return NodeId (); }
 
54990
  /** Get the number of sons. */
 
54991
  int Sons () const { return 3; }
 
54992
  /** Get the n-th son.
 
54993
   *  \param n The index of the son.
 
54994
   *  \return The n-th son or NULL. */
 
54995
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
54996
  /** Get the exception object declaration. */
 
54997
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
54998
  /** Get the exception handling statement. */
 
54999
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
55000
  /** Replace a son.
 
55001
   *  \param old_son The son to replace.
 
55002
   *  \param new_son The new son. */
 
55003
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55004
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
55005
  }
 
55006
  /** Get the scope opened by the handler. */
 
55007
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
55008
public:
 
55009
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
55010
  const char *__attr_name (unsigned i) const {
 
55011
    static const char *names[] = { "sons" }; return names[i];
 
55012
  }
 
55013
  const void *__attr (unsigned __i) const {
 
55014
    switch (__i) { case 0: return &sons; default: return 0; }
 
55015
  }
 
55016
#line 2781 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55017
};
 
55018
 
 
55019
/** \class CT_LinkageSpec CTree.h Puma/CTree.h
 
55020
 *  Tree node representing a list of declaration with a specific linkage. */
 
55021
 
 
55022
#line 55023 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55023
} // closed Puma
 
55024
class CCExprResolve;
 
55025
class CExprResolve;
 
55026
class WinIfExists;
 
55027
class WinImportHandler;
 
55028
class WinMacros;
 
55029
class WinAsm;
 
55030
class WinDeclSpecs;
 
55031
class WinMemberExplSpec;
 
55032
class WinTypeKeywords;
 
55033
class WinFriend;
 
55034
class ExtAC;
 
55035
class ExtACBuilderCoupling;
 
55036
class ExtACSyntaxCoupling;
 
55037
class ExtACTree;
 
55038
class ExtACKeywords;
 
55039
class ExtGnu;
 
55040
class PragmaOnceUnitState;
 
55041
class PragmaOnce;
 
55042
class CMatchSyntax;
 
55043
namespace Puma {
 
55044
 
 
55045
#line 2785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55046
class CT_LinkageSpec : public CT_Decl {
 
55047
#line 55048 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55048
  friend class ::CCExprResolve;
 
55049
  friend class ::CExprResolve;
 
55050
  friend class ::WinIfExists;
 
55051
  friend class ::WinImportHandler;
 
55052
  friend class ::WinMacros;
 
55053
  friend class ::WinAsm;
 
55054
  friend class ::WinDeclSpecs;
 
55055
  friend class ::WinMemberExplSpec;
 
55056
  friend class ::WinTypeKeywords;
 
55057
  friend class ::WinFriend;
 
55058
  friend class ::ExtAC;
 
55059
  friend class ::ExtACBuilderCoupling;
 
55060
  friend class ::ExtACSyntaxCoupling;
 
55061
  friend class ::ExtACTree;
 
55062
  friend class ::ExtACKeywords;
 
55063
  friend class ::ExtGnu;
 
55064
  friend class ::PragmaOnceUnitState;
 
55065
  friend class ::PragmaOnce;
 
55066
  friend class ::CMatchSyntax;
 
55067
 
 
55068
#line 2785 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55069
 
 
55070
  CTree *sons[5]; // extern, str, open, decls, close
 
55071
 
 
55072
public:
 
55073
  /** Constructor.
 
55074
   *  \param e The keyword 'extern'.
 
55075
   *  \param s The linkage identifier, e.g. "C".
 
55076
   *  \param o Left parenthesis around the declaration list.
 
55077
   *  \param d The list of declarations.
 
55078
   *  \param c Right parenthesis around the declaration list. */
 
55079
  CT_LinkageSpec (CTree *e, CTree *s, CTree *o, CTree *d, CTree *c) {
 
55080
    AddSon (sons[0], e); AddSon (sons[1], s); AddSon (sons[2], o); 
 
55081
    AddSon (sons[3], d); AddSon (sons[4], c);
 
55082
    if (isList ())
 
55083
      ((CT_DeclList*)Decls ())->Linkage (this);
 
55084
    else
 
55085
      ((CT_Decl*)Decls ())->Linkage (this);
 
55086
  }
 
55087
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55088
  static const char *NodeId ();
 
55089
  /** Get the name of the node. Can be compared with NodeId(). */
 
55090
  const char *NodeName () const { return NodeId (); }
 
55091
  /** Get the number of sons. */
 
55092
  int Sons () const { return CTree::Sons (sons, 5); }
 
55093
  /** Get the n-th son.
 
55094
   *  \param n The index of the son.
 
55095
   *  \return The n-th son or NULL. */
 
55096
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
55097
  /** Get the linkage identifier. */
 
55098
  CT_String *Linkage () const { return (CT_String*)sons[1]; }
 
55099
  /** Get the list declarations. */
 
55100
  CTree *Decls () const { return sons[3]; }
 
55101
  /** Check if there is more than one enclosed declaration. 
 
55102
   *  In this case the node returned by Decls() is a CT_DeclList
 
55103
   *  node. */
 
55104
  bool isList () const {
 
55105
    return Decls ()->NodeName () == CT_DeclList::NodeId ();
 
55106
  }
 
55107
  /** Replace a son.
 
55108
   *  \param old_son The son to replace.
 
55109
   *  \param new_son The new son. */
 
55110
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55111
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
55112
  }
 
55113
public:
 
55114
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
55115
  const char *__attr_name (unsigned i) const {
 
55116
    static const char *names[] = { "sons" }; return names[i];
 
55117
  }
 
55118
  const void *__attr (unsigned __i) const {
 
55119
    switch (__i) { case 0: return &sons; default: return 0; }
 
55120
  }
 
55121
#line 2829 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55122
};
 
55123
 
 
55124
/** \class CT_ArgDecl CTree.h Puma/CTree.h
 
55125
 *  Tree node representing the declaration of a function parameter. */
 
55126
 
 
55127
#line 55128 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55128
} // closed Puma
 
55129
class CCExprResolve;
 
55130
class CExprResolve;
 
55131
class WinIfExists;
 
55132
class WinImportHandler;
 
55133
class WinMacros;
 
55134
class WinAsm;
 
55135
class WinDeclSpecs;
 
55136
class WinMemberExplSpec;
 
55137
class WinTypeKeywords;
 
55138
class WinFriend;
 
55139
class ExtAC;
 
55140
class ExtACBuilderCoupling;
 
55141
class ExtACSyntaxCoupling;
 
55142
class ExtACTree;
 
55143
class ExtACKeywords;
 
55144
class ExtGnu;
 
55145
class PragmaOnceUnitState;
 
55146
class PragmaOnce;
 
55147
class CMatchSyntax;
 
55148
namespace Puma {
 
55149
 
 
55150
#line 2833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55151
class CT_ArgDecl : public CT_Decl, public CSemObject {
 
55152
#line 55153 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55153
  friend class ::CCExprResolve;
 
55154
  friend class ::CExprResolve;
 
55155
  friend class ::WinIfExists;
 
55156
  friend class ::WinImportHandler;
 
55157
  friend class ::WinMacros;
 
55158
  friend class ::WinAsm;
 
55159
  friend class ::WinDeclSpecs;
 
55160
  friend class ::WinMemberExplSpec;
 
55161
  friend class ::WinTypeKeywords;
 
55162
  friend class ::WinFriend;
 
55163
  friend class ::ExtAC;
 
55164
  friend class ::ExtACBuilderCoupling;
 
55165
  friend class ::ExtACSyntaxCoupling;
 
55166
  friend class ::ExtACTree;
 
55167
  friend class ::ExtACKeywords;
 
55168
  friend class ::ExtGnu;
 
55169
  friend class ::PragmaOnceUnitState;
 
55170
  friend class ::PragmaOnce;
 
55171
  friend class ::CMatchSyntax;
 
55172
 
 
55173
#line 2833 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55174
 
 
55175
  CTree *sons[4]; // declspecs, declarator, init, ellipsis
 
55176
 
 
55177
public:
 
55178
  /** Constructor.
 
55179
   *  \param dsl The declaration specifier sequence.
 
55180
   *  \param d The parameter declarator. */
 
55181
  CT_ArgDecl (CTree *dsl, CTree *d) {
 
55182
    AddSon (sons[0], dsl); AddSon (sons[1], d); 
 
55183
    AddSon (sons[2], 0); AddSon (sons[3], 0); 
 
55184
  }
 
55185
  /** Constructor.
 
55186
   *  \param ellipsis The variable argument list operator "...". */
 
55187
  CT_ArgDecl (CTree *ellipsis) {
 
55188
    AddSon (sons[0], 0); AddSon (sons[1], 0); 
 
55189
    AddSon (sons[2], 0); AddSon (sons[3], ellipsis); 
 
55190
  }
 
55191
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55192
  static const char *NodeId ();
 
55193
  /** Get the name of the node. Can be compared with NodeId(). */
 
55194
  const char *NodeName () const { return NodeId (); }
 
55195
  /** Get the number of sons. */
 
55196
  int Sons () const { return CTree::Sons (sons, 4); }
 
55197
  /** Get the n-th son.
 
55198
   *  \param n The index of the son.
 
55199
   *  \return The n-th son or NULL. */
 
55200
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
55201
  /** Get the declaration specifier sequence. */
 
55202
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
55203
  /** Get the function parameter declarator. */
 
55204
  CTree *Declarator () const { return sons[1]; }
 
55205
  /** Get the default argument. */
 
55206
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
55207
  /** Get the variable argument list operator. */
 
55208
  CT_Token *Ellipsis () const { return (CT_Token*)sons[3]; }
 
55209
  /** Get the semantic information about the function parameter. */
 
55210
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
55211
  /** Set the default argument. */
 
55212
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
55213
  /** Replace a son.
 
55214
   *  \param old_son The son to replace.
 
55215
   *  \param new_son The new son. */
 
55216
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55217
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
55218
  }
 
55219
public:
 
55220
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
55221
  const char *__attr_name (unsigned i) const {
 
55222
    static const char *names[] = { "sons" }; return names[i];
 
55223
  }
 
55224
  const void *__attr (unsigned __i) const {
 
55225
    switch (__i) { case 0: return &sons; default: return 0; }
 
55226
  }
 
55227
#line 2878 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55228
};
 
55229
 
 
55230
/** \class CT_ArgDeclList CTree.h Puma/CTree.h
 
55231
 *  Tree node representing a function parameter list. */
 
55232
 
 
55233
#line 55234 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55234
} // closed Puma
 
55235
class CCExprResolve;
 
55236
class CExprResolve;
 
55237
class WinIfExists;
 
55238
class WinImportHandler;
 
55239
class WinMacros;
 
55240
class WinAsm;
 
55241
class WinDeclSpecs;
 
55242
class WinMemberExplSpec;
 
55243
class WinTypeKeywords;
 
55244
class WinFriend;
 
55245
class ExtAC;
 
55246
class ExtACBuilderCoupling;
 
55247
class ExtACSyntaxCoupling;
 
55248
class ExtACTree;
 
55249
class ExtACKeywords;
 
55250
class ExtGnu;
 
55251
class PragmaOnceUnitState;
 
55252
class PragmaOnce;
 
55253
class CMatchSyntax;
 
55254
namespace Puma {
 
55255
 
 
55256
#line 2882 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55257
class CT_ArgDeclList : public CT_DeclList, public CSemScope {
 
55258
#line 55259 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55259
  friend class ::CCExprResolve;
 
55260
  friend class ::CExprResolve;
 
55261
  friend class ::WinIfExists;
 
55262
  friend class ::WinImportHandler;
 
55263
  friend class ::WinMacros;
 
55264
  friend class ::WinAsm;
 
55265
  friend class ::WinDeclSpecs;
 
55266
  friend class ::WinMemberExplSpec;
 
55267
  friend class ::WinTypeKeywords;
 
55268
  friend class ::WinFriend;
 
55269
  friend class ::ExtAC;
 
55270
  friend class ::ExtACBuilderCoupling;
 
55271
  friend class ::ExtACSyntaxCoupling;
 
55272
  friend class ::ExtACTree;
 
55273
  friend class ::ExtACKeywords;
 
55274
  friend class ::ExtGnu;
 
55275
  friend class ::PragmaOnceUnitState;
 
55276
  friend class ::PragmaOnce;
 
55277
  friend class ::CMatchSyntax;
 
55278
 
 
55279
#line 2882 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55280
 
 
55281
public:
 
55282
  /** Constructor.
 
55283
   *  \param size The initial size of the list.
 
55284
   *  \param props The list properties. */
 
55285
  CT_ArgDeclList (int size = 2, int props = SEPARATORS | OPEN_CLOSE) : 
 
55286
   CT_DeclList (size, 2) { AddProperties (props); }
 
55287
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55288
  static const char *NodeId ();
 
55289
  /** Get the name of the node. Can be compared with NodeId(). */
 
55290
  const char *NodeName () const { return NodeId (); }
 
55291
  /** Get the scope opened by the parameter list. */
 
55292
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
55293
public:
 
55294
  typedef AC::TLE __AttrTypes;
 
55295
  const char *__attr_name (unsigned i) const { return 0; }
 
55296
  const void *__attr (unsigned __i) const { return 0; }
 
55297
#line 2895 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55298
};
 
55299
 
 
55300
/** \class CT_ArgDeclSeq CTree.h Puma/CTree.h
 
55301
 *  Tree node representing a K&R function parameter declarations list. */
 
55302
 
 
55303
#line 55304 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55304
} // closed Puma
 
55305
class CCExprResolve;
 
55306
class CExprResolve;
 
55307
class WinIfExists;
 
55308
class WinImportHandler;
 
55309
class WinMacros;
 
55310
class WinAsm;
 
55311
class WinDeclSpecs;
 
55312
class WinMemberExplSpec;
 
55313
class WinTypeKeywords;
 
55314
class WinFriend;
 
55315
class ExtAC;
 
55316
class ExtACBuilderCoupling;
 
55317
class ExtACSyntaxCoupling;
 
55318
class ExtACTree;
 
55319
class ExtACKeywords;
 
55320
class ExtGnu;
 
55321
class PragmaOnceUnitState;
 
55322
class PragmaOnce;
 
55323
class CMatchSyntax;
 
55324
namespace Puma {
 
55325
 
 
55326
#line 2899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55327
class CT_ArgDeclSeq : public CT_DeclList, public CSemScope {
 
55328
#line 55329 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55329
  friend class ::CCExprResolve;
 
55330
  friend class ::CExprResolve;
 
55331
  friend class ::WinIfExists;
 
55332
  friend class ::WinImportHandler;
 
55333
  friend class ::WinMacros;
 
55334
  friend class ::WinAsm;
 
55335
  friend class ::WinDeclSpecs;
 
55336
  friend class ::WinMemberExplSpec;
 
55337
  friend class ::WinTypeKeywords;
 
55338
  friend class ::WinFriend;
 
55339
  friend class ::ExtAC;
 
55340
  friend class ::ExtACBuilderCoupling;
 
55341
  friend class ::ExtACSyntaxCoupling;
 
55342
  friend class ::ExtACTree;
 
55343
  friend class ::ExtACKeywords;
 
55344
  friend class ::ExtGnu;
 
55345
  friend class ::PragmaOnceUnitState;
 
55346
  friend class ::PragmaOnce;
 
55347
  friend class ::CMatchSyntax;
 
55348
 
 
55349
#line 2899 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55350
 
 
55351
public:
 
55352
  /** Constructor.
 
55353
   *  \param size The initial size of the list. */
 
55354
  CT_ArgDeclSeq (int size = 2) : CT_DeclList (size, 2) {}
 
55355
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55356
  static const char *NodeId ();
 
55357
  /** Get the name of the node. Can be compared with NodeId(). */
 
55358
  const char *NodeName () const { return NodeId (); }
 
55359
  /** Get the scope opened by the parameter declarations list. */
 
55360
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
55361
public:
 
55362
  typedef AC::TLE __AttrTypes;
 
55363
  const char *__attr_name (unsigned i) const { return 0; }
 
55364
  const void *__attr (unsigned __i) const { return 0; }
 
55365
#line 2910 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55366
};
 
55367
 
 
55368
/** \class CT_ArgNameList CTree.h Puma/CTree.h
 
55369
 *  Tree node representing a K&R function parameter name list. */
 
55370
 
 
55371
#line 55372 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55372
} // closed Puma
 
55373
class CCExprResolve;
 
55374
class CExprResolve;
 
55375
class WinIfExists;
 
55376
class WinImportHandler;
 
55377
class WinMacros;
 
55378
class WinAsm;
 
55379
class WinDeclSpecs;
 
55380
class WinMemberExplSpec;
 
55381
class WinTypeKeywords;
 
55382
class WinFriend;
 
55383
class ExtAC;
 
55384
class ExtACBuilderCoupling;
 
55385
class ExtACSyntaxCoupling;
 
55386
class ExtACTree;
 
55387
class ExtACKeywords;
 
55388
class ExtGnu;
 
55389
class PragmaOnceUnitState;
 
55390
class PragmaOnce;
 
55391
class CMatchSyntax;
 
55392
namespace Puma {
 
55393
 
 
55394
#line 2914 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55395
class CT_ArgNameList : public CT_ArgDeclList {
 
55396
#line 55397 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55397
  friend class ::CCExprResolve;
 
55398
  friend class ::CExprResolve;
 
55399
  friend class ::WinIfExists;
 
55400
  friend class ::WinImportHandler;
 
55401
  friend class ::WinMacros;
 
55402
  friend class ::WinAsm;
 
55403
  friend class ::WinDeclSpecs;
 
55404
  friend class ::WinMemberExplSpec;
 
55405
  friend class ::WinTypeKeywords;
 
55406
  friend class ::WinFriend;
 
55407
  friend class ::ExtAC;
 
55408
  friend class ::ExtACBuilderCoupling;
 
55409
  friend class ::ExtACSyntaxCoupling;
 
55410
  friend class ::ExtACTree;
 
55411
  friend class ::ExtACKeywords;
 
55412
  friend class ::ExtGnu;
 
55413
  friend class ::PragmaOnceUnitState;
 
55414
  friend class ::PragmaOnce;
 
55415
  friend class ::CMatchSyntax;
 
55416
 
 
55417
#line 2914 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55418
 
 
55419
public:
 
55420
  /** Constructor. */
 
55421
  CT_ArgNameList () : CT_ArgDeclList () {}
 
55422
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55423
  static const char *NodeId ();
 
55424
  /** Get the name of the node. Can be compared with NodeId(). */
 
55425
  const char *NodeName () const { return NodeId (); }
 
55426
public:
 
55427
  typedef AC::TLE __AttrTypes;
 
55428
  const char *__attr_name (unsigned i) const { return 0; }
 
55429
  const void *__attr (unsigned __i) const { return 0; }
 
55430
#line 2922 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55431
};
 
55432
 
 
55433
/** \class CT_NamespaceDef CTree.h Puma/CTree.h
 
55434
 *  Tree node representing a namespace definition.
 
55435
 *  Example: \code namespace a {} \endcode */
 
55436
 
 
55437
#line 55438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55438
} // closed Puma
 
55439
class CCExprResolve;
 
55440
class CExprResolve;
 
55441
class WinIfExists;
 
55442
class WinImportHandler;
 
55443
class WinMacros;
 
55444
class WinAsm;
 
55445
class WinDeclSpecs;
 
55446
class WinMemberExplSpec;
 
55447
class WinTypeKeywords;
 
55448
class WinFriend;
 
55449
class ExtAC;
 
55450
class ExtACBuilderCoupling;
 
55451
class ExtACSyntaxCoupling;
 
55452
class ExtACTree;
 
55453
class ExtACKeywords;
 
55454
class ExtGnu;
 
55455
class PragmaOnceUnitState;
 
55456
class PragmaOnce;
 
55457
class CMatchSyntax;
 
55458
namespace Puma {
 
55459
 
 
55460
#line 2927 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55461
class CT_NamespaceDef : public CT_Decl, public CSemObject {
 
55462
#line 55463 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55463
  friend class ::CCExprResolve;
 
55464
  friend class ::CExprResolve;
 
55465
  friend class ::WinIfExists;
 
55466
  friend class ::WinImportHandler;
 
55467
  friend class ::WinMacros;
 
55468
  friend class ::WinAsm;
 
55469
  friend class ::WinDeclSpecs;
 
55470
  friend class ::WinMemberExplSpec;
 
55471
  friend class ::WinTypeKeywords;
 
55472
  friend class ::WinFriend;
 
55473
  friend class ::ExtAC;
 
55474
  friend class ::ExtACBuilderCoupling;
 
55475
  friend class ::ExtACSyntaxCoupling;
 
55476
  friend class ::ExtACTree;
 
55477
  friend class ::ExtACKeywords;
 
55478
  friend class ::ExtGnu;
 
55479
  friend class ::PragmaOnceUnitState;
 
55480
  friend class ::PragmaOnce;
 
55481
  friend class ::CMatchSyntax;
 
55482
 
 
55483
#line 2927 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55484
 
 
55485
  CTree *sons[3]; // ns, name, members
 
55486
 
 
55487
public:
 
55488
  /** Constructor.
 
55489
   *  \param n The keyword 'namespace'.
 
55490
   *  \param nm The name of the namespace. */
 
55491
  CT_NamespaceDef (CTree *n, CTree *nm) {
 
55492
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], 0); 
 
55493
  }
 
55494
  /** Constructor.
 
55495
   *  \param n The keyword 'namespace'.
 
55496
   *  \param nm The name of the namespace. 
 
55497
   *  \param m The namespace member declarations list. */
 
55498
  CT_NamespaceDef (CTree *n, CTree *nm, CTree *m) {
 
55499
    AddSon (sons[0], n); AddSon (sons[1], nm); AddSon (sons[2], m); 
 
55500
  }
 
55501
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55502
  static const char *NodeId ();
 
55503
  /** Get the name of the node. Can be compared with NodeId(). */
 
55504
  const char *NodeName () const { return NodeId (); }
 
55505
  /** Get the number of sons. */
 
55506
  int Sons () const { return CTree::Sons (sons, 3); }
 
55507
  /** Get the n-th son.
 
55508
   *  \param n The index of the son.
 
55509
   *  \return The n-th son or NULL. */
 
55510
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
55511
  /** Set the namespace member declarations list. */
 
55512
  void Members (CTree *m) { AddSon (sons[2], m); }
 
55513
  /** Get the namespace member declarations list. */
 
55514
  CT_MembList *Members () const { return (CT_MembList*)sons[2]; }
 
55515
  /** Get the name of the namespace. */
 
55516
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
55517
  /** Get the semantic information about the namespace. */
 
55518
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
55519
  /** Replace a son.
 
55520
   *  \param old_son The son to replace.
 
55521
   *  \param new_son The new son. */
 
55522
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55523
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
55524
  }
 
55525
public:
 
55526
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
55527
  const char *__attr_name (unsigned i) const {
 
55528
    static const char *names[] = { "sons" }; return names[i];
 
55529
  }
 
55530
  const void *__attr (unsigned __i) const {
 
55531
    switch (__i) { case 0: return &sons; default: return 0; }
 
55532
  }
 
55533
#line 2968 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55534
};
 
55535
 
 
55536
/** \class CT_NamespaceAliasDef CTree.h Puma/CTree.h
 
55537
 *  Tree node representing a namespace alias definition.
 
55538
 *  Example: \code namespace b = a; \endcode */
 
55539
 
 
55540
#line 55541 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55541
} // closed Puma
 
55542
class CCExprResolve;
 
55543
class CExprResolve;
 
55544
class WinIfExists;
 
55545
class WinImportHandler;
 
55546
class WinMacros;
 
55547
class WinAsm;
 
55548
class WinDeclSpecs;
 
55549
class WinMemberExplSpec;
 
55550
class WinTypeKeywords;
 
55551
class WinFriend;
 
55552
class ExtAC;
 
55553
class ExtACBuilderCoupling;
 
55554
class ExtACSyntaxCoupling;
 
55555
class ExtACTree;
 
55556
class ExtACKeywords;
 
55557
class ExtGnu;
 
55558
class PragmaOnceUnitState;
 
55559
class PragmaOnce;
 
55560
class CMatchSyntax;
 
55561
namespace Puma {
 
55562
 
 
55563
#line 2973 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55564
class CT_NamespaceAliasDef : public CT_Decl, public CSemObject {
 
55565
#line 55566 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55566
  friend class ::CCExprResolve;
 
55567
  friend class ::CExprResolve;
 
55568
  friend class ::WinIfExists;
 
55569
  friend class ::WinImportHandler;
 
55570
  friend class ::WinMacros;
 
55571
  friend class ::WinAsm;
 
55572
  friend class ::WinDeclSpecs;
 
55573
  friend class ::WinMemberExplSpec;
 
55574
  friend class ::WinTypeKeywords;
 
55575
  friend class ::WinFriend;
 
55576
  friend class ::ExtAC;
 
55577
  friend class ::ExtACBuilderCoupling;
 
55578
  friend class ::ExtACSyntaxCoupling;
 
55579
  friend class ::ExtACTree;
 
55580
  friend class ::ExtACKeywords;
 
55581
  friend class ::ExtGnu;
 
55582
  friend class ::PragmaOnceUnitState;
 
55583
  friend class ::PragmaOnce;
 
55584
  friend class ::CMatchSyntax;
 
55585
 
 
55586
#line 2973 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55587
 
 
55588
  CTree *sons[5]; // ns, alias, assign, name, semi_colon
 
55589
 
 
55590
public:
 
55591
  /** Constructor.
 
55592
   *  \param n The keyword 'namespace'.
 
55593
   *  \param a The name of the namespace alias.
 
55594
   *  \param as The assignment operator '='.
 
55595
   *  \param nm The name of the original namespace.
 
55596
   *  \param s The trailing semi-colon. */
 
55597
  CT_NamespaceAliasDef (CTree *n, CTree *a, CTree *as, CTree *nm, CTree *s) {
 
55598
    AddSon (sons[0], n); AddSon (sons[1], a); AddSon (sons[2], as); 
 
55599
    AddSon (sons[3], nm); AddSon (sons[4], s); 
 
55600
  }
 
55601
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55602
  static const char *NodeId ();
 
55603
  /** Get the name of the node. Can be compared with NodeId(). */
 
55604
  const char *NodeName () const { return NodeId (); }
 
55605
  /** Get the number of sons. */
 
55606
  int Sons () const { return 5; }
 
55607
  /** Get the n-th son.
 
55608
   *  \param n The index of the son.
 
55609
   *  \return The n-th son or NULL. */
 
55610
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
55611
  /** Get the name of the original namespace. */
 
55612
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[3]; }
 
55613
  /** Get the name of the namespace alias. */
 
55614
  CT_SimpleName *Alias () const { return (CT_SimpleName*)sons[1]; }
 
55615
  /** Get the semantic information about the namespace alias. */
 
55616
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
55617
  /** Replace a son.
 
55618
   *  \param old_son The son to replace.
 
55619
   *  \param new_son The new son. */
 
55620
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55621
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
55622
  }
 
55623
public:
 
55624
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
55625
  const char *__attr_name (unsigned i) const {
 
55626
    static const char *names[] = { "sons" }; return names[i];
 
55627
  }
 
55628
  const void *__attr (unsigned __i) const {
 
55629
    switch (__i) { case 0: return &sons; default: return 0; }
 
55630
  }
 
55631
#line 3009 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55632
};
 
55633
 
 
55634
/** \class CT_UsingDirective CTree.h Puma/CTree.h
 
55635
 *  Tree node representing a namespace using directive.
 
55636
 *  Example: \code using namespace std; \endcode */
 
55637
 
 
55638
#line 55639 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55639
} // closed Puma
 
55640
class CCExprResolve;
 
55641
class CExprResolve;
 
55642
class WinIfExists;
 
55643
class WinImportHandler;
 
55644
class WinMacros;
 
55645
class WinAsm;
 
55646
class WinDeclSpecs;
 
55647
class WinMemberExplSpec;
 
55648
class WinTypeKeywords;
 
55649
class WinFriend;
 
55650
class ExtAC;
 
55651
class ExtACBuilderCoupling;
 
55652
class ExtACSyntaxCoupling;
 
55653
class ExtACTree;
 
55654
class ExtACKeywords;
 
55655
class ExtGnu;
 
55656
class PragmaOnceUnitState;
 
55657
class PragmaOnce;
 
55658
class CMatchSyntax;
 
55659
namespace Puma {
 
55660
 
 
55661
#line 3014 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55662
class CT_UsingDirective : public CT_Decl {
 
55663
#line 55664 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55664
  friend class ::CCExprResolve;
 
55665
  friend class ::CExprResolve;
 
55666
  friend class ::WinIfExists;
 
55667
  friend class ::WinImportHandler;
 
55668
  friend class ::WinMacros;
 
55669
  friend class ::WinAsm;
 
55670
  friend class ::WinDeclSpecs;
 
55671
  friend class ::WinMemberExplSpec;
 
55672
  friend class ::WinTypeKeywords;
 
55673
  friend class ::WinFriend;
 
55674
  friend class ::ExtAC;
 
55675
  friend class ::ExtACBuilderCoupling;
 
55676
  friend class ::ExtACSyntaxCoupling;
 
55677
  friend class ::ExtACTree;
 
55678
  friend class ::ExtACKeywords;
 
55679
  friend class ::ExtGnu;
 
55680
  friend class ::PragmaOnceUnitState;
 
55681
  friend class ::PragmaOnce;
 
55682
  friend class ::CMatchSyntax;
 
55683
 
 
55684
#line 3014 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55685
 
 
55686
  CTree *sons[4]; // using, ns, name, semi_colon
 
55687
 
 
55688
public:
 
55689
  /** Constructor. 
 
55690
   *  \param u The keyword 'using'.
 
55691
   *  \param ns The keyword 'namespace'. 
 
55692
   *  \param n The name of the namespace.
 
55693
   *  \param s The trailing semi-colon. */
 
55694
  CT_UsingDirective (CTree *u, CTree *ns, CTree *n, CTree *s) {
 
55695
    AddSon (sons[0], u); AddSon (sons[1], ns); AddSon (sons[2], n); 
 
55696
    AddSon (sons[3], s); 
 
55697
  }
 
55698
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55699
  static const char *NodeId ();
 
55700
  /** Get the name of the node. Can be compared with NodeId(). */
 
55701
  const char *NodeName () const { return NodeId (); }
 
55702
  /** Get the number of sons. */
 
55703
  int Sons () const { return 4; }
 
55704
  /** Get the n-th son.
 
55705
   *  \param n The index of the son.
 
55706
   *  \return The n-th son or NULL. */
 
55707
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
55708
  /** Get the name of the namespace. */
 
55709
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
55710
  /** Replace a son.
 
55711
   *  \param old_son The son to replace.
 
55712
   *  \param new_son The new son. */
 
55713
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55714
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
55715
  }
 
55716
public:
 
55717
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
55718
  const char *__attr_name (unsigned i) const {
 
55719
    static const char *names[] = { "sons" }; return names[i];
 
55720
  }
 
55721
  const void *__attr (unsigned __i) const {
 
55722
    switch (__i) { case 0: return &sons; default: return 0; }
 
55723
  }
 
55724
#line 3045 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55725
};
 
55726
 
 
55727
/*****************************************************************************/
 
55728
/*                                                                           */
 
55729
/*                              Declarators                                  */
 
55730
/*                                                                           */
 
55731
/*****************************************************************************/
 
55732
 
 
55733
/** \class CT_Declarator CTree.h Puma/CTree.h
 
55734
 *  Base class for all tree nodes representing declarators. */
 
55735
 
 
55736
#line 55737 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55737
} // closed Puma
 
55738
class CCExprResolve;
 
55739
class CExprResolve;
 
55740
class WinIfExists;
 
55741
class WinImportHandler;
 
55742
class WinMacros;
 
55743
class WinAsm;
 
55744
class WinDeclSpecs;
 
55745
class WinMemberExplSpec;
 
55746
class WinTypeKeywords;
 
55747
class WinFriend;
 
55748
class ExtAC;
 
55749
class ExtACBuilderCoupling;
 
55750
class ExtACSyntaxCoupling;
 
55751
class ExtACTree;
 
55752
class ExtACKeywords;
 
55753
class ExtGnu;
 
55754
class PragmaOnceUnitState;
 
55755
class PragmaOnce;
 
55756
class CMatchSyntax;
 
55757
namespace Puma {
 
55758
 
 
55759
#line 3055 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55760
class CT_Declarator : public CTree {
 
55761
#line 55762 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55762
  friend class ::CCExprResolve;
 
55763
  friend class ::CExprResolve;
 
55764
  friend class ::WinIfExists;
 
55765
  friend class ::WinImportHandler;
 
55766
  friend class ::WinMacros;
 
55767
  friend class ::WinAsm;
 
55768
  friend class ::WinDeclSpecs;
 
55769
  friend class ::WinMemberExplSpec;
 
55770
  friend class ::WinTypeKeywords;
 
55771
  friend class ::WinFriend;
 
55772
  friend class ::ExtAC;
 
55773
  friend class ::ExtACBuilderCoupling;
 
55774
  friend class ::ExtACSyntaxCoupling;
 
55775
  friend class ::ExtACTree;
 
55776
  friend class ::ExtACKeywords;
 
55777
  friend class ::ExtGnu;
 
55778
  friend class ::PragmaOnceUnitState;
 
55779
  friend class ::PragmaOnce;
 
55780
  friend class ::CMatchSyntax;
 
55781
 
 
55782
#line 3055 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55783
 
 
55784
protected:
 
55785
  /** Constructor. */
 
55786
  CT_Declarator () {}
 
55787
 
 
55788
public:
 
55789
  /** Get the declarator. */
 
55790
  virtual CTree *Declarator () const = 0;
 
55791
  /** Get this. */
 
55792
  virtual CT_Declarator *IsDeclarator () { return this; }
 
55793
  /** Get the declared name. */
 
55794
  CT_SimpleName *Name ();
 
55795
  /** Get the declared name and set last_declarator to 
 
55796
   *  the declarator containing the name. 
 
55797
   *  \param last_declarator To be set to the declarator containing the name. */
 
55798
  CT_SimpleName *Name (CT_Declarator *&last_declarator);
 
55799
public:
 
55800
  typedef AC::TLE __AttrTypes;
 
55801
  const char *__attr_name (unsigned i) const { return 0; }
 
55802
  const void *__attr (unsigned __i) const { return 0; }
 
55803
#line 3071 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55804
};
 
55805
 
 
55806
/** \class CT_InitDeclarator CTree.h Puma/CTree.h
 
55807
 *  Tree node representing a declarator with initializer.
 
55808
 *  Example: \code int *i = 0; \endcode */
 
55809
 
 
55810
#line 55811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55811
} // closed Puma
 
55812
class CCExprResolve;
 
55813
class CExprResolve;
 
55814
class WinIfExists;
 
55815
class WinImportHandler;
 
55816
class WinMacros;
 
55817
class WinAsm;
 
55818
class WinDeclSpecs;
 
55819
class WinMemberExplSpec;
 
55820
class WinTypeKeywords;
 
55821
class WinFriend;
 
55822
class ExtAC;
 
55823
class ExtACBuilderCoupling;
 
55824
class ExtACSyntaxCoupling;
 
55825
class ExtACTree;
 
55826
class ExtACKeywords;
 
55827
class ExtGnu;
 
55828
class PragmaOnceUnitState;
 
55829
class PragmaOnce;
 
55830
class CMatchSyntax;
 
55831
namespace Puma {
 
55832
 
 
55833
#line 3076 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55834
class CT_InitDeclarator : public CT_Declarator, public CSemObject {
 
55835
#line 55836 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55836
  friend class ::CCExprResolve;
 
55837
  friend class ::CExprResolve;
 
55838
  friend class ::WinIfExists;
 
55839
  friend class ::WinImportHandler;
 
55840
  friend class ::WinMacros;
 
55841
  friend class ::WinAsm;
 
55842
  friend class ::WinDeclSpecs;
 
55843
  friend class ::WinMemberExplSpec;
 
55844
  friend class ::WinTypeKeywords;
 
55845
  friend class ::WinFriend;
 
55846
  friend class ::ExtAC;
 
55847
  friend class ::ExtACBuilderCoupling;
 
55848
  friend class ::ExtACSyntaxCoupling;
 
55849
  friend class ::ExtACTree;
 
55850
  friend class ::ExtACKeywords;
 
55851
  friend class ::ExtGnu;
 
55852
  friend class ::PragmaOnceUnitState;
 
55853
  friend class ::PragmaOnce;
 
55854
  friend class ::CMatchSyntax;
 
55855
 
 
55856
#line 3076 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55857
 
 
55858
  CTree *sons[3]; // declarator, ext, init
 
55859
  CTree *obj_decl;
 
55860
 
 
55861
public:
 
55862
  /** Constructor.
 
55863
   *  \param d The declarator.
 
55864
   *  \param e Optional extension list.
 
55865
   *  \param i The initializer. */
 
55866
  CT_InitDeclarator (CTree *d, CTree *e = 0, CTree *i = 0) {
 
55867
    AddSon (sons[0], d); AddSon (sons[1], e); AddSon (sons[2], i);
 
55868
    AddSon (obj_decl, 0); 
 
55869
  }
 
55870
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55871
  static const char *NodeId ();
 
55872
  /** Get the name of the node. Can be compared with NodeId(). */
 
55873
  const char *NodeName () const { return NodeId (); }
 
55874
  /** Get the number of sons. */
 
55875
  int Sons () const { return CTree::Sons (sons, 3); }
 
55876
  /** Get the n-th son.
 
55877
   *  \param n The index of the son.
 
55878
   *  \return The n-th son or NULL. */
 
55879
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
55880
  /** Get the declarator. */
 
55881
  CTree *Declarator () const { return sons[0]; }
 
55882
  /** Get the extensions list. */
 
55883
  CTree *Extension () const { return sons[1]; }
 
55884
  /** Get the initializer. */
 
55885
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
55886
  /** Get the semantic information about the declared object. */
 
55887
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
55888
  /** Get the object declaration node containing the declarator. */
 
55889
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
55890
  /** Set the initializer. */
 
55891
  void Initializer (CTree* i) { AddSon (sons[2], i); }
 
55892
  /** Set the extensions list. */
 
55893
  void Extension (CTree* e) { AddSon (sons[1], e); }
 
55894
  /** Set the object declaration node containing the declarator. 
 
55895
   *  \param od The object declaration node. */
 
55896
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
55897
  /** Replace a son.
 
55898
   *  \param old_son The son to replace.
 
55899
   *  \param new_son The new son. */
 
55900
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
55901
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
55902
  }
 
55903
public:
 
55904
  typedef AC::TL<Puma::CTree * [3],AC::TL<Puma::CTree *,AC::TLE > > __AttrTypes;
 
55905
  const char *__attr_name (unsigned i) const {
 
55906
    static const char *names[] = { "sons", "obj_decl" }; return names[i];
 
55907
  }
 
55908
  const void *__attr (unsigned __i) const {
 
55909
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; default: return 0; }
 
55910
  }
 
55911
#line 3122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55912
};
 
55913
 
 
55914
/** \class CT_BracedDeclarator CTree.h Puma/CTree.h
 
55915
 *  Tree node representing a braced declarator.
 
55916
 *  Example: \code int (i); \endcode */
 
55917
 
 
55918
#line 55919 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55919
} // closed Puma
 
55920
class CCExprResolve;
 
55921
class CExprResolve;
 
55922
class WinIfExists;
 
55923
class WinImportHandler;
 
55924
class WinMacros;
 
55925
class WinAsm;
 
55926
class WinDeclSpecs;
 
55927
class WinMemberExplSpec;
 
55928
class WinTypeKeywords;
 
55929
class WinFriend;
 
55930
class ExtAC;
 
55931
class ExtACBuilderCoupling;
 
55932
class ExtACSyntaxCoupling;
 
55933
class ExtACTree;
 
55934
class ExtACKeywords;
 
55935
class ExtGnu;
 
55936
class PragmaOnceUnitState;
 
55937
class PragmaOnce;
 
55938
class CMatchSyntax;
 
55939
namespace Puma {
 
55940
 
 
55941
#line 3127 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55942
class CT_BracedDeclarator : public CT_Declarator {
 
55943
#line 55944 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
55944
  friend class ::CCExprResolve;
 
55945
  friend class ::CExprResolve;
 
55946
  friend class ::WinIfExists;
 
55947
  friend class ::WinImportHandler;
 
55948
  friend class ::WinMacros;
 
55949
  friend class ::WinAsm;
 
55950
  friend class ::WinDeclSpecs;
 
55951
  friend class ::WinMemberExplSpec;
 
55952
  friend class ::WinTypeKeywords;
 
55953
  friend class ::WinFriend;
 
55954
  friend class ::ExtAC;
 
55955
  friend class ::ExtACBuilderCoupling;
 
55956
  friend class ::ExtACSyntaxCoupling;
 
55957
  friend class ::ExtACTree;
 
55958
  friend class ::ExtACKeywords;
 
55959
  friend class ::ExtGnu;
 
55960
  friend class ::PragmaOnceUnitState;
 
55961
  friend class ::PragmaOnce;
 
55962
  friend class ::CMatchSyntax;
 
55963
 
 
55964
#line 3127 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
55965
 
 
55966
  CTree *sons[4]; // open, win_specs, declarator, close
 
55967
 
 
55968
public:
 
55969
  /** Constructor.
 
55970
   *  \param o Left parenthesis around the declarator.
 
55971
   *  \param d The declarator.
 
55972
   *  \param c Right parenthesis around the declarator. */
 
55973
  CT_BracedDeclarator (CTree *o, CTree *d, CTree *c) {
 
55974
    AddSon (sons[0], o); AddSon (sons[1], 0); 
 
55975
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
55976
  }
 
55977
  /** Constructor.
 
55978
   *  \param o Left parenthesis around the declarator.
 
55979
   *  \param ws Declaration specifiers.
 
55980
   *  \param d The declarator.
 
55981
   *  \param c Right parenthesis around the declarator. */
 
55982
  CT_BracedDeclarator (CTree *o, CTree *ws, CTree *d, CTree *c) {
 
55983
    AddSon (sons[0], o); AddSon (sons[1], ws); 
 
55984
    AddSon (sons[2], d); AddSon (sons[3], c); 
 
55985
  }
 
55986
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
55987
  static const char *NodeId ();
 
55988
  /** Get the name of the node. Can be compared with NodeId(). */
 
55989
  const char *NodeName () const { return NodeId (); }
 
55990
  /** Get the number of sons. */
 
55991
  int Sons () const { return CTree::Sons (sons, 4); }
 
55992
  /** Get the n-th son.
 
55993
   *  \param n The index of the son.
 
55994
   *  \return The n-th son or NULL. */
 
55995
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
55996
  /** Get the declarator. */
 
55997
  CTree *Declarator () const { return sons[2]; }
 
55998
  /** Replace a son.
 
55999
   *  \param old_son The son to replace.
 
56000
   *  \param new_son The new son. */
 
56001
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56002
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
56003
  }
 
56004
public:
 
56005
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
56006
  const char *__attr_name (unsigned i) const {
 
56007
    static const char *names[] = { "sons" }; return names[i];
 
56008
  }
 
56009
  const void *__attr (unsigned __i) const {
 
56010
    switch (__i) { case 0: return &sons; default: return 0; }
 
56011
  }
 
56012
#line 3166 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56013
};
 
56014
 
 
56015
/** \class CT_ArrayDelimiter CTree.h Puma/CTree.h
 
56016
 *  Tree node representing an array delimiter.
 
56017
 *  Example: \code [10] \endcode or \code [*] \endcode */
 
56018
 
 
56019
#line 56020 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56020
} // closed Puma
 
56021
class CCExprResolve;
 
56022
class CExprResolve;
 
56023
class WinIfExists;
 
56024
class WinImportHandler;
 
56025
class WinMacros;
 
56026
class WinAsm;
 
56027
class WinDeclSpecs;
 
56028
class WinMemberExplSpec;
 
56029
class WinTypeKeywords;
 
56030
class WinFriend;
 
56031
class ExtAC;
 
56032
class ExtACBuilderCoupling;
 
56033
class ExtACSyntaxCoupling;
 
56034
class ExtACTree;
 
56035
class ExtACKeywords;
 
56036
class ExtGnu;
 
56037
class PragmaOnceUnitState;
 
56038
class PragmaOnce;
 
56039
class CMatchSyntax;
 
56040
namespace Puma {
 
56041
 
 
56042
#line 3171 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56043
class CT_ArrayDelimiter : public CTree {
 
56044
#line 56045 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56045
  friend class ::CCExprResolve;
 
56046
  friend class ::CExprResolve;
 
56047
  friend class ::WinIfExists;
 
56048
  friend class ::WinImportHandler;
 
56049
  friend class ::WinMacros;
 
56050
  friend class ::WinAsm;
 
56051
  friend class ::WinDeclSpecs;
 
56052
  friend class ::WinMemberExplSpec;
 
56053
  friend class ::WinTypeKeywords;
 
56054
  friend class ::WinFriend;
 
56055
  friend class ::ExtAC;
 
56056
  friend class ::ExtACBuilderCoupling;
 
56057
  friend class ::ExtACSyntaxCoupling;
 
56058
  friend class ::ExtACTree;
 
56059
  friend class ::ExtACKeywords;
 
56060
  friend class ::ExtGnu;
 
56061
  friend class ::PragmaOnceUnitState;
 
56062
  friend class ::PragmaOnce;
 
56063
  friend class ::CMatchSyntax;
 
56064
 
 
56065
#line 3171 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56066
 
 
56067
  CTree *sons[4]; // star, static, quals, expr
 
56068
  bool pos0;
 
56069
 
 
56070
public:
 
56071
  /** Constructor.
 
56072
   *  \param m The operator '*'.
 
56073
   *  \param s The keyword 'static'.
 
56074
   *  \param q The const/volatile qualifier sequence. 
 
56075
   *  \param e The array size expression. 
 
56076
   *  \param p Position of keyword 'static', true means before the
 
56077
   *           qualifier sequence and false means behind it. */
 
56078
  CT_ArrayDelimiter (CTree *m, CTree *s, CTree *q, CTree *e, bool p = false) {
 
56079
    AddSon (sons[0], m); AddSon (sons[1], s); 
 
56080
    AddSon (sons[2], q); AddSon (sons[3], e); pos0 = p;
 
56081
  }
 
56082
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56083
  static const char *NodeId ();
 
56084
  /** Get the name of the node. Can be compared with NodeId(). */
 
56085
  const char *NodeName () const { return NodeId (); }
 
56086
  /** Get the number of sons. */
 
56087
  int Sons () const { return CTree::Sons (sons, 4); }
 
56088
  /** Get the n-th son.
 
56089
   *  \param n The index of the son.
 
56090
   *  \return The n-th son or NULL. */
 
56091
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
56092
  /** Get the operator '*'. */
 
56093
  CT_Token *Star () const { return (CT_Token*)sons[0]; }
 
56094
  /** Get the keyword 'static'. */
 
56095
  CT_Token *Static () const { return (CT_Token*)sons[pos0?2:1]; }
 
56096
  /** Get the const/volatile qualifier sequence. */
 
56097
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[pos0?1:2]; }
 
56098
  /** Get the array size expression. */
 
56099
  CTree *Expr () const { return sons[3]; }
 
56100
  /** Replace a son.
 
56101
   *  \param old_son The son to replace.
 
56102
   *  \param new_son The new son. */
 
56103
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56104
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
56105
  }
 
56106
public:
 
56107
  typedef AC::TL<Puma::CTree * [4],AC::TL<bool,AC::TLE > > __AttrTypes;
 
56108
  const char *__attr_name (unsigned i) const {
 
56109
    static const char *names[] = { "sons", "pos0" }; return names[i];
 
56110
  }
 
56111
  const void *__attr (unsigned __i) const {
 
56112
    switch (__i) { case 0: return &sons; case 1: return &pos0; default: return 0; }
 
56113
  }
 
56114
#line 3211 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56115
};
 
56116
 
 
56117
/** \class CT_ArrayDeclarator CTree.h Puma/CTree.h
 
56118
 *  Tree node representing an array declarator.
 
56119
 *  Example: \code a[10] \endcode */
 
56120
 
 
56121
#line 56122 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56122
} // closed Puma
 
56123
class CCExprResolve;
 
56124
class CExprResolve;
 
56125
class WinIfExists;
 
56126
class WinImportHandler;
 
56127
class WinMacros;
 
56128
class WinAsm;
 
56129
class WinDeclSpecs;
 
56130
class WinMemberExplSpec;
 
56131
class WinTypeKeywords;
 
56132
class WinFriend;
 
56133
class ExtAC;
 
56134
class ExtACBuilderCoupling;
 
56135
class ExtACSyntaxCoupling;
 
56136
class ExtACTree;
 
56137
class ExtACKeywords;
 
56138
class ExtGnu;
 
56139
class PragmaOnceUnitState;
 
56140
class PragmaOnce;
 
56141
class CMatchSyntax;
 
56142
namespace Puma {
 
56143
 
 
56144
#line 3216 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56145
class CT_ArrayDeclarator : public CT_Declarator, public CSemValue {
 
56146
#line 56147 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56147
  friend class ::CCExprResolve;
 
56148
  friend class ::CExprResolve;
 
56149
  friend class ::WinIfExists;
 
56150
  friend class ::WinImportHandler;
 
56151
  friend class ::WinMacros;
 
56152
  friend class ::WinAsm;
 
56153
  friend class ::WinDeclSpecs;
 
56154
  friend class ::WinMemberExplSpec;
 
56155
  friend class ::WinTypeKeywords;
 
56156
  friend class ::WinFriend;
 
56157
  friend class ::ExtAC;
 
56158
  friend class ::ExtACBuilderCoupling;
 
56159
  friend class ::ExtACSyntaxCoupling;
 
56160
  friend class ::ExtACTree;
 
56161
  friend class ::ExtACKeywords;
 
56162
  friend class ::ExtGnu;
 
56163
  friend class ::PragmaOnceUnitState;
 
56164
  friend class ::PragmaOnce;
 
56165
  friend class ::CMatchSyntax;
 
56166
 
 
56167
#line 3216 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56168
 
 
56169
  CTree *sons[4]; // declarator, open, delim, close
 
56170
 
 
56171
public:
 
56172
  /** Constructor.
 
56173
   *  \param d The array declarator.
 
56174
   *  \param o Left bracket around the delimiter.
 
56175
   *  \param ad The array delimiter.
 
56176
   *  \param c Right bracket around the delimiter. */
 
56177
  CT_ArrayDeclarator (CTree *d, CTree *o, CTree *ad, CTree *c) {
 
56178
    AddSon (sons[0], d); AddSon (sons[1], o); 
 
56179
    AddSon (sons[2], ad); AddSon (sons[3], c); 
 
56180
  }
 
56181
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56182
  static const char *NodeId ();
 
56183
  /** Get the name of the node. Can be compared with NodeId(). */
 
56184
  const char *NodeName () const { return NodeId (); }
 
56185
  /** Get the number of sons. */
 
56186
  int Sons () const { return 4; }
 
56187
  /** Get the n-th son.
 
56188
   *  \param n The index of the son.
 
56189
   *  \return The n-th son or NULL. */
 
56190
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
56191
  /** Get the array declarator. */
 
56192
  CTree *Declarator () const { return sons[0]; }
 
56193
  /** Get the array delimiter. */
 
56194
  CT_ArrayDelimiter *Delimiter () const 
 
56195
   { return (CT_ArrayDelimiter*)sons[2]; }
 
56196
  /** Replace a son.
 
56197
   *  \param old_son The son to replace.
 
56198
   *  \param new_son The new son. */
 
56199
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56200
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
56201
  }
 
56202
  /** Get the semantic information for the type of the declared array. */
 
56203
  CTypeInfo *Type () const { return type; }
 
56204
  /** Get the semantic information for the value of the declared array. */
 
56205
  CExprValue *Value () const { return value; }
 
56206
  /** Get the semantic information object. */
 
56207
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
56208
public:
 
56209
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
56210
  const char *__attr_name (unsigned i) const {
 
56211
    static const char *names[] = { "sons" }; return names[i];
 
56212
  }
 
56213
  const void *__attr (unsigned __i) const {
 
56214
    switch (__i) { case 0: return &sons; default: return 0; }
 
56215
  }
 
56216
#line 3256 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56217
};
 
56218
 
 
56219
/** \class CT_FctDeclarator CTree.h Puma/CTree.h
 
56220
 *  Tree node representing a function declarator.
 
56221
 *  Example: \code f(int a) const \endcode */
 
56222
 
 
56223
#line 56224 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56224
} // closed Puma
 
56225
class CCExprResolve;
 
56226
class CExprResolve;
 
56227
class WinIfExists;
 
56228
class WinImportHandler;
 
56229
class WinMacros;
 
56230
class WinAsm;
 
56231
class WinDeclSpecs;
 
56232
class WinMemberExplSpec;
 
56233
class WinTypeKeywords;
 
56234
class WinFriend;
 
56235
class ExtAC;
 
56236
class ExtACBuilderCoupling;
 
56237
class ExtACSyntaxCoupling;
 
56238
class ExtACTree;
 
56239
class ExtACKeywords;
 
56240
class ExtGnu;
 
56241
class PragmaOnceUnitState;
 
56242
class PragmaOnce;
 
56243
class CMatchSyntax;
 
56244
namespace Puma {
 
56245
 
 
56246
#line 3261 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56247
class CT_FctDeclarator : public CT_Declarator {
 
56248
#line 56249 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56249
  friend class ::CCExprResolve;
 
56250
  friend class ::CExprResolve;
 
56251
  friend class ::WinIfExists;
 
56252
  friend class ::WinImportHandler;
 
56253
  friend class ::WinMacros;
 
56254
  friend class ::WinAsm;
 
56255
  friend class ::WinDeclSpecs;
 
56256
  friend class ::WinMemberExplSpec;
 
56257
  friend class ::WinTypeKeywords;
 
56258
  friend class ::WinFriend;
 
56259
  friend class ::ExtAC;
 
56260
  friend class ::ExtACBuilderCoupling;
 
56261
  friend class ::ExtACSyntaxCoupling;
 
56262
  friend class ::ExtACTree;
 
56263
  friend class ::ExtACKeywords;
 
56264
  friend class ::ExtGnu;
 
56265
  friend class ::PragmaOnceUnitState;
 
56266
  friend class ::PragmaOnce;
 
56267
  friend class ::CMatchSyntax;
 
56268
 
 
56269
#line 3261 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56270
 
 
56271
  CTree *sons[4]; // declarator, args, cv_quals, exception_specs
 
56272
 
 
56273
public:
 
56274
  /** Constructor.
 
56275
   *  \param d The function declarator.
 
56276
   *  \param args The function parameter list.
 
56277
   *  \param cv The function qualifiers.
 
56278
   *  \param es The exception specifier. */
 
56279
  CT_FctDeclarator (CTree *d, CTree *args, CTree *cv, CTree *es) {
 
56280
    AddSon (sons[0], d); AddSon (sons[1], args); 
 
56281
    AddSon (sons[2], cv); AddSon (sons[3], es); 
 
56282
  }
 
56283
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56284
  static const char *NodeId ();
 
56285
  /** Get the name of the node. Can be compared with NodeId(). */
 
56286
  const char *NodeName () const { return NodeId (); }
 
56287
  /** Get the number of sons. */
 
56288
  int Sons () const { return CTree::Sons (sons, 4); }
 
56289
  /** Get the n-th son.
 
56290
   *  \param n The index of the son.
 
56291
   *  \return The n-th son or NULL. */
 
56292
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
56293
  /** Get the function declarator. */
 
56294
  CTree *Declarator () const { return sons[0]; }
 
56295
  /** Get the function parameter list. */
 
56296
  CT_ArgDeclList *Arguments () const { return (CT_ArgDeclList*)sons[1]; }
 
56297
  /** Get the function qualifier list. */
 
56298
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[2]; }
 
56299
  /** Get the exception specifier. */
 
56300
  CT_ExceptionSpec *ExceptionSpecs () const { return (CT_ExceptionSpec*)sons[3]; }
 
56301
  /** Replace a son.
 
56302
   *  \param old_son The son to replace.
 
56303
   *  \param new_son The new son. */
 
56304
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56305
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
56306
  }
 
56307
public:
 
56308
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
56309
  const char *__attr_name (unsigned i) const {
 
56310
    static const char *names[] = { "sons" }; return names[i];
 
56311
  }
 
56312
  const void *__attr (unsigned __i) const {
 
56313
    switch (__i) { case 0: return &sons; default: return 0; }
 
56314
  }
 
56315
#line 3298 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56316
};
 
56317
 
 
56318
/** \class CT_RefDeclarator CTree.h Puma/CTree.h
 
56319
 *  Tree node representing a reference declarator.
 
56320
 *  Example: \code &a \endcode */
 
56321
 
 
56322
#line 56323 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56323
} // closed Puma
 
56324
class CCExprResolve;
 
56325
class CExprResolve;
 
56326
class WinIfExists;
 
56327
class WinImportHandler;
 
56328
class WinMacros;
 
56329
class WinAsm;
 
56330
class WinDeclSpecs;
 
56331
class WinMemberExplSpec;
 
56332
class WinTypeKeywords;
 
56333
class WinFriend;
 
56334
class ExtAC;
 
56335
class ExtACBuilderCoupling;
 
56336
class ExtACSyntaxCoupling;
 
56337
class ExtACTree;
 
56338
class ExtACKeywords;
 
56339
class ExtGnu;
 
56340
class PragmaOnceUnitState;
 
56341
class PragmaOnce;
 
56342
class CMatchSyntax;
 
56343
namespace Puma {
 
56344
 
 
56345
#line 3303 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56346
class CT_RefDeclarator : public CT_Declarator {
 
56347
#line 56348 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56348
  friend class ::CCExprResolve;
 
56349
  friend class ::CExprResolve;
 
56350
  friend class ::WinIfExists;
 
56351
  friend class ::WinImportHandler;
 
56352
  friend class ::WinMacros;
 
56353
  friend class ::WinAsm;
 
56354
  friend class ::WinDeclSpecs;
 
56355
  friend class ::WinMemberExplSpec;
 
56356
  friend class ::WinTypeKeywords;
 
56357
  friend class ::WinFriend;
 
56358
  friend class ::ExtAC;
 
56359
  friend class ::ExtACBuilderCoupling;
 
56360
  friend class ::ExtACSyntaxCoupling;
 
56361
  friend class ::ExtACTree;
 
56362
  friend class ::ExtACKeywords;
 
56363
  friend class ::ExtGnu;
 
56364
  friend class ::PragmaOnceUnitState;
 
56365
  friend class ::PragmaOnce;
 
56366
  friend class ::CMatchSyntax;
 
56367
 
 
56368
#line 3303 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56369
 
 
56370
  CTree *sons[2]; // ref, declarator
 
56371
 
 
56372
public:
 
56373
  /** Constructor.
 
56374
   *  \param r The reference operator '&'.
 
56375
   *  \param d The declarator. */
 
56376
  CT_RefDeclarator (CTree *r, CTree *d) { AddSon (sons[0], r); AddSon (sons[1], d); }
 
56377
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56378
  static const char *NodeId ();
 
56379
  /** Get the name of the node. Can be compared with NodeId(). */
 
56380
  const char *NodeName () const { return NodeId (); }
 
56381
  /** Get the number of sons. */
 
56382
  int Sons () const { return 2; }
 
56383
  /** Get the n-th son.
 
56384
   *  \param n The index of the son.
 
56385
   *  \return The n-th son or NULL. */
 
56386
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
56387
  /** Get the declarator. */
 
56388
  CTree *Declarator () const { return sons[1]; }
 
56389
  /** Replace a son.
 
56390
   *  \param old_son The son to replace.
 
56391
   *  \param new_son The new son. */
 
56392
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
56393
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
56394
  }
 
56395
public:
 
56396
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
56397
  const char *__attr_name (unsigned i) const {
 
56398
    static const char *names[] = { "sons" }; return names[i];
 
56399
  }
 
56400
  const void *__attr (unsigned __i) const {
 
56401
    switch (__i) { case 0: return &sons; default: return 0; }
 
56402
  }
 
56403
#line 3329 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56404
};
 
56405
 
 
56406
/** \class CT_PtrDeclarator CTree.h Puma/CTree.h
 
56407
 *  Tree node representing a pointer declarator.
 
56408
 *  Example: \code *a \endcode */
 
56409
 
 
56410
#line 56411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56411
} // closed Puma
 
56412
class CCExprResolve;
 
56413
class CExprResolve;
 
56414
class WinIfExists;
 
56415
class WinImportHandler;
 
56416
class WinMacros;
 
56417
class WinAsm;
 
56418
class WinDeclSpecs;
 
56419
class WinMemberExplSpec;
 
56420
class WinTypeKeywords;
 
56421
class WinFriend;
 
56422
class ExtAC;
 
56423
class ExtACBuilderCoupling;
 
56424
class ExtACSyntaxCoupling;
 
56425
class ExtACTree;
 
56426
class ExtACKeywords;
 
56427
class ExtGnu;
 
56428
class PragmaOnceUnitState;
 
56429
class PragmaOnce;
 
56430
class CMatchSyntax;
 
56431
namespace Puma {
 
56432
 
 
56433
#line 3334 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56434
class CT_PtrDeclarator : public CT_Declarator {
 
56435
#line 56436 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56436
  friend class ::CCExprResolve;
 
56437
  friend class ::CExprResolve;
 
56438
  friend class ::WinIfExists;
 
56439
  friend class ::WinImportHandler;
 
56440
  friend class ::WinMacros;
 
56441
  friend class ::WinAsm;
 
56442
  friend class ::WinDeclSpecs;
 
56443
  friend class ::WinMemberExplSpec;
 
56444
  friend class ::WinTypeKeywords;
 
56445
  friend class ::WinFriend;
 
56446
  friend class ::ExtAC;
 
56447
  friend class ::ExtACBuilderCoupling;
 
56448
  friend class ::ExtACSyntaxCoupling;
 
56449
  friend class ::ExtACTree;
 
56450
  friend class ::ExtACKeywords;
 
56451
  friend class ::ExtGnu;
 
56452
  friend class ::PragmaOnceUnitState;
 
56453
  friend class ::PragmaOnce;
 
56454
  friend class ::CMatchSyntax;
 
56455
 
 
56456
#line 3334 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56457
 
 
56458
  CTree *sons[3]; // ptr, cv_quals, declarator
 
56459
 
 
56460
public:
 
56461
  /** Constructor.
 
56462
   *  \param p The pointer operator '*'.
 
56463
   *  \param c The const/volatile pointer qualifier sequence.
 
56464
   *  \param d The declarator. */
 
56465
  CT_PtrDeclarator (CTree *p, CTree *c, CTree *d) {
 
56466
    AddSon (sons[0], p); AddSon (sons[1], c); AddSon (sons[2], d); 
 
56467
  }
 
56468
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56469
  static const char *NodeId ();
 
56470
  /** Get the name of the node. Can be compared with NodeId(). */
 
56471
  const char *NodeName () const { return NodeId (); }
 
56472
  /** Get the number of sons. */
 
56473
  int Sons () const { return CTree::Sons (sons, 3); }
 
56474
  /** Get the n-th son.
 
56475
   *  \param n The index of the son.
 
56476
   *  \return The n-th son or NULL. */
 
56477
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
56478
  /** Get the declarator. */
 
56479
  CTree *Declarator () const { return sons[2]; }
 
56480
  /** Get the const/volatile qualifier sequence. */
 
56481
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[1]; }
 
56482
  /** Replace a son.
 
56483
   *  \param old_son The son to replace.
 
56484
   *  \param new_son The new son. */
 
56485
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56486
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
56487
  }
 
56488
public:
 
56489
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
56490
  const char *__attr_name (unsigned i) const {
 
56491
    static const char *names[] = { "sons" }; return names[i];
 
56492
  }
 
56493
  const void *__attr (unsigned __i) const {
 
56494
    switch (__i) { case 0: return &sons; default: return 0; }
 
56495
  }
 
56496
#line 3365 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56497
};
 
56498
 
 
56499
/** \class CT_MembPtrDeclarator CTree.h Puma/CTree.h
 
56500
 *  Tree node representing a member pointer declarator.
 
56501
 *  Example: \code *X::a \endcode */
 
56502
 
 
56503
#line 56504 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56504
} // closed Puma
 
56505
class CCExprResolve;
 
56506
class CExprResolve;
 
56507
class WinIfExists;
 
56508
class WinImportHandler;
 
56509
class WinMacros;
 
56510
class WinAsm;
 
56511
class WinDeclSpecs;
 
56512
class WinMemberExplSpec;
 
56513
class WinTypeKeywords;
 
56514
class WinFriend;
 
56515
class ExtAC;
 
56516
class ExtACBuilderCoupling;
 
56517
class ExtACSyntaxCoupling;
 
56518
class ExtACTree;
 
56519
class ExtACKeywords;
 
56520
class ExtGnu;
 
56521
class PragmaOnceUnitState;
 
56522
class PragmaOnce;
 
56523
class CMatchSyntax;
 
56524
namespace Puma {
 
56525
 
 
56526
#line 3370 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56527
class CT_MembPtrDeclarator : public CT_Declarator {
 
56528
#line 56529 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56529
  friend class ::CCExprResolve;
 
56530
  friend class ::CExprResolve;
 
56531
  friend class ::WinIfExists;
 
56532
  friend class ::WinImportHandler;
 
56533
  friend class ::WinMacros;
 
56534
  friend class ::WinAsm;
 
56535
  friend class ::WinDeclSpecs;
 
56536
  friend class ::WinMemberExplSpec;
 
56537
  friend class ::WinTypeKeywords;
 
56538
  friend class ::WinFriend;
 
56539
  friend class ::ExtAC;
 
56540
  friend class ::ExtACBuilderCoupling;
 
56541
  friend class ::ExtACSyntaxCoupling;
 
56542
  friend class ::ExtACTree;
 
56543
  friend class ::ExtACKeywords;
 
56544
  friend class ::ExtGnu;
 
56545
  friend class ::PragmaOnceUnitState;
 
56546
  friend class ::PragmaOnce;
 
56547
  friend class ::CMatchSyntax;
 
56548
 
 
56549
#line 3370 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56550
 
 
56551
  CTree *sons[5]; // class, colon, ptr, cv_quals, declarator
 
56552
 
 
56553
public:
 
56554
  /** Constructor.
 
56555
   *  \param c The class name.
 
56556
   *  \param cc The scope operator '::'.
 
56557
   *  \param p The name of the pointer.
 
56558
   *  \param q The const/volatile pointer qualifier sequence.
 
56559
   *  \param d The declarator. */
 
56560
  CT_MembPtrDeclarator (CTree *c, CTree *cc, CTree *p, CTree *q, CTree *d) {
 
56561
    AddSon (sons[0], c); AddSon (sons[1], cc); AddSon (sons[2], p); 
 
56562
    AddSon (sons[3], q); AddSon (sons[4], d); 
 
56563
  }
 
56564
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56565
  static const char *NodeId ();
 
56566
  /** Get the name of the node. Can be compared with NodeId(). */
 
56567
  const char *NodeName () const { return NodeId (); }
 
56568
  /** Get the number of sons. */
 
56569
  int Sons () const { return CTree::Sons (sons, 5); }
 
56570
  /** Get the n-th son.
 
56571
   *  \param n The index of the son.
 
56572
   *  \return The n-th son or NULL. */
 
56573
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
56574
  /** Get the name of the declared pointer. */
 
56575
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
56576
  /** Get the declarator. */
 
56577
  CTree *Declarator () const { return sons[4]; }
 
56578
  /** Get the const/volatile qualifier sequence. */
 
56579
  CT_DeclSpecSeq *Qualifier () const { return (CT_DeclSpecSeq*)sons[3]; }
 
56580
  /** Replace a son.
 
56581
   *  \param old_son The son to replace.
 
56582
   *  \param new_son The new son. */
 
56583
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56584
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
56585
  }
 
56586
public:
 
56587
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
56588
  const char *__attr_name (unsigned i) const {
 
56589
    static const char *names[] = { "sons" }; return names[i];
 
56590
  }
 
56591
  const void *__attr (unsigned __i) const {
 
56592
    switch (__i) { case 0: return &sons; default: return 0; }
 
56593
  }
 
56594
#line 3406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56595
};
 
56596
 
 
56597
/** \class CT_BitFieldDeclarator CTree.h Puma/CTree.h
 
56598
 *  Tree node representing a bit-field declarator.
 
56599
 *  Example: \code a : 2 \endcode */
 
56600
 
 
56601
#line 56602 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56602
} // closed Puma
 
56603
class CCExprResolve;
 
56604
class CExprResolve;
 
56605
class WinIfExists;
 
56606
class WinImportHandler;
 
56607
class WinMacros;
 
56608
class WinAsm;
 
56609
class WinDeclSpecs;
 
56610
class WinMemberExplSpec;
 
56611
class WinTypeKeywords;
 
56612
class WinFriend;
 
56613
class ExtAC;
 
56614
class ExtACBuilderCoupling;
 
56615
class ExtACSyntaxCoupling;
 
56616
class ExtACTree;
 
56617
class ExtACKeywords;
 
56618
class ExtGnu;
 
56619
class PragmaOnceUnitState;
 
56620
class PragmaOnce;
 
56621
class CMatchSyntax;
 
56622
namespace Puma {
 
56623
 
 
56624
#line 3411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56625
class CT_BitFieldDeclarator : public CT_Declarator, public CSemObject {
 
56626
#line 56627 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56627
  friend class ::CCExprResolve;
 
56628
  friend class ::CExprResolve;
 
56629
  friend class ::WinIfExists;
 
56630
  friend class ::WinImportHandler;
 
56631
  friend class ::WinMacros;
 
56632
  friend class ::WinAsm;
 
56633
  friend class ::WinDeclSpecs;
 
56634
  friend class ::WinMemberExplSpec;
 
56635
  friend class ::WinTypeKeywords;
 
56636
  friend class ::WinFriend;
 
56637
  friend class ::ExtAC;
 
56638
  friend class ::ExtACBuilderCoupling;
 
56639
  friend class ::ExtACSyntaxCoupling;
 
56640
  friend class ::ExtACTree;
 
56641
  friend class ::ExtACKeywords;
 
56642
  friend class ::ExtGnu;
 
56643
  friend class ::PragmaOnceUnitState;
 
56644
  friend class ::PragmaOnce;
 
56645
  friend class ::CMatchSyntax;
 
56646
 
 
56647
#line 3411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56648
 
 
56649
  CTree *sons[3]; // declarator, colon, expr
 
56650
 
 
56651
public:
 
56652
  /** Constructor.
 
56653
   *  \param d The declarator.
 
56654
   *  \param c The colon between the declarator and the bit count.
 
56655
   *  \param e The expression specifying the number of bits. */
 
56656
  CT_BitFieldDeclarator (CTree *d, CTree *c, CTree *e = 0) {
 
56657
    AddSon (sons[0], d); AddSon (sons[1], c); AddSon (sons[2], e); 
 
56658
  }
 
56659
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56660
  static const char *NodeId ();
 
56661
  /** Get the name of the node. Can be compared with NodeId(). */
 
56662
  const char *NodeName () const { return NodeId (); }
 
56663
  /** Get the number of sons. */
 
56664
  int Sons () const { return CTree::Sons (sons, 3); }
 
56665
  /** Get the n-th son.
 
56666
   *  \param n The index of the son.
 
56667
   *  \return The n-th son or NULL. */
 
56668
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
56669
  /** Get the declarator. */
 
56670
  CTree *Declarator () const { return sons[0]; }
 
56671
  /** Get the expression specifying the number of bits. */
 
56672
  CTree *Expr () const { return sons[2]; }
 
56673
  /** Set the expression specifying the number of bits. */
 
56674
  void FieldSize (CTree *s) { AddSon (sons[2], s); }
 
56675
  /** Get the semantic information about the declared bit-field. */
 
56676
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
56677
  /** Replace a son.
 
56678
   *  \param old_son The son to replace.
 
56679
   *  \param new_son The new son. */
 
56680
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56681
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
56682
  }
 
56683
public:
 
56684
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
56685
  const char *__attr_name (unsigned i) const {
 
56686
    static const char *names[] = { "sons" }; return names[i];
 
56687
  }
 
56688
  const void *__attr (unsigned __i) const {
 
56689
    switch (__i) { case 0: return &sons; default: return 0; }
 
56690
  }
 
56691
#line 3446 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56692
};
 
56693
 
 
56694
/*****************************************************************************/
 
56695
/*                                                                           */
 
56696
/*                              Statements                                   */
 
56697
/*                                                                           */
 
56698
/*****************************************************************************/
 
56699
 
 
56700
/** \class CT_Statement CTree.h Puma/CTree.h
 
56701
 *  Base class for all tree nodes representing statements. */
 
56702
 
 
56703
#line 56704 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56704
} // closed Puma
 
56705
class CCExprResolve;
 
56706
class CExprResolve;
 
56707
class WinIfExists;
 
56708
class WinImportHandler;
 
56709
class WinMacros;
 
56710
class WinAsm;
 
56711
class WinDeclSpecs;
 
56712
class WinMemberExplSpec;
 
56713
class WinTypeKeywords;
 
56714
class WinFriend;
 
56715
class ExtAC;
 
56716
class ExtACBuilderCoupling;
 
56717
class ExtACSyntaxCoupling;
 
56718
class ExtACTree;
 
56719
class ExtACKeywords;
 
56720
class ExtGnu;
 
56721
class PragmaOnceUnitState;
 
56722
class PragmaOnce;
 
56723
class CMatchSyntax;
 
56724
namespace Puma {
 
56725
 
 
56726
#line 3456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56727
class CT_Statement : public CTree {
 
56728
#line 56729 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56729
  friend class ::CCExprResolve;
 
56730
  friend class ::CExprResolve;
 
56731
  friend class ::WinIfExists;
 
56732
  friend class ::WinImportHandler;
 
56733
  friend class ::WinMacros;
 
56734
  friend class ::WinAsm;
 
56735
  friend class ::WinDeclSpecs;
 
56736
  friend class ::WinMemberExplSpec;
 
56737
  friend class ::WinTypeKeywords;
 
56738
  friend class ::WinFriend;
 
56739
  friend class ::ExtAC;
 
56740
  friend class ::ExtACBuilderCoupling;
 
56741
  friend class ::ExtACSyntaxCoupling;
 
56742
  friend class ::ExtACTree;
 
56743
  friend class ::ExtACKeywords;
 
56744
  friend class ::ExtGnu;
 
56745
  friend class ::PragmaOnceUnitState;
 
56746
  friend class ::PragmaOnce;
 
56747
  friend class ::CMatchSyntax;
 
56748
 
 
56749
#line 3456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56750
 
 
56751
protected:
 
56752
  /** Constructor. */
 
56753
  CT_Statement () {}
 
56754
  /** Get this. */
 
56755
  virtual CT_Statement *IsStatement () { return this; }
 
56756
public:
 
56757
  typedef AC::TLE __AttrTypes;
 
56758
  const char *__attr_name (unsigned i) const { return 0; }
 
56759
  const void *__attr (unsigned __i) const { return 0; }
 
56760
#line 3462 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56761
};
 
56762
 
 
56763
/** \class CT_LabelStmt CTree.h Puma/CTree.h
 
56764
 *  Tree node representing a label statement.
 
56765
 *  Example: \code incr_a: a++; \endcode */
 
56766
 
 
56767
#line 56768 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56768
} // closed Puma
 
56769
class CCExprResolve;
 
56770
class CExprResolve;
 
56771
class WinIfExists;
 
56772
class WinImportHandler;
 
56773
class WinMacros;
 
56774
class WinAsm;
 
56775
class WinDeclSpecs;
 
56776
class WinMemberExplSpec;
 
56777
class WinTypeKeywords;
 
56778
class WinFriend;
 
56779
class ExtAC;
 
56780
class ExtACBuilderCoupling;
 
56781
class ExtACSyntaxCoupling;
 
56782
class ExtACTree;
 
56783
class ExtACKeywords;
 
56784
class ExtGnu;
 
56785
class PragmaOnceUnitState;
 
56786
class PragmaOnce;
 
56787
class CMatchSyntax;
 
56788
namespace Puma {
 
56789
 
 
56790
#line 3467 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56791
class CT_LabelStmt : public CT_Statement {
 
56792
#line 56793 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56793
  friend class ::CCExprResolve;
 
56794
  friend class ::CExprResolve;
 
56795
  friend class ::WinIfExists;
 
56796
  friend class ::WinImportHandler;
 
56797
  friend class ::WinMacros;
 
56798
  friend class ::WinAsm;
 
56799
  friend class ::WinDeclSpecs;
 
56800
  friend class ::WinMemberExplSpec;
 
56801
  friend class ::WinTypeKeywords;
 
56802
  friend class ::WinFriend;
 
56803
  friend class ::ExtAC;
 
56804
  friend class ::ExtACBuilderCoupling;
 
56805
  friend class ::ExtACSyntaxCoupling;
 
56806
  friend class ::ExtACTree;
 
56807
  friend class ::ExtACKeywords;
 
56808
  friend class ::ExtGnu;
 
56809
  friend class ::PragmaOnceUnitState;
 
56810
  friend class ::PragmaOnce;
 
56811
  friend class ::CMatchSyntax;
 
56812
 
 
56813
#line 3467 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56814
 
 
56815
  CTree *sons[3]; // id, colon, stmt
 
56816
 
 
56817
public:
 
56818
  /** Constructor.
 
56819
   *  \param id The name of the label.
 
56820
   *  \param c The colon behind the label.
 
56821
   *  \param stmt The statement following the label. */
 
56822
  CT_LabelStmt (CTree *id, CTree *c, CTree *stmt) {
 
56823
    AddSon (sons[0], id); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
56824
  }
 
56825
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56826
  static const char *NodeId ();
 
56827
  /** Get the name of the node. Can be compared with NodeId(). */
 
56828
  const char *NodeName () const { return NodeId (); }
 
56829
  /** Get the number of sons. */
 
56830
  int Sons () const { return 3; }
 
56831
  /** Get the n-th son.
 
56832
   *  \param n The index of the son.
 
56833
   *  \return The n-th son or NULL. */
 
56834
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
56835
  /** Get the statement. */
 
56836
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
56837
  /** Get the name of the label. */
 
56838
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[0]; }
 
56839
  /** Replace a son.
 
56840
   *  \param old_son The son to replace.
 
56841
   *  \param new_son The new son. */
 
56842
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56843
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
56844
  }
 
56845
public:
 
56846
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
56847
  const char *__attr_name (unsigned i) const {
 
56848
    static const char *names[] = { "sons" }; return names[i];
 
56849
  }
 
56850
  const void *__attr (unsigned __i) const {
 
56851
    switch (__i) { case 0: return &sons; default: return 0; }
 
56852
  }
 
56853
#line 3498 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56854
};
 
56855
 
 
56856
/** \class CT_DefaultStmt CTree.h Puma/CTree.h
 
56857
 *  Tree node representing a default statement of a switch statement.
 
56858
 *  Example: \code default: break; \endcode */
 
56859
 
 
56860
#line 56861 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56861
} // closed Puma
 
56862
class CCExprResolve;
 
56863
class CExprResolve;
 
56864
class WinIfExists;
 
56865
class WinImportHandler;
 
56866
class WinMacros;
 
56867
class WinAsm;
 
56868
class WinDeclSpecs;
 
56869
class WinMemberExplSpec;
 
56870
class WinTypeKeywords;
 
56871
class WinFriend;
 
56872
class ExtAC;
 
56873
class ExtACBuilderCoupling;
 
56874
class ExtACSyntaxCoupling;
 
56875
class ExtACTree;
 
56876
class ExtACKeywords;
 
56877
class ExtGnu;
 
56878
class PragmaOnceUnitState;
 
56879
class PragmaOnce;
 
56880
class CMatchSyntax;
 
56881
namespace Puma {
 
56882
 
 
56883
#line 3503 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56884
class CT_DefaultStmt : public CT_Statement {
 
56885
#line 56886 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56886
  friend class ::CCExprResolve;
 
56887
  friend class ::CExprResolve;
 
56888
  friend class ::WinIfExists;
 
56889
  friend class ::WinImportHandler;
 
56890
  friend class ::WinMacros;
 
56891
  friend class ::WinAsm;
 
56892
  friend class ::WinDeclSpecs;
 
56893
  friend class ::WinMemberExplSpec;
 
56894
  friend class ::WinTypeKeywords;
 
56895
  friend class ::WinFriend;
 
56896
  friend class ::ExtAC;
 
56897
  friend class ::ExtACBuilderCoupling;
 
56898
  friend class ::ExtACSyntaxCoupling;
 
56899
  friend class ::ExtACTree;
 
56900
  friend class ::ExtACKeywords;
 
56901
  friend class ::ExtGnu;
 
56902
  friend class ::PragmaOnceUnitState;
 
56903
  friend class ::PragmaOnce;
 
56904
  friend class ::CMatchSyntax;
 
56905
 
 
56906
#line 3503 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56907
 
 
56908
  CTree *sons[3]; // keyword, colon, stmt
 
56909
 
 
56910
public:
 
56911
  /** Constructor.
 
56912
   *  \param kw The keyword 'default'.
 
56913
   *  \param c The colon behind the keyword.
 
56914
   *  \param stmt The statement of the default case. */
 
56915
  CT_DefaultStmt (CTree *kw, CTree *c, CTree *stmt) {
 
56916
    AddSon (sons[0], kw); AddSon (sons[1], c); AddSon (sons[2], stmt); 
 
56917
  }
 
56918
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
56919
  static const char *NodeId ();
 
56920
  /** Get the name of the node. Can be compared with NodeId(). */
 
56921
  const char *NodeName () const { return NodeId (); }
 
56922
  /** Get the number of sons. */
 
56923
  int Sons () const { return 3; }
 
56924
  /** Get the n-th son.
 
56925
   *  \param n The index of the son.
 
56926
   *  \return The n-th son or NULL. */
 
56927
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
56928
  /** Get the statement. */
 
56929
  CT_Statement *Statement () const { return (CT_Statement*)sons[2]; }
 
56930
  /** Replace a son.
 
56931
   *  \param old_son The son to replace.
 
56932
   *  \param new_son The new son. */
 
56933
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
56934
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
56935
  }
 
56936
public:
 
56937
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
56938
  const char *__attr_name (unsigned i) const {
 
56939
    static const char *names[] = { "sons" }; return names[i];
 
56940
  }
 
56941
  const void *__attr (unsigned __i) const {
 
56942
    switch (__i) { case 0: return &sons; default: return 0; }
 
56943
  }
 
56944
#line 3532 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56945
};
 
56946
 
 
56947
/** \class CT_TryStmt CTree.h Puma/CTree.h
 
56948
 *  Tree node representing a try-catch statement.
 
56949
 *  Example: \code try { f(); } catch (...) {} \endcode */
 
56950
 
 
56951
#line 56952 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56952
} // closed Puma
 
56953
class CCExprResolve;
 
56954
class CExprResolve;
 
56955
class WinIfExists;
 
56956
class WinImportHandler;
 
56957
class WinMacros;
 
56958
class WinAsm;
 
56959
class WinDeclSpecs;
 
56960
class WinMemberExplSpec;
 
56961
class WinTypeKeywords;
 
56962
class WinFriend;
 
56963
class ExtAC;
 
56964
class ExtACBuilderCoupling;
 
56965
class ExtACSyntaxCoupling;
 
56966
class ExtACTree;
 
56967
class ExtACKeywords;
 
56968
class ExtGnu;
 
56969
class PragmaOnceUnitState;
 
56970
class PragmaOnce;
 
56971
class CMatchSyntax;
 
56972
namespace Puma {
 
56973
 
 
56974
#line 3537 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56975
class CT_TryStmt : public CT_Statement {
 
56976
#line 56977 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
56977
  friend class ::CCExprResolve;
 
56978
  friend class ::CExprResolve;
 
56979
  friend class ::WinIfExists;
 
56980
  friend class ::WinImportHandler;
 
56981
  friend class ::WinMacros;
 
56982
  friend class ::WinAsm;
 
56983
  friend class ::WinDeclSpecs;
 
56984
  friend class ::WinMemberExplSpec;
 
56985
  friend class ::WinTypeKeywords;
 
56986
  friend class ::WinFriend;
 
56987
  friend class ::ExtAC;
 
56988
  friend class ::ExtACBuilderCoupling;
 
56989
  friend class ::ExtACSyntaxCoupling;
 
56990
  friend class ::ExtACTree;
 
56991
  friend class ::ExtACKeywords;
 
56992
  friend class ::ExtGnu;
 
56993
  friend class ::PragmaOnceUnitState;
 
56994
  friend class ::PragmaOnce;
 
56995
  friend class ::CMatchSyntax;
 
56996
 
 
56997
#line 3537 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
56998
 
 
56999
  CTree *sons[3]; // try, stmt, handlers
 
57000
 
 
57001
public:
 
57002
  /** Constructor.
 
57003
   *  \param t The keyword 'try'.
 
57004
   *  \param s The statement enclosed in the try-catch block.
 
57005
   *  \param h The exception handler sequence. */
 
57006
  CT_TryStmt (CTree *t, CTree *s, CTree *h) {
 
57007
    AddSon (sons[0], t); AddSon (sons[1], s); AddSon (sons[2], h); 
 
57008
  }
 
57009
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57010
  static const char *NodeId ();
 
57011
  /** Get the name of the node. Can be compared with NodeId(). */
 
57012
  const char *NodeName () const { return NodeId (); }
 
57013
  /** Get the number of sons. */
 
57014
  int Sons () const { return 3; }
 
57015
  /** Get the n-th son.
 
57016
   *  \param n The index of the son.
 
57017
   *  \return The n-th son or NULL. */
 
57018
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
57019
  /** Get the enclosed statement. */
 
57020
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
57021
  /** Get the exception handler sequence. */
 
57022
  CT_HandlerSeq *Handlers () const { return (CT_HandlerSeq*)sons[2]; }
 
57023
  /** Replace a son.
 
57024
   *  \param old_son The son to replace.
 
57025
   *  \param new_son The new son. */
 
57026
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57027
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
57028
  }
 
57029
public:
 
57030
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
57031
  const char *__attr_name (unsigned i) const {
 
57032
    static const char *names[] = { "sons" }; return names[i];
 
57033
  }
 
57034
  const void *__attr (unsigned __i) const {
 
57035
    switch (__i) { case 0: return &sons; default: return 0; }
 
57036
  }
 
57037
#line 3568 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57038
};
 
57039
 
 
57040
/** \class CT_CaseStmt CTree.h Puma/CTree.h
 
57041
 *  Tree node representing a case statement.
 
57042
 *  Example: \code case 42: a=42; \endcode */
 
57043
 
 
57044
#line 57045 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57045
} // closed Puma
 
57046
class CCExprResolve;
 
57047
class CExprResolve;
 
57048
class WinIfExists;
 
57049
class WinImportHandler;
 
57050
class WinMacros;
 
57051
class WinAsm;
 
57052
class WinDeclSpecs;
 
57053
class WinMemberExplSpec;
 
57054
class WinTypeKeywords;
 
57055
class WinFriend;
 
57056
class ExtAC;
 
57057
class ExtACBuilderCoupling;
 
57058
class ExtACSyntaxCoupling;
 
57059
class ExtACTree;
 
57060
class ExtACKeywords;
 
57061
class ExtGnu;
 
57062
class PragmaOnceUnitState;
 
57063
class PragmaOnce;
 
57064
class CMatchSyntax;
 
57065
namespace Puma {
 
57066
 
 
57067
#line 3573 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57068
class CT_CaseStmt : public CT_Statement {
 
57069
#line 57070 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57070
  friend class ::CCExprResolve;
 
57071
  friend class ::CExprResolve;
 
57072
  friend class ::WinIfExists;
 
57073
  friend class ::WinImportHandler;
 
57074
  friend class ::WinMacros;
 
57075
  friend class ::WinAsm;
 
57076
  friend class ::WinDeclSpecs;
 
57077
  friend class ::WinMemberExplSpec;
 
57078
  friend class ::WinTypeKeywords;
 
57079
  friend class ::WinFriend;
 
57080
  friend class ::ExtAC;
 
57081
  friend class ::ExtACBuilderCoupling;
 
57082
  friend class ::ExtACSyntaxCoupling;
 
57083
  friend class ::ExtACTree;
 
57084
  friend class ::ExtACKeywords;
 
57085
  friend class ::ExtGnu;
 
57086
  friend class ::PragmaOnceUnitState;
 
57087
  friend class ::PragmaOnce;
 
57088
  friend class ::CMatchSyntax;
 
57089
 
 
57090
#line 3573 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57091
 
 
57092
  CTree *sons[4]; // keyword, expr, colon, stmt
 
57093
 
 
57094
public:
 
57095
  /** Constructor.
 
57096
   *  \param kw The keyword 'case'.
 
57097
   *  \param expr The constant expression specifying the case value.
 
57098
   *  \param c The colon.
 
57099
   *  \param stmt The statement of the case. */
 
57100
  CT_CaseStmt (CTree *kw, CTree *expr, CTree *c, CTree *stmt) {
 
57101
    AddSon (sons[0], kw); AddSon (sons[1], expr); 
 
57102
    AddSon (sons[2], c); AddSon (sons[3], stmt); 
 
57103
  }
 
57104
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57105
  static const char *NodeId ();
 
57106
  /** Get the name of the node. Can be compared with NodeId(). */
 
57107
  const char *NodeName () const { return NodeId (); }
 
57108
  /** Get the number of sons. */
 
57109
  int Sons () const { return 4; }
 
57110
  /** Get the n-th son.
 
57111
   *  \param n The index of the son.
 
57112
   *  \return The n-th son or NULL. */
 
57113
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
57114
  /** Get the statement. */
 
57115
  CT_Statement *Statement () const { return (CT_Statement*)sons[3]; }
 
57116
  /** Get the expression specifying the case value. */
 
57117
  CTree *Expr () const { return sons[1]; }
 
57118
  /** Replace a son.
 
57119
   *  \param old_son The son to replace.
 
57120
   *  \param new_son The new son. */
 
57121
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57122
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
57123
  }
 
57124
public:
 
57125
  typedef AC::TL<Puma::CTree * [4],AC::TLE > __AttrTypes;
 
57126
  const char *__attr_name (unsigned i) const {
 
57127
    static const char *names[] = { "sons" }; return names[i];
 
57128
  }
 
57129
  const void *__attr (unsigned __i) const {
 
57130
    switch (__i) { case 0: return &sons; default: return 0; }
 
57131
  }
 
57132
#line 3606 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57133
};
 
57134
 
 
57135
/** \class CT_ExprStmt CTree.h Puma/CTree.h
 
57136
 *  Tree node representing an expression statement.
 
57137
 *  Example: \code a+b; \endcode */
 
57138
 
 
57139
#line 57140 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57140
} // closed Puma
 
57141
class CCExprResolve;
 
57142
class CExprResolve;
 
57143
class WinIfExists;
 
57144
class WinImportHandler;
 
57145
class WinMacros;
 
57146
class WinAsm;
 
57147
class WinDeclSpecs;
 
57148
class WinMemberExplSpec;
 
57149
class WinTypeKeywords;
 
57150
class WinFriend;
 
57151
class ExtAC;
 
57152
class ExtACBuilderCoupling;
 
57153
class ExtACSyntaxCoupling;
 
57154
class ExtACTree;
 
57155
class ExtACKeywords;
 
57156
class ExtGnu;
 
57157
class PragmaOnceUnitState;
 
57158
class PragmaOnce;
 
57159
class CMatchSyntax;
 
57160
namespace Puma {
 
57161
 
 
57162
#line 3611 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57163
class CT_ExprStmt : public CT_Statement {
 
57164
#line 57165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57165
  friend class ::CCExprResolve;
 
57166
  friend class ::CExprResolve;
 
57167
  friend class ::WinIfExists;
 
57168
  friend class ::WinImportHandler;
 
57169
  friend class ::WinMacros;
 
57170
  friend class ::WinAsm;
 
57171
  friend class ::WinDeclSpecs;
 
57172
  friend class ::WinMemberExplSpec;
 
57173
  friend class ::WinTypeKeywords;
 
57174
  friend class ::WinFriend;
 
57175
  friend class ::ExtAC;
 
57176
  friend class ::ExtACBuilderCoupling;
 
57177
  friend class ::ExtACSyntaxCoupling;
 
57178
  friend class ::ExtACTree;
 
57179
  friend class ::ExtACKeywords;
 
57180
  friend class ::ExtGnu;
 
57181
  friend class ::PragmaOnceUnitState;
 
57182
  friend class ::PragmaOnce;
 
57183
  friend class ::CMatchSyntax;
 
57184
 
 
57185
#line 3611 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57186
 
 
57187
  CTree *sons[2]; // expr, semi_colon
 
57188
 
 
57189
public:
 
57190
  /** Constructor.
 
57191
   *  \param expr The expression.
 
57192
   *  \param sc The trailing semi-colon. */
 
57193
  CT_ExprStmt (CTree *expr, CTree *sc) { AddSon (sons[0], expr); AddSon (sons[1], sc); }
 
57194
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57195
  static const char *NodeId ();
 
57196
  /** Get the name of the node. Can be compared with NodeId(). */
 
57197
  const char *NodeName () const { return NodeId (); }
 
57198
  /** Get the number of sons. */
 
57199
  int Sons () const { return CTree::Sons (sons, 2); }
 
57200
  /** Get the n-th son.
 
57201
   *  \param n The index of the son.
 
57202
   *  \return The n-th son or NULL. */
 
57203
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
57204
  /** Get the expression. */
 
57205
  CTree *Expr () const { return sons[0]; }
 
57206
  /** Replace a son.
 
57207
   *  \param old_son The son to replace.
 
57208
   *  \param new_son The new son. */
 
57209
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57210
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
57211
  }
 
57212
public:
 
57213
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
57214
  const char *__attr_name (unsigned i) const {
 
57215
    static const char *names[] = { "sons" }; return names[i];
 
57216
  }
 
57217
  const void *__attr (unsigned __i) const {
 
57218
    switch (__i) { case 0: return &sons; default: return 0; }
 
57219
  }
 
57220
#line 3637 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57221
};
 
57222
 
 
57223
/** \class CT_DeclStmt CTree.h Puma/CTree.h
 
57224
 *  Tree node representing a declaration statement.
 
57225
 *  Example: \code int i = 0; \endcode */
 
57226
 
 
57227
#line 57228 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57228
} // closed Puma
 
57229
class CCExprResolve;
 
57230
class CExprResolve;
 
57231
class WinIfExists;
 
57232
class WinImportHandler;
 
57233
class WinMacros;
 
57234
class WinAsm;
 
57235
class WinDeclSpecs;
 
57236
class WinMemberExplSpec;
 
57237
class WinTypeKeywords;
 
57238
class WinFriend;
 
57239
class ExtAC;
 
57240
class ExtACBuilderCoupling;
 
57241
class ExtACSyntaxCoupling;
 
57242
class ExtACTree;
 
57243
class ExtACKeywords;
 
57244
class ExtGnu;
 
57245
class PragmaOnceUnitState;
 
57246
class PragmaOnce;
 
57247
class CMatchSyntax;
 
57248
namespace Puma {
 
57249
 
 
57250
#line 3642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57251
class CT_DeclStmt : public CT_Statement {
 
57252
#line 57253 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57253
  friend class ::CCExprResolve;
 
57254
  friend class ::CExprResolve;
 
57255
  friend class ::WinIfExists;
 
57256
  friend class ::WinImportHandler;
 
57257
  friend class ::WinMacros;
 
57258
  friend class ::WinAsm;
 
57259
  friend class ::WinDeclSpecs;
 
57260
  friend class ::WinMemberExplSpec;
 
57261
  friend class ::WinTypeKeywords;
 
57262
  friend class ::WinFriend;
 
57263
  friend class ::ExtAC;
 
57264
  friend class ::ExtACBuilderCoupling;
 
57265
  friend class ::ExtACSyntaxCoupling;
 
57266
  friend class ::ExtACTree;
 
57267
  friend class ::ExtACKeywords;
 
57268
  friend class ::ExtGnu;
 
57269
  friend class ::PragmaOnceUnitState;
 
57270
  friend class ::PragmaOnce;
 
57271
  friend class ::CMatchSyntax;
 
57272
 
 
57273
#line 3642 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57274
 
 
57275
  CTree *_decl;
 
57276
 
 
57277
public:
 
57278
  /** Constructor.
 
57279
   *  \param decl The declaration. */
 
57280
  CT_DeclStmt (CTree *decl) { AddSon (_decl, decl); }
 
57281
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57282
  static const char *NodeId ();
 
57283
  /** Get the name of the node. Can be compared with NodeId(). */
 
57284
  const char *NodeName () const { return NodeId (); }
 
57285
  /** Get the number of sons. */
 
57286
  int Sons () const { return 1; }
 
57287
  /** Get the n-th son.
 
57288
   *  \param n The index of the son.
 
57289
   *  \return The n-th son or NULL. */
 
57290
  CTree *Son (int n) const { return n == 0 ? _decl : (CTree*)0; }
 
57291
  /** Replace a son.
 
57292
   *  \param old_son The son to replace.
 
57293
   *  \param new_son The new son. */
 
57294
  void ReplaceSon (CTree *old_son, CTree *new_son) 
 
57295
   { CTree::ReplaceSon (_decl, old_son, new_son); }
 
57296
public:
 
57297
  typedef AC::TL<Puma::CTree *,AC::TLE > __AttrTypes;
 
57298
  const char *__attr_name (unsigned i) const {
 
57299
    static const char *names[] = { "_decl" }; return names[i];
 
57300
  }
 
57301
  const void *__attr (unsigned __i) const {
 
57302
    switch (__i) { case 0: return &_decl; default: return 0; }
 
57303
  }
 
57304
#line 3664 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57305
};
 
57306
 
 
57307
/** \class CT_SwitchStmt CTree.h Puma/CTree.h
 
57308
 *  Tree node representing a switch statement.
 
57309
 *  Example: \code switch(a) { case 0: a++; } \endcode */
 
57310
 
 
57311
#line 57312 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57312
} // closed Puma
 
57313
class CCExprResolve;
 
57314
class CExprResolve;
 
57315
class WinIfExists;
 
57316
class WinImportHandler;
 
57317
class WinMacros;
 
57318
class WinAsm;
 
57319
class WinDeclSpecs;
 
57320
class WinMemberExplSpec;
 
57321
class WinTypeKeywords;
 
57322
class WinFriend;
 
57323
class ExtAC;
 
57324
class ExtACBuilderCoupling;
 
57325
class ExtACSyntaxCoupling;
 
57326
class ExtACTree;
 
57327
class ExtACKeywords;
 
57328
class ExtGnu;
 
57329
class PragmaOnceUnitState;
 
57330
class PragmaOnce;
 
57331
class CMatchSyntax;
 
57332
namespace Puma {
 
57333
 
 
57334
#line 3669 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57335
class CT_SwitchStmt : public CT_Statement, public CSemScope {
 
57336
#line 57337 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57337
  friend class ::CCExprResolve;
 
57338
  friend class ::CExprResolve;
 
57339
  friend class ::WinIfExists;
 
57340
  friend class ::WinImportHandler;
 
57341
  friend class ::WinMacros;
 
57342
  friend class ::WinAsm;
 
57343
  friend class ::WinDeclSpecs;
 
57344
  friend class ::WinMemberExplSpec;
 
57345
  friend class ::WinTypeKeywords;
 
57346
  friend class ::WinFriend;
 
57347
  friend class ::ExtAC;
 
57348
  friend class ::ExtACBuilderCoupling;
 
57349
  friend class ::ExtACSyntaxCoupling;
 
57350
  friend class ::ExtACTree;
 
57351
  friend class ::ExtACKeywords;
 
57352
  friend class ::ExtGnu;
 
57353
  friend class ::PragmaOnceUnitState;
 
57354
  friend class ::PragmaOnce;
 
57355
  friend class ::CMatchSyntax;
 
57356
 
 
57357
#line 3669 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57358
 
 
57359
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
57360
 
 
57361
public:
 
57362
  /** Constructor.
 
57363
   *  \param kw The keyword 'switch'.
 
57364
   *  \param o Left parenthesis before the condition.
 
57365
   *  \param cond The switch-expression. 
 
57366
   *  \param c Right parenthesis behind the condition. 
 
57367
   *  \param stmt The cases of the switch-statement. */
 
57368
  CT_SwitchStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
57369
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
57370
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
57371
  }
 
57372
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57373
  static const char *NodeId ();
 
57374
  /** Get the name of the node. Can be compared with NodeId(). */
 
57375
  const char *NodeName () const { return NodeId (); }
 
57376
  /** Get the number of sons. */
 
57377
  int Sons () const { return 5; }
 
57378
  /** Get the n-th son.
 
57379
   *  \param n The index of the son.
 
57380
   *  \return The n-th son or NULL. */
 
57381
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
57382
  /** Get the cases. */
 
57383
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
57384
  /** Get the switch-expression. */
 
57385
  CTree *Condition () const { return sons[2]; }
 
57386
  /** Replace a son.
 
57387
   *  \param old_son The son to replace.
 
57388
   *  \param new_son The new son. */
 
57389
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57390
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
57391
  }
 
57392
  /** Get the scope opened by the switch-statement. */
 
57393
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
57394
public:
 
57395
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
57396
  const char *__attr_name (unsigned i) const {
 
57397
    static const char *names[] = { "sons" }; return names[i];
 
57398
  }
 
57399
  const void *__attr (unsigned __i) const {
 
57400
    switch (__i) { case 0: return &sons; default: return 0; }
 
57401
  }
 
57402
#line 3705 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57403
};
 
57404
 
 
57405
/** \class CT_IfStmt CTree.h Puma/CTree.h
 
57406
 *  Tree node representing a if-statement.
 
57407
 *  Example: \code if(a==0) a++; \endcode */
 
57408
 
 
57409
#line 57410 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57410
} // closed Puma
 
57411
class CCExprResolve;
 
57412
class CExprResolve;
 
57413
class WinIfExists;
 
57414
class WinImportHandler;
 
57415
class WinMacros;
 
57416
class WinAsm;
 
57417
class WinDeclSpecs;
 
57418
class WinMemberExplSpec;
 
57419
class WinTypeKeywords;
 
57420
class WinFriend;
 
57421
class ExtAC;
 
57422
class ExtACBuilderCoupling;
 
57423
class ExtACSyntaxCoupling;
 
57424
class ExtACTree;
 
57425
class ExtACKeywords;
 
57426
class ExtGnu;
 
57427
class PragmaOnceUnitState;
 
57428
class PragmaOnce;
 
57429
class CMatchSyntax;
 
57430
namespace Puma {
 
57431
 
 
57432
#line 3710 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57433
class CT_IfStmt : public CT_Statement, public CSemScope {
 
57434
#line 57435 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57435
  friend class ::CCExprResolve;
 
57436
  friend class ::CExprResolve;
 
57437
  friend class ::WinIfExists;
 
57438
  friend class ::WinImportHandler;
 
57439
  friend class ::WinMacros;
 
57440
  friend class ::WinAsm;
 
57441
  friend class ::WinDeclSpecs;
 
57442
  friend class ::WinMemberExplSpec;
 
57443
  friend class ::WinTypeKeywords;
 
57444
  friend class ::WinFriend;
 
57445
  friend class ::ExtAC;
 
57446
  friend class ::ExtACBuilderCoupling;
 
57447
  friend class ::ExtACSyntaxCoupling;
 
57448
  friend class ::ExtACTree;
 
57449
  friend class ::ExtACKeywords;
 
57450
  friend class ::ExtGnu;
 
57451
  friend class ::PragmaOnceUnitState;
 
57452
  friend class ::PragmaOnce;
 
57453
  friend class ::CMatchSyntax;
 
57454
 
 
57455
#line 3710 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57456
 
 
57457
  CTree *sons[5]; // keyword, open, cond, close, stmt
 
57458
 
 
57459
public:
 
57460
  /** Constructor.
 
57461
   *  \param kw The keyword 'if'.
 
57462
   *  \param o Left parenthesis before the condition.
 
57463
   *  \param cond The condition.
 
57464
   *  \param c Right parenthesis behind the condition.
 
57465
   *  \param stmt The controlled statement. */
 
57466
  CT_IfStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
57467
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
57468
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
57469
  }
 
57470
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57471
  static const char *NodeId ();
 
57472
  /** Get the name of the node. Can be compared with NodeId(). */
 
57473
  const char *NodeName () const { return NodeId (); }
 
57474
  /** Get the number of sons. */
 
57475
  int Sons () const { return 5; }
 
57476
  /** Get the n-th son.
 
57477
   *  \param n The index of the son.
 
57478
   *  \return The n-th son or NULL. */
 
57479
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
57480
  /** Get the controlled statement. */
 
57481
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
57482
  /** Get the condition. */
 
57483
  CTree *Condition () const { return sons[2]; }
 
57484
  /** Replace a son.
 
57485
   *  \param old_son The son to replace.
 
57486
   *  \param new_son The new son. */
 
57487
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57488
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
57489
  }
 
57490
  /** Get the scope opened by the if-statement. */
 
57491
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
57492
public:
 
57493
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
57494
  const char *__attr_name (unsigned i) const {
 
57495
    static const char *names[] = { "sons" }; return names[i];
 
57496
  }
 
57497
  const void *__attr (unsigned __i) const {
 
57498
    switch (__i) { case 0: return &sons; default: return 0; }
 
57499
  }
 
57500
#line 3746 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57501
};
 
57502
 
 
57503
/** \class CT_IfElseStmt CTree.h Puma/CTree.h
 
57504
 *  Tree node representing a if-else-statement.
 
57505
 *  Example: \code if(a==0) a++; else a=0; \endcode */
 
57506
 
 
57507
#line 57508 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57508
} // closed Puma
 
57509
class CCExprResolve;
 
57510
class CExprResolve;
 
57511
class WinIfExists;
 
57512
class WinImportHandler;
 
57513
class WinMacros;
 
57514
class WinAsm;
 
57515
class WinDeclSpecs;
 
57516
class WinMemberExplSpec;
 
57517
class WinTypeKeywords;
 
57518
class WinFriend;
 
57519
class ExtAC;
 
57520
class ExtACBuilderCoupling;
 
57521
class ExtACSyntaxCoupling;
 
57522
class ExtACTree;
 
57523
class ExtACKeywords;
 
57524
class ExtGnu;
 
57525
class PragmaOnceUnitState;
 
57526
class PragmaOnce;
 
57527
class CMatchSyntax;
 
57528
namespace Puma {
 
57529
 
 
57530
#line 3751 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57531
class CT_IfElseStmt : public CT_Statement, public CSemScope {
 
57532
#line 57533 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57533
  friend class ::CCExprResolve;
 
57534
  friend class ::CExprResolve;
 
57535
  friend class ::WinIfExists;
 
57536
  friend class ::WinImportHandler;
 
57537
  friend class ::WinMacros;
 
57538
  friend class ::WinAsm;
 
57539
  friend class ::WinDeclSpecs;
 
57540
  friend class ::WinMemberExplSpec;
 
57541
  friend class ::WinTypeKeywords;
 
57542
  friend class ::WinFriend;
 
57543
  friend class ::ExtAC;
 
57544
  friend class ::ExtACBuilderCoupling;
 
57545
  friend class ::ExtACSyntaxCoupling;
 
57546
  friend class ::ExtACTree;
 
57547
  friend class ::ExtACKeywords;
 
57548
  friend class ::ExtGnu;
 
57549
  friend class ::PragmaOnceUnitState;
 
57550
  friend class ::PragmaOnce;
 
57551
  friend class ::CMatchSyntax;
 
57552
 
 
57553
#line 3751 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57554
 
 
57555
  CTree *sons[7]; // if, open, cond, close, if_stmt, else, else_stmt
 
57556
 
 
57557
public:
 
57558
  /** Constructor.
 
57559
   *  \param i The keyword 'if'.
 
57560
   *  \param o Left parenthesis before the condition.
 
57561
   *  \param cond The condition.
 
57562
   *  \param c Right parenthesis behind the condition.
 
57563
   *  \param is The statement controlled by the if-branch.
 
57564
   *  \param e The keyword 'else'.
 
57565
   *  \param es The statement controlled by the else-branch. */
 
57566
  CT_IfElseStmt (CTree *i, CTree *o, CTree *cond, CTree *c, 
 
57567
                 CTree *is, CTree *e, CTree *es) {
 
57568
    AddSon (sons[0], i); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
57569
    AddSon (sons[3], c); AddSon (sons[4], is); AddSon (sons[5], e); 
 
57570
    AddSon (sons[6], es); 
 
57571
  }
 
57572
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57573
  static const char *NodeId ();
 
57574
  /** Get the name of the node. Can be compared with NodeId(). */
 
57575
  const char *NodeName () const { return NodeId (); }
 
57576
  /** Get the number of sons. */
 
57577
  int Sons () const { return 7; }
 
57578
  /** Get the n-th son.
 
57579
   *  \param n The index of the son.
 
57580
   *  \return The n-th son or NULL. */
 
57581
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
57582
  /** Get the condition. */
 
57583
  CTree *Condition () const { return sons[2]; }
 
57584
  /** Get the statement controlled by the if-branch. */
 
57585
  CT_Statement *IfPart () const { return (CT_Statement*)sons[4]; }
 
57586
  /** Get the statement controlled by the else-branch. */
 
57587
  CT_Statement *ElsePart () const { return (CT_Statement*)sons[6]; }
 
57588
  /** Replace a son.
 
57589
   *  \param old_son The son to replace.
 
57590
   *  \param new_son The new son. */
 
57591
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57592
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
57593
  }
 
57594
  /** Get the scope opened by the if-statement. */
 
57595
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
57596
public:
 
57597
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
57598
  const char *__attr_name (unsigned i) const {
 
57599
    static const char *names[] = { "sons" }; return names[i];
 
57600
  }
 
57601
  const void *__attr (unsigned __i) const {
 
57602
    switch (__i) { case 0: return &sons; default: return 0; }
 
57603
  }
 
57604
#line 3793 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57605
};
 
57606
 
 
57607
/** \class CT_BreakStmt CTree.h Puma/CTree.h
 
57608
 *  Tree node representing a break-statement.
 
57609
 *  Example: \code break; \endcode */
 
57610
 
 
57611
#line 57612 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57612
} // closed Puma
 
57613
class CCExprResolve;
 
57614
class CExprResolve;
 
57615
class WinIfExists;
 
57616
class WinImportHandler;
 
57617
class WinMacros;
 
57618
class WinAsm;
 
57619
class WinDeclSpecs;
 
57620
class WinMemberExplSpec;
 
57621
class WinTypeKeywords;
 
57622
class WinFriend;
 
57623
class ExtAC;
 
57624
class ExtACBuilderCoupling;
 
57625
class ExtACSyntaxCoupling;
 
57626
class ExtACTree;
 
57627
class ExtACKeywords;
 
57628
class ExtGnu;
 
57629
class PragmaOnceUnitState;
 
57630
class PragmaOnce;
 
57631
class CMatchSyntax;
 
57632
namespace Puma {
 
57633
 
 
57634
#line 3798 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57635
class CT_BreakStmt : public CT_Statement {
 
57636
#line 57637 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57637
  friend class ::CCExprResolve;
 
57638
  friend class ::CExprResolve;
 
57639
  friend class ::WinIfExists;
 
57640
  friend class ::WinImportHandler;
 
57641
  friend class ::WinMacros;
 
57642
  friend class ::WinAsm;
 
57643
  friend class ::WinDeclSpecs;
 
57644
  friend class ::WinMemberExplSpec;
 
57645
  friend class ::WinTypeKeywords;
 
57646
  friend class ::WinFriend;
 
57647
  friend class ::ExtAC;
 
57648
  friend class ::ExtACBuilderCoupling;
 
57649
  friend class ::ExtACSyntaxCoupling;
 
57650
  friend class ::ExtACTree;
 
57651
  friend class ::ExtACKeywords;
 
57652
  friend class ::ExtGnu;
 
57653
  friend class ::PragmaOnceUnitState;
 
57654
  friend class ::PragmaOnce;
 
57655
  friend class ::CMatchSyntax;
 
57656
 
 
57657
#line 3798 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57658
 
 
57659
  CTree *sons[2]; // key, semi_colon
 
57660
 
 
57661
public:
 
57662
  /** Constructor.
 
57663
   *  \param key The keyword 'break'.
 
57664
   *  \param sc The trailing semi-colon. */
 
57665
  CT_BreakStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
57666
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57667
  static const char *NodeId ();
 
57668
  /** Get the name of the node. Can be compared with NodeId(). */
 
57669
  const char *NodeName () const { return NodeId (); }
 
57670
  /** Get the number of sons. */
 
57671
  int Sons () const { return 2; }
 
57672
  /** Get the n-th son.
 
57673
   *  \param n The index of the son.
 
57674
   *  \return The n-th son or NULL. */
 
57675
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
57676
  /** Replace a son.
 
57677
   *  \param old_son The son to replace.
 
57678
   *  \param new_son The new son. */
 
57679
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57680
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
57681
  }
 
57682
public:
 
57683
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
57684
  const char *__attr_name (unsigned i) const {
 
57685
    static const char *names[] = { "sons" }; return names[i];
 
57686
  }
 
57687
  const void *__attr (unsigned __i) const {
 
57688
    switch (__i) { case 0: return &sons; default: return 0; }
 
57689
  }
 
57690
#line 3822 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57691
};
 
57692
 
 
57693
/** \class CT_ContinueStmt CTree.h Puma/CTree.h
 
57694
 *  Tree node representing a continue-statement.
 
57695
 *  Example: \code continue; \endcode */
 
57696
 
 
57697
#line 57698 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57698
} // closed Puma
 
57699
class CCExprResolve;
 
57700
class CExprResolve;
 
57701
class WinIfExists;
 
57702
class WinImportHandler;
 
57703
class WinMacros;
 
57704
class WinAsm;
 
57705
class WinDeclSpecs;
 
57706
class WinMemberExplSpec;
 
57707
class WinTypeKeywords;
 
57708
class WinFriend;
 
57709
class ExtAC;
 
57710
class ExtACBuilderCoupling;
 
57711
class ExtACSyntaxCoupling;
 
57712
class ExtACTree;
 
57713
class ExtACKeywords;
 
57714
class ExtGnu;
 
57715
class PragmaOnceUnitState;
 
57716
class PragmaOnce;
 
57717
class CMatchSyntax;
 
57718
namespace Puma {
 
57719
 
 
57720
#line 3827 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57721
class CT_ContinueStmt : public CT_Statement {
 
57722
#line 57723 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57723
  friend class ::CCExprResolve;
 
57724
  friend class ::CExprResolve;
 
57725
  friend class ::WinIfExists;
 
57726
  friend class ::WinImportHandler;
 
57727
  friend class ::WinMacros;
 
57728
  friend class ::WinAsm;
 
57729
  friend class ::WinDeclSpecs;
 
57730
  friend class ::WinMemberExplSpec;
 
57731
  friend class ::WinTypeKeywords;
 
57732
  friend class ::WinFriend;
 
57733
  friend class ::ExtAC;
 
57734
  friend class ::ExtACBuilderCoupling;
 
57735
  friend class ::ExtACSyntaxCoupling;
 
57736
  friend class ::ExtACTree;
 
57737
  friend class ::ExtACKeywords;
 
57738
  friend class ::ExtGnu;
 
57739
  friend class ::PragmaOnceUnitState;
 
57740
  friend class ::PragmaOnce;
 
57741
  friend class ::CMatchSyntax;
 
57742
 
 
57743
#line 3827 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57744
 
 
57745
  CTree *sons[2]; // key, semi_colon
 
57746
 
 
57747
public:
 
57748
  /** Constructor.
 
57749
   *  \param key The keyword 'continue'.
 
57750
   *  \param sc The trailing semi-colon. */
 
57751
  CT_ContinueStmt (CTree *key, CTree *sc) { AddSon (sons[0], key); AddSon (sons[1], sc); }
 
57752
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57753
  static const char *NodeId ();
 
57754
  /** Get the name of the node. Can be compared with NodeId(). */
 
57755
  const char *NodeName () const { return NodeId (); }
 
57756
  /** Get the number of sons. */
 
57757
  int Sons () const { return 2; }
 
57758
  /** Get the n-th son.
 
57759
   *  \param n The index of the son.
 
57760
   *  \return The n-th son or NULL. */
 
57761
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
57762
  /** Replace a son.
 
57763
   *  \param old_son The son to replace.
 
57764
   *  \param new_son The new son. */
 
57765
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57766
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
57767
  }
 
57768
public:
 
57769
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
57770
  const char *__attr_name (unsigned i) const {
 
57771
    static const char *names[] = { "sons" }; return names[i];
 
57772
  }
 
57773
  const void *__attr (unsigned __i) const {
 
57774
    switch (__i) { case 0: return &sons; default: return 0; }
 
57775
  }
 
57776
#line 3851 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57777
};
 
57778
 
 
57779
/** \class CT_GotoStmt CTree.h Puma/CTree.h
 
57780
 *  Tree node representing a goto-stmt.
 
57781
 *  Example: \code goto incr_a; \endcode */
 
57782
 
 
57783
#line 57784 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57784
} // closed Puma
 
57785
class CCExprResolve;
 
57786
class CExprResolve;
 
57787
class WinIfExists;
 
57788
class WinImportHandler;
 
57789
class WinMacros;
 
57790
class WinAsm;
 
57791
class WinDeclSpecs;
 
57792
class WinMemberExplSpec;
 
57793
class WinTypeKeywords;
 
57794
class WinFriend;
 
57795
class ExtAC;
 
57796
class ExtACBuilderCoupling;
 
57797
class ExtACSyntaxCoupling;
 
57798
class ExtACTree;
 
57799
class ExtACKeywords;
 
57800
class ExtGnu;
 
57801
class PragmaOnceUnitState;
 
57802
class PragmaOnce;
 
57803
class CMatchSyntax;
 
57804
namespace Puma {
 
57805
 
 
57806
#line 3856 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57807
class CT_GotoStmt : public CT_Statement {
 
57808
#line 57809 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57809
  friend class ::CCExprResolve;
 
57810
  friend class ::CExprResolve;
 
57811
  friend class ::WinIfExists;
 
57812
  friend class ::WinImportHandler;
 
57813
  friend class ::WinMacros;
 
57814
  friend class ::WinAsm;
 
57815
  friend class ::WinDeclSpecs;
 
57816
  friend class ::WinMemberExplSpec;
 
57817
  friend class ::WinTypeKeywords;
 
57818
  friend class ::WinFriend;
 
57819
  friend class ::ExtAC;
 
57820
  friend class ::ExtACBuilderCoupling;
 
57821
  friend class ::ExtACSyntaxCoupling;
 
57822
  friend class ::ExtACTree;
 
57823
  friend class ::ExtACKeywords;
 
57824
  friend class ::ExtGnu;
 
57825
  friend class ::PragmaOnceUnitState;
 
57826
  friend class ::PragmaOnce;
 
57827
  friend class ::CMatchSyntax;
 
57828
 
 
57829
#line 3856 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57830
 
 
57831
  CTree *sons[3]; // key, label, semi_colon
 
57832
 
 
57833
public:
 
57834
  /** Constructor.
 
57835
   *  \param key The keyword 'goto'.
 
57836
   *  \param l The name of the jump label.
 
57837
   *  \param sc The trailing semi-colon. */
 
57838
  CT_GotoStmt (CTree *key, CTree *l, CTree *sc) {
 
57839
    AddSon (sons[0], key); AddSon (sons[1], l); AddSon (sons[2], sc); 
 
57840
  }
 
57841
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57842
  static const char *NodeId ();
 
57843
  /** Get the name of the node. Can be compared with NodeId(). */
 
57844
  const char *NodeName () const { return NodeId (); }
 
57845
  /** Get the number of sons. */
 
57846
  int Sons () const { return 3; }
 
57847
  /** Get the n-th son.
 
57848
   *  \param n The index of the son.
 
57849
   *  \return The n-th son or NULL. */
 
57850
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
57851
  /** Get the name of the jump label. */
 
57852
  CT_SimpleName *Label () const { return (CT_SimpleName*)sons[1]; }
 
57853
  /** Replace a son.
 
57854
   *  \param old_son The son to replace.
 
57855
   *  \param new_son The new son. */
 
57856
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57857
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
57858
  }
 
57859
public:
 
57860
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
57861
  const char *__attr_name (unsigned i) const {
 
57862
    static const char *names[] = { "sons" }; return names[i];
 
57863
  }
 
57864
  const void *__attr (unsigned __i) const {
 
57865
    switch (__i) { case 0: return &sons; default: return 0; }
 
57866
  }
 
57867
#line 3885 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57868
};
 
57869
 
 
57870
/** \class CT_ReturnStmt CTree.h Puma/CTree.h
 
57871
 *  Tree node representing a return-statement.
 
57872
 *  Example: \code return 1; \endcode */
 
57873
 
 
57874
#line 57875 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57875
} // closed Puma
 
57876
class CCExprResolve;
 
57877
class CExprResolve;
 
57878
class WinIfExists;
 
57879
class WinImportHandler;
 
57880
class WinMacros;
 
57881
class WinAsm;
 
57882
class WinDeclSpecs;
 
57883
class WinMemberExplSpec;
 
57884
class WinTypeKeywords;
 
57885
class WinFriend;
 
57886
class ExtAC;
 
57887
class ExtACBuilderCoupling;
 
57888
class ExtACSyntaxCoupling;
 
57889
class ExtACTree;
 
57890
class ExtACKeywords;
 
57891
class ExtGnu;
 
57892
class PragmaOnceUnitState;
 
57893
class PragmaOnce;
 
57894
class CMatchSyntax;
 
57895
namespace Puma {
 
57896
 
 
57897
#line 3890 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57898
class CT_ReturnStmt : public CT_Statement {
 
57899
#line 57900 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57900
  friend class ::CCExprResolve;
 
57901
  friend class ::CExprResolve;
 
57902
  friend class ::WinIfExists;
 
57903
  friend class ::WinImportHandler;
 
57904
  friend class ::WinMacros;
 
57905
  friend class ::WinAsm;
 
57906
  friend class ::WinDeclSpecs;
 
57907
  friend class ::WinMemberExplSpec;
 
57908
  friend class ::WinTypeKeywords;
 
57909
  friend class ::WinFriend;
 
57910
  friend class ::ExtAC;
 
57911
  friend class ::ExtACBuilderCoupling;
 
57912
  friend class ::ExtACSyntaxCoupling;
 
57913
  friend class ::ExtACTree;
 
57914
  friend class ::ExtACKeywords;
 
57915
  friend class ::ExtGnu;
 
57916
  friend class ::PragmaOnceUnitState;
 
57917
  friend class ::PragmaOnce;
 
57918
  friend class ::CMatchSyntax;
 
57919
 
 
57920
#line 3890 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57921
 
 
57922
  CTree *sons[3]; // key, expr, semi_colon
 
57923
 
 
57924
public:
 
57925
  /** Constructor.
 
57926
   *  \param key The keyword 'return'.
 
57927
   *  \param e The expression specifying the return value. 
 
57928
   *  \param sc The trailing semi-colon. */
 
57929
  CT_ReturnStmt (CTree *key, CTree *e, CTree *sc) {
 
57930
    AddSon (sons[0], key); AddSon (sons[1], e); AddSon (sons[2], sc); 
 
57931
  }
 
57932
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
57933
  static const char *NodeId ();
 
57934
  /** Get the name of the node. Can be compared with NodeId(). */
 
57935
  const char *NodeName () const { return NodeId (); }
 
57936
  /** Get the number of sons. */
 
57937
  int Sons () const { return CTree::Sons (sons, 3); }
 
57938
  /** Get the n-th son.
 
57939
   *  \param n The index of the son.
 
57940
   *  \return The n-th son or NULL. */
 
57941
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
57942
  /** Get the expression specifying the return value. */
 
57943
  CTree *Expr () const { return sons[1]; }
 
57944
  /** Replace a son.
 
57945
   *  \param old_son The son to replace.
 
57946
   *  \param new_son The new son. */
 
57947
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
57948
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
57949
  }
 
57950
public:
 
57951
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
57952
  const char *__attr_name (unsigned i) const {
 
57953
    static const char *names[] = { "sons" }; return names[i];
 
57954
  }
 
57955
  const void *__attr (unsigned __i) const {
 
57956
    switch (__i) { case 0: return &sons; default: return 0; }
 
57957
  }
 
57958
#line 3919 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57959
};
 
57960
 
 
57961
/** \class CT_WhileStmt CTree.h Puma/CTree.h
 
57962
 *  Tree node representing a while-statement.
 
57963
 *  Example: \code while(a>0) a--; \endcode */
 
57964
 
 
57965
#line 57966 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57966
} // closed Puma
 
57967
class CCExprResolve;
 
57968
class CExprResolve;
 
57969
class WinIfExists;
 
57970
class WinImportHandler;
 
57971
class WinMacros;
 
57972
class WinAsm;
 
57973
class WinDeclSpecs;
 
57974
class WinMemberExplSpec;
 
57975
class WinTypeKeywords;
 
57976
class WinFriend;
 
57977
class ExtAC;
 
57978
class ExtACBuilderCoupling;
 
57979
class ExtACSyntaxCoupling;
 
57980
class ExtACTree;
 
57981
class ExtACKeywords;
 
57982
class ExtGnu;
 
57983
class PragmaOnceUnitState;
 
57984
class PragmaOnce;
 
57985
class CMatchSyntax;
 
57986
namespace Puma {
 
57987
 
 
57988
#line 3924 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
57989
class CT_WhileStmt : public CT_Statement, public CSemScope {
 
57990
#line 57991 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
57991
  friend class ::CCExprResolve;
 
57992
  friend class ::CExprResolve;
 
57993
  friend class ::WinIfExists;
 
57994
  friend class ::WinImportHandler;
 
57995
  friend class ::WinMacros;
 
57996
  friend class ::WinAsm;
 
57997
  friend class ::WinDeclSpecs;
 
57998
  friend class ::WinMemberExplSpec;
 
57999
  friend class ::WinTypeKeywords;
 
58000
  friend class ::WinFriend;
 
58001
  friend class ::ExtAC;
 
58002
  friend class ::ExtACBuilderCoupling;
 
58003
  friend class ::ExtACSyntaxCoupling;
 
58004
  friend class ::ExtACTree;
 
58005
  friend class ::ExtACKeywords;
 
58006
  friend class ::ExtGnu;
 
58007
  friend class ::PragmaOnceUnitState;
 
58008
  friend class ::PragmaOnce;
 
58009
  friend class ::CMatchSyntax;
 
58010
 
 
58011
#line 3924 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58012
 
 
58013
  CTree *sons[5]; // key, open, cond, close, stmt
 
58014
 
 
58015
public:
 
58016
  /** Constructor.
 
58017
   *  \param kw The keyword 'while'.
 
58018
   *  \param o Left parenthesis before the condition.
 
58019
   *  \param cond The loop condition. 
 
58020
   *  \param c Right parenthesis behind the condition. 
 
58021
   *  \param stmt The controlled statement. */
 
58022
  CT_WhileStmt (CTree *kw, CTree *o, CTree *cond, CTree *c, CTree *stmt) {
 
58023
    AddSon (sons[0], kw); AddSon (sons[1], o); AddSon (sons[2], cond); 
 
58024
    AddSon (sons[3], c); AddSon (sons[4], stmt); 
 
58025
  }
 
58026
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58027
  static const char *NodeId ();
 
58028
  /** Get the name of the node. Can be compared with NodeId(). */
 
58029
  const char *NodeName () const { return NodeId (); }
 
58030
  /** Get the number of sons. */
 
58031
  int Sons () const { return 5; }
 
58032
  /** Get the n-th son.
 
58033
   *  \param n The index of the son.
 
58034
   *  \return The n-th son or NULL. */
 
58035
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
58036
  /** Get the controlled statement. */
 
58037
  CT_Statement *Statement () const { return (CT_Statement*)sons[4]; }
 
58038
  /** Get the loop condition. */
 
58039
  CTree *Condition () const { return sons[2]; }
 
58040
  /** Replace a son.
 
58041
   *  \param old_son The son to replace.
 
58042
   *  \param new_son The new son. */
 
58043
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58044
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
58045
  }
 
58046
  /** Get the scope opened by the while-statement. */
 
58047
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
58048
public:
 
58049
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
58050
  const char *__attr_name (unsigned i) const {
 
58051
    static const char *names[] = { "sons" }; return names[i];
 
58052
  }
 
58053
  const void *__attr (unsigned __i) const {
 
58054
    switch (__i) { case 0: return &sons; default: return 0; }
 
58055
  }
 
58056
#line 3960 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58057
};
 
58058
 
 
58059
/** \class CT_DoStmt CTree.h Puma/CTree.h
 
58060
 *  Tree node representing a do-while-statement.
 
58061
 *  Example: \code do a--; while(a>0); \endcode */
 
58062
 
 
58063
#line 58064 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58064
} // closed Puma
 
58065
class CCExprResolve;
 
58066
class CExprResolve;
 
58067
class WinIfExists;
 
58068
class WinImportHandler;
 
58069
class WinMacros;
 
58070
class WinAsm;
 
58071
class WinDeclSpecs;
 
58072
class WinMemberExplSpec;
 
58073
class WinTypeKeywords;
 
58074
class WinFriend;
 
58075
class ExtAC;
 
58076
class ExtACBuilderCoupling;
 
58077
class ExtACSyntaxCoupling;
 
58078
class ExtACTree;
 
58079
class ExtACKeywords;
 
58080
class ExtGnu;
 
58081
class PragmaOnceUnitState;
 
58082
class PragmaOnce;
 
58083
class CMatchSyntax;
 
58084
namespace Puma {
 
58085
 
 
58086
#line 3965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58087
class CT_DoStmt : public CT_Statement {
 
58088
#line 58089 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58089
  friend class ::CCExprResolve;
 
58090
  friend class ::CExprResolve;
 
58091
  friend class ::WinIfExists;
 
58092
  friend class ::WinImportHandler;
 
58093
  friend class ::WinMacros;
 
58094
  friend class ::WinAsm;
 
58095
  friend class ::WinDeclSpecs;
 
58096
  friend class ::WinMemberExplSpec;
 
58097
  friend class ::WinTypeKeywords;
 
58098
  friend class ::WinFriend;
 
58099
  friend class ::ExtAC;
 
58100
  friend class ::ExtACBuilderCoupling;
 
58101
  friend class ::ExtACSyntaxCoupling;
 
58102
  friend class ::ExtACTree;
 
58103
  friend class ::ExtACKeywords;
 
58104
  friend class ::ExtGnu;
 
58105
  friend class ::PragmaOnceUnitState;
 
58106
  friend class ::PragmaOnce;
 
58107
  friend class ::CMatchSyntax;
 
58108
 
 
58109
#line 3965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58110
 
 
58111
  CTree *sons[7]; // do, stmt, while, open, expr, close, semi_colon
 
58112
 
 
58113
public:
 
58114
  /** Constructor.
 
58115
   *  \param d The keyword 'do'.
 
58116
   *  \param stmt The controlled statement.
 
58117
   *  \param w The keyword 'while'.
 
58118
   *  \param o Left parenthesis before the loop condition.
 
58119
   *  \param e The loop condition.
 
58120
   *  \param c Right parenthesis behind the loop condition.
 
58121
   *  \param sc The trailing semi-colon. */
 
58122
  CT_DoStmt (CTree *d, CTree *stmt, CTree *w, CTree *o, CTree *e, 
 
58123
             CTree *c, CTree *sc) {
 
58124
    AddSon (sons[0], d); AddSon (sons[1], stmt); AddSon (sons[2], w); 
 
58125
    AddSon (sons[3], o); AddSon (sons[4], e); AddSon (sons[5], c); 
 
58126
    AddSon (sons[6], sc); 
 
58127
  }
 
58128
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58129
  static const char *NodeId ();
 
58130
  /** Get the name of the node. Can be compared with NodeId(). */
 
58131
  const char *NodeName () const { return NodeId (); }
 
58132
  /** Get the number of sons. */
 
58133
  int Sons () const { return 7; }
 
58134
  /** Get the n-th son.
 
58135
   *  \param n The index of the son.
 
58136
   *  \return The n-th son or NULL. */
 
58137
  CTree *Son (int n) const { return CTree::Son (sons, 7, n); }
 
58138
  /** Get the controlled statement. */
 
58139
  CT_Statement *Statement () const { return (CT_Statement*)sons[1]; }
 
58140
  /** Get the loop condition. */
 
58141
  CTree *Expr () const { return sons[4]; }
 
58142
  /** Replace a son.
 
58143
   *  \param old_son The son to replace.
 
58144
   *  \param new_son The new son. */
 
58145
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58146
    CTree::ReplaceSon (sons, 7, old_son, new_son);
 
58147
  }
 
58148
public:
 
58149
  typedef AC::TL<Puma::CTree * [7],AC::TLE > __AttrTypes;
 
58150
  const char *__attr_name (unsigned i) const {
 
58151
    static const char *names[] = { "sons" }; return names[i];
 
58152
  }
 
58153
  const void *__attr (unsigned __i) const {
 
58154
    switch (__i) { case 0: return &sons; default: return 0; }
 
58155
  }
 
58156
#line 4003 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58157
};
 
58158
 
 
58159
/** \class CT_ForStmt CTree.h Puma/CTree.h
 
58160
 *  Tree node representing a for-statement.
 
58161
 *  Example: \code for(int i=0; i<10; i++) f(i); \endcode */
 
58162
 
 
58163
#line 58164 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58164
} // closed Puma
 
58165
class CCExprResolve;
 
58166
class CExprResolve;
 
58167
class WinIfExists;
 
58168
class WinImportHandler;
 
58169
class WinMacros;
 
58170
class WinAsm;
 
58171
class WinDeclSpecs;
 
58172
class WinMemberExplSpec;
 
58173
class WinTypeKeywords;
 
58174
class WinFriend;
 
58175
class ExtAC;
 
58176
class ExtACBuilderCoupling;
 
58177
class ExtACSyntaxCoupling;
 
58178
class ExtACTree;
 
58179
class ExtACKeywords;
 
58180
class ExtGnu;
 
58181
class PragmaOnceUnitState;
 
58182
class PragmaOnce;
 
58183
class CMatchSyntax;
 
58184
namespace Puma {
 
58185
 
 
58186
#line 4008 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58187
class CT_ForStmt : public CT_Statement, public CSemScope {
 
58188
#line 58189 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58189
  friend class ::CCExprResolve;
 
58190
  friend class ::CExprResolve;
 
58191
  friend class ::WinIfExists;
 
58192
  friend class ::WinImportHandler;
 
58193
  friend class ::WinMacros;
 
58194
  friend class ::WinAsm;
 
58195
  friend class ::WinDeclSpecs;
 
58196
  friend class ::WinMemberExplSpec;
 
58197
  friend class ::WinTypeKeywords;
 
58198
  friend class ::WinFriend;
 
58199
  friend class ::ExtAC;
 
58200
  friend class ::ExtACBuilderCoupling;
 
58201
  friend class ::ExtACSyntaxCoupling;
 
58202
  friend class ::ExtACTree;
 
58203
  friend class ::ExtACKeywords;
 
58204
  friend class ::ExtGnu;
 
58205
  friend class ::PragmaOnceUnitState;
 
58206
  friend class ::PragmaOnce;
 
58207
  friend class ::CMatchSyntax;
 
58208
 
 
58209
#line 4008 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58210
 
 
58211
  CTree *sons[8]; // key, open, init, cond, semi_colon, expr, close, stmt
 
58212
 
 
58213
public:
 
58214
  /** Constructor.
 
58215
   *  \param k The keyword 'for'.
 
58216
   *  \param o Left parenthesis.
 
58217
   *  \param i The loop initializer statement.
 
58218
   *  \param co The loop condition.
 
58219
   *  \param sc The semi-colon behind the loop condition.
 
58220
   *  \param e The loop counter expression.
 
58221
   *  \param c Right parenthesis.
 
58222
   *  \param stmt The controlled statement. */
 
58223
  CT_ForStmt (CTree *k, CTree *o, CTree *i, CTree *co, CTree *sc,
 
58224
              CTree *e, CTree *c, CTree *stmt) {
 
58225
    AddSon (sons[0], k); AddSon (sons[1], o); AddSon (sons[2], i); 
 
58226
    AddSon (sons[3], co); AddSon (sons[4], sc); AddSon (sons[5], e); 
 
58227
    AddSon (sons[6], c); AddSon (sons[7], stmt); 
 
58228
  }
 
58229
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58230
  static const char *NodeId ();
 
58231
  /** Get the name of the node. Can be compared with NodeId(). */
 
58232
  const char *NodeName () const { return NodeId (); }
 
58233
  /** Get the number of sons. */
 
58234
  int Sons () const { return CTree::Sons (sons, 8); }
 
58235
  /** Get the n-th son.
 
58236
   *  \param n The index of the son.
 
58237
   *  \return The n-th son or NULL. */
 
58238
  CTree *Son (int n) const { return CTree::Son (sons, 8, n); }
 
58239
  /** Get the loop initializer. */
 
58240
  CTree *InitStmt () const { return sons[2]; }
 
58241
  /** Get the loop condition. */
 
58242
  CTree *Condition () const { return sons[3]; }
 
58243
  /** Get the loop counter expression. */
 
58244
  CTree *Expr () const { return sons[5]; }
 
58245
  /** Get the controlled statement. */
 
58246
  CT_Statement *Statement () const { return (CT_Statement*)sons[7]; }
 
58247
  /** Replace a son.
 
58248
   *  \param old_son The son to replace.
 
58249
   *  \param new_son The new son. */
 
58250
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58251
    CTree::ReplaceSon (sons, 8, old_son, new_son);
 
58252
  }
 
58253
  /** Get the scope opened by the for-statement. */
 
58254
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
58255
public:
 
58256
  typedef AC::TL<Puma::CTree * [8],AC::TLE > __AttrTypes;
 
58257
  const char *__attr_name (unsigned i) const {
 
58258
    static const char *names[] = { "sons" }; return names[i];
 
58259
  }
 
58260
  const void *__attr (unsigned __i) const {
 
58261
    switch (__i) { case 0: return &sons; default: return 0; }
 
58262
  }
 
58263
#line 4053 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58264
};
 
58265
 
 
58266
/** \class CT_Condition CTree.h Puma/CTree.h
 
58267
 *  Tree node representing a control-statement condition.
 
58268
 *  Example: \code int i = 0 \endcode */
 
58269
 
 
58270
#line 58271 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58271
} // closed Puma
 
58272
class CCExprResolve;
 
58273
class CExprResolve;
 
58274
class WinIfExists;
 
58275
class WinImportHandler;
 
58276
class WinMacros;
 
58277
class WinAsm;
 
58278
class WinDeclSpecs;
 
58279
class WinMemberExplSpec;
 
58280
class WinTypeKeywords;
 
58281
class WinFriend;
 
58282
class ExtAC;
 
58283
class ExtACBuilderCoupling;
 
58284
class ExtACSyntaxCoupling;
 
58285
class ExtACTree;
 
58286
class ExtACKeywords;
 
58287
class ExtGnu;
 
58288
class PragmaOnceUnitState;
 
58289
class PragmaOnce;
 
58290
class CMatchSyntax;
 
58291
namespace Puma {
 
58292
 
 
58293
#line 4058 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58294
class CT_Condition : public CT_Decl, public CSemObject {
 
58295
#line 58296 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58296
  friend class ::CCExprResolve;
 
58297
  friend class ::CExprResolve;
 
58298
  friend class ::WinIfExists;
 
58299
  friend class ::WinImportHandler;
 
58300
  friend class ::WinMacros;
 
58301
  friend class ::WinAsm;
 
58302
  friend class ::WinDeclSpecs;
 
58303
  friend class ::WinMemberExplSpec;
 
58304
  friend class ::WinTypeKeywords;
 
58305
  friend class ::WinFriend;
 
58306
  friend class ::ExtAC;
 
58307
  friend class ::ExtACBuilderCoupling;
 
58308
  friend class ::ExtACSyntaxCoupling;
 
58309
  friend class ::ExtACTree;
 
58310
  friend class ::ExtACKeywords;
 
58311
  friend class ::ExtGnu;
 
58312
  friend class ::PragmaOnceUnitState;
 
58313
  friend class ::PragmaOnce;
 
58314
  friend class ::CMatchSyntax;
 
58315
 
 
58316
#line 4058 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58317
 
 
58318
  CTree *sons[3]; // declspecs, declarator, init
 
58319
 
 
58320
public:
 
58321
  /** Constructor.
 
58322
   *  \param dsl The declaration specifier sequence. 
 
58323
   *  \param d The variable declarator. */
 
58324
  CT_Condition (CTree *dsl, CTree *d) {
 
58325
    AddSon (sons[0], dsl); AddSon (sons[1], d); AddSon (sons[2], 0);
 
58326
  }
 
58327
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58328
  static const char *NodeId ();
 
58329
  /** Get the name of the node. Can be compared with NodeId(). */
 
58330
  const char *NodeName () const { return NodeId (); }
 
58331
  /** Get the number of sons. */
 
58332
  int Sons () const { return CTree::Sons (sons, 3); }
 
58333
  /** Get the n-th son.
 
58334
   *  \param n The index of the son.
 
58335
   *  \return The n-th son or NULL. */
 
58336
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
58337
  /** Get the declaration specifier sequence. */
 
58338
  CT_DeclSpecSeq *DeclSpecs () const { return (CT_DeclSpecSeq*)sons[0]; }
 
58339
  /** Get the declarator. */
 
58340
  CTree *Declarator () const { return sons[1]; }
 
58341
  /** Get the initializer of the declaration. */
 
58342
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[2]; }
 
58343
  /** Get the semantic information of the declared object. */
 
58344
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
58345
  /** Set the initializer. */
 
58346
  void Initializer (CTree *i) { AddSon (sons[2], i); }
 
58347
  /** Replace a son.
 
58348
   *  \param old_son The son to replace.
 
58349
   *  \param new_son The new son. */
 
58350
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58351
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
58352
  }
 
58353
public:
 
58354
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
58355
  const char *__attr_name (unsigned i) const {
 
58356
    static const char *names[] = { "sons" }; return names[i];
 
58357
  }
 
58358
  const void *__attr (unsigned __i) const {
 
58359
    switch (__i) { case 0: return &sons; default: return 0; }
 
58360
  }
 
58361
#line 4094 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58362
};
 
58363
 
 
58364
/*****************************************************************************/
 
58365
/*                                                                           */
 
58366
/*                              Classes                                      */
 
58367
/*                                                                           */
 
58368
/*****************************************************************************/
 
58369
 
 
58370
/** \class CT_ClassDef CTree.h Puma/CTree.h
 
58371
 *  Tree node representing a class definition.
 
58372
 *  Example: \code class X : Y { int x; } \endcode */
 
58373
 
 
58374
#line 58375 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58375
} // closed Puma
 
58376
class CCExprResolve;
 
58377
class CExprResolve;
 
58378
class WinIfExists;
 
58379
class WinImportHandler;
 
58380
class WinMacros;
 
58381
class WinAsm;
 
58382
class WinDeclSpecs;
 
58383
class WinMemberExplSpec;
 
58384
class WinTypeKeywords;
 
58385
class WinFriend;
 
58386
class ExtAC;
 
58387
class ExtACBuilderCoupling;
 
58388
class ExtACSyntaxCoupling;
 
58389
class ExtACTree;
 
58390
class ExtACKeywords;
 
58391
class ExtGnu;
 
58392
class PragmaOnceUnitState;
 
58393
class PragmaOnce;
 
58394
class CMatchSyntax;
 
58395
namespace Puma {
 
58396
 
 
58397
#line 4105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58398
 
 
58399
#line 58400 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58400
} // closed Puma
 
58401
 
 
58402
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
58403
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
58404
#include "ExtACTree.ah"
 
58405
#endif
 
58406
namespace Puma {
 
58407
 
 
58408
#line 4105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58409
class CT_ClassDef : public CT_Decl, public CSemObject {
 
58410
#line 58411 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58411
  friend class ::CCExprResolve;
 
58412
  friend class ::CExprResolve;
 
58413
  friend class ::WinIfExists;
 
58414
  friend class ::WinImportHandler;
 
58415
  friend class ::WinMacros;
 
58416
  friend class ::WinAsm;
 
58417
  friend class ::WinDeclSpecs;
 
58418
  friend class ::WinMemberExplSpec;
 
58419
  friend class ::WinTypeKeywords;
 
58420
  friend class ::WinFriend;
 
58421
  friend class ::ExtAC;
 
58422
  friend class ::ExtACBuilderCoupling;
 
58423
  friend class ::ExtACSyntaxCoupling;
 
58424
  friend class ::ExtACTree;
 
58425
  friend class ::ExtACKeywords;
 
58426
  friend class ::ExtGnu;
 
58427
  friend class ::PragmaOnceUnitState;
 
58428
  friend class ::PragmaOnce;
 
58429
  friend class ::CMatchSyntax;
 
58430
 
 
58431
#line 4105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58432
 
 
58433
   
 
58434
#line 58435 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58435
 
 
58436
  struct __ac_wrapper_sons {
 
58437
    typedef ::Puma::CTree * E; typedef E A[4]; A _data;
 
58438
    operator A& () { return _data; }
 
58439
    operator A& () const { return (A&)*(::Puma::CTree * *)_data; }
 
58440
    operator const A& () { return _data; }
 
58441
    operator const A& () const { return _data; }
 
58442
    operator void* () { return _data; }
 
58443
    operator void* () const { return (void*)_data; }
 
58444
    operator const void* () { return _data; }
 
58445
    operator const void* () const { return _data; }
 
58446
    template <typename I> E& operator [] (I i) { return _data[i]; } // for VC++ 2003
 
58447
    template <typename I> const E& operator [] (I i) const { return _data[i]; } // for VC++ 2003
 
58448
  } sons
 
58449
#line 4106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58450
 
 
58451
#line 4106 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58452
; // key, name, bases, members
 
58453
  CTree *obj_decl;
 
58454
 
 
58455
public:
 
58456
  /** Constructor.
 
58457
   *  \param k The keyword 'class' or 'struct'.
 
58458
   *  \param n The name of the class.
 
58459
   *  \param b The base class list. */
 
58460
  
 
58461
#line 58462 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58462
 
 
58463
 
 
58464
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 {
 
58465
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0 __TJP;
 
58466
  typedef TResult Result;
 
58467
  typedef TThat   That;
 
58468
  typedef TTarget Target;
 
58469
  enum { ARGS = TArgs::ARGS };
 
58470
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
58471
  static const int JPID = 58;
 
58472
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
58473
  struct Res {
 
58474
    typedef void Type;
 
58475
    typedef void ReferredType;
 
58476
  };
 
58477
 
 
58478
  That *_that;
 
58479
 
 
58480
  inline That *that() {return (That*)_that;}
 
58481
 
 
58482
};
 
58483
 
 
58484
 
 
58485
#line 4114 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58486
CT_ClassDef (CTree * arg0, CTree * arg1, CTree * arg2 = (CTree*)0) 
 
58487
#line 58488 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58488
{
 
58489
  typedef TJP__ZN4Puma11CT_ClassDefC1EPN4PumaE5CTreePN4PumaE5CTreePN4PumaE5CTree_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TL< ::Puma::CTree * , AC::TLE > > > > __TJP;
 
58490
    __TJP tjp;
 
58491
  tjp._that =  (__TJP::That*)this;
 
58492
    this->__exec_old_C1(arg0, arg1, arg2);
 
58493
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
58494
  
 
58495
}
 
58496
__attribute__((always_inline)) inline void __exec_old_C1(::Puma::CTree * k,::Puma::CTree * n,::Puma::CTree * b)
 
58497
#line 4114 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58498
{
 
58499
    AddSon (sons[0], k); AddSon (sons[1], n); AddSon (sons[2], b); 
 
58500
    AddSon (sons[3], 0); AddSon (obj_decl, 0); 
 
58501
  }
 
58502
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58503
  static const char *NodeId ();
 
58504
  /** Get the name of the node. Can be compared with NodeId(). */
 
58505
  const char *NodeName () const { return NodeId (); }
 
58506
  /** Get the number of sons. */
 
58507
  int Sons () const { return CTree::Sons (sons, 4); }
 
58508
  /** Get the n-th son.
 
58509
   *  \param n The index of the son.
 
58510
   *  \return The n-th son or NULL. */
 
58511
  CTree *Son (int n) const { return CTree::Son (sons, 4, n); }
 
58512
  /** Get the name of the class. */
 
58513
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[1]; }
 
58514
  /** Get the member declarations list. */
 
58515
  CT_MembList *Members () const { return (CT_MembList*)sons[3]; }
 
58516
  /** Get the base class specifiers list. */
 
58517
  CT_BaseSpecList *BaseClasses () const { return (CT_BaseSpecList*)sons[2]; }
 
58518
  /** Get the object declaration node containing the class definition. */
 
58519
  CT_ObjDecl *ObjDecl () const { return (CT_ObjDecl*)obj_decl; }
 
58520
  /** Get the semantic information about the declared class. */
 
58521
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
58522
  /** Set the member declarations list. */
 
58523
  void Members (CTree *m) { AddSon (sons[3], m); }
 
58524
  /** Set the base class specifiers list. */
 
58525
  void BaseClasses (CTree *bc) { AddSon (sons[2], bc); }
 
58526
  /** Set the object declaration containing the class definition. */
 
58527
  void ObjDecl (CTree *od) { AddSon (obj_decl, od); }
 
58528
  /** Replace a son.
 
58529
   *  \param old_son The son to replace.
 
58530
   *  \param new_son The new son. */
 
58531
  void ReplaceSon (CTree *old_son, CTree *new_son) {
 
58532
    CTree::ReplaceSon (sons, 4, old_son, new_son);
 
58533
  }
 
58534
   private:
 
58535
 
 
58536
#line 37 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtACTree.ah"
 
58537
 Puma :: CTree * _intro_members ;
 
58538
Puma :: CTree * _base_intros ;
 
58539
public :
 
58540
Puma :: CTree * IntroMembers ( ) const { return _intro_members ; }
 
58541
void IntroMembers ( Puma :: CTree * members ) { _intro_members = members ; }
 
58542
Puma :: CTree * BaseIntros ( ) const { return _base_intros ; }
 
58543
void BaseIntros ( Puma :: CTree * bases ) { _base_intros = bases ; }public:
 
58544
  typedef AC::TL<Puma::CTree * [4],AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TL<Puma::CTree *,AC::TLE > > > > __AttrTypes;
 
58545
  const char *__attr_name (unsigned i) const {
 
58546
    static const char *names[] = { "sons", "obj_decl", "_intro_members", "_base_intros" }; return names[i];
 
58547
  }
 
58548
  const void *__attr (unsigned __i) const {
 
58549
    switch (__i) { case 0: return &sons; case 1: return &obj_decl; case 2: return &_intro_members; case 3: return &_base_intros; default: return 0; }
 
58550
  }
 
58551
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58552
 
 
58553
#line 58554 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58554
 
 
58555
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 {
 
58556
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0 __TJP;
 
58557
  typedef TResult Result;
 
58558
  typedef TThat   That;
 
58559
  typedef TTarget Target;
 
58560
  enum { ARGS = TArgs::ARGS };
 
58561
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
58562
  static const int JPID = 7428;
 
58563
  static const AC::JPType JPTYPE = (AC::JPType)16;
 
58564
  struct Res {
 
58565
    typedef void Type;
 
58566
    typedef void ReferredType;
 
58567
  };
 
58568
 
 
58569
  That *_that;
 
58570
 
 
58571
  inline That *that() {return (That*)_that;}
 
58572
 
 
58573
};
 
58574
 
 
58575
 
 
58576
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58577
 
 
58578
#line 58579 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58579
 
 
58580
public:
 
58581
inline CT_ClassDef (const Puma::CT_ClassDef & arg0) : Puma::CT_Decl (arg0), Puma::CSemObject (arg0), sons (arg0.sons), obj_decl (arg0.obj_decl), _intro_members (arg0._intro_members), _base_intros (arg0._base_intros) {
 
58582
  typedef TJP__ZN4Puma11CT_ClassDefC1ERKN4PumaE11CT_ClassDef_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TL< const ::Puma::CT_ClassDef & , AC::TLE > > __TJP;
 
58583
  __TJP tjp;
 
58584
  tjp._that =  (__TJP::That*)this;
 
58585
  AC::invoke_ExtACTree_ExtACTree_a0_after<__TJP> (&tjp);
 
58586
 
 
58587
}
 
58588
 
 
58589
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58590
 
 
58591
#line 58592 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58592
 
 
58593
template <typename TResult, typename TThat, typename TTarget, typename TArgs> struct TJP__ZN4Puma11CT_ClassDefD1Ev_0 {
 
58594
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0 __TJP;
 
58595
  typedef TResult Result;
 
58596
  typedef TThat   That;
 
58597
  typedef TTarget Target;
 
58598
  enum { ARGS = TArgs::ARGS };
 
58599
  template <int I> struct Arg : AC::Arg<TArgs, I> {};
 
58600
  static const int JPID = 7426;
 
58601
  static const AC::JPType JPTYPE = (AC::JPType)32;
 
58602
  struct Res {
 
58603
    typedef void Type;
 
58604
    typedef void ReferredType;
 
58605
  };
 
58606
 
 
58607
  That *_that;
 
58608
 
 
58609
  inline That *that() {return (That*)_that;}
 
58610
 
 
58611
};
 
58612
 
 
58613
 
 
58614
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58615
 
 
58616
#line 58617 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58617
 
 
58618
public:
 
58619
inline ~CT_ClassDef () {
 
58620
  typedef TJP__ZN4Puma11CT_ClassDefD1Ev_0< void, ::Puma::CT_ClassDef , ::Puma::CT_ClassDef ,  AC::TLE > __TJP;
 
58621
  __TJP tjp;
 
58622
  tjp._that =  (__TJP::That*)this;
 
58623
  AC::invoke_ExtACTree_ExtACTree_a1_before<__TJP> (&tjp);
 
58624
 
 
58625
}
 
58626
 
 
58627
#line 4150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58628
};
 
58629
      
 
58630
/** \class CT_UnionDef CTree.h Puma/CTree.h
 
58631
 *  Tree node representing the definition of a union.
 
58632
 *  Example: \code union U { int i; } \endcode */
 
58633
 
 
58634
#line 58635 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58635
} // closed Puma
 
58636
class CCExprResolve;
 
58637
class CExprResolve;
 
58638
class WinIfExists;
 
58639
class WinImportHandler;
 
58640
class WinMacros;
 
58641
class WinAsm;
 
58642
class WinDeclSpecs;
 
58643
class WinMemberExplSpec;
 
58644
class WinTypeKeywords;
 
58645
class WinFriend;
 
58646
class ExtAC;
 
58647
class ExtACBuilderCoupling;
 
58648
class ExtACSyntaxCoupling;
 
58649
class ExtACTree;
 
58650
class ExtACKeywords;
 
58651
class ExtGnu;
 
58652
class PragmaOnceUnitState;
 
58653
class PragmaOnce;
 
58654
class CMatchSyntax;
 
58655
namespace Puma {
 
58656
 
 
58657
#line 4155 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58658
class CT_UnionDef : public CT_ClassDef {
 
58659
#line 58660 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58660
  friend class ::CCExprResolve;
 
58661
  friend class ::CExprResolve;
 
58662
  friend class ::WinIfExists;
 
58663
  friend class ::WinImportHandler;
 
58664
  friend class ::WinMacros;
 
58665
  friend class ::WinAsm;
 
58666
  friend class ::WinDeclSpecs;
 
58667
  friend class ::WinMemberExplSpec;
 
58668
  friend class ::WinTypeKeywords;
 
58669
  friend class ::WinFriend;
 
58670
  friend class ::ExtAC;
 
58671
  friend class ::ExtACBuilderCoupling;
 
58672
  friend class ::ExtACSyntaxCoupling;
 
58673
  friend class ::ExtACTree;
 
58674
  friend class ::ExtACKeywords;
 
58675
  friend class ::ExtGnu;
 
58676
  friend class ::PragmaOnceUnitState;
 
58677
  friend class ::PragmaOnce;
 
58678
  friend class ::CMatchSyntax;
 
58679
 
 
58680
#line 4155 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58681
 
 
58682
public:
 
58683
  /** Constructor.
 
58684
   *  \param k The keyword 'union'.
 
58685
   *  \param n The name of the union.
 
58686
   *  \param b The base union list. */
 
58687
  CT_UnionDef (CTree *k, CTree *n, CTree *b = 0) : CT_ClassDef (k, n, b) {}
 
58688
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58689
  static const char *NodeId ();
 
58690
  /** Get the name of the node. Can be compared with NodeId(). */
 
58691
  const char *NodeName () const { return NodeId (); }
 
58692
public:
 
58693
  typedef AC::TLE __AttrTypes;
 
58694
  const char *__attr_name (unsigned i) const { return 0; }
 
58695
  const void *__attr (unsigned __i) const { return 0; }
 
58696
#line 4166 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58697
};
 
58698
      
 
58699
/** \class CT_MembList CTree.h Puma/CTree.h
 
58700
 *  Tree node representing a member declarations list. */ 
 
58701
 
 
58702
#line 58703 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58703
} // closed Puma
 
58704
class CCExprResolve;
 
58705
class CExprResolve;
 
58706
class WinIfExists;
 
58707
class WinImportHandler;
 
58708
class WinMacros;
 
58709
class WinAsm;
 
58710
class WinDeclSpecs;
 
58711
class WinMemberExplSpec;
 
58712
class WinTypeKeywords;
 
58713
class WinFriend;
 
58714
class ExtAC;
 
58715
class ExtACBuilderCoupling;
 
58716
class ExtACSyntaxCoupling;
 
58717
class ExtACTree;
 
58718
class ExtACKeywords;
 
58719
class ExtGnu;
 
58720
class PragmaOnceUnitState;
 
58721
class PragmaOnce;
 
58722
class CMatchSyntax;
 
58723
namespace Puma {
 
58724
 
 
58725
#line 4170 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58726
class CT_MembList : public CT_DeclList, public CSemScope {
 
58727
#line 58728 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58728
  friend class ::CCExprResolve;
 
58729
  friend class ::CExprResolve;
 
58730
  friend class ::WinIfExists;
 
58731
  friend class ::WinImportHandler;
 
58732
  friend class ::WinMacros;
 
58733
  friend class ::WinAsm;
 
58734
  friend class ::WinDeclSpecs;
 
58735
  friend class ::WinMemberExplSpec;
 
58736
  friend class ::WinTypeKeywords;
 
58737
  friend class ::WinFriend;
 
58738
  friend class ::ExtAC;
 
58739
  friend class ::ExtACBuilderCoupling;
 
58740
  friend class ::ExtACSyntaxCoupling;
 
58741
  friend class ::ExtACTree;
 
58742
  friend class ::ExtACKeywords;
 
58743
  friend class ::ExtGnu;
 
58744
  friend class ::PragmaOnceUnitState;
 
58745
  friend class ::PragmaOnce;
 
58746
  friend class ::CMatchSyntax;
 
58747
 
 
58748
#line 4170 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58749
 
 
58750
public:
 
58751
  CT_MembList (int size = 10, int incr = 10) : 
 
58752
    CT_DeclList (size, incr) {}
 
58753
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58754
  static const char *NodeId ();
 
58755
  /** Get the name of the node. Can be compared with NodeId(). */
 
58756
  const char *NodeName () const { return NodeId (); }
 
58757
  /** Get the scope opened by the member declarations list. */
 
58758
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
58759
public:
 
58760
  typedef AC::TLE __AttrTypes;
 
58761
  const char *__attr_name (unsigned i) const { return 0; }
 
58762
  const void *__attr (unsigned __i) const { return 0; }
 
58763
#line 4180 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58764
};
 
58765
 
 
58766
/** \class CT_MembInitList CTree.h Puma/CTree.h
 
58767
 *  Tree node representing a constructor initializer list.
 
58768
 *  Example: \code : Base(), m_Member(0) \endcode */
 
58769
 
 
58770
#line 58771 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58771
} // closed Puma
 
58772
class CCExprResolve;
 
58773
class CExprResolve;
 
58774
class WinIfExists;
 
58775
class WinImportHandler;
 
58776
class WinMacros;
 
58777
class WinAsm;
 
58778
class WinDeclSpecs;
 
58779
class WinMemberExplSpec;
 
58780
class WinTypeKeywords;
 
58781
class WinFriend;
 
58782
class ExtAC;
 
58783
class ExtACBuilderCoupling;
 
58784
class ExtACSyntaxCoupling;
 
58785
class ExtACTree;
 
58786
class ExtACKeywords;
 
58787
class ExtGnu;
 
58788
class PragmaOnceUnitState;
 
58789
class PragmaOnce;
 
58790
class CMatchSyntax;
 
58791
namespace Puma {
 
58792
 
 
58793
#line 4185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58794
class CT_MembInitList : public CT_List, public CSemScope {
 
58795
#line 58796 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58796
  friend class ::CCExprResolve;
 
58797
  friend class ::CExprResolve;
 
58798
  friend class ::WinIfExists;
 
58799
  friend class ::WinImportHandler;
 
58800
  friend class ::WinMacros;
 
58801
  friend class ::WinAsm;
 
58802
  friend class ::WinDeclSpecs;
 
58803
  friend class ::WinMemberExplSpec;
 
58804
  friend class ::WinTypeKeywords;
 
58805
  friend class ::WinFriend;
 
58806
  friend class ::ExtAC;
 
58807
  friend class ::ExtACBuilderCoupling;
 
58808
  friend class ::ExtACSyntaxCoupling;
 
58809
  friend class ::ExtACTree;
 
58810
  friend class ::ExtACKeywords;
 
58811
  friend class ::ExtGnu;
 
58812
  friend class ::PragmaOnceUnitState;
 
58813
  friend class ::PragmaOnce;
 
58814
  friend class ::CMatchSyntax;
 
58815
 
 
58816
#line 4185 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58817
 
 
58818
public:
 
58819
  /** Constructor.
 
58820
   *  \param size The initial size of the list. */
 
58821
  CT_MembInitList (int size = 2) : 
 
58822
    CT_List (size, 2, CT_List::OPEN) {}
 
58823
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58824
  static const char *NodeId ();
 
58825
  /** Get the name of the node. Can be compared with NodeId(). */
 
58826
  const char *NodeName () const { return NodeId (); }
 
58827
  /** Get the scope opened by the member initializer list. */
 
58828
  CSemScope *SemScope () const { return (CSemScope*)this; }
 
58829
public:
 
58830
  typedef AC::TLE __AttrTypes;
 
58831
  const char *__attr_name (unsigned i) const { return 0; }
 
58832
  const void *__attr (unsigned __i) const { return 0; }
 
58833
#line 4197 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58834
};
 
58835
 
 
58836
/** \class CT_MembInit CTree.h Puma/CTree.h
 
58837
 *  Tree node representing a member initializer.
 
58838
 *  Example: \code m_Member(0) \endcode */
 
58839
 
 
58840
#line 58841 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58841
} // closed Puma
 
58842
class CCExprResolve;
 
58843
class CExprResolve;
 
58844
class WinIfExists;
 
58845
class WinImportHandler;
 
58846
class WinMacros;
 
58847
class WinAsm;
 
58848
class WinDeclSpecs;
 
58849
class WinMemberExplSpec;
 
58850
class WinTypeKeywords;
 
58851
class WinFriend;
 
58852
class ExtAC;
 
58853
class ExtACBuilderCoupling;
 
58854
class ExtACSyntaxCoupling;
 
58855
class ExtACTree;
 
58856
class ExtACKeywords;
 
58857
class ExtGnu;
 
58858
class PragmaOnceUnitState;
 
58859
class PragmaOnce;
 
58860
class CMatchSyntax;
 
58861
namespace Puma {
 
58862
 
 
58863
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58864
 
 
58865
#line 58866 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58866
} // closed Puma
 
58867
 
 
58868
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
58869
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
 
58870
#include "CCExprResolveH.ah"
 
58871
#endif
 
58872
namespace Puma {
 
58873
 
 
58874
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58875
 
 
58876
#line 58877 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58877
} // closed Puma
 
58878
 
 
58879
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
58880
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CExprResolveH_ah__
 
58881
#include "CExprResolveH.ah"
 
58882
#endif
 
58883
namespace Puma {
 
58884
 
 
58885
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58886
class CT_MembInit : public CT_Expression, public CSemObject {
 
58887
#line 58888 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58888
  friend class ::CCExprResolve;
 
58889
  friend class ::CExprResolve;
 
58890
  friend class ::WinIfExists;
 
58891
  friend class ::WinImportHandler;
 
58892
  friend class ::WinMacros;
 
58893
  friend class ::WinAsm;
 
58894
  friend class ::WinDeclSpecs;
 
58895
  friend class ::WinMemberExplSpec;
 
58896
  friend class ::WinTypeKeywords;
 
58897
  friend class ::WinFriend;
 
58898
  friend class ::ExtAC;
 
58899
  friend class ::ExtACBuilderCoupling;
 
58900
  friend class ::ExtACSyntaxCoupling;
 
58901
  friend class ::ExtACTree;
 
58902
  friend class ::ExtACKeywords;
 
58903
  friend class ::ExtGnu;
 
58904
  friend class ::PragmaOnceUnitState;
 
58905
  friend class ::PragmaOnce;
 
58906
  friend class ::CMatchSyntax;
 
58907
 
 
58908
#line 4202 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58909
 
 
58910
  CTree *sons[2]; // name, init
 
58911
 
 
58912
public:
 
58913
  /** Constructor.
 
58914
   *  \param n The name of the member.
 
58915
   *  \param i The member initializer. */
 
58916
  CT_MembInit (CTree *n, CTree *i) { AddSon (sons[0], n); AddSon (sons[1], i); }
 
58917
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
58918
  static const char *NodeId ();
 
58919
  /** Get the name of the node. Can be compared with NodeId(). */
 
58920
  const char *NodeName () const { return NodeId (); }
 
58921
  /** Get the number of sons. */
 
58922
  int Sons () const { return 2; }
 
58923
  /** Get the n-th son.
 
58924
   *  \param n The index of the son.
 
58925
   *  \return The n-th son or NULL. */
 
58926
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
58927
  /** Replace a son.
 
58928
   *  \param old_son The son to replace.
 
58929
   *  \param new_son The new son. */
 
58930
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
58931
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
58932
  }
 
58933
  /** Get the name of the member. */
 
58934
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[0]; }
 
58935
  /** Get the initializer. */
 
58936
  CT_ExprList *Initializer () const { return (CT_ExprList*)sons[1]; }
 
58937
  /** Get the semantic information about the initialized member. */
 
58938
  CSemObject *SemObject () const { return (CSemObject*)this; }
 
58939
   private:
 
58940
  typedef CT_MembInit CCExprResolveExpr;
 
58941
 
 
58942
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CCExprResolveH.ah"
 
58943
 public :
 
58944
virtual Puma :: CTypeInfo * resolve ( Puma :: CCSemExpr & sem_expr , Puma :: CTree * base ) ;   private:
 
58945
  typedef CT_MembInit CExprResolveExpr;
 
58946
 
 
58947
#line 36 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/CExprResolveH.ah"
 
58948
 public :
 
58949
virtual Puma :: CTypeInfo * resolve ( Puma :: CSemExpr & sem_expr , Puma :: CTree * base ) ;public:
 
58950
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
58951
  const char *__attr_name (unsigned i) const {
 
58952
    static const char *names[] = { "sons" }; return names[i];
 
58953
  }
 
58954
  const void *__attr (unsigned __i) const {
 
58955
    switch (__i) { case 0: return &sons; default: return 0; }
 
58956
  }
 
58957
#line 4232 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58958
};
 
58959
 
 
58960
/** \class CT_BaseSpecList CTree.h Puma/CTree.h
 
58961
 *  Tree node representing a base specifier list.
 
58962
 *  Example: \code : X, Y, Z \endcode */
 
58963
 
 
58964
#line 58965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58965
} // closed Puma
 
58966
class CCExprResolve;
 
58967
class CExprResolve;
 
58968
class WinIfExists;
 
58969
class WinImportHandler;
 
58970
class WinMacros;
 
58971
class WinAsm;
 
58972
class WinDeclSpecs;
 
58973
class WinMemberExplSpec;
 
58974
class WinTypeKeywords;
 
58975
class WinFriend;
 
58976
class ExtAC;
 
58977
class ExtACBuilderCoupling;
 
58978
class ExtACSyntaxCoupling;
 
58979
class ExtACTree;
 
58980
class ExtACKeywords;
 
58981
class ExtGnu;
 
58982
class PragmaOnceUnitState;
 
58983
class PragmaOnce;
 
58984
class CMatchSyntax;
 
58985
namespace Puma {
 
58986
 
 
58987
#line 4237 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
58988
class CT_BaseSpecList : public CT_List {
 
58989
#line 58990 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
58990
  friend class ::CCExprResolve;
 
58991
  friend class ::CExprResolve;
 
58992
  friend class ::WinIfExists;
 
58993
  friend class ::WinImportHandler;
 
58994
  friend class ::WinMacros;
 
58995
  friend class ::WinAsm;
 
58996
  friend class ::WinDeclSpecs;
 
58997
  friend class ::WinMemberExplSpec;
 
58998
  friend class ::WinTypeKeywords;
 
58999
  friend class ::WinFriend;
 
59000
  friend class ::ExtAC;
 
59001
  friend class ::ExtACBuilderCoupling;
 
59002
  friend class ::ExtACSyntaxCoupling;
 
59003
  friend class ::ExtACTree;
 
59004
  friend class ::ExtACKeywords;
 
59005
  friend class ::ExtGnu;
 
59006
  friend class ::PragmaOnceUnitState;
 
59007
  friend class ::PragmaOnce;
 
59008
  friend class ::CMatchSyntax;
 
59009
 
 
59010
#line 4237 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59011
 
 
59012
public:
 
59013
  /** Constructor.
 
59014
   *  \param size The initial size of the list. */
 
59015
  CT_BaseSpecList (int size = 2) : 
 
59016
    CT_List (size, 2, CT_List::OPEN|CT_List::SEPARATORS) {}
 
59017
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59018
  static const char *NodeId ();
 
59019
  /** Get the name of the node. Can be compared with NodeId(). */
 
59020
  const char *NodeName () const { return NodeId (); }
 
59021
public:
 
59022
  typedef AC::TLE __AttrTypes;
 
59023
  const char *__attr_name (unsigned i) const { return 0; }
 
59024
  const void *__attr (unsigned __i) const { return 0; }
 
59025
#line 4247 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59026
};
 
59027
 
 
59028
/** \class CT_AccessSpec CTree.h Puma/CTree.h
 
59029
 *  Tree node representing an access specifier.
 
59030
 *  Example: \code public: \endcode */
 
59031
 
 
59032
#line 59033 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59033
} // closed Puma
 
59034
class CCExprResolve;
 
59035
class CExprResolve;
 
59036
class WinIfExists;
 
59037
class WinImportHandler;
 
59038
class WinMacros;
 
59039
class WinAsm;
 
59040
class WinDeclSpecs;
 
59041
class WinMemberExplSpec;
 
59042
class WinTypeKeywords;
 
59043
class WinFriend;
 
59044
class ExtAC;
 
59045
class ExtACBuilderCoupling;
 
59046
class ExtACSyntaxCoupling;
 
59047
class ExtACTree;
 
59048
class ExtACKeywords;
 
59049
class ExtGnu;
 
59050
class PragmaOnceUnitState;
 
59051
class PragmaOnce;
 
59052
class CMatchSyntax;
 
59053
namespace Puma {
 
59054
 
 
59055
#line 4252 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59056
class CT_AccessSpec : public CTree {
 
59057
#line 59058 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59058
  friend class ::CCExprResolve;
 
59059
  friend class ::CExprResolve;
 
59060
  friend class ::WinIfExists;
 
59061
  friend class ::WinImportHandler;
 
59062
  friend class ::WinMacros;
 
59063
  friend class ::WinAsm;
 
59064
  friend class ::WinDeclSpecs;
 
59065
  friend class ::WinMemberExplSpec;
 
59066
  friend class ::WinTypeKeywords;
 
59067
  friend class ::WinFriend;
 
59068
  friend class ::ExtAC;
 
59069
  friend class ::ExtACBuilderCoupling;
 
59070
  friend class ::ExtACSyntaxCoupling;
 
59071
  friend class ::ExtACTree;
 
59072
  friend class ::ExtACKeywords;
 
59073
  friend class ::ExtGnu;
 
59074
  friend class ::PragmaOnceUnitState;
 
59075
  friend class ::PragmaOnce;
 
59076
  friend class ::CMatchSyntax;
 
59077
 
 
59078
#line 4252 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59079
 
 
59080
  CTree *sons[2]; // access, colon
 
59081
 
 
59082
public:
 
59083
  /** Constructor.
 
59084
   *  \param a The access specifier, i.e. 'public', 'private', or 'protected'.
 
59085
   *  \param c The trailing colon. */
 
59086
  CT_AccessSpec (CTree *a, CTree *c) { AddSon (sons[0], a); AddSon (sons[1], c); }
 
59087
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59088
  static const char *NodeId ();
 
59089
  /** Get the name of the node. Can be compared with NodeId(). */
 
59090
  const char *NodeName () const { return NodeId (); }
 
59091
  /** Get the number of sons. */
 
59092
  int Sons () const { return 2; }
 
59093
  /** Get the n-th son.
 
59094
   *  \param n The index of the son.
 
59095
   *  \return The n-th son or NULL. */
 
59096
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
59097
  /** Get the access specifier type (token type). */
 
59098
  int Access () const { return sons[0]->token ()->type (); }
 
59099
  /** Replace a son.
 
59100
   *  \param old_son The son to replace.
 
59101
   *  \param new_son The new son. */
 
59102
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59103
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
59104
  }
 
59105
public:
 
59106
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
59107
  const char *__attr_name (unsigned i) const {
 
59108
    static const char *names[] = { "sons" }; return names[i];
 
59109
  }
 
59110
  const void *__attr (unsigned __i) const {
 
59111
    switch (__i) { case 0: return &sons; default: return 0; }
 
59112
  }
 
59113
#line 4278 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59114
};
 
59115
 
 
59116
/** \class CT_BaseSpec CTree.h Puma/CTree.h
 
59117
 *  Tree node representing a base class specifier.
 
59118
 *  Example: \code public X \endcode */
 
59119
 
 
59120
#line 59121 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59121
} // closed Puma
 
59122
class CCExprResolve;
 
59123
class CExprResolve;
 
59124
class WinIfExists;
 
59125
class WinImportHandler;
 
59126
class WinMacros;
 
59127
class WinAsm;
 
59128
class WinDeclSpecs;
 
59129
class WinMemberExplSpec;
 
59130
class WinTypeKeywords;
 
59131
class WinFriend;
 
59132
class ExtAC;
 
59133
class ExtACBuilderCoupling;
 
59134
class ExtACSyntaxCoupling;
 
59135
class ExtACTree;
 
59136
class ExtACKeywords;
 
59137
class ExtGnu;
 
59138
class PragmaOnceUnitState;
 
59139
class PragmaOnce;
 
59140
class CMatchSyntax;
 
59141
namespace Puma {
 
59142
 
 
59143
#line 4283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59144
class CT_BaseSpec : public CTree {
 
59145
#line 59146 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59146
  friend class ::CCExprResolve;
 
59147
  friend class ::CExprResolve;
 
59148
  friend class ::WinIfExists;
 
59149
  friend class ::WinImportHandler;
 
59150
  friend class ::WinMacros;
 
59151
  friend class ::WinAsm;
 
59152
  friend class ::WinDeclSpecs;
 
59153
  friend class ::WinMemberExplSpec;
 
59154
  friend class ::WinTypeKeywords;
 
59155
  friend class ::WinFriend;
 
59156
  friend class ::ExtAC;
 
59157
  friend class ::ExtACBuilderCoupling;
 
59158
  friend class ::ExtACSyntaxCoupling;
 
59159
  friend class ::ExtACTree;
 
59160
  friend class ::ExtACKeywords;
 
59161
  friend class ::ExtGnu;
 
59162
  friend class ::PragmaOnceUnitState;
 
59163
  friend class ::PragmaOnce;
 
59164
  friend class ::CMatchSyntax;
 
59165
 
 
59166
#line 4283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59167
 
 
59168
  CTree *sons[3]; // virtual, access, name
 
59169
 
 
59170
public:
 
59171
  /** Constructor.
 
59172
   *  \param v Optional keyword 'virtual'.
 
59173
   *  \param a The optional access specifier.
 
59174
   *  \param n The name of the base class. */
 
59175
  CT_BaseSpec (CTree *v, CTree *a, CTree *n) {
 
59176
    AddSon (sons[0], v); AddSon (sons[1], a); AddSon (sons[2], n); 
 
59177
  }
 
59178
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59179
  static const char *NodeId ();
 
59180
  /** Get the name of the node. Can be compared with NodeId(). */
 
59181
  const char *NodeName () const { return NodeId (); }
 
59182
  /** Get the number of sons. */
 
59183
  int Sons () const { return CTree::Sons (sons, 3); }
 
59184
  /** Get the n-th son.
 
59185
   *  \param n The index of the son.
 
59186
   *  \return The n-th son or NULL. */
 
59187
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
59188
  /** Get the type of the access specifier (token type). */
 
59189
  int Access () const { return sons[1]->token ()->type (); }
 
59190
  /** The access specifier. */
 
59191
  CTree *AccessSpec () const { return sons[1]; }
 
59192
  /** Get the keyword 'virtual'. */
 
59193
  CTree *Virtual () const { return sons[0]; }
 
59194
  /** Get the name of the base class. */
 
59195
  CT_SimpleName *Name () const { return (CT_SimpleName*)sons[2]; }
 
59196
  /** Replace a son.
 
59197
   *  \param old_son The son to replace.
 
59198
   *  \param new_son The new son. */
 
59199
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59200
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
59201
  }
 
59202
public:
 
59203
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
59204
  const char *__attr_name (unsigned i) const {
 
59205
    static const char *names[] = { "sons" }; return names[i];
 
59206
  }
 
59207
  const void *__attr (unsigned __i) const {
 
59208
    switch (__i) { case 0: return &sons; default: return 0; }
 
59209
  }
 
59210
#line 4318 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59211
};
 
59212
 
 
59213
/** \class CT_AccessDecl CTree.h Puma/CTree.h
 
59214
 *  Tree node representing a member access declaration.
 
59215
 *  Example: \code m_BaseClassMember; \endcode */
 
59216
 
 
59217
#line 59218 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59218
} // closed Puma
 
59219
class CCExprResolve;
 
59220
class CExprResolve;
 
59221
class WinIfExists;
 
59222
class WinImportHandler;
 
59223
class WinMacros;
 
59224
class WinAsm;
 
59225
class WinDeclSpecs;
 
59226
class WinMemberExplSpec;
 
59227
class WinTypeKeywords;
 
59228
class WinFriend;
 
59229
class ExtAC;
 
59230
class ExtACBuilderCoupling;
 
59231
class ExtACSyntaxCoupling;
 
59232
class ExtACTree;
 
59233
class ExtACKeywords;
 
59234
class ExtGnu;
 
59235
class PragmaOnceUnitState;
 
59236
class PragmaOnce;
 
59237
class CMatchSyntax;
 
59238
namespace Puma {
 
59239
 
 
59240
#line 4323 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59241
class CT_AccessDecl : public CT_Decl {
 
59242
#line 59243 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59243
  friend class ::CCExprResolve;
 
59244
  friend class ::CExprResolve;
 
59245
  friend class ::WinIfExists;
 
59246
  friend class ::WinImportHandler;
 
59247
  friend class ::WinMacros;
 
59248
  friend class ::WinAsm;
 
59249
  friend class ::WinDeclSpecs;
 
59250
  friend class ::WinMemberExplSpec;
 
59251
  friend class ::WinTypeKeywords;
 
59252
  friend class ::WinFriend;
 
59253
  friend class ::ExtAC;
 
59254
  friend class ::ExtACBuilderCoupling;
 
59255
  friend class ::ExtACSyntaxCoupling;
 
59256
  friend class ::ExtACTree;
 
59257
  friend class ::ExtACKeywords;
 
59258
  friend class ::ExtGnu;
 
59259
  friend class ::PragmaOnceUnitState;
 
59260
  friend class ::PragmaOnce;
 
59261
  friend class ::CMatchSyntax;
 
59262
 
 
59263
#line 4323 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59264
 
 
59265
  CTree *sons[2]; // name, semi_colon
 
59266
 
 
59267
public:
 
59268
  /** Constructor.
 
59269
   *  \param n The name of the base class member.
 
59270
   *  \param s The trailing semi-colon. */
 
59271
  CT_AccessDecl (CTree *n, CTree *s) { AddSon (sons[0], n); AddSon (sons[1], s); }
 
59272
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59273
  static const char *NodeId ();
 
59274
  /** Get the name of the node. Can be compared with NodeId(). */
 
59275
  const char *NodeName () const { return NodeId (); }
 
59276
  /** Get the number of sons. */
 
59277
  int Sons () const { return 2; }
 
59278
  /** Get the n-th son.
 
59279
   *  \param n The index of the son.
 
59280
   *  \return The n-th son or NULL. */
 
59281
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
59282
  /** Get the name of the base class member. */
 
59283
  CT_QualName *Member () const { return (CT_QualName*)sons[0]; }
 
59284
  /** Replace a son.
 
59285
   *  \param old_son The son to replace.
 
59286
   *  \param new_son The new son. */
 
59287
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59288
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
59289
  }
 
59290
public:
 
59291
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
59292
  const char *__attr_name (unsigned i) const {
 
59293
    static const char *names[] = { "sons" }; return names[i];
 
59294
  }
 
59295
  const void *__attr (unsigned __i) const {
 
59296
    switch (__i) { case 0: return &sons; default: return 0; }
 
59297
  }
 
59298
#line 4349 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59299
};
 
59300
 
 
59301
/** \class CT_UsingDecl CTree.h Puma/CTree.h
 
59302
 *  Tree node representing a using declaration.
 
59303
 *  Example: \code using Base::m_Member; \endcode */
 
59304
 
 
59305
#line 59306 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59306
} // closed Puma
 
59307
class CCExprResolve;
 
59308
class CExprResolve;
 
59309
class WinIfExists;
 
59310
class WinImportHandler;
 
59311
class WinMacros;
 
59312
class WinAsm;
 
59313
class WinDeclSpecs;
 
59314
class WinMemberExplSpec;
 
59315
class WinTypeKeywords;
 
59316
class WinFriend;
 
59317
class ExtAC;
 
59318
class ExtACBuilderCoupling;
 
59319
class ExtACSyntaxCoupling;
 
59320
class ExtACTree;
 
59321
class ExtACKeywords;
 
59322
class ExtGnu;
 
59323
class PragmaOnceUnitState;
 
59324
class PragmaOnce;
 
59325
class CMatchSyntax;
 
59326
namespace Puma {
 
59327
 
 
59328
#line 4354 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59329
class CT_UsingDecl : public CT_AccessDecl {
 
59330
#line 59331 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59331
  friend class ::CCExprResolve;
 
59332
  friend class ::CExprResolve;
 
59333
  friend class ::WinIfExists;
 
59334
  friend class ::WinImportHandler;
 
59335
  friend class ::WinMacros;
 
59336
  friend class ::WinAsm;
 
59337
  friend class ::WinDeclSpecs;
 
59338
  friend class ::WinMemberExplSpec;
 
59339
  friend class ::WinTypeKeywords;
 
59340
  friend class ::WinFriend;
 
59341
  friend class ::ExtAC;
 
59342
  friend class ::ExtACBuilderCoupling;
 
59343
  friend class ::ExtACSyntaxCoupling;
 
59344
  friend class ::ExtACTree;
 
59345
  friend class ::ExtACKeywords;
 
59346
  friend class ::ExtGnu;
 
59347
  friend class ::PragmaOnceUnitState;
 
59348
  friend class ::PragmaOnce;
 
59349
  friend class ::CMatchSyntax;
 
59350
 
 
59351
#line 4354 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59352
 
 
59353
  CTree *sons[2]; // using, typename
 
59354
 
 
59355
public:
 
59356
  /** Constructor.
 
59357
   *  \param u The keyword 'using'.
 
59358
   *  \param n The name of the entity.
 
59359
   *  \param s The trailing semi-colon. */
 
59360
  CT_UsingDecl (CTree *u, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
59361
    AddSon (sons[0], u); AddSon (sons[1], 0); 
 
59362
  }
 
59363
  /** Constructor.
 
59364
   *  \param u The keyword 'using'.
 
59365
   *  \param t The keyword 'typename'.
 
59366
   *  \param n The name of the entity.
 
59367
   *  \param s The trailing semi-colon. */
 
59368
  CT_UsingDecl (CTree *u, CTree *t, CTree *n, CTree *s) : CT_AccessDecl (n, s) {
 
59369
    AddSon (sons[0], u); AddSon (sons[1], t); 
 
59370
  }
 
59371
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59372
  static const char *NodeId ();
 
59373
  /** Get the name of the node. Can be compared with NodeId(). */
 
59374
  const char *NodeName () const { return NodeId (); }
 
59375
  /** Get the number of sons. */
 
59376
  int Sons () const { return CTree::Sons (sons, 2) + CT_AccessDecl::Sons (); }
 
59377
  /** Get the n-th son.
 
59378
   *  \param n The index of the son.
 
59379
   *  \return The n-th son or NULL. */
 
59380
  CTree *Son (int n) const {
 
59381
    int num = CTree::Sons (sons, 2);
 
59382
    CTree *result = CTree::Son (sons, 2, n);
 
59383
    return result ? result : CT_AccessDecl::Son (n-num);
 
59384
  }
 
59385
  /** Get the keyword 'typename'. */
 
59386
  CTree *Typename () const { return sons[1]; }
 
59387
  /** Replace a son.
 
59388
   *  \param old_son The son to replace.
 
59389
   *  \param new_son The new son. */
 
59390
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59391
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
59392
    CT_AccessDecl::ReplaceSon (old_son, new_son);
 
59393
  }
 
59394
public:
 
59395
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
59396
  const char *__attr_name (unsigned i) const {
 
59397
    static const char *names[] = { "sons" }; return names[i];
 
59398
  }
 
59399
  const void *__attr (unsigned __i) const {
 
59400
    switch (__i) { case 0: return &sons; default: return 0; }
 
59401
  }
 
59402
#line 4396 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59403
};
 
59404
 
 
59405
/*****************************************************************************/
 
59406
/*                                                                           */
 
59407
/*                              Wildcards                                    */
 
59408
/*                                                                           */
 
59409
/*****************************************************************************/
 
59410
 
 
59411
/** \class CT_Any CTree.h Puma/CTree.h
 
59412
 *  Tree node representing a wildcard. */
 
59413
 
 
59414
#line 59415 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59415
} // closed Puma
 
59416
class CCExprResolve;
 
59417
class CExprResolve;
 
59418
class WinIfExists;
 
59419
class WinImportHandler;
 
59420
class WinMacros;
 
59421
class WinAsm;
 
59422
class WinDeclSpecs;
 
59423
class WinMemberExplSpec;
 
59424
class WinTypeKeywords;
 
59425
class WinFriend;
 
59426
class ExtAC;
 
59427
class ExtACBuilderCoupling;
 
59428
class ExtACSyntaxCoupling;
 
59429
class ExtACTree;
 
59430
class ExtACKeywords;
 
59431
class ExtGnu;
 
59432
class PragmaOnceUnitState;
 
59433
class PragmaOnce;
 
59434
class CMatchSyntax;
 
59435
namespace Puma {
 
59436
 
 
59437
#line 4406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59438
class CT_Any : public CTree {
 
59439
#line 59440 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59440
  friend class ::CCExprResolve;
 
59441
  friend class ::CExprResolve;
 
59442
  friend class ::WinIfExists;
 
59443
  friend class ::WinImportHandler;
 
59444
  friend class ::WinMacros;
 
59445
  friend class ::WinAsm;
 
59446
  friend class ::WinDeclSpecs;
 
59447
  friend class ::WinMemberExplSpec;
 
59448
  friend class ::WinTypeKeywords;
 
59449
  friend class ::WinFriend;
 
59450
  friend class ::ExtAC;
 
59451
  friend class ::ExtACBuilderCoupling;
 
59452
  friend class ::ExtACSyntaxCoupling;
 
59453
  friend class ::ExtACTree;
 
59454
  friend class ::ExtACKeywords;
 
59455
  friend class ::ExtGnu;
 
59456
  friend class ::PragmaOnceUnitState;
 
59457
  friend class ::PragmaOnce;
 
59458
  friend class ::CMatchSyntax;
 
59459
 
 
59460
#line 4406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59461
 
 
59462
  CTree *sons[2]; // keyword, extension
 
59463
 
 
59464
public:
 
59465
  /** Constructor.
 
59466
   *  \param k The wildcard keyword.
 
59467
   *  \param e The extension. */
 
59468
  CT_Any (CTree *k, CTree *e = (CTree*)0) { AddSon (sons[0], k); AddSon (sons[1], e); }
 
59469
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59470
  static const char *NodeId ();
 
59471
  /** Get the name of the node. Can be compared with NodeId(). */
 
59472
  const char *NodeName () const { return NodeId (); }
 
59473
  /** Get the number of sons. */
 
59474
  int Sons () const { return CTree::Sons (sons, 2); }
 
59475
  /** Get the n-th son.
 
59476
   *  \param n The index of the son.
 
59477
   *  \return The n-th son or NULL. */
 
59478
  CTree *Son (int n) const { return CTree::Son (sons, 2, n); }
 
59479
  /** Replace a son.
 
59480
   *  \param old_son The son to replace.
 
59481
   *  \param new_son The new son. */
 
59482
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59483
    CTree::ReplaceSon (sons, 2, old_son, new_son);
 
59484
  }
 
59485
  /** Get the type of the wildcard (token type). */
 
59486
  int AnyType () const { return sons[0]->token ()->type (); }
 
59487
  /** Get the extension. */
 
59488
  CT_AnyExtension *Extension () const { return (CT_AnyExtension*)sons[1]; }
 
59489
public:
 
59490
  typedef AC::TL<Puma::CTree * [2],AC::TLE > __AttrTypes;
 
59491
  const char *__attr_name (unsigned i) const {
 
59492
    static const char *names[] = { "sons" }; return names[i];
 
59493
  }
 
59494
  const void *__attr (unsigned __i) const {
 
59495
    switch (__i) { case 0: return &sons; default: return 0; }
 
59496
  }
 
59497
#line 4434 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59498
};
 
59499
 
 
59500
/** \class CT_AnyList CTree.h Puma/CTree.h
 
59501
 *  Tree node representing a list wildcard. */
 
59502
 
 
59503
#line 59504 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59504
} // closed Puma
 
59505
class CCExprResolve;
 
59506
class CExprResolve;
 
59507
class WinIfExists;
 
59508
class WinImportHandler;
 
59509
class WinMacros;
 
59510
class WinAsm;
 
59511
class WinDeclSpecs;
 
59512
class WinMemberExplSpec;
 
59513
class WinTypeKeywords;
 
59514
class WinFriend;
 
59515
class ExtAC;
 
59516
class ExtACBuilderCoupling;
 
59517
class ExtACSyntaxCoupling;
 
59518
class ExtACTree;
 
59519
class ExtACKeywords;
 
59520
class ExtGnu;
 
59521
class PragmaOnceUnitState;
 
59522
class PragmaOnce;
 
59523
class CMatchSyntax;
 
59524
namespace Puma {
 
59525
 
 
59526
#line 4438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59527
class CT_AnyList : public CT_Any {
 
59528
#line 59529 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59529
  friend class ::CCExprResolve;
 
59530
  friend class ::CExprResolve;
 
59531
  friend class ::WinIfExists;
 
59532
  friend class ::WinImportHandler;
 
59533
  friend class ::WinMacros;
 
59534
  friend class ::WinAsm;
 
59535
  friend class ::WinDeclSpecs;
 
59536
  friend class ::WinMemberExplSpec;
 
59537
  friend class ::WinTypeKeywords;
 
59538
  friend class ::WinFriend;
 
59539
  friend class ::ExtAC;
 
59540
  friend class ::ExtACBuilderCoupling;
 
59541
  friend class ::ExtACSyntaxCoupling;
 
59542
  friend class ::ExtACTree;
 
59543
  friend class ::ExtACKeywords;
 
59544
  friend class ::ExtGnu;
 
59545
  friend class ::PragmaOnceUnitState;
 
59546
  friend class ::PragmaOnce;
 
59547
  friend class ::CMatchSyntax;
 
59548
 
 
59549
#line 4438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59550
 
 
59551
public:
 
59552
  /** Constructor.
 
59553
   *  \param k The wildcard keyword.
 
59554
   *  \param e The extension. */
 
59555
  CT_AnyList (CTree *k, CTree *e = (CTree*)0) : CT_Any (k, e) {}
 
59556
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59557
  static const char *NodeId ();
 
59558
  /** Get the name of the node. Can be compared with NodeId(). */
 
59559
  const char *NodeName () const { return NodeId (); }
 
59560
public:
 
59561
  typedef AC::TLE __AttrTypes;
 
59562
  const char *__attr_name (unsigned i) const { return 0; }
 
59563
  const void *__attr (unsigned __i) const { return 0; }
 
59564
#line 4448 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59565
};
 
59566
 
 
59567
/** \class CT_AnyExtension CTree.h Puma/CTree.h
 
59568
 *  Tree node representing a wildcard extension. */
 
59569
 
 
59570
#line 59571 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59571
} // closed Puma
 
59572
class CCExprResolve;
 
59573
class CExprResolve;
 
59574
class WinIfExists;
 
59575
class WinImportHandler;
 
59576
class WinMacros;
 
59577
class WinAsm;
 
59578
class WinDeclSpecs;
 
59579
class WinMemberExplSpec;
 
59580
class WinTypeKeywords;
 
59581
class WinFriend;
 
59582
class ExtAC;
 
59583
class ExtACBuilderCoupling;
 
59584
class ExtACSyntaxCoupling;
 
59585
class ExtACTree;
 
59586
class ExtACKeywords;
 
59587
class ExtGnu;
 
59588
class PragmaOnceUnitState;
 
59589
class PragmaOnce;
 
59590
class CMatchSyntax;
 
59591
namespace Puma {
 
59592
 
 
59593
#line 4452 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59594
class CT_AnyExtension : public CTree, public CSemValue {
 
59595
#line 59596 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59596
  friend class ::CCExprResolve;
 
59597
  friend class ::CExprResolve;
 
59598
  friend class ::WinIfExists;
 
59599
  friend class ::WinImportHandler;
 
59600
  friend class ::WinMacros;
 
59601
  friend class ::WinAsm;
 
59602
  friend class ::WinDeclSpecs;
 
59603
  friend class ::WinMemberExplSpec;
 
59604
  friend class ::WinTypeKeywords;
 
59605
  friend class ::WinFriend;
 
59606
  friend class ::ExtAC;
 
59607
  friend class ::ExtACBuilderCoupling;
 
59608
  friend class ::ExtACSyntaxCoupling;
 
59609
  friend class ::ExtACTree;
 
59610
  friend class ::ExtACKeywords;
 
59611
  friend class ::ExtGnu;
 
59612
  friend class ::PragmaOnceUnitState;
 
59613
  friend class ::PragmaOnce;
 
59614
  friend class ::CMatchSyntax;
 
59615
 
 
59616
#line 4452 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59617
 
 
59618
  CTree *sons[5]; // open, string, comma, cond, close
 
59619
 
 
59620
public:
 
59621
  /** Constructor.
 
59622
   *  \param o Left parenthesis before the extension. 
 
59623
   *  \param n The name of the extension.
 
59624
   *  \param co The comma between the name and the condition. 
 
59625
   *  \param c The condition.
 
59626
   *  \param cr Right parenthesis behind the extension. */
 
59627
  CT_AnyExtension (CTree *o, CTree *n, CTree *co, CTree *c, CTree *cr) {
 
59628
    AddSon (sons[0], o); AddSon (sons[1], n); AddSon (sons[2], co); 
 
59629
    AddSon (sons[3], c); AddSon (sons[4], cr); 
 
59630
  }
 
59631
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59632
  static const char *NodeId ();
 
59633
  /** Get the name of the node. Can be compared with NodeId(). */
 
59634
  const char *NodeName () const { return NodeId (); }
 
59635
  /** Get the number of sons. */
 
59636
  int Sons () const { return CTree::Sons (sons, 5); }
 
59637
  /** Get the n-th son.
 
59638
   *  \param n The index of the son.
 
59639
   *  \return The n-th son or NULL. */
 
59640
  CTree *Son (int n) const { return CTree::Son (sons, 5, n); }
 
59641
  /** Replace a son.
 
59642
   *  \param old_son The son to replace.
 
59643
   *  \param new_son The new son. */
 
59644
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59645
    CTree::ReplaceSon (sons, 5, old_son, new_son);
 
59646
  }
 
59647
  /** Get the condition. */
 
59648
  CTree *Condition () const { return sons[3]; }
 
59649
  /** Get the name string. */
 
59650
  CT_Token *String () const { return (CT_Token*)sons[1]; }
 
59651
  /** Get the extension name. */
 
59652
  const char *Name () const { return value ? value->StrLiteral ()->String () : (const char*)0; }
 
59653
  /** Get the value of the extension (the name). */
 
59654
  CExprValue *Value () const { return value; }
 
59655
  /** Get the semantic value information object. */
 
59656
  CSemValue *SemValue () const { return (CSemValue*)this; }
 
59657
public:
 
59658
  typedef AC::TL<Puma::CTree * [5],AC::TLE > __AttrTypes;
 
59659
  const char *__attr_name (unsigned i) const {
 
59660
    static const char *names[] = { "sons" }; return names[i];
 
59661
  }
 
59662
  const void *__attr (unsigned __i) const {
 
59663
    switch (__i) { case 0: return &sons; default: return 0; }
 
59664
  }
 
59665
#line 4492 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59666
};
 
59667
 
 
59668
/** \class CT_AnyCondition CTree.h Puma/CTree.h
 
59669
 *  Tree node representing the condition of a wildcard. */
 
59670
 
 
59671
#line 59672 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59672
} // closed Puma
 
59673
class CCExprResolve;
 
59674
class CExprResolve;
 
59675
class WinIfExists;
 
59676
class WinImportHandler;
 
59677
class WinMacros;
 
59678
class WinAsm;
 
59679
class WinDeclSpecs;
 
59680
class WinMemberExplSpec;
 
59681
class WinTypeKeywords;
 
59682
class WinFriend;
 
59683
class ExtAC;
 
59684
class ExtACBuilderCoupling;
 
59685
class ExtACSyntaxCoupling;
 
59686
class ExtACTree;
 
59687
class ExtACKeywords;
 
59688
class ExtGnu;
 
59689
class PragmaOnceUnitState;
 
59690
class PragmaOnce;
 
59691
class CMatchSyntax;
 
59692
namespace Puma {
 
59693
 
 
59694
#line 4496 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59695
class CT_AnyCondition : public CTree {
 
59696
#line 59697 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59697
  friend class ::CCExprResolve;
 
59698
  friend class ::CExprResolve;
 
59699
  friend class ::WinIfExists;
 
59700
  friend class ::WinImportHandler;
 
59701
  friend class ::WinMacros;
 
59702
  friend class ::WinAsm;
 
59703
  friend class ::WinDeclSpecs;
 
59704
  friend class ::WinMemberExplSpec;
 
59705
  friend class ::WinTypeKeywords;
 
59706
  friend class ::WinFriend;
 
59707
  friend class ::ExtAC;
 
59708
  friend class ::ExtACBuilderCoupling;
 
59709
  friend class ::ExtACSyntaxCoupling;
 
59710
  friend class ::ExtACTree;
 
59711
  friend class ::ExtACKeywords;
 
59712
  friend class ::ExtGnu;
 
59713
  friend class ::PragmaOnceUnitState;
 
59714
  friend class ::PragmaOnce;
 
59715
  friend class ::CMatchSyntax;
 
59716
 
 
59717
#line 4496 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59718
 
 
59719
  CTree *sons[3]; // arg1, arg2, arg3
 
59720
 
 
59721
public:
 
59722
  /** Constructor.
 
59723
   *  \param a1 The first argument.
 
59724
   *  \param a2 The optional second argument.
 
59725
   *  \param a3 The optional third argument. */
 
59726
  CT_AnyCondition (CTree *a1, CTree *a2 = (CTree*)0, CTree *a3 = (CTree*)0) {
 
59727
    AddSon (sons[0], a1); AddSon (sons[1], a2); AddSon (sons[2], a3); 
 
59728
  }
 
59729
  /** Get the identifier for this node type. Can be compared with NodeName(). */
 
59730
  static const char *NodeId ();
 
59731
  /** Get the name of the node. Can be compared with NodeId(). */
 
59732
  const char *NodeName () const { return NodeId (); }
 
59733
  /** Get the number of sons. */
 
59734
  int Sons () const { return CTree::Sons (sons, 3); }
 
59735
  /** Get the n-th son.
 
59736
   *  \param n The index of the son.
 
59737
   *  \return The n-th son or NULL. */
 
59738
  CTree *Son (int n) const { return CTree::Son (sons, 3, n); }
 
59739
  /** Replace a son.
 
59740
   *  \param old_son The son to replace.
 
59741
   *  \param new_son The new son. */
 
59742
  void ReplaceSon (CTree *old_son, CTree *new_son) { 
 
59743
    CTree::ReplaceSon (sons, 3, old_son, new_son);
 
59744
  }
 
59745
public:
 
59746
  typedef AC::TL<Puma::CTree * [3],AC::TLE > __AttrTypes;
 
59747
  const char *__attr_name (unsigned i) const {
 
59748
    static const char *names[] = { "sons" }; return names[i];
 
59749
  }
 
59750
  const void *__attr (unsigned __i) const {
 
59751
    switch (__i) { case 0: return &sons; default: return 0; }
 
59752
  }
 
59753
#line 4523 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CTree.h"
 
59754
};
 
59755
 
 
59756
 
 
59757
} // namespace Puma
 
59758
 
 
59759
#endif /* __CTree_h__ */
 
59760
 
 
59761
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59762
namespace Puma {
 
59763
 
 
59764
 
 
59765
class ErrorSink;
 
59766
 
 
59767
 
 
59768
/** \class CSemDeclSpecs CSemDeclSpecs.h Puma/CSemDeclSpecs.h
 
59769
 *  Class for analysing a sequence of declaration specifiers.
 
59770
 *  The result of the analysis is a type, i.e. the type of 
 
59771
 *  the declared entity (function, object, etc). */
 
59772
 
 
59773
#line 59774 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59774
} // closed Puma
 
59775
class CCExprResolve;
 
59776
class CExprResolve;
 
59777
class WinIfExists;
 
59778
class WinImportHandler;
 
59779
class WinMacros;
 
59780
class WinAsm;
 
59781
class WinDeclSpecs;
 
59782
class WinMemberExplSpec;
 
59783
class WinTypeKeywords;
 
59784
class WinFriend;
 
59785
class ExtAC;
 
59786
class ExtACBuilderCoupling;
 
59787
class ExtACSyntaxCoupling;
 
59788
class ExtACTree;
 
59789
class ExtACKeywords;
 
59790
class ExtGnu;
 
59791
class PragmaOnceUnitState;
 
59792
class PragmaOnce;
 
59793
class CMatchSyntax;
 
59794
namespace Puma {
 
59795
 
 
59796
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59797
 
 
59798
#line 59799 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59799
} // closed Puma
 
59800
 
 
59801
#ifndef __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
59802
#define __ac_guard__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
59803
 
 
59804
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnuCSemDeclSpecs.ah"
 
59805
// This file is part of PUMA.
 
59806
// Copyright (C) 1999-2003  The PUMA developer team.
 
59807
//                                                                
 
59808
// This program is free software;  you can redistribute it and/or 
 
59809
// modify it under the terms of the GNU General Public License as 
 
59810
// published by the Free Software Foundation; either version 2 of 
 
59811
// the License, or (at your option) any later version.            
 
59812
//                                                                
 
59813
// This program is distributed in the hope that it will be useful,
 
59814
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
59815
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
59816
// GNU General Public License for more details.                   
 
59817
//                                                                
 
59818
// You should have received a copy of the GNU General Public      
 
59819
// License along with this program; if not, write to the Free     
 
59820
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
59821
// MA  02111-1307  USA                                            
 
59822
 
 
59823
#ifndef __ext_gnu_csem_decl_specs_ah__
 
59824
#define __ext_gnu_csem_decl_specs_ah__
 
59825
 
 
59826
 
 
59827
#line 24 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnuCSemDeclSpecs.ah"
 
59828
namespace Puma {
 
59829
  
 
59830
#line 29 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnuCSemDeclSpecs.ah"
 
59831
 
 
59832
}
 
59833
 
 
59834
#endif /* __ext_gnu_csem_decl_specs_ah__ */
 
59835
 
 
59836
#line 8 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59837
#endif
 
59838
namespace Puma {
 
59839
 
 
59840
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59841
class CSemDeclSpecs {
 
59842
#line 59843 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59843
  friend class ::CCExprResolve;
 
59844
  friend class ::CExprResolve;
 
59845
  friend class ::WinIfExists;
 
59846
  friend class ::WinImportHandler;
 
59847
  friend class ::WinMacros;
 
59848
  friend class ::WinAsm;
 
59849
  friend class ::WinDeclSpecs;
 
59850
  friend class ::WinMemberExplSpec;
 
59851
  friend class ::WinTypeKeywords;
 
59852
  friend class ::WinFriend;
 
59853
  friend class ::ExtAC;
 
59854
  friend class ::ExtACBuilderCoupling;
 
59855
  friend class ::ExtACSyntaxCoupling;
 
59856
  friend class ::ExtACTree;
 
59857
  friend class ::ExtACKeywords;
 
59858
  friend class ::ExtGnu;
 
59859
  friend class ::PragmaOnceUnitState;
 
59860
  friend class ::PragmaOnce;
 
59861
  friend class ::CMatchSyntax;
 
59862
 
 
59863
#line 38 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59864
 
 
59865
  // initialization context
 
59866
  ErrorSink *_err;
 
59867
  CT_DeclSpecSeq *_dss;
 
59868
  
 
59869
  // analysis results:
 
59870
  // -----------------
 
59871
  // counters
 
59872
  int _names;
 
59873
  int _class_specs;
 
59874
  int _union_specs;
 
59875
  int _enum_specs;
 
59876
  // nodes/objects
 
59877
  int _prim_map[CT_PrimDeclSpec::NumTypes];
 
59878
  Token *_prim_token[CT_PrimDeclSpec::NumTypes];
 
59879
  CT_SimpleName *_name;
 
59880
 
 
59881
  // final results after all checks:
 
59882
  // -------------------------------
 
59883
  CTypeInfo *_type;
 
59884
  bool _def_class, _def_union, _def_enum;
 
59885
 
 
59886
  // analyses the syntax tree nodes of the decl-spec sequence. Return false
 
59887
  // if an error was detected. 
 
59888
  
 
59889
#line 59890 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59890
public: __attribute__((always_inline)) inline bool __exec_old_analyze_seq();
 
59891
private:
 
59892
 
 
59893
#line 62 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59894
bool analyze_seq ();
 
59895
  
 
59896
  // analyzes the current declaration specifier in the sequence and set some
 
59897
  // attributes according to the result. Returns false if the specifier type
 
59898
  // is unknown.
 
59899
  
 
59900
#line 59901 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59901
public: __attribute__((always_inline)) inline bool __exec_old_analyze(::Puma::CTree * spec);
 
59902
private:
 
59903
 
 
59904
#line 67 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59905
bool analyze (CTree *spec);
 
59906
 
 
59907
  // check functions (used after analyse_seq()
 
59908
  bool check_prim_decl_specs (bool &have_type);
 
59909
  
 
59910
#line 59911 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59911
public: __attribute__((always_inline)) inline bool __exec_old_check_complex_decl_specs(bool & have_type);
 
59912
private:
 
59913
 
 
59914
#line 71 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59915
bool check_complex_decl_specs (bool &have_type);  
 
59916
  bool check_storage_class ();
 
59917
  
 
59918
#line 59919 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59919
public: __attribute__((always_inline)) inline bool __exec_old_check_signed_unsigned();
 
59920
private:
 
59921
 
 
59922
#line 73 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59923
bool check_signed_unsigned ();
 
59924
  bool check_long_short (); 
 
59925
  
 
59926
#line 59927 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59927
public: __attribute__((always_inline)) inline bool __exec_old_check_finally();
 
59928
private:
 
59929
 
 
59930
#line 75 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59931
bool check_finally ();
 
59932
  
 
59933
  // type creation code
 
59934
  
 
59935
#line 59936 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
59936
public: __attribute__((always_inline)) inline ::Puma::CTypeInfo * __exec_old_create_type();
 
59937
private:
 
59938
 
 
59939
#line 78 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59940
CTypeInfo *create_type ();
 
59941
  CTypeInfo *create_qualifiers (CTypeInfo *type);
 
59942
  
 
59943
public:
 
59944
  /** Constructor.
 
59945
   *  \param es The error stream on which to report errors.
 
59946
   *  \param dss The declaration specifier sequence to be analysed.
 
59947
   *  \param support_implicit_int True if implicit type int shall be supported. */
 
59948
  CSemDeclSpecs (ErrorSink *es, CT_DeclSpecSeq *dss, bool support_implicit_int = false);
 
59949
  /** Destructor. Destroys the created type. */
 
59950
  ~CSemDeclSpecs ();
 
59951
 
 
59952
  /** Get a copy of the resulting type. 
 
59953
   *  \return The copy of the type. Has to be destroyed by the caller. */
 
59954
  CTypeInfo *make_type () const;
 
59955
  /** Get the declaration specifier sequence. */
 
59956
  CT_DeclSpecSeq *DeclSpecSeq () const;
 
59957
 
 
59958
  /** Check if the given declaration specifier was declared.
 
59959
   *  \param dst The declaration specifier type. */
 
59960
  bool declared (CT_PrimDeclSpec::Type dst) const;
 
59961
  /** Check if a class was defined in the declaration specifier sequence. */
 
59962
  bool defClass () const;
 
59963
  /** Check if an union was defined in the declaration specifier sequence. */
 
59964
  bool defUnion () const;
 
59965
  /** Check if an enumeration was defined in the declaration specifier sequence. */
 
59966
  bool defEnum () const;
 
59967
   private:
 
59968
  typedef CSemDeclSpecs ExtGnuCSemDeclSpecs;
 
59969
 
 
59970
#line 26 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnuCSemDeclSpecs.ah"
 
59971
 public :
 
59972
int _typeofs ;
 
59973
CT_GnuTypeof * _typeof_node ;public:
 
59974
  typedef AC::TL<Puma::ErrorSink *,AC::TL<Puma::CT_DeclSpecSeq *,AC::TL<int,AC::TL<int,AC::TL<int,AC::TL<int,AC::TL<int [32],AC::TL<Puma::Token * [32],AC::TL<Puma::CT_SimpleName *,AC::TL<Puma::CTypeInfo *,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<int,AC::TL<Puma::CT_GnuTypeof *,AC::TLE > > > > > > > > > > > > > > > __AttrTypes;
 
59975
  const char *__attr_name (unsigned i) const {
 
59976
    static const char *names[] = { "_err", "_dss", "_names", "_class_specs", "_union_specs", "_enum_specs", "_prim_map", "_prim_token", "_name", "_type", "_def_class", "_def_union", "_def_enum", "_typeofs", "_typeof_node" }; return names[i];
 
59977
  }
 
59978
  const void *__attr (unsigned __i) const {
 
59979
    switch (__i) { case 0: return &_err; case 1: return &_dss; case 2: return &_names; case 3: return &_class_specs; case 4: return &_union_specs; case 5: return &_enum_specs; case 6: return &_prim_map; case 7: return &_prim_token; case 8: return &_name; case 9: return &_type; case 10: return &_def_class; case 11: return &_def_union; case 12: return &_def_enum; case 13: return &_typeofs; case 14: return &_typeof_node; default: return 0; }
 
59980
  }
 
59981
#line 105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/CSemDeclSpecs.h"
 
59982
};
 
59983
 
 
59984
inline CSemDeclSpecs::~CSemDeclSpecs () 
 
59985
 { if (_type) CTypeInfo::Destroy (_type); }
 
59986
  
 
59987
inline CTypeInfo *CSemDeclSpecs::make_type () const 
 
59988
 { return CTypeInfo::Duplicate (_type); }
 
59989
inline CT_DeclSpecSeq *CSemDeclSpecs::DeclSpecSeq () const 
 
59990
 { return _dss; }
 
59991
 
 
59992
inline bool CSemDeclSpecs::declared (CT_PrimDeclSpec::Type as) const 
 
59993
 { return _prim_map[as] > 0; }
 
59994
 
 
59995
inline bool CSemDeclSpecs::defClass () const
 
59996
 { return _def_class; }
 
59997
inline bool CSemDeclSpecs::defUnion () const
 
59998
 { return _def_union; }
 
59999
inline bool CSemDeclSpecs::defEnum () const
 
60000
 { return _def_enum; }
 
60001
 
 
60002
 
 
60003
} // namespace Puma
 
60004
 
 
60005
#endif /* __c_sem_decl_specs_h__ */
 
60006
 
 
60007
#line 1 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroManager.h"
 
60008
// This file is part of PUMA.
 
60009
// Copyright (C) 1999-2003  The PUMA developer team.
 
60010
//                                                                
 
60011
// This program is free software;  you can redistribute it and/or 
 
60012
// modify it under the terms of the GNU General Public License as 
 
60013
// published by the Free Software Foundation; either version 2 of 
 
60014
// the License, or (at your option) any later version.            
 
60015
//                                                                
 
60016
// This program is distributed in the hope that it will be useful,
 
60017
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
60018
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
60019
// GNU General Public License for more details.                   
 
60020
//                                                                
 
60021
// You should have received a copy of the GNU General Public      
 
60022
// License along with this program; if not, write to the Free     
 
60023
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
60024
// MA  02111-1307  USA                                            
 
60025
 
 
60026
#ifndef __pre_macro_manager__
 
60027
#define __pre_macro_manager__
 
60028
 
 
60029
// The macro manager manages all defined macros.
 
60030
 
 
60031
 
 
60032
#line 28 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroManager.h"
 
60033
using namespace std;
 
60034
 
 
60035
#ifdef __puma
 
60036
# define PUMA_HTSIZE 1
 
60037
#else
 
60038
# define PUMA_HTSIZE StrHashTable::STRHASHTABLE_SIZE
 
60039
#endif
 
60040
 
 
60041
namespace Puma {
 
60042
 
 
60043
 
 
60044
class ErrorStream;
 
60045
 
 
60046
 
 
60047
#line 60048 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60048
} // closed Puma
 
60049
class CCExprResolve;
 
60050
class CExprResolve;
 
60051
class WinIfExists;
 
60052
class WinImportHandler;
 
60053
class WinMacros;
 
60054
class WinAsm;
 
60055
class WinDeclSpecs;
 
60056
class WinMemberExplSpec;
 
60057
class WinTypeKeywords;
 
60058
class WinFriend;
 
60059
class ExtAC;
 
60060
class ExtACBuilderCoupling;
 
60061
class ExtACSyntaxCoupling;
 
60062
class ExtACTree;
 
60063
class ExtACKeywords;
 
60064
class ExtGnu;
 
60065
class PragmaOnceUnitState;
 
60066
class PragmaOnce;
 
60067
class CMatchSyntax;
 
60068
namespace Puma {
 
60069
 
 
60070
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroManager.h"
 
60071
class PreMacroManager {
 
60072
#line 60073 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60073
  friend class ::CCExprResolve;
 
60074
  friend class ::CExprResolve;
 
60075
  friend class ::WinIfExists;
 
60076
  friend class ::WinImportHandler;
 
60077
  friend class ::WinMacros;
 
60078
  friend class ::WinAsm;
 
60079
  friend class ::WinDeclSpecs;
 
60080
  friend class ::WinMemberExplSpec;
 
60081
  friend class ::WinTypeKeywords;
 
60082
  friend class ::WinFriend;
 
60083
  friend class ::ExtAC;
 
60084
  friend class ::ExtACBuilderCoupling;
 
60085
  friend class ::ExtACSyntaxCoupling;
 
60086
  friend class ::ExtACTree;
 
60087
  friend class ::ExtACKeywords;
 
60088
  friend class ::ExtGnu;
 
60089
  friend class ::PragmaOnceUnitState;
 
60090
  friend class ::PragmaOnce;
 
60091
  friend class ::CMatchSyntax;
 
60092
 
 
60093
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroManager.h"
 
60094
 
 
60095
  PreMacro *_Line;
 
60096
  PreMacro *_Date;
 
60097
  PreMacro *_Time;
 
60098
  PreMacro *_IncLevel;
 
60099
  PreMacro *_File;
 
60100
  PreMacro *_BaseFile;
 
60101
 
 
60102
  Chain _tab[PUMA_HTSIZE];
 
60103
 
 
60104
  ErrorStream *_err;        // To report errors.
 
60105
 
 
60106
  void add (PreMacro *);
 
60107
  void kill (const DString &);
 
60108
  PreMacro *get (const DString &) const;
 
60109
  void clear ();
 
60110
        
 
60111
public:
 
60112
  PreMacroManager (ErrorStream *err, int size = 211) : _err (err) {}
 
60113
        
 
60114
  // Destroy the predicates too.
 
60115
  ~PreMacroManager () { clear (); }
 
60116
        
 
60117
  // Initialize the macro manager.
 
60118
  void init (const char *filename);
 
60119
        
 
60120
  // Add given macro to macro table.
 
60121
  void addMacro (PreMacro *macro);
 
60122
        
 
60123
  // Remove macro `name' from macro table.
 
60124
  void removeMacro (const DString &name);
 
60125
        
 
60126
  // Get macro `name' from macro table.
 
60127
  PreMacro *getMacro (const DString &name) const;
 
60128
        
 
60129
  // Get pointers to some special macros
 
60130
  PreMacro *getLineMacro () const { return _Line; }
 
60131
  PreMacro *getDateMacro () const { return _Date; }
 
60132
  PreMacro *getTimeMacro () const { return _Time; }
 
60133
  PreMacro *getIncLevelMacro () const { return _IncLevel; }
 
60134
  PreMacro *getFileMacro () const { return _File; }
 
60135
  PreMacro *getBaseFileMacro () const { return _BaseFile; }
 
60136
public:
 
60137
  typedef AC::TL<Puma::PreMacro *,AC::TL<Puma::PreMacro *,AC::TL<Puma::PreMacro *,AC::TL<Puma::PreMacro *,AC::TL<Puma::PreMacro *,AC::TL<Puma::PreMacro *,AC::TL<Puma::Chain [1],AC::TL<Puma::ErrorStream *,AC::TLE > > > > > > > > __AttrTypes;
 
60138
  const char *__attr_name (unsigned i) const {
 
60139
    static const char *names[] = { "_Line", "_Date", "_Time", "_IncLevel", "_File", "_BaseFile", "_tab", "_err" }; return names[i];
 
60140
  }
 
60141
  const void *__attr (unsigned __i) const {
 
60142
    switch (__i) { case 0: return &_Line; case 1: return &_Date; case 2: return &_Time; case 3: return &_IncLevel; case 4: return &_File; case 5: return &_BaseFile; case 6: return &_tab; case 7: return &_err; default: return 0; }
 
60143
  }
 
60144
#line 83 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/inc/Puma/PreMacroManager.h"
 
60145
};
 
60146
 
 
60147
 
 
60148
} // namespace Puma
 
60149
 
 
60150
#endif /* __pre_macro_manager__ */
 
60151
 
 
60152
#line 34 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60153
namespace Puma {
 
60154
  class CCSyntax;
 
60155
  class CSyntax;
 
60156
}
 
60157
 
 
60158
 
 
60159
namespace Puma {
 
60160
  
 
60161
#line 41 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60162
 
 
60163
  
 
60164
#line 42 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60165
 
 
60166
  
 
60167
#line 43 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60168
 
 
60169
  
 
60170
#line 44 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60171
 
 
60172
  
 
60173
#line 45 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60174
 
 
60175
  
 
60176
#line 46 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60177
 
 
60178
  
 
60179
#line 47 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60180
 
 
60181
  
 
60182
#line 48 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60183
 
 
60184
  
 
60185
#line 49 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60186
 
 
60187
  
 
60188
#line 50 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60189
 
 
60190
}
 
60191
 
 
60192
 
 
60193
#line 60194 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60194
class CCExprResolve;
 
60195
class CExprResolve;
 
60196
class WinIfExists;
 
60197
class WinImportHandler;
 
60198
class WinMacros;
 
60199
class WinAsm;
 
60200
class WinDeclSpecs;
 
60201
class WinMemberExplSpec;
 
60202
class WinTypeKeywords;
 
60203
class WinFriend;
 
60204
class ExtAC;
 
60205
class ExtACBuilderCoupling;
 
60206
class ExtACSyntaxCoupling;
 
60207
class ExtACTree;
 
60208
class ExtACKeywords;
 
60209
class PragmaOnceUnitState;
 
60210
class PragmaOnce;
 
60211
class CMatchSyntax;
 
60212
 
 
60213
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60214
class ExtGnu {
 
60215
#line 60216 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60216
 
 
60217
public:
 
60218
  static ExtGnu *aspectof () {
 
60219
    static ExtGnu __instance;
 
60220
    return &__instance;
 
60221
  }
 
60222
  static ExtGnu *aspectOf () {
 
60223
    return aspectof ();
 
60224
  }
 
60225
private:
 
60226
 
 
60227
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60228
 
 
60229
#line 60230 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60230
  friend class ::CCExprResolve;
 
60231
  friend class ::CExprResolve;
 
60232
  friend class ::WinIfExists;
 
60233
  friend class ::WinImportHandler;
 
60234
  friend class ::WinMacros;
 
60235
  friend class ::WinAsm;
 
60236
  friend class ::WinDeclSpecs;
 
60237
  friend class ::WinMemberExplSpec;
 
60238
  friend class ::WinTypeKeywords;
 
60239
  friend class ::WinFriend;
 
60240
  friend class ::ExtAC;
 
60241
  friend class ::ExtACBuilderCoupling;
 
60242
  friend class ::ExtACSyntaxCoupling;
 
60243
  friend class ::ExtACTree;
 
60244
  friend class ::ExtACKeywords;
 
60245
  friend class ::PragmaOnceUnitState;
 
60246
  friend class ::PragmaOnce;
 
60247
  friend class ::CMatchSyntax;
 
60248
 
 
60249
#line 53 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60250
 
 
60251
  // flags to enable/disable certain Gnu features
 
60252
  bool extended_asm;
 
60253
  bool extended_cv_qual;
 
60254
  bool gnu_builtins;
 
60255
  bool std_hack;
 
60256
  bool typeof_keyword;
 
60257
  bool statement_exprs;
 
60258
  bool labels_as_values;
 
60259
  bool thread_local_storage_class;
 
60260
  bool friend_injection;
 
60261
  bool extern_inline;
 
60262
 
 
60263
  // pointcut definitions
 
60264
  
 
60265
#line 67 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60266
 
 
60267
  
 
60268
#line 68 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60269
 
 
60270
  
 
60271
#line 69 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60272
 
 
60273
  
 
60274
#line 70 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60275
 
 
60276
  
 
60277
#line 71 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60278
 
 
60279
  
 
60280
#line 72 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60281
 
 
60282
 
 
60283
  // ----------------------------------------------------
 
60284
  // the GNU ASM syntax
 
60285
  // ----------------------------------------------------
 
60286
 
 
60287
  // structural extensions
 
60288
  
 
60289
#line 79 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60290
 
 
60291
  
 
60292
#line 80 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60293
 
 
60294
 
 
60295
  // extended asm statement
 
60296
  
 
60297
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60298
 
 
60299
public: template<class JoinPoint> void __a0_around 
 
60300
#line 84 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60301
 
 
60302
#line 84 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60303
(JoinPoint *tjp, Puma::CSyntax *syn)
 
60304
#line 84 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60305
 {
 
60306
#line 60307 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60307
 
 
60308
  typedef typename JoinPoint::That __JP_That;
 
60309
  typedef typename JoinPoint::Target __JP_Target;
 
60310
  typedef typename JoinPoint::Result __JP_Result;
 
60311
 
 
60312
#line 84 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60313
 
 
60314
    if (extended_asm)
 
60315
      *tjp->result () = ((__JP_That
 
60316
#line 86 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60317
*)syn)->gnu_asm_def ();
 
60318
    else
 
60319
      tjp->proceed ();
 
60320
  }
 
60321
#line 60322 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60322
 
 
60323
private:
 
60324
 
 
60325
#line 89 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60326
 
 
60327
 
 
60328
  // extended asm init declarator syntax
 
60329
  
 
60330
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60331
 
 
60332
public: template<class JoinPoint> void __a1_after 
 
60333
#line 94 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60334
 
 
60335
#line 94 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60336
(JoinPoint *tjp, Puma::CSyntax *syn)
 
60337
#line 94 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60338
 {
 
60339
#line 60340 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60340
 
 
60341
  typedef typename JoinPoint::That __JP_That;
 
60342
  typedef typename JoinPoint::Target __JP_Target;
 
60343
  typedef typename JoinPoint::Result __JP_Result;
 
60344
 
 
60345
#line 94 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60346
 
 
60347
    Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
60348
    if (extended_asm && !result &&
 
60349
        ((__JP_That
 
60350
#line 97 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60351
*)syn)->look_ahead (Puma::TOK_ASM))
 
60352
      result = ((__JP_That
 
60353
#line 98 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60354
*)syn)->gnu_asm_spec ();
 
60355
  }
 
60356
#line 60357 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60357
 
 
60358
private:
 
60359
 
 
60360
#line 99 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60361
 
 
60362
 
 
60363
  // ----------------------------------------------------
 
60364
  // redefinition of 'extern inline' functions
 
60365
  // ----------------------------------------------------
 
60366
 
 
60367
  
 
60368
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60369
 
 
60370
public: template<class JoinPoint> void __a2_around 
 
60371
#line 105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60372
 
 
60373
#line 105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60374
(JoinPoint *tjp)
 
60375
#line 105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60376
 {
 
60377
#line 60378 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60378
 
 
60379
  typedef typename JoinPoint::That __JP_That;
 
60380
  typedef typename JoinPoint::Target __JP_Target;
 
60381
  typedef typename JoinPoint::Result __JP_Result;
 
60382
 
 
60383
#line 105 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60384
 
 
60385
    // if previous function definition is declared 'extern inline'
 
60386
    // then it is no error to redefine it
 
60387
    Puma::CObjectInfo* fct = *tjp->template arg<0>();
 
60388
    if (extern_inline && fct->isExtern () && fct->isInline ())
 
60389
      *(tjp->result ()) = false;
 
60390
    else
 
60391
      tjp->proceed ();
 
60392
  }
 
60393
#line 60394 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60394
 
 
60395
private:
 
60396
 
 
60397
#line 113 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60398
 
 
60399
 
 
60400
  // ----------------------------------------------------
 
60401
  // the 'restrict' keyword
 
60402
  // ----------------------------------------------------
 
60403
 
 
60404
  // extended cv qualifier
 
60405
  
 
60406
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60407
 
 
60408
public: template<class JoinPoint> void __a3_after 
 
60409
#line 120 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60410
 
 
60411
#line 120 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60412
(JoinPoint *tjp)
 
60413
#line 120 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60414
 {
 
60415
#line 60416 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60416
 
 
60417
  typedef typename JoinPoint::That __JP_That;
 
60418
  typedef typename JoinPoint::Target __JP_Target;
 
60419
  typedef typename JoinPoint::Result __JP_Result;
 
60420
 
 
60421
#line 120 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60422
 
 
60423
    if (extended_cv_qual)
 
60424
      tjp->that ()->_cv_qual_1.set (Puma::TOK_RESTRICT);
 
60425
  }
 
60426
#line 60427 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60427
 
 
60428
private:
 
60429
 
 
60430
#line 123 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60431
 
 
60432
 
 
60433
  // -------------------------
 
60434
  // GNU statement expressions
 
60435
  // -------------------------
 
60436
 
 
60437
  // pointcut definitions
 
60438
  
 
60439
#line 130 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60440
 
 
60441
  
 
60442
#line 131 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60443
 
 
60444
 
 
60445
  // structural extensions
 
60446
  
 
60447
#line 134 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60448
 
 
60449
  
 
60450
#line 135 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60451
 
 
60452
  
 
60453
#line 136 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60454
 
 
60455
 
 
60456
  // extended primary expression syntax
 
60457
  
 
60458
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60459
 
 
60460
public: template<class JoinPoint> void __a4_around 
 
60461
#line 140 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60462
 
 
60463
#line 140 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60464
(JoinPoint *tjp)
 
60465
#line 140 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60466
 {
 
60467
#line 60468 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60468
 
 
60469
  typedef typename JoinPoint::That __JP_That;
 
60470
  typedef typename JoinPoint::Target __JP_Target;
 
60471
  typedef typename JoinPoint::Result __JP_Result;
 
60472
 
 
60473
#line 140 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60474
 
 
60475
    __JP_That
 
60476
#line 141 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60477
 *syntax = tjp->that ();
 
60478
    if (statement_exprs &&
 
60479
        ((__JP_That
 
60480
#line 143 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60481
*)syntax)->look_ahead (Puma::TOK_OPEN_ROUND) &&
 
60482
        ((__JP_That
 
60483
#line 144 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60484
*)syntax)->look_ahead (Puma::TOK_OPEN_CURLY, 2)) {
 
60485
      Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
60486
      ((__JP_That
 
60487
#line 146 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60488
*)syntax)->consume (); // skip the Puma::TOK_OPEN_ROUND
 
60489
      result =
 
60490
        (((__JP_That
 
60491
#line 148 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60492
*)syntax)->parse (&__JP_That
 
60493
#line 148 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60494
::cmpd_stmt) &&
 
60495
        ((__JP_That
 
60496
#line 149 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60497
*)syntax)->parse (Puma::TOK_CLOSE_ROUND)) ?
 
60498
        ((__JP_That
 
60499
#line 150 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60500
*)syntax)->builder().gnu_statement_expr () : 0;
 
60501
    }
 
60502
    else
 
60503
      tjp->proceed ();
 
60504
  }
 
60505
#line 60506 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60506
 
 
60507
private:
 
60508
 
 
60509
#line 154 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60510
 
 
60511
 
 
60512
  // ----------------------------------------
 
60513
  // support for "labels as values" extension
 
60514
  // ----------------------------------------
 
60515
 
 
60516
  // extended goto syntax
 
60517
  
 
60518
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60519
 
 
60520
public: template<class JoinPoint> void __a5_around 
 
60521
#line 162 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60522
 
 
60523
#line 162 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60524
(JoinPoint *tjp)
 
60525
#line 162 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60526
 {
 
60527
#line 60528 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60528
 
 
60529
  typedef typename JoinPoint::That __JP_That;
 
60530
  typedef typename JoinPoint::Target __JP_Target;
 
60531
  typedef typename JoinPoint::Result __JP_Result;
 
60532
 
 
60533
#line 162 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60534
 
 
60535
    __JP_That
 
60536
#line 163 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60537
 *syntax = tjp->that ();
 
60538
    if (labels_as_values &&
 
60539
        syntax->look_ahead (Puma::TOK_GOTO) &&
 
60540
        syntax->look_ahead (Puma::TOK_MUL, 2)) {
 
60541
      syntax->consume (); // skip the 'goto' keyword
 
60542
      Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
60543
      result = (syntax->parse (&__JP_That
 
60544
#line 169 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60545
::expr) &&
 
60546
                syntax->parse (Puma::TOK_SEMI_COLON)) ?
 
60547
               syntax->builder().jump_stmt () : 0;
 
60548
    }
 
60549
    else
 
60550
      tjp->proceed ();
 
60551
  }
 
60552
#line 60553 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60553
 
 
60554
private:
 
60555
 
 
60556
#line 175 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60557
 
 
60558
 
 
60559
  // the address of a label
 
60560
  
 
60561
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60562
 
 
60563
public: template<class JoinPoint> void __a6_around 
 
60564
#line 179 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60565
 
 
60566
#line 179 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60567
(JoinPoint *tjp)
 
60568
#line 179 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60569
 {
 
60570
#line 60571 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60571
 
 
60572
  typedef typename JoinPoint::That __JP_That;
 
60573
  typedef typename JoinPoint::Target __JP_Target;
 
60574
  typedef typename JoinPoint::Result __JP_Result;
 
60575
 
 
60576
#line 179 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60577
 
 
60578
    __JP_That
 
60579
#line 180 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60580
 *syntax = tjp->that ();
 
60581
    if (labels_as_values &&
 
60582
        syntax->look_ahead (Puma::TOK_AND_AND)) {
 
60583
      syntax->consume (); // consume the '&&' token, already checked
 
60584
      Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
60585
      result = syntax->identifier () ? syntax->builder().unary_expr () : 0;
 
60586
    }
 
60587
    else
 
60588
      tjp->proceed ();
 
60589
  }
 
60590
#line 60591 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60591
 
 
60592
private:
 
60593
 
 
60594
#line 189 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60595
 
 
60596
 
 
60597
  // extended semantic analysis
 
60598
  
 
60599
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60600
 
 
60601
public: template<class JoinPoint> void __a7_around 
 
60602
#line 194 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60603
 
 
60604
#line 194 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60605
(JoinPoint *tjp, Puma::CTree *tree)
 
60606
#line 194 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60607
 {
 
60608
#line 60609 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60609
 
 
60610
  typedef typename JoinPoint::That __JP_That;
 
60611
  typedef typename JoinPoint::Target __JP_Target;
 
60612
  typedef typename JoinPoint::Result __JP_Result;
 
60613
 
 
60614
#line 194 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60615
 
 
60616
    if (tree->NodeName () == Puma::CT_SimpleName::NodeId ())
 
60617
      tjp->proceed ();
 
60618
    else if (tree->NodeName () == Puma::CT_DerefExpr::NodeId ())
 
60619
      tjp->that ()->resolveExpr (((Puma::CT_DerefExpr*)tree)->Expr (), tree);
 
60620
  }
 
60621
#line 60622 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60622
 
 
60623
private:
 
60624
 
 
60625
#line 199 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60626
 
 
60627
 
 
60628
  // label address has type void*
 
60629
  
 
60630
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60631
 
 
60632
public: template<class JoinPoint> void __a8_around 
 
60633
#line 203 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60634
 
 
60635
#line 203 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60636
(JoinPoint *tjp)
 
60637
#line 203 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60638
 {
 
60639
#line 60640 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60640
 
 
60641
  typedef typename JoinPoint::That __JP_That;
 
60642
  typedef typename JoinPoint::Target __JP_Target;
 
60643
  typedef typename JoinPoint::Result __JP_Result;
 
60644
 
 
60645
#line 203 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60646
 
 
60647
      int oper = (*tjp->template arg<0>())->token ()->type ();
 
60648
      if (oper == Puma::TOK_AND_AND) {
 
60649
        // TODO: It would be better to whether the label really exists, but
 
60650
        //       at the moment I don't see a way how to do that.
 
60651
        //       (In the gcc extension the label can be defined anywhere in
 
60652
        //        the translation unit!)
 
60653
        //       It is also not possible to use the error handling macros here.
 
60654
        Puma::CTypeInfo *t = new Puma::CTypePointer (&Puma::CTYPE_VOID);
 
60655
        (*tjp->template arg<0>())->setType (t);
 
60656
        *tjp->result () = t;
 
60657
      }
 
60658
      else
 
60659
        tjp->proceed ();
 
60660
  }
 
60661
#line 60662 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60662
 
 
60663
private:
 
60664
 
 
60665
#line 217 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60666
 
 
60667
 
 
60668
  // ----------------------------------------
 
60669
  // Thread-local storage class (TLS) support
 
60670
  // ----------------------------------------
 
60671
 
 
60672
  // extend storage class specifiers
 
60673
  
 
60674
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60675
 
 
60676
public: template<class JoinPoint> void __a9_after 
 
60677
#line 225 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60678
 
 
60679
#line 225 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60680
(JoinPoint *tjp)
 
60681
#line 225 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60682
 {
 
60683
#line 60684 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60684
 
 
60685
  typedef typename JoinPoint::That __JP_That;
 
60686
  typedef typename JoinPoint::Target __JP_Target;
 
60687
  typedef typename JoinPoint::Result __JP_Result;
 
60688
 
 
60689
#line 225 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60690
 
 
60691
    if (thread_local_storage_class)
 
60692
      tjp->that ()->_storage_class_spec_1.set (Puma::TOK_THREAD);
 
60693
  }
 
60694
#line 60695 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60695
 
 
60696
private:
 
60697
 
 
60698
#line 228 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60699
 
 
60700
 
 
60701
  // ----------------------
 
60702
  // TYPEOF keyword support
 
60703
  // ----------------------
 
60704
 
 
60705
  // structural extensions
 
60706
  
 
60707
#line 235 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60708
 
 
60709
  
 
60710
#line 236 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60711
 
 
60712
  
 
60713
#line 237 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60714
 
 
60715
  
 
60716
#line 238 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60717
 
 
60718
 
 
60719
  // introduce new state into CSemDeclSpecs
 
60720
  
 
60721
#line 241 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60722
 
 
60723
 
 
60724
  // syntax extension
 
60725
  
 
60726
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60727
 
 
60728
public: template<class JoinPoint> void __a10_after 
 
60729
#line 245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60730
 
 
60731
#line 245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60732
(JoinPoint *tjp)
 
60733
#line 245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60734
 {
 
60735
#line 60736 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60736
 
 
60737
  typedef typename JoinPoint::That __JP_That;
 
60738
  typedef typename JoinPoint::Target __JP_Target;
 
60739
  typedef typename JoinPoint::Result __JP_Result;
 
60740
 
 
60741
#line 245 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60742
 
 
60743
    if (typeof_keyword)
 
60744
      tjp->that ()->_simple_type_spec_1.set (Puma::TOK_TYPEOF);
 
60745
  }
 
60746
#line 60747 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60747
 
 
60748
private:
 
60749
 
 
60750
#line 248 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60751
 
 
60752
  
 
60753
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60754
 
 
60755
public: template<class JoinPoint> void __a11_after 
 
60756
#line 249 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60757
 
 
60758
#line 249 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60759
(JoinPoint *tjp)
 
60760
#line 249 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60761
 {
 
60762
#line 60763 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60763
 
 
60764
  typedef typename JoinPoint::That __JP_That;
 
60765
  typedef typename JoinPoint::Target __JP_Target;
 
60766
  typedef typename JoinPoint::Result __JP_Result;
 
60767
 
 
60768
#line 249 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60769
 
 
60770
    Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
60771
    if (typeof_keyword && !result && tjp->that ()->look_ahead (Puma::TOK_TYPEOF) &&
 
60772
        tjp->that ()->parse (&__JP_That
 
60773
#line 252 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60774
::gnu_typeof))
 
60775
      result = tjp->that ()->builder ().simple_type_spec ();
 
60776
  }
 
60777
#line 60778 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60778
 
 
60779
private:
 
60780
 
 
60781
#line 254 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60782
 
 
60783
  
 
60784
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60785
 
 
60786
public: template<class JoinPoint> void __a12_after 
 
60787
#line 255 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60788
 
 
60789
#line 255 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60790
(JoinPoint *tjp)
 
60791
#line 255 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60792
 {
 
60793
#line 60794 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60794
 
 
60795
  typedef typename JoinPoint::That __JP_That;
 
60796
  typedef typename JoinPoint::Target __JP_Target;
 
60797
  typedef typename JoinPoint::Result __JP_Result;
 
60798
 
 
60799
#line 255 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60800
 
 
60801
    Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
60802
    if (typeof_keyword && !result && tjp->that ()->look_ahead (Puma::TOK_TYPEOF) &&
 
60803
        tjp->that ()->parse (&__JP_That
 
60804
#line 258 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60805
::gnu_typeof))
 
60806
      result = tjp->that ()->semantic ().simple_type_spec ();
 
60807
  }
 
60808
#line 60809 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60809
 
 
60810
private:
 
60811
 
 
60812
#line 260 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60813
 
 
60814
 
 
60815
  // initialize the new state before an analysis starts
 
60816
  
 
60817
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60818
 
 
60819
public: void __a13_before 
 
60820
#line 264 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60821
 
 
60822
#line 264 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60823
(Puma::CSemDeclSpecs &csd)
 
60824
#line 264 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60825
 {
 
60826
    csd._typeofs = 0;
 
60827
    csd._typeof_node = 0;
 
60828
  }
 
60829
#line 60830 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60830
 
 
60831
private:
 
60832
 
 
60833
#line 267 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60834
 
 
60835
 
 
60836
  // make the analysis function aware of 'typeof'
 
60837
  
 
60838
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60839
 
 
60840
public: template<class JoinPoint> void __a14_after 
 
60841
#line 271 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60842
 
 
60843
#line 271 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60844
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd, Puma::CTree *spec)
 
60845
#line 271 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60846
 {
 
60847
#line 60848 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60848
 
 
60849
  typedef typename JoinPoint::That __JP_That;
 
60850
  typedef typename JoinPoint::Target __JP_Target;
 
60851
  typedef typename JoinPoint::Result __JP_Result;
 
60852
 
 
60853
#line 271 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60854
 
 
60855
    bool &result = *tjp->result ();
 
60856
    if (!result && spec->NodeName () == Puma::CT_GnuTypeof::NodeId ()) {
 
60857
      csd._typeofs++;
 
60858
      csd._typeof_node = (Puma::CT_GnuTypeof*)spec;
 
60859
      result = true;
 
60860
    }
 
60861
  }
 
60862
#line 60863 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60863
 
 
60864
private:
 
60865
 
 
60866
#line 278 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60867
 
 
60868
 
 
60869
  // make the check functions aware of 'typeof'
 
60870
  
 
60871
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60872
 
 
60873
public: template<class JoinPoint> void __a15_after 
 
60874
#line 283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60875
 
 
60876
#line 283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60877
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd, bool &have_type)
 
60878
#line 283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60879
 {
 
60880
#line 60881 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60881
 
 
60882
  typedef typename JoinPoint::That __JP_That;
 
60883
  typedef typename JoinPoint::Target __JP_Target;
 
60884
  typedef typename JoinPoint::Result __JP_Result;
 
60885
 
 
60886
#line 283 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60887
 
 
60888
    bool &result = *tjp->result ();
 
60889
    if (result && !have_type && csd._typeofs) {
 
60890
      have_type = true;
 
60891
      result    = true;
 
60892
    }
 
60893
  }
 
60894
#line 60895 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60895
 
 
60896
private:
 
60897
 
 
60898
#line 289 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60899
 
 
60900
 
 
60901
  
 
60902
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60903
 
 
60904
public: template<class JoinPoint> void __a16_after 
 
60905
#line 292 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60906
 
 
60907
#line 292 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60908
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd)
 
60909
#line 292 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60910
 {
 
60911
#line 60912 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60912
 
 
60913
  typedef typename JoinPoint::That __JP_That;
 
60914
  typedef typename JoinPoint::Target __JP_Target;
 
60915
  typedef typename JoinPoint::Result __JP_Result;
 
60916
 
 
60917
#line 292 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60918
 
 
60919
    bool &result = *tjp->result ();
 
60920
    if (result) {
 
60921
      if ((csd._prim_map[Puma::CT_PrimDeclSpec::PDS_SIGNED] ||
 
60922
           csd._prim_map[Puma::CT_PrimDeclSpec::PDS_UNSIGNED]) &&
 
60923
          csd._typeofs) {
 
60924
        *csd._err << Puma::sev_error << csd._dss->token ()->location ()
 
60925
                  << "`signed' or `unsigned' invalid for 'typeof'"
 
60926
                  << Puma::endMessage;
 
60927
        result = false;
 
60928
      }
 
60929
    }
 
60930
  }
 
60931
#line 60932 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60932
 
 
60933
private:
 
60934
 
 
60935
#line 304 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60936
 
 
60937
 
 
60938
  
 
60939
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60940
 
 
60941
public: template<class JoinPoint> void __a17_after 
 
60942
#line 307 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60943
 
 
60944
#line 307 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60945
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd)
 
60946
#line 307 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60947
 {
 
60948
#line 60949 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60949
 
 
60950
  typedef typename JoinPoint::That __JP_That;
 
60951
  typedef typename JoinPoint::Target __JP_Target;
 
60952
  typedef typename JoinPoint::Result __JP_Result;
 
60953
 
 
60954
#line 307 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60955
 
 
60956
    bool &result = *tjp->result ();
 
60957
    if (result && csd._typeofs > 0) {
 
60958
      *csd._err << Puma::sev_error << csd._dss->token ()->location ()
 
60959
                << "invalid type specified in declaration"
 
60960
                << Puma::endMessage;
 
60961
      result = false;
 
60962
    }
 
60963
  }
 
60964
#line 60965 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60965
 
 
60966
private:
 
60967
 
 
60968
#line 315 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60969
 
 
60970
 
 
60971
  // make the type creation function aware of 'typeof'
 
60972
  
 
60973
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60974
 
 
60975
public: template<class JoinPoint> void __a18_after 
 
60976
#line 319 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60977
 
 
60978
#line 319 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60979
(JoinPoint *tjp, Puma::CSemDeclSpecs &csd)
 
60980
#line 319 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60981
 {
 
60982
#line 60983 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60983
 
 
60984
  typedef typename JoinPoint::That __JP_That;
 
60985
  typedef typename JoinPoint::Target __JP_Target;
 
60986
  typedef typename JoinPoint::Result __JP_Result;
 
60987
 
 
60988
#line 319 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
60989
 
 
60990
    Puma::CTypeInfo *&result = *tjp->result ();
 
60991
    if (result->isUndefined () && csd._typeofs) {
 
60992
      csd._typeofs--;
 
60993
      if (csd._typeof_node->Type ()) {
 
60994
        result = Puma::CTypeInfo::Duplicate (csd._typeof_node->Type ());
 
60995
      }
 
60996
    }
 
60997
  }
 
60998
#line 60999 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
60999
 
 
61000
private:
 
61001
 
 
61002
#line 327 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61003
 
 
61004
 
 
61005
  // ----------------------
 
61006
  // GNU builtin functions
 
61007
  // ----------------------
 
61008
 
 
61009
  // structural extensions
 
61010
  
 
61011
#line 334 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61012
 
 
61013
 
 
61014
  
 
61015
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61016
 
 
61017
public: template<class JoinPoint> void __a19_after 
 
61018
#line 337 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61019
 
 
61020
#line 337 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61021
(JoinPoint *tjp)
 
61022
#line 337 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61023
 {
 
61024
#line 61025 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61025
 
 
61026
  typedef typename JoinPoint::That __JP_That;
 
61027
  typedef typename JoinPoint::Target __JP_Target;
 
61028
  typedef typename JoinPoint::Result __JP_Result;
 
61029
 
 
61030
#line 337 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61031
 
 
61032
    if (gnu_builtins)
 
61033
      tjp->that ()->define_gnu_builtins ();
 
61034
  }
 
61035
#line 61036 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61036
 
 
61037
private:
 
61038
 
 
61039
#line 340 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61040
 
 
61041
 
 
61042
  // ----------------------------------------------------
 
61043
  // std hack: if a lookup in 'std' fails, look into '::'
 
61044
  // ----------------------------------------------------
 
61045
 
 
61046
  
 
61047
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61048
 
 
61049
public: template<class JoinPoint> void __a20_before 
 
61050
#line 347 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61051
 
 
61052
#line 347 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61053
(JoinPoint *tjp)
 
61054
#line 347 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61055
 {
 
61056
#line 61057 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61057
 
 
61058
  typedef typename JoinPoint::That __JP_That;
 
61059
  typedef typename JoinPoint::Target __JP_Target;
 
61060
  typedef typename JoinPoint::Result __JP_Result;
 
61061
 
 
61062
#line 347 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61063
 
 
61064
    if (std_hack) {
 
61065
      Puma::CStructure *&scope = *(Puma::CStructure**)tjp->arg (0);
 
61066
      bool &nested = *(bool*)tjp->arg (1);
 
61067
      if (scope->Parent ()->GlobalScope () &&
 
61068
          strcmp (scope->Name (), "std") == 0)
 
61069
        nested = true;
 
61070
    }
 
61071
  }
 
61072
#line 61073 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61073
 
 
61074
private:
 
61075
 
 
61076
#line 355 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61077
 
 
61078
 
 
61079
  // ----------------------------------------------------
 
61080
  // friend injection of GCC before version 4.1
 
61081
  // ----------------------------------------------------
 
61082
 
 
61083
  
 
61084
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61085
 
 
61086
public: template<class JoinPoint> void __a21_around 
 
61087
#line 361 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61088
 
 
61089
#line 361 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61090
(JoinPoint *tjp)
 
61091
#line 361 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61092
 {
 
61093
#line 61094 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61094
 
 
61095
  typedef typename JoinPoint::That __JP_That;
 
61096
  typedef typename JoinPoint::Target __JP_Target;
 
61097
  typedef typename JoinPoint::Result __JP_Result;
 
61098
 
 
61099
#line 361 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61100
 
 
61101
    if (friend_injection)
 
61102
      *tjp->result () = false;  // friends are always visible
 
61103
    else
 
61104
      tjp->proceed ();
 
61105
  }
 
61106
#line 61107 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61107
 
 
61108
private:
 
61109
 
 
61110
#line 366 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61111
 
 
61112
 
 
61113
  // ----------------------------------------------------
 
61114
  // get the configuration and check whether the GNU mode is enabled
 
61115
  // ----------------------------------------------------
 
61116
 
 
61117
  bool get_gnu_version (const Puma::Config &config,
 
61118
    int &major, int &minor, int &patchlevel) {
 
61119
    const Puma::ConfOption *gnu_option = config.Option ("--gnu");
 
61120
    if (!gnu_option)
 
61121
      return false;
 
61122
    major = -1;
 
61123
    minor = -1;
 
61124
    patchlevel = -1;
 
61125
    const char *gnu_version_str =
 
61126
      (gnu_option->Arguments() == 1) ? gnu_option->Argument (0) : 0;
 
61127
    if (gnu_version_str) {
 
61128
      char sep;
 
61129
      istringstream in (gnu_version_str);
 
61130
      if (in.good()) in >> major;
 
61131
      if (in.good()) in >> sep >> minor;
 
61132
      if (in.good()) in >> sep >> patchlevel;
 
61133
    }
 
61134
    return true;
 
61135
  }
 
61136
 
 
61137
  
 
61138
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61139
 
 
61140
public: template<class JoinPoint> void __a22_after 
 
61141
#line 394 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61142
 
 
61143
#line 394 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61144
(JoinPoint *tjp, const Puma::Config &config)
 
61145
#line 394 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61146
 {
 
61147
#line 61148 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61148
 
 
61149
  typedef typename JoinPoint::That __JP_That;
 
61150
  typedef typename JoinPoint::Target __JP_Target;
 
61151
  typedef typename JoinPoint::Result __JP_Result;
 
61152
 
 
61153
#line 394 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61154
 
 
61155
    int gnu_major, gnu_minor, gnu_patchlevel;
 
61156
    // call get_gnu_version to check whether --gnu was given
 
61157
    if (get_gnu_version (config, gnu_major, gnu_minor, gnu_patchlevel)) {
 
61158
      if (gnu_major == -1 || (gnu_major >= 4 && gnu_minor >= 3)) {
 
61159
        // set the builtin type traits option (implemented by g++ >= 4.3)
 
61160
        tjp->that()->allow_type_traits (true);
 
61161
      }
 
61162
    }
 
61163
  }
 
61164
#line 61165 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61165
 
 
61166
private:
 
61167
 
 
61168
#line 403 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61169
 
 
61170
 
 
61171
  
 
61172
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61173
 
 
61174
public: void __a23_before 
 
61175
#line 406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61176
 
 
61177
#line 406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61178
(Puma::Config &config)
 
61179
#line 406 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61180
 {
 
61181
    int gnu_major, gnu_minor, gnu_patchlevel;
 
61182
    // call get_gnu_version to check whether --gnu was given
 
61183
    if (get_gnu_version (config, gnu_major, gnu_minor, gnu_patchlevel)) {
 
61184
      // settings for all gcc dialects
 
61185
      extended_asm     = true;
 
61186
      extended_cv_qual = true;
 
61187
      gnu_builtins     = true;
 
61188
      typeof_keyword   = true;
 
61189
      statement_exprs  = true;
 
61190
      labels_as_values = true;
 
61191
      extern_inline    = true;
 
61192
      thread_local_storage_class = true;
 
61193
 
 
61194
      if (gnu_major >= 0 && gnu_major < 3) {
 
61195
        std_hack         = true;
 
61196
        friend_injection = true;
 
61197
      }
 
61198
    }
 
61199
    // these options can be explicitely set even without --gnu
 
61200
    if (config.Option ("--gnu-extended-asm"))
 
61201
      extended_asm = true;
 
61202
    if (config.Option ("--gnu-std-hack"))
 
61203
      std_hack = true;
 
61204
    if (config.Option ("--gnu-friend-injection"))
 
61205
      friend_injection = true;
 
61206
  }
 
61207
#line 61208 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61208
 
 
61209
private:
 
61210
 
 
61211
#line 432 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61212
 
 
61213
 
 
61214
  // --------------------------------------------------
 
61215
  // support for unnamed struct/union members
 
61216
  // --------------------------------------------------
 
61217
 
 
61218
  
 
61219
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61220
 
 
61221
public: template<class JoinPoint> void __a24_around 
 
61222
#line 438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61223
 
 
61224
#line 438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61225
(JoinPoint *tjp)
 
61226
#line 438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61227
 {
 
61228
#line 61229 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61229
 
 
61230
  typedef typename JoinPoint::That __JP_That;
 
61231
  typedef typename JoinPoint::Target __JP_Target;
 
61232
  typedef typename JoinPoint::Result __JP_Result;
 
61233
 
 
61234
#line 438 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61235
 
 
61236
    // 2: type_spec_seq                          ;
 
61237
    // 3: type_spec_seq  member_declarator_list  ;
 
61238
    Puma::CTree *&result = *(Puma::CTree**)tjp->result ();
 
61239
    if (! (tjp->that ()->parse (&__JP_That
 
61240
#line 442 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61241
::type_spec_seq) &&
 
61242
           tjp->that ()->opt(tjp->that ()->parse (&__JP_That
 
61243
#line 443 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61244
::member_declarator_list)) &&
 
61245
           tjp->that ()->parse (Puma::TOK_SEMI_COLON))) {
 
61246
      result = (Puma::CTree*)0;
 
61247
    } else {
 
61248
      tjp->that ()->semantic ().finish_decl ();
 
61249
      result = tjp->that ()->builder ().member_decl ();
 
61250
    }
 
61251
  }
 
61252
#line 61253 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61253
 
 
61254
private:
 
61255
 
 
61256
#line 450 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61257
 
 
61258
 
 
61259
  // --------------------------------------------------
 
61260
  // GNU defined macros
 
61261
  // --------------------------------------------------
 
61262
 
 
61263
  
 
61264
#line 3 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61265
 
 
61266
public: template<class JoinPoint> void __a25_after 
 
61267
#line 456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61268
 
 
61269
#line 456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61270
(JoinPoint *tjp)
 
61271
#line 456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61272
 {
 
61273
#line 61274 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61274
 
 
61275
  typedef typename JoinPoint::That __JP_That;
 
61276
  typedef typename JoinPoint::Target __JP_Target;
 
61277
  typedef typename JoinPoint::Result __JP_Result;
 
61278
 
 
61279
#line 456 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61280
 
 
61281
    // GNU defines
 
61282
    tjp->that ()->defUndefinedMacro ("__GNUC__", "2");
 
61283
    tjp->that ()->defUndefinedMacro ("__GNUC_MINOR__", "8");
 
61284
    tjp->that ()->defUndefinedMacro ("_GLIBCPP_EXTERN_TEMPLATE", "0");
 
61285
    tjp->that ()->defUndefinedMacro ("__null", "0");
 
61286
    tjp->that ()->defUndefinedMacro ("__extension__", " ");
 
61287
    tjp->that ()->defUndefinedMacro ("_WCHAR_T_", " ");
 
61288
    // attributes
 
61289
    if (! tjp->that ()->_macroManager->getMacro ("__attribute__")) {
 
61290
      Puma::PreMacro::MacroArgs *args = new Puma::PreMacro::MacroArgs ();
 
61291
      args->append ("par1");
 
61292
      tjp->that ()->_macroManager->addMacro (new Puma::PreMacro ("__attribute__", args, " "));
 
61293
    }
 
61294
    if (! tjp->that ()->_macroManager->getMacro ("__attribute")) {
 
61295
      Puma::PreMacro::MacroArgs *args = new Puma::PreMacro::MacroArgs ();
 
61296
      args->append ("par1");
 
61297
      tjp->that ()->_macroManager->addMacro (new Puma::PreMacro ("__attribute", args, " "));
 
61298
    }
 
61299
    // variable argument list access
 
61300
    if (! tjp->that ()->_macroManager->getMacro ("__builtin_va_arg")) {
 
61301
      Puma::PreMacro::MacroArgs *args = new Puma::PreMacro::MacroArgs ();
 
61302
      args->append ("par1");
 
61303
      args->append ("par2");
 
61304
      tjp->that ()->_macroManager->addMacro (new Puma::PreMacro ("__builtin_va_arg", args,
 
61305
        "((par2)__builtin_va_arg_helper(par1))"));
 
61306
    }
 
61307
 
 
61308
    // atomic memory access built-in functions
 
61309
 
 
61310
    // #define __sync_...(arg,...) *(typeof(arg))__generic_sync_...(arg, ## __VA_ARGS__)
 
61311
    #define __puma_defSyncMacro(opname) \
 
61312
    if (! tjp->that ()->_macroManager->getMacro ("__sync_" opname)) { \
 
61313
      Puma::PreMacro::MacroArgs *args = new Puma::PreMacro::MacroArgs (2); \
 
61314
      args->append ("par1"); \
 
61315
      args->append ("__VA_ARGS__"); \
 
61316
      tjp->that ()->_macroManager->addMacro (new Puma::PreMacro ("__sync_" opname, args, \
 
61317
        "*(typeof(par1))__generic_sync_" opname "(par1, ## __VA_ARGS__)", Puma::PreMacro::VAR_ARG_MACRO)); \
 
61318
    }
 
61319
    __puma_defSyncMacro("fetch_and_add");
 
61320
    __puma_defSyncMacro("fetch_and_add");
 
61321
    __puma_defSyncMacro("fetch_and_sub");
 
61322
    __puma_defSyncMacro("fetch_and_or");
 
61323
    __puma_defSyncMacro("fetch_and_and");
 
61324
    __puma_defSyncMacro("fetch_and_xor");
 
61325
    __puma_defSyncMacro("fetch_and_nand");
 
61326
    __puma_defSyncMacro("add_and_fetch");
 
61327
    __puma_defSyncMacro("sub_and_fetch");
 
61328
    __puma_defSyncMacro("or_and_fetch");
 
61329
    __puma_defSyncMacro("and_and_fetch");
 
61330
    __puma_defSyncMacro("xor_and_fetch");
 
61331
    __puma_defSyncMacro("nand_and_fetch");
 
61332
    __puma_defSyncMacro("val_compare_and_swap");
 
61333
    __puma_defSyncMacro("lock_test_and_set");
 
61334
 
 
61335
    // built-in versions of the ISO C99 floating point comparison macros
 
61336
    // map to its originals
 
61337
    tjp->that ()->defUndefinedMacro ("__builtin_isgreater", "isgreater");
 
61338
    tjp->that ()->defUndefinedMacro ("__builtin_isgreaterequal", "isgreaterequal");
 
61339
    tjp->that ()->defUndefinedMacro ("__builtin_isless", "isless");
 
61340
    tjp->that ()->defUndefinedMacro ("__builtin_islessequal", "islessequal");
 
61341
    tjp->that ()->defUndefinedMacro ("__builtin_islessgreater", "islessgreater");
 
61342
    tjp->that ()->defUndefinedMacro ("__builtin_isunordered", "isunordered");
 
61343
 
 
61344
    // implementation of ?: without side effects in not chosen alternative
 
61345
    // type __builtin_choose_expr (const_exp, exp1, exp2)
 
61346
    if (! tjp->that ()->_macroManager->getMacro ("__builtin_choose_expr")) {
 
61347
      Puma::PreMacro::MacroArgs *args = new Puma::PreMacro::MacroArgs ();
 
61348
      args->append ("const_exp");
 
61349
      args->append ("exp1");
 
61350
      args->append ("exp2");
 
61351
      tjp->that ()->_macroManager->addMacro (new Puma::PreMacro ("__builtin_choose_expr", args, "(exp1)"));
 
61352
    }
 
61353
  }
 
61354
#line 61355 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61355
 
 
61356
private:
 
61357
 
 
61358
#line 529 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61359
 
 
61360
 
 
61361
protected:
 
61362
  ExtGnu () :
 
61363
    extended_asm (false),
 
61364
    extended_cv_qual (false),
 
61365
    gnu_builtins (false),
 
61366
    std_hack (false),
 
61367
    typeof_keyword (false),
 
61368
    statement_exprs (false),
 
61369
    labels_as_values (false),
 
61370
    thread_local_storage_class (false),
 
61371
    friend_injection (false),
 
61372
    extern_inline (false)
 
61373
  {}
 
61374
public:
 
61375
  typedef AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TL<bool,AC::TLE > > > > > > > > > > __AttrTypes;
 
61376
  const char *__attr_name (unsigned i) const {
 
61377
    static const char *names[] = { "extended_asm", "extended_cv_qual", "gnu_builtins", "std_hack", "typeof_keyword", "statement_exprs", "labels_as_values", "thread_local_storage_class", "friend_injection", "extern_inline" }; return names[i];
 
61378
  }
 
61379
  const void *__attr (unsigned __i) const {
 
61380
    switch (__i) { case 0: return &extended_asm; case 1: return &extended_cv_qual; case 2: return &gnu_builtins; case 3: return &std_hack; case 4: return &typeof_keyword; case 5: return &statement_exprs; case 6: return &labels_as_values; case 7: return &thread_local_storage_class; case 8: return &friend_injection; case 9: return &extern_inline; default: return 0; }
 
61381
  }
 
61382
#line 544 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61383
};
 
61384
#line 61385 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step2/src/CProject.cc"
 
61385
 
 
61386
namespace AC {
 
61387
  template <class JoinPoint>
 
61388
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a0_around (JoinPoint *tjp) {
 
61389
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a0_around::template Arg<0> Arg0;
 
61390
    ::ExtGnu::aspectof()->__a0_around (tjp, (Puma::CSyntax *)Arg0::val (tjp));
 
61391
  }
 
61392
  template <class JoinPoint>
 
61393
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a1_after (JoinPoint *tjp) {
 
61394
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a1_after::template Arg<0> Arg0;
 
61395
    ::ExtGnu::aspectof()->__a1_after (tjp, (Puma::CSyntax *)Arg0::val (tjp));
 
61396
  }
 
61397
  template <class JoinPoint>
 
61398
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a2_around (JoinPoint *tjp) {
 
61399
    ::ExtGnu::aspectof()->__a2_around (tjp);
 
61400
  }
 
61401
  template <class JoinPoint>
 
61402
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a3_after (JoinPoint *tjp) {
 
61403
    ::ExtGnu::aspectof()->__a3_after (tjp);
 
61404
  }
 
61405
  template <class JoinPoint>
 
61406
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a4_around (JoinPoint *tjp) {
 
61407
    ::ExtGnu::aspectof()->__a4_around (tjp);
 
61408
  }
 
61409
  template <class JoinPoint>
 
61410
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a5_around (JoinPoint *tjp) {
 
61411
    ::ExtGnu::aspectof()->__a5_around (tjp);
 
61412
  }
 
61413
  template <class JoinPoint>
 
61414
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a6_around (JoinPoint *tjp) {
 
61415
    ::ExtGnu::aspectof()->__a6_around (tjp);
 
61416
  }
 
61417
  template <class JoinPoint>
 
61418
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a7_around (JoinPoint *tjp) {
 
61419
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a7_around::template Arg<0> Arg0;
 
61420
    ::ExtGnu::aspectof()->__a7_around (tjp, (Puma::CTree *)Arg0::val (tjp));
 
61421
  }
 
61422
  template <class JoinPoint>
 
61423
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a8_around (JoinPoint *tjp) {
 
61424
    ::ExtGnu::aspectof()->__a8_around (tjp);
 
61425
  }
 
61426
  template <class JoinPoint>
 
61427
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a9_after (JoinPoint *tjp) {
 
61428
    ::ExtGnu::aspectof()->__a9_after (tjp);
 
61429
  }
 
61430
  template <class JoinPoint>
 
61431
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a10_after (JoinPoint *tjp) {
 
61432
    ::ExtGnu::aspectof()->__a10_after (tjp);
 
61433
  }
 
61434
  template <class JoinPoint>
 
61435
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a11_after (JoinPoint *tjp) {
 
61436
    ::ExtGnu::aspectof()->__a11_after (tjp);
 
61437
  }
 
61438
  template <class JoinPoint>
 
61439
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a12_after (JoinPoint *tjp) {
 
61440
    ::ExtGnu::aspectof()->__a12_after (tjp);
 
61441
  }
 
61442
  template <class JoinPoint>
 
61443
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a13_before (JoinPoint *tjp) {
 
61444
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a13_before::template Arg<0> Arg0;
 
61445
    ::ExtGnu::aspectof()->__a13_before ((Puma::CSemDeclSpecs &)Arg0::val (tjp));
 
61446
  }
 
61447
  template <class JoinPoint>
 
61448
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a14_after (JoinPoint *tjp) {
 
61449
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a14_after::template Arg<0> Arg0;
 
61450
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a14_after::template Arg<1> Arg1;
 
61451
    ::ExtGnu::aspectof()->__a14_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp), (Puma::CTree *)Arg1::val (tjp));
 
61452
  }
 
61453
  template <class JoinPoint>
 
61454
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a15_after (JoinPoint *tjp) {
 
61455
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a15_after::template Arg<0> Arg0;
 
61456
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a15_after::template Arg<1> Arg1;
 
61457
    ::ExtGnu::aspectof()->__a15_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp), (bool &)Arg1::val (tjp));
 
61458
  }
 
61459
  template <class JoinPoint>
 
61460
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a16_after (JoinPoint *tjp) {
 
61461
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a16_after::template Arg<0> Arg0;
 
61462
    ::ExtGnu::aspectof()->__a16_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp));
 
61463
  }
 
61464
  template <class JoinPoint>
 
61465
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a17_after (JoinPoint *tjp) {
 
61466
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a17_after::template Arg<0> Arg0;
 
61467
    ::ExtGnu::aspectof()->__a17_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp));
 
61468
  }
 
61469
  template <class JoinPoint>
 
61470
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a18_after (JoinPoint *tjp) {
 
61471
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a18_after::template Arg<0> Arg0;
 
61472
    ::ExtGnu::aspectof()->__a18_after (tjp, (Puma::CSemDeclSpecs &)Arg0::val (tjp));
 
61473
  }
 
61474
  template <class JoinPoint>
 
61475
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a19_after (JoinPoint *tjp) {
 
61476
    ::ExtGnu::aspectof()->__a19_after (tjp);
 
61477
  }
 
61478
  template <class JoinPoint>
 
61479
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a20_before (JoinPoint *tjp) {
 
61480
    ::ExtGnu::aspectof()->__a20_before (tjp);
 
61481
  }
 
61482
  template <class JoinPoint>
 
61483
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a21_around (JoinPoint *tjp) {
 
61484
    ::ExtGnu::aspectof()->__a21_around (tjp);
 
61485
  }
 
61486
  template <class JoinPoint>
 
61487
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a22_after (JoinPoint *tjp) {
 
61488
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a22_after::template Arg<0> Arg0;
 
61489
    ::ExtGnu::aspectof()->__a22_after (tjp, (const Puma::Config &)Arg0::val (tjp));
 
61490
  }
 
61491
  template <class JoinPoint>
 
61492
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a23_before (JoinPoint *tjp) {
 
61493
    typedef typename JoinPoint::Binding_ExtGnu_ExtGnu_a23_before::template Arg<0> Arg0;
 
61494
    ::ExtGnu::aspectof()->__a23_before ((Puma::Config &)Arg0::val (tjp));
 
61495
  }
 
61496
  template <class JoinPoint>
 
61497
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a24_around (JoinPoint *tjp) {
 
61498
    ::ExtGnu::aspectof()->__a24_around (tjp);
 
61499
  }
 
61500
  template <class JoinPoint>
 
61501
  __attribute((always_inline)) inline void invoke_ExtGnu_ExtGnu_a25_after (JoinPoint *tjp) {
 
61502
    ::ExtGnu::aspectof()->__a25_after (tjp);
 
61503
  }
 
61504
 
61505
 
 
61506
#line 544 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61507
 
 
61508
 
 
61509
 
 
61510
// ----------------------------------------------------
 
61511
// the Gnu ASM syntax
 
61512
// ----------------------------------------------------
 
61513
 
 
61514
// add rules to the C Syntax
 
61515
 
 
61516
#line 560 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61517
 
 
61518
 
 
61519
 
 
61520
#line 568 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61521
 
 
61522
 
 
61523
 
 
61524
#line 583 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61525
 
 
61526
 
 
61527
 
 
61528
#line 589 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61529
 
 
61530
 
 
61531
 
 
61532
#line 593 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61533
 
 
61534
 
 
61535
 
 
61536
#line 599 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61537
 
 
61538
 
 
61539
 
 
61540
#line 605 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61541
 
 
61542
 
 
61543
// extend the C Builder
 
61544
 
 
61545
#line 616 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61546
 
 
61547
 
 
61548
 
 
61549
#line 621 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61550
 
 
61551
 
 
61552
 
 
61553
#line 635 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61554
 
 
61555
 
 
61556
 
 
61557
#line 639 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61558
 
 
61559
 
 
61560
 
 
61561
#line 643 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61562
 
 
61563
 
 
61564
 
 
61565
#line 648 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61566
 
 
61567
 
 
61568
 
 
61569
#line 652 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61570
 
 
61571
 
 
61572
// -------------------------
 
61573
// Gnu statement expressions
 
61574
// -------------------------
 
61575
 
 
61576
// C Builder extension
 
61577
 
 
61578
#line 662 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61579
 
 
61580
 
 
61581
 
 
61582
#line 666 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61583
 
 
61584
 
 
61585
// C semantic extension
 
61586
 
 
61587
#line 672 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61588
 
 
61589
 
 
61590
// the necessary #include "..CSemVisitor.h" in CSemExpr.cc will is inserted
 
61591
// manually (for now)!
 
61592
 
 
61593
#line 706 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61594
 
 
61595
 
 
61596
// C++ semantic extension
 
61597
 
 
61598
#line 712 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61599
 
 
61600
 
 
61601
// the necessary #include "..CCSemVisitor.h" in CCSemExpr.cc will is inserted
 
61602
// manually (for now)!
 
61603
 
 
61604
#line 746 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61605
 
 
61606
 
 
61607
// ----------------------
 
61608
// TYPEOF keyword support
 
61609
// ----------------------
 
61610
 
 
61611
// add rules to the C Syntax for the Gnu Typeof syntax
 
61612
 
 
61613
#line 756 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61614
 
 
61615
 
 
61616
 
 
61617
#line 762 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61618
 
 
61619
 
 
61620
// add rules to the C Builder for the Gnu Typeof syntax
 
61621
 
 
61622
#line 768 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61623
 
 
61624
 
 
61625
// builder extension
 
61626
 
 
61627
#line 781 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61628
 
 
61629
 
 
61630
// C semantic extension
 
61631
 
 
61632
#line 787 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61633
 
 
61634
 
 
61635
 
 
61636
#line 805 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61637
 
 
61638
 
 
61639
// C++ semantic extension
 
61640
 
 
61641
#line 811 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61642
 
 
61643
 
 
61644
 
 
61645
#line 828 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61646
 
 
61647
 
 
61648
 
 
61649
// ----------------------
 
61650
// Gnu builtin functions
 
61651
// ----------------------
 
61652
 
 
61653
// extend the C/C++ semantic
 
61654
 
 
61655
#line 839 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61656
 
 
61657
 
 
61658
 
 
61659
#line 1350 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/aspects/ExtGnu.ah"
 
61660
 
 
61661
 
 
61662
 
 
61663
#endif /* __ext_gnu_h__ */
 
61664
 
 
61665
#line 179 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
61666
#endif
 
61667
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
61668
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13761
61669
#include "PragmaOnceUnitState.ah"
13762
61670
#endif
13763
61671
#endif
13764
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
13765
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
13766
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
61672
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
61673
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
61674
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
13767
61675
#include "ExtACTree.ah"
13768
61676
#endif
13769
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
13770
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
61677
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
61678
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnu_ah__
13771
61679
#include "ExtGnu.ah"
13772
61680
#endif
13773
 
#endif
13774
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
13775
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
13776
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
61681
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
61682
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
61683
#include "PragmaOnceUnitState.ah"
 
61684
#endif
 
61685
#endif
 
61686
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
61687
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
61688
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtACTree_ah__
13777
61689
#include "ExtACTree.ah"
13778
61690
#endif
13779
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
13780
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
61691
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
 
61692
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_ExtGnuCSemDeclSpecs_ah__
13781
61693
#include "ExtGnuCSemDeclSpecs.ah"
13782
61694
#endif
13783
61695
#endif
13784
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13785
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13786
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13787
 
#include "PragmaOnceUnitState.ah"
13788
 
#endif
13789
 
#endif
13790
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
13791
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13792
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
13793
 
#include "PragmaOnceUnitState.ah"
13794
 
#endif
13795
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
13796
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
61696
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
61697
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
61698
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
61699
#include "PragmaOnceUnitState.ah"
 
61700
#endif
 
61701
#endif
 
61702
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
61703
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
61704
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
61705
#include "PragmaOnceUnitState.ah"
 
61706
#endif
 
61707
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
61708
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_PragmaOnce_ah__
13797
61709
 
13798
 
#line 203 "/home/inf4/tartler/src/aspectc++/upstream/Puma/gen-release/step1/src/CProject.cc"
13799
 
#endif
13800
 
#endif
13801
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_TraceSyntax_ah__
13802
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_TraceSyntax_ah__
13803
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
61710
#line 223 "/tmp/tmp.LKCULpBdih/aspectc++.svn20090615/Puma/gen-release/step1/src/CProject.cc"
 
61711
#endif
 
61712
#endif
 
61713
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
61714
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
61715
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_TraceSyntax_ah__
13804
61716
#include "TraceSyntax.ah"
13805
61717
#endif
13806
61718
#endif
13807
 
#ifdef __ac_need__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
13808
 
#ifndef __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
13809
 
#define __ac_have__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
61719
#ifdef __ac_need__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
61720
#ifndef __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
61721
#define __ac_have__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
13810
61722
#include "CMatchSyntax.ah"
13811
61723
#endif
13812
61724
#endif
13813
 
#undef __ac_FIRST__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1__
13814
 
#undef __ac_FIRST_FILE__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_src_CProject_cc__
13815
 
#endif // __ac_FIRST_FILE__home_inf4_tartler_src_aspectc4343_upstream_Puma_gen45release_step1_src_CProject_cc__
 
61725
#undef __ac_FIRST__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1__
 
61726
#undef __ac_FIRST_FILE__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_src_CProject_cc__
 
61727
#endif // __ac_FIRST_FILE__tmp_tmp_LKCULpBdih_aspectc4343_svn20090615_Puma_gen45release_step1_src_CProject_cc__