annotate list.rhope @ 71:c40c3d399133

Add Int32@String and Get Char. Fix stack bug
author Mike Pavone <pavone@retrodev.com>
date Fri, 18 Jun 2010 15:07:09 -0400
parents 1bfcf5f8fa69
children 0083b2f7b3c7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
70
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
1
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
2 Blueprint List Leaf
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
3 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
4 Buffer
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
5 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
6
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
7 Index@List Leaf[list,index:out,not found]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
8 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
9 out, not found <- [[list]Buffer >>]Index[index]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
10 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
11
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
12 Set@List Leaf[list,index,value:out]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
13 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
14 If[[index] < [0]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
15 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
16 }{
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
17 If[[index] > [[[list]Buffer >>]Length >>]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
18 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
19 makeleft <- Yes
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
20 }{
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
21 If[[index] > [7]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
22 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
23 makeleft <- Yes
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
24 }{
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
25 out <- [list]Buffer <<[ [[list]Buffer >>]Set[index, value] ]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
26 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
27 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
28 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
29
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
30 Val[makeleft]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
31 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
32 out <- [[[[[[Build[List()]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
33 ]Buffer << [[Array[]]Append[value]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
34 ]Left << [list]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
35 ]Right << [List[]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
36 ]Offset << [index]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
37 ]Right Offset <<[[index]+[8i32]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
38 ]Length << [ [[list]Length]+[1] ]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
39 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
40 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
41
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
42 Blueprint List
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
43 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
44 Buffer
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
45 Left
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
46 Right
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
47 Offset(Int32,Naked)
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
48 Right Offset(Int32,Naked)
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
49 Length(Int32,Naked)
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
50 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
51
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
52 List[:out(List)]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
53 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
54 out <- [Build[List Leaf()]]Buffer <<[Array[]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
55 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
56
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
57 Index@List[list,index:out,not found]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
58 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
59 If[[index]<[[list]Offset >>]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
60 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
61 out, not found <- [[list]Left >>]Index[index]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
62 }{
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
63 If[[index] < [[list]Right Offset >>]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
64 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
65 out, not found <- [[list]Buffer >>]Index[[index]-[[list]Offset >>]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
66 }{
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
67 out, not found <- [[list]Right >>]Index[[index]-[[list]Right Offset >>]]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
68 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
69 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
70 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
71
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
72 Set@List[list,index,val:out,not found]
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
73 {
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
74
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
75 }
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
76
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
77
1bfcf5f8fa69 Beginning of List implementation
Mike Pavone <pavone@retrodev.com>
parents:
diff changeset
78