- case END_MACRO:
- LATTEST(dim_macros.find(e.macro) != dim_macros.end());
- e.macro->macro()->unlock();
- // Cache the dimension of the macro and remove it from
- // tracking map.
- coords.insets().add(e.macro, dim_macros[e.macro]);
- dim_macros.erase(e.macro);
- break;
- // This is basically like macros
- case BEG_ARG:
- if (e.macro)
- e.macro->macro()->unlock();
- dim_arrays[e.ar] = Dimension();
- break;
- case END_ARG:
- LATTEST(dim_arrays.find(e.ar) != dim_arrays.end());
- if (e.macro)
- e.macro->macro()->lock();
- coords.arrays().add(e.ar, dim_arrays[e.ar]);
- dim_arrays.erase(e.ar);
+ case END:
+ if (e.inset) {
+ e.inset->afterMetrics();
+ LATTEST(dim_insets.back().first == e.inset);
+ coords.insets().add(e.inset, dim_insets.back().second);
+ dim_insets.pop_back();
+ }
+ if (e.ar) {
+ LATTEST(dim_arrays.back().first == e.ar);
+ coords.arrays().add(e.ar, dim_arrays.back().second);
+ dim_arrays.pop_back();
+ }