88 int stlen, svlen, sflen;
102 (void) fprintf(
STDOUT,
"\n\n/* *** TRIVIAL CASE, NO OPTION FOUND IN USER'S, TOOL'S AND/OR POSTPROCESSOR'S CALLS");
105 (void) fprintf(
STDOUT,
"\n\n/* *** TRIVIAL CASE, NO OPTION FOUND IN USER'S AND/OR TOOL'S CALLS %s */\n\n",
multiple(
'*', 60L));
109 (void) fprintf(
STDOUT,
"\n\n/* *** OPTIONS IN USER'S, TOOLS'S AND/OR POSTPROCESSOR'S CALLS ");
110 (void) fprintf(
STDOUT,
"AS DESCRIBED IN NETLIST %s */\n\n",
multiple(
'*', 40L));
112 (void) fprintf(
STDOUT,
"\n\n/* *** OPTIONS IN USER'S AND/OR TOOL'S CALLS ");
113 (void) fprintf(
STDOUT,
"AS DESCRIBED IN NETLIST %s */\n\n",
multiple(
'*', 58L));
116 (void) fprintf(
STDOUT,
"double *napa_check_for_option(const char *strfun, long id, const char *stropt, int ctr) {");
117 (void) fprintf(
STDOUT,
" /* 'ctr' 0: a parameter, 'ctr' 1: an option */\n");
123 (void) fprintf(
STDOUT,
" static double zero = 0.0;\n");
124 (void) fprintf(
STDOUT,
" if ( 0 == ctr ) {\n");
125 (void) fprintf(
STDOUT,
" return (double*) NULL;\n");
126 (void) fprintf(
STDOUT,
" } else {\n");
127 (void) fprintf(
STDOUT,
" return &zero;\n");
128 (void) fprintf(
STDOUT,
" }\n");
129 (void) fprintf(
STDOUT,
"}\n");
141 val = (
int***) malloc((
size_t) nii *
sizeof(
int**));
142 if ((
int***) NULL == val) {
143 print_error_location(
"construction of the 3D table of options", (
unsigned long*) NULL, (
unsigned long*) NULL);
144 (void) fprintf(
STDERR,
" dynamic memory allocation error\n");
147 for (ii = 0; ii < nii; ii++) {
148 val[ii] = (
int**) malloc((
size_t) njj *
sizeof(
int*));
149 if ((
int**) NULL == val[ii]) {
150 print_error_location(
"construction of the 3D table of options", (
unsigned long*) NULL, (
unsigned long*) NULL);
151 (void) fprintf(
STDERR,
" dynamic memory allocation error\n");
154 for (jj = 0; jj < njj; jj++) {
155 val[ii][jj] = (
int*) malloc((
size_t) nkk *
sizeof(
int));
156 if ((
int*) NULL == val[ii][jj]) {
157 print_error_location(
"construction of the 3D table of options", (
unsigned long*) NULL, (
unsigned long*) NULL);
158 (void) fprintf(
STDERR,
" dynamic memory allocation error\n");
165 for (ii = 0; ii < nii; ii++) {
166 for (jj = 0; jj < njj; jj++) {
167 for (kk = 0; kk < nkk; kk++) {
173 (void) fprintf(
STDOUT,
" long n;\n" );
174 (void) fprintf(
STDOUT,
" long o = -1L;\n");
176 (void) fprintf(
STDOUT,
" long f = -1L;\n");
178 (void) fprintf(
STDOUT,
" double *r0;\n" );
179 (void) fprintf(
STDOUT,
" static double zero = 0.0;\n");
180 (void) fprintf(
STDOUT,
" static double one = 1.0;\n");
200 (void) fprintf(
STDOUT,
"/* <<< the number of different instantiated functions */\n");
202 (void) fprintf(
STDOUT,
"/* <<< the max number of instantiations of a same function */\n");
204 (void) fprintf(
STDOUT,
"/* <<< the total number of different options in the netlist */\n");
206 (void) fprintf(
STDOUT,
"/* <<< the total number of different values in the netlist */\n");
208 (void) fprintf(
STDOUT,
"%*s /* <<< table_opt[#fun][#id][#opt] %*s */\n", (66 - stlen),
" ", 25,
" " );
235 val[fa][ia][oa] = va;
246 (void) fprintf(
STDOUT,
" {");
248 (void) fprintf(
STDOUT,
"\n {");
252 (void) fprintf(
STDOUT,
" {" );
254 (void) fprintf(
STDOUT,
" {");
258 (void) fprintf(
STDOUT,
" ");
260 fprintf(
STDOUT,
"%*d", svlen, val[fa][ia][oa]);
263 (void) fprintf(
STDOUT,
" },");
265 (void) fprintf(
STDOUT,
" }" );
268 (void) fprintf(
STDOUT,
", " );
272 (void) fprintf(
STDOUT,
"\n");
276 (void) fprintf(
STDOUT,
" }" );
281 (void) fprintf(
STDOUT,
" },");
283 (void) fprintf(
STDOUT,
" },");
286 (void) fprintf(
STDOUT,
" },");
291 (void) fprintf(
STDOUT,
"\n");
294 (void) fprintf(
STDOUT,
"\n };\n");
296 (void) fprintf(
STDOUT,
" r0 = ( 0 == ctr ) ? (double*) NULL : &zero;\n");
298 (void) fprintf(
STDOUT,
" for (n = 0L; n < nfun; n++) {\n");
299 (void) fprintf(
STDOUT,
" if ( 0 == strncmp(list_fun[n], strfun, %d) ) {\n", sz);
300 (void) fprintf(
STDOUT,
" f = n;\n");
301 (void) fprintf(
STDOUT,
" break;\n");
302 (void) fprintf(
STDOUT,
" }\n");
303 (void) fprintf(
STDOUT,
" }\n");
304 (void) fprintf(
STDOUT,
" if ( (-1L == f) || (0L > id) || (nid <= id) ) {\n");
305 (void) fprintf(
STDOUT,
" return r0;\n");
306 (void) fprintf(
STDOUT,
" }\n");
308 (void) fprintf(
STDOUT,
" if ( (0 != strncmp(strfun, list_fun[0L], %d)) || (0L > id) || (nid <= id) ) {\n", sz);
309 (void) fprintf(
STDOUT,
" return r0;\n");
310 (void) fprintf(
STDOUT,
" }\n");
312 (void) fprintf(
STDOUT,
" if ( 0 == strncmp(\"_another_\", stropt, %d) ) {\n", sz);
313 (void) fprintf(
STDOUT,
" if ( 0 != ctr ) {\n");
315 (void) fprintf(
STDOUT,
" for (n = 0L; n < nopt; n++) {\n");
316 (void) fprintf(
STDOUT,
" if ( 0 < table_opt[f][id][n] ) {\n");
317 (void) fprintf(
STDOUT,
" return &one;\n");
318 (void) fprintf(
STDOUT,
" }\n");
319 (void) fprintf(
STDOUT,
" }\n");
321 (void) fprintf(
STDOUT,
" for (n = 0L; n < nopt; n++) {\n");
322 (void) fprintf(
STDOUT,
" if ( 0 < table_opt[0][id][n] ) {\n");
323 (void) fprintf(
STDOUT,
" return &one;\n");
324 (void) fprintf(
STDOUT,
" }\n");
325 (void) fprintf(
STDOUT,
" }\n");
327 (void) fprintf(
STDOUT,
" return &zero;\n");
328 (void) fprintf(
STDOUT,
" } else {\n");
329 (void) fprintf(
STDOUT,
" return (double*) NULL;\n");
330 (void) fprintf(
STDOUT,
" }\n");
331 (void) fprintf(
STDOUT,
" }\n");
332 (void) fprintf(
STDOUT,
" for (n = 0L; n < nopt; n++) {\n");
333 (void) fprintf(
STDOUT,
" if ( 0 == strncmp(list_opt[n], stropt, %d) ) {\n", sz);
334 (void) fprintf(
STDOUT,
" o = n;\n");
335 (void) fprintf(
STDOUT,
" break;\n");
336 (void) fprintf(
STDOUT,
" }\n");
337 (void) fprintf(
STDOUT,
" }\n");
338 (void) fprintf(
STDOUT,
" if ( -1L == o ) {\n");
339 (void) fprintf(
STDOUT,
" return r0;\n");
340 (void) fprintf(
STDOUT,
" }\n");
341 (void) fprintf(
STDOUT,
" if ( 0 != ctr ) {\n");
343 (void) fprintf(
STDOUT,
" if ( 0 < table_opt[f][id][o] ) {\n");
344 (void) fprintf(
STDOUT,
" table_opt[f][id][o] = -table_opt[f][id][o];\n");
345 (void) fprintf(
STDOUT,
" return &one;\n");
346 (void) fprintf(
STDOUT,
" }\n");
348 (void) fprintf(
STDOUT,
" if ( 0 < table_opt[0][id][o] ) {\n");
349 (void) fprintf(
STDOUT,
" table_opt[0][id][o] = -table_opt[0][id][o];\n");
350 (void) fprintf(
STDOUT,
" return &one;\n");
351 (void) fprintf(
STDOUT,
" }\n");
353 (void) fprintf(
STDOUT,
" } else {\n");
355 (void) fprintf(
STDOUT,
" return list_val[ABS(table_opt[f][id][o])];\n");
357 (void) fprintf(
STDOUT,
" return list_val[ABS(table_opt[0][id][o])];\n");
359 (void) fprintf(
STDOUT,
" }\n");
360 (void) fprintf(
STDOUT,
" return r0;\n");
361 (void) fprintf(
STDOUT,
"}\n\n");
363 for (ii = 0; ii < nii; ii++) {
364 for (jj = 0; jj < njj; jj++) {
385 char *s1 = (
char*) NULL;
386 char *s2 = (
char*) NULL;
387 char *s3 = (
char*) NULL;
388 char *s4 = (
char*) NULL;
405 (void) strcpy(toko, tok);
406 (void) strcpy(tokv, tok);
408 s4 = strstr(s3,
"::");
409 if ((
char*) NULL != s4) {
423 s2 = strstr(tokv,
"::");
424 if ((
char*) NULL != s2) {
425 (void) strcpy(tokv, s2 + 2);
427 (void) strcpy(tokv,
"NULL");
437 if (0 == strcmp(
"NULL", tokv)) {
440 if (0 == strncmp(
"dconst__", tokv, 8)) {
444 (void) fprintf(
STDERR,
" (%s::%s) : the value must be a constant number\n", toko, tokv);
458 (void) strcpy(toko, tok);
459 (void) strcpy(tokv, tok);
461 s4 = strstr(s3,
"::");
462 if ((
char*) NULL != s4) {
476 s2 = strstr(tokv,
"::");
477 if ((
char*) NULL != s2) {
478 (void) strcpy(tokv, s2 + 2);
480 (void) strcpy(tokv,
"NULL");
490 if (0 == strcmp(
"NULL", tokv)) {
493 if (0 == strncmp(
"dconst__", tokv, 8)) {
497 (void) fprintf(
STDERR,
" (%s::%s) : the value must be a constant number\n", toko, tokv);
516 for (o = 0L; o < count; o++) {
538 for (o = 0L; o < count; o++) {
566 char *s1 = (
char*) NULL;
567 char *s2 = (
char*) NULL;
568 char *s3 = (
char*) NULL;
569 static int first =
true;
623 if (0 == strcmp(tok2,
",")) {
626 if (0 == strcmp(tok1, tok2)) {
646 (void) strcpy(tok1,
Post_List[p].function);
654 if (0 == strcmp(tok2,
",")) {
657 if (0 == strcmp(tok1, tok2)) {
682 if ((
' ' == *s2) && (
' ' != *(s2+1))) {
char local_funstr[16383L]
void collect_string_of_options(void)
char local_funset[255L][2047L]
void collect_string_of_functions(void)
char local_valset[255L][2047L]
char local_optset[255L][2047L]
char local_valstr[16383L]
void check_option_function(void)
char local_optstr[16383L]
void print_error_location(const char *type, const unsigned long *mlin, const unsigned long *mfil)
EXTERN OPTION_TYPE Option_List
EXTERN POST_TYPE Post_List[63L]
EXTERN long Num_UserTools
EXTERN USERTOOL_TYPE UserTool_List[511L]
void print_error_banner_and_exit(void)
char * get_token(char *str, char *tok, long keep_quotes)
char * build_name(const char *sgn, char *tok, long lr_type)
char * multiple(char c, long n)