Mercurial > repos > rhope
annotate list.rhope @ 70:1bfcf5f8fa69
Beginning of List implementation
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Wed, 16 Jun 2010 04:36:53 +0000 |
parents | |
children | 0083b2f7b3c7 |
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 |