| | 223 | |
| | 224 | |
| | 225 | MODULE = Search::Namazu PACKAGE = Search::Namazu::ResultXS PREFIX = res_ |
| | 226 | |
| | 227 | SV * |
| | 228 | res_new() |
| | 229 | CODE: |
| | 230 | HV *self; |
| | 231 | HV *stash; |
| | 232 | SV *ref; |
| | 233 | |
| | 234 | stash = gv_stashpv("Search::Namazu::ResultXS", 0); |
| | 235 | self = newHV(); |
| | 236 | ref = newRV_inc((SV*) self); |
| | 237 | sv_bless(ref, stash); |
| | 238 | RETVAL = ref; |
| | 239 | OUTPUT: |
| | 240 | RETVAL |
| | 241 | |
| | 242 | void |
| | 243 | res_set(self, key, val) |
| | 244 | SV *self |
| | 245 | SV *key |
| | 246 | SV *val |
| | 247 | CODE: |
| | 248 | HV *hash; |
| | 249 | |
| | 250 | hash = (HV *) SvRV(self); |
| | 251 | hv_store(hash, SvPV_nolen(key), SvCUR(key), val, 0); |
| | 252 | |
| | 253 | SV * |
| | 254 | res_get(self, key) |
| | 255 | SV *self |
| | 256 | SV *key |
| | 257 | CODE: |
| | 258 | HV *hash; |
| | 259 | SV **ret; |
| | 260 | |
| | 261 | hash = (HV *) SvRV(self); |
| | 262 | ret = hv_fetch(hash, SvPV_nolen(key), SvCUR(key), 0); |
| | 263 | if (ret == NULL) { |
| | 264 | RETVAL = &PL_sv_undef; |
| | 265 | } else { |
| | 266 | RETVAL = SvREFCNT_inc(*ret); |
| | 267 | } |
| | 268 | OUTPUT: |
| | 269 | RETVAL |
| | 270 | |