Modify removeStatic to comment out body, then re-comment
This commit is contained in:
parent
410977bb71
commit
b61d37040f
1 changed files with 35 additions and 14 deletions
49
nimgen.nim
49
nimgen.nim
|
|
@ -22,7 +22,7 @@ var
|
||||||
type
|
type
|
||||||
c2nimConfigObj = object
|
c2nimConfigObj = object
|
||||||
flags, ppflags: string
|
flags, ppflags: string
|
||||||
recurse, inline, preprocess, ctags, defines, removeStatic: bool
|
recurse, inline, preprocess, ctags, defines: bool
|
||||||
dynlib, compile, pragma: seq[string]
|
dynlib, compile, pragma: seq[string]
|
||||||
|
|
||||||
const DOC = """
|
const DOC = """
|
||||||
|
|
@ -125,7 +125,7 @@ proc gitReset() =
|
||||||
|
|
||||||
discard execProc("git reset --hard HEAD")
|
discard execProc("git reset --hard HEAD")
|
||||||
|
|
||||||
proc gitCheckout(filename: string) =
|
proc gitCheckout(filename: string) {.used.} =
|
||||||
echo "Resetting file: $#" % [filename]
|
echo "Resetting file: $#" % [filename]
|
||||||
|
|
||||||
setCurrentDir(gOutput)
|
setCurrentDir(gOutput)
|
||||||
|
|
@ -333,10 +333,33 @@ proc comment(file: string, pattern: string, numlines: string) =
|
||||||
break
|
break
|
||||||
|
|
||||||
proc removeStatic(filename: string) =
|
proc removeStatic(filename: string) =
|
||||||
## Replace static function bodies with a semicolon
|
## Replace static function bodies with a semicolon and commented
|
||||||
|
## out body
|
||||||
withFile(filename):
|
withFile(filename):
|
||||||
content = content.replace(
|
content = content.replace(
|
||||||
re"(?m)(static inline.*?\))(\s*\{(\s*?.*?$)*[\n\r]\})", "$1;"
|
re"(?m)(static inline.*?\))(\s*\{(\s*?.*?$)*[\n\r]\})",
|
||||||
|
proc (match: RegexMatch): string =
|
||||||
|
let funcDecl = match.captures[0]
|
||||||
|
let body = match.captures[1].strip()
|
||||||
|
result = ""
|
||||||
|
|
||||||
|
result.add("$#;" % [funcDecl])
|
||||||
|
result.add(body.replace(re"(?m)^", "//"))
|
||||||
|
)
|
||||||
|
|
||||||
|
proc reAddStatic(filename: string) =
|
||||||
|
## Uncomment out the body and remove the semicolon. Undoes
|
||||||
|
## removeStatic
|
||||||
|
withFile(filename):
|
||||||
|
content = content.replace(
|
||||||
|
re"(?m)(static inline.*?\));(\/\/\s*\{(\s*?.*?$)*[\n\r]\/\/\})",
|
||||||
|
proc (match: RegexMatch): string =
|
||||||
|
let funcDecl = match.captures[0]
|
||||||
|
let body = match.captures[1].strip()
|
||||||
|
result = ""
|
||||||
|
|
||||||
|
result.add("$# " % [funcDecl])
|
||||||
|
result.add(body.replace(re"(?m)^\/\/", ""))
|
||||||
)
|
)
|
||||||
|
|
||||||
proc rename(file: string, renfile: string) =
|
proc rename(file: string, renfile: string) =
|
||||||
|
|
@ -541,9 +564,6 @@ proc c2nim(fl, outfile: string, c2nimConfig: c2nimConfigObj) =
|
||||||
if c2nimConfig.defines and (c2nimConfig.preprocess or c2nimConfig.ctags):
|
if c2nimConfig.defines and (c2nimConfig.preprocess or c2nimConfig.ctags):
|
||||||
prepend(cfile, getDefines(file, c2nimConfig.inline))
|
prepend(cfile, getDefines(file, c2nimConfig.inline))
|
||||||
|
|
||||||
if c2nimConfig.removeStatic:
|
|
||||||
removeStatic(cfile)
|
|
||||||
|
|
||||||
var
|
var
|
||||||
extflags = ""
|
extflags = ""
|
||||||
passC = ""
|
passC = ""
|
||||||
|
|
@ -656,9 +676,6 @@ proc doActions(file: string, c2nimConfig: var c2nimConfigObj, cfg: OrderedTableR
|
||||||
if action == "create":
|
if action == "create":
|
||||||
createDir(file.splitPath().head)
|
createDir(file.splitPath().head)
|
||||||
writeFile(file, cfg[act])
|
writeFile(file, cfg[act])
|
||||||
elif action == "removestatic":
|
|
||||||
removeStatic(sfile)
|
|
||||||
c2nimConfig.removeStatic = true
|
|
||||||
elif action in @["prepend", "append", "replace", "comment",
|
elif action in @["prepend", "append", "replace", "comment",
|
||||||
"rename", "compile", "dynlib", "pragma",
|
"rename", "compile", "dynlib", "pragma",
|
||||||
"pipe"] and sfile != "":
|
"pipe"] and sfile != "":
|
||||||
|
|
@ -731,7 +748,6 @@ proc runFile(file: string, cfgin: OrderedTableRef) =
|
||||||
c2nimConfig = c2nimConfigObj(
|
c2nimConfig = c2nimConfigObj(
|
||||||
flags: "--stdcall", ppflags: "",
|
flags: "--stdcall", ppflags: "",
|
||||||
recurse: false, inline: false, preprocess: false, ctags: false, defines: false,
|
recurse: false, inline: false, preprocess: false, ctags: false, defines: false,
|
||||||
remove_static: false,
|
|
||||||
dynlib: @[], compile: @[], pragma: @[]
|
dynlib: @[], compile: @[], pragma: @[]
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -762,15 +778,20 @@ proc runFile(file: string, cfgin: OrderedTableRef) =
|
||||||
c2nimConfig.ppflags = cfg[act]
|
c2nimConfig.ppflags = cfg[act]
|
||||||
|
|
||||||
if c2nimConfig.recurse and c2nimConfig.inline:
|
if c2nimConfig.recurse and c2nimConfig.inline:
|
||||||
raise newException(Exception, "Cannot use recurse and inline simultaneously")
|
echo "Cannot use recurse and inline simultaneously"
|
||||||
|
quit(1)
|
||||||
|
|
||||||
|
# Remove static inline function bodies
|
||||||
|
removeStatic(sfile)
|
||||||
|
|
||||||
if not noprocess:
|
if not noprocess:
|
||||||
let nimFile = getNimout(sfile)
|
let nimFile = getNimout(sfile)
|
||||||
c2nim(file, nimFile, c2nimConfig)
|
c2nim(file, nimFile, c2nimConfig)
|
||||||
|
|
||||||
processAfter(nimFile, c2nimConfig)
|
processAfter(nimFile, c2nimConfig)
|
||||||
|
|
||||||
if c2nimConfig.removeStatic:
|
# Add them back for compilation
|
||||||
gitCheckout(sfile)
|
reAddStatic(sfile)
|
||||||
|
|
||||||
proc runCfg(cfg: string) =
|
proc runCfg(cfg: string) =
|
||||||
if not fileExists(cfg):
|
if not fileExists(cfg):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue