Repository: lucy-clownfish Updated Branches: refs/heads/master fd74182c1 -> 888627fda
Use $arrayref and $hashref in Perl code samples Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/55a44b19 Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/55a44b19 Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/55a44b19 Branch: refs/heads/master Commit: 55a44b19a323f843c10d64dacbc3c7f92f9767b6 Parents: fd74182 Author: Nick Wellnhofer <wellnho...@aevum.de> Authored: Sat Feb 27 15:03:10 2016 +0100 Committer: Nick Wellnhofer <wellnho...@aevum.de> Committed: Sat Feb 27 15:13:01 2016 +0100 ---------------------------------------------------------------------- compiler/src/CFCPerlPod.c | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/55a44b19/compiler/src/CFCPerlPod.c ---------------------------------------------------------------------- diff --git a/compiler/src/CFCPerlPod.c b/compiler/src/CFCPerlPod.c index 142ffdb..19a35b4 100644 --- a/compiler/src/CFCPerlPod.c +++ b/compiler/src/CFCPerlPod.c @@ -79,7 +79,7 @@ S_gen_labeled_sample(const char *prologue, CFCParamList *param_list, size_t start); static char* -S_perl_var_name(CFCType *type); +S_perl_var_name(CFCType *type, int is_ctor_retval); static char* S_camel_to_lower(const char *camel); @@ -397,7 +397,7 @@ S_gen_code_sample(CFCCallable *func, const char *alias, CFCClass *klass, CFCType *ret_type = CFCCallable_get_return_type(func); if (!CFCType_is_void(ret_type)) { if (is_constructor) { - char *ret_name = S_perl_var_name(ret_type); + char *ret_name = S_perl_var_name(ret_type, is_constructor); prologue = CFCUtil_cat(prologue, "my $", ret_name, " = ", NULL); FREEMEM(ret_name); } @@ -515,22 +515,30 @@ S_gen_labeled_sample(const char *prologue, CFCParamList *param_list, } static char* -S_perl_var_name(CFCType *type) { +S_perl_var_name(CFCType *type, int is_ctor_retval) { const char *specifier = CFCType_get_specifier(type); char *perl_name = NULL; if (CFCType_is_object(type)) { - // Skip parcel prefix. - if (islower(*specifier)) { - for (specifier++; *specifier; specifier++) { - if (*specifier == '_') { - specifier++; - break; + if (!is_ctor_retval && strcmp(specifier, "cfish_Vector") == 0) { + perl_name = CFCUtil_strdup("arrayref"); + } + else if (!is_ctor_retval && strcmp(specifier, "cfish_Hash") == 0) { + perl_name = CFCUtil_strdup("hashref"); + } + else { + // Skip parcel prefix. + if (islower(*specifier)) { + for (specifier++; *specifier; specifier++) { + if (*specifier == '_') { + specifier++; + break; + } } } - } - perl_name = S_camel_to_lower(specifier); + perl_name = S_camel_to_lower(specifier); + } } else if (CFCType_is_integer(type)) { if (strcmp(specifier, "bool") == 0) {