AcePerl
view release on metacpan or search on metacpan
acelib/wh/array.h view on Meta::CPAN
/* File: array.h
* Author: Richar Durbin (rd@sanger.ac.uk)
* Copyright (C) J Thierry-Mieg and R Durbin, 1998
*-------------------------------------------------------------------
* This file is part of the ACEDB genome database package, written by
* Richard Durbin (Sanger Centre, UK) rd@sanger.ac.uk, and
* Jean Thierry-Mieg (CRBM du CNRS, France) mieg@crbm.cnrs-mop.fr
*
* Description: header for arraysub.c
* NOT to be included by the user, included by regular.h
* Exported functions:
* the Array type and associated functions
* the Stack type and associated functions
* the Associator functions
* HISTORY:
* Last edited: Dec 4 11:03 1998 (fw)
* Created: Fri Dec 4 11:01:35 1998 (fw)
*-------------------------------------------------------------------
*/
#ifndef DEF_ARRAY_H
#define DEF_ARRAY_H
unsigned int stackused (void) ;
/************* Array package ********/
/* #define ARRAY_CHECK either here or in a single file to
check the bounds on arr() and arrp() calls
if defined here can remove from specific C files by defining
ARRAY_NO_CHECK (because some of our finest code
relies on abuse of arr!) YUCK!!!!!!!
*/
/* #define ARRAY_CHECK */
typedef struct ArrayStruct
{ char* base ; /* char* since need to do pointer arithmetic in bytes */
int dim ; /* length of alloc'ed space */
int size ;
int max ; /* largest element accessed via array() */
int id ; /* unique identifier */
int magic ;
} *Array ;
/* NB we need the full definition for arr() for macros to work
do not use it in user programs - it is private.
*/
#define ARRAY_MAGIC 8918274
#define STACK_MAGIC 8918275
#define ASS_MAGIC 8918276
#if !defined(MEM_DEBUG)
Array uArrayCreate (int n, int size, STORE_HANDLE handle) ;
void arrayExtend (Array a, int n) ;
Array arrayCopy (Array a) ;
#else
Array uArrayCreate_dbg (int n, int size, STORE_HANDLE handle,
const char *hfname,int hlineno) ;
void arrayExtend_dbg (Array a, int n, const char *hfname,int hlineno) ;
Array arrayCopy_dbg(Array a, const char *hfname,int hlineno) ;
#define uArrayCreate(n, s, h) uArrayCreate_dbg(n, s, h, __FILE__, __LINE__)
#define arrayExtend(a, n ) arrayExtend_dbg(a, n, __FILE__, __LINE__)
#define arrayCopy(a) arrayCopy_dbg(a, __FILE__, __LINE__)
#endif
Array uArrayReCreate (Array a,int n, int size) ;
void uArrayDestroy (Array a);
char *uArray (Array a, int index) ;
char *uArrCheck (Array a, int index) ;
char *uArrayCheck (Array a, int index) ;
#define arrayCreate(n,type) uArrayCreate(n,sizeof(type), 0)
#define arrayHandleCreate(n,type,handle) uArrayCreate(n, sizeof(type), handle)
#define arrayReCreate(a,n,type) uArrayReCreate(a,n,sizeof(type))
#define arrayDestroy(x) ((x) ? uArrayDestroy(x), x=0, TRUE : FALSE)
( run in 0.492 second using v1.01-cache-2.11-cpan-39bf76dae61 )