User:Karthik0112358/Classify Var

From ASCEND
Jump to navigation Jump to search
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);
}