buddy: rename libbdd to libbddx

* buddy/src/bdd.h, buddy/src/bvec.h, buddy/src/fdd.h: Rename as...
* buddy/src/bddx.h, buddy/src/bvecx.h, buddy/src/fddx.h: ... these.
* buddy/src/Makefile.am: Build libbddx.la instead of libbdd.la.
* buddy/examples/Makefile.def: Use it.
* Makefile.am, buddy/src/bddtest.cxx, buddy/src/bvec.c,
buddy/src/cppext.cxx, buddy/src/fdd.c, buddy/src/imatrix.h,
buddy/src/kernel.h, buddy/examples/adder/adder.cxx,
buddy/examples/bddcalc/parser_.h, buddy/examples/bddtest/bddtest.cxx,
buddy/examples/cmilner/cmilner.c, buddy/examples/fdd/fdd.cxx,
buddy/examples/milner/milner.cxx, buddy/examples/money/money.cxx,
buddy/examples/queen/queen.cxx, buddy/examples/solitare/solitare.cxx,
m4/buddy.m4, src/ltlvisit/apcollect.hh, src/ltlvisit/simplify.hh,
src/misc/bddlt.hh, src/misc/bddop.hh, src/misc/minato.hh,
src/priv/acccompl.hh, src/priv/accconv.hh, src/priv/accmap.hh,
src/priv/bddalloc.cc, src/tgba/bdddict.hh, src/tgba/bddprint.hh,
src/tgba/tgbamask.hh, src/tgba/tgbasafracomplement.cc,
src/tgbaalgos/emptiness.hh, src/tgbaalgos/gtec/sccstack.hh,
src/tgbaalgos/neverclaim.cc, src/tgbaalgos/powerset.cc,
src/tgbaalgos/sccfilter.hh, src/tgbaalgos/sccinfo.hh,
src/tgbaalgos/weight.hh, wrap/python/buddy.i: Adjust.
* NEWS, README: Document it.
This commit is contained in:
Alexandre Duret-Lutz 2014-10-30 17:29:27 +01:00
parent f35be908c8
commit ad8d24222a
45 changed files with 253 additions and 291 deletions

View file

@ -1,14 +1,13 @@
include_HEADERS = bdd.h fdd.h bvec.h
include_HEADERS = bddx.h fddx.h bvecx.h
BUDDY_FLAGS = -I$(top_builddir) -DVERSION=23 -DBUDDY_DLL_EXPORTS -DBUDDY_DLL
lib_LTLIBRARIES = libbdd.la
lib_LTLIBRARIES = libbddx.la
# See the `Updating version info' node of the Libtool manual before
# changing this.
libbdd_la_LDFLAGS = -no-undefined -version-info 0:0:0
libbdd_la_CPPFLAGS = $(BUDDY_FLAGS)
libbdd_la_SOURCES = \
libbddx_la_LDFLAGS = -no-undefined -version-info 0:0:0
libbddx_la_CPPFLAGS = $(BUDDY_FLAGS)
libbddx_la_SOURCES = \
bddio.c \
bddop.c \
bddtree.h \
@ -30,4 +29,4 @@ libbdd_la_SOURCES = \
check_PROGRAMS = bddtest
bddtest_SOURCES = bddtest.cxx
bddtest_CPPFLAGS = -I$(top_builddir)
bddtest_LDADD = ./libbdd.la
bddtest_LDADD = ./libbddx.la

View file

@ -29,8 +29,8 @@
#include <string>
#include <cstdlib>
#include "bdd.h"
#include "bvec.h"
#include "bddx.h"
#include "bvecx.h"
using namespace std;

View file

@ -35,8 +35,8 @@
DATE: (C) feb 1997
*************************************************************************/
#ifndef _BDD_H
#define _BDD_H
#ifndef _BDDX_H
#define _BDDX_H
#if __GNUC__ >= 3
#define __purefn __attribute__((__pure__))
@ -1046,6 +1046,6 @@ BUDDY_API bddstrmhandler bdd_strm_hook(bddstrmhandler);
#endif /* CPLUSPLUS */
#endif /* _BDD_H */
#endif /* _BDDX_H */
/* EOF */

View file

@ -1,5 +1,5 @@
/*========================================================================
Copyright (C) 1996-2002 by Jorn Lind-Nielsen
Copyright (C) 1996-2002, 2014 by Jorn Lind-Nielsen
All rights reserved
Permission is hereby granted, without written agreement and without
@ -36,7 +36,7 @@
*************************************************************************/
#include <stdlib.h>
#include "kernel.h"
#include "bvec.h"
#include "bvecx.h"
#define DEFAULT(v) { v.bitnum=0; v.bitvec=NULL; }
@ -47,7 +47,7 @@ static bvec bvec_build(int bitnum, int isTrue)
{
bvec vec;
int n;
vec.bitvec = NEW(BDD,bitnum);
vec.bitnum = bitnum;
if (!vec.bitvec)
@ -94,7 +94,7 @@ bvec bvec_copy(bvec src)
{
bvec dst;
int n;
if (src.bitnum == 0)
{
DEFAULT(dst);
@ -102,7 +102,7 @@ bvec bvec_copy(bvec src)
}
dst = bvec_build(src.bitnum,0);
for (n=0 ; n<src.bitnum ; n++)
dst.bitvec[n] = bdd_addref( src.bitvec[n] );
dst.bitnum = src.bitnum;
@ -191,7 +191,7 @@ bvec bvec_var(int bitnum, int offset, int step)
int n;
v = bvec_build(bitnum,0);
for (n=0 ; n<bitnum ; n++)
v.bitvec[n] = bdd_ithvar(offset+n*step);
@ -222,9 +222,9 @@ bvec bvec_varfdd(int var)
DEFAULT(v);
return v;
}
v = bvec_build(varbitnum,0);
for (n=0 ; n<v.bitnum ; n++)
v.bitvec[n] = bdd_ithvar(bddvar[n]);
@ -248,7 +248,7 @@ bvec bvec_varvec(int bitnum, int *var)
int n;
v = bvec_build(bitnum,0);
for (n=0 ; n<bitnum ; n++)
v.bitvec[n] = bdd_ithvar(var[n]);
@ -413,7 +413,7 @@ bvec bvec_map1(bvec a, BDD (*fun)(BDD))
{
bvec res;
int n;
res = bvec_build(a.bitnum,0);
for (n=0 ; n < a.bitnum ; n++)
res.bitvec[n] = bdd_addref( fun(a.bitvec[n]) );
@ -450,7 +450,7 @@ bvec bvec_map2(bvec a, bvec b, BDD (*fun)(BDD,BDD))
bdd_error(BVEC_SIZE);
return res;
}
res = bvec_build(a.bitnum,0);
for (n=0 ; n < a.bitnum ; n++)
res.bitvec[n] = bdd_addref( fun(a.bitvec[n], b.bitvec[n]) );
@ -487,7 +487,7 @@ bvec bvec_map3(bvec a, bvec b, bvec c, BDD (*fun)(BDD,BDD,BDD))
bdd_error(BVEC_SIZE);
return res;
}
res = bvec_build(a.bitnum,0);
for (n=0 ; n < a.bitnum ; n++)
res.bitvec[n] = bdd_addref( fun(a.bitvec[n], b.bitvec[n], c.bitvec[n]) );
@ -527,16 +527,16 @@ bvec bvec_add(bvec l, bvec r)
DEFAULT(res);
return res;
}
if (l.bitnum != r.bitnum)
{
bdd_error(BVEC_SIZE);
DEFAULT(res);
return res;
}
res = bvec_build(l.bitnum,0);
for (n=0 ; n<res.bitnum ; n++)
{
BDD tmp1, tmp2, tmp3;
@ -551,18 +551,18 @@ bvec bvec_add(bvec l, bvec r)
tmp1 = bdd_addref( bdd_apply(l.bitvec[n], r.bitvec[n], bddop_or) );
tmp2 = bdd_addref( bdd_apply(c, tmp1, bddop_and) );
bdd_delref(tmp1);
tmp1 = bdd_addref( bdd_apply(l.bitvec[n], r.bitvec[n], bddop_and) );
tmp3 = bdd_addref( bdd_apply(tmp1, tmp2, bddop_or) );
bdd_delref(tmp1);
bdd_delref(tmp2);
bdd_delref(c);
c = tmp3;
}
bdd_delref(c);
return res;
}
@ -596,16 +596,16 @@ bvec bvec_sub(bvec l, bvec r)
DEFAULT(res);
return res;
}
if (l.bitnum != r.bitnum)
{
bdd_error(BVEC_SIZE);
DEFAULT(res);
return res;
}
res = bvec_build(l.bitnum,0);
for (n=0 ; n<res.bitnum ; n++)
{
BDD tmp1, tmp2, tmp3;
@ -620,7 +620,7 @@ bvec bvec_sub(bvec l, bvec r)
tmp1 = bdd_addref( bdd_apply(r.bitvec[n], c, bddop_or) );
tmp2 = bdd_addref( bdd_apply(l.bitvec[n], tmp1, bddop_less) );
bdd_delref(tmp1);
tmp1 = bdd_addref( bdd_apply(l.bitvec[n], r.bitvec[n], bddop_and) );
tmp3 = bdd_addref( bdd_apply(tmp1, c, bddop_and) );
bdd_delref(tmp1);
@ -628,13 +628,13 @@ bvec bvec_sub(bvec l, bvec r)
tmp1 = bdd_addref( bdd_apply(tmp3, tmp2, bddop_or) );
bdd_delref(tmp2);
bdd_delref(tmp3);
bdd_delref(c);
c = tmp1;
}
bdd_delref(c);
return res;
}
@ -659,17 +659,17 @@ bvec bvec_mulfixed(bvec e, int c)
DEFAULT(res);
return res;
}
if (c == 0)
return bvec_build(e.bitnum,0); /* return false array (base case) */
next = bvec_build(e.bitnum,0);
for (n=1 ; n<e.bitnum ; n++)
/* e[] is never deleted, so no ref.cou. */
next.bitvec[n] = e.bitvec[n-1];
next.bitvec[n] = e.bitvec[n-1];
rest = bvec_mulfixed(next, c>>1);
if (c & 0x1)
{
res = bvec_add(e, rest);
@ -711,10 +711,10 @@ bvec bvec_mul(bvec left, bvec right)
res = bvec_false(bitnum);
leftshifttmp = bvec_copy(left);
leftshift = bvec_coerce(bitnum, leftshifttmp);
/*bvec_delref(leftshifttmp);*/
bvec_free(leftshifttmp);
for (n=0 ; n<right.bitnum ; n++)
{
bvec added = bvec_add(res, leftshift);
@ -733,14 +733,14 @@ bvec bvec_mul(bvec left, bvec right)
for (m=bitnum-1 ; m>=1 ; m--)
leftshift.bitvec[m] = leftshift.bitvec[m-1];
leftshift.bitvec[0] = bddfalse;
/*bvec_delref(added);*/
bvec_free(added);
}
/*bvec_delref(leftshift);*/
bvec_free(leftshift);
return res;
}
@ -760,12 +760,12 @@ static void bvec_div_rec(bvec divisor, bvec *remainder, bvec *result, int step)
if (step > 1)
bvec_div_rec( divisor, &newRemainder, &newResult, step-1 );
bvec_free(tmp);
bvec_free(sub);
bvec_free(zero);
bdd_delref(isSmaller);
bvec_free(*remainder);
bvec_free(*result);
*result = newResult;
@ -796,17 +796,17 @@ int bvec_divfixed(bvec e, int c, bvec *res, bvec *rem)
bvec tmpremainder = bvec_shlfixed(tmp, 1, e.bitvec[e.bitnum-1]);
bvec result = bvec_shlfixed(e, 1, bddfalse);
bvec remainder;
bvec_div_rec(divisor, &tmpremainder, &result, divisor.bitnum);
remainder = bvec_shrfixed(tmpremainder, 1, bddfalse);
bvec_free(tmp);
bvec_free(tmpremainder);
bvec_free(divisor);
*res = result;
*rem = remainder;
return 0;
}
@ -899,7 +899,7 @@ int bvec_div(bvec left, bvec right, bvec *result, bvec *remainder)
/*bvec_delref(rem);*/
bvec_free(rem);
return 0;
}
@ -931,7 +931,7 @@ bvec bvec_ite(bdd a, bvec b, bvec c)
}
res = bvec_build(b.bitnum, 0);
for (n=0 ; n<b.bitnum ; ++n)
{
res.bitvec[n] = bdd_addref( bdd_ite(a, b.bitvec[n], c.bitvec[n]) );
@ -963,21 +963,21 @@ bvec bvec_shlfixed(bvec e, int pos, BDD c)
DEFAULT(res);
return res;
}
if (e.bitnum == 0)
{
DEFAULT(res);
return res;
}
res = bvec_build(e.bitnum,0);
for (n=0 ; n<minnum ; n++)
res.bitvec[n] = bdd_addref(c);
for (n=minnum ; n<e.bitnum ; n++)
res.bitvec[n] = bdd_addref(e.bitvec[n-pos]);
return res;
}
@ -1005,14 +1005,14 @@ BVEC bvec_shl(BVEC l, BVEC r, BDD c)
DEFAULT(res);
return res;
}
res = bvec_build(l.bitnum, 0);
for (n=0 ; n<=l.bitnum ; n++)
{
val = bvec_con(r.bitnum, n);
rEquN = bdd_addref( bvec_equ(r, val) );
for (m=0 ; m<l.bitnum ; m++)
{
/* Set the m'th new location to be the (m+n)'th old location */
@ -1040,7 +1040,7 @@ BVEC bvec_shl(BVEC l, BVEC r, BDD c)
for (m=0 ; m<l.bitnum ; m++)
{
tmp2 = bdd_addref( bdd_or(res.bitvec[m], tmp1) );
bdd_delref(res.bitvec[m]);
res.bitvec[m] = tmp2;
}
@ -1049,7 +1049,7 @@ BVEC bvec_shl(BVEC l, BVEC r, BDD c)
bdd_delref(rEquN);
/*bvec_delref(val);*/
bvec_free(val);
return res;
}
@ -1068,25 +1068,25 @@ bvec bvec_shrfixed(bvec e, int pos, BDD c)
{
bvec res;
int n, maxnum = MAX(0,e.bitnum-pos);
if (pos < 0)
{
bdd_error(BVEC_SHIFT);
DEFAULT(res);
return res;
}
if (e.bitnum == 0)
{
DEFAULT(res);
return res;
}
res = bvec_build(e.bitnum,0);
for (n=maxnum ; n<e.bitnum ; n++)
res.bitvec[n] = bdd_addref(c);
for (n=0 ; n<maxnum ; n++)
res.bitvec[n] = bdd_addref(e.bitvec[n+pos]);
@ -1117,14 +1117,14 @@ BVEC bvec_shr(BVEC l, BVEC r, BDD c)
DEFAULT(res);
return res;
}
res = bvec_build(l.bitnum, 0);
for (n=0 ; n<=l.bitnum ; n++)
{
val = bvec_con(r.bitnum, n);
rEquN = bdd_addref( bvec_equ(r, val) );
for (m=0 ; m<l.bitnum ; m++)
{
/* Set the m'th new location to be the (m+n)'th old location */
@ -1152,7 +1152,7 @@ BVEC bvec_shr(BVEC l, BVEC r, BDD c)
for (m=0 ; m<l.bitnum ; m++)
{
tmp2 = bdd_addref( bdd_or(res.bitvec[m], tmp1) );
bdd_delref(res.bitvec[m]);
res.bitvec[m] = tmp2;
}
@ -1161,7 +1161,7 @@ BVEC bvec_shr(BVEC l, BVEC r, BDD c)
bdd_delref(rEquN);
/*bvec_delref(val);*/
bvec_free(val);
return res;
}
@ -1180,21 +1180,21 @@ bdd bvec_lth(bvec l, bvec r)
{
BDD p = bddfalse;
int n;
if (l.bitnum == 0 || r.bitnum == 0)
return bddfalse;
if (l.bitnum != r.bitnum)
{
bdd_error(BVEC_SIZE);
return p;
}
for (n=0 ; n<l.bitnum ; n++)
{
/* p = (!l[n] & r[n]) |
* bdd_apply(l[n], r[n], bddop_biimp) & p; */
BDD tmp1 = bdd_addref(bdd_apply(l.bitvec[n],r.bitvec[n],bddop_less));
BDD tmp2 = bdd_addref(bdd_apply(l.bitvec[n],r.bitvec[n],bddop_biimp));
BDD tmp3 = bdd_addref( bdd_apply(tmp2, p, bddop_and) );
@ -1224,21 +1224,21 @@ bdd bvec_lte(bvec l, bvec r)
{
BDD p = bddtrue;
int n;
if (l.bitnum == 0 || r.bitnum == 0)
return bddfalse;
if (l.bitnum != r.bitnum)
{
bdd_error(BVEC_SIZE);
return p;
}
for (n=0 ; n<l.bitnum ; n++)
{
/* p = (!l[n] & r[n]) |
* bdd_apply(l[n], r[n], bddop_biimp) & p; */
BDD tmp1 = bdd_addref( bdd_apply(l.bitvec[n], r.bitvec[n], bddop_less) );
BDD tmp2 = bdd_addref( bdd_apply(l.bitvec[n], r.bitvec[n], bddop_biimp) );
BDD tmp3 = bdd_addref( bdd_apply(tmp2, p, bddop_and) );
@ -1306,16 +1306,16 @@ bdd bvec_equ(bvec l, bvec r)
{
BDD p = bddtrue;
int n;
if (l.bitnum == 0 || r.bitnum == 0)
return bddfalse;
if (l.bitnum != r.bitnum)
{
bdd_error(BVEC_SIZE);
return p;
}
for (n=0 ; n<l.bitnum ; n++)
{
BDD tmp1, tmp2;

View file

@ -35,10 +35,10 @@
DATE: (C) may 1999
*************************************************************************/
#ifndef _BVEC_H
#define _BVEC_H
#ifndef _BVECX_H
#define _BVECX_H
#include "fdd.h"
#include "fddx.h"
/* Boolean (BDD) vector */
/*
@ -295,6 +295,6 @@ inline bdd bvec_neq(const bvec &left, const bvec &right)
#endif /* CPLUSPLUS */
#endif /* _BVEC_H */
#endif /* _BVECX_H */
/* EOF */

View file

@ -38,7 +38,7 @@
#include <stdlib.h>
#include <iomanip>
#include "kernel.h"
#include "bvec.h"
#include "bvecx.h"
using namespace std;

View file

@ -39,7 +39,7 @@
#include <stdlib.h>
#include <string.h>
#include "kernel.h"
#include "fdd.h"
#include "fddx.h"
static void fdd_printset_rec(FILE *, int, int *);
@ -83,7 +83,7 @@ void bdd_fdd_init(void)
void bdd_fdd_done(void)
{
int n;
if (domain != NULL)
{
for (n=0 ; n<fdvarnum ; n++)
@ -129,7 +129,7 @@ int fdd_extdomain(int *dom, int num)
if (!bddrunning)
return bdd_error(BDD_RUNNING);
/* Build domain table */
if (domain == NULL) /* First time */
{
@ -142,7 +142,7 @@ int fdd_extdomain(int *dom, int num)
if (fdvarnum + num > fdvaralloc)
{
fdvaralloc += (num > fdvaralloc) ? num : fdvaralloc;
domain = (Domain*)realloc(domain, sizeof(Domain)*fdvaralloc);
if (domain == NULL)
return bdd_error(BDD_MEMORY);
@ -182,7 +182,7 @@ int fdd_extdomain(int *dom, int num)
fdvarnum += num;
firstbddvar += extravars;
return offset;
}
@ -208,17 +208,17 @@ int fdd_overlapdomain(int v1, int v2)
{
Domain *d;
int n;
if (!bddrunning)
return bdd_error(BDD_RUNNING);
if (v1 < 0 || v1 >= fdvarnum || v2 < 0 || v2 >= fdvarnum)
return bdd_error(BDD_VAR);
if (fdvarnum + 1 > fdvaralloc)
{
fdvaralloc += fdvaralloc;
domain = (Domain*)realloc(domain, sizeof(Domain)*fdvaralloc);
if (domain == NULL)
return bdd_error(BDD_MEMORY);
@ -233,10 +233,10 @@ int fdd_overlapdomain(int v1, int v2)
d->ivar[n] = domain[v1].ivar[n];
for (n=0 ; n<domain[v2].binsize ; n++)
d->ivar[domain[v1].binsize+n] = domain[v2].ivar[n];
d->var = bdd_makeset(d->ivar, d->binsize);
bdd_addref(d->var);
return fdvarnum++;
}
@ -275,7 +275,7 @@ int fdd_domainnum(void)
{
if (!bddrunning)
return bdd_error(BDD_RUNNING);
return fdvarnum;
}
@ -294,7 +294,7 @@ int fdd_domainsize(int v)
{
if (!bddrunning)
return bdd_error(BDD_RUNNING);
if (v < 0 || v >= fdvarnum)
return bdd_error(BDD_VAR);
return domain[v].realsize;
@ -315,7 +315,7 @@ int fdd_varnum(int v)
{
if (!bddrunning)
return bdd_error(BDD_RUNNING);
if (v >= fdvarnum || v < 0)
return bdd_error(BDD_VAR);
return domain[v].binsize;
@ -343,7 +343,7 @@ int *fdd_vars(int v)
bdd_error(BDD_RUNNING);
return NULL;
}
if (v >= fdvarnum || v < 0)
{
bdd_error(BDD_VAR);
@ -378,13 +378,13 @@ BDD fdd_ithvar(int var, int val)
{
int n;
int v=1, tmp;
if (!bddrunning)
{
bdd_error(BDD_RUNNING);
return bddfalse;
}
if (var < 0 || var >= fdvarnum)
{
bdd_error(BDD_VAR);
@ -400,7 +400,7 @@ BDD fdd_ithvar(int var, int val)
for (n=0 ; n<domain[var].binsize ; n++)
{
bdd_addref(v);
if (val & 0x1)
tmp = bdd_apply(bdd_ithvar(domain[var].ivar[n]), v, bddop_and);
else
@ -465,11 +465,11 @@ int* fdd_scanallvar(BDD r)
char *store;
int *res;
BDD p = r;
CHECKa(r,NULL);
if (r == bddfalse)
return NULL;
store = NEW(char,bddvarnum);
for (n=0 ; n<bddvarnum ; n++)
store[n] = 0;
@ -494,21 +494,21 @@ int* fdd_scanallvar(BDD r)
{
int m;
int val=0;
for (m=domain[n].binsize-1 ; m>=0 ; m--)
if ( store[domain[n].ivar[m]] )
val = val*2 + 1;
else
val = val*2;
res[n] = val;
}
free(store);
return res;
}
/*
NAME {* fdd\_ithset *}
SECTION {* fdd *}
@ -526,7 +526,7 @@ BDD fdd_ithset(int var)
bdd_error(BDD_RUNNING);
return bddfalse;
}
if (var < 0 || var >= fdvarnum)
{
bdd_error(BDD_VAR);
@ -553,13 +553,13 @@ BDD fdd_domain(int var)
int n,val;
Domain *dom;
BDD d;
if (!bddrunning)
{
bdd_error(BDD_RUNNING);
return bddfalse;
}
if (var < 0 || var >= fdvarnum)
{
bdd_error(BDD_VAR);
@ -567,15 +567,15 @@ BDD fdd_domain(int var)
}
/* Encode V<=X-1. V is the variables in 'var' and X is the domain size */
dom = &domain[var];
val = dom->realsize-1;
d = bddtrue;
for (n=0 ; n<dom->binsize ; n++)
{
BDD tmp;
if (val & 0x1)
tmp = bdd_apply( bdd_nithvar(dom->ivar[n]), d, bddop_or );
else
@ -607,13 +607,13 @@ BDD fdd_equals(int left, int right)
{
BDD e = bddtrue, tmp1, tmp2;
int n;
if (!bddrunning)
{
bdd_error(BDD_RUNNING);
return bddfalse;
}
if (left < 0 || left >= fdvarnum || right < 0 || right >= fdvarnum)
{
bdd_error(BDD_VAR);
@ -624,13 +624,13 @@ BDD fdd_equals(int left, int right)
bdd_error(BDD_RANGE);
return bddfalse;
}
for (n=0 ; n<domain[left].binsize ; n++)
{
tmp1 = bdd_addref( bdd_apply(bdd_ithvar(domain[left].ivar[n]),
bdd_ithvar(domain[right].ivar[n]),
bddop_biimp) );
tmp2 = bdd_addref( bdd_apply(e, tmp1, bddop_and) );
bdd_delref(tmp1);
bdd_delref(e);
@ -704,13 +704,13 @@ void fdd_printset(BDD r)
void fdd_fprintset(FILE *ofile, BDD r)
{
int *set;
if (!bddrunning)
{
bdd_error(BDD_RUNNING);
return;
}
if (r < 2)
{
fprintf(ofile, "%s", r == 0 ? "F" : "T");
@ -723,7 +723,7 @@ void fdd_fprintset(FILE *ofile, BDD r)
bdd_error(BDD_MEMORY);
return;
}
memset(set, 0, sizeof(int) * bddvarnum);
fdd_printset_rec(ofile, r, set);
free(set);
@ -737,7 +737,7 @@ static void fdd_printset_rec(FILE *ofile, int r, int *set)
int *var;
int *binval;
int ok, first;
if (r == 0)
return;
else
@ -754,7 +754,7 @@ static void fdd_printset_rec(FILE *ofile, int r, int *set)
for (m=0 ; m<domain[n].binsize ; m++)
if (set[domain[n].ivar[m]] != 0)
used = 1;
if (used)
{
if (!first)
@ -767,12 +767,12 @@ static void fdd_printset_rec(FILE *ofile, int r, int *set)
printf(":");
var = domain[n].ivar;
for (m=0 ; m<(1<<domain[n].binsize) ; m++)
{
binval = fdddec2bin(n, m);
ok=1;
for (i=0 ; i<domain[n].binsize && ok ; i++)
if (set[var[i]] == 1 && binval[i] != 0)
ok = 0;
@ -800,10 +800,10 @@ static void fdd_printset_rec(FILE *ofile, int r, int *set)
{
set[bddlevel2var[LEVEL(r)]] = 1;
fdd_printset_rec(ofile, LOW(r), set);
set[bddlevel2var[LEVEL(r)]] = 2;
fdd_printset_rec(ofile, HIGH(r), set);
set[bddlevel2var[LEVEL(r)]] = 0;
}
}
@ -828,17 +828,17 @@ int fdd_scanset(BDD r, int **varset, int *varnum)
{
int *fv, fn;
int num,n,m,i;
if (!bddrunning)
return bdd_error(BDD_RUNNING);
if ((n=bdd_scanset(r, &fv, &fn)) < 0)
return n;
for (n=0,num=0 ; n<fdvarnum ; n++)
{
int found=0;
for (m=0 ; m<domain[n].binsize && !found ; m++)
{
for (i=0 ; i<fn && !found ; i++)
@ -856,7 +856,7 @@ int fdd_scanset(BDD r, int **varset, int *varnum)
for (n=0,num=0 ; n<fdvarnum ; n++)
{
int found=0;
for (m=0 ; m<domain[n].binsize && !found ; m++)
{
for (i=0 ; i<fn && !found ; i++)
@ -897,14 +897,14 @@ BDD fdd_makeset(int *varset, int varnum)
bdd_error(BDD_RUNNING);
return bddfalse;
}
for (n=0 ; n<varnum ; n++)
if (varset[n] < 0 || varset[n] >= fdvarnum)
{
bdd_error(BDD_VAR);
return bddfalse;
}
for (n=0 ; n<varnum ; n++)
{
bdd_addref(res);
@ -932,10 +932,10 @@ int fdd_intaddvarblock(int first, int last, int fixed)
{
bdd res = bddtrue, tmp;
int n, err;
if (!bddrunning)
return bdd_error(BDD_RUNNING);
if (first > last || first < 0 || last >= fdvarnum)
return bdd_error(BDD_VARBLK);
@ -948,7 +948,7 @@ int fdd_intaddvarblock(int first, int last, int fixed)
}
err = bdd_addvarblock(res, fixed);
bdd_delref(res);
return err;
}
@ -972,10 +972,10 @@ int fdd_setpair(bddPair *pair, int p1, int p2)
if (!bddrunning)
return bdd_error(BDD_RUNNING);
if (p1<0 || p1>=fdvarnum || p2<0 || p2>=fdvarnum)
return bdd_error(BDD_VAR);
if (domain[p1].binsize != domain[p2].binsize)
return bdd_error(BDD_VARNUM);
@ -1006,11 +1006,11 @@ int fdd_setpairs(bddPair *pair, int *p1, int *p2, int size)
if (!bddrunning)
return bdd_error(BDD_RUNNING);
for (n=0 ; n<size ; n++)
if (p1[n]<0 || p1[n]>=fdvarnum || p2[n]<0 || p2[n]>=fdvarnum)
return bdd_error(BDD_VAR);
for (n=0 ; n<size ; n++)
if ((e=fdd_setpair(pair, p1[n], p2[n])) < 0)
return e;
@ -1033,7 +1033,7 @@ static void Domain_done(Domain* d)
static void Domain_allocate(Domain* d, int range)
{
int calcsize = 2;
if (range <= 0 || range > INT_MAX/2)
{
bdd_error(BDD_RANGE);

View file

@ -35,10 +35,10 @@
DATE: (C) february 1999
*************************************************************************/
#ifndef _FDD_H
#define _FDD_H
#ifndef _FDDX_H
#define _FDDX_H
#include "bdd.h"
#include "bddx.h"
#ifdef CPLUSPLUS
@ -167,7 +167,7 @@ inline bdd fdd_neq(int bitnum, bdd *left, bdd *right)
#endif /* CPLUSPLUS */
#endif /* _FDD_H */
#endif /* _FDDX_H */
/* EOF */

View file

@ -37,7 +37,7 @@
#ifndef _IMATRIX_H
#define _IMATRIX_H
#include "bdd.h" /* for __purefn */
#include "bddx.h" /* for __purefn */
typedef struct _imatrix
{

View file

@ -42,7 +42,7 @@
#include <limits.h>
#include <setjmp.h>
#include "bdd.h"
#include "bddx.h"
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif