#include "vars.h" #include "../util.h" #include VAR_LIST* varl; VAR_LIST* vars_init() { VAR_LIST* ret = new VAR_LIST; return ret; } CVAR* var_new( const char* name, F32 v ) { if( !varl ) { dlog( "var_new() : error: varl null\n" ); return 0; } CVAR* ret = new CVAR; memset( ret, 0 , sizeof( CVAR ) ); ret->type = CVAR_TYPE_FLOAT; strcpy( ret->name, name ); ret->fl_v = v; varl->vars.push( ret ); return ret; } CVAR* var_new( const char* name, I32 i ) { if( !varl ) { dlog( "var_new() : error: varl null\n" ); return 0; } CVAR* ret = new CVAR; memset( ret, 0 , sizeof( CVAR ) ); ret->type = CVAR_TYPE_INT; strcpy( ret->name, name ); ret->i_v = i; varl->vars.push( ret ); return ret; } CVAR* var_new( const char* name, CLR c ) { if( !varl ) { dlog( "var_new() : error: varl null\n" ); return 0; } CVAR* ret = new CVAR; memset( ret, 0 , sizeof( CVAR ) ); ret->type = CVAR_TYPE_COLOR; strcpy( ret->name, name ); ret->clr_v = c; varl->vars.push( ret ); return ret; } CVAR* var_new( const char* name, CVAR_FUNC func ) { if( !varl ) { dlog( "var_new() : error: varl null\n" ); return 0; } CVAR* ret = new CVAR; memset( ret, 0 , sizeof( CVAR ) ); ret->type = CVAR_TYPE_FN; strcpy( ret->name, name ); ret->fn_v = func; varl->vars.push( ret ); return ret; } CVAR* var_new( const char* name, const char* v ) { if( !varl ) { dlog( "var_new() : error: varl null\n" ); return 0; } CVAR* ret = new CVAR; memset( ret, 0, sizeof( CVAR ) ); ret->type = CVAR_TYPE_STRING; strcpy( ret->name, name ); varl->vars.push( ret ); return ret; } CVAR* var_find( const char* name ) { if( !varl ) { dlog( "var_new() : error: varl null\n" ); return 0; } U32 len = strlen( name ); for( U32 i = 0; i < varl->vars.size; ++i ) { U32 len2 = strlen( varl->vars[i]->name ); if( strncmp( varl->vars[i]->name, name, min( len, len2 ) ) == 0 ) { return varl->vars[i]; } } return 0; } I32 var_call( CVAR *cmdvar, const char *cmdline ) { if( cmdvar->type != CVAR_TYPE_FN ) { dlog( "var_call() : error: not a function\n" ); return -1; } return cmdvar->fn_v( cmdvar, cmdline ); }