<> <> <> <<>> DIRECTORY IP; IPContextImpl: CEDAR PROGRAM IMPORTS IP EXPORTS IP ~ BEGIN OPEN IP; NewMarker: PROC[self: State] RETURNS[Marker] ~ { last: Marker ~ self.lastMarker; IF last self.context _ caller]; self.context _ caller; }; Frame: PUBLIC PROC[self: State] RETURNS[Vector] ~ { context: Context ~ self.context; IF context.frame=NIL THEN RETURN[context.initialFrame] ELSE RETURN[VectorFromArray[ACopy[context.frame]]]; }; FGet: PUBLIC PROC[self: State, j: Integer] RETURNS[Any] ~ { context: Context ~ self.context; IF context.frame=NIL THEN RETURN[Get[context.initialFrame, j]] ELSE RETURN[AGet[context.frame, j]] }; FSet: PUBLIC PROC[self: State, x: Any, j: Integer] ~ { context: Context ~ self.context; IF context.frame=NIL THEN context.frame _ ArrayFromVector[context.initialFrame]; ASet[context.frame, x, j]; }; PoolOp: PUBLIC PROC[self: State] RETURNS[Pool] ~ { RETURN[self.context.pool] }; PGet: PUBLIC PROC[self: State, j: Integer] RETURNS[Any] ~ { pool: Pool ~ self.context.pool; RETURN[AGet[pool.array, j]]; }; PSet: PUBLIC PROC[self: State, x: Any, j: Integer] ~ { pool: Pool ~ self.context.pool; -- SavePool[self, pool, ...]; -- ASet[pool.array, x, j]; }; Env: PUBLIC PROC[self: State] RETURNS[Vector] ~ { RETURN[self.context.env]; }; END.