<> <> <> <<>> DIRECTORY Rope, AlgebraClasses, ASVariableSequences; ASOrchardStructure: CEDAR DEFINITIONS ~ BEGIN <> Orchard: TYPE = AlgebraClasses.Object; OrchardData: TYPE = LIST OF OrchardTerm; <> OrchardTerm: TYPE = REF OrchardTermRec; TermRec: TYPE = RECORD [ coefficient: AlgebraClasses.Object - expected to be either an Int or a Real tree: Tree, ]; Tree: TYPE = AC.Object; TreeData: TYPE = REF TreeDataRec; TreeDataRec: TYPE = RECORD [ parent: Tree _ NIL, -- parent tree; NIL iff this node is root children: LIST OF Tree _ NIL, -- NIL iff this node is a leaf label: ASVariables.Variable _ NIL, -- nonNIL iff this is a labeled tree key: ACInts.Int _ NIL -- nonNIL iff this is a heap-ordered tree ]; <> OrchardStructureData: TYPE = REF OrchardStructureDataRec; OrchardStructureDataRec: TYPE = RECORD [ coeffRing: AlgebraClasses.Object, -- expected to be either Ints or Reals labels: ASVariableSequences.VariableSequence _ NIL, -- NIL labels iff these are unlabeled trees heapOrdered: BOOL ]; <> MakeOrchardStructure: AlgebraClasses.OrchardStructureConstructor; <<>> MakeNameStructureData: PROC [data1, data2] RETURNS [structure: Object]; <<>> MakeNameStructure: PROC [data1, data2] RETURNS [structure: Object]; <> <> <> GetNameStructureData: AlgebraClasses.GetStructureDataProc; <> <> <<>> Data1: AlgebraClasses.UnaryOp; <> <<>> Data2: AlgebraClasses.UnaryOp; <> <> Flavor: AlgebraClasses.FlavorOp; <> <> <> <> StructureToRope: AlgebraClasses.ToRopeOp; <> StructureName: AlgebraClasses.ToRopeOp; <> StructureLBKey: AlgebraClasses.ToRopeOp; <> StructureData: AlgebraClasses.UnaryToListOp; <> <<>> IsNameStructure: AlgebraClasses.UnaryPredicate; <> MakeOrchard: AlgebraClasses.ListImbedOp; <> <<>> MakeElementNameData: PROC [field1, field2] RETURNS [elementData: ElementNameData]; <> GetNameElementData: AlgebraClasses.GetElementDataProc; <> <> <<>> Field1: AlgebraClasses.UnaryOp; <> <<>> Field2: AlgebraClasses.UnaryOp; <> <> WidenOther: AlgebraClasses.BinaryOp; <> <> <> CanWidenOther: AlgebraClasses.BinaryPredicate; <> <> NarrowOther: AlgebraClasses.BinaryOp; <> <> CanNarrowOther: AlgebraClasses.BinaryPredicate; <> WidenThis: AlgebraClasses.UnaryOp; <> <> <> <> <<>> NarrowThis: AlgebraClasses.UnaryOp; <> <> <> <<>> WidenToGeneralExpression: AlgebraClasses.UnaryOp; <> <> <<>> LegalFirstChar: AlgebraClasses.LegalFirstCharOp; ElementRead: AlgebraClasses.ReadOp; <> ElementFromRope: AlgebraClasses.FromRopeOp; ElementToRope: AlgebraClasses.ToRopeOp; <> ElementLBKey: AlgebraClasses.ToRopeOp; <> ElementWrite: AlgebraClasses.WriteOp; <> Select: AlgebraClasses.BinaryOp; <> Insert: AlgebraClasses.BinaryOp; <> <<>> Length: AlgebraClasses.UnaryOp; <> <<>> UnaryOp: AlgebraClasses.UnaryOp; END.