You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2012/12/28 22:34:30 UTC

[lucy-commits] [2/12] git commit: refs/heads/master - Replace CFCUtil_cat with CFCUtil_sprintf where appropriate

Replace CFCUtil_cat with CFCUtil_sprintf where appropriate


Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/cec0b47b
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/cec0b47b
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/cec0b47b

Branch: refs/heads/master
Commit: cec0b47b39808eebea89dcee395fca7060b7aefe
Parents: f6f0d83
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Wed Dec 26 23:25:32 2012 +0100
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Fri Dec 28 22:23:10 2012 +0100

----------------------------------------------------------------------
 clownfish/compiler/src/CFCBindClass.c   |    3 +-
 clownfish/compiler/src/CFCBindCore.c    |    8 +++---
 clownfish/compiler/src/CFCHierarchy.c   |    8 +++---
 clownfish/compiler/src/CFCPerl.c        |   36 ++++++++++----------------
 clownfish/compiler/src/CFCPerlPod.c     |    2 +-
 clownfish/compiler/src/CFCPerlSub.c     |    3 +-
 clownfish/compiler/src/CFCPerlTypeMap.c |   23 +++++++---------
 7 files changed, 35 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy/blob/cec0b47b/clownfish/compiler/src/CFCBindClass.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCBindClass.c b/clownfish/compiler/src/CFCBindClass.c
index a053e5c..7bfcf53 100644
--- a/clownfish/compiler/src/CFCBindClass.c
+++ b/clownfish/compiler/src/CFCBindClass.c
@@ -386,8 +386,7 @@ CFCBindClass_spec_def(CFCBindClass *self) {
     // Create a pointer to the parent class's vtable.
     char *parent_ref;
     if (parent) {
-        parent_ref = CFCUtil_cat(CFCUtil_strdup("&"),
-                                 CFCClass_full_vtable_var(parent), NULL);
+        parent_ref = CFCUtil_sprintf("&%s", CFCClass_full_vtable_var(parent));
     }
     else {
         // No parent, e.g. Obj or inert classes.

http://git-wip-us.apache.org/repos/asf/lucy/blob/cec0b47b/clownfish/compiler/src/CFCBindCore.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCBindCore.c b/clownfish/compiler/src/CFCBindCore.c
index 903f429..e4c9491 100644
--- a/clownfish/compiler/src/CFCBindCore.c
+++ b/clownfish/compiler/src/CFCBindCore.c
@@ -255,8 +255,8 @@ S_write_parcel_h(CFCBindCore *self) {
 
     // Unlink then write file.
     const char *inc_dest = CFCHierarchy_get_include_dest(hierarchy);
-    char *filepath = CFCUtil_cat(CFCUtil_strdup(""), inc_dest,
-                                 CFCUTIL_PATH_SEP, "parcel.h", NULL);
+    char *filepath = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "parcel.h",
+                                     inc_dest);
     remove(filepath);
     CFCUtil_write_file(filepath, file_content, strlen(file_content));
     FREEMEM(filepath);
@@ -347,8 +347,8 @@ S_write_parcel_c(CFCBindCore *self) {
 
     // Unlink then open file.
     const char *src_dest = CFCHierarchy_get_source_dest(hierarchy);
-    char *filepath = CFCUtil_cat(CFCUtil_strdup(""), src_dest,
-                                 CFCUTIL_PATH_SEP, "parcel.c", NULL);
+    char *filepath = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "parcel.c",
+                                     src_dest);
     remove(filepath);
     CFCUtil_write_file(filepath, file_content, strlen(file_content));
     FREEMEM(filepath);

http://git-wip-us.apache.org/repos/asf/lucy/blob/cec0b47b/clownfish/compiler/src/CFCHierarchy.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCHierarchy.c b/clownfish/compiler/src/CFCHierarchy.c
index e98a258..5e90c16 100644
--- a/clownfish/compiler/src/CFCHierarchy.c
+++ b/clownfish/compiler/src/CFCHierarchy.c
@@ -114,10 +114,10 @@ CFCHierarchy_init(CFCHierarchy *self, const char *dest) {
     self->num_classes  = 0;
     self->parser       = CFCParser_new();
 
-    self->inc_dest = CFCUtil_cat(CFCUtil_strdup(""), self->dest,
-                                 CFCUTIL_PATH_SEP, "include", NULL);
-    self->src_dest = CFCUtil_cat(CFCUtil_strdup(""), self->dest,
-                                 CFCUTIL_PATH_SEP, "source", NULL);
+    self->inc_dest = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "include",
+                                     self->dest);
+    self->src_dest = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "source",
+                                     self->dest);
     S_do_make_path(self->inc_dest);
     S_do_make_path(self->src_dest);
 

http://git-wip-us.apache.org/repos/asf/lucy/blob/cec0b47b/clownfish/compiler/src/CFCPerl.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerl.c b/clownfish/compiler/src/CFCPerl.c
index dd6d667..f7bc313 100644
--- a/clownfish/compiler/src/CFCPerl.c
+++ b/clownfish/compiler/src/CFCPerl.c
@@ -83,29 +83,23 @@ CFCPerl_init(CFCPerl *self, CFCParcel *parcel, CFCHierarchy *hierarchy,
     self->footer     = CFCUtil_strdup(footer);
 
     // Derive path to generated .xs file.
-    self->xs_path = CFCUtil_cat(CFCUtil_strdup(""), lib_dir, CFCUTIL_PATH_SEP,
-                                boot_class, ".xs", NULL);
+    self->xs_path = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "%s.xs", lib_dir,
+                                    boot_class);
     S_replace_double_colons(self->xs_path, CFCUTIL_PATH_SEP_CHAR);
 
     // Derive the name of the files containing bootstrapping code.
     const char *prefix   = CFCParcel_get_prefix(parcel);
     const char *inc_dest = CFCHierarchy_get_include_dest(hierarchy);
     const char *src_dest = CFCHierarchy_get_source_dest(hierarchy);
-    self->boot_h_file = CFCUtil_cat(CFCUtil_strdup(""), prefix, "boot.h",
-                                    NULL);
-    self->boot_c_file = CFCUtil_cat(CFCUtil_strdup(""), prefix, "boot.c",
-                                    NULL);
-    self->boot_h_path = CFCUtil_cat(CFCUtil_strdup(""), inc_dest,
-                                    CFCUTIL_PATH_SEP, self->boot_h_file,
-                                    NULL);
-    self->boot_c_path = CFCUtil_cat(CFCUtil_strdup(""), src_dest,
-                                    CFCUTIL_PATH_SEP, self->boot_c_file,
-                                    NULL);
+    self->boot_h_file = CFCUtil_sprintf("%sboot.h", prefix);
+    self->boot_c_file = CFCUtil_sprintf("%sboot.c", prefix);
+    self->boot_h_path = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "%s", inc_dest,
+                                        self->boot_h_file);
+    self->boot_c_path = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "%s", src_dest,
+                                        self->boot_c_file);
 
     // Derive the name of the bootstrap function.
-    self->boot_func
-        = CFCUtil_cat(CFCUtil_strdup(""), CFCParcel_get_prefix(parcel),
-                      boot_class, "_bootstrap", NULL);
+    self->boot_func = CFCUtil_sprintf("%s%s_bootstrap", prefix, boot_class);
     for (int i = 0; self->boot_func[i] != 0; i++) {
         if (!isalnum(self->boot_func[i])) {
             self->boot_func[i] = '_';
@@ -162,9 +156,8 @@ CFCPerl_write_pod(CFCPerl *self) {
         const char *class_name = CFCPerlClass_get_class_name(registry[i]);
         char *pod = CFCPerlClass_create_pod(registry[i]);
         if (!pod) { continue; }
-        char *pod_path
-            = CFCUtil_cat(CFCUtil_strdup(""), self->lib_dir, CFCUTIL_PATH_SEP,
-                          class_name, ".pod", NULL);
+        char *pod_path = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "%s.pod",
+                                         self->lib_dir, class_name);
         S_replace_double_colons(pod_path, CFCUTIL_PATH_SEP_CHAR);
 
         pods[count] = pod;
@@ -193,8 +186,7 @@ CFCPerl_write_pod(CFCPerl *self) {
 
 static void
 S_write_boot_h(CFCPerl *self) {
-    char *guard = CFCUtil_cat(CFCUtil_strdup(""), self->boot_class,
-                              "_BOOT", NULL);
+    char *guard = CFCUtil_sprintf("%s_BOOT", self->boot_class);
     S_replace_double_colons(guard, '_');
     for (char *ptr = guard; *ptr != '\0'; ptr++) {
         if (isalpha(*ptr)) {
@@ -583,8 +575,8 @@ CFCPerl_write_callbacks(CFCPerl *self) {
 
     // Write if changed.
     const char *src_dest = CFCHierarchy_get_source_dest(self->hierarchy);
-    char *filepath = CFCUtil_cat(CFCUtil_strdup(""), src_dest,
-                                 CFCUTIL_PATH_SEP, "callbacks.c", NULL);
+    char *filepath = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "callbacks.c",
+                                     src_dest);
     CFCUtil_write_if_changed(filepath, content, strlen(content));
 
     FREEMEM(filepath);

http://git-wip-us.apache.org/repos/asf/lucy/blob/cec0b47b/clownfish/compiler/src/CFCPerlPod.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerlPod.c b/clownfish/compiler/src/CFCPerlPod.c
index ae03305..d7a9c7e 100644
--- a/clownfish/compiler/src/CFCPerlPod.c
+++ b/clownfish/compiler/src/CFCPerlPod.c
@@ -276,7 +276,7 @@ CFCPerlPod_gen_subroutine_pod(CFCPerlPod *self, CFCFunction *func,
 
     CFCParamList *param_list = CFCFunction_get_param_list(func);
     int num_vars = CFCParamList_num_vars(param_list);
-    char *pod = CFCUtil_cat(CFCUtil_strdup(""), "=head2 ", alias, NULL);
+    char *pod = CFCUtil_sprintf("=head2 %s", alias);
 
     // Get documentation, which may be inherited.
     CFCDocuComment *docucomment = CFCFunction_get_docucomment(func);

http://git-wip-us.apache.org/repos/asf/lucy/blob/cec0b47b/clownfish/compiler/src/CFCPerlSub.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerlSub.c b/clownfish/compiler/src/CFCPerlSub.c
index ccc9077..de38183 100644
--- a/clownfish/compiler/src/CFCPerlSub.c
+++ b/clownfish/compiler/src/CFCPerlSub.c
@@ -41,8 +41,7 @@ CFCPerlSub_init(CFCPerlSub *self, CFCParamList *param_list,
     self->class_name  = CFCUtil_strdup(class_name);
     self->alias       = CFCUtil_strdup(alias);
     self->use_labeled_params = use_labeled_params;
-    self->perl_name = CFCUtil_cat(CFCUtil_strdup(class_name), "::", alias,
-                                  NULL);
+    self->perl_name = CFCUtil_sprintf("%s::%s", class_name, alias);
 
     size_t c_name_len = strlen(self->perl_name) + sizeof("XS_") + 1;
     self->c_name = (char*)MALLOCATE(c_name_len);

http://git-wip-us.apache.org/repos/asf/lucy/blob/cec0b47b/clownfish/compiler/src/CFCPerlTypeMap.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerlTypeMap.c b/clownfish/compiler/src/CFCPerlTypeMap.c
index 864ede4..ce05145 100644
--- a/clownfish/compiler/src/CFCPerlTypeMap.c
+++ b/clownfish/compiler/src/CFCPerlTypeMap.c
@@ -41,6 +41,7 @@ CFCPerlTypeMap_from_perl(CFCType *type, const char *xs_var) {
     if (CFCType_is_object(type)) {
         const char *struct_sym = CFCType_get_specifier(type);
         const char *vtable_var = CFCType_get_vtable_var(type);
+        const char *allocation;
         if (strcmp(struct_sym, "lucy_CharBuf") == 0
             || strcmp(struct_sym, "cfish_CharBuf") == 0
             || strcmp(struct_sym, "lucy_Obj") == 0
@@ -48,16 +49,14 @@ CFCPerlTypeMap_from_perl(CFCType *type, const char *xs_var) {
            ) {
             // Share buffers rather than copy between Perl scalars and
             // Clownfish string types.
-            result = CFCUtil_cat(CFCUtil_strdup(""), "(", struct_sym,
-                                 "*)XSBind_sv_to_cfish_obj(", xs_var,
-                                 ", ", vtable_var,
-                                 ", alloca(cfish_ZCB_size()))", NULL);
+            allocation = "alloca(cfish_ZCB_size())";
         }
         else {
-            result = CFCUtil_cat(CFCUtil_strdup(""), "(", struct_sym,
-                                 "*)XSBind_sv_to_cfish_obj(", xs_var,
-                                 ", ", vtable_var, ", NULL)", NULL);
+            allocation = "NULL";
         }
+        const char pattern[] = "(%s*)XSBind_sv_to_cfish_obj(%s, %s, %s)";
+        result = CFCUtil_sprintf(pattern, struct_sym, xs_var, vtable_var,
+                                 allocation);
     }
     else if (CFCType_is_primitive(type)) {
         const char *specifier = CFCType_get_specifier(type);
@@ -125,10 +124,9 @@ CFCPerlTypeMap_to_perl(CFCType *type, const char *cf_var) {
     char *result = NULL;
 
     if (CFCType_is_object(type)) {
-        result = CFCUtil_cat(CFCUtil_strdup(""), "(", cf_var,
-                             " == NULL ? newSV(0) : "
-                             "XSBind_cfish_to_perl((cfish_Obj*)",
-                             cf_var, "))", NULL);
+        const char pattern[] =
+            "(%s == NULL ? newSV(0) : XSBind_cfish_to_perl((cfish_Obj*)%s))";
+        result = CFCUtil_sprintf(pattern, cf_var, cf_var);
     }
     else if (CFCType_is_primitive(type)) {
         // Convert from a primitive type to a Perl scalar.
@@ -195,8 +193,7 @@ CFCPerlTypeMap_to_perl(CFCType *type, const char *cf_var) {
         if (strcmp(type_str, "void*") == 0) {
             // Assume that void* is a reference SV -- either a hashref or an
             // arrayref.
-            result = CFCUtil_cat(CFCUtil_strdup(""), "newRV_inc((SV*)",
-                                 cf_var, ")", NULL);
+            result = CFCUtil_sprintf("newRV_inc((SV*)%s)", cf_var);
         }
     }