Mercurial > repos > tabletprog
comparison modules/string.tp @ 154:6e579a75a0a9
Add JSON parser and sample
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 10 Aug 2013 11:51:47 -0700 |
parents | a6739206a9e3 |
children | 55e0dca7d3d7 |
comparison
equal
deleted
inserted
replaced
153:075b1e71feff | 154:6e579a75a0a9 |
---|---|
92 intret num!: (intret num) xor bytes | 92 intret num!: (intret num) xor bytes |
93 } | 93 } |
94 intret | 94 intret |
95 } | 95 } |
96 | 96 |
97 llMessage: find:else withVars: { | 97 llMessage: find:startingAt:else withVars: { |
98 intret <- obj_int32 ptr | 98 intret <- obj_int32 ptr |
99 oneedle <- object ptr | 99 oneedle <- object ptr |
100 startpos <- obj_int32 ptr | |
100 ifNotFound <- object ptr | 101 ifNotFound <- object ptr |
101 sneedle <- string ptr | 102 sneedle <- string ptr |
102 i <- uint32_t | 103 i <- uint32_t |
103 notFound <- uint32_t | 104 notFound <- uint32_t |
104 } andCode: :oneedle :ifNotFound { | 105 } andCode: :oneedle :startpos :ifNotFound { |
105 sneedle <- mcall: string 1 oneedle | 106 sneedle <- mcall: string 1 oneedle |
106 i <- 0 | 107 i <- startpos num |
107 notFound <- 1 | 108 notFound <- 1 |
108 while: { notFound && i + (sneedle bytes) <= bytes} do: { | 109 while: { notFound && i + (sneedle bytes) <= bytes} do: { |
109 if: (memcmp: data + i (sneedle data) (sneedle bytes)) = 0 { | 110 if: (memcmp: data + i (sneedle data) (sneedle bytes)) = 0 { |
110 notFound <- 0 | 111 notFound <- 0 |
111 } else: { | 112 } else: { |
117 } else: { | 118 } else: { |
118 intret <- make_object: (addr_of: obj_int32_meta) NULL 0 | 119 intret <- make_object: (addr_of: obj_int32_meta) NULL 0 |
119 intret num!: i | 120 intret num!: i |
120 intret | 121 intret |
121 } | 122 } |
123 } | |
124 | |
125 find:else <- :toFind :orElse { | |
126 find: toFind startingAt: 0 else: orElse | |
122 } | 127 } |
123 | 128 |
124 llMessage: from:withLength withVars: { | 129 llMessage: from:withLength withVars: { |
125 from <- obj_int32 ptr | 130 from <- obj_int32 ptr |
126 tocopy <- obj_int32 ptr | 131 tocopy <- obj_int32 ptr |
181 } | 186 } |
182 pieces append: self | 187 pieces append: self |
183 } | 188 } |
184 | 189 |
185 isInteger? <- { false } | 190 isInteger? <- { false } |
191 isString? <- { true } | |
186 } | 192 } |