aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGanesh Viswanathan <dev@genotrance.com>2019-01-10 11:25:29 -0600
committerGanesh Viswanathan <dev@genotrance.com>2019-01-10 11:25:29 -0600
commitac7231a882b5cd0d30110bae74480314d4ded939 (patch)
tree070fe9d8c4e87116df1147ed0351f7ac5edca8c8
parent51ae21f8d5240a670e1bc8e94d92dfd833ea864b (diff)
downloadnimterop-ac7231a882b5cd0d30110bae74480314d4ded939.tar.gz
nimterop-ac7231a882b5cd0d30110bae74480314d4ded939.zip
Fix cuclonglong issue #32
-rw-r--r--nimterop/getters.nim35
1 files changed, 22 insertions, 13 deletions
diff --git a/nimterop/getters.nim b/nimterop/getters.nim
index db15991..b4eb13b 100644
--- a/nimterop/getters.nim
+++ b/nimterop/getters.nim
@@ -1,4 +1,4 @@
-import macros, os, strformat, strutils
+import macros, os, strformat, strutils, tables
import regex
@@ -28,6 +28,25 @@ when while
xor
yield""".split(Whitespace)
+const gTypeMap = {
+ "long": "clong",
+ "unsigned long": "culong",
+ "char": "cchar",
+ "signed char": "cschar",
+ "short": "cshort",
+ "int": "cint",
+ "size_t": "uint",
+ "ssize_t": "int",
+ "long long": "clonglong",
+ "float": "cfloat",
+ "double": "cdouble",
+ "long double": "clongdouble",
+ "unsigned char": "cuchar",
+ "unsigned short": "cushort",
+ "unsigned int": "cuint",
+ "unsigned long long": "culonglong"
+}.toTable()
+
proc sanitizePath*(path: string): string =
path.multiReplace([("\\\\", $DirSep), ("\\", $DirSep), ("//", $DirSep)])
@@ -52,21 +71,11 @@ proc getType*(str: string): string =
return "object"
result = str.strip(chars={'_'}).
- multiReplace([
- ("unsigned ", "cu"),
- ("double ", "cdouble"),
- ("long ", "clong"),
- ("ssize_t", "int"),
- ("size_t", "uint")
- ]).
replace(re"([u]?int[\d]+)_t", "$1").
replace(re"([u]?int)ptr_t", "ptr $1")
- case result:
- of "long":
- result = "clong"
- of "double":
- result = "cdouble"
+ if gTypeMap.hasKey(result):
+ result = gTypeMap[result]
proc getLit*(str: string): string =
if str.contains(re"^[\-]?[\d]+$") or