70 |
#include "tmpnum.h" |
#include "tmpnum.h" |
71 |
#include "mathinst.h" |
#include "mathinst.h" |
72 |
|
|
73 |
static const char panic_msg[]="Incorrect type passed"; |
static const char panic_msg[]="Incorrect type '%s' passed"; |
74 |
#define PANIC_INCORRECT_TYPE Asc_Panic(2,__FUNCTION__,panic_msg); |
#define PANIC_INCORRECT_TYPE(i) ASC_PANIC(panic_msg,instance_typename(i)) |
75 |
|
|
76 |
enum Expr_enum GetInstanceRelationType(CONST struct Instance *i) |
enum Expr_enum GetInstanceRelationType(CONST struct Instance *i) |
77 |
{ |
{ |
79 |
if (i->t == REL_INST) { |
if (i->t == REL_INST) { |
80 |
return RELN_INST(i)->type; /* the implementation kind */ |
return RELN_INST(i)->type; /* the implementation kind */ |
81 |
}else{ |
}else{ |
82 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
83 |
} |
} |
84 |
} |
} |
85 |
|
|
89 |
if (i->t == REL_INST) { |
if (i->t == REL_INST) { |
90 |
return RELN_INST(i)->ptr; |
return RELN_INST(i)->ptr; |
91 |
}else{ |
}else{ |
92 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
93 |
} |
} |
94 |
} |
} |
95 |
|
|
101 |
*type = RELN_INST(i)->type; |
*type = RELN_INST(i)->type; |
102 |
return RELN_INST(i)->ptr; |
return RELN_INST(i)->ptr; |
103 |
}else{ |
}else{ |
104 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
105 |
} |
} |
106 |
} |
} |
107 |
|
|
113 |
*type = RELN_INST(i)->type; |
*type = RELN_INST(i)->type; |
114 |
return RELN_INST(i)->ptr; |
return RELN_INST(i)->ptr; |
115 |
}else{ |
}else{ |
116 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
117 |
|
|
118 |
} |
} |
119 |
} |
} |
125 |
if (i->t == LREL_INST) { |
if (i->t == LREL_INST) { |
126 |
return LRELN_INST(i)->ptr; |
return LRELN_INST(i)->ptr; |
127 |
}else{ |
}else{ |
128 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
129 |
|
|
130 |
} |
} |
131 |
} |
} |
136 |
if (i->t == LREL_INST) { |
if (i->t == LREL_INST) { |
137 |
return LRELN_INST(i)->ptr; |
return LRELN_INST(i)->ptr; |
138 |
}else{ |
}else{ |
139 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
140 |
|
|
141 |
} |
} |
142 |
} |
} |
147 |
if (InstanceKind(i) == LREL_INST) { |
if (InstanceKind(i) == LREL_INST) { |
148 |
return LRELN_INST(i)->ptr; |
return LRELN_INST(i)->ptr; |
149 |
}else{ |
}else{ |
150 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
151 |
|
|
152 |
} |
} |
153 |
} |
} |
218 |
if (i->t == WHEN_INST) { |
if (i->t == WHEN_INST) { |
219 |
return W_INST(i)->bvar; |
return W_INST(i)->bvar; |
220 |
}else{ |
}else{ |
221 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
222 |
|
|
223 |
} |
} |
224 |
} |
} |
229 |
if (i->t == WHEN_INST) { |
if (i->t == WHEN_INST) { |
230 |
return W_INST(i)->cases; |
return W_INST(i)->cases; |
231 |
}else{ |
}else{ |
232 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
|
|
|
233 |
} |
} |
234 |
} |
} |
235 |
|
|
258 |
case WHEN_INST: |
case WHEN_INST: |
259 |
return W_INST(i)->whens; |
return W_INST(i)->whens; |
260 |
default: |
default: |
261 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
262 |
} |
} |
263 |
} |
} |
264 |
|
|
268 |
if (i->t == WHEN_INST) { |
if (i->t == WHEN_INST) { |
269 |
W_INST(i)->bvar = whenvars; |
W_INST(i)->bvar = whenvars; |
270 |
}else{ |
}else{ |
271 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
272 |
} |
} |
273 |
} |
} |
274 |
|
|
278 |
if (i->t == WHEN_INST) { |
if (i->t == WHEN_INST) { |
279 |
W_INST(i)->cases = whencases; |
W_INST(i)->cases = whencases; |
280 |
}else{ |
}else{ |
281 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
282 |
} |
} |
283 |
} |
} |
284 |
|
|
303 |
Asc_Panic(2, __FUNCTION__, "Attempt to reassign RelationPointer."); |
Asc_Panic(2, __FUNCTION__, "Attempt to reassign RelationPointer."); |
304 |
} |
} |
305 |
}else{ |
}else{ |
306 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
307 |
} |
} |
308 |
} |
} |
309 |
|
|
316 |
Asc_Panic(2, __FUNCTION__, "Attempted reassignment to logrel ptr"); |
Asc_Panic(2, __FUNCTION__, "Attempted reassignment to logrel ptr"); |
317 |
} |
} |
318 |
}else{ |
}else{ |
319 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
320 |
} |
} |
321 |
} |
} |
322 |
|
|
380 |
} |
} |
381 |
break; |
break; |
382 |
default: |
default: |
383 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
384 |
} |
} |
385 |
} |
} |
386 |
|
|
400 |
} |
} |
401 |
break; |
break; |
402 |
default: |
default: |
403 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
404 |
} |
} |
405 |
} |
} |
406 |
|
|
432 |
return 0; |
return 0; |
433 |
} |
} |
434 |
default: |
default: |
435 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
436 |
} |
} |
437 |
} |
} |
438 |
|
|
461 |
ASC_PANIC("c out of bounds in LogRelationsForInstance.\n"); |
ASC_PANIC("c out of bounds in LogRelationsForInstance.\n"); |
462 |
} |
} |
463 |
default: |
default: |
464 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
465 |
} |
} |
466 |
exit(2);/* NOT REACHED. Needed to keep gcc from whining */ |
exit(2);/* NOT REACHED. Needed to keep gcc from whining */ |
467 |
} |
} |
503 |
} |
} |
504 |
break; |
break; |
505 |
default: |
default: |
506 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
507 |
} |
} |
508 |
} |
} |
509 |
|
|
544 |
} |
} |
545 |
break; |
break; |
546 |
default: |
default: |
547 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
548 |
} |
} |
549 |
} |
} |
550 |
|
|
618 |
return 0; |
return 0; |
619 |
} |
} |
620 |
default: |
default: |
621 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
622 |
} |
} |
623 |
} |
} |
624 |
|
|
690 |
ASC_PANIC("c out of bounds in WhensForInstance.\n"); |
ASC_PANIC("c out of bounds in WhensForInstance.\n"); |
691 |
} |
} |
692 |
default: |
default: |
693 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
694 |
} |
} |
695 |
exit(2);/* NOT REACHED. Needed to keep gcc from whining */ |
exit(2);/* NOT REACHED. Needed to keep gcc from whining */ |
696 |
} |
} |
783 |
gl_append_ptr(W_INST(i)->whens,(VOIDPTR)when); |
gl_append_ptr(W_INST(i)->whens,(VOIDPTR)when); |
784 |
break; |
break; |
785 |
default: |
default: |
786 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
787 |
} |
} |
788 |
} |
} |
789 |
|
|
854 |
if (c>0) gl_delete(W_INST(i)->whens,c,0); |
if (c>0) gl_delete(W_INST(i)->whens,c,0); |
855 |
break; |
break; |
856 |
default: |
default: |
857 |
PANIC_INCORRECT_TYPE; |
PANIC_INCORRECT_TYPE(i); |
858 |
} |
} |
859 |
} |
} |
860 |
|
|