+ # p.dir '' or '/'
+ def __init__(p, what):
+ p.what = what
+ p.path = [None,None]
+ p.file = [None,None]
+ p.dir = ''
+ def subpath(p, what, leaf, constructor):
+ if not p.dir: error "creating subpath of non-directory"
+ return constructor(what, p.spec+'/'+leaf, p.spec_tb)
+ def invalidate(p, tb=False):
+ p.file[tb] = None
+
+class InputFile(Path):
+ def __init__(p, what, spec, spec_tb=False):
+ AutoFile.__init__(p, what)
+ p.spec = spec
+ p.spec_tb = spec_tb
+ p.path[spec_tb] = p.file[spec_tb] = spec
+
+class InputDir(Path):
+ def __init__(p, what, spec, spec_tb=False):
+ InputFile.__init__(p,what,spec,spec_tb)
+ p.dir = '/'
+
+class OutputFile(Path):
+ def __init__(p, what, spec, spec_tb=False):
+ AutoFile.__init__(p, what)
+ p.spec = spec
+ p.spec_tb = spec_tb
+ p.path[spec_tb] = spec
+
+class OutputDir(Path):
+ def __init__(p, what, spec, spec_tb=False):
+ OutputFile.__init__(p,what,spec,spec_tb)
+ p.dir = '/'
+
+class TemporaryFile(Path):
+ def __init__(p, what):
+ p.path =
+ OutputFile.__init__(p,what, testbed.scratch