static void Dynvar_Set_f( void ) { if( Cmd_Argc() == 3 ) { dynvar_t *dynvar; dynvar = Dynvar_Lookup( Cmd_Argv( 1 ) ); if( dynvar ) { if( dynvar->console ) { dynvar_set_status_t status = Dynvar_SetValue( dynvar, Cmd_Argv( 2 ) ); switch( status ) { case DYNVAR_SET_OK: break; case DYNVAR_SET_READONLY: Com_Printf( (char *) DYNVAR_SET_READONLY_MSG, Dynvar_GetName( dynvar ) ); break; case DYNVAR_SET_INVALID: Com_Printf( (char *) DYNVAR_SET_INVALID_MSG, Cmd_Argv( 2 ), Dynvar_GetName( dynvar ) ); break; case DYNVAR_SET_TRANSIENT: Com_Printf( (char *) DYNVAR_TRANSIENT_MSG, Dynvar_GetName( dynvar ) ); break; } } else Com_Printf( (char *) DYNVAR_NOT_FOUND_MSG, Dynvar_GetName( dynvar ) ); } else Com_Printf( (char *) DYNVAR_NOT_FOUND_MSG, Cmd_Argv( 1 ) ); } else Com_Printf( "usage: setdyn <dynvar> <value>\n" ); }
/* * Sys_InitTimeDynvar */ void Sys_InitTimeDynvar( void ) { QueryPerformanceFrequency( (LARGE_INTEGER *) &hwtimer_freq ); hwtimer_var = Dynvar_Create( "sys_hwtimer", 1, Sys_GetHwTimer_f, Sys_SetHwTimer_f ); assert( hwtimer_var ); Dynvar_AddListener( hwtimer_var, Sys_SynchronizeTimers_f ); Dynvar_SetValue( hwtimer_var, "0" ); }
/* * Sys_InitDynvars */ void Sys_InitDynvars( void ) { char *dummyStr; dynvar_t *affinity_var; affinity_var = Dynvar_Create( "sys_affinity", true, Sys_GetAffinity_f, Sys_SetAffinity_f ); assert( affinity_var ); Dynvar_GetValue( affinity_var, (void **)&dummyStr ); assert( dummyStr ); Dynvar_SetValue( affinity_var, dummyStr ); Sys_InitTimeDynvar(); }
qboolean Dynvar_Command( void ) { dynvar_t *dynvar = Dynvar_Lookup( Cmd_Argv( 0 ) ); if( dynvar && dynvar->console ) { // dynvar exists and is console-accessible if( Cmd_Argc() == 1 ) { void *value; dynvar_get_status_t status = Dynvar_GetValue( dynvar, &value ); switch( status ) { case DYNVAR_GET_OK: Com_Printf( "\"%s\" is \"%s\"\n", Dynvar_GetName( dynvar ), (char *) value ); break; case DYNVAR_GET_WRITEONLY: Com_Printf( (char *) DYNVAR_GET_WRITEONLY_MSG, Dynvar_GetName( dynvar ) ); break; case DYNVAR_GET_TRANSIENT: Com_Printf( (char *) DYNVAR_TRANSIENT_MSG, Dynvar_GetName( dynvar ) ); break; } } else { dynvar_set_status_t status = Dynvar_SetValue( dynvar, Cmd_Argv( 1 ) ); switch( status ) { case DYNVAR_SET_OK: break; case DYNVAR_SET_READONLY: Com_Printf( (char *) DYNVAR_SET_READONLY_MSG, Dynvar_GetName( dynvar ) ); break; case DYNVAR_SET_INVALID: Com_Printf( (char *) DYNVAR_SET_INVALID_MSG, Cmd_Argv( 1 ), Dynvar_GetName( dynvar ) ); break; case DYNVAR_SET_TRANSIENT: Com_Printf( (char *) DYNVAR_TRANSIENT_MSG, Dynvar_GetName( dynvar ) ); break; } } return qtrue; } else // dynvar does not exist or is inaccessible return qfalse; }
/* * Sys_InitTime */ void Sys_InitTime( void ) { char *hwtimerStr; assert( hwtimer_var ); Dynvar_GetValue( hwtimer_var, (void **)&hwtimerStr ); assert( hwtimerStr ); if( hwtimerStr[0] == '0' && COM_CheckParm( "-hwtimer" ) ) { // hwtimer set by command line parameter (deprecated) Dynvar_SetValue( hwtimer_var, "1" ); } // finally check whether hwtimer is activated if( hwtimer ) Com_Printf( "Using High Resolution Performance Counter\n" ); else Com_Printf( "Using timeGetTime\n" ); }