v2 / vlib / v / tests / options / option_unwrap_selector_write_test.v
46 lines · 42 sloc · 791 bytes · b98ca31e263a4319839543088accd45915290866
Raw
1module main
2
3@[heap]
4interface IGameObject {
5mut:
6 name string
7 parent ?&IGameObject
8 next ?&IGameObject
9 child ?&IGameObject
10 last_child ?&IGameObject
11 add_child(mut o IGameObject)
12}
13
14@[heap]
15struct GameObject implements IGameObject {
16mut:
17 name string
18 parent ?&IGameObject
19 next ?&IGameObject
20 child ?&IGameObject
21 last_child ?&IGameObject
22}
23
24fn (mut gameobject GameObject) add_child(mut o IGameObject) {
25 o.parent = gameobject
26 if gameobject.last_child != none {
27 gameobject.last_child.next = o
28 } else {
29 gameobject.child = o
30 }
31 gameobject.last_child = o
32}
33
34fn test_main() {
35 mut v1 := &GameObject{
36 name: 'v1'
37 }
38 mut v2 := &GameObject{
39 name: 'v2'
40 }
41 mut v3 := &GameObject{
42 name: 'v3'
43 }
44 v1.add_child(mut v2)
45 v1.add_child(mut v3)
46}
47