90 lines
4.1 KiB
C
90 lines
4.1 KiB
C
|
/* ==================================================== */
|
||
|
/* Copyright (c) Atelier de BioInformatique */
|
||
|
/* Mar. 92 */
|
||
|
/* File: libstki.h */
|
||
|
/* Purpose: library of dynamic stacks holding */
|
||
|
/* integer values */
|
||
|
/* History: */
|
||
|
/* 00/03/92 : <Gloup> first draft */
|
||
|
/* 07/07/93 : <Gloup> complete revision */
|
||
|
/* 10/03/94 : <Gloup> added xxxVector funcs */
|
||
|
/* 14/05/99 : <Gloup> 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 */
|