/*====================================================================* - Copyright (C) 2001 Leptonica. All rights reserved. - This software is distributed in the hope that it will be - useful, but with NO WARRANTY OF ANY KIND. - No author or distributor accepts responsibility to anyone for the - consequences of using this software, or for whether it serves any - particular purpose or works at all, unless he or she says so in - writing. Everyone is granted permission to copy, modify and - redistribute this source code, for commercial or non-commercial - purposes, with the following restrictions: (1) the origin of this - source code must not be misrepresented; (2) modified versions must - be plainly marked as such; and (3) this notice may not be removed - or altered from any source or modified source distribution. *====================================================================*/ #ifndef LEPTONICA_PTRA_H #define LEPTONICA_PTRA_H /* * Contains the following structs: * struct L_Ptra * struct L_Ptraa * * Contains definitions for: * L_Ptra compaction flags for removal * L_Ptra shifting flags for insert * L_Ptraa accessor flags */ /*------------------------------------------------------------------------* * Generic Ptr Array Structs * *------------------------------------------------------------------------*/ /* Generic pointer array */ struct L_Ptra { l_int32 nalloc; /* size of allocated ptr array */ l_int32 imax; /* greatest valid index */ l_int32 nactual; /* actual number of stored elements */ void **array; /* ptr array */ }; typedef struct L_Ptra L_PTRA; /* Array of generic pointer arrays */ struct L_Ptraa { l_int32 nalloc; /* size of allocated ptr array */ struct L_Ptra **ptra; /* array of ptra */ }; typedef struct L_Ptraa L_PTRAA; /*------------------------------------------------------------------------* * Array flags * *------------------------------------------------------------------------*/ /* Flags for removal from L_Ptra */ enum { L_NO_COMPACTION = 1, /* null the pointer only */ L_COMPACTION = 2 /* compact the array */ }; /* Flags for insertion into L_Ptra */ enum { L_AUTO_DOWNSHIFT = 0, /* choose based on number of holes */ L_MIN_DOWNSHIFT = 1, /* downshifts min # of ptrs below insert */ L_FULL_DOWNSHIFT = 2 /* downshifts all ptrs below insert */ }; /* Accessor flags for L_Ptraa */ enum { L_HANDLE_ONLY = 0, /* ptr to L_Ptra; caller can inspect only */ L_REMOVE = 1 /* caller owns; destroy or save in L_Ptraa */ }; #endif /* LEPTONICA_PTRA_H */