diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2009-03-18 13:02:13 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2009-03-20 08:44:40 +0000 |
commit | 698203ab28bc679c2e62a2452a79d5785fd46ca7 (patch) | |
tree | a2d0086444a6a25500283210cd340daca899ece7 /pango/pango-script-private.h | |
parent | 3241972c4f4d9c1d98d166c38cb0d7b12afb5545 (diff) | |
download | pango-698203ab28bc679c2e62a2452a79d5785fd46ca7.tar.gz |
[pango] Allocate PangoScriptIter on stack.
Move the PangoScriptIter structure definition to a private header file,
so that we can embed the iterator within other structures or allocate
a local iterator on the stack. This eliminates the frequent short-lived
allocations associated with the iterator.
Diffstat (limited to 'pango/pango-script-private.h')
-rw-r--r-- | pango/pango-script-private.h | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/pango/pango-script-private.h b/pango/pango-script-private.h new file mode 100644 index 00000000..b77209c6 --- /dev/null +++ b/pango/pango-script-private.h @@ -0,0 +1,56 @@ +/* Pango + * pango-script-private.h: Script tag handling, private definitions + * + * Copyright (C) 2002 Red Hat Software + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#ifndef __PANGO_SCRIPT_PRIVATE_H__ +#define __PANGO_SCRIPT_PRIVATE_H__ + +#define PAREN_STACK_DEPTH 128 + +typedef struct _ParenStackEntry ParenStackEntry; + +struct _ParenStackEntry +{ + int pair_index; + PangoScript script_code; +}; + +struct _PangoScriptIter +{ + const gchar *text_start; + const gchar *text_end; + + const gchar *script_start; + const gchar *script_end; + PangoScript script_code; + + ParenStackEntry paren_stack[PAREN_STACK_DEPTH]; + int paren_sp; +}; + +PangoScriptIter * +_pango_script_iter_init (PangoScriptIter *iter, + const char *text, + int length); + +void +_pango_script_iter_fini (PangoScriptIter *iter); + +#endif /* __PANGO_SCRIPT_PRIVATE_H__ */ |