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);
		}
	}
}
Exemple #3
0
// >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
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;
}