Definition at line 37 of file nd.c.
37 {
38 long out;
39 long in;
40 long kd;
41 char sgn[2] = {'\0'};
42 char brc[3] = {'\0'};
45 char *s = (char*) NULL;
46 char *str = (char*) NULL;
47 long msg;
48 long determined_ptr = 0L;
49
53
54 switch (kd) {
55
56
57
58
59
60
61
62
70 out = determined_ptr;
71 determined_ptr++;
72 }
73 break;
74
75
76
77
78
79
80
91 out = determined_ptr;
92 determined_ptr++;
93 }
96 }
97 break;
98
99
100
101
102
103
110 out = determined_ptr;
111 determined_ptr++;
112 }
113 break;
114
115
116
117
118
119
126 out = determined_ptr;
127 determined_ptr++;
128 }
131 }
132 break;
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
158 out = determined_ptr;
159 determined_ptr++;
160 }
161 break;
162
163
164
165
166
167
168
169
178 out = determined_ptr;
179 determined_ptr++;
180 }
181 break;
182
183
184
185
186
187
188
197 out = determined_ptr;
198 determined_ptr++;
199 }
202 }
203 break;
204
205
206
207
208
209
210
211
220 out = determined_ptr;
221 determined_ptr++;
222 }
223 break;
224
225
226
227
228
229
230
239 out = determined_ptr;
240 determined_ptr++;
241 break;
242 }
249 out = determined_ptr;
250 determined_ptr++;
251 break;
252 }
253 }
254 break;
255
256
257
258
259
260
261
262
263
264
265
270 }
271 for (;;) {
274 break;
275 }
280 out = determined_ptr;
281 determined_ptr++;
282 break;
283 }
284 }
285 break;
286
287
288
289
290
291
296 for (;;) {
299 break;
300 }
305 out = determined_ptr;
306 determined_ptr++;
307 break;
308 }
309 }
310 break;
311
312
313
314
315
316
317
319 for (;;) {
322 break;
323 }
326 break;
327 }
332 out = determined_ptr;
333 determined_ptr++;
334 break;
335 }
336 }
337 break;
338
339
340
341
342
343
347 for (;;) {
350 break;
351 }
356 out = determined_ptr;
357 determined_ptr++;
358 break;
359 }
360 }
361 break;
362
363
364
365
366
367
368
370 s = str;
371 for (;;) {
374 break;
375 }
380 out = determined_ptr;
381 determined_ptr++;
382 break;
383 }
384 }
385 str = s;
386 for (;;) {
389 break;
390 }
395 out = determined_ptr;
396 determined_ptr++;
397 break;
398 }
399 }
400 break;
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
463 (void) fprintf(
STDERR,
" Width limitation has no effect on node <%s>\n",
Node_List[out].name1);
465 }
469 out = determined_ptr;
470 determined_ptr++;
471 break;
472
473
474
475
476
477
478
479
480
481
487 out = determined_ptr;
488 determined_ptr++;
491 }
494 (void) fprintf(
STDERR,
" Width limitation has no effect on node <%s>\n",
Node_List[out].name1);
496 }
497 break;
498
499
500
501
502
503
504
505
506
507
508
509
520 out = determined_ptr;
521 determined_ptr++;
522 break;
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
567 out = determined_ptr;
568 determined_ptr++;
569 break;
570
571
572
573
574
575
576
582 out = determined_ptr;
583 determined_ptr++;
584 for (;;) {
587 break;
588 }
593 }
594 }
595 }
596 break;
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
653 out = determined_ptr;
654 determined_ptr++;
655 break;
656
657
658
659
660
661
663 for (;;) {
666 break;
667 }
668 (void) strcpy(tok2, tok1);
669 }
674 out = determined_ptr;
675 determined_ptr++;
676 }
677 break;
678
679
680
681
682
683
684
690 out = determined_ptr;
691 determined_ptr++;
692 for (;;) {
695 break;
696 }
701 }
702 }
703 }
704 break;
705
706
707
708
709
710
711
716 out = determined_ptr;
717 determined_ptr++;
718 break;
719
720
721
722
723
724
725
726
727
728
731 if (0 == strcmp(brc, "()")) {
732 if (0 == strcmp(tok1, "digital")) {
735 (void) strcpy(
Node_List[out].value, str);
736 } else if (0 == strcmp(tok1, "analog")) {
739 (void) strcpy(
Node_List[out].value, str);
740 } else {
743 }
744 } else {
747 }
749 out = determined_ptr;
750 determined_ptr++;
754 }
755 break;
756
757
758
759
760
761
765 if (0 == strcmp(brc, "()")) {
766 if (0 == strcmp(tok1, "analog")) {
769 (void) strcpy(
Node_List[out].value, str);
770 } else if (0 == strcmp(tok1, "digital")) {
773 (void) strcpy(
Node_List[out].value, str);
774 } else {
777 }
778 } else {
781 }
783 out = determined_ptr;
784 determined_ptr++;
788 }
789 break;
790
791
792
793
794
795
796
797
798
799
800
801
812 break;
816 break;
817 }
819 out = determined_ptr;
820 determined_ptr++;
821 break;
822
823
824
825
826
828 default :
831 }
832
833
834
835
839 (void) fprintf(
STDERR,
" the type of node <%s> is not compatible with type declaration\n",
Node_List[out].name1);
843 out = determined_ptr;
844 determined_ptr++;
845 }
846 }
847 }
848
851 for (;;) {
854 break;
855 }
860 }
861 }
862 }
863 }
864
867 for (;;) {
870 break;
871 }
876 }
877 }
878 }
879 }
880
884 (void) fprintf(
STDERR,
" being analog type, node <%s> cannot be width limited\n",
Node_List[out].name1);
885 }
886 }
887 msg = false;
891 (void) fprintf(
STDERR,
" Sorry, there is no way to determine the type of\n");
892 (void) fprintf(
STDERR,
" node <%s> by simple inspection of the netlist\n",
Node_List[out].name1);
893 msg = true;
894 }
895 }
896 if (msg) {
897 (void) fprintf(
STDERR,
"\n Probable cause of type undetermination is an incorrect description.\n");
898 (void) fprintf(
STDERR,
" Chameleonic nodes may introduce also an undetermination. In this case, NAPA\n");
899 (void) fprintf(
STDERR,
" needs a hint. Use a 'declare' instruction to remove an undetermination of type.\n");
900 (void) fprintf(
STDERR,
" You will never hide nor introduce a mistake with a declaration. As NAPA\n");
901 (void) fprintf(
STDERR,
" determines the type of the nodes by inspection of the netlist, any mismatch\n");
902 (void) fprintf(
STDERR,
" will be safely reported.\n\n");
903 }
904 return;
905}
void print_warning_location(const char *type, const unsigned long *mlin, const unsigned long *mfil)
void print_error_location(const char *type, const unsigned long *mlin, const unsigned long *mfil)
void swap_nodes(long i, long j)
long array_id(const char *identifier)
long node_id(const char *identifier)
long var_id(const char *identifier)
EXTERN VAR_TYPE Var_List[2047L]
EXTERN ARRAY_TYPE Array_List[63L]
EXTERN NODE_TYPE Node_List[4095L]
#define DIFFERENTIATOR_KIND
EXTERN int Terminate_Flag
EXTERN TERMINATE_TYPE Terminate_List
EXTERN DUMP_TYPE Dump_List
#define DIGITAL_DATA_TYPE
char * get_token_between_braces(char *str, char *brc, char *tok)
char * get_sign_and_token(char *str, char *sgn, char *tok)
References ADC_KIND, ALGEBRA_KIND, ALU_KIND, ANALOG_DATA_TYPE, AND_KIND, array_id(), Array_List, AVERAGE_KIND, BSHIFT_KIND, BTOI_KIND, BUF_KIND, BWAND_KIND, BWINV_KIND, BWNAND_KIND, BWNOR_KIND, BWOR_KIND, BWXNOR_KIND, BWXOR_KIND, CHG_KIND, CLIP_KIND, CLOCK_KIND, COMP_KIND, CONST_KIND, COPY_KIND, COS_KIND, DAC_KIND, DALGEBRA_KIND, DC_KIND, DELAY1_KIND, DELAY2_KIND, DELAY3_KIND, DELAY_KIND, DIFFERENTIATOR_KIND, DIGITAL_DATA_TYPE, DIV_KIND, DTOI_KIND, DTOOL_KIND, Dump_Flag, Dump_List, DUSER_KIND, EQUAL_KIND, Error_Flag, FZAND_KIND, FZBUF_KIND, FZINV_KIND, FZNAND_KIND, FZNOR_KIND, FZOR_KIND, FZXNOR_KIND, FZXOR_KIND, GAIN_KIND, get_sign_and_token(), get_token_between_braces(), HEX_DATA_TYPE, HOLD_KIND, IALGEBRA_KIND, INTEGRATOR_KIND, INV_KIND, ISEMPTY, ITOB_KIND, ITOD_KIND, ITOOL_KIND, IUSER_KIND, LATCH_KIND, LSHIFT_KIND, MAX_KIND, MERGE_KIND, MIN_KIND, MOD_KIND, MULLER_KIND, MUX_KIND, NAND_KIND, NO, node_id(), Node_List, NOISE_KIND, NOR_KIND, Num_Nodes, OFFSET_KIND, OR_KIND, OSC_KIND, POLY_KIND, print_error_location(), print_warning_location(), PROD_KIND, QUANT_KIND, RAM2_KIND, RAM_KIND, RECT_KIND, RELAY_KIND, RIP_KIND, ROM2_KIND, ROM_KIND, RSHIFT1_KIND, RSHIFT2_KIND, RSHIFT_KIND, SIGN_KIND, SIN_KIND, SQUARE_KIND, STDERR, STEP_KIND, STRLENGTH, SUB_KIND, SUM_KIND, swap_nodes(), Terminate_Flag, Terminate_List, TEST_KIND, TOGGLE_KIND, TRACK_KIND, TRIANGLE_KIND, TRIG_KIND, UADC_KIND, UDAC_KIND, UNDEFINED, UNKNOWN_KIND, UNKNOWN_TYPE, var_id(), Var_List, WSUM_KIND, XNOR_KIND, XOR_KIND, YES, and ZERO_KIND.
Referenced by main().