User:Karthik0112358/Classify Var: Difference between revisions
Jump to navigation
Jump to search
Created page with '<source lang="c"> </source>' |
No edit summary |
||
| Line 1: | Line 1: | ||
<source lang="c"> | <source lang="c"> | ||
static symchar *g_symbols[3]; | |||
#define STATEFLAG g_symbols[0] | |||
#define STATEINDEX g_symbols[1] | |||
#define OBSINDEX g_symbols[2] | |||
#define INTEG_OTHER_VAR -1L | |||
#define INTEG_ALGEBRAIC_VAR 0L | |||
#define INTEG_STATE_VAR 1L | |||
long Classify)Var(struct var_variable *v,long *index){ | |||
struct Instance *c, *d, *i; | |||
i = var_instance(v); | |||
asc_assert(i!=NULL); | |||
asc_assert(STATEFLAG!=NULL); | |||
asc_assert(STATEINDEX!=NULL); | |||
c = ChildByChar(i,STATEFLAG); | |||
d = ChildByChar(i,STATEINDEX); | |||
if(c == NULL || d == NULL || InstanceKind(c) != INTEGER_INST || InstanceKind(d) != INTEGER_INST || !AtomAssigned(c) || (!AtomAssigned(d) && GetIntegerAtomValue(c) != INTEG_OTHER_VAR)){ | |||
return INTEG_ALGEBRAIC_VAR; | |||
} | |||
if (index != NULL) { | |||
*index = GetIntegerAtomValue(d); | |||
} | |||
return GetIntegerAtomValue(c); | |||
} | |||
</source> | </source> | ||
Latest revision as of 01:00, 25 June 2011
static symchar *g_symbols[3]; #define STATEFLAG g_symbols[0] #define STATEINDEX g_symbols[1] #define OBSINDEX g_symbols[2] #define INTEG_OTHER_VAR -1L #define INTEG_ALGEBRAIC_VAR 0L #define INTEG_STATE_VAR 1L long Classify)Var(struct var_variable *v,long *index){ struct Instance *c, *d, *i; i = var_instance(v); asc_assert(i!=NULL); asc_assert(STATEFLAG!=NULL); asc_assert(STATEINDEX!=NULL); c = ChildByChar(i,STATEFLAG); d = ChildByChar(i,STATEINDEX); if(c == NULL || d == NULL || InstanceKind(c) != INTEGER_INST || InstanceKind(d) != INTEGER_INST || !AtomAssigned(c) || (!AtomAssigned(d) && GetIntegerAtomValue(c) != INTEG_OTHER_VAR)){ return INTEG_ALGEBRAIC_VAR; } if (index != NULL) { *index = GetIntegerAtomValue(d); } return GetIntegerAtomValue(c); }