aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGanesh Viswanathan <dev@genotrance.com>2019-01-24 22:59:51 -0600
committerGanesh Viswanathan <dev@genotrance.com>2019-01-24 22:59:51 -0600
commitf4d8ee1c5cf8b7422b8cb66811fa0d9518cee787 (patch)
treee77c644f169cecddc161d0c8cedb74f26ad57001
parentfb997526de2aec135199d4d088f89bfc0c6b827d (diff)
downloadnimterop-f4d8ee1c5cf8b7422b8cb66811fa0d9518cee787.tar.gz
nimterop-f4d8ee1c5cf8b7422b8cb66811fa0d9518cee787.zip
Documentation, fix tmath on Windows
-rw-r--r--nimterop/cimport.nim12
-rw-r--r--tests/tmath.nim7
2 files changed, 19 insertions, 0 deletions
diff --git a/nimterop/cimport.nim b/nimterop/cimport.nim
index 8fcf66e..330654f 100644
--- a/nimterop/cimport.nim
+++ b/nimterop/cimport.nim
@@ -174,6 +174,18 @@ macro cSkipSymbol*(skips: varargs[string]): untyped =
gStateCT.symOverride.add skip.strVal
macro cPlugin*(body): untyped =
+ ## When `cOverride() <cimport.html#cOverride.m,>`_ and `cSkipSymbol() <cimport.html#cSkipSymbol.m%2Cvarargs[string]>`_
+ ## are not adequate, the `cPlugin() <cimport.html#cPlugin.m,>`_ macro can be used to customize the generated Nim output.
+ ## The following callbacks are available at this time.
+ ##
+ ## .. code-block:: nim
+ ##
+ ## cPlugin:
+ ## import strutils
+ ##
+ ## proc onSymbol*(sym: string): string {.exportc, dynlib.} =
+ ## return sym.strip(chars={'_'})
+
let
data = body.repr
path = getTempDir() / "nimterop" & ($data.hash() & ".nim")
diff --git a/tests/tmath.nim b/tests/tmath.nim
index f32a1f5..5e98968 100644
--- a/tests/tmath.nim
+++ b/tests/tmath.nim
@@ -10,6 +10,13 @@ cDebug()
cDisableCaching()
cAddStdDir()
+
+cPlugin:
+ import strutils
+
+ proc onSymbol*(sym: string): string {.exportc, dynlib.} =
+ return sym.strip(chars={'_'})
+
cImport cSearchPath("math.h")
check sin(5) == -0.9589242746631385