annotate dict.rhope @ 90:c25d75c2440b

Implemented Next@Dictionary and Print@Dictionary
author Mike Pavone <pavone@retrodev.com>
date Sat, 31 Jul 2010 15:08:15 -0400
parents 3c4325e6298f
children e73a93fb5de1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 Blueprint Empty Dictionary
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6 Blueprint Dictionary
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 Left
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 Right
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 Straight
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11 Bits(UInt32,Naked)
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 Dictionary[:out]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 out <- Build[Empty Dictionary()]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 _Index@Empty Dictionary[dict,index,bits,bitindex:out,not found]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 not found <- dict
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24 Index@Empty Dictionary[dict,index:out,not found]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26 not found <- dict
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
27 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29 _Terminal Node[val:out]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
30 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
31 out <- [[[[Build[Dictionary()]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
32 ]Left <<[Dictionary[]]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
33 ]Right <<[Dictionary[]]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
34 ]Straight <<[val]
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
35 ]Bits <<[0u32]
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
38 _Set New[index,val,bits,bitindex:out]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
39 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
40 nbitindex <- [bitindex]+[1]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
41 [index]Dict Bits[nbitindex]
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
42 { straight <- _Set New[index,val,[~]+[1u32],nbitindex] }
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
43 { straight <- _Terminal Node[val] }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
44 out <- [[[[Build[Dictionary()]]Left <<[Dictionary[]]]Right <<[Dictionary[]]]Straight <<[straight]]Bits <<[bits]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
45 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
46
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
47 _Set@Empty Dictionary[dict,index,val,bits,bitindex:out]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
48 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
49 out <- _Set New[index,val,bits,bitindex]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
50 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
51
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
52 Set@Empty Dictionary[dict,index,val:out]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
53 {
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
54 out <- _Set New[index,val, [Dict Type ID[index]]+[1u32], -1]
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
55 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
56
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
57 First@Empty Dictionary[dict:first,not found]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
58 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
59 not found <- dict
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
60 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
61
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
62 Next@Empty Dictionary[dict,index:next,not found]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
63 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
64 not found <- dict
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
65 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
66
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
67
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
68 Index@Dictionary[dict,index:out,not found]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
69 {
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
70 out,not found <- [dict]_Index[index,[Dict Type ID[index]]+[1u32], -1]
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
71 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
72
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
73 _Index@Dictionary[dict,index,bits,bitindex:out,not found]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
74 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
75 If[[bits]=[[dict]Bits >>]]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
76 {
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
77 If[[bits]=[0u32]]
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
78 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
79 out <- Straight >>[dict]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
80 }{
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
81 nbitindex <- [bitindex]+[1]
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
82 [index]Dict Bits[nbitindex]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
83 { nbits <- [~]+[1u32] }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
84 { nbits <- 0u32 }
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
85 out,not found <- [[dict]Straight >>]_Index[index,nbits,nbitindex]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
86 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
87 }{
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
88 If[[bits]<[[dict]Bits >>]]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
89 {
87
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
90 go <- Left >>[dict]
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
91 }{
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
92 go <- Right >>[dict]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
93 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
94 out,not found <- [go]_Index[index,bits,bitindex]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
95 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
96 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
97
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
98 Set@Dictionary[dict,index,val:out]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
99 {
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
100 out <- [dict]_Set[index,val,[Dict Type ID[index]]+[1u32], -1]
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
101 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
102
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
103 _Set@Dictionary[dict,index,val,bits,bitindex:out]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
104 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
105 If[[bits]=[[dict]Bits >>]]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
106 {
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
107 If[[bits]=[0u32]]
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
108 {
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
109 out <- [dict]Straight <<[val]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
110 }{
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
111 nbitindex <- [bitindex]+[1]
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
112 [index]Dict Bits[nbitindex]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
113 { nbits <- [~]+[1u32] }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
114 { nbits <- 0u32 }
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
115 out <- [dict]Straight <<[[[dict]Straight >>]_Set[index,val,nbits,nbitindex]]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
116 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
117 }{
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
118 If[[bits]<[[dict]Bits >>]]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
119 {
87
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
120 go <- Left >>[dict]
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
121 out <- [dict]Left <<[new]
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
122 }{
83
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
123 go <- Right >>[dict]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
124 out <- [dict]Right <<[new]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
125 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
126 new <- [go]_Set[index,val,bits,bitindex]
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
127 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
128 }
27bb051d631c Initial implementation of Dictionary
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
129
87
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
130 _First Type ID@Empty Dictionary[dict:typeid,node,none]
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
131 {
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
132 none <- dict
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
133 }
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
134
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
135 _First Type ID@Dictionary[dict:typeid,node]
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
136 {
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
137 typeid,node <- [[dict]Left >>]_First Type ID {} {}
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
138 {
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
139 typeid <- [[dict]Bits >>]-[1u32]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
140 node <- Straight >>[dict]
87
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
141 }
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
142 }
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
143
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
144 _First@Empty Dictionary[dict,keylist:keyout,none]
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
145 {
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
146 none <- dict
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
147 }
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
148
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
149 _First@Dictionary[dict,keylist:keyout]
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
150 {
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
151 keyout <- [[dict]Left >>]_First[keylist] {}
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
152 {
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
153 If[[[dict]Bits >>] = [0u32]]
87
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
154 {
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
155 keyout <- keylist
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
156 }{
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
157 keyout <- [[dict]Straight >>]_First[[keylist]Append[[[dict]Bits >>]-[1u32]]]
87
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
158 }
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
159 }
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
160 }
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
161
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
162 First@Dictionary[dict:out,none]
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
163 {
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
164 typeid, node <- [dict]_First Type ID
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
165 rawkey <- [node]_First[List[]]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
166 out <- [Build[Blueprint From ID[typeid]]]From Dict Key[rawkey]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
167 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
168
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
169 Next@Dictionary[dict,cur:out,none]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
170 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
171 [cur]Dict Type ID
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
172 { rawkey,typeid,none <- [dict]_Next Type ID[[~]+[1u32], cur] }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
173
87
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
174 out <- [Build[Blueprint From ID[typeid]]]From Dict Key[rawkey]
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
175 }
3c4325e6298f Add First@Dictionary (need to find mem man bug)
Mike Pavone <pavone@retrodev.com>
parents: 83
diff changeset
176
90
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
177 _Next@Empty Dictionary[dict:out,none]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
178 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
179 none <- dict
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
180 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
181
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
182 _Next Type ID@Empty Dictionary[dict:out,typeid,none]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
183 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
184 none <- dict
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
185 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
186
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
187 _Next Type ID@Dictionary[dict,curtypeid,key:out,typeid,none]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
188 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
189 If[[[dict]Bits >>]=[curtypeid]]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
190 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
191 out <- [[dict]Straight >>]_Next[key,0,List[]]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
192 { typeid <- [curtypeid]-[1u32] }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
193 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
194 typeid,,none <- [[dict]Right >>]_First Type ID {}
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
195 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
196 l <- List[]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
197 out <- [~]_First[l] {}
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
198 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
199 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
200 }{
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
201 If[[curtypeid]<[[dict]Bits >>]]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
202 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
203 out,typeid <- [[dict]Left >>]_Next Type ID[curtypeid,key] {} {}
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
204 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
205 typeid <- [curtypeid]-[1u32]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
206 out <- [[dict]Straight >>]_First[List[]]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
207 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
208 }{
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
209 out,typeid,none <- [[dict]Right >>]_Next Type ID[curtypeid,key]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
210 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
211 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
212 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
213
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
214 _Next@Dictionary[dict,key,keyidx,newkey:out,none]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
215 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
216 [key]Dict Bits[keyidx]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
217 { bits <- [~]+[1u32] }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
218 { bits <- 0u32 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
219
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
220 If[[[dict]Bits >>]=[bits]]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
221 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
222 ,goright <- If[bits]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
223 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
224 out,goright <- [[dict]Straight >>]_Next[key,[keyidx]+[1], [newkey]Append[[bits]-[1u32]]]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
225 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
226 Val[goright]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
227 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
228 out,none <- [[dict]Right >>]_First[newkey]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
229 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
230 }{
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
231 If[[bits]<[[dict]Bits >>]]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
232 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
233 out <- [[dict]Left >>]_Next[key, keyidx, newkey] {}
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
234 { out <- [[dict]Straight >>]_First[[newkey]Append[[[dict]Bits >>]-[1u32]]] }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
235 }{
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
236 out,none <- [[dict]Right >>]_Next[key, keyidx, newkey]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
237 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
238 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
239 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
240
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
241 _Print Dict[dict,key]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
242 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
243 val <- String[[dict]Index[key]]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
244 Print[ [[["\t"]Append[String[key]]]Append[": "]]Append[val] ]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
245 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
246 [dict]Next[key]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
247 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
248 _Print Dict[dict, ~]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
249 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
250 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
251 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
252
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
253 Print@Dictionary[dict:out]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
254 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
255 Print["Dictionary"]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
256 { _Print Dict[dict, [dict]First] }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
257 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
258
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
259 Print@Empty Dictionary[dict:out]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
260 {
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
261 Print["Dictionary\n\t{Empty}"]
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
262 }
c25d75c2440b Implemented Next@Dictionary and Print@Dictionary
Mike Pavone <pavone@retrodev.com>
parents: 87
diff changeset
263