File: tprocvar.nim

package info (click to toggle)
nim 2.2.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 1,911,644 kB
  • sloc: sh: 24,603; ansic: 1,761; python: 1,492; makefile: 1,013; sql: 298; asm: 141; xml: 13
file content (39 lines) | stat: -rw-r--r-- 822 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
discard """
  output: '''
papbpcpdpe7
'''
"""

block genericprocvar:
  proc foo[T](thing: T) =
    discard thing
  var a: proc (thing: int) {.nimcall.} = foo[int]


block tprocvar2:
  proc pa() {.cdecl.} = write(stdout, "pa")
  proc pb() {.cdecl.} = write(stdout, "pb")
  proc pc() {.cdecl.} = write(stdout, "pc")
  proc pd() {.cdecl.} = write(stdout, "pd")
  proc pe() {.cdecl.} = write(stdout, "pe")

  const algos = [pa, pb, pc, pd, pe]
  var x: proc (a, b: int): int {.cdecl.}

  proc ha(c, d: int): int {.cdecl.} =
    echo(c + d)
    result = c + d

  for a in items(algos):
    a()

  x = ha
  discard x(3, 4)


block tprocvars:
  proc doSomething(v: int, x: proc(v:int):int): int = return x(v)
  proc doSomething(v: int, x: proc(v:int)) = x(v)

  doAssert doSomething(10, proc(v: int): int = return v div 2) == 5