Tidy
[gitmo/Mouse.git] / xs-src / Mouse.xs
index 8bb69c5..47ef5c9 100644 (file)
@@ -88,7 +88,7 @@ mouse_class_has_custom_buildargs(pTHX_ HV* const stash) {
 static void
 mouse_class_update_xc(pTHX_ SV* const metaclass PERL_UNUSED_DECL, HV* const stash, AV* const xc) {
     AV* const linearized_isa = mro_get_linear_isa(stash);
-    I32 const len            = AvFILLp(linearized_isa);
+    I32 const len            = AvFILLp(linearized_isa) + 1;
     I32 i;
     U32 flags             = 0x00;
     AV* const attrall     = newAV();
@@ -236,13 +236,12 @@ mouse_buildargs(pTHX_ SV* metaclass, SV* const klass, I32 ax, I32 items) {
     else{
         I32 i;
 
-        args = newHV_mortal();
-
         if( (items % 2) != 0 ){
             if(!metaclass){ metaclass = get_metaclass(klass); }
             mouse_throw_error(metaclass, NULL, "Odd number of parameters to new()");
         }
 
+        args = newHV_mortal();
         for(i = 0; i < items; i += 2){
             (void)hv_store_ent(args, ST(i), newSVsv(ST(i+1)), 0U);
         }
@@ -297,7 +296,7 @@ mouse_class_initialize_object(pTHX_ SV* const meta, SV* const object, HV* const
     I32 const len   = AvFILLp(attrs) + 1;
     I32 i;
     AV* triggers_queue = NULL;
-    U32 used = 0;
+    I32 used = 0;
 
     assert(meta || object);
     assert(args);
@@ -352,7 +351,8 @@ mouse_class_initialize_object(pTHX_ SV* const meta, SV* const object, HV* const
         }
     } /* for each attribute */
 
-    if(MOUSE_xc_flags(xc) & MOUSEf_XC_CONSTRUCTOR_IS_STRICT && used < HvUSEDKEYS(args)){
+    if(MOUSE_xc_flags(xc) & MOUSEf_XC_CONSTRUCTOR_IS_STRICT
+            && used < (I32)HvUSEDKEYS(args)){
         mouse_report_unknown_args(aTHX_ meta, attrs, args);
     }
 
@@ -370,7 +370,6 @@ mouse_class_initialize_object(pTHX_ SV* const meta, SV* const object, HV* const
     if(MOUSE_xc_flags(xc) & MOUSEf_XC_IS_ANON){
         (void)set_slot(object, newSVpvs_flags("__METACLASS__", SVs_TEMP), meta);
     }
-
 }
 
 static SV*
@@ -378,7 +377,8 @@ mouse_initialize_metaclass(pTHX_ SV* const klass) {
     SV* meta = get_metaclass(klass);
 
     if(!SvOK(meta)){
-        meta = mcall1s(newSVpvs_flags("Mouse::Meta::Class", SVs_TEMP), "initialize", klass);
+        meta = mcall1s(newSVpvs_flags("Mouse::Meta::Class", SVs_TEMP),
+            "initialize", klass);
     }
 
     return meta;
@@ -534,18 +534,6 @@ CODE:
     (void)set_slot(methods, name, code); /* $self->{methods}{$name} = $code */
 }
 
-void
-add_class_accessor(SV* self, SV* name)
-CODE:
-{
-    SV* const klass = mouse_call0(self, mouse_name);
-    const char* fq_name = form("%"SVf"::%"SVf, klass, name);
-    STRLEN keylen;
-    const char* const key = SvPV_const(name, keylen);
-    mouse_simple_accessor_generate(aTHX_ fq_name, key, keylen,
-        XS_Mouse_inheritable_class_accessor, NULL, 0);
-}
-
 MODULE = Mouse  PACKAGE = Mouse::Meta::Class
 
 BOOT:
@@ -692,6 +680,18 @@ PPCODE:
     }
 }
 
+void
+add_metaclass_accessor(SV* self, SV* name)
+CODE:
+{
+    SV* const klass = mcall0(self, mouse_name);
+    const char* fq_name = form("%"SVf"::%"SVf, klass, name);
+    STRLEN keylen;
+    const char* const key = SvPV_const(name, keylen);
+    mouse_simple_accessor_generate(aTHX_ fq_name, key, keylen,
+        XS_Mouse_inheritable_class_accessor, NULL, 0);
+}
+
 MODULE = Mouse  PACKAGE = Mouse::Object
 
 void