1
#ifndef __ac_FIRST__tmp_AOP_LIN_AOP_Puma_gen45release_step1__
2
#define __ac_FIRST__tmp_AOP_LIN_AOP_Puma_gen45release_step1__
3
#define __ac_FIRST_FILE__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxH_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__tmp_AOP_LIN_AOP_Puma_gen45release_step1__
36
// This file is part of PUMA.
37
// Copyright (C) 1999-2003 The PUMA developer team.
39
// This program is free software; you can redistribute it and/or
40
// modify it under the terms of the GNU General Public License as
41
// published by the Free Software Foundation; either version 2 of
42
// the License, or (at your option) any later version.
44
// This program is distributed in the hope that it will be useful,
45
// but WITHOUT ANY WARRANTY; without even the implied warranty of
46
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
47
// GNU General Public License for more details.
49
// You should have received a copy of the GNU General Public
50
// License along with this program; if not, write to the Free
51
// Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
54
#ifndef __ext_ac_syntax_h_ah__
55
#define __ext_ac_syntax_h_ah__
57
// *************************
58
// C and CC-Syntax extension
59
// *************************
61
// new C and CC Syntax member functions
66
// *************************
67
// C and CC-Syntax extension
68
// *************************
71
class WinImportHandler;
76
class ExtACBuilderCoupling;
81
class WinMemberExplSpec;
82
class WinTypeKeywords;
83
class PragmaOnceUnitState;
87
class ExtACSyntaxCoupling {
89
static ExtACSyntaxCoupling *aspectof () {
90
static ExtACSyntaxCoupling __instance;
93
static ExtACSyntaxCoupling *aspectOf () {
97
friend class ::WinIfExists;
98
friend class ::WinImportHandler;
99
friend class ::WinMacros;
100
friend class ::CMatchSyntax;
101
friend class ::ExtGnu;
102
friend class ::ExtAC;
103
friend class ::ExtACBuilderCoupling;
104
friend class ::ExtACTree;
105
friend class ::ExtACKeywords;
106
friend class ::WinAsm;
107
friend class ::WinDeclSpecs;
108
friend class ::WinMemberExplSpec;
109
friend class ::WinTypeKeywords;
110
friend class ::PragmaOnceUnitState;
111
friend class ::PragmaOnce;
112
friend class ::CCExprResolve;
113
friend class ::CExprResolve;
116
// relevant pointcuts
120
// structural extensions
124
// behavioral extensions
126
public: template<class JoinPoint> void __a0_after (JoinPoint *tjp) {
127
typedef typename JoinPoint::That __JP_That;
128
typedef typename JoinPoint::Target __JP_Target;
129
typedef typename JoinPoint::Result __JP_Result;
131
tjp->that ()->_class_key_1.set (TOK_ASPECT);
137
public: template<class JoinPoint> void __a1_around (JoinPoint *tjp) {
138
typedef typename JoinPoint::That __JP_That;
139
typedef typename JoinPoint::Target __JP_Target;
140
typedef typename JoinPoint::Result __JP_Result;
144
// 1: class_slice_decl
145
if (tjp->that ()->parse (&__JP_That::pointcut_decl) ||
146
tjp->that ()->parse (&__JP_That::advice_decl) ||
147
tjp->that ()->parse (&__JP_That::class_slice_decl) ||
148
tjp->that ()->parse (&__JP_That::class_slice_member_decl))
149
*tjp->result () = tjp->that ()->builder ().block_decl ();
157
public: template<class JoinPoint> void __a2_around (JoinPoint *tjp) {
158
typedef typename JoinPoint::That __JP_That;
159
typedef typename JoinPoint::Target __JP_Target;
160
typedef typename JoinPoint::Result __JP_Result;
162
// 1: pointcut_member_decl
163
// 1: advice_member_decl
164
if (tjp->that ()->parse (&__JP_That::pointcut_member_decl) ||
165
tjp->that ()->parse (&__JP_That::advice_member_decl) ||
166
tjp->that ()->parse (&__JP_That::class_slice_decl))
167
*tjp->result () = tjp->that ()->builder ().member_decl ();
175
template <class JoinPoint>
176
inline void invoke_ExtACSyntaxCoupling_ExtACSyntaxCoupling_a0_after (JoinPoint *tjp) {
177
::ExtACSyntaxCoupling::aspectof()->__a0_after (tjp);
179
template <class JoinPoint>
180
inline void invoke_ExtACSyntaxCoupling_ExtACSyntaxCoupling_a1_around (JoinPoint *tjp) {
181
::ExtACSyntaxCoupling::aspectof()->__a1_around (tjp);
183
template <class JoinPoint>
184
inline void invoke_ExtACSyntaxCoupling_ExtACSyntaxCoupling_a2_around (JoinPoint *tjp) {
185
::ExtACSyntaxCoupling::aspectof()->__a2_around (tjp);
190
#endif /* __ext_ac_syntax_h_ah__ */
192
#ifdef __ac_FIRST_FILE__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
193
/*** begin of aspect includes ***/
194
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinIfExists_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinIfExists_ah__)
195
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinIfExists_ah__
196
#include "WinIfExists.ah"
198
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinImportHandler_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinImportHandler_ah__)
199
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinImportHandler_ah__
200
#include "WinImportHandler.ah"
202
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMacros_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMacros_ah__)
203
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMacros_ah__
204
#include "WinMacros.ah"
206
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CMatchSyntax_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CMatchSyntax_ah__)
207
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CMatchSyntax_ah__
208
#include "CMatchSyntax.ah"
210
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtGnu_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtGnu_ah__)
211
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtGnu_ah__
214
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtAC_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtAC_ah__)
215
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtAC_ah__
218
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__)
219
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACBuilderH_ah__
220
#include "ExtACBuilderH.ah"
222
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__)
223
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACBuilderCC_ah__
224
#include "ExtACBuilderCC.ah"
226
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__)
227
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
228
#include "ExtACSyntaxH.ah"
230
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__)
231
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxCC_ah__
232
#include "ExtACSyntaxCC.ah"
234
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACTree_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACTree_ah__)
235
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACTree_ah__
236
#include "ExtACTree.ah"
238
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACKeywords_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACKeywords_ah__)
239
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACKeywords_ah__
240
#include "ExtACKeywords.ah"
242
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_TraceSyntax_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_TraceSyntax_ah__)
243
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_TraceSyntax_ah__
244
#include "TraceSyntax.ah"
246
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinAsm_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinAsm_ah__)
247
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinAsm_ah__
250
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__)
251
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinDeclSpecs_ah__
252
#include "WinDeclSpecs.ah"
254
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__)
255
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinMemberExplSpec_ah__
256
#include "WinMemberExplSpec.ah"
258
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__)
259
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_WinTypeKeywords_ah__
260
#include "WinTypeKeywords.ah"
262
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__)
263
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnceUnitState_ah__
264
#include "PragmaOnceUnitState.ah"
266
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnce_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnce_ah__)
267
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_PragmaOnce_ah__
268
#include "PragmaOnce.ah"
270
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CCExprResolveH_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CCExprResolveH_ah__)
271
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CCExprResolveH_ah__
272
#include "CCExprResolveH.ah"
274
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__)
275
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CCExprResolveCC_ah__
276
#include "CCExprResolveCC.ah"
278
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CExprResolveH_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CExprResolveH_ah__)
279
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CExprResolveH_ah__
280
#include "CExprResolveH.ah"
282
#if !defined(__ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CExprResolveCC_ah__) && defined(__ac_need__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CExprResolveCC_ah__)
283
#define __ac_have__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_CExprResolveCC_ah__
284
#include "CExprResolveCC.ah"
286
/*** end of aspect includes ***/
287
#undef __ac_FIRST__tmp_AOP_LIN_AOP_Puma_gen45release_step1__
288
#undef __ac_FIRST_FILE__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__
289
#endif // __ac_FIRST_FILE__tmp_AOP_LIN_AOP_Puma_gen45release_step1_aspects_ExtACSyntaxH_ah__