Commit 01dbfa89235fd57298c801d94599da6d0c7de936
1 parent
032258fd
Test code with comments and cleanups
Showing
7 changed files
with
56 additions
and
18 deletions
src/.gitignore
0 → 100644
1 | +nimcache | ... | ... |
tests/.gitignore
0 → 100644
tests/Test.nim
0 → 100644
tests/Test.nim.cfg
0 → 100644
tests/Test1.nim
0 → 100644
1 | +# This import adds macros to generate FFI Smalltalk code | |
2 | +import squeaknim | |
3 | + | |
4 | +# Just compile with "nim c Test1.nim", copy resulting lib and Test1.st | |
5 | +# to a Squeak directory, file in Test1.st and then it should be fine | |
6 | +# to call foo, see class side of Test1 | |
7 | + | |
8 | +type | |
9 | + MyFloat = float32 | |
10 | + Vector3* = object | |
11 | + x*, y*, z*: MyFloat | |
12 | + | |
13 | +# This sets the name of the FFI module (and class) and a Smalltalk prefix | |
14 | +# to avoid collisions for generated classes, like Vector3 which turns into | |
15 | +# URVector3 in Smalltalk | |
16 | +setModulename "Test1", "UR" | |
17 | + | |
18 | +# Generate the Smalltalk class URVector3 representing Vector3 | |
19 | +wrapObject(Vector3) | |
20 | + | |
21 | +# Generate declarations for Smalltalk code | |
22 | +writeExternalLibrary() | |
23 | + | |
24 | +# Here follows Nim procedures that will be callable via FFI | |
25 | +# Note that exportSt pragma to export. | |
26 | + | |
27 | +proc foo*(a, b: Vector3, c: int): cstring {.exportSt: "bar".} = | |
28 | + # Just a silly test proc | |
29 | + result = "x plus y plus c " & $(a.x + b.y + c.float) | |
30 | + | |
31 | +# Write the Smalltalk code to file | |
32 | +writeSmallTalkCode("Test1.st") | ... | ... |
tests/Test1.nim.cfg
0 → 100644
tests/test1.nim deleted
1 | - | |
2 | -import squeaknim | |
3 | - | |
4 | -type | |
5 | - MyFloat = float32 | |
6 | - Vector3 = object | |
7 | - x, y, z: MyFloat | |
8 | - | |
9 | -setModulename "urhonimo", "UR" | |
10 | - | |
11 | -wrapObject(Vector3) | |
12 | - | |
13 | -writeExternalLibrary() | |
14 | - | |
15 | -proc foo(a, b: Vector3): cstring {.exportSt: "bar".} = | |
16 | - result = "some string here" | |
17 | - | |
18 | -writeSmallTalkCode("test1.st") |