From 405e52e5e87e393e7e4d7dc8a4e0163be006eca5 Mon Sep 17 00:00:00 2001 From: Reini Urban Date: Sat, 2 Nov 2024 09:29:51 +0100 Subject: [PATCH] Fix C++ compilation on newer compilers e.g. needed for stp, which compiles it with C++ and -fpermissive --- src/aig/aig/aig.h | 19 +++++++++++++++++++ src/misc/util/abc_global.h | 19 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/src/aig/aig/aig.h b/src/aig/aig/aig.h index 5285ae72bb..9497a878b7 100644 --- a/src/aig/aig/aig.h +++ b/src/aig/aig/aig.h @@ -243,10 +243,29 @@ static inline int Aig_WordFindFirstBit( unsigned uWord ) return -1; } +ifdef __cplusplus +static inline Aig_Obj_t* Aig_Regular(Aig_Obj_t* p) +{ + return reinterpret_cast(reinterpret_cast(p) & ~01); +} +static inline Aig_Obj_t* Aig_Not(Aig_Obj_t* p) +{ + return reinterpret_cast(reinterpret_cast(p) ^ 01); +} +static inline Aig_Obj_t* Aig_NotCond(Aig_Obj_t* p, int c) +{ + return reinterpret_cast(reinterpret_cast(p) ^ (c)); +} +static inline int Aig_IsComplement(Aig_Obj_t* p) +{ + return static_cast(reinterpret_cast(p) & 01); +} +#else static inline Aig_Obj_t * Aig_Regular( Aig_Obj_t * p ) { return (Aig_Obj_t *)((ABC_PTRUINT_T)(p) & ~01); } static inline Aig_Obj_t * Aig_Not( Aig_Obj_t * p ) { return (Aig_Obj_t *)((ABC_PTRUINT_T)(p) ^ 01); } static inline Aig_Obj_t * Aig_NotCond( Aig_Obj_t * p, int c ) { return (Aig_Obj_t *)((ABC_PTRUINT_T)(p) ^ (c)); } static inline int Aig_IsComplement( Aig_Obj_t * p ) { return (int)((ABC_PTRUINT_T)(p) & 01); } +#endif static inline int Aig_ManCiNum( Aig_Man_t * p ) { return p->nObjs[AIG_OBJ_CI]; } static inline int Aig_ManCoNum( Aig_Man_t * p ) { return p->nObjs[AIG_OBJ_CO]; } diff --git a/src/misc/util/abc_global.h b/src/misc/util/abc_global.h index 4bc3c1c15a..9ccc442fe1 100644 --- a/src/misc/util/abc_global.h +++ b/src/misc/util/abc_global.h @@ -313,10 +313,29 @@ static inline int Abc_LitRegular( int Lit ) { assert(Lit >= 0) static inline int Abc_Lit2LitV( int * pMap, int Lit ) { assert(Lit >= 0); return Abc_Var2Lit( pMap[Abc_Lit2Var(Lit)], Abc_LitIsCompl(Lit) ); } static inline int Abc_Lit2LitL( int * pMap, int Lit ) { assert(Lit >= 0); return Abc_LitNotCond( pMap[Abc_Lit2Var(Lit)], Abc_LitIsCompl(Lit) ); } +#ifdef __cplusplus +static inline int Abc_Ptr2Int(void* p) +{ + return static_cast(reinterpret_cast(p)); +} +static inline void* Abc_Int2Ptr(int i) +{ + return reinterpret_cast(static_cast(i)); +} +static inline word Abc_Ptr2Wrd(void* p) +{ + return static_cast(reinterpret_cast(p)); +} +static inline void* Abc_Wrd2Ptr(word i) +{ + return reinterpret_cast(static_cast(i)); +} +#else static inline int Abc_Ptr2Int( void * p ) { return (int)(ABC_PTRINT_T)p; } static inline void * Abc_Int2Ptr( int i ) { return (void *)(ABC_PTRINT_T)i; } static inline word Abc_Ptr2Wrd( void * p ) { return (word)(ABC_PTRUINT_T)p; } static inline void * Abc_Wrd2Ptr( word i ) { return (void *)(ABC_PTRUINT_T)i; } +#endif static inline int Abc_Var2Lit2( int Var, int Att ) { assert(!(Att >> 2)); return (Var << 2) + Att; } static inline int Abc_Lit2Var2( int Lit ) { assert(Lit >= 0); return Lit >> 2; }