summaryrefslogtreecommitdiff
path: root/source/luametatex/source/tex/texmarks.h
diff options
context:
space:
mode:
Diffstat (limited to 'source/luametatex/source/tex/texmarks.h')
-rw-r--r--source/luametatex/source/tex/texmarks.h65
1 files changed, 65 insertions, 0 deletions
diff --git a/source/luametatex/source/tex/texmarks.h b/source/luametatex/source/tex/texmarks.h
new file mode 100644
index 000000000..e787fa9d0
--- /dev/null
+++ b/source/luametatex/source/tex/texmarks.h
@@ -0,0 +1,65 @@
+/*
+ See license.txt in the root of this project.
+*/
+
+# ifndef LMT_MARKS_H
+# define LMT_MARKS_H
+
+typedef enum get_mark_codes {
+ current_marks_code,
+ top_marks_code,
+ first_marks_code,
+ bot_marks_code,
+ split_first_marks_code,
+ split_bot_marks_code,
+ /* these map to zero */
+ top_mark_code, /*tex the mark in effect at the previous page break */
+ first_mark_code, /*tex the first mark between |top_mark| and |bot_mark| */
+ bot_mark_code, /*tex the mark in effect at the current page break */
+ split_first_mark_code, /*tex the first mark found by |\vsplit| */
+ split_bot_mark_code, /*tex the last mark found by |\vsplit| */
+} get_mark_codes;
+
+# define first_valid_mark_code top_marks_code
+# define last_unique_mark_code split_bot_marks_code
+# define last_get_mark_code split_bot_mark_code
+
+typedef enum set_mark_codes {
+ set_mark_code,
+ set_marks_code,
+ clear_marks_code,
+ flush_marks_code,
+} set_mark_codes;
+
+# define last_set_mark_code flush_marks_code
+
+typedef halfword mark_record[split_bot_marks_code+1];
+
+typedef struct mark_state_info {
+ mark_record *data;
+ int min_used;
+ int max_used;
+ memory_data mark_data;
+} mark_state_info;
+
+extern mark_state_info lmt_mark_state;
+
+extern void tex_initialize_marks (void);
+extern int tex_valid_mark (halfword m);
+extern void tex_reset_mark (halfword m);
+extern void tex_wipe_mark (halfword m);
+extern void tex_delete_mark (halfword m, int what);
+extern halfword tex_get_some_mark (halfword chr, halfword val);
+extern halfword tex_new_mark (quarterword subtype, halfword cls, halfword ptr);
+extern void tex_update_top_marks (void);
+extern void tex_update_first_and_bot_mark (halfword m);
+extern void tex_update_first_marks (void);
+extern void tex_update_split_mark (halfword m);
+extern void tex_show_marks (void);
+extern int tex_has_mark (halfword m);
+extern halfword tex_get_mark (halfword m, halfword s);
+extern void tex_set_mark (halfword m, halfword s, halfword v);
+
+extern void tex_run_mark (void);
+
+# endif