21#ifndef ABC__aig__ivy__attr_h
22#define ABC__aig__ivy__attr_h
83static inline Attr_Man_t * Attr_ManAlloc(
int nAttrSize,
int fManMem )
88 p->nAttrSize = nAttrSize;
105static inline Attr_Man_t * Attr_ManStartInt(
int nAttrs )
108 p = Attr_ManAlloc(
sizeof(
int), 0 );
110 p->pAttrs = (
void **)
ALLOC(
int, nAttrs );
111 memset( (
int *)
p->pAttrs, 0,
sizeof(
int) * nAttrs );
127static inline Attr_Man_t * Attr_ManStartPtr(
int nAttrs )
130 p = Attr_ManAlloc(
sizeof(
void *), 0 );
132 p->pAttrs =
ALLOC(
void *, nAttrs );
133 memset(
p->pAttrs, 0,
sizeof(
void *) * nAttrs );
148static inline Attr_Man_t * Attr_ManStartPtrMem(
int nAttrs,
int nAttrSize )
152 p = Attr_ManAlloc( nAttrSize, 1 );
154 p->pAttrs =
ALLOC(
void *, nAttrs );
155 for ( i = 0; i <
p->nAttrs; i++ )
158 memset(
p->pAttrs[i], 0, nAttrSize );
177 if (
p->pFuncFreeObj )
182 for ( i = 0; i <
p->nAttrs; i++ )
183 if ( ((
int *)
p->pAttrs)[i] )
184 p->pFuncFreeObj(
p->pManAttr, (
void *)((
int *)
p->pAttrs)[i] );
188 for ( i = 0; i <
p->nAttrs; i++ )
190 p->pFuncFreeObj(
p->pManAttr,
p->pAttrs[i] );
194 if (
p->pManAttr &&
p->pFuncFreeMan )
195 p->pFuncFreeMan(
p->pManAttr );
215static inline int Attr_ManReadAttrInt(
Attr_Man_t *
p,
int Id )
218 if ( Id >=
p->nAttrs )
220 return ((
int *)
p->pAttrs)[Id];
234static inline void * Attr_ManReadAttrPtr(
Attr_Man_t *
p,
int Id )
237 if ( Id >=
p->nAttrs )
239 return p->pAttrs[Id];
253static inline void Attr_ManWriteAttrInt(
Attr_Man_t *
p,
int Id,
int Attr )
256 ((
int *)
p->pAttrs)[Id] = Attr;
270static inline void Attr_ManWriteAttrPtr(
Attr_Man_t *
p,
int Id,
void * pAttr )
274 p->pAttrs[Id] = pAttr;
288static inline int * Attr_ManFetchSpotInt(
Attr_Man_t *
p,
int Id )
291 if ( Id >=
p->nAttrs )
294 int i, nAttrsOld =
p->nAttrs;
296 p->nAttrs =
p->nAttrs? 2*
p->nAttrs : 1024;
297 p->pAttrs =
realloc(
p->pAttrs,
sizeof(
int) *
p->nAttrs );
299 for ( i = nAttrsOld; i <
p->nAttrs; i++ )
300 ((
int *)
p->pAttrs)[Id] = 0;
302 return ((
int *)
p->pAttrs) + Id;
316static inline void ** Attr_ManFetchSpotPtr(
Attr_Man_t *
p,
int Id )
319 if ( Id >=
p->nAttrs )
322 int i, nAttrsOld =
p->nAttrs;
324 p->nAttrs =
p->nAttrs? 2*
p->nAttrs : 1024;
325 p->pAttrs =
realloc(
p->pAttrs,
sizeof(
void *) *
p->nAttrs );
327 for ( i = nAttrsOld; i <
p->nAttrs; i++ )
328 p->pAttrs[Id] = NULL;
331 if (
p->pManMem &&
p->pAttrs[Id] != NULL )
334 memset(
p->pAttrs[Id], 0,
p->nAttrSize );
336 return p->pAttrs + Id;
351static inline int Attr_ManFetchAttrInt(
Attr_Man_t *
p,
int Id )
353 return *Attr_ManFetchSpotInt(
p, Id );
367static inline void * Attr_ManFetchAttrPtr(
Attr_Man_t *
p,
int Id )
369 return *Attr_ManFetchSpotPtr(
p, Id );
383static inline void Attr_ManSetAttrInt(
Attr_Man_t *
p,
int Id,
int Attr )
385 *Attr_ManFetchSpotInt(
p, Id ) = Attr;
399static inline void Attr_ManSetAttrPtr(
Attr_Man_t *
p,
int Id,
void * pAttr )
402 *Attr_ManFetchSpotPtr(
p, Id ) = pAttr;
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
typedefABC_NAMESPACE_HEADER_START struct Attr_ManStruct_t_ Attr_Man_t
INCLUDES ///.
void(* pFuncFreeObj)(void *, void *)
Extra_MmFixed_t * pManMem
void(* pFuncFreeMan)(void *)