Skip to content

Commit 0a068e8

Browse files
committed
Fixes for newer nim
1 parent 1e2184a commit 0a068e8

File tree

5 files changed

+31
-47
lines changed

5 files changed

+31
-47
lines changed

nimsl.nimble

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
# Package
2-
version = "0.3.2"
2+
version = "0.3.3"
33
author = "Yuriy Glukhov"
44
description = "Shaders in Nim"
55
license = "MIT"
66

7-
# Dependencies
8-
requires "variant"
9-
107
# Tests
118
const allTests = ["test", "nimsl/private/var_decls"]
129

nimsl/emulation.nim

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ proc getValueByNameInTableConstr(tableConstr: NimNode, name: string): NimNode =
2121
if $c[0] == name:
2222
return c[1]
2323

24-
macro cpuTest*(vertexShader, fragmentShader: typed, attributesAndUniforms: untyped, screenBuffer: var openarray[uint8], screenWidth: int): untyped =
24+
macro cpuTest*(vertexShader, fragmentShader: typed{nkSym}, attributesAndUniforms: untyped, screenBuffer: var openarray[uint8], screenWidth: int): untyped =
2525
var vsCalls = [newCall(vertexShader), newCall(vertexShader), newCall(vertexShader)]
2626
var fsCall = newCall(fragmentShader)
2727
var varyingDefs = newStmtList()
@@ -34,7 +34,7 @@ macro cpuTest*(vertexShader, fragmentShader: typed, attributesAndUniforms: untyp
3434

3535
var globalVarSyms = newSeq[NimNode]()
3636

37-
for param in getImpl(vertexShader.symbol).paramsAndTypes:
37+
for param in getImpl(vertexShader).paramsAndTypes:
3838
let paramName = $(param.name)
3939
if paramName.startsWith("v"):
4040
let varSym = genSym(nskLet, paramName)
@@ -61,7 +61,7 @@ macro cpuTest*(vertexShader, fragmentShader: typed, attributesAndUniforms: untyp
6161
for i in 0 .. 2:
6262
vsCalls[i].add(getValueByNameInTableConstr(attributesAndUniforms, paramName))
6363

64-
for param in getImpl(fragmentShader.symbol).paramsAndTypes:
64+
for param in getImpl(fragmentShader).paramsAndTypes:
6565
let paramName = $(param.name)
6666
if paramName.startsWith("v"):
6767
for vs in globalVarSyms:

nimsl/nimsl.nim

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
import macros, math, strutils
1+
import macros, math
22
import private/glsl_codegen
33

44
proc getShaderCode(s: NimNode, k: ShaderKind, mainProcName: string): string =
55
var ctx = newCtx()
66
ctx.mainProcName = mainProcName
77
ctx.shaderKind = k
8-
genProcDef(ctx, getImpl(s.symbol), true)
8+
genProcDef(ctx, getImpl(s), true)
99
result = ""
1010
for i in ctx.globalDefs:
1111
result &= i
1212

13-
macro getGLSLFragmentShader*(s: typed, mainProcName: string = "main"): string =
13+
macro getGLSLFragmentShader*(s: typed{nkSym}, mainProcName: string = "main"): string =
1414
result = newLit(getShaderCode(s, skFragmentShader, mainProcName.strVal))
1515

16-
macro getGLSLVertexShader*(s: typed): string =
16+
macro getGLSLVertexShader*(s: typed{nkSym}): string =
1717
result = newLit(getShaderCode(s, skVertexShader, "main"))
1818

1919
type

nimsl/private/glsl_codegen.nim

+6-6
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ proc hasMagicMarker(n: NimNode, marker: string): bool =
4848
let fs = b[0]
4949
result = fs.isMagicCallNode()
5050
of nnkSym:
51-
result = hasMagicMarker(getImpl(n.symbol), marker)
51+
result = hasMagicMarker(getImpl(n), marker)
5252
of nnkStmtListExpr:
5353
let fs = n[0]
5454
result = fs.isMagicCallNode()
@@ -119,8 +119,8 @@ proc genStmtList(ctx: var GLSLCompilerContext, n: NimNode, r: var string) =
119119
genSemicolon(r)
120120

121121
proc isSystemSym(s: NimNode): bool =
122-
let ln = s.symbol.getImpl().lineinfo
123-
if ln.find("/system.nim(") != -1 or ln.find("\\system.nim(") != -1:
122+
let ln = s.getImpl().lineinfo
123+
if ln.find("/system.nim(") != -1 or ln.find("\\system.nim(") != -1 or ln.find("\\system\\") != -1 or ln.find("/system/") != -1:
124124
result = true
125125

126126
proc genSystemCall(ctx: var GLSLCompilerContext, n: NimNode, r: var string) =
@@ -233,15 +233,15 @@ proc genGLSLBuiltinSym(n: NimNode): string =
233233
else: result = pn
234234

235235
proc genSym(ctx: var GLSLCompilerContext, n: NimNode, r: var string) =
236-
let i = getImpl(n.symbol)
236+
let i = getImpl(n)
237237
case i.kind
238238
of nnkProcDef:
239239
if isGLSLBuiltin(i):
240240
r &= genGLSLBuiltinSym(n)
241241
else:
242242
#echo "SYMBOL: ", treeRepr(i)
243-
if not ($(n.symbol) in ctx.definedSyms):
244-
ctx.definedSyms.add($(n.symbol))
243+
if $n notin ctx.definedSyms:
244+
ctx.definedSyms.add($n)
245245
gen(ctx, i, r)
246246
r &= $n
247247
else:

nimsl/private/var_decls.nim

+17-30
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,29 @@
1-
import macros, tables, variant
1+
import macros, tables
22

3-
var varTab: TableRef[TypeID, RootRef]
3+
type
4+
VarValue[T] = ref object of RootRef
5+
v: T
46

5-
proc varNotFound(name: string) =
6-
discard
7-
#raise newException(Exception, "Var " & name & " not set")
7+
var varTab: TableRef[string, RootRef]
88

99
proc getVarAddr[T](name: string): ptr T =
1010
if varTab.isNil:
11-
varNotFound(name)
12-
varTab = newTable[TypeID, RootRef]()
13-
const tid = getTypeId(T)
14-
var t = varTab.getOrDefault(tid)
15-
var tt : TableRef[string, T]
16-
if t.isNil:
17-
varNotFound(name)
18-
tt = newTable[string, T]()
19-
varTab[tid] = cast[RootRef](tt)
20-
else:
21-
tt = cast[TableRef[string, T]](t)
22-
if name notin tt:
23-
varNotFound(name)
24-
var v: T
25-
tt[name] = v
26-
result = addr tt[name]
11+
varTab = newTable[string, RootRef]()
12+
var vv = VarValue[T](varTab.getOrDefault(name))
13+
if vv.isNil:
14+
vv = VarValue[T]()
15+
varTab[name] = vv
16+
addr vv.v
2717

2818
proc setVar[T](name: string, v: T) =
2919
if varTab.isNil:
30-
varTab = newTable[TypeID, RootRef]()
31-
const tid = getTypeId(T)
32-
var t = varTab.getOrDefault(tid)
33-
var tt : TableRef[string, T]
34-
if t.isNil:
35-
tt = newTable[string, T]()
36-
varTab[tid] = cast[RootRef](tt)
20+
varTab = newTable[string, RootRef]()
21+
var vv = VarValue[T](varTab.getOrDefault(name))
22+
if vv.isNil:
23+
vv = VarValue[T](v: v)
24+
varTab[name] = vv
3725
else:
38-
tt = cast[TableRef[string, T]](t)
39-
tt[name] = v
26+
vv.v = v
4027

4128
proc nimslUniformAddr[T](name: string): ptr T {.inline.} = getVarAddr[T](name)
4229
proc nimslVaryingAddr[T](name: string): ptr T {.inline.} = getVarAddr[T](name)

0 commit comments

Comments
 (0)