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 }