Changeset 41363 for trunk/Ohana/src/opihi/lib.shell/evaluate_stack.c
- Timestamp:
- May 23, 2020, 11:34:29 AM (6 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/lib.shell/evaluate_stack.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/lib.shell/evaluate_stack.c
r40487 r41363 30 30 31 31 // A & B value types all have 2 possible values 32 // 32 33 # define TWO_OP(A,B,FUNC) { \ 33 34 if ((stack[i - 2].type == A) && (stack[i - 1].type == B)) { \ … … 163 164 } 164 165 166 // TWO_OP(A,B,OP) : A,B types all have a main value and a secondary value at A+1 or B+1: 167 // ST_MATRIX -> ST_MATRIX_TMP 168 // ST_VECTOR -> ST_VECTOR_TMP 169 // ST_SCALAR_INT -> ST_SCALAR_FLT 165 170 status = FALSE; 166 171 TWO_OP (ST_MATRIX,ST_MATRIX,MM_binary); 167 172 TWO_OP (ST_MATRIX,ST_VECTOR,MV_binary); 168 TWO_OP (ST_MATRIX,ST_SCALAR_INT,MS_binary); 173 TWO_OP (ST_MATRIX,ST_SCALAR_INT,MS_binary); // handles ST_SCALAR_INT and ST_SCALAR_FLT 169 174 170 175 TWO_OP (ST_VECTOR,ST_MATRIX,VM_binary); 171 176 TWO_OP (ST_VECTOR,ST_VECTOR,VV_binary); 172 TWO_OP (ST_VECTOR,ST_SCALAR_INT,VS_binary); 173 174 TWO_OP (ST_SCALAR_INT,ST_MATRIX,SM_binary); 175 TWO_OP (ST_SCALAR_INT,ST_VECTOR,SV_binary); 176 TWO_OP (ST_SCALAR_INT,ST_SCALAR_INT,SS_binary); 177 178 TWO_OP (ST_SCALAR_FLT,ST_MATRIX,SM_binary); 179 TWO_OP (ST_SCALAR_FLT,ST_VECTOR,SV_binary); 180 TWO_OP (ST_SCALAR_FLT,ST_SCALAR_INT,SS_binary); 177 TWO_OP (ST_VECTOR,ST_SCALAR_INT,VS_binary); // handles ST_SCALAR_INT and ST_SCALAR_FLT 178 179 TWO_OP (ST_SCALAR_INT,ST_MATRIX,SM_binary); // handles ST_SCALAR_INT and ST_SCALAR_FLT 180 TWO_OP (ST_SCALAR_INT,ST_VECTOR,SV_binary); // handles ST_SCALAR_INT and ST_SCALAR_FLT 181 TWO_OP (ST_SCALAR_INT,ST_SCALAR_INT,SS_binary); // handles ST_SCALAR_INT and ST_SCALAR_FLT 182 183 // XXX: this block is not needed 184 // TWO_OP (ST_SCALAR_FLT,ST_MATRIX,SM_binary); 185 // TWO_OP (ST_SCALAR_FLT,ST_VECTOR,SV_binary); 186 // TWO_OP (ST_SCALAR_FLT,ST_SCALAR_INT,SS_binary); 187 188 TWO_OP (ST_VECTOR,ST_STRING,LW_binary); 189 TWO_OP (ST_STRING,ST_VECTOR,WL_binary); 181 190 182 191 TWO_OP (ST_STRING,ST_STRING,WW_binary); … … 350 359 } 351 360 361 // strip off surrounding " and return newly allocated string 362 char *clean_stack_name (char *name) { 363 364 if (!name) return name; 365 366 char *tmpname = name; 367 if (name[0] == '"') tmpname ++; 368 369 char *output = strcreate (tmpname); 370 371 int Nchar = strlen(output); 372 if (Nchar == 0) return output; // empty string 373 374 // squash ending quotes: 375 if (output[Nchar - 1] == '"') output[Nchar - 1] = 0; 376 377 return output; 378 } 379 352 380 void assign_stack (StackVar *stack, char *name, StackVarType type) { 353 stack->name = strcreate (name);381 stack->name = strcreate(name); 354 382 stack->type = type; 355 383 }
Note:
See TracChangeset
for help on using the changeset viewer.
