00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef _OVERRIDE_H
00029 #define _OVERRIDE_H
00030
00031 #define PARAMLIST0(type0) \
00032 (type0), \
00033 ()
00034
00035 #define PARAMLIST1(type1, name1) \
00036 (type1 name1), \
00037 (name1)
00038
00039 #define PARAMLIST2(type1, name1, type2, name2) \
00040 (type1 name1, \
00041 type2 name2), \
00042 (name1, name2)
00043
00044 #define PARAMLIST3(type1, name1, type2, name2, type3, name3) \
00045 (type1 name1), \
00046 type2 name2, \
00047 type3 name3), \
00048 (name1, name2, name3)
00049
00050 #define PARAMLIST4(type1, name1, type2, name2, type3, name3, type4, name4) \
00051 (type1 name1), \
00052 type2 name2, \
00053 type3 name3, \
00054 type4 name4), \
00055 (name1, name2, name3, name4)
00056
00057 #define PARAMLIST5(type1, name1, type2, name2, type3, name3, type4, name4, type5, name5) \
00058 (type1 name1), \
00059 type2 name2, \
00060 type3 name3, \
00061 type4 name4, \
00062 type5 name5), \
00063 (name1, name2, name3, name4, name5)
00064
00065
00066 #ifdef WITHOUT_OVERRIDE_CHECKING
00067
00068 #define OVERRIDE(accessibility, prefix, returnType, functionName, parameterList, postfix, pureVirtual) \
00069 accessibility: \
00070 prefix returntype functionName parameters postfix pureVirtual
00071
00072 #else
00073
00074
00075
00076
00077
00078
00079
00080
00081 #define OVERRIDE(accessibility, prefix, returnType, functionName, parameterList, parameterNameList, postfix, pureVirtual) \
00082 accessibility: \
00083 prefix returnType functionName parameterList postfix pureVirtual; \
00084 private: \
00085 void functionName##_override_test_function parameterList \
00086 { \
00087 const Base * baseTestPtr = this; \
00088 (void)baseTestPtr; \
00089 Base::functionName parameterNameList; \
00090 } \
00091 accessibility:
00092
00093 #endif
00094
00095 #define OVERRIDE0(accessibility, prefix, returnType, functionName, openParen, type0, closeParen, postfix, pureVirtual) \
00096 OVERRIDE (accessibility, prefix, returnType, functionName, (type0), (), postfix, pureVirtual)
00097
00098 #define OVERRIDE1(accessibility, prefix, returnType, functionName, openParen, type1, name1, closeParen, postfix, pureVirtual) \
00099 OVERRIDE (accessibility, prefix, returnType, functionName, (type1 name1), (name1), postfix, pureVirtual)
00100
00101 #define OVERRIDE2(accessibility, prefix, returnType, functionName, openParen, type1, name1, type2, name2, closeParen, postfix, pureVirtual) \
00102 OVERRIDE (accessibility, prefix, returnType, functionName, (type1 name1, \
00103 type2 name2), (name1, name2), postfix, pureVirtual)
00104
00105 #define OVERRIDE3(accessibility, prefix, returnType, functionName, openParen, type1, name1, type2, name2, type3, name3, closeParen, postfix, pureVirtual) \
00106 OVERRIDE (accessibility, prefix, returnType, functionName, (type1 name1, \
00107 type2 name2, \
00108 type3 name3), (name1, name2, name3), postfix, pureVirtual)
00109
00110 #define OVERRIDE4(accessibility, prefix, returnType, functionName, openParen, type1, name1, type2, name2, type3, name3, type4, name4, closeParen, postfix, pureVirtual) \
00111 OVERRIDE (accessibility, prefix, returnType, functionName, (type1 name1, \
00112 type2 name2, \
00113 type3 name3, \
00114 type4 name4), (name1, name2, name3, name4), postfix, pureVirtual)
00115
00116 #define OVERRIDE5(accessibility, prefix, returnType, functionName, openParen, type1, name1, type2, name2, type3, name3, type4, name4, type5, name5, closeParen, postfix, pureVirtual) \
00117 OVERRIDE (accessibility, prefix, returnType, functionName, (type1 name1, \
00118 type2 name2, \
00119 type3 name3, \
00120 type4 name4, \
00121 type5 name5), (name1, name2, name3, name4, name5), postfix, pureVirtual)
00122
00123 #endif