int EE_Evaluate( char* e, double* result, int* a ) { //if( setjmp( jb ) ) // return( ERROR ); expression = e; ERANC = e; STRLWR( expression ); *result = 0; Parse(); if( ! *token ) return ( E_EMPTY ); *a = Level1( result ); return( E_OK ); }
////////////////////////////////////// // Save Levels Function ////////////////////////////////////// void SaveLevels(void) { Level1(); Level2(); Level3(); Level4(); Level5(); Level6(); Level7(); Level8(); // LevelLast(); FILE *fp; char S[MAXARRAY] = GAMEDIR; strcat(S, LEVELSFILE); fp = fopen(S, "w"); for(int i = 0; i < CL; i++) { error = fwrite(&(level[i]->midi), sizeof(MIDIFILE), 1, fp); if(error == 1) error = fwrite(&(level[i]->waveNum), sizeof(UINT), 1, fp); else return; if(error == 1) error = fwrite(&(level[i]->bitmapNum),sizeof(UINT), 1, fp); else return; if(error == 1) error = fwrite(&(level[i]->spriteNum),sizeof(UINT), 1, fp); else return; if(error == 1) error = fwrite(&(level[i]->zoneNum), sizeof(UINT), 1, fp); else return; if(error == 1) error = fwrite(&(level[i]->lWaveA), sizeof(UINT), level[i]->waveNum, fp); else return; if(error == level[i]->waveNum) error = fwrite(&(level[i]->lBitmapA), sizeof(BITMAPARRAY), level[i]->bitmapNum, fp); else return; if(error == level[i]->bitmapNum) error = fwrite(&(level[i]->lSpriteA), sizeof(SPRITEARRAY), level[i]->spriteNum, fp); else return; if(error == level[i]->spriteNum) error = fwrite(&(level[i]->lZoneA), sizeof(ZONEARRAY), level[i]->zoneNum, fp); else return; } fclose(fp); }
int Evaluate( CMCPforNTDoc* pDoc,char* e, double* result, int* a, USHORT ind ) { EVALUATENEXT = FALSE; double inde = ind; SetValue("i",&inde); pDocument = pDoc; index = ind; if( setjmp( jb ) ) return( ERRORNUM ); expression = (char*)e; ERANC = e; _strlwr(expression ); *result = 0; Parse(); if( ! *token ) ERR( E_EMPTY ); *a = Level1( result ); return( E_OK ); }
static void Level6( double* r ) { int i; int n; double a[3]; if( *token == '(' ) { Parse(); if( *token == ')' ) ERR( E_NOARG ); Level1( r ); if( *token != ')' ) ERR( E_UNBALAN ); Parse(); } else { if( type == NUM ) { *r = (double) atof( (char*)token ); Parse(); } else if( type == VAR ) { if( *expression == '(' ) { for( i = 0; Funcs[i].args; i++ ) if( ! strcmp((char*) token, Funcs[i].name ) ) { Parse(); n = 0; do { Parse(); if( *token == ')' || *token == ',' ) ERR( E_NOARG ); a[n] = 0; Level1( &a[n] ); n++; } while( n < 4 && *token == ',' ); Parse(); if( n != Funcs[i].args ) { strcpy((char*) token, Funcs[i].name ); ERR( E_NUMARGS ); } *r = Funcs[i].func( a[0], a[1], a[2]); return; } if( !Funcs[i].args ) ERR( E_BADFUNC ); } else if( ! GetValue((char*) token, r ) ) ERR( E_UNKNOWN ); Parse(); } else ERR( E_SYNTAX ); } }
static int Level6( double* r ) { int i; int n; double a[3]; if( *token == '(' ) { Parse(); if( *token == ')' ) return( E_NOARG ); Level1( r ); if( *token != ')' ) return( E_UNBALAN ); Parse(); } else { if( type == NUM ) { *r = (double) atof( token ); Parse(); } else if( type == VAR ) { if( *expression == '(' ) { for( i = 0; *Funcs[i].name; i++ ) if( ! strcmp( token, Funcs[i].name ) ) { Parse(); n = 0; do { Parse(); if( *token == ')' || *token == ',' ) return( E_NOARG ); a[n] = 0; Level1( &a[n] ); n++; } while( n < 4 && *token == ',' ); Parse(); if( n != Funcs[i].args ) { strcpy( token, Funcs[i].name ); return( E_NUMARGS ); } //*r = Funcs[i].func( a[0], a[1], a[2] ); *r = Funcs[i].func( a[0] ); return E_OK; } if( ! *Funcs[i].name ) return( E_BADFUNC ); } else if( ! GetValue( token, r ) ) return( E_UNKNOWN ); Parse(); } else return( E_SYNTAX ); } return E_OK; }