plSetListenerMsg::plSetListenerMsg( uint8_t type, const plKey &srcKey, bool binding ) : plMessage( nil, nil, nil ) { plUoid uoid( kListenerMod_KEY ); plKey pLKey = hsgResMgr::ResMgr()->FindKey( uoid ); AddReceiver( pLKey ); Set( srcKey, type, binding ); }
void plRegistryPageNode::AddKey(plKeyImp* key) { uint16_t classType = key->GetUoid().GetClassType(); plRegistryKeyList* keys = fKeyLists[classType]; if (keys == nil) { keys = new plRegistryKeyList(classType); fKeyLists[classType] = keys; } // Error check if (keys->FindKey(key->GetUoid().GetObjectName()) != nil) { //char str[512], tempStr[128]; //sprintf(str, "Attempting to add a key with a duplicate name. Not allowed." // "\n\n(Key name: %s, Class: %s, Loc: %s)", key->GetUoid().GetObjectName(), // plFactory::GetNameOfClass(classType), key->GetUoid().GetLocation().StringIze(tempStr)); //hsStatusMessage(str); bool recovered = false; // Attempt recovery for (int i = 0; i < 500; i++) { plString tempName = plString::Format("%s%d", key->GetUoid().GetObjectName().c_str(), i); if (keys->FindKey(tempName) == nil) { plUoid uoid(key->GetUoid().GetLocation(), key->GetUoid().GetClassType(), tempName, key->GetUoid().GetLoadMask()); key->SetUoid(uoid); recovered = true; break; } } if (!recovered) { hsAssert(0, "Couldn't allocate a unique key"); return; } } plRegistryKeyList::LoadStatus loadStatusChange; keys->AddKey(key, loadStatusChange); if (loadStatusChange == plRegistryKeyList::kDynLoaded) fDynLoadedTypes++; }
void hsKeyedObject::UnRegisterAs(plFixedKeyId fixedKey) { plUoid uoid(fixedKey); UnRegisterAsManual(uoid); }