summaryrefslogtreecommitdiff
path: root/source/luametatex/source/tex/texmathcodes.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/luametatex/source/tex/texmathcodes.h')
-rw-r--r--source/luametatex/source/tex/texmathcodes.h77
1 files changed, 77 insertions, 0 deletions
diff --git a/source/luametatex/source/tex/texmathcodes.h b/source/luametatex/source/tex/texmathcodes.h
new file mode 100644
index 000000000..a45132171
--- /dev/null
+++ b/source/luametatex/source/tex/texmathcodes.h
@@ -0,0 +1,77 @@
+/*
+ See license.txt in the root of this project.
+*/
+
+# ifndef LMT_MATHCODES_H
+# define LMT_MATHCODES_H
+
+/*tex
+ We keep this special value which is used in |0x8000| so we have no real problem with 8 being
+ some other class as well. The 8 here is not really a class.
+*/
+
+# define active_math_class_value 8
+
+typedef enum mathcode_codes {
+ no_mathcode,
+ tex_mathcode,
+ umath_mathcode,
+ /* umathnum_mathcode, */
+ mathspec_mathcode
+} mathcode_codes;
+
+typedef struct mathcodeval {
+ short class_value;
+ short family_value;
+ int character_value;
+} mathcodeval;
+
+typedef struct mathdictval {
+ unsigned short properties; // 1=char 2=open 4=close 8=middle 16=middle==class
+ unsigned short group;
+ unsigned int index;
+} mathdictval;
+
+# undef small /* defined in some microsoft library */
+
+/*tex
+ Until we drop 8 bit font support we keep the small and large distinction but it might
+ go away some day as it wastes memory.
+*/
+
+typedef struct delcodeval {
+ mathcodeval small;
+ mathcodeval large;
+} delcodeval;
+
+typedef struct mathspecval {
+ mathcodeval code;
+ mathdictval dict;
+} mathspecval;
+
+extern void tex_set_math_code (int n, mathcodeval v, int gl);
+extern mathcodeval tex_get_math_code (int n);
+extern int tex_get_math_code_number (int n);
+extern mathcodeval tex_no_math_code (void);
+
+extern void tex_set_del_code (int n, delcodeval v, int gl);
+extern delcodeval tex_get_del_code (int n);
+extern int tex_get_del_code_number (int n);
+extern int tex_has_del_code (delcodeval v);
+extern delcodeval tex_no_del_code (void);
+
+extern mathcodeval tex_scan_mathchar (int extcode);
+extern mathdictval tex_scan_mathdict (void);
+extern mathcodeval tex_scan_delimiter_as_mathchar (int extcode);
+extern mathcodeval tex_mathchar_from_integer (int value, int extcode);
+extern mathcodeval tex_mathchar_from_spec (int value);
+
+extern void tex_show_mathcode_value (mathcodeval d, int extcode);
+extern void tex_unsave_math_codes (int grouplevel);
+extern void tex_initialize_math_codes (void);
+extern void tex_dump_math_codes (dumpstream f);
+extern void tex_undump_math_codes (dumpstream f);
+
+extern void tex_free_math_codes (void);
+
+# endif