void tex::append_glue () { int s; s = cur_chr; switch (s) { case FIL_CODE: cur_val = fil_glue; break; case FILL_CODE: cur_val = fill_glue; break; case SS_CODE: cur_val = ss_glue; break; case FIL_NEG_CODE: cur_val = fil_neg_glue; break; case SKIP_CODE: scan_glue(GLUE_VAL); break; case MSKIP_CODE: scan_glue(MU_VAL); break; default: break; } tail_append(new_glue(cur_val)); if (s >= SKIP_CODE) { decr(glue_ref_count(cur_val)); if (s > SKIP_CODE) subtype(tail) = MU_GLUE; } }
static int run_scan_glue(lua_State * L) { saved_tex_scanner texstate; int v = 0; int mu = false; int t = lua_gettop(L); if (t>0) mu = lua_toboolean(L,1); /* mu units required ?*/ save_tex_scanner(texstate); scan_glue((mu ? mu_val_level : glue_val_level)); v = cur_val; /* which is a glue_spec node */ unsave_tex_scanner(texstate); lua_nodelib_push_fast(L,(halfword)v); return 1; }