CaaS in-memory caching

removed some redundant filepath params and variables and
switched to canonical paths in most places
This commit is contained in:
Zahary Karadjov 2012-11-16 01:48:12 +02:00
commit 36e25a6849
23 changed files with 299 additions and 215 deletions

View file

@ -30,8 +30,8 @@ type
parser*: TParser
proc ParseFile*(filename: string): PNode{.procvar.}
proc openParsers*(p: var TParsers, filename: string, inputstream: PLLStream)
proc parseFile*(fileIdx: int32): PNode{.procvar.}
proc openParsers*(p: var TParsers, fileIdx: int32, inputstream: PLLStream)
proc closeParsers*(p: var TParsers)
proc parseAll*(p: var TParsers): PNode
proc parseTopLevelStmt*(p: var TParsers): PNode
@ -40,14 +40,15 @@ proc parseTopLevelStmt*(p: var TParsers): PNode
# implementation
proc ParseFile(filename: string): PNode =
proc ParseFile(fileIdx: int32): PNode =
var
p: TParsers
f: tfile
if not open(f, filename):
let filename = fileIdx.toFilename
if not open(f, filename):
rawMessage(errCannotOpenFile, filename)
return
OpenParsers(p, filename, LLStreamOpen(f))
OpenParsers(p, fileIdx, LLStreamOpen(f))
result = ParseAll(p)
CloseParsers(p)
@ -160,15 +161,16 @@ proc evalPipe(p: var TParsers, n: PNode, filename: string,
else:
result = applyFilter(p, n, filename, result)
proc openParsers(p: var TParsers, filename: string, inputstream: PLLStream) =
proc openParsers(p: var TParsers, fileIdx: int32, inputstream: PLLStream) =
var s: PLLStream
p.skin = skinStandard
let filename = fileIdx.toFilename
var pipe = parsePipe(filename, inputStream)
if pipe != nil: s = evalPipe(p, pipe, filename, inputStream)
else: s = inputStream
case p.skin
of skinStandard, skinBraces, skinEndX:
parser.openParser(p.parser, filename, s)
of skinStandard, skinBraces, skinEndX:
parser.openParser(p.parser, fileIdx, s)
proc closeParsers(p: var TParsers) =
parser.closeParser(p.parser)