Changeset 6c8772 in git for modules/tools/misc.cc
- Timestamp:
- Apr 1, 1999, 12:03:24 AM (25 years ago)
- Branches:
- (u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
- Children:
- dcafdbfd5e7cf5689011aad6c9b81fd43bd118b1
- Parents:
- 740e1f7291b169d818475089a70366a328feb8d1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
modules/tools/misc.cc
r740e1f7 r6c8772 2 2 * Computer Algebra System SINGULAR * 3 3 ****************************************/ 4 /* $Id: misc.cc,v 1. 4 1999-03-24 13:04:20krueger Exp $ */4 /* $Id: misc.cc,v 1.5 1999-03-31 22:03:22 krueger Exp $ */ 5 5 /* 6 6 * ABSTRACT: lib parsing … … 28 28 #define SYSTYP_HPUX10 3 29 29 30 #if 030 #if 1 31 31 # define logx printf 32 32 #else … … 75 75 if( strcmp(n, "SELF") == 0) { 76 76 tok = SELF_CMD; 77 logx("IsCmd: [%d] %s\n", tok, n); 78 return tok; 79 } 80 81 if( strcmp(n, "none") == 0) { 82 tok = NONE; 83 logx("IsCmd: [%d] %s\n", tok, n); 77 84 return tok; 78 85 } … … 225 232 } 226 233 module->revision = (char *)malloc(strlen(libnamebuf)+1); 227 strcpy(module->revision, libnamebuf); 234 memset(module->revision, '\0', strlen(libnamebuf)+1); 235 memcpy(module->revision, libnamebuf, strlen(libnamebuf)); 228 236 } 229 237 … … 257 265 258 266 /*========================================================================*/ 259 /* procdefv Add2proclist(procdefv pi, char *name)*/260 267 void Add2proclist( 261 268 moddefv module, … … 270 277 271 278 memset((void *)&pnew, '\0', sizeof(procdef)); 279 272 280 pnew.procname = (char *)malloc(strlen(name)+1); 273 281 if(pnew.procname==NULL) printf("Error 1\n"); 282 memset(pnew.procname, '\0', strlen(name)+1); 283 memcpy(pnew.procname, name, strlen(name)); 284 274 285 pnew.funcname = (char *)malloc(strlen(name)+1); 286 if(pnew.funcname==NULL) printf("Error 1\n"); 275 287 memset(pnew.funcname, '\0', strlen(name)+1); 276 memset(pnew.procname, '\0', strlen(name)+1); 288 memcpy(pnew.funcname, name, strlen(name)); 289 277 290 pnew.param = NULL; 278 291 (pnew).is_static = 0; 279 292 (pnew).paramcnt = 0; 280 strcpy(pnew.procname, name); 281 strcpy(pnew.funcname, name); 282 293 pnew.c_code = NULL; 294 283 295 pnew.return_val.name = (char *)malloc(strlen(ret_val)+1); 284 296 memset(pnew.return_val.name, '\0', strlen(ret_val)+1); … … 442 454 } 443 455 456 void gen_func_param_check( 457 FILE *fp, 458 procdefv pi, 459 int i 460 ) 461 { 462 fprintf(fp, " if(v==NULL) goto mod_%s_error;\n", pi->funcname); 463 fprintf(fp, " tok = v->Typ();\n"); 464 fprintf(fp, " if((index=iiTestConvert(tok, %s))==0)\n", 465 pi->param[i].typname); 466 fprintf(fp, " goto mod_%s_error;\n", pi->funcname); 467 fprintf(fp, " v_save = v->next;\n"); 468 fprintf(fp, " v->next = NULL;\n"); 469 fprintf(fp, " if(iiConvert(tok, %s, index, v, res%d))\n", 470 pi->param[i].typname, i); 471 fprintf(fp, " goto mod_%s_error;\n", pi->funcname); 472 fprintf(fp, " v = v_save;\n"); 473 } 474 444 475 void generate_function(procdefv pi, FILE *fp) 445 476 { … … 450 481 if(pi->paramcnt>0) { 451 482 if(pi->param[0].typ==SELF_CMD) { 483 if(pi->c_code != NULL) fprintf(fp, "%s\n", pi->c_code); 484 452 485 fprintf(fp, " return(%s(res,h));\n", pi->funcname); 453 486 fprintf(fp, "}\n\n"); 454 487 } 455 488 else { 456 fprintf(fp, " leftv v = h ;\n");489 fprintf(fp, " leftv v = h, v_save;\n"); 457 490 fprintf(fp, " int tok = NONE, index = 0;\n"); 458 491 for (i=0;i<pi->paramcnt; i++) … … 461 494 fprintf(fp, "\n"); 462 495 463 for (i=0;i<pi->paramcnt; i++) { 464 fprintf(fp, " if(v==NULL) goto mod_%s_error;\n", pi->funcname); 465 fprintf(fp, " tok = v->Typ();\n"); 466 fprintf(fp, " printf(\"test %d.1\\n\");\n", i); 467 fprintf(fp, " if((index=iiTestConvert(tok, %s))==0)\n", 468 pi->param[i].typname); 469 logx("==>'%s'\n", pi->param[i].typname); 470 fprintf(fp, " goto mod_%s_error;\n", pi->funcname); 471 fprintf(fp, " printf(\"test %d.2\\n\");\n", i); 472 fprintf(fp, " if(iiConvert(tok, %s, index, v, res%d))\n", 473 pi->param[i].typname, cnt); 474 fprintf(fp, " goto mod_%s_error;\n", pi->funcname); 475 fprintf(fp, " printf(\"test %d.3\\n\");\n", i); 476 fprintf(fp, " v = v->next;\n"); 477 } 496 if(pi->c_code != NULL) fprintf(fp, "%s\n", pi->c_code); 497 498 for (i=0;i<pi->paramcnt; i++) gen_func_param_check(fp, pi, i); 499 478 500 fprintf(fp, " if(v!=NULL) { tok = v->Typ(); goto mod_%s_error; }\n", 479 501 pi->funcname); 480 fprintf(fp, " printf(\"test before return\\n\");\n");481 502 482 503 fprintf(fp, "\n"); … … 513 534 } 514 535 } else { 515 fprintf(fp, " return(%s(res));\n}\n\n", pi->funcname); 536 switch( pi->return_val.typ) { 537 case SELF_CMD: 538 fprintf(fp, " return(%s(res));\n}\n\n", pi->funcname); 539 break; 540 541 case NONE: 542 fprintf(fp, " res->rtyp = %s;\n", pi->return_val.typname); 543 fprintf(fp, " res->data = NULL;\n"); 544 fprintf(fp, " %s();\n", pi->funcname); 545 fprintf(fp, " return FALSE;\n}\n\n"); 546 break; 547 548 default: 549 fprintf(fp, " res->rtyp = %s;\n", pi->return_val.typname); 550 fprintf(fp, " res->data = (void *)%s();\n", pi->funcname); 551 fprintf(fp, " return FALSE;\n}\n\n"); 552 } 553 516 554 } 517 555 … … 613 651 fprintf(fp, "CC\t= gcc\n"); 614 652 fprintf(fp, "CXX\t= gcc\n"); 615 fprintf(fp, "CFLAGS\t= -DNDEBUG - I. -I../include\n");653 fprintf(fp, "CFLAGS\t= -DNDEBUG -DBUILD_MODULE -I. -I../include\n"); 616 654 fprintf(fp, "#LD\t=\n"); 617 655 fprintf(fp, "\n");
Note: See TracChangeset
for help on using the changeset viewer.