#line 1 "example2/ah_call/main.cc" #ifndef __ac_FIRST__home_Tom_aspectcX43X43__ #define __ac_FIRST__home_Tom_aspectcX43X43__ #define __ac_FIRST_FILE__home_Tom_aspectcX43X43_example2_ah_call_main_cc__ #ifndef __ac_have_predefined_includes__ #define __ac_have_predefined_includes__ #endif // __ac_have_predefined_includes__ #ifndef __ac_h_ #define __ac_h_ #ifdef __cplusplus namespace AC { typedef const char* Type; enum JPType { CALL = 262144, EXECUTION = 16777216, CONSTRUCTION = 33554432, DESTRUCTION = 67108864 }; enum Protection { PROT_NONE, PROT_PRIVATE, PROT_PROTECTED, PROT_PUBLIC }; enum Specifiers { SPEC_NONE = 0x0 , SPEC_STATIC = 0x1, SPEC_MUTABLE = 0x2, SPEC_VIRTUAL = 0x4 }; struct Action { void **_args; void *_result; void *_entity; void *_target; void *_that; void *_fptr; void (*_wrapper)(Action &); inline void trigger () { _wrapper (*this); } }; template struct ResultBuffer { char _data[sizeof (T)]; void operator = (const T& t) { *this = (const ResultBuffer &)t; } }; template struct TL { typedef T type; typedef N next; enum { ARGS = next::ARGS + 1 }; }; struct TLE { enum { ARGS = 0 }; }; template struct Referred { typedef T type; }; template struct Referred { typedef T type; }; template struct Arg { typedef typename Arg::Type Type; typedef typename Referred::type ReferredType; }; template struct Arg { typedef typename TL::type Type; typedef typename Referred::type ReferredType; }; template int ttest(...); template char ttest(typename T::__TI const volatile *); template struct HasTypeInfo { enum { RET=((sizeof(ttest(0))==1)?1:0) }; }; template::RET> struct TypeInfo { enum { AVAILABLE = 0, BASECLASSES = 0, MEMBERS = 0, FUNCTIONS = 0, CONSTRUCTORS = 0, DESTRUCTORS = 0 }; typedef T That; }; template struct TypeInfo : T::__TI { enum { AVAILABLE = 1 }; }; template struct RT {}; template RT rt_deduce (const T&) { return RT(); } template RT rt_deduce (const volatile T&) { return RT(); } struct Cnv { template operator RT() const { return RT(); }}; #define __AC_TYPEOF(expr) (1?AC::Cnv():AC::rt_deduce(expr)) template struct CFlow { static int &instance () { static int counter = 0; return counter; } CFlow () { instance ()++; } ~CFlow () { instance ()--; } static bool active () { return instance () > 0; } }; #ifdef __acdef_float template struct _FloatN { BASE val; _FloatN() {} _FloatN(const BASE& v) : val(v) {} operator BASE() const { return val; } }; #endif } #ifdef __acdef_float typedef AC::_FloatN _Float32; typedef AC::_FloatN _Float32x; typedef AC::_FloatN _Float64; typedef AC::_FloatN _Float128; typedef AC::_FloatN _Float64x; #endif #if defined(__acweaving) && defined(__ARM_NEON) typedef __attribute__ ((__neon_vector_type__ (4))) float __Float32x4_t; typedef __attribute__ ((__neon_vector_type__ (2))) double __Float64x2_t; #endif #endif // __cplusplus #endif // __ac_h_ class Hello; #endif // __ac_FIRST__home_Tom_aspectcX43X43__ #line 96 "main.acc" #ifndef __ac_fwd_Hello__ #define __ac_fwd_Hello__ class Hello; namespace AC { __attribute((always_inline)) inline void invoke_Hello_Hello__a0_before (); } #endif #ifndef __ac_need__home_Tom_aspectcX43X43_example2_ah_call_hello_ah__ #define __ac_need__home_Tom_aspectcX43X43_example2_ah_call_hello_ah__ #endif #line 1 "example2/ah_call/main.cc" #line 1 "example2/ah_call/main.cc" // commented out by ac++: #include "world.h" #line 1 "example2/ah_call/world.h" #ifndef __WORLD_H__ #define __WORLD_H__ #include void world(){ std::cout << "World" << std::endl; } #endif #line 2 "example2/ah_call/main.cc" #line 127 "main.acc" __attribute__((always_inline)) inline void __Call__Z4mainv_0_0 (){ AC::invoke_Hello_Hello__a0_before (); ::world(); } #line 3 "example2/ah_call/main.cc" #line 3 "example2/ah_call/main.cc" int main(){ __Call__Z4mainv_0_0 ( ); //print "World" return 0; } #line 141 "main.acc" #ifndef __ac_have_predefined_includes__ /*** begin of aspect includes ***/ // commented out by ac++: #include "hello.ah" /*** end of aspect includes ***/ #endif #line 7 "example2/ah_call/main.cc" #line 7 "example2/ah_call/main.cc" #ifdef __ac_FIRST_FILE__home_Tom_aspectcX43X43_example2_ah_call_main_cc__ #ifdef __ac_need__home_Tom_aspectcX43X43_example2_ah_call_hello_ah__ #ifndef __ac_have__home_Tom_aspectcX43X43_example2_ah_call_hello_ah__ #define __ac_have__home_Tom_aspectcX43X43_example2_ah_call_hello_ah__ // commented out by ac++: #include "hello.ah" #line 1 "example2/ah_call/hello.ah" #ifndef __HELLO_AH__ #define __HELLO_AH__ // commented out by ac++: #include class Hello { #line 164 "main.acc" public: template struct __BYPASSHello {}; template friend struct __BYPASSHello; private: #line 6 "example2/ah_call/hello.ah" #line 6 "example2/ah_call/hello.ah" public: void __a0_before() { //print "Hello" when calling the 'world()' function std::cout << "Hello" << std::endl; } #line 179 "main.acc" public: static Hello *aspectof () { static Hello __instance; return &__instance; } static Hello *aspectOf () { return aspectof (); } private: #line 13 "example2/ah_call/hello.ah" #line 13 "example2/ah_call/hello.ah" } #line 195 "main.acc" ; namespace AC { __attribute((always_inline)) inline void invoke_Hello_Hello__a0_before () { ::Hello::aspectof()->__a0_before (); } } #line 13 "example2/ah_call/hello.ah" #line 13 "example2/ah_call/hello.ah" ; #endif #line 13 "example2/ah_call/main.cc" #endif #endif #undef __ac_FIRST__home_Tom_aspectcX43X43__ #undef __ac_FIRST_FILE__home_Tom_aspectcX43X43_example2_ah_call_main_cc__ #endif // __ac_FIRST_FILE__home_Tom_aspectcX43X43_example2_ah_call_main_cc__