bool SRExpressionsParser::assign(double* r) { char t[SR_VARLEN + 1]; if (type == VT_VAR) { if((*expression == '=')&&(expression[1] != '=')) { strcpy(t, token.value()); parse(); parse(); if(!*token.value()) { ClearVar(t); return true; } ternary(r); if(!SetValue(t, *r, true)) throw(E_MAXVARS); return true; } } if (type == VT_DEF) { if((*expression == '=')&&(expression[1] != '=')) { strcpy(t, token.value()); parse(); parse(); if(!*token.value()) { ClearVar(t); return true; } ternary(r); if(!SetValue(t, *r, true)) throw(E_MAXVARS); return true; } } ternary(r); return false; }
int SetValue( char* name, double* value ) { int i; ClearVar( name ); for( i = 0; i < MAXVARS; i++ ) if( ! *Vars[i].name ) { strcpy( Vars[i].name, name ); Vars[i].name[VARLEN] = 0; Vars[i].value = *value; return( 1 ); } return( 0 ); }
bool SetValue(char* name, double value, bool save) { int i; ClearVar(name); for(i = 0; i < SR_MAXVARS; i++) { if(! *Vars[i].name) { strcpy(Vars[i].name, name); Vars[i].name[SR_VARLEN] = 0; Vars[i].value = value; return true; } } return false; }
static int Level1( double* r ) { char t[VARLEN + 1]; if( type == VAR ) if( *expression == '=' ) { strcpy( t, (char*)token ); Parse(); Parse(); if( !*token ) { ClearVar( t ); return(1); } Level2( r ); if( ! SetValue( t, r ) ) ERR( E_MAXVARS ); return( 1 ); } Level2( r ); return( 0 ); }