WITH cse: se
SELECT
FROM
mode => NULL;
basic =>
BEGIN
PRope[h, " - code: "]; PUnsigned[h, cse.code];
PNextU[h, "length", cse.length];
IF cse.ordered THEN PNext[h, "ordered"];
END;
enumerated =>
BEGIN
PRope[h, " - valCtx: "];
PU[h, cse.valueCtx]; PNextU[h, "nVals", cse.nValues];
IF cse.ordered THEN PNext[h, "ordered"];
IF cse.machineDep THEN PNext[h, "machineDep"];
IF cse.sparse THEN PNext[h, "sparse"];
IF cse.unpainted THEN PNext[h, "unpainted"];
END;
record =>
BEGIN
PRope[h, " - fieldCtx: "]; PU[h, cse.fieldCtx];
PNextU[h, "length", cse.length];
WITH lnkp: cse
SELECT
FROM
linked => PNextU[h, "linkType",lnkp.linkType];
ENDCASE;
IF cse.argument THEN PNext[h, "argument"];
IF cse.monitored THEN PNext[h, "monitored"];
IF cse.painted THEN PNext[h, "painted"];
IF cse.machineDep THEN PNext[h, "machineDep"];
IF cse.hints.variant THEN PNext[h, "variant"];
IF cse.hints.comparable THEN PNext[h, "comparable"];
IF cse.hints.assignable THEN PNext[h, "assignable"];
IF cse.hints.privateFields THEN PNext[h, "privateFields"];
IF cse.hints.unifield THEN PNext[h, "unifield"];
IF cse.hints.refField THEN PNext[h, "refField"];
IF cse.hints.default THEN PNext[h, "default"];
IF cse.hints.voidable THEN PNext[h, "voidable"];
END;
ref =>
BEGIN
PRope[h, " - refT: "]; PU[h, cse.refType];
IF cse.counted THEN PNext[h, "counted"];
IF cse.list THEN PNext[h, "list"];
IF cse.var THEN PNext[h, "var"];
IF cse.ordered THEN PNext[h, "ordered"];
IF cse.readOnly THEN PNext[h, "readOnly"];
IF cse.basing THEN PNext[h, "basing"];
END;
array =>
BEGIN
PRope[h, " - index: "]; PU[h, cse.indexType];
PNextU[h, "comp", cse.componentType];
IF cse.packed THEN PNext[h, "packed"];
END;
arraydesc =>
BEGIN
PRope[h, " - of: "]; PU[h, cse.describedType];
IF cse.readOnly THEN PNext[h, "readOnly"];
IF cse.var THEN PNext[h, "var"];
END;
transfer =>
BEGIN
IF cse.safe THEN PNext[h, "safe"];
PNextNull[h, "in", cse.typeIn, CSENull];
PNextNull[h, "out", cse.typeOut, CSENull];
END;
definition =>
BEGIN
PRope[h, " - defCtx: "]; PU[h, cse.defCtx];
IF cse.named THEN PNext[h, "named"];
END;
union =>
BEGIN
PRope[h, " - tag: "]; PNull[h, cse.tagSei, SENull];
PNextU[h, "caseCtx", cse.caseCtx];
IF cse.overlaid THEN PNext[h, "overlaid"];
IF cse.controlled THEN PNext[h, "controlled"];
IF cse.machineDep THEN PNext[h, "machineDep"];
IF cse.hints.equalLengths THEN PNext[h, "equalLengths"];
IF cse.hints.refField THEN PNext[h, "refField"];
IF cse.hints.default THEN PNext[h, "default"];
IF cse.hints.voidable THEN PNext[h, "voidable"];
END;
sequence =>
BEGIN
PRope[h, " - tag: "]; PNull[h, cse.tagSei, SENull];
PNextU[h, "comp", cse.componentType];
IF cse.controlled THEN PNext[h, "controlled"];
IF cse.packed THEN PNext[h, "packed"];
IF cse.machineDep THEN PNext[h, "machineDep"];
END;
relative =>
BEGIN
PRope[h, " - base: "]; PU[h, cse.baseType];
PNextU[h, "offset", cse.offsetType];
PNextU[h, "result", cse.resultType];
END;
subrange =>
BEGIN
PRope[h, " - of: "]; PNull[h, cse.rangeType, SENull];
PNextU[h, "origin", cse.origin];
PNextU[h, "range", cse.range];
IF cse.filled THEN PNext[h, "filled"];
IF cse.empty THEN PNext[h, "empty"];
END;
long, real =>
BEGIN
PRope[h, " - of: "]; PNull[h, cse.rangeType, SENull];
END;
opaque =>
BEGIN
PRope[h, " - id(se): "]; PNull[h, cse.id, SENull];
PNextU[h, "length", cse.length];
IF cse.lengthKnown THEN PNext[h, "lengthKnown"];
END;
zone =>
BEGIN
IF cse.counted THEN PNext[h, "counted"];
IF cse.mds THEN PNext[h, "mds"];
END;
ENDCASE;