| /*====================================================================* |
| - 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 */ |