diff options
| author | Ganesh Viswanathan <dev@genotrance.com> | 2019-10-18 10:51:00 -0500 |
|---|---|---|
| committer | Ganesh Viswanathan <dev@genotrance.com> | 2019-10-18 10:51:00 -0500 |
| commit | 3c7172983975a41d21e6aea7c4a0d6a7734926aa (patch) | |
| tree | 96447345ce56d7b30769d76afab480f8b073e1c0 | |
| parent | 438160ac2a916ca0e8e18161d0a757e6bb338426 (diff) | |
| download | nimterop-3c7172983975a41d21e6aea7c4a0d6a7734926aa.tar.gz nimterop-3c7172983975a41d21e6aea7c4a0d6a7734926aa.zip | |
onSymbol for overrides
| -rw-r--r-- | nimterop/getters.nim | 11 | ||||
| -rw-r--r-- | nimterop/grammar.nim | 16 | ||||
| -rw-r--r-- | nimterop/plugin.nim | 3 |
3 files changed, 27 insertions, 3 deletions
diff --git a/nimterop/getters.nim b/nimterop/getters.nim index 7205213..a3220ec 100644 --- a/nimterop/getters.nim +++ b/nimterop/getters.nim @@ -127,6 +127,17 @@ proc getIdentifier*(nimState: NimState, name: string, kind: NimSymKind, parent=" else: result = "" +proc getOverride*(nimState: NimState, name: string, kind: NimSymKind, parent=""): string = + doAssert name.len != 0, "Blank identifier error" + + if nimState.gState.onSymbol != nil: + var + nname = nimState.getIdentifier(name, kind, parent) + sym = Symbol(name: nname, parent: parent, kind: kind) + nimState.gState.onSymbol(sym) + + result = sym.override + proc getUniqueIdentifier*(nimState: NimState, prefix = ""): string = var name = prefix & "_" & nimState.sourceFile.extractFilename().multiReplace([(".", ""), ("-", "")]) diff --git a/nimterop/grammar.nim b/nimterop/grammar.nim index 89b3223..65b4935 100644 --- a/nimterop/grammar.nim +++ b/nimterop/grammar.nim @@ -648,10 +648,22 @@ proc initGrammar(): Grammar = case $node.tsNodeType() of "declaration": if i.name == "identifier": - echo "# Unknown declaration " & i.val + let + override = nimState.getOverride(i.val, nskProc) + + if override.len != 0: + nimState.procStr &= &"{nimState.getComments(true)}\n{override}" + else: + nimState.procStr &= &"{nimState.getComments(true)}\n# Unable to wrap declaration '{i.val}'" else: if i.name == "type_identifier": - echo "# Unknown type " & i.val + let + override = nimState.getOverride(i.val, nskType) + + if override.len != 0: + nimState.typeStr &= &"{nimState.getComments()}\n{override}" + else: + nimState.typeStr &= &"{nimState.getComments()}\n # Unable to wrap type '{i.val}'" )) proc initRegex(ast: ref Ast) = diff --git a/nimterop/plugin.nim b/nimterop/plugin.nim index 646c83c..333723f 100644 --- a/nimterop/plugin.nim +++ b/nimterop/plugin.nim @@ -5,5 +5,6 @@ type name*: string parent*: string kind*: NimSymKind + override*: string - OnSymbol* = proc(sym: var Symbol) {.cdecl.}
\ No newline at end of file + OnSymbol* = proc(sym: var Symbol) {.cdecl.} |
