<> <> <> <> DIRECTORY CD, CDGenerate, CDGenerateBackdoor, CDDirectory, Rope, SymTab, TerminalIO; CDGenerateDirectoryImpl: CEDAR PROGRAM IMPORTS CDGenerate, CDGenerateBackdoor, CDDirectory, Rope, SymTab, TerminalIO = BEGIN DirectorySelector: CDGenerateBackdoor.SelectorProc = BEGIN key _ TerminalIO.RequestRope[" from directory>"]; END; DirectoryIndirector: CDGenerateBackdoor.IGeneratorProc = BEGIN IF Rope.IsEmpty[key] THEN key _ TerminalIO.RequestRope["type name >"]; RETURN [CDDirectory.Fetch[design, key].object] END; dummy: CDGenerate.Table _ CDGenerate.Create[]; fromDirectory: CDGenerate.Table _ CDGenerateBackdoor.CreateIndirect[ onTopOf: dummy, iGenerator: DirectoryIndirector, selector: DirectorySelector ]; TRUSTED { [] _ SymTab.Insert[CDGenerateBackdoor.publicTables, "DIRECTORY", LOOPHOLE[fromDirectory]]; }; END.