MorePfsNames.mesa
Copyright Ó 1990 by Xerox Corporation. All rights reserved.
Last tweaked by Mike Spreitzer on April 10, 1992 8:59 am PDT
= {
ROPE: TYPE ~ Rope.ROPE;
RopePart: TYPE ~ RopeParts.RopePart;
Version: TYPE ~ PFSNames.Version;
Component: TYPE ~ PFSNames.Component;
PATH: TYPE ~ PFSNames.PATH;
NamePart:
TYPE ~
RECORD [base:
ROPE, start:
INT ← 0, len:
INT ←
INT.
LAST];
Like a RopePart, but without the invariant.
ConsComponent: PROC [name: RopePart, version: Version ← [none]] RETURNS [Component];
ConstructComponent: PROC [name: NamePart, version: Version ← [none]] RETURNS [Component];
ComponentName:
PROC [Component]
RETURNS [RopePart];
Result does not include the version.
ComponentToRope: PROC [Component] RETURNS [ROPE];
VersionToRope: PROC [Version] RETURNS [ROPE];
Replace: PROC [base: PATH, start: INT ← 0, len: INT ← INT.LAST, with: PATH] RETURNS [PATH];
Cons1:
PROC [component: Component, absolute, directory:
BOOL ←
FALSE, unparsed:
REF ←
NIL]
RETURNS [name:
PATH];
Make a PATH with exactly 1 component.
}.