/* ==================================================== */ /* Copyright (c) Atelier de BioInformatique */ /* Mar. 92 */ /* File: libstki.h */ /* Purpose: library of dynamic stacks holding */ /* integer values */ /* History: */ /* 00/03/92 : first draft */ /* 07/07/93 : complete revision */ /* 10/03/94 : added xxxVector funcs */ /* 14/05/99 : last revision */ /* ==================================================== */ #ifndef _H_libstki #define _H_libstki #include "ecotype.h" /* ==================================================== */ /* Constantes de dimensionnement */ /* ==================================================== */ #ifndef kMinStackiSize #define kMinStackiSize 2 /* taille mini stack */ #endif #define kStkiNoErr 0 /* ok */ #define kStkiMemErr 1 /* not enough memory */ #define kStkiReset TRUE #define kStkiGet FALSE /* ==================================================== */ /* Macros standards */ /* ==================================================== */ #ifndef NEW #define NEW(typ) (typ*)malloc(sizeof(typ)) #define NEWN(typ, dim) (typ*)malloc((uint32_t)(dim) * sizeof(typ)) #define REALLOC(typ, ptr, dim) (typ*)realloc((void *) (ptr), (uint32_t)(dim) * sizeof(typ)) #define FREE(ptr) free((Ptr) ptr) #endif /* ==================================================== */ /* Types & Structures de donnees */ /* ==================================================== */ /* -------------------- */ /* structure : pile */ /* -------------------- */ typedef struct Stacki { /* ---------------------*/ int32_t size; /* stack size */ int32_t top; /* current free pos. */ int32_t cursor; /* current cursor */ int32_t *val; /* values */ /* ---------------------*/ } Stacki, *StackiPtr, **StackiHdle; /* ==================================================== */ /* Prototypes (generated by mproto) */ /* ==================================================== */ /* libstki.c */ int16_t StkiError (bool_t reset ); StackiPtr NewStacki (int32_t size ); StackiPtr FreeStacki (StackiPtr stki ); StackiHdle NewStackiVector (int32_t vectSize, int32_t stackSize ); StackiHdle FreeStackiVector (StackiHdle stkh, int32_t vectSize ); int32_t ResizeStacki (StackiHdle stkh , int32_t size ); bool_t PushiIn (StackiHdle stkh , int32_t val ); bool_t PopiOut (StackiHdle stkh , int32_t *val ); bool_t ReadiDown (StackiPtr stki , int32_t *val ); bool_t ReadiUp (StackiPtr stki , int32_t *val ); void CursiToTop (StackiPtr stki ); void CursiToBottom (StackiPtr stki ); void CursiSwap (StackiPtr stki ); bool_t SearchDownStacki (StackiPtr stki , int32_t sval ); bool_t BinSearchStacki (StackiPtr stki , int32_t sval ); bool_t SameStacki (StackiPtr stki1 , StackiPtr stki2 ); bool_t ReverseStacki (StackiPtr stki ); #endif /* _H_libstki */