File: XMesaCmplr17.mesa - created by DJW. Last edit: - from AR 54
Copyright (C) 1985 by Xerox Corporation. All rights reserved.
DIRECTORY ;
XMesaCmplr17: PROGRAM = BEGIN
ReferenceDotReference: TYPE = LONG CARDINAL;
ReferenceDotNull: ReferenceDotReference = 0;
TemplateInternalHandle: TYPE = LONG POINTER TO TemplateInternalObject;
TemplateInternalObject: TYPE = RECORD [
ref: ReferenceDotReference ← ReferenceDotNull,
domain: ReferenceDotReference ← ReferenceDotNull,
sets: ReferenceDotReference ← ReferenceDotNull,
functions: ReferenceDotReference ← ReferenceDotNull,
name: LONG STRING];
DomainInternalHandle: TYPE = LONG POINTER TO DomainInternalObject;
DomainInternalObject: TYPE = MACHINE DEPENDENT RECORD [
count: CARDINAL ← 0,
ref: ReferenceDotReference ← ReferenceDotNull,
zone: UNCOUNTED ZONENIL,
vals: SEQUENCE COMPUTED CARDINAL OF DomainElement];
DomainElement: TYPE = LONG POINTER;
JDataXferDotTemplateObjectV0: TYPE = RECORD [
ref: ReferenceDotReference, domain: JDataXferDotTemplateStringDomain,
sets: SetsBinding, functions: FunctionsBinding,
name: LONG STRING];
SetsBinding: TYPE = RECORD [ref: ReferenceDotReference, bindingObject: SetsBindingObject];
SetsBindingObject: TYPE = RECORD [count: CARDINAL, left: JDataXferDotTemplateStringDomain, right: TemplateSetRefDomain, vals: BindingValueList];
TemplateSetRefDomain: TYPE = RECORD [ref: ReferenceDotReference, domainObject: TemplateSetRefDomainObject];
TemplateSetRefDomainObject: TYPE = RECORD [count: CARDINAL, sorted: IndexSet, vals: TemplateSetRefDomainValueList];
TemplateSetRefDomainValueList: TYPE = LONG DESCRIPTOR FOR ARRAY TemplateSetRefDomainValueListIndex OF TemplateSet;
TemplateSetRefDomainValueListIndex: TYPE = CARDINAL;
TemplateSet: TYPE = RECORD [ref: ReferenceDotReference, setObject: TemplateSetObject];
TemplateSetObject: TYPE = RECORD [size: CARDINAL, set: IndexSet];
DomainIndex: TYPE = CARDINAL;
IndexSet: TYPE = LONG DESCRIPTOR FOR ARRAY IndexSetIndex OF DomainIndex;
IndexSetIndex: TYPE = CARDINAL;
BindingValueList: TYPE = LONG DESCRIPTOR FOR ARRAY BindingValueListIndex OF DomainIndex;
BindingValueListIndex: TYPE = CARDINAL;
FunctionsBinding: TYPE = RECORD [ref: ReferenceDotReference, bindingObject: FunctionsBindingObject];
FunctionsBindingObject: TYPE = RECORD [count: CARDINAL, left: JDataXferDotTemplateStringDomain, right: TemplateFunctionRefDomain, vals: BindingValueList];
TemplateFunctionRefDomain: TYPE = RECORD [ref: ReferenceDotReference, domainObject: TemplateFunctionRefDomainObject];
TemplateFunctionRefDomainObject: TYPE = RECORD [count: CARDINAL, sorted: IndexSet, vals: TemplateFunctionRefDomainValueList];
TemplateFunctionRefDomainValueList: TYPE = LONG DESCRIPTOR FOR ARRAY TemplateFunctionRefDomainValueListIndex OF TemplateFunction;
TemplateFunctionRefDomainValueListIndex: TYPE = CARDINAL;
TemplateFunction: TYPE = RECORD [ref: ReferenceDotReference, functionObject: TemplateFunctionObject];
TemplateFunctionObject: TYPE = RECORD [count: CARDINAL, lhs: IndexSet, rhs: SetOfIndexSet];
SetOfIndexSet: TYPE = LONG DESCRIPTOR FOR ARRAY SetOfIndexSetIndex OF IndexSet;
SetOfIndexSetIndex: TYPE = CARDINAL;
JDataXferDotTemplateStringDomain: TYPE = RECORD [
count: CARDINAL, ref: ReferenceDotReference, sorted: IndexSet, vals: StringValueList];
StringValueList: TYPE = LONG DESCRIPTOR FOR ARRAY StringValueListIndex OF LONG STRING;
StringValueListIndex: TYPE = CARDINAL;
ConvertFromV0: PROC [
externalTemplate: JDataXferDotTemplateObjectV0, z: UNCOUNTED ZONE]
RETURNS [tHandle: TemplateInternalHandle] =
BEGIN
ConvertFromExtStringDomain: PROC [ -- OK
extDomain: JDataXferDotTemplateStringDomain]
RETURNS [domainRef: ReferenceDotReference ← ReferenceDotNull] =
BEGIN
domainHandle: DomainInternalHandle ← z.NEW[
DomainInternalObject[extDomain.count]];
END; -- of ConvertFromExtStringDomain
tHandle ← z.NEW[TemplateInternalObject];
END;
END...