SlotMachine::SlotMachine() { // Начальное состоние - ожидание state = SlotMachineState::sl_waiting; // Создаём все элементы игрового автомата и помещаем в соответствующие контейнеры указатели на них Button *Start = new Button(ObjectType::ot_button, ObjectRole::_start, ButtonState::_disabled, START_BUTTON_LB_X_REFP, START_BUTTON_LB_Y_REFP, START_BUTTON_RT_X_REFP, START_BUTTON_RT_Y_REFP); buttonsMap.insert(ObjectPair(ObjectRole::_start, Start)); Button *Select = new Button(ObjectType::ot_button, ObjectRole::_select, ButtonState::_disabled, SELECT_BUTTON_LB_X_REFP, SELECT_BUTTON_LB_Y_REFP, SELECT_BUTTON_RT_X_REFP, SELECT_BUTTON_RT_Y_REFP); buttonsMap.insert(ObjectPair(ObjectRole::_select, Select)); Wheel *LeftWheel = new Wheel(ObjectType::ot_wheel, ObjectRole::_leftWheel, WheelState::_stopped, LEFT_WHELL_LB_X_REFP, LEFT_WHELL_LB_Y_REFP, LEFT_WHELL_RT_X_REFP, LEFT_WHELL_RT_Y_REFP); wheelsMap.insert(ObjectPair(ObjectRole::_leftWheel, LeftWheel)); Wheel *CenterWheel = new Wheel(ObjectType::ot_wheel, ObjectRole::_centerWheel, WheelState::_stopped, CENTER_WHELL_LB_X_REFP, CENTER_WHELL_LB_Y_REFP, CENTER_WHELL_RT_X_REFP, CENTER_WHELL_RT_Y_REFP); wheelsMap.insert(ObjectPair(ObjectRole::_centerWheel, CenterWheel)); Wheel *RightWheel = new Wheel(ObjectType::ot_wheel, ObjectRole::_rightWheel, WheelState::_stopped, RIGHT_WHELL_LB_X_REFP, RIGHT_WHELL_LB_Y_REFP, RIGHT_WHELL_RT_X_REFP, RIGHT_WHELL_RT_Y_REFP); wheelsMap.insert(ObjectPair(ObjectRole::_rightWheel, RightWheel)); result = 0; }
void RegistryMonitor::initialiseObjectNameMap() { HKEY hTestKey; wchar_t szTemp[256]; DWORD dwError = RegOpenCurrentUser(KEY_READ , &hTestKey); if (dwError == ERROR_SUCCESS ) { NTSTATUS status; DWORD RequiredLength; PPUBLIC_OBJECT_TYPE_INFORMATION t; typedef DWORD (WINAPI *pNtQueryObject)(HANDLE,DWORD,VOID*,DWORD,VOID*); pNtQueryObject NtQueryObject = (pNtQueryObject)GetProcAddress(GetModuleHandle(L"ntdll.dll"), (LPCSTR)"NtQueryObject"); status = NtQueryObject(hTestKey, 1, NULL,0,&RequiredLength); if(status == STATUS_INFO_LENGTH_MISMATCH) { t = (PPUBLIC_OBJECT_TYPE_INFORMATION)VirtualAlloc(NULL, RequiredLength, MEM_COMMIT, PAGE_READWRITE); if(status != NtQueryObject(hTestKey, 1,t,RequiredLength,&RequiredLength)) { ZeroMemory(szTemp, 256); CopyMemory(&szTemp, t->TypeName.Buffer, RequiredLength); // Dont change the order of these ... _Classes should be inserted first // Small bug but who cares wstring temp2 = szTemp; temp2 += L"_CLASSES"; wstring name2 = L"HKCR"; objectNameMap.push_back(ObjectPair(temp2, name2)); wstring temp1 = szTemp; wstring name1 = L"HKCU"; objectNameMap.push_back(ObjectPair(temp1, name1)); wstring temp3 = L"\\REGISTRY\\MACHINE"; wstring name3 = L"HKLM"; objectNameMap.push_back(ObjectPair(temp3, name3)); wstring temp4 = L"\\REGISTRY\\USER"; wstring name4 = L"HKU"; objectNameMap.push_back(ObjectPair(temp4, name4)); wstring temp5 = L"\\Registry\\Machine"; wstring name5 = L"HKLM"; objectNameMap.push_back(ObjectPair(temp5, name5)); } VirtualFree(t, 0, MEM_RELEASE); } } }
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> void ObjectCache::addObject(MultiKey key, PO obj) { if ( !obj ) return; if ( key.first != obj->publicID() || key.second.empty() ) return; bool found = false; for (size_t i = 0; i < _cache.size(); ++i) if ( _cache[i].first == key && _cache[i].second == obj ) found = true; if ( !found ) _cache.push_back(ObjectPair(key, obj)); else { if ( _errMsg < 4 ) SEISCOMP_DEBUG("Already cached object with multikey: %s/%s", key.first.c_str(), key.second.c_str()); if ( _errMsg == 3 ) SEISCOMP_DEBUG("This message will not be repeated for other objects"); ++_errMsg; } }
TupleVarItem::ObjectMap TupleVarItem::setObject(_object *obj) { ObjectMap map; int size = PyTuple_Size(obj); mValue = QString("%1 elements").arg(size); for(int i=0; i<size; i++) { PyObject* child = PyTuple_GetItem(obj, i); map.append(ObjectPair(QString::number(i), child)); } return map; }