diff options
Diffstat (limited to 'source/luametatex/source/tex/textoken.h')
-rw-r--r-- | source/luametatex/source/tex/textoken.h | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/source/luametatex/source/tex/textoken.h b/source/luametatex/source/tex/textoken.h index da2d01f7c..68632792b 100644 --- a/source/luametatex/source/tex/textoken.h +++ b/source/luametatex/source/tex/textoken.h @@ -108,32 +108,39 @@ typedef struct token_state_info { char *buffer; int bufloc; int bufmax; - int padding; + int empty; } token_state_info; extern token_state_info lmt_token_state; -// # define max_token_reference 0x7FFF /* we can bump to 0xFFFF when we go unsigned here */ -// -//define token_reference(a) token_memory_state.tokens[a].half1 -// -// #define get_token_parameters(a) lmt_token_memory_state.tokens[a].quart2 -// #define get_token_reference(a) lmt_token_memory_state.tokens[a].quart3 -// -// #define set_token_parameters(a,b) lmt_token_memory_state.tokens[a].quart2 = (b) -// -// #define add_token_reference(a) lmt_token_memory_state.tokens[a].quart3 += 1 -// #define sub_token_reference(a) lmt_token_memory_state.tokens[a].quart3 -= 1 -// #define inc_token_reference(a,b) lmt_token_memory_state.tokens[a].quart3 += (quarterword) (b) -// #define dec_token_reference(a,b) lmt_token_memory_state.tokens[a].quart3 -= (quarterword) (b) +/*tex + + We now can have 15 paremeters but if needed we can go higher. However, we then also need to + cache more and change the |preamble| and |count| to some funny bit ranges. If needed we can + bump the reference count maximum but quite likely one already has run out of something else + already. + + \starttyping + preamble = 0xF0000000 : 1 when we have one, including trailing # + count = 0x0F000000 + reference = 0x00FFFFFF + \stoptyping + +*/ + +# define max_match_count 15 +# define gap_match_count 7 -# define max_token_reference 0x0FFFFFFF +# define max_token_reference 0x00FFFFFF -# define get_token_parameters(a) (lmt_token_memory_state.tokens[a].hulf1 >> 28) -# define get_token_reference(a) (lmt_token_memory_state.tokens[a].hulf1 & 0x0FFFFFFF) +# define get_token_preamble(a) ((lmt_token_memory_state.tokens[a].hulf1 >> 28) & 0xF) +# define get_token_parameters(a) ((lmt_token_memory_state.tokens[a].hulf1 >> 24) & 0xF) +# define get_token_reference(a) ((lmt_token_memory_state.tokens[a].hulf1 ) & max_token_reference) -# define set_token_parameters(a,b) lmt_token_memory_state.tokens[a].hulf1 += ((b) << 28) /* normally the variable is still zero here */ +# define set_token_preamble(a,b) lmt_token_memory_state.tokens[a].hulf1 += ((b) << 28) /* normally the variable is still zero here */ +# define set_token_parameters(a,b) lmt_token_memory_state.tokens[a].hulf1 += ((b) << 24) /* normally the variable is still zero here */ +# define set_token_reference(a,b) lmt_token_memory_state.tokens[a].hulf1 += (b) # define add_token_reference(a) lmt_token_memory_state.tokens[a].hulf1 += 1 /* we are way off the parameter count */ # define sub_token_reference(a) lmt_token_memory_state.tokens[a].hulf1 -= 1 /* we are way off the parameter count */ # define inc_token_reference(a,b) lmt_token_memory_state.tokens[a].hulf1 += (b) /* we are way off the parameter count */ |