Repository: lucy-clownfish Updated Branches: refs/heads/overridden_aliases 5c4f9187a -> 95b19db23
Define Perl alias for Destroy method via bindings Now it should be possible to override the destructor from Perl. Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/95b19db2 Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/95b19db2 Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/95b19db2 Branch: refs/heads/overridden_aliases Commit: 95b19db23f0b2708df51f54abed4b08aba6b94ba Parents: 5c4f918 Author: Nick Wellnhofer <[email protected]> Authored: Tue Jul 29 00:33:31 2014 +0200 Committer: Nick Wellnhofer <[email protected]> Committed: Tue Jul 29 00:43:35 2014 +0200 ---------------------------------------------------------------------- compiler/src/CFCPerlMethod.c | 16 ++++------------ runtime/perl/buildlib/Clownfish/Build/Binding.pm | 4 ++++ 2 files changed, 8 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/95b19db2/compiler/src/CFCPerlMethod.c ---------------------------------------------------------------------- diff --git a/compiler/src/CFCPerlMethod.c b/compiler/src/CFCPerlMethod.c index 9f33065..20a82e6 100644 --- a/compiler/src/CFCPerlMethod.c +++ b/compiler/src/CFCPerlMethod.c @@ -142,19 +142,11 @@ CFCPerlMethod_perl_name(CFCMethod *method) { return CFCUtil_strdup(alias); } - char *perl_name = NULL; + // Derive Perl name by lowercasing. const char *name = CFCMethod_get_macro_sym(method); - - if (strcmp(name, "Destroy") == 0) { - // The Clownfish destructor needs to be spelled DESTROY for Perl. - perl_name = CFCUtil_strdup("DESTROY"); - } - else { - // Derive Perl name by lowercasing. - perl_name = CFCUtil_strdup(name); - for (size_t i = 0; perl_name[i] != '\0'; i++) { - perl_name[i] = tolower(perl_name[i]); - } + char *perl_name = CFCUtil_strdup(name); + for (size_t i = 0; perl_name[i] != '\0'; i++) { + perl_name[i] = tolower(perl_name[i]); } return perl_name; http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/95b19db2/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 fba3def..ccfaeca 100644 --- a/runtime/perl/buildlib/Clownfish/Build/Binding.pm +++ b/runtime/perl/buildlib/Clownfish/Build/Binding.pm @@ -477,6 +477,10 @@ END_XS_CODE parcel => "Clownfish", class_name => "Clownfish::Obj", ); + $binding->bind_method( + alias => 'DESTROY', + method => 'Destroy', + ); $binding->exclude_method($_) for @hand_rolled; $binding->append_xs($xs_code); $binding->set_pod_spec($pod_spec);
