Skip to content

Commit ab13b35

Browse files
committed
Add BoolValue context type.
1 parent b5025fa commit ab13b35

File tree

1 file changed

+36
-7
lines changed

1 file changed

+36
-7
lines changed

mustang/Context.ooc

Lines changed: 36 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import structs/[HashMap, List]
22

33

44
Value: abstract class {
5-
typeName: abstract func -> String
5+
type: abstract func -> String
66
toString: abstract func -> String
77
}
88

@@ -11,29 +11,58 @@ StringValue: class extends Value {
1111

1212
init: func(=value) {}
1313

14-
typeName: func -> String { "String" }
15-
14+
type: func -> String { "String" }
1615
toString: func -> String { value }
1716
}
1817

18+
BoolValue: class extends Value {
19+
value: Bool
20+
21+
init: func(=value) {}
22+
23+
type: func -> String { "Bool" }
24+
toString: func -> String { value toString() }
25+
}
26+
1927
ListValue: class <T> extends Value {
2028
list: List<T>
2129

2230
init: func(=list) {}
2331

24-
typeName: func -> String { "List" }
32+
type: func -> String { "List" }
2533
toString: func -> String { "List size=%d" format(list size()) }
2634

2735
list: func -> List<T> { list }
2836
}
2937

30-
Context: class {
38+
Context: abstract class {
39+
add: abstract func(name: String, value: Value)
40+
get: abstract func(name: String, value: Value)
41+
42+
addString: func(name: String, value: String) {
43+
add(name, StringValue new(value))
44+
}
45+
46+
addBool: func(name: String, value: Bool) {
47+
add(name, BoolValue new(value))
48+
}
49+
50+
addList: func <T> (name: String, value: List<T>) {
51+
add(name, ListValue<T> new(value))
52+
}
53+
}
54+
55+
HashContext: class extends Context {
3156
data: HashMap<Value>
3257

3358
init: func ~withHashMap(=data) {}
3459
init: func { data = HashMap<Value> new() }
3560

36-
resolve: func(name: String) -> Value {
37-
data[name]
61+
add: func(name: String, value: Value) {
62+
data add(name, value)
63+
}
64+
65+
get: func(name: String) -> Value {
66+
data get(name)
3867
}
3968
}

0 commit comments

Comments
 (0)