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) {

Reply via email to