void SetKeyStatusEventData(unsigned int modmask) { BoostPythonDictionary &data = _GetEventData(); // Keyboard modifiers (for kb+mouse) if (modmask==~0) modmask = pullActiveModifiers(); data["modifiers"] = modmask; data["alt"] = ((modmask & KB_MOD_ALT)!=0); data["shift"] = ((modmask & KB_MOD_SHIFT)!=0); data["ctrl"] = ((modmask & KB_MOD_CTRL)!=0); }
void SetMouseEventData(std::string type, float x, float y, int buttonMask) { BoostPythonDictionary &data = _GetEventData(); // Event type data["type"] = type; // Mouse data data["mousex"] = x; data["mousey"] = y; data["mousebuttons"] = buttonMask; SetKeyStatusEventData(); }
void SetKeyEventData(std::string type, unsigned int keycode, unsigned int modmask) { BoostPythonDictionary &data = _GetEventData(); // Event type data["type"] = type; // Keycode data["key"] = keycode; if ((keycode>0x20) && (keycode < 0xff)) data["char"] = string(1,keycode); else data["char"] = string(); SetKeyStatusEventData(modmask); }
static void ShowStats(void) { _GetStorageInfo(&statsP->stat); statsP->nextBase = NULL; statsP->totFree = 0; statsP->totUsed = 0; statsP->totHole = 0; statsP->totMaps = 0; statsP->holeBlocks = 0; statsP->freeBlocks = 0; statsP->usedBlocks = 0; statsP->mapsBlocks = 0; statsP->largestFreeBlock = 0; D0("Storage description. (All sizes in bytes)\n"); D0("Current storage analysis (by traversing heap):"); do { statsP->elementBase = statsP->nextBase; _NextHeapElement(&statsP->nextBase, &statsP->guard, &statsP->size, &statsP->freeBlk, &statsP->heapHole, &statsP->bitmap, &statsP->firstWord); if (statsP->heapHole) { statsP->holeBlocks++; statsP->totHole += statsP->size; } else if (statsP->freeBlk) { if (statsP->size > statsP->largestFreeBlock) statsP->largestFreeBlock = statsP->size; statsP->freeBlocks++; statsP->totFree += statsP->size; } else if (statsP->bitmap) {statsP->mapsBlocks++; statsP->totMaps += statsP->size;} else {statsP->usedBlocks++; statsP->totUsed += statsP->size;} } while (statsP->nextBase != NULL); D0("\n"); D4("Free memory of %d in %d blocks + overhead of %d = %d\n", statsP->totFree, statsP->freeBlocks, statsP->freeBlocks*OVERHEAD, statsP->totFree+statsP->freeBlocks*OVERHEAD); D1("Largest free block = %d\n", statsP->largestFreeBlock); D4("Used memory of %d in %d blocks + overhead of %d = %d\n", statsP->totUsed, statsP->usedBlocks, statsP->usedBlocks*OVERHEAD, statsP->totUsed+statsP->usedBlocks*OVERHEAD); D4("Memory taken by heap holes = %d in %d blocks + overhead of %d = %d\n", statsP->totHole, statsP->holeBlocks, statsP->holeBlocks*OVERHEAD, statsP->totHole + statsP->holeBlocks*OVERHEAD); D4("Memory taken by GC bitmaps = %d in %d blocks + overhead of %d = %d\n", statsP->totMaps, statsP->mapsBlocks, statsP->mapsBlocks*OVERHEAD, statsP->totMaps + statsP->mapsBlocks*OVERHEAD); D1("Current heap requirement (all except user free blocks) = %d\n", (statsP->totHole+statsP->holeBlocks*OVERHEAD) + (statsP->totUsed+statsP->usedBlocks*OVERHEAD) + (statsP->totMaps+statsP->mapsBlocks*OVERHEAD) + (statsP->freeBlocks*OVERHEAD) - OVERHEAD); D1("total heap usage = %d\n", (statsP->totHole+statsP->holeBlocks*OVERHEAD) + (statsP->totUsed+statsP->usedBlocks*OVERHEAD) + (statsP->totMaps+statsP->mapsBlocks*OVERHEAD) + (statsP->totFree+statsP->freeBlocks*OVERHEAD) - OVERHEAD); D0("\n"); D0("Current storage statistics:\n"); D3("%d coalesces, %d heap extensions, %d garbage collects\n", statsP->stat.coalesces, statsP->stat.heapExtensions, statsP->stat.garbageCollects); D3("Heap base = &%X, heap top = &%X, size of user heap = %d\n", (unsigned) statsP->stat.heapLow, (unsigned) statsP->stat.heapHigh, statsP->stat.userHeap); D2("Maximum storage requested = %d, current storage requested = %d\n", statsP->stat.maxHeapRequirement, statsP->stat.currentHeapRequirement); D4("total allocated = %d in %d blocks, deallocated = %d in %d\n", statsP->stat.bytesAllocated, statsP->stat.blocksAllocated, statsP->stat.bytesDeallocated, statsP->stat.blocksDeallocated); D0("\n"); statsP->eventNo = _GetLastEvent(); D0("Description of past events in storage (most recent first):\n"); while (_GetEventData(statsP->eventNo, &statsP->eventInfo)) { print_event(statsP->eventInfo.event); D3(" block size = %d, user heap size %d, %d usable\n", statsP->eventInfo.blockThatCausedEvent, statsP->eventInfo.userHeap, statsP->eventInfo.totalFree); D4(" allocated %d in %d, deallocated %d in %d since last event\n", statsP->eventInfo.bytesAllocated, statsP->eventInfo.allocates, statsP->eventInfo.bytesDeallocated, statsP->eventInfo.deallocates); statsP->eventNo--; } }
const Dictionary& GetEventData() { return _GetEventData(); }
void SetEventData(BoostPythonDictionary data) { _GetEventData() = data; }