src/mdd/mdd_literal.c File Reference

#include "mdd.h"
Include dependency graph for mdd_literal.c:

Go to the source code of this file.

Functions

mdd_tmdd_literal (mdd_manager *mgr, int mddid, array_t *values)

Function Documentation

mdd_t* mdd_literal ( mdd_manager mgr,
int  mddid,
array_t values 
)

Definition at line 21 of file mdd_literal.c.

00025 {
00026   mvar_type mvar;
00027   mdd_t *one, *zero;
00028   array_t *allValues;    /* Holds one in pos i iff value i is allowed */
00029   int i;                 /* iterator                                  */   
00030   int value;             /* iterates over values                      */
00031   mdd_t *result;
00032   
00033   mvar = mdd_get_var_by_id(mgr, mddid);
00034   one = mdd_one(mgr);
00035   zero = mdd_zero(mgr);
00036   allValues = array_alloc(mdd_t *, mvar.values);
00037 
00038   /* first set every value to zero */
00039   for(i = 0; i < mvar.values; i++)
00040     array_insert(mdd_t *, allValues, i, zero);
00041   
00042   /* then set requested values to one */
00043   arrayForEachItem(int, values, i, value)
00044     array_insert(mdd_t *, allValues, value, one);
00045   
00046   result = mdd_case(mgr, mddid, allValues);
00047   array_free(allValues);
00048 
00049   mdd_free(one);
00050   mdd_free(zero);
00051   
00052   return result;
00053 }


Generated on Tue Jan 12 13:57:26 2010 for glu-2.2 by  doxygen 1.6.1