Simplify hand-rolled XS code
Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/2ee02719 Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/2ee02719 Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/2ee02719 Branch: refs/heads/master Commit: 2ee02719c995b24e004c4e022858a1f7c1ae5bff Parents: 0667363 Author: Nick Wellnhofer <wellnho...@aevum.de> Authored: Tue Nov 17 14:37:00 2015 +0100 Committer: Nick Wellnhofer <wellnho...@aevum.de> Committed: Tue Nov 17 19:08:43 2015 +0100 ---------------------------------------------------------------------- .../perl/buildlib/Clownfish/Build/Binding.pm | 26 ++++++-------------- 1 file changed, 8 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/2ee02719/runtime/perl/buildlib/Clownfish/Build/Binding.pm ---------------------------------------------------------------------- diff --git a/runtime/perl/buildlib/Clownfish/Build/Binding.pm b/runtime/perl/buildlib/Clownfish/Build/Binding.pm index 2bdb1b5..941ad00 100644 --- a/runtime/perl/buildlib/Clownfish/Build/Binding.pm +++ b/runtime/perl/buildlib/Clownfish/Build/Binding.pm @@ -72,29 +72,23 @@ sub bind_test { MODULE = Clownfish PACKAGE = Clownfish::Test bool -run_tests(package) - char *package; +run_tests(class_name) + cfish_String *class_name; CODE: - cfish_String *class_name = cfish_Str_newf("%s", package); cfish_TestFormatter *formatter = (cfish_TestFormatter*)cfish_TestFormatterTAP_new(); cfish_TestSuite *suite = testcfish_Test_create_test_suite(); - bool result = CFISH_TestSuite_Run_Batch(suite, class_name, formatter); - CFISH_DECREF(class_name); + RETVAL = CFISH_TestSuite_Run_Batch(suite, class_name, formatter); CFISH_DECREF(formatter); CFISH_DECREF(suite); - - RETVAL = result; OUTPUT: RETVAL void -invoke_to_string(sv) - SV *sv; +invoke_to_string(obj) + cfish_Obj *obj; PPCODE: - cfish_Obj *obj = XSBind_perl_to_cfish(aTHX_ sv, CFISH_OBJ); cfish_String *str = CFISH_Obj_To_String(obj); CFISH_DECREF(str); - CFISH_DECREF(obj); int refcount(obj) @@ -169,8 +163,7 @@ CODE: char *ptr = SvPV(sv, size); cfish_ByteBuf *self = (cfish_ByteBuf*)XSBind_new_blank_obj(aTHX_ either_sv); - cfish_BB_init(self, size); - CFISH_BB_Mimic_Bytes(self, ptr, size); + cfish_BB_init_bytes(self, ptr, size); RETVAL = CFISH_OBJ_TO_SV_NOINC(self); } OUTPUT: RETVAL @@ -557,14 +550,11 @@ sub bind_class { MODULE = Clownfish PACKAGE = Clownfish::Class SV* -fetch_class(unused_sv, class_name_sv) +fetch_class(unused_sv, class_name) SV *unused_sv; - SV *class_name_sv; + cfish_String *class_name; CODE: { - STRLEN size; - char *ptr = SvPVutf8(class_name_sv, size); - cfish_String *class_name = CFISH_SSTR_WRAP_UTF8(ptr, size); cfish_Class *klass = cfish_Class_fetch_class(class_name); CFISH_UNUSED_VAR(unused_sv); RETVAL = klass ? (SV*)CFISH_Class_To_Host(klass) : &PL_sv_undef;