summaryrefslogtreecommitdiff
path: root/pango/pango-script-private.h
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2009-03-18 13:02:13 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2009-03-20 08:44:40 +0000
commit698203ab28bc679c2e62a2452a79d5785fd46ca7 (patch)
treea2d0086444a6a25500283210cd340daca899ece7 /pango/pango-script-private.h
parent3241972c4f4d9c1d98d166c38cb0d7b12afb5545 (diff)
downloadpango-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.h56
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__ */