3
Copyright 2006-2008 Taco Hoekwater <taco@luatex.org>
5
This file is part of LuaTeX.
7
LuaTeX is free software; you can redistribute it and/or modify it under
8
the terms of the GNU General Public License as published by the Free
9
Software Foundation; either version 2 of the License, or (at your
10
option) any later version.
12
LuaTeX is distributed in the hope that it will be useful, but WITHOUT
13
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14
FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15
License for more details.
17
You should have received a copy of the GNU General Public License along
18
with LuaTeX; if not, see <http://www.gnu.org/licenses/>. */
20
/* $Id: managed-sa.h 2271 2009-04-12 23:42:21Z oneiros $ */
23
# define MANAGED_SA_H 1
25
/* the next two sets of three had better match up exactly, but using bare numbers
26
is easier on the C compiler */
32
# define HIGHPART_PART(a) (((a)>>14)&127)
33
# define MIDPART_PART(a) (((a)>>7)&127)
34
# define LOWPART_PART(a) ((a)&127)
36
# define Mxmalloc_array(a,b) xmalloc((b)*sizeof(a))
37
# define Mxrealloc_array(a,b,c) xrealloc((a),(c)*sizeof(b))
38
# define Mxfree(a) free(a); a=NULL
40
typedef unsigned int sa_tree_item;
50
int stack_size; /* initial stack size */
51
int stack_step; /* increment stack step */
52
int stack_ptr; /* current stack point */
53
int dflt; /* default item value */
54
sa_tree_item ***tree; /* item tree head */
55
sa_stack_item *stack; /* stack tree head */
58
typedef sa_tree_head *sa_tree;
60
extern sa_tree_item get_sa_item(const sa_tree head, const integer n);
61
extern void set_sa_item(sa_tree head, integer n, sa_tree_item v, integer gl);
63
extern sa_tree new_sa_tree(integer size, sa_tree_item dflt);
65
extern sa_tree copy_sa_tree(sa_tree head);
66
extern void destroy_sa_tree(sa_tree head);
68
extern void dump_sa_tree(sa_tree a);
69
extern sa_tree undump_sa_tree(void);
71
extern void restore_sa_stack(sa_tree a, integer gl);
72
extern void clear_sa_stack(sa_tree a);