#include "mdd.h"
Go to the source code of this file.
Functions | |
mdd_t * | mdd_literal (mdd_manager *mgr, int mddid, array_t *values) |
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 }