summaryrefslogtreecommitdiffstats
path: root/src/bdd
diff options
context:
space:
mode:
authorAlan Mishchenko <alanmi@berkeley.edu>2011-03-02 18:50:03 -0800
committerAlan Mishchenko <alanmi@berkeley.edu>2011-03-02 18:50:03 -0800
commite3f2dde1c4eeaa8c891ecb7a1f07dab324ce1da3 (patch)
treea293c8ca5981e69f09400b05d50957b844355a9d /src/bdd
parente881eaf693ff648d78c7b6ca52fc156f0993143e (diff)
downloadabc-e3f2dde1c4eeaa8c891ecb7a1f07dab324ce1da3.tar.gz
abc-e3f2dde1c4eeaa8c891ecb7a1f07dab324ce1da3.tar.bz2
abc-e3f2dde1c4eeaa8c891ecb7a1f07dab324ce1da3.zip
Upgrading epd and mtr packages to be compatible with the latest release of CUDD 2.4.2
Diffstat (limited to 'src/bdd')
-rw-r--r--src/bdd/epd/epd.c90
-rw-r--r--src/bdd/epd/epd.h133
-rw-r--r--src/bdd/mtr/mtr.h95
-rw-r--r--src/bdd/mtr/mtrBasic.c58
-rw-r--r--src/bdd/mtr/mtrGroup.c63
-rw-r--r--src/bdd/mtr/mtrInt.h47
6 files changed, 317 insertions, 169 deletions
diff --git a/src/bdd/epd/epd.c b/src/bdd/epd/epd.c
index f86f24f4..9f362f1b 100644
--- a/src/bdd/epd/epd.c
+++ b/src/bdd/epd/epd.c
@@ -12,12 +12,39 @@
Author [In-Ho Moon]
- Copyright [ This file was created at the University of Colorado at
- Boulder. The University of Colorado at Boulder makes no warranty
- about the suitability of this software for any purpose. It is
- presented on an AS IS basis.]
+ Copyright [Copyright (c) 1995-2004, Regents of the University of Colorado
- Revision [$Id: epd.c,v 1.1.1.1 2003/02/24 22:23:57 wjiang Exp $]
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ Neither the name of the University of Colorado nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.]
+
+ Revision [$Id: epd.c,v 1.10 2004/08/13 18:20:30 fabio Exp $]
******************************************************************************/
@@ -25,13 +52,11 @@
#include <stdlib.h>
#include <string.h>
#include <math.h>
-#include "util_hack.h"
+#include "util.h"
#include "epd.h"
ABC_NAMESPACE_IMPL_START
-
-
/**Function********************************************************************
Synopsis [Allocates an EpDouble struct.]
@@ -44,11 +69,11 @@ ABC_NAMESPACE_IMPL_START
******************************************************************************/
EpDouble *
-EpdAlloc()
+EpdAlloc(void)
{
EpDouble *epd;
- epd = ABC_ALLOC(EpDouble, 1);
+ epd = ALLOC(EpDouble, 1);
return(epd);
}
@@ -91,15 +116,15 @@ EpdCmp(const char *key1, const char *key2)
void
EpdFree(EpDouble *epd)
{
- ABC_FREE(epd);
+ FREE(epd);
}
/**Function********************************************************************
- Synopsis [Multiplies two arbitrary precision double values.]
+ Synopsis [Converts an arbitrary precision double value to a string.]
- Description [Multiplies two arbitrary precision double values.]
+ Description [Converts an arbitrary precision double value to a string.]
SideEffects []
@@ -1250,12 +1275,13 @@ EpdIsNanOrInf(EpDouble *epd)
int
IsInfDouble(double value)
{
- IeeeDouble *ptr = (IeeeDouble *)(&value);
+ EpType val;
- if (ptr->exponent == EPD_EXP_INF &&
- ptr->mantissa0 == 0 &&
- ptr->mantissa1 == 0) {
- if (ptr->sign == 0)
+ val.value = value;
+ if (val.bits.exponent == EPD_EXP_INF &&
+ val.bits.mantissa0 == 0 &&
+ val.bits.mantissa1 == 0) {
+ if (val.bits.sign == 0)
return(1);
else
return(-1);
@@ -1278,13 +1304,14 @@ IsInfDouble(double value)
int
IsNanDouble(double value)
{
- IeeeNan *ptr = (IeeeNan *)(&value);
-
- if (ptr->exponent == EPD_EXP_INF &&
- ptr->sign == 1 &&
- ptr->quiet_bit == 1 &&
- ptr->mantissa0 == 0 &&
- ptr->mantissa1 == 0) {
+ EpType val;
+
+ val.value = value;
+ if (val.nan.exponent == EPD_EXP_INF &&
+ val.nan.sign == 1 &&
+ val.nan.quiet_bit == 1 &&
+ val.nan.mantissa0 == 0 &&
+ val.nan.mantissa1 == 0) {
return(1);
}
return(0);
@@ -1305,15 +1332,16 @@ IsNanDouble(double value)
int
IsNanOrInfDouble(double value)
{
- IeeeNan *ptr = (IeeeNan *)(&value);
+ EpType val;
- if (ptr->exponent == EPD_EXP_INF &&
- ptr->mantissa0 == 0 &&
- ptr->mantissa1 == 0 &&
- (ptr->sign == 1 || ptr->quiet_bit == 0)) {
+ val.value = value;
+ if (val.nan.exponent == EPD_EXP_INF &&
+ val.nan.mantissa0 == 0 &&
+ val.nan.mantissa1 == 0 &&
+ (val.nan.sign == 1 || val.nan.quiet_bit == 0)) {
return(1);
}
return(0);
}
-ABC_NAMESPACE_IMPL_END
+ABC_NAMESPACE_IMPL_END
diff --git a/src/bdd/epd/epd.h b/src/bdd/epd/epd.h
index 733d7a52..f19f2830 100644
--- a/src/bdd/epd/epd.h
+++ b/src/bdd/epd/epd.h
@@ -12,22 +12,47 @@
Author [In-Ho Moon]
- Copyright [This file was created at the University of Colorado at
- Boulder. The University of Colorado at Boulder makes no warranty
- about the suitability of this software for any purpose. It is
- presented on an AS IS basis.]
+ Copyright [Copyright (c) 1995-2004, Regents of the University of Colorado
- Revision [$Id: epd.h,v 1.1.1.1 2003/02/24 22:23:57 wjiang Exp $]
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ Neither the name of the University of Colorado nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.]
+
+ Revision [$Id: epd.h,v 1.9 2004/08/13 18:20:30 fabio Exp $]
******************************************************************************/
#ifndef _EPD
#define _EPD
-
ABC_NAMESPACE_HEADER_START
-
/*---------------------------------------------------------------------------*/
/* Constant declarations */
/*---------------------------------------------------------------------------*/
@@ -101,13 +126,15 @@ struct IeeeNanStruct { /* LITTLE_ENDIAN */
SeeAlso []
******************************************************************************/
+union EpTypeUnion {
+ double value;
+ struct IeeeDoubleStruct bits;
+ struct IeeeNanStruct nan;
+};
+
struct EpDoubleStruct {
- union {
- double value;
- struct IeeeDoubleStruct bits;
- struct IeeeNanStruct nan;
- } type;
- int exponent;
+ union EpTypeUnion type;
+ int exponent;
};
/*---------------------------------------------------------------------------*/
@@ -116,51 +143,53 @@ struct EpDoubleStruct {
typedef struct EpDoubleStruct EpDouble;
typedef struct IeeeDoubleStruct IeeeDouble;
typedef struct IeeeNanStruct IeeeNan;
+typedef union EpTypeUnion EpType;
+/**AutomaticStart*************************************************************/
/*---------------------------------------------------------------------------*/
/* Function prototypes */
/*---------------------------------------------------------------------------*/
-EpDouble *EpdAlloc();
-int EpdCmp(const char *key1, const char *key2);
-void EpdFree(EpDouble *epd);
-void EpdGetString(EpDouble *epd, char *str);
-void EpdConvert(double value, EpDouble *epd);
-void EpdMultiply(EpDouble *epd1, double value);
-void EpdMultiply2(EpDouble *epd1, EpDouble *epd2);
-void EpdMultiply2Decimal(EpDouble *epd1, EpDouble *epd2);
-void EpdMultiply3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
-void EpdMultiply3Decimal(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
-void EpdDivide(EpDouble *epd1, double value);
-void EpdDivide2(EpDouble *epd1, EpDouble *epd2);
-void EpdDivide3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
-void EpdAdd(EpDouble *epd1, double value);
-void EpdAdd2(EpDouble *epd1, EpDouble *epd2);
-void EpdAdd3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
-void EpdSubtract(EpDouble *epd1, double value);
-void EpdSubtract2(EpDouble *epd1, EpDouble *epd2);
-void EpdSubtract3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
-void EpdPow2(int n, EpDouble *epd);
-void EpdPow2Decimal(int n, EpDouble *epd);
-void EpdNormalize(EpDouble *epd);
-void EpdNormalizeDecimal(EpDouble *epd);
-void EpdGetValueAndDecimalExponent(EpDouble *epd, double *value, int *exponent);
-int EpdGetExponent(double value);
-int EpdGetExponentDecimal(double value);
-void EpdMakeInf(EpDouble *epd, int sign);
-void EpdMakeZero(EpDouble *epd, int sign);
-void EpdMakeNan(EpDouble *epd);
-void EpdCopy(EpDouble *from, EpDouble *to);
-int EpdIsInf(EpDouble *epd);
-int EpdIsZero(EpDouble *epd);
-int EpdIsNan(EpDouble *epd);
-int EpdIsNanOrInf(EpDouble *epd);
-int IsInfDouble(double value);
-int IsNanDouble(double value);
-int IsNanOrInfDouble(double value);
-
-
+extern EpDouble *EpdAlloc(void);
+extern int EpdCmp(const char *key1, const char *key2);
+extern void EpdFree(EpDouble *epd);
+extern void EpdGetString(EpDouble *epd, char *str);
+extern void EpdConvert(double value, EpDouble *epd);
+extern void EpdMultiply(EpDouble *epd1, double value);
+extern void EpdMultiply2(EpDouble *epd1, EpDouble *epd2);
+extern void EpdMultiply2Decimal(EpDouble *epd1, EpDouble *epd2);
+extern void EpdMultiply3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
+extern void EpdMultiply3Decimal(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
+extern void EpdDivide(EpDouble *epd1, double value);
+extern void EpdDivide2(EpDouble *epd1, EpDouble *epd2);
+extern void EpdDivide3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
+extern void EpdAdd(EpDouble *epd1, double value);
+extern void EpdAdd2(EpDouble *epd1, EpDouble *epd2);
+extern void EpdAdd3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
+extern void EpdSubtract(EpDouble *epd1, double value);
+extern void EpdSubtract2(EpDouble *epd1, EpDouble *epd2);
+extern void EpdSubtract3(EpDouble *epd1, EpDouble *epd2, EpDouble *epd3);
+extern void EpdPow2(int n, EpDouble *epd);
+extern void EpdPow2Decimal(int n, EpDouble *epd);
+extern void EpdNormalize(EpDouble *epd);
+extern void EpdNormalizeDecimal(EpDouble *epd);
+extern void EpdGetValueAndDecimalExponent(EpDouble *epd, double *value, int *exponent);
+extern int EpdGetExponent(double value);
+extern int EpdGetExponentDecimal(double value);
+extern void EpdMakeInf(EpDouble *epd, int sign);
+extern void EpdMakeZero(EpDouble *epd, int sign);
+extern void EpdMakeNan(EpDouble *epd);
+extern void EpdCopy(EpDouble *from, EpDouble *to);
+extern int EpdIsInf(EpDouble *epd);
+extern int EpdIsZero(EpDouble *epd);
+extern int EpdIsNan(EpDouble *epd);
+extern int EpdIsNanOrInf(EpDouble *epd);
+extern int IsInfDouble(double value);
+extern int IsNanDouble(double value);
+extern int IsNanOrInfDouble(double value);
+
+/**AutomaticEnd***************************************************************/
ABC_NAMESPACE_HEADER_END
diff --git a/src/bdd/mtr/mtr.h b/src/bdd/mtr/mtr.h
index 189ac1be..d3b703b8 100644
--- a/src/bdd/mtr/mtr.h
+++ b/src/bdd/mtr/mtr.h
@@ -20,12 +20,39 @@
Author [Fabio Somenzi]
- Copyright [This file was created at the University of Colorado at
- Boulder. The University of Colorado at Boulder makes no warranty
- about the suitability of this software for any purpose. It is
- presented on an AS IS basis.]
+ Copyright [Copyright (c) 1995-2004, Regents of the University of Colorado
- Revision [$Id: mtr.h,v 1.1.1.1 2003/02/24 22:24:02 wjiang Exp $]
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ Neither the name of the University of Colorado nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.]
+
+ Revision [$Id: mtr.h,v 1.14 2009/02/20 02:03:47 fabio Exp $]
******************************************************************************/
@@ -38,7 +65,6 @@
ABC_NAMESPACE_HEADER_START
-
/*---------------------------------------------------------------------------*/
/* Constant declarations */
/*---------------------------------------------------------------------------*/
@@ -57,23 +83,6 @@ ABC_NAMESPACE_HEADER_START
#define CONST
#endif /* !(__STDC__ || __cplusplus) */
-/* These are potential duplicates. */
-#ifndef EXTERN
-# ifdef __cplusplus
-# ifdef ABC_NAMESPACE
-# define EXTERN extern
-# else
-# define EXTERN extern "C"
-# endif
-# else
-# define EXTERN extern
-# endif
-#endif
-
-#ifndef ARGS
-#define ARGS(protos) protos
-#endif
-
#if defined(__GNUC__)
#define MTR_INLINE __inline__
# if (__GNUC__ >2 || __GNUC_MINOR__ >=7)
@@ -85,10 +94,10 @@ ABC_NAMESPACE_HEADER_START
#define MTR_INLINE
#define MTR_UNUSED
#endif
-
+
/* Flag definitions */
#define MTR_DEFAULT 0x00000000
-#define MTR_TERMINAL 0x00000001
+#define MTR_TERMINAL 0x00000001
#define MTR_SOFT 0x00000002
#define MTR_FIXED 0x00000004
#define MTR_NEWNODE 0x00000008
@@ -152,24 +161,24 @@ typedef struct MtrNode {
/* Function prototypes */
/*---------------------------------------------------------------------------*/
-EXTERN MtrNode * Mtr_AllocNode ARGS(());
-EXTERN void Mtr_DeallocNode ARGS((MtrNode *node));
-EXTERN MtrNode * Mtr_InitTree ARGS(());
-EXTERN void Mtr_FreeTree ARGS((MtrNode *node));
-EXTERN MtrNode * Mtr_CopyTree ARGS((MtrNode *node, int expansion));
-EXTERN void Mtr_MakeFirstChild ARGS((MtrNode *parent, MtrNode *child));
-EXTERN void Mtr_MakeLastChild ARGS((MtrNode *parent, MtrNode *child));
-EXTERN MtrNode * Mtr_CreateFirstChild ARGS((MtrNode *parent));
-EXTERN MtrNode * Mtr_CreateLastChild ARGS((MtrNode *parent));
-EXTERN void Mtr_MakeNextSibling ARGS((MtrNode *first, MtrNode *second));
-EXTERN void Mtr_PrintTree ARGS((MtrNode *node));
-EXTERN MtrNode * Mtr_InitGroupTree ARGS((int lower, int size));
-EXTERN MtrNode * Mtr_MakeGroup ARGS((MtrNode *root, unsigned int low, unsigned int high, unsigned int flags));
-EXTERN MtrNode * Mtr_DissolveGroup ARGS((MtrNode *group));
-EXTERN MtrNode * Mtr_FindGroup ARGS((MtrNode *root, unsigned int low, unsigned int high));
-EXTERN int Mtr_SwapGroups ARGS((MtrNode *first, MtrNode *second));
-EXTERN void Mtr_PrintGroups ARGS((MtrNode *root, int silent));
-EXTERN MtrNode * Mtr_ReadGroups ARGS((FILE *fp, int nleaves));
+extern MtrNode * Mtr_AllocNode (void);
+extern void Mtr_DeallocNode (MtrNode *node);
+extern MtrNode * Mtr_InitTree (void);
+extern void Mtr_FreeTree (MtrNode *node);
+extern MtrNode * Mtr_CopyTree (MtrNode *node, int expansion);
+extern void Mtr_MakeFirstChild (MtrNode *parent, MtrNode *child);
+extern void Mtr_MakeLastChild (MtrNode *parent, MtrNode *child);
+extern MtrNode * Mtr_CreateFirstChild (MtrNode *parent);
+extern MtrNode * Mtr_CreateLastChild (MtrNode *parent);
+extern void Mtr_MakeNextSibling (MtrNode *first, MtrNode *second);
+extern void Mtr_PrintTree (MtrNode *node);
+extern MtrNode * Mtr_InitGroupTree (int lower, int size);
+extern MtrNode * Mtr_MakeGroup (MtrNode *root, unsigned int low, unsigned int high, unsigned int flags);
+extern MtrNode * Mtr_DissolveGroup (MtrNode *group);
+extern MtrNode * Mtr_FindGroup (MtrNode *root, unsigned int low, unsigned int high);
+extern int Mtr_SwapGroups (MtrNode *first, MtrNode *second);
+extern void Mtr_PrintGroups (MtrNode *root, int silent);
+extern MtrNode * Mtr_ReadGroups (FILE *fp, int nleaves);
/**AutomaticEnd***************************************************************/
diff --git a/src/bdd/mtr/mtrBasic.c b/src/bdd/mtr/mtrBasic.c
index 56c78a23..e06317d5 100644
--- a/src/bdd/mtr/mtrBasic.c
+++ b/src/bdd/mtr/mtrBasic.c
@@ -26,20 +26,45 @@
Author [Fabio Somenzi]
- Copyright [This file was created at the University of Colorado at
- Boulder. The University of Colorado at Boulder makes no warranty
- about the suitability of this software for any purpose. It is
- presented on an AS IS basis.]
+ Copyright [Copyright (c) 1995-2004, Regents of the University of Colorado
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ Neither the name of the University of Colorado nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.]
******************************************************************************/
-#include "util_hack.h"
+#include "util.h"
#include "mtrInt.h"
ABC_NAMESPACE_IMPL_START
-
-
/*---------------------------------------------------------------------------*/
/* Constant declarations */
/*---------------------------------------------------------------------------*/
@@ -57,7 +82,7 @@ ABC_NAMESPACE_IMPL_START
/*---------------------------------------------------------------------------*/
#ifndef lint
-static char rcsid[] MTR_UNUSED = "$Id: mtrBasic.c,v 1.1.1.1 2003/02/24 22:24:02 wjiang Exp $";
+static char rcsid[] MTR_UNUSED = "$Id: mtrBasic.c,v 1.13 2009/02/20 02:03:47 fabio Exp $";
#endif
/*---------------------------------------------------------------------------*/
@@ -90,12 +115,11 @@ static char rcsid[] MTR_UNUSED = "$Id: mtrBasic.c,v 1.1.1.1 2003/02/24 22:24:02
******************************************************************************/
MtrNode *
-Mtr_AllocNode(
- )
+Mtr_AllocNode(void)
{
MtrNode *node;
- node = ABC_ALLOC(MtrNode,1);
+ node = ALLOC(MtrNode,1);
return node;
} /* Mtr_AllocNode */
@@ -116,7 +140,7 @@ void
Mtr_DeallocNode(
MtrNode * node /* node to be deallocated */)
{
- ABC_FREE(node);
+ FREE(node);
return;
} /* end of Mtr_DeallocNode */
@@ -134,8 +158,7 @@ Mtr_DeallocNode(
******************************************************************************/
MtrNode *
-Mtr_InitTree(
- )
+Mtr_InitTree(void)
{
MtrNode *node;
@@ -227,7 +250,7 @@ Mtr_CopyTree(
}
}
return(copy);
-
+
} /* end of Mtr_CopyTree */
@@ -403,12 +426,12 @@ Mtr_PrintTree(
if (node == NULL) return;
(void) fprintf(stdout,
#if SIZEOF_VOID_P == 8
- "N=0x%-8lx C=0x%-8lx Y=0x%-8lx E=0x%-8lx P=0x%-8lx F=%x L=%d S=%d\n",
+ "N=0x%-8lx C=0x%-8lx Y=0x%-8lx E=0x%-8lx P=0x%-8lx F=%x L=%u S=%u\n",
(unsigned long) node, (unsigned long) node->child,
(unsigned long) node->younger, (unsigned long) node->elder,
(unsigned long) node->parent, node->flags, node->low, node->size);
#else
- "N=0x%-8x C=0x%-8x Y=0x%-8x E=0x%-8x P=0x%-8x F=%x L=%d S=%d\n",
+ "N=0x%-8x C=0x%-8x Y=0x%-8x E=0x%-8x P=0x%-8x F=%x L=%hu S=%hu\n",
(unsigned) node, (unsigned) node->child,
(unsigned) node->younger, (unsigned) node->elder,
(unsigned) node->parent, node->flags, node->low, node->size);
@@ -428,4 +451,3 @@ Mtr_PrintTree(
/*---------------------------------------------------------------------------*/
ABC_NAMESPACE_IMPL_END
-
diff --git a/src/bdd/mtr/mtrGroup.c b/src/bdd/mtr/mtrGroup.c
index 176643f4..afc7bfdf 100644
--- a/src/bdd/mtr/mtrGroup.c
+++ b/src/bdd/mtr/mtrGroup.c
@@ -26,19 +26,45 @@
Author [Fabio Somenzi]
- Copyright [This file was created at the University of Colorado at
- Boulder. The University of Colorado at Boulder makes no warranty
- about the suitability of this software for any purpose. It is
- presented on an AS IS basis.]
+ Copyright [Copyright (c) 1995-2004, Regents of the University of Colorado
+
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ Neither the name of the University of Colorado nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.]
******************************************************************************/
-#include "util_hack.h"
+#include "util.h"
#include "mtrInt.h"
ABC_NAMESPACE_IMPL_START
-
/*---------------------------------------------------------------------------*/
/* Constant declarations */
/*---------------------------------------------------------------------------*/
@@ -56,7 +82,7 @@ ABC_NAMESPACE_IMPL_START
/*---------------------------------------------------------------------------*/
#ifndef lint
-static char rcsid[] MTR_UNUSED = "$Id: mtrGroup.c,v 1.1.1.1 2003/02/24 22:24:02 wjiang Exp $";
+static char rcsid[] MTR_UNUSED = "$Id: mtrGroup.c,v 1.18 2009/02/20 02:03:47 fabio Exp $";
#endif
/*---------------------------------------------------------------------------*/
@@ -69,7 +95,7 @@ static char rcsid[] MTR_UNUSED = "$Id: mtrGroup.c,v 1.1.1.1 2003/02/24 22:24:02
/* Static function prototypes */
/*---------------------------------------------------------------------------*/
-static int mtrShiftHL ARGS((MtrNode *node, int shift));
+static int mtrShiftHL (MtrNode *node, int shift);
/**AutomaticEnd***************************************************************/
@@ -517,7 +543,11 @@ Mtr_PrintGroups(
assert(root != NULL);
assert(root->younger == NULL || root->younger->elder == root);
assert(root->elder == NULL || root->elder->younger == root);
- if (!silent) (void) printf("(%d",root->low);
+#if SIZEOF_VOID_P == 8
+ if (!silent) (void) printf("(%u",root->low);
+#else
+ if (!silent) (void) printf("(%hu",root->low);
+#endif
if (MTR_TEST(root,MTR_TERMINAL) || root->child == NULL) {
if (!silent) (void) printf(",");
} else {
@@ -530,7 +560,11 @@ Mtr_PrintGroups(
}
}
if (!silent) {
- (void) printf("%d", root->low + root->size - 1);
+#if SIZEOF_VOID_P == 8
+ (void) printf("%u", root->low + root->size - 1);
+#else
+ (void) printf("%hu", root->low + root->size - 1);
+#endif
if (root->flags != MTR_DEFAULT) {
(void) printf("|");
if (MTR_TEST(root,MTR_FIXED)) (void) printf("F");
@@ -596,12 +630,15 @@ Mtr_ReadGroups(
if (err == EOF) {
break;
} else if (err != 3) {
+ Mtr_FreeTree(root);
return(NULL);
} else if (low < 0 || low+size > nleaves || size < 1) {
+ Mtr_FreeTree(root);
return(NULL);
} else if (strlen(attrib) > 8 * sizeof(MtrHalfWord)) {
/* Not enough bits in the flags word to store these many
** attributes. */
+ Mtr_FreeTree(root);
return(NULL);
}
@@ -631,7 +668,10 @@ Mtr_ReadGroups(
}
node = Mtr_MakeGroup(root, (MtrHalfWord) low, (MtrHalfWord) size,
flags);
- if (node == NULL) return(NULL);
+ if (node == NULL) {
+ Mtr_FreeTree(root);
+ return(NULL);
+ }
}
return(root);
@@ -692,4 +732,3 @@ mtrShiftHL(
} /* end of mtrShiftHL */
ABC_NAMESPACE_IMPL_END
-
diff --git a/src/bdd/mtr/mtrInt.h b/src/bdd/mtr/mtrInt.h
index 2a470411..9c8c6e26 100644
--- a/src/bdd/mtr/mtrInt.h
+++ b/src/bdd/mtr/mtrInt.h
@@ -12,28 +12,52 @@
Author [Fabio Somenzi]
- Copyright [This file was created at the University of Colorado at
- Boulder. The University of Colorado at Boulder makes no warranty
- about the suitability of this software for any purpose. It is
- presented on an AS IS basis.]
+ Copyright [Copyright (c) 1995-2004, Regents of the University of Colorado
- Revision [$Id: mtrInt.h,v 1.1.1.1 2003/02/24 22:24:02 wjiang Exp $]
+ All rights reserved.
+
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions
+ are met:
+
+ Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+
+ Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+
+ Neither the name of the University of Colorado nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+ FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+ COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+ BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+ CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+ ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.]
+
+ Revision [$Id: mtrInt.h,v 1.2 2004/08/13 18:15:12 fabio Exp $]
******************************************************************************/
#ifndef _MTRINT
#define _MTRINT
-
#include "mtr.h"
-ABC_NAMESPACE_HEADER_START
-
-
/*---------------------------------------------------------------------------*/
/* Nested includes */
/*---------------------------------------------------------------------------*/
+ABC_NAMESPACE_HEADER_START
/*---------------------------------------------------------------------------*/
/* Constant declarations */
@@ -63,11 +87,8 @@ ABC_NAMESPACE_HEADER_START
/* Function prototypes */
/*---------------------------------------------------------------------------*/
+ABC_NAMESPACE_HEADER_END
/**AutomaticEnd***************************************************************/
-
-
-ABC_NAMESPACE_HEADER_END
-
#endif /* _MTRINT */