File: tcycle1.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 (54 lines) | stat: -rw-r--r-- 990 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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
discard """
  output: "MEM 0"
  cmd: "nim c --gc:orc $file"
"""

type
  Node = ref object of RootObj
    le, ri: Node
    name: char

proc edge(a, b: Node) =
  if a.le == nil: a.le = b
  else: a.ri = b

proc createNode(name: char): Node =
  new result
  result.name = name

#[

+---------+      +------+
|         |      |      |
|  A      +----->+      <------+-------------+
+--+------+      |      |      |             |
   |             |      |      |     C       |
   |             |  R   |      |             |
+--v------+      |      |      +-------------+
|         |      |      |        ^
|   B     <------+      |        |
|         |      |      +--------+
+---------+      |      |
                 +------+

]#

proc main =
  let a = createNode('A')
  let b = createNode('B')
  let r = createNode('R')
  let c = createNode('C')

  a.edge b
  a.edge r

  r.edge b
  r.edge c

  c.edge r


let mem = getOccupiedMem()
main()
GC_fullCollect()
echo "MEM ", getOccupiedMem() - mem