// returns true if the key exists bool wxRegKey::Exists() const { // opened key has to exist, try to open it if not done yet return IsOpened() ? true : KeyExists(m_hRootKey, m_strKey, m_viewMode); }
void ConfigFile::RemoveArrayElement( std::string Key, int ArrayIndex ) { if( !KeyExists( Key ) ) return; ConfigData* cd = GetData( Key ); delete cd->Contents->at( ArrayIndex ); cd->Contents->erase( cd->Contents->begin() + ArrayIndex ); }
void packet::VERIFYCASTLEID() { if (!IsObject(data) || !KeyExists(data, "castleId")) { gserver->consoleLogger->information(Poco::format("castleId not received! - cmd: %s.%s - accountid:%?d - playername: %s", cmdtype, command, client->m_accountid, (char*)client->m_playername.c_str())); throw(1); } }
void packet::CHECKCASTLEID() { if (IsObject(data) && KeyExists(data, "castleId") && (int)data["castleId"] != client->m_currentcityid) { gserver->consoleLogger->information(Poco::format("castleId does not match castle focus! gave: %?d is:%?d - cmd: %s.%s - accountid:%?d - playername: %s", (int)data["castleId"], client->m_currentcityid, cmdtype, command, client->m_accountid, (char*)client->m_playername.c_str())); throw(0); } }
// returns true if given subkey exists bool wxRegKey::HasSubKey(const wxString& szKey) const { // this function should be silent, so suppress possible messages from Open() wxLogNull nolog; if ( !CONST_CAST Open(Read) ) return false; return KeyExists(m_hKey, szKey, m_viewMode); }
double CSVReader::GetValueWithDefault(const std::string& valueName, double def) { double ans; semTake(m_lock,WAIT_FOREVER); if (KeyExists(valueName)) { ans = (*m_map.find(ConvertToLower(valueName))).second; } else { printf("USING DEFAULT OF %f FOR %s\n", def, valueName.c_str()); ans = def; } semGive(m_lock); return ans; }
void ConfigFile::RemoveKey( std::string Key ) { if( !KeyExists( Key ) ) return; ConfigData* cd = GetData( Key ); delete cd->Key; while( cd->Contents->size() > 0 ) { delete cd->Contents->back(); cd->Contents->pop_back(); } Contents.remove( cd ); delete cd; }
BOOL Registry::DeleteKey(String strKey) { /* Call DeleteKey to remove a specified key and its associated data, if any, from the registry. Returns FALSE is there are subkeys Subkeys must be explicitly deleted by separate calls to DeleteKey. DeleteKey returns True if key deletion is successful. On error, DeleteKey returns False. */ // need to open the key first with RegOpenKeyEx ASSERT(FALSE); // not yet implemented ASSERT(strKey[0] != '\\'); if (!KeyExists(strKey)) return TRUE; if (::RegDeleteKey(m_hRootKey, strKey) != ERROR_SUCCESS) return FALSE; return TRUE; }
bool nsGSettingsCollection::SetValue(const nsACString& aKey, GVariant *aValue) { if (!KeyExists(aKey) || !g_settings_range_check(mSettings, PromiseFlatCString(aKey).get(), aValue)) { g_variant_unref(aValue); return PR_FALSE; } return g_settings_set_value(mSettings, PromiseFlatCString(aKey).get(), aValue); }
NS_IMETHODIMP nsGSettingsCollection::GetInt(const nsACString& aKey, PRInt32* aResult) { NS_ENSURE_ARG_POINTER(aResult); if (!KeyExists(aKey)) return NS_ERROR_INVALID_ARG; GVariant *value = g_settings_get_value(mSettings, PromiseFlatCString(aKey).get()); if (!g_variant_is_of_type(value, G_VARIANT_TYPE_INT32)) { g_variant_unref(value); return NS_ERROR_FAILURE; } *aResult = g_variant_get_int32(value); g_variant_unref(value); return NS_OK; }
NS_IMETHODIMP nsGSettingsCollection::GetString(const nsACString& aKey, nsACString& aResult) { if (!KeyExists(aKey)) return NS_ERROR_INVALID_ARG; GVariant *value = g_settings_get_value(mSettings, PromiseFlatCString(aKey).get()); if (!g_variant_is_of_type(value, G_VARIANT_TYPE_STRING) && !g_variant_is_of_type(value, G_VARIANT_TYPE_OBJECT_PATH) && !g_variant_is_of_type(value, G_VARIANT_TYPE_SIGNATURE)) { g_variant_unref(value); return NS_ERROR_FAILURE; } aResult.Assign(g_variant_get_string(value, NULL)); g_variant_unref(value); return NS_OK; }
NS_IMETHODIMP nsGSettingsCollection::GetBoolean(const nsACString& aKey, bool* aResult) { NS_ENSURE_ARG_POINTER(aResult); if (!KeyExists(aKey)) return NS_ERROR_INVALID_ARG; GVariant *value = g_settings_get_value(mSettings, PromiseFlatCString(aKey).get()); if (!g_variant_is_of_type(value, G_VARIANT_TYPE_BOOLEAN)) { g_variant_unref(value); return NS_ERROR_FAILURE; } gboolean res = g_variant_get_boolean(value); *aResult = res ? PR_TRUE : PR_FALSE; g_variant_unref(value); return NS_OK; }
BOOL CRegistry::GetChildKeysNames(CString strKey, std::vector<CString>& outNames) { if (!KeyExists(strKey)) return false; HKEY hKey; if( RegOpenKeyEx( m_hRootKey, strKey, 0, KEY_ALL_ACCESS, &hKey) == ERROR_SUCCESS ) { const int MAX_KEY_LENGTH = 256; const int MAX_VALUE_NAME = 1024; TCHAR achKey[MAX_KEY_LENGTH]; // buffer for subkey name DWORD cbName; // size of name string TCHAR achClass[MAX_PATH] = TEXT(""); // buffer for class name DWORD cchClassName = MAX_PATH; // size of class string DWORD cSubKeys=0; // number of subkeys DWORD cbMaxSubKey; // longest subkey size DWORD cchMaxClass; // longest class string DWORD cValues; // number of values for key DWORD cchMaxValue; // longest value name DWORD cbMaxValueData; // longest value data DWORD cbSecurityDescriptor; // size of security descriptor FILETIME ftLastWriteTime; // last write time DWORD i, retCode; TCHAR achValue[MAX_VALUE_NAME]; DWORD cchValue = MAX_VALUE_NAME; // Get the class name and the value count. retCode = RegQueryInfoKey( hKey, // key handle achClass, // buffer for class name &cchClassName, // size of class string NULL, // reserved &cSubKeys, // number of subkeys &cbMaxSubKey, // longest subkey size &cchMaxClass, // longest class string &cValues, // number of values for this key &cchMaxValue, // longest value name &cbMaxValueData, // longest value data &cbSecurityDescriptor, // security descriptor &ftLastWriteTime); // last write time // Enumerate the subkeys, until RegEnumKeyEx fails. if (cSubKeys) { for (i=0; i<cSubKeys; i++) { cbName = MAX_KEY_LENGTH; retCode = RegEnumKeyEx(hKey, i, achKey, &cbName, NULL, NULL, NULL, &ftLastWriteTime); if (retCode == ERROR_SUCCESS) { outNames.push_back(achKey); } } } } RegCloseKey(hKey); return true; }
bool Customizations::Provides( const wxString& key ) const { return m_active && KeyExists( key ); }
void SetLightStyles( void ){ int i, j, style, numStyles; const char *t; entity_t *e; epair_t *ep, *next; char value[ 10 ]; char lightTargets[ MAX_SWITCHED_LIGHTS ][ 64 ]; int lightStyles[ MAX_SWITCHED_LIGHTS ]; /* -keeplights option: force lights to be kept and ignore what the map file says */ if ( keepLights ) { SetKeyValue( &entities[0], "_keepLights", "1" ); } /* ydnar: determine if we keep lights in the bsp */ if ( KeyExists( &entities[ 0 ], "_keepLights" ) == qtrue ) { t = ValueForKey( &entities[ 0 ], "_keepLights" ); keepLights = ( t[ 0 ] == '1' ) ? qtrue : qfalse; } /* any light that is controlled (has a targetname) must have a unique style number generated for it */ numStyles = 0; for ( i = 1; i < numEntities; i++ ) { e = &entities[ i ]; t = ValueForKey( e, "classname" ); if ( Q_strncasecmp( t, "light", 5 ) ) { continue; } t = ValueForKey( e, "targetname" ); if ( t[ 0 ] == '\0' ) { /* ydnar: strip the light from the BSP file */ if ( keepLights == qfalse ) { ep = e->epairs; while ( ep != NULL ) { next = ep->next; free( ep->key ); free( ep->value ); free( ep ); ep = next; } e->epairs = NULL; numStrippedLights++; } /* next light */ continue; } /* get existing style */ style = IntForKey( e, "style" ); if ( style < LS_NORMAL || style > LS_NONE ) { Error( "Invalid lightstyle (%d) on entity %d", style, i ); } /* find this targetname */ for ( j = 0; j < numStyles; j++ ) if ( lightStyles[ j ] == style && !strcmp( lightTargets[ j ], t ) ) { break; } /* add a new style */ if ( j >= numStyles ) { if ( numStyles == MAX_SWITCHED_LIGHTS ) { Error( "MAX_SWITCHED_LIGHTS (%d) exceeded, reduce the number of lights with targetnames", MAX_SWITCHED_LIGHTS ); } strcpy( lightTargets[ j ], t ); lightStyles[ j ] = style; numStyles++; } /* set explicit style */ sprintf( value, "%d", 32 + j ); SetKeyValue( e, "style", value ); /* set old style */ if ( style != LS_NORMAL ) { sprintf( value, "%d", style ); SetKeyValue( e, "switch_style", value ); } } /* emit some statistics */ Sys_FPrintf( SYS_VRB, "%9d light entities stripped\n", numStrippedLights ); }
void ProcessDecals( void ) { int i, j, x, y, pw[ 5 ], r, iterations, smoothNormals; float distance, lightmapScale, backfaceAngle; vec4_t projection, plane; vec3_t origin, target, delta, lightmapAxis; vec3_t minlight, minvertexlight, ambient, colormod; entity_t *e, *e2; parseMesh_t *p; mesh_t *mesh, *subdivided; bspDrawVert_t *dv[ 4 ]; const char *value; /* note it */ Sys_FPrintf( SYS_VRB, "--- ProcessDecals ---\n" ); /* no decals */ if (nodecals) { for( i = 0; i < numEntities; i++ ) { /* get entity */ e = &entities[ i ]; value = ValueForKey( e, "classname" ); if( Q_stricmp( value, "_decal" ) && Q_stricmp( value, "misc_decal" ) ) continue; /* clear entity patches */ e->patches = NULL; // fixme: LEAK! } return; } /* walk entity list */ for( i = 0; i < numEntities; i++ ) { /* get entity */ e = &entities[ i ]; value = ValueForKey( e, "classname" ); if( Q_stricmp( value, "_decal" ) && Q_stricmp( value, "misc_decal" ) ) continue; /* any patches? */ if( e->patches == NULL ) { Sys_Warning( e->mapEntityNum, "Decal entity without any patch meshes, ignoring." ); e->epairs = NULL; /* fixme: leak! */ continue; } /* find target */ value = ValueForKey( e, "target" ); e2 = FindTargetEntity( value ); /* no target? */ if( e2 == NULL ) { Sys_Warning( e->mapEntityNum, "Decal entity without a valid target, ignoring." ); continue; } /* vortex: get lightmap scaling value for this entity */ GetEntityLightmapScale( e, &lightmapScale, 0); /* vortex: get lightmap axis for this entity */ GetEntityLightmapAxis( e, lightmapAxis, NULL ); /* vortex: per-entity normal smoothing */ GetEntityNormalSmoothing( e, &smoothNormals, 0); /* vortex: per-entity _minlight, _ambient, _color, _colormod */ GetEntityMinlightAmbientColor( e, NULL, minlight, minvertexlight, ambient, colormod, qtrue ); /* vortex: _backfacecull */ if ( KeyExists(e, "_backfacecull") ) backfaceAngle = FloatForKey(e, "_backfacecull"); else if ( KeyExists(e, "_bfc") ) backfaceAngle = FloatForKey(e, "_bfc"); else backfaceAngle = 90.0f; /* walk entity patches */ for( p = e->patches; p != NULL; p = e->patches ) { /* setup projector */ if( VectorCompare( e->origin, vec3_origin ) ) { VectorAdd( p->eMins, p->eMaxs, origin ); VectorScale( origin, 0.5f, origin ); } else VectorCopy( e->origin, origin ); VectorCopy( e2->origin, target ); VectorSubtract( target, origin, delta ); /* setup projection plane */ distance = VectorNormalize( delta, projection ); projection[ 3 ] = DotProduct( origin, projection ); /* create projectors */ if( distance > 0.125f ) { /* tesselate the patch */ iterations = IterationsForCurve( p->longestCurve, patchSubdivisions ); subdivided = SubdivideMesh2( p->mesh, iterations ); /* fit it to the curve and remove colinear verts on rows/columns */ PutMeshOnCurve( *subdivided ); mesh = RemoveLinearMeshColumnsRows( subdivided ); FreeMesh( subdivided ); /* offset by projector origin */ for( j = 0; j < (mesh->width * mesh->height); j++ ) VectorAdd( mesh->verts[ j ].xyz, e->origin, mesh->verts[ j ].xyz ); /* iterate through the mesh quads */ for( y = 0; y < (mesh->height - 1); y++ ) { for( x = 0; x < (mesh->width - 1); x++ ) { /* set indexes */ pw[ 0 ] = x + (y * mesh->width); pw[ 1 ] = x + ((y + 1) * mesh->width); pw[ 2 ] = x + 1 + ((y + 1) * mesh->width); pw[ 3 ] = x + 1 + (y * mesh->width); pw[ 4 ] = x + (y * mesh->width); /* same as pw[ 0 ] */ /* set radix */ r = (x + y) & 1; /* get drawverts */ dv[ 0 ] = &mesh->verts[ pw[ r + 0 ] ]; dv[ 1 ] = &mesh->verts[ pw[ r + 1 ] ]; dv[ 2 ] = &mesh->verts[ pw[ r + 2 ] ]; dv[ 3 ] = &mesh->verts[ pw[ r + 3 ] ]; /* planar? (nuking this optimization as it doesn't work on non-rectangular quads) */ plane[ 0 ] = 0.0f; /* stupid msvc */ if( 0 && PlaneFromPoints( plane, dv[ 0 ]->xyz, dv[ 1 ]->xyz, dv[ 2 ]->xyz ) && fabs( DotProduct( dv[ 1 ]->xyz, plane ) - plane[ 3 ] ) <= PLANAR_EPSILON ) { /* make a quad projector */ MakeDecalProjector( i, p->shaderInfo, projection, distance, 4, dv, cos(backfaceAngle / 180.0f * Q_PI), lightmapScale, lightmapAxis, minlight, minvertexlight, ambient, colormod, smoothNormals); } else { /* make first triangle */ MakeDecalProjector( i, p->shaderInfo, projection, distance, 3, dv, cos(backfaceAngle / 180.0f * Q_PI), lightmapScale, lightmapAxis, minlight, minvertexlight, ambient, colormod, smoothNormals); /* make second triangle */ dv[ 1 ] = dv[ 2 ]; dv[ 2 ] = dv[ 3 ]; MakeDecalProjector( i, p->shaderInfo, projection, distance, 3, dv, cos(backfaceAngle / 180.0f * Q_PI), lightmapScale, lightmapAxis, minlight, minvertexlight, ambient, colormod, smoothNormals); } } } /* clean up */ free( mesh ); } /* remove patch from entity (fixme: leak!) */ e->patches = p->next; /* push patch to worldspawn (enable this to debug projectors) */ #if 0 p->next = entities[ 0 ].patches; entities[ 0 ].patches = p; #endif } } /* emit some stats */ Sys_FPrintf( SYS_VRB, "%9d decal projectors\n", numProjectors ); }