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 = 4,\ 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 = 4 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() { }; 55 ~SuperSpeaker()56 virtual ~SuperSpeaker() { } 57 private: 58 #if GOLDEN_CHANGE_MEMBER_NAME_SAME_OFFSET 59 int mSpeakderId_; 60 #else 61 int mSpeakderId; 62 #endif 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