#line 1 "ah_builtin/main.cc" #ifndef __ac_FIRST__home_Tom_aspectcX43X43__ #define __ac_FIRST__home_Tom_aspectcX43X43__ #define __ac_FIRST_FILE__home_Tom_aspectcX43X43_ah_builtin_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 { BUILTIN = 524288, 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 struct ConstQualify {}; template struct ConstQualify { typedef T type; }; template struct ConstQualify { typedef const T type; }; template struct ConstQualify { typedef const T type; }; template struct ArgCQ { typedef typename ConstQualify::Type, ( FC >> I ) & 1>::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 104 "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_ah_builtin_hello_world_ah__ #define __ac_need__home_Tom_aspectcX43X43_ah_builtin_hello_world_ah__ #endif #line 1 "ah_builtin/main.cc" #line 1 "ah_builtin/main.cc" #include char exclamation; #line 125 "main.acc" template __attribute__((always_inline)) inline TResult &__Builtin__Z4mainv_0_0 (TArg0 arg0, TArg1 arg1, AC::RT){ TResult *__result_buffer; AC::invoke_Hello_Hello__a0_before (); __result_buffer = &((arg0) = (arg1)); return *(TResult *&)__result_buffer; } #line 5 "ah_builtin/main.cc" #line 5 "ah_builtin/main.cc" int main(){ __Builtin__Z4mainv_0_0< char &, char > (exclamation , '!', __AC_TYPEOF((exclamation = '!')) ); std::cout << exclamation << std::endl; //print ! return 0; } #line 143 "main.acc" #ifndef __ac_have_predefined_includes__ /*** begin of aspect includes ***/ // commented out by ac++: #include "hello_world.ah" /*** end of aspect includes ***/ #endif #line 10 "ah_builtin/main.cc" #line 10 "ah_builtin/main.cc" #ifdef __ac_FIRST_FILE__home_Tom_aspectcX43X43_ah_builtin_main_cc__ #ifdef __ac_need__home_Tom_aspectcX43X43_ah_builtin_hello_world_ah__ #ifndef __ac_have__home_Tom_aspectcX43X43_ah_builtin_hello_world_ah__ #define __ac_have__home_Tom_aspectcX43X43_ah_builtin_hello_world_ah__ // commented out by ac++: #include "hello_world.ah" #line 1 "ah_builtin/hello_world.ah" #ifndef __WORLD_AH__ #define __WORLD_AH__ // commented out by ac++: #include // commented out by ac++: #include class Hello{ #line 167 "main.acc" public: template struct __BYPASSHello {}; template friend struct __BYPASSHello; private: #line 7 "ah_builtin/hello_world.ah" #line 7 "ah_builtin/hello_world.ah" public: __attribute__((always_inline)) inline void __a0_before() { //print "Hello World" before the '!' is assigned std::cout << "Hello World"; } #line 182 "main.acc" public: static Hello *aspectof () { static Hello __instance; return &__instance; } static Hello *aspectOf () { return aspectof (); } private: #line 14 "ah_builtin/hello_world.ah" #line 14 "ah_builtin/hello_world.ah" } #line 198 "main.acc" ; namespace AC { __attribute((always_inline)) inline void invoke_Hello_Hello__a0_before () { ::Hello::aspectof()->__a0_before (); } } #line 14 "ah_builtin/hello_world.ah" #line 14 "ah_builtin/hello_world.ah" ; #endif #line 16 "ah_builtin/main.cc" #endif #endif #undef __ac_FIRST__home_Tom_aspectcX43X43__ #undef __ac_FIRST_FILE__home_Tom_aspectcX43X43_ah_builtin_main_cc__ #endif // __ac_FIRST_FILE__home_Tom_aspectcX43X43_ah_builtin_main_cc__