diff options
Diffstat (limited to '')
| -rw-r--r-- | gensigs.bld | 26 | 
1 files changed, 25 insertions, 1 deletions
diff --git a/gensigs.bld b/gensigs.bld index 6cdd5d5..6bb1e55 100644 --- a/gensigs.bld +++ b/gensigs.bld  | |||
| @@ -16,6 +16,7 @@ function genSigs( outName ) | |||
| 16 | "#ifndef BU_SIGNALS_H\n" | 16 | "#ifndef BU_SIGNALS_H\n" | 
| 17 | "#define BU_SIGNALS_H\n" | 17 | "#define BU_SIGNALS_H\n" | 
| 18 | "\n" | 18 | "\n" | 
| 19 | "#include <typeinfo>\n" | ||
| 19 | "#include \"bu/util.h\"\n" | 20 | "#include \"bu/util.h\"\n" | 
| 20 | "#include \"bu/exceptionbase.h\"\n" | 21 | "#include \"bu/exceptionbase.h\"\n" | 
| 21 | "#include \"bu/list.h\"\n" | 22 | "#include \"bu/list.h\"\n" | 
| @@ -69,6 +70,7 @@ function genSigs( outName ) | |||
| 69 | " virtual ~_Slot${i}() { }\n" | 70 | " virtual ~_Slot${i}() { }\n" | 
| 70 | " virtual ret operator()( ${funcParams} )=0;\n" | 71 | " virtual ret operator()( ${funcParams} )=0;\n" | 
| 71 | " virtual _Slot${i}<${templCallParams}> *clone() const=0;\n" | 72 | " virtual _Slot${i}<${templCallParams}> *clone() const=0;\n" | 
| 73 | " virtual bool operator==( const _Slot${i}<${templCallParams}> &rhs ) const=0;\n" | ||
| 72 | " };\n" | 74 | " };\n" | 
| 73 | " \n" | 75 | " \n" | 
| 74 | " template<typename cls, ${templParams}>\n" | 76 | " template<typename cls, ${templParams}>\n" | 
| @@ -89,6 +91,12 @@ function genSigs( outName ) | |||
| 89 | " return new __Slot${i}<cls, ${templCallParams}>( pCls, pFnc );\n" | 91 | " return new __Slot${i}<cls, ${templCallParams}>( pCls, pFnc );\n" | 
| 90 | " }\n" | 92 | " }\n" | 
| 91 | " \n" | 93 | " \n" | 
| 94 | " virtual bool operator==( const _Slot${i}<${templCallParams}> &rhs ) const\n" | ||
| 95 | " {\n" | ||
| 96 | " const __Slot${i}<cls, ${templCallParams}> &rrhs = (const __Slot${i}<cls, ${templCallParams}> &)rhs;\n" | ||
| 97 | " return pCls == rrhs.pCls && pFnc == rrhs.pFnc;\n" | ||
| 98 | " }\n" | ||
| 99 | " \n" | ||
| 92 | " private:\n" | 100 | " private:\n" | 
| 93 | " cls *pCls;\n" | 101 | " cls *pCls;\n" | 
| 94 | " ret (cls::*pFnc)( ${funcAnonParams} );\n" | 102 | " ret (cls::*pFnc)( ${funcAnonParams} );\n" | 
| @@ -112,6 +120,11 @@ function genSigs( outName ) | |||
| 112 | " return new __Slot${i}F<${templCallParams}>( pFnc );\n" | 120 | " return new __Slot${i}F<${templCallParams}>( pFnc );\n" | 
| 113 | " }\n" | 121 | " }\n" | 
| 114 | " \n" | 122 | " \n" | 
| 123 | " virtual bool operator==( const _Slot${i}<${templCallParams}> &rhs ) const\n" | ||
| 124 | " {\n" | ||
| 125 | " return pFnc == ((const __Slot${i}F<${templCallParams}> &)rhs).pFnc;\n" | ||
| 126 | " }\n" | ||
| 127 | " \n" | ||
| 115 | " private:\n" | 128 | " private:\n" | 
| 116 | " ret (*pFnc)( ${funcAnonParams} );\n" | 129 | " ret (*pFnc)( ${funcAnonParams} );\n" | 
| 117 | " };\n" | 130 | " };\n" | 
| @@ -141,6 +154,17 @@ function genSigs( outName ) | |||
| 141 | " return *this;\n" | 154 | " return *this;\n" | 
| 142 | " }\n" | 155 | " }\n" | 
| 143 | " \n" | 156 | " \n" | 
| 157 | " bool operator==( const Signal${i}<${templCallParams}> &rhs ) const\n" | ||
| 158 | " {\n" | ||
| 159 | " if( pCb == rhs.pCb )\n" | ||
| 160 | " return true;\n" | ||
| 161 | " if( pCb == NULL || rhs.pCb == NULL )\n" | ||
| 162 | " return false;\n" | ||
| 163 | " if( typeid(pCb) != typeid(rhs.pCb) )\n" | ||
| 164 | " return false;\n" | ||
| 165 | " return *pCb == *rhs.pCb;\n" | ||
| 166 | " }\n" | ||
| 167 | " \n" | ||
| 144 | " private:\n" | 168 | " private:\n" | 
| 145 | " _Slot${i}<${templCallParams}> *pCb;\n" | 169 | " _Slot${i}<${templCallParams}> *pCb;\n" | 
| 146 | " };\n" | 170 | " };\n" | 
| @@ -187,7 +211,7 @@ function genSigs( outName ) | |||
| 187 | " else\n" | 211 | " else\n" | 
| 188 | " return (*i)( ${funcCallParams} );\n" | 212 | " return (*i)( ${funcCallParams} );\n" | 
| 189 | " }\n" | 213 | " }\n" | 
| 190 | " throw Bu::ExceptionBase(\"Empty SignalList with non-void return value called.\");\n" | 214 | " throw Bu::SignalException(\"Empty SignalList with non-void return value called.\");\n" | 
| 191 | " }\n" | 215 | " }\n" | 
| 192 | " };\n" | 216 | " };\n" | 
| 193 | " \n" | 217 | " \n" | 
