// ------------------------------------------------------------------------------------------------------------------------------------- // Function: AllenVM_CPU_BASE_TRY(); // Purpose: Try a given expression. // Returns: 0/1 wether the expression is factible. // ------------------------------------------------------------------------------------------------------------------------------------- static int AllenVM_CPU_BASE_TRY(struct AllenInterp *i, int argc, char **argv, void *pd) { if(argc != 2 && argc != 4) return AllenVM_CPU_Error(i,argv[0]); // Check parameters. if(argc == 4 && strcmp(argv[2],TBASE_CTH)) return AllenVM_CPU_Error(i,argv[0]); // Check if there is catch. char buf[TBASE_BSIZE]; register int c; // Buffer and parameters. if((c = AllenVM_InterpEval(i,argv[1])) != Allen_VM_OK) // Evaluate the expression. if(argc==4) c = AllenVM_InterpEval(i,argv[3]); // Look for exceptions. snprintf(buf,TBASE_BSIZE,"%f",(float) c); // Copy result to buffer as float. AllenVM_InterpSetResult(i,buf); // Set interpreter result. return Allen_VM_OK; // Everything ok. }