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__
8
typedef const char* Type;
9
enum JPType { CALL = 0x0004, EXECUTION = 0x0008, CONSTRUCTION = 0x0010, DESTRUCTION = 0x0020 };
11
void **_args; void *_result; void *_target; void *_that; void *_fptr;
12
void (*_wrapper)(Action &);
13
inline void trigger () { _wrapper (*this); }
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; }
21
template <class Aspect, int Index>
23
static int &instance () {
24
static int counter = 0;
27
CFlow () { instance ()++; }
28
~CFlow () { instance ()--; }
29
static bool active () { return instance () > 0; }
32
inline void * operator new (__SIZE_TYPE__, AC::AnyResultBuffer *p) { return p; }
33
inline void operator delete (void *, AC::AnyResultBuffer *) { } // for VC++
35
#endif // __ac_FIRST__home_inf4_spinczyk_ac45woven451_0pre2_Puma_gen45release_step1__
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.
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.
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.
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,
56
#ifndef __WinIfExists__
57
#define __WinIfExists__
59
/********************************************************/
60
/* Win __if_exists and __if_not_exists support aspect */
61
/********************************************************/
63
#include "Puma/Stack.h"
64
#include "Puma/CTokens.h"
65
#include "Puma/Token.h"
71
#line 72 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
72
class WinImportHandler;
80
class WinMemberExplSpec;
81
class WinTypeKeywords;
82
class PragmaOnceUnitState;
87
#line 33 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
89
#line 90 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
92
static WinIfExists *aspectof () {
93
static WinIfExists __instance;
96
static WinIfExists *aspectOf () {
101
#line 33 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
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;
119
#line 33 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
121
/********************************************************/
122
/* Win __if_exists and __if_not_exists */
123
/********************************************************/
125
// pointcut definitions
127
#line 39 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
130
// introduce data member into preprocessor
132
#line 42 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
135
// introduce method into preprocessor
137
#line 45 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
140
// preprocess __if_exists and __if_not_exists statements
142
#line 3 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
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"
147
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
149
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
151
#line 152 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
153
JoinPoint *&thisJoinPoint = tjp;
155
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
157
#line 158 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
159
typedef typename JoinPoint::That __JP_That;
160
typedef typename JoinPoint::Target __JP_Target;
161
typedef typename JoinPoint::Result __JP_Result;
163
#line 48 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
168
#line 51 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
171
preparser = tjp->that ();
172
tjp->proceed (); // get the next token
173
token = *tjp->result ();
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 ();
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 ();
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 ();
203
#line 204 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
207
#line 84 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
213
#line 214 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
216
template <class JoinPoint>
217
inline void invoke_WinIfExists_WinIfExists_a0_around (JoinPoint *tjp) {
218
::WinIfExists::aspectof()->__a0_around (tjp);
222
#line 88 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
225
// skip __if_exists resp. __if_not_exists statement
227
#line 128 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step1/aspects/WinIfExists.ah"
231
#endif /* __WinIfExists__ */
233
#line 234 "/home/inf4/spinczyk/ac-woven-1.0pre2/Puma/gen-release/step2/aspects/WinIfExists.ah"
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"
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"
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"
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"
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__
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__
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"
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"
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__
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"
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"
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"
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"
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"
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"
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"
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__