<<>> <> <> <> <> <> <> DIRECTORY DFCachingOperations, DFOperations, DFUtilities, FS, IO, Rope, SymTab; DFCachingUtilities: CEDAR DEFINITIONS = {OPEN DFCachingOperations; Date: TYPE ~ DFUtilities.Date; noDate: Date ~ [omitted]; EnumerationCache: TYPE ~ REF EnumerationCachePrivate; EnumerationCachePrivate: TYPE; CreateEnumerationCache: PROC RETURNS [EnumerationCache]; EnumerateDFContents: PROC [df: FileSpec, Consumer: DFConsumer, filter: DFFilter ¬ everything, cache: EnumerationCache ¬ NIL, ConsumeFile: FileConsumer ¬ NIL] RETURNS [stopped, clipped, uncacheable: BOOL ¬ FALSE]; FileSpec: TYPE ~ RECORD [name: ROPE, created: Date ¬ noDate]; SyntaxError: SIGNAL [reason, dfFileName: ROPE, position: INT]; <> Miss: SIGNAL [dfFileName, dataFileName: ROPE]; <> FSErrorOnDF: SIGNAL [error: FS.ErrorDesc]; <> DFFilter: TYPE ~ RECORD [ comments: BOOL ¬ FALSE, file: FileFilter ¬ allFiles ]; everything: DFFilter ~ [TRUE]; DFConsumer: TYPE ~ PROC [item: REF ANY] RETURNS [stop, clip, dontCache: BOOL ¬ FALSE]; <> <> <> <> FileConsumer: TYPE ~ PROC [ROPE--short file name without version--]; NestItem: TYPE ~ RECORD [df: FileSpec, filter: DFFilter, bracket: Bracket]; Bracket: TYPE ~ {begin, end}; Side: TYPE ~ {local, remote}; FullEnumerateDFContents: PROC [df: FileSpec, side: Side, Consumer: DFConsumer, filter: DFFilter ¬ everything, cache: EnumerationCache ¬ NIL, ConsumeFile: FileConsumer ¬ NIL] RETURNS [stopped, clipped, uncacheable: BOOL ¬ FALSE]; }.