X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=xs%2FMethod.xs;h=590cd06f3ffa438fafd8ce244859911137f6390d;hb=e40935996d0c20aa345a46d996b76e771d885400;hp=18865bce3adadf4af0b93ec004b9ffa2b12e7f17;hpb=d846ade3f993c0e6c140bb28284022e602b8988e;p=gitmo%2FClass-MOP.git diff --git a/xs/Method.xs b/xs/Method.xs index 18865bc..590cd06 100644 --- a/xs/Method.xs +++ b/xs/Method.xs @@ -1,54 +1,10 @@ #include "mop.h" -NEEDS_KEY(name); -NEEDS_KEY(body); -NEEDS_KEY(package_name); - MODULE = Class::MOP::Method PACKAGE = Class::MOP::Method PROTOTYPES: DISABLE -void -name(self) - SV *self - PREINIT: - register HE *he; - PPCODE: - if ( ! SvROK(self) ) { - die("Cannot call name as a class method"); - } - - if ( (he = hv_fetch_ent((HV *)SvRV(self), key_name, 0, hash_name)) ) - XPUSHs(HeVAL(he)); - else - ST(0) = &PL_sv_undef; - -void -package_name(self) - SV *self - PREINIT: - register HE *he; - PPCODE: - if ( ! SvROK(self) ) { - die("Cannot call package_name as a class method"); - } - - if ( (he = hv_fetch_ent((HV *)SvRV(self), key_package_name, 0, hash_package_name)) ) - XPUSHs(HeVAL(he)); - else - ST(0) = &PL_sv_undef; - -void -body(self) - SV *self - PREINIT: - register HE *he; - PPCODE: - if ( ! SvROK(self) ) { - die("Cannot call body as a class method"); - } - - if ( (he = hv_fetch_ent((HV *)SvRV(self), key_body, 0, hash_body)) ) - XPUSHs(HeVAL(he)); - else - ST(0) = &PL_sv_undef; +BOOT: + INSTALL_SIMPLE_READER(Method, name); + INSTALL_SIMPLE_READER(Method, package_name); + INSTALL_SIMPLE_READER(Method, body);