TeX in C
Explore TeX with modern c compiler.
PART 19: Saving and restoring equivalents

宏定义

#define savetype(x)   save_stack[x].hh.UU.U2.b0
 [p109#268] classifies a |save_stack| entry 更多...
 
#define savelevel(x)   save_stack[x].hh.UU.U2.b1
 [p109#268] saved level for regions 5 and 6, or group code 更多...
 
#define saveindex(x)   save_stack[x].hh.rh
 [p109#268] |eqtb| location or |save_stack| location 更多...
 
#define saved(x)   save_stack[save_ptr + x].int_
 [p111#274] 更多...
 

枚举

enum  SaveType { restoreoldvalue , restorezero , inserttoken , levelboundary }
 [#268] 更多...
 
enum  GroupCode {
  bottomlevel = 0 , simplegroup , hboxgroup , adjustedhboxgroup ,
  vboxgroup , vtopgroup = 5 , aligngroup , noaligngroup ,
  outputgroup , mathgroup , discgroup = 10 , insertgroup ,
  vcentergroup , mathchoicegroup , semisimplegroup , mathshiftgroup = 15 ,
  mathleftgroup = 16 , MAX_GROUP_CODE = 16
}
 [#269] group codes that are used to discriminate between different kinds of groups. 更多...
 

函数

void eqtb_save_init ()
 [#272, #287] 更多...
 
void new_save_level (GroupCode c)
 
void eq_destroy (MemoryWord w)
 
void eq_save (HalfWord p, QuarterWord l)
 
void eq_define (HalfWord p, QuarterWord t, HalfWord e)
 
void eq_word_define (HalfWord p, long w)
 
void geq_define (HalfWord p, QuarterWord t, HalfWord e)
 
void geq_word_define (HalfWord p, long w)
 
void save_for_after (HalfWord t)
 
void restore_trace (HalfWord p, StrNumber s)
 #284 更多...
 
void unsave (void)
 
void prepare_mag (void)
 

变量

MemoryWord save_stack [SAVE_SIZE+1]
 [ #268~288: SAVING AND RESTORING EQUIVALENTS ] [#271] 更多...
 
UInt16 save_ptr
 
UInt16 max_save_stack
 
QuarterWord cur_level
 
GroupCode cur_group
 
UInt16 cur_boundary
 
Integer mag_set
 

详细描述

宏定义说明

◆ saved

#define saved (   x)    save_stack[save_ptr + x].int_

[p111#274]

◆ saveindex

#define saveindex (   x)    save_stack[x].hh.rh

[p109#268] |eqtb| location or |save_stack| location

◆ savelevel

#define savelevel (   x)    save_stack[x].hh.UU.U2.b1

[p109#268] saved level for regions 5 and 6, or group code

◆ savetype

#define savetype (   x)    save_stack[x].hh.UU.U2.b0

[p109#268] classifies a |save_stack| entry

枚举类型说明

◆ GroupCode

enum GroupCode

[#269] group codes that are used to discriminate between different kinds of groups.

枚举值
bottomlevel 

the outside world

simplegroup 

local structure only

hboxgroup 

\hbox{...}

adjustedhboxgroup 

\hbox{...} in vertical mode

vboxgroup 

\vbox{...}

vtopgroup 

\vtop{...}

aligngroup 

\halign{...}, \valign{...}

noaligngroup 

\noalign{...}

outputgroup 

output routine

mathgroup 

^{...}

discgroup 

\discretionary{...}{...}{...}

insertgroup 

\insert{...}, \vadjust{...}

vcentergroup 

\vcenter{...}

mathchoicegroup 

\mathchoice{...}{...}{...}{...}

semisimplegroup 

\begingroup...\endgroup

mathshiftgroup 

$...$

mathleftgroup 

\left...\right

MAX_GROUP_CODE 

◆ SaveType

enum SaveType

[#268]

枚举值
restoreoldvalue 

when a value should be restored later

restorezero 

when an undefined entry should be restored

inserttoken 

when a token is being saved for later use

levelboundary 

corresponding to beginning of group

函数说明

◆ eq_define()

void eq_define ( HalfWord  p,
QuarterWord  t,
HalfWord  e 
)

◆ eq_destroy()

void eq_destroy ( MemoryWord  w)

◆ eq_save()

void eq_save ( HalfWord  p,
QuarterWord  l 
)

◆ eq_word_define()

void eq_word_define ( HalfWord  p,
long  w 
)

◆ eqtb_save_init()

void eqtb_save_init ( )

[#272, #287]

[#272]

[#287]

◆ geq_define()

void geq_define ( HalfWord  p,
QuarterWord  t,
HalfWord  e 
)

◆ geq_word_define()

void geq_word_define ( HalfWord  p,
long  w 
)

◆ new_save_level()

void new_save_level ( GroupCode  c)

◆ prepare_mag()

void prepare_mag ( void  )

◆ restore_trace()

void restore_trace ( HalfWord  p,
StrNumber  s 
)

#284

◆ save_for_after()

void save_for_after ( HalfWord  t)

◆ unsave()

void unsave ( void  )

变量说明

◆ cur_boundary

UInt16 cur_boundary

◆ cur_group

GroupCode cur_group

◆ cur_level

QuarterWord cur_level

◆ mag_set

Integer mag_set

◆ max_save_stack

UInt16 max_save_stack

◆ save_ptr

UInt16 save_ptr

◆ save_stack

MemoryWord save_stack[SAVE_SIZE+1]

[ #268~288: SAVING AND RESTORING EQUIVALENTS ] [#271]