| 1259 | } |
| 1260 | |
| 1261 | txCallback fxProjectCallback(txMachine* the, txSnapshot* snapshot, txCallback callback) |
| 1262 | { |
| 1263 | if (callback) { |
| 1264 | size_t callbackIndex = 0; |
| 1265 | txCallback* callbackItem = (txCallback*)(gxCallbacks); |
| 1266 | while (callbackIndex < mxCallbacksLength) { |
| 1267 | if (*callbackItem == callback) |
| 1268 | return (txCallback)callbackIndex; |
| 1269 | callbackIndex++; |
| 1270 | callbackItem++; |
| 1271 | } |
| 1272 | callbackIndex = 0; |
| 1273 | callbackItem = snapshot->callbacks; |
| 1274 | while (callbackIndex < (size_t)snapshot->callbacksLength) { |
| 1275 | if (*callbackItem == callback) |
| 1276 | return (txCallback)(mxCallbacksLength + callbackIndex); |
| 1277 | callbackIndex++; |
| 1278 | callbackItem++; |
| 1279 | } |
| 1280 | { |
| 1281 | #if mxMacOSX || mxLinux |
| 1282 | Dl_info info; |
| 1283 | if (dladdr(callback, &info) && info.dli_sname) { |
| 1284 | mxAssert(0, "# snapshot: unknown callback: %s!\n", info.dli_sname); |
| 1285 | } |
| 1286 | else |
| 1287 | #endif |
| 1288 | mxAssert(0, "# snapshot: unknown callback!\n"); |
| 1289 | } |
| 1290 | } |
| 1291 | return C_NULL; |
| 1292 | } |
| 1293 | |
| 1294 | void* fxProjectChunk(txMachine* the, void* address) |
| 1295 | { |