1 #if GOLDEN_RETURN_TYPE_DIFF 2 #define LISTEN_RETURN_TYPE \ 3 int 4 #define LISTEN_RETURN_STATEMENT \ 5 return 0; 6 #else 7 #define LISTEN_RETURN_TYPE \ 8 void 9 #define LISTEN_RETURN_STATEMENT \ 10 return; 11 #endif 12 13 #if GOLDEN_VTABLE_DIFF 14 #define VIRTUAL_FUNCTIONS \ 15 virtual LISTEN_RETURN_TYPE Listen() = 0; \ 16 virtual void Speak() = 0; \ 17 static void SpeakLouder(); 18 #else 19 #define VIRTUAL_FUNCTIONS \ 20 virtual void Speak() = 0; \ 21 virtual LISTEN_RETURN_TYPE Listen() = 0; \ 22 void SpeakLouder(); 23 #endif 24 25 #if GOLDEN_ENUM_EXTENSION 26 #define LOUD_SUPERLATIVES \ 27 Loudest = 3, \ 28 Lower = 0,\ 29 LouderThanLoudest = 5 30 #elif GOLDEN_ENUM_DIFF 31 #define LOUD_SUPERLATIVES \ 32 Loudest = -1, 33 #else 34 #define LOUD_SUPERLATIVES \ 35 Loudest = 3, \ 36 Lower = 0 37 #endif 38 39 class SuperSpeaker { 40 enum Volume { 41 Loud = 1, 42 Louder = 2, 43 LOUD_SUPERLATIVES 44 }; 45 #if GOLDEN_CHANGE_FUNCTION_ACCESS 46 private: 47 #else 48 public: 49 #endif 50 static SuperSpeaker *CreateSuperSpeaker(int id); 51 public: 52 VIRTUAL_FUNCTIONS 53 Volume SpeakLoud(); SpeakLoudest()54 void SpeakLoudest() {} ~SuperSpeaker()55 virtual ~SuperSpeaker() {} 56 private: 57 #if GOLDEN_CHANGE_MEMBER_NAME_SAME_OFFSET 58 int mSpeakderId_; 59 #else 60 int mSpeakderId; 61 #endif 62 63 #if GOLDEN_FUNCTION_POINTER 64 #if GOLDEN_FUNCTION_POINTER_ADD_PARAM 65 SuperSpeaker * (*speaker_fp)(int, char, int); 66 #else 67 SuperSpeaker * (*speaker_fp)(int, char); 68 #endif 69 #endif 70 71 #if GOLDEN_WITH_INTERNAL_STRUCT 72 #ifdef GOLDEN_WITH_PUBLIC_INTERNAL_STRUCT 73 public: 74 #else 75 private: 76 #endif 77 struct InternalStruct { 78 int internal; 79 }; 80 private: 81 InternalStruct a; 82 #endif // GOLDEN_WITH_INTERNAL_STRUCT 83 }; 84