Mercurial > repos > rhope
annotate string.rhope @ 77:a748300a4143
Some untested progress on String
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 08 Jul 2010 09:57:16 -0400 |
parents | f7bcf3db1342 |
children | 4d5ea487f810 |
rev | line source |
---|---|
52
079200bc3e75
String literals almost working. Print moved out of C runtime.
Mike Pavone <pavone@retrodev.com>
parents:
51
diff
changeset
|
1 |
51
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
2 UTF8 Expect[num,arr,index,count,consumed:out] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
3 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
4 byte <- [arr]Index[index] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
5 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
6 If[[128u8]>[byte]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
7 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
8 //Error: ASCII byte when we were expecting part of a mutlibyte sequence |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
9 //treat each byte as a separate character |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
10 ncount <- [1i32]+[[count]+[consumed]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
11 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
12 If[[192u8]>[byte]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
13 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
14 If[[num]=[1]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
15 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
16 //Sequence is complete count as single character |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
17 ncount <- [1i32]+[count] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
18 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
19 out <- UTF8 Expect[[num]-[1], arr, [index]+[1], count, [1i32]+[consumed]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
20 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
21 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
22 //Error: too high to be a continuation byte |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
23 ncount <- [1i32]+[[count]+[consumed]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
24 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
25 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
26 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
27 //Error: string ended in the middle of a multi-byte sequence |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
28 out <- [count]+[consumed] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
29 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
30 Val[ncount] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
31 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
32 [arr]Next[index] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
33 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
34 out <- Count UTF8[arr, ~, ncount] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
35 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
36 out <- Val[ncount] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
37 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
38 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
39 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
40 |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
41 Count UTF8[arr,index,count:out] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
42 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
43 byte <- [arr]Index[index] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
44 If[[128u8]>[byte]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
45 { ncount <- [1i32]+[count] } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
46 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
47 If[[192u8]>[byte]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
48 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
49 //Error: Encoding for 2nd,3rd or 4th byte of sequence |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
50 //treat as a single character |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
51 ncount <- [1i32]+[count] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
52 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
53 If[[224u8]>[byte]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
54 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
55 out <- UTF8 Expect[1, arr, [index]+[1], count, 1] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
56 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
57 If[[240u8]>[byte]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
58 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
59 out <- UTF8 Expect[2, arr, [index]+[1], count, 1] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
60 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
61 If[[245u8]>[byte]] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
62 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
63 out <- UTF8 Expect[3, arr, [index]+[1], count, 1] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
64 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
65 //Error: Out of range of Unicode standard |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
66 //treat as a single character |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
67 ncount <- [1i32]+[count] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
68 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
69 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
70 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
71 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
72 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
73 [arr]Next[index] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
74 { |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
75 out <- Count UTF8[arr, ~, ncount] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
76 }{ |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
77 out <- Val[ncount] |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
78 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
79 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
80 |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
81 Blueprint String |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
82 { |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
83 Buffer |
51
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
84 Length(Int32,Naked) |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
85 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
86 |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
87 String@Array[in:out(String)] |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
88 { |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
89 out <- [[Build[String()]]Buffer <<[in]]Length <<[Count UTF8[in, 0, 0]] |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
90 } |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
91 |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
92 Print@String[string:out] |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
93 { |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
94 //TODO: Sanitize string (remove terminal escapes and replace invalid UTF) |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
95 write[1i32, [string]Buffer >>, Int64[[[string]Buffer >>]Length >>]] |
69
d0ce696786cc
Clean up debug print statements a bit. Fix bug that prevented workers that took no inputs from working. Remove workaround in Array for said bug.
Mike Pavone <pavone@retrodev.com>
parents:
55
diff
changeset
|
96 { out <- write[1i32, [Array[]]Append[10u8], 1i64] } |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
97 } |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
98 |
71
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
99 Get Char[:out] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
100 { |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
101 read[0, [Array[]]Set[0, 0u8], 1i64] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
102 {} |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
103 { out <- String[~] } |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
104 } |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
105 |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
106 _String to Int32[current,index,array:out] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
107 { |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
108 char <- [array]Index[index] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
109 { |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
110 If[[char]<[48u8]] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
111 { |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
112 out <- Val[current] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
113 }{ |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
114 If[[char]>[57u8]] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
115 { |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
116 out <- Val[current] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
117 }{ |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
118 out <- _String to Int32[[[current]*[10i32]]+[Int32[[char]-[48u8]]], [index]+[1], array] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
119 } |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
120 } |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
121 |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
122 }{ |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
123 out <- Val[current] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
124 } |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
125 } |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
126 |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
127 Int32@String[string:out] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
128 { |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
129 buf <- [string]Buffer >> |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
130 [buf]Index[0] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
131 { |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
132 If[[~]=[45u8]] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
133 { |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
134 out <- [0i32]-[_String to Int32[0i32, 1, buf]] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
135 }{ |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
136 out <- _String to Int32[0i32, 0, buf] |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
137 } |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
138 }{ |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
139 out <- 0i32 |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
140 } |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
141 |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
142 } |
c40c3d399133
Add Int32@String and Get Char. Fix stack bug
Mike Pavone <pavone@retrodev.com>
parents:
69
diff
changeset
|
143 |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
144 Flatten@String[string:out] |
51
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
145 { |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
146 out <- string |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
147 } |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
148 |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
149 _CPOff to BOff[buff,cur,expected:outcur,outboff] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
150 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
151 If[expected] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
152 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
153 outcur <- cur |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
154 outboff <- 0i32 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
155 }{ |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
156 err <- If[[byte]>[192u8]] {} |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
157 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
158 err <- If[[byte]<[128u8]] {} |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
159 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
160 outcur <- _CPOff to BOff[buff, [cur]+[1i32], [expected]-[1i32]] {} |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
161 { outboff <- [~]+[1i32] } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
162 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
163 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
164 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
165 Val[err] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
166 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
167 outcur <- [cur]+[1i32] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
168 outboff <- 1i32 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
169 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
170 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
171 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
172 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
173 CPOff to BOff[buff,cur,boff,cpoff:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
174 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
175 If[[cur]=[cpoff]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
176 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
177 out <- boff |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
178 }{ |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
179 byte <- [buff]Index[cur] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
180 If[[byte] < [128u8]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
181 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
182 nboff <- [bof]+[1i32] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
183 ncur <- [cur]+[1i32] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
184 }{ |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
185 If[[byte]<[192u8]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
186 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
187 //Error: Encoding for 2nd,3rd or 4th byte of sequence |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
188 //treat as a single character |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
189 nboff <- [bof]+[1i32] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
190 ncur <- [cur]+[1i32] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
191 }{ |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
192 If[[byte]<[224u8]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
193 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
194 expect <- 1i32 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
195 }{ |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
196 If[[byte]<[240u8]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
197 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
198 expect <- 2i32 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
199 }{ |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
200 If[[byte]<[245u8]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
201 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
202 expect <- 3i32 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
203 }{ |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
204 //Error |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
205 nboff <- [bof]+[1i32] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
206 ncur <- [cur]+[1i32] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
207 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
208 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
209 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
210 Val[expect] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
211 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
212 ncur <- _CPOff to BOff[buff, [cur]+[1i32], expect] {} |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
213 { nboff <- [1i32]+[~] } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
214 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
215 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
216 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
217 out <- CPOff to BOff[buff, ncur, cpoff, nboff] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
218 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
219 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
220 |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
221 Slice@String[string,slicepoint:left,right] |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
222 { |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
223 //TODO: Handle invalid slicepoints |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
224 sliceoffset <- CPOff to BOff[[string]Buffer >>, 0i32, 0i32, slicepoint] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
225 left <- String Slice[string, 0i32, slicepoint, sliceoffset] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
226 right <- String Slice[string, sliceoffset, [[string]Length >>]-[slicepoint], [[[string]Buffer >>]Length]-[sliceoffset]] |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
227 } |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
228 |
72
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
229 Byte@String[string,index:out,invalid] |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
230 { |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
231 out,invalid <- [[string]Buffer >>]Index[index] |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
232 } |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
233 |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
234 Length@String[string:out] |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
235 { |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
236 out <- [string]Length >> |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
237 } |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
238 |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
239 _=String[left,right,index:out] |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
240 { |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
241 [left]Byte[index] |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
242 { |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
243 ,out <- If[[~]=[[right]Byte[index]]] |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
244 { |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
245 out <- _=String[left,right,[index]+[1]] |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
246 } |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
247 }{ |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
248 out <- Yes |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
249 } |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
250 } |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
251 |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
252 Eq String[left,right:out] |
72
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
253 { |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
254 ,out <- If[[[left]Length] = [[right]Length]] |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
255 { |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
256 out <- _=String[left,right,0] |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
257 } |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
258 } |
f7bcf3db1342
Add =@String, fix bool bug
Mike Pavone <pavone@retrodev.com>
parents:
71
diff
changeset
|
259 |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
260 =@String[left,right:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
261 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
262 out <- Eq String[left,right] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
263 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
264 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
265 Byte Length@String[string:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
266 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
267 out <- [[string]Buffer >>]Length |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
268 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
269 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
270 Append@String[left,right:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
271 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
272 out <- String Cat[left,right] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
273 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
274 |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
275 Blueprint String Slice |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
276 { |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
277 Source |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
278 Offset(Int32,Naked) |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
279 Length(Int32,Naked) |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
280 ByteLen(Int32,Naked) |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
281 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
282 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
283 String Slice[source,offset,length,bytelen:out(String Slice)] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
284 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
285 out <- [[[[Build[String Slice()]]Source <<[source]]Offset <<[offset]]Length <<[length]]ByteLen <<[bytelen] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
286 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
287 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
288 Byte@String Slice[string,index:out,invalid] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
289 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
290 ,invalid <- If[[index]<[[string]ByteLen >>]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
291 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
292 out,invalid <- [[string]Source >>]Byte[[index]+[[string]Offset >>]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
293 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
294 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
295 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
296 Byte Length@String Slice[string:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
297 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
298 out <- [string]ByteLen >> |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
299 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
300 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
301 =@String Slice[left,right:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
302 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
303 out <- Eq String[left,right] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
304 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
305 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
306 _Flatten@String[string,dest,offset,count:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
307 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
308 If[count] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
309 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
310 out <- [string]_Flatten[[dest]Append[ [[string]Buffer >>]Index[offset] ], [offset]+[1i32], [count]-[1i32]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
311 }{ |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
312 out <- dest |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
313 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
314 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
315 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
316 Flatten@String[string:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
317 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
318 out <- string |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
319 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
320 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
321 _Flatten@String Slice[string,dest,offset,count:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
322 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
323 out <- [[string]Source >>]_Flatten[dest, [[string]Offset >>]+[offset], count] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
324 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
325 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
326 Flatten@String Slice[string:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
327 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
328 out <- String[ [[string]Source >>]_Flatten[Array[], [string]Offset >>, [string]ByteLen >>] ] |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
329 } |
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
330 |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
331 Append@String Slice[left,right:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
332 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
333 out <- String Cat[left,right] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
334 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
335 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
336 Blueprint String Cat |
55
048046186d22
Started working on Slice@String
Mike Pavone <pavone@retrodev.com>
parents:
52
diff
changeset
|
337 { |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
338 Left |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
339 Right |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
340 Length |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
341 ByteLen |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
342 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
343 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
344 String Cat[left,right:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
345 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
346 out <- [[[[Build[String Cat()] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
347 ]Left <<[left] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
348 ]Right <<[right] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
349 ]Length <<[ [[left]Length]+[[right]Length] ] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
350 ]ByteLen <<[ [[left]Byte Length]+[[right]Byte Length] ] |
51
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
351 } |
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
352 |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
353 Append@String Cat[left,right:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
354 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
355 out <- String Cat[left,right] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
356 } |
51
7d6a6906b648
Added integer type conversions and started on the implementation of String
Mike Pavone <pavone@retrodev.com>
parents:
diff
changeset
|
357 |
77
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
358 Byte@String Cat[string,index:out,invalid] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
359 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
360 leftlen <- [[string]Left >>]Byte Length |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
361 If[[index]<[leftlen]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
362 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
363 out,invalid <- [[string]Left >>]Byte[index] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
364 }{ |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
365 rindex <- [index]-[leftlen] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
366 ,invalid <- If[[rindex]<[[[string]Right >>]Byte Length]] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
367 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
368 out,invalid <- [[string]Right >>]Byte[rindex] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
369 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
370 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
371 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
372 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
373 Byte Length@String Cat[string:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
374 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
375 out <- [string]ByteLen >> |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
376 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
377 |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
378 _Flatten@String Cat[string,dest,offset,count:out] |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
379 { |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
380 [string]Left >> |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
381 } |
a748300a4143
Some untested progress on String
Mike Pavone <pavone@retrodev.com>
parents:
72
diff
changeset
|
382 |