~ubuntu-branches/ubuntu/natty/aspectc++/natty

« back to all changes in this revision

Viewing changes to Puma/gen-release/step2/inc/Puma/WinIfExists.ah

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

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
#ifndef __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
2
#define __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
3
#define __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
4
 
 
5
#ifndef __ac_h_
 
6
#define __ac_h_
 
7
namespace AC {
 
8
  typedef const char* Type;
 
9
  enum JPType { CALL = 0x0004, EXECUTION = 0x0008, CONSTRUCTION = 0x0010, DESTRUCTION = 0x0020 };
 
10
  struct Action {
 
11
    void **_args; void *_result; void *_target; void *_that; void *_fptr;
 
12
    void (*_wrapper)(Action &);
 
13
    inline void trigger () { _wrapper (*this); }
 
14
  };
 
15
  struct AnyResultBuffer {};
 
16
  template <typename T> struct ResultBuffer : public AnyResultBuffer {
 
17
    char _data[sizeof (T)];
 
18
    ~ResultBuffer () { ((T*)_data)->T::~T(); }
 
19
    operator T& () const { return *(T*)_data; }
 
20
  };
 
21
  template <class Aspect, int Index>
 
22
  struct CFlow {
 
23
    static int &instance () {
 
24
      static int counter = 0;
 
25
      return counter;
 
26
    }
 
27
    CFlow () { instance ()++; }
 
28
    ~CFlow () { instance ()--; }
 
29
    static bool active () { return instance () > 0; }
 
30
  };
 
31
}
 
32
inline void * operator new (__SIZE_TYPE__, AC::AnyResultBuffer *p) { return p; }
 
33
inline void operator delete (void *, AC::AnyResultBuffer *) { } // for VC++
 
34
#endif // __ac_h_
 
35
#endif // __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
36
 
 
37
#line 1 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
38
// This file is part of PUMA.
 
39
// Copyright (C) 1999-2003  The PUMA developer team.
 
40
//                                                                
 
41
// This program is free software;  you can redistribute it and/or 
 
42
// modify it under the terms of the GNU General Public License as 
 
43
// published by the Free Software Foundation; either version 2 of 
 
44
// the License, or (at your option) any later version.            
 
45
//                                                                
 
46
// This program is distributed in the hope that it will be useful,
 
47
// but WITHOUT ANY WARRANTY; without even the implied warranty of 
 
48
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  
 
49
// GNU General Public License for more details.                   
 
50
//                                                                
 
51
// You should have received a copy of the GNU General Public      
 
52
// License along with this program; if not, write to the Free     
 
53
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, 
 
54
// MA  02111-1307  USA                                            
 
55
 
 
56
#ifndef __WinIfExists__
 
57
#define __WinIfExists__
 
58
 
 
59
/********************************************************/
 
60
/* Win __if_exists and __if_not_exists support aspect   */
 
61
/********************************************************/
 
62
 
 
63
#include "Puma/Stack.h"
 
64
#include "Puma/CTokens.h"
 
65
#include "Puma/Token.h"
 
66
 
 
67
using namespace Puma;
 
68
 
 
69
 
 
70
 
 
71
#line 72 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
 
72
class WinImportHandler;
 
73
class WinMacros;
 
74
class CMatchSyntax;
 
75
class ExtGnu;
 
76
class ExtAC;
 
77
class ExtACTree;
 
78
class WinAsm;
 
79
class WinDeclSpecs;
 
80
class WinMemberExplSpec;
 
81
class WinTypeKeywords;
 
82
class PragmaOnceUnitState;
 
83
class PragmaOnce;
 
84
class CCExprResolve;
 
85
class CExprResolve;
 
86
 
 
87
#line 33 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
88
class WinIfExists {
 
89
#line 90 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
 
90
 
 
91
public:
 
92
  static WinIfExists *aspectof () {
 
93
    static WinIfExists __instance;
 
94
    return &__instance;
 
95
  }
 
96
  static WinIfExists *aspectOf () {
 
97
    return aspectof ();
 
98
  }
 
99
private:
 
100
 
 
101
#line 33 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
102
 
 
103
#line 104 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
 
104
  friend class ::WinImportHandler;
 
105
  friend class ::WinMacros;
 
106
  friend class ::CMatchSyntax;
 
107
  friend class ::ExtGnu;
 
108
  friend class ::ExtAC;
 
109
  friend class ::ExtACTree;
 
110
  friend class ::WinAsm;
 
111
  friend class ::WinDeclSpecs;
 
112
  friend class ::WinMemberExplSpec;
 
113
  friend class ::WinTypeKeywords;
 
114
  friend class ::PragmaOnceUnitState;
 
115
  friend class ::PragmaOnce;
 
116
  friend class ::CCExprResolve;
 
117
  friend class ::CExprResolve;
 
118
 
 
119
#line 33 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
120
 
 
121
  /********************************************************/
 
122
  /* Win __if_exists and __if_not_exists                  */
 
123
  /********************************************************/
 
124
 
 
125
  // pointcut definitions
 
126
  
 
127
#line 39 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
128
 
 
129
  
 
130
  // introduce data member into preprocessor
 
131
  
 
132
#line 42 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
133
 
 
134
 
 
135
  // introduce method into preprocessor
 
136
  
 
137
#line 45 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
138
 
 
139
 
 
140
  // preprocess __if_exists and __if_not_exists statements
 
141
  
 
142
#line 3 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
143
 
 
144
public: template<class JoinPoint> void __a0_around 
 
145
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
146
(JoinPoint *tjp)
 
147
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
148
 
 
149
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
150
 {
 
151
#line 152 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
 
152
 
 
153
  JoinPoint *&thisJoinPoint = tjp;
 
154
 
 
155
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
156
 
 
157
#line 158 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
 
158
 
 
159
  typedef typename JoinPoint::That __JP_That;
 
160
  typedef typename JoinPoint::Target __JP_Target;
 
161
  typedef typename JoinPoint::Result __JP_Result;
 
162
 
 
163
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
164
 
 
165
    Token *token;
 
166
    int type;
 
167
    __JP_That
 
168
#line 51 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
169
 *preparser;
 
170
  
 
171
        preparser = tjp->that ();
 
172
    tjp->proceed (); // get the next token
 
173
    token = *tjp->result ();
 
174
    if (token) {
 
175
      type = token->type ();
 
176
      // __if_exists (...) { ... }
 
177
      if (type == TOK_IF_EXISTS) {
 
178
        preparser->skip_up_to (TOK_CLOSE_CURLY);
 
179
                    *(Token**)thisJoinPoint->result () = preparser->next ();
 
180
                    return;
 
181
        // __if_not_exists (...) { ... }
 
182
      } else if (type == TOK_IF_NOT_EXISTS) {
 
183
        preparser->skip_up_to (TOK_OPEN_CURLY);
 
184
        preparser->_depth.push (1);
 
185
                    *(Token**)thisJoinPoint->result () = preparser->next ();
 
186
                    return;
 
187
      }
 
188
      // skip closing `}' of __if_not_exists
 
189
      if (preparser->_depth.length ()) {
 
190
        if (type == TOK_OPEN_CURLY) 
 
191
          preparser->_depth.top () = preparser->_depth.top () + 1;
 
192
        else if (type == TOK_CLOSE_CURLY) { 
 
193
          preparser->_depth.top () = preparser->_depth.top () - 1;
 
194
                    if (preparser->_depth.top () == 0) {
 
195
                  preparser->_depth.pop ();
 
196
                  *(Token**)thisJoinPoint->result () = preparser->next ();
 
197
                  return;
 
198
                    }
 
199
        }
 
200
      }
 
201
    }
 
202
  }
 
203
#line 204 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
 
204
 
 
205
private:
 
206
 
 
207
#line 84 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
208
 
 
209
 
 
210
protected:
 
211
  WinIfExists () {}
 
212
};
 
213
#line 214 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
 
214
 
 
215
namespace AC {
 
216
  template <class JoinPoint>
 
217
  inline void invoke_WinIfExists_WinIfExists_a0_around (JoinPoint *tjp) {
 
218
    ::WinIfExists::aspectof()->__a0_around (tjp);
 
219
  }
 
220
 
221
 
 
222
#line 88 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
223
 
 
224
 
 
225
// skip __if_exists resp. __if_not_exists statement
 
226
 
 
227
#line 128 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
 
228
 
 
229
 
 
230
 
 
231
#endif /* __WinIfExists__ */
 
232
 
 
233
#line 234 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
 
234
 
 
235
#ifdef __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
236
/*** begin of aspect includes ***/
 
237
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__)
 
238
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
239
#include "WinIfExists.ah"
 
240
#endif
 
241
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinImportHandler_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinImportHandler_ah__)
 
242
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinImportHandler_ah__
 
243
#include "WinImportHandler.ah"
 
244
#endif
 
245
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMacros_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMacros_ah__)
 
246
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMacros_ah__
 
247
#include "WinMacros.ah"
 
248
#endif
 
249
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CMatchSyntax_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CMatchSyntax_ah__)
 
250
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
 
251
#include "CMatchSyntax.ah"
 
252
#endif
 
253
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtGnu_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtGnu_ah__)
 
254
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtGnu_ah__
 
255
#include "ExtGnu.ah"
 
256
#endif
 
257
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtAC_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtAC_ah__)
 
258
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtAC_ah__
 
259
#include "ExtAC.ah"
 
260
#endif
 
261
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtACTree_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtACTree_ah__)
 
262
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_ExtACTree_ah__
 
263
#include "ExtACTree.ah"
 
264
#endif
 
265
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_TraceSyntax_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_TraceSyntax_ah__)
 
266
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_TraceSyntax_ah__
 
267
#include "TraceSyntax.ah"
 
268
#endif
 
269
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinAsm_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinAsm_ah__)
 
270
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinAsm_ah__
 
271
#include "WinAsm.ah"
 
272
#endif
 
273
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__)
 
274
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
 
275
#include "WinDeclSpecs.ah"
 
276
#endif
 
277
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__)
 
278
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
 
279
#include "WinMemberExplSpec.ah"
 
280
#endif
 
281
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__)
 
282
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
 
283
#include "WinTypeKeywords.ah"
 
284
#endif
 
285
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__)
 
286
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
 
287
#include "PragmaOnceUnitState.ah"
 
288
#endif
 
289
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnce_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnce_ah__)
 
290
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_PragmaOnce_ah__
 
291
#include "PragmaOnce.ah"
 
292
#endif
 
293
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CCExprResolve_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CCExprResolve_ah__)
 
294
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CCExprResolve_ah__
 
295
#include "CCExprResolve.ah"
 
296
#endif
 
297
#if !defined(__ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CExprResolve_ah__) && defined(__ac_need__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CExprResolve_ah__)
 
298
#define __ac_have__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_CExprResolve_ah__
 
299
#include "CExprResolve.ah"
 
300
#endif
 
301
/*** end of aspect includes ***/
 
302
#undef __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
 
303
#undef __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__
 
304
#endif // __ac_FIRST_FILE__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1_aspects_WinIfExists_ah__