PERL_HASH(prehashed_keys[i].hash, value, strlen(value));
}
}
+
+SV *
+mop_simple_reader (SV *self, mop_prehashed_key_t key)
+{
+ register HE *he;
+
+ if (!SvROK(self)) {
+ croak("can't call %s as a class method", prehashed_keys[key].name);
+ }
+
+ if (SvTYPE(SvRV(self)) != SVt_PVHV) {
+ croak("object is not a hashref");
+ }
+
+ if (!(he = hv_fetch_ent((HV *)SvRV(self), prehashed_keys[key].key, 0, prehashed_keys[key].hash))) {
+ return &PL_sv_undef;
+ }
+
+ return SvREFCNT_inc(HeVAL(he));
+}
+
+XS(mop_xs_simple_reader)
+{
+#ifdef dVAR
+ dVAR; dXSARGS;
+#else
+ dXSARGS;
+#endif
+
+ if (items != 1) {
+ croak("expected exactly one argument");
+ }
+
+ ST(0) = mop_simple_reader (ST(0), CvXSUBANY(cv).any_i32);
+ sv_2mortal(ST(0));
+ XSRETURN(1);
+}
+