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] [6/12] git commit: refs/heads/master - Start using CFCUtil_sprintf
Start using CFCUtil_sprintf
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/e9641a06
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/e9641a06
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/e9641a06
Branch: refs/heads/master
Commit: e9641a06c485bcbe4843329a9326414a6b9c8c79
Parents: 2f96f72
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Wed Dec 26 21:22:30 2012 +0100
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Fri Dec 28 22:23:10 2012 +0100
----------------------------------------------------------------------
clownfish/compiler/src/CFCBindClass.c | 73 +++----------
clownfish/compiler/src/CFCBindCore.c | 32 +----
clownfish/compiler/src/CFCBindFile.c | 14 +--
clownfish/compiler/src/CFCBindFunction.c | 11 +--
clownfish/compiler/src/CFCBindMethod.c | 96 ++++------------
clownfish/compiler/src/CFCClass.c | 16 +--
clownfish/compiler/src/CFCDumpable.c | 44 ++------
clownfish/compiler/src/CFCFile.c | 8 +-
clownfish/compiler/src/CFCMethod.c | 7 +-
clownfish/compiler/src/CFCPerl.c | 61 +++--------
clownfish/compiler/src/CFCPerlClass.c | 17 +---
clownfish/compiler/src/CFCPerlConstructor.c | 15 +--
clownfish/compiler/src/CFCPerlMethod.c | 133 +++++----------------
clownfish/compiler/src/CFCPerlSub.c | 23 +---
clownfish/compiler/src/CFCPerlTypeMap.c | 64 +++++------
clownfish/compiler/src/CFCUtil.c | 18 +--
clownfish/compiler/src/CFCVariable.c | 13 +--
17 files changed, 168 insertions(+), 477 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindClass.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCBindClass.c b/clownfish/compiler/src/CFCBindClass.c
index 52aa5a5..50d9141 100644
--- a/clownfish/compiler/src/CFCBindClass.c
+++ b/clownfish/compiler/src/CFCBindClass.c
@@ -96,10 +96,8 @@ CFCBindClass_init(CFCBindClass *self, CFCClass *client) {
const char *full_vtable_var = CFCClass_full_vtable_var(client);
const char *PREFIX = CFCClass_get_PREFIX(client);
- self->method_specs_var = (char*)MALLOCATE(strlen(full_vtable_var) + 20);
- self->short_names_macro = (char*)MALLOCATE(strlen(PREFIX) + 20);
- sprintf(self->method_specs_var, "%s_METHODS", full_vtable_var);
- sprintf(self->short_names_macro, "%sUSE_SHORT_NAMES", PREFIX);
+ self->method_specs_var = CFCUtil_sprintf("%s_METHODS", full_vtable_var);
+ self->short_names_macro = CFCUtil_sprintf("%sUSE_SHORT_NAMES", PREFIX);
return self;
}
@@ -156,14 +154,8 @@ S_to_c_header_inert(CFCBindClass *self) {
"\n"
"%s\n"
"\n";
-
- size_t size = sizeof(pattern)
- + strlen(inert_var_defs)
- + strlen(inert_func_decs)
- + strlen(short_names)
- + 50;
- char *content = (char*)MALLOCATE(size);
- sprintf(content, pattern, inert_var_defs, inert_func_decs, short_names);
+ char *content = CFCUtil_sprintf(pattern, inert_var_defs, inert_func_decs,
+ short_names);
FREEMEM(inert_var_defs);
FREEMEM(inert_func_decs);
@@ -234,25 +226,11 @@ S_to_c_header_dynamic(CFCBindClass *self) {
"\n"
"%s\n"
"\n";
-
- size_t size = sizeof(pattern)
- + strlen(parent_include)
- + strlen(privacy_symbol)
- + strlen(struct_def)
- + strlen(privacy_symbol)
- + strlen(inert_var_defs)
- + strlen(sub_declarations)
- + strlen(method_typedefs)
- + strlen(method_defs)
- + strlen(visibility)
- + strlen(vt_var)
- + strlen(short_names)
- + 100;
-
- char *content = (char*)MALLOCATE(size);
- sprintf(content, pattern, parent_include, privacy_symbol, struct_def,
- privacy_symbol, inert_var_defs, sub_declarations, method_typedefs,
- method_defs, visibility, vt_var, short_names);
+ char *content
+ = CFCUtil_sprintf(pattern, parent_include, privacy_symbol,
+ struct_def, privacy_symbol, inert_var_defs,
+ sub_declarations, method_typedefs, method_defs,
+ visibility, vt_var, short_names);
FREEMEM(struct_def);
FREEMEM(parent_include);
@@ -368,15 +346,8 @@ CFCBindClass_to_c_data(CFCBindClass *self) {
"\n"
"%s\n"
"\n";
- size_t size = sizeof(pattern)
- + strlen(offsets)
- + strlen(cb_funcs)
- + strlen(ms_var)
- + strlen(vt_var)
- + strlen(autocode)
- + 100;
- char *code = (char*)MALLOCATE(size);
- sprintf(code, pattern, offsets, cb_funcs, ms_var, vt_var, autocode);
+ char *code = CFCUtil_sprintf(pattern, offsets, cb_funcs, ms_var, vt_var,
+ autocode);
FREEMEM(fresh_methods);
FREEMEM(offsets);
@@ -401,12 +372,7 @@ S_struct_definition(CFCBindClass *self) {
}
char pattern[] = "struct %s {%s\n};\n";
- size_t size = sizeof(pattern)
- + strlen(struct_sym)
- + strlen(member_decs)
- + 10;
- char *struct_def = (char*)MALLOCATE(size);
- sprintf(struct_def, pattern, struct_sym, member_decs);
+ char *struct_def = CFCUtil_sprintf(pattern, struct_sym, member_decs);
FREEMEM(member_decs);
return struct_def;
@@ -454,19 +420,8 @@ CFCBindClass_spec_def(CFCBindClass *self) {
" %d, /* num_novel */\n"
" %s /* method_specs */\n"
" }";
-
- size_t size = sizeof(pattern)
- + strlen(vt_var)
- + strlen(parent_ref)
- + strlen(class_name)
- + strlen(struct_sym)
- + 10 // for num_fresh
- + 10 // for num_novel
- + strlen(ms_var)
- + 100;
- char *code = (char*)MALLOCATE(size);
- sprintf(code, pattern, vt_var, parent_ref, class_name, struct_sym,
- num_fresh, num_novel, ms_var);
+ char *code = CFCUtil_sprintf(pattern, vt_var, parent_ref, class_name,
+ struct_sym, num_fresh, num_novel, ms_var);
FREEMEM(parent_ref);
return code;
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindCore.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCBindCore.c b/clownfish/compiler/src/CFCBindCore.c
index 0cf7e30..903f429 100644
--- a/clownfish/compiler/src/CFCBindCore.c
+++ b/clownfish/compiler/src/CFCBindCore.c
@@ -249,17 +249,9 @@ S_write_parcel_h(CFCBindCore *self) {
"\n"
"%s\n"
"\n";
- size_t size = sizeof(pattern)
- + strlen(self->header)
- + strlen(aliases)
- + strlen(typedefs)
- + strlen(visibility)
- + 2 * strlen(prefix)
- + strlen(self->footer)
- + 100;
- char *file_content = (char*)MALLOCATE(size);
- sprintf(file_content, pattern, self->header, aliases, typedefs, visibility,
- prefix, prefix, self->footer);
+ char *file_content
+ = CFCUtil_sprintf(pattern, self->header, aliases, typedefs, visibility,
+ prefix, prefix, self->footer);
// Unlink then write file.
const char *inc_dest = CFCHierarchy_get_include_dest(hierarchy);
@@ -348,20 +340,10 @@ S_write_parcel_c(CFCBindCore *self) {
"}\n"
"\n"
"%s\n";
- size_t size = sizeof(pattern)
- + strlen(self->header)
- + strlen(privacy_syms)
- + strlen(includes)
- + strlen(c_data)
- + strlen(vt_specs)
- + strlen(prefix)
- + 10 // for num_specs
- + strlen(prefix)
- + strlen(self->footer)
- + 100;
- char *file_content = (char*)MALLOCATE(size);
- sprintf(file_content, pattern, self->header, privacy_syms, includes,
- c_data, vt_specs, prefix, num_specs, prefix, self->footer);
+ char *file_content
+ = CFCUtil_sprintf(pattern, self->header, privacy_syms, includes,
+ c_data, vt_specs, prefix, num_specs, prefix,
+ self->footer);
// Unlink then open file.
const char *src_dest = CFCHierarchy_get_source_dest(hierarchy);
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindFile.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCBindFile.c b/clownfish/compiler/src/CFCBindFile.c
index db4c175..914c1f5 100644
--- a/clownfish/compiler/src/CFCBindFile.c
+++ b/clownfish/compiler/src/CFCBindFile.c
@@ -101,17 +101,9 @@ CFCBindFile_write_h(CFCFile *file, const char *dest, const char *header,
"\n"
"%s\n"
"\n";
-
- size_t size = sizeof(pattern)
- + strlen(header)
- + strlen(include_guard_start)
- + strlen(content)
- + strlen(include_guard_close)
- + strlen(footer)
- + 50;
- char *file_content = (char*)MALLOCATE(size);
- sprintf(file_content, pattern, header, include_guard_start, content,
- include_guard_close, footer);
+ char *file_content
+ = CFCUtil_sprintf(pattern, header, include_guard_start, content,
+ include_guard_close, footer);
// Unlink then write file.
remove(h_path);
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindFunction.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCBindFunction.c b/clownfish/compiler/src/CFCBindFunction.c
index 0f3cb46..2e3ea00 100644
--- a/clownfish/compiler/src/CFCBindFunction.c
+++ b/clownfish/compiler/src/CFCBindFunction.c
@@ -32,15 +32,8 @@ CFCBindFunc_func_declaration(CFCFunction *func) {
const char *inline_prop = CFCFunction_inline(func)
? "static CHY_INLINE "
: "";
- size_t size = strlen(inline_prop)
- + strlen(ret_type_str)
- + strlen(full_func_sym)
- + strlen(param_list_str)
- + 20
- + strlen("\0");
- char *buf = (char*)MALLOCATE(size);
- sprintf(buf, "%s%s\n%s(%s);", inline_prop, ret_type_str, full_func_sym,
- param_list_str);
+ char *buf = CFCUtil_sprintf("%s%s\n%s(%s);", inline_prop, ret_type_str,
+ full_func_sym, param_list_str);
return buf;
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCBindMethod.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCBindMethod.c b/clownfish/compiler/src/CFCBindMethod.c
index 85ac99e..c9ee631 100644
--- a/clownfish/compiler/src/CFCBindMethod.c
+++ b/clownfish/compiler/src/CFCBindMethod.c
@@ -75,18 +75,13 @@ S_final_method_def(CFCMethod *method, CFCClass *klass) {
char *full_offset_sym = (char*)MALLOCATE(offset_sym_size);
CFCMethod_full_offset_sym(method, klass, full_offset_sym, offset_sym_size);
- const char pattern[] = "extern size_t %s;\n#define %s(%s) \\\n %s((%s)%s)\n";
- size_t size = sizeof(pattern)
- + strlen(full_offset_sym)
- + strlen(full_meth_sym)
- + strlen(arg_names)
- + strlen(full_func_sym)
- + strlen(self_type)
- + strlen(arg_names)
- + 20;
- char *method_def = (char*)MALLOCATE(size);
- sprintf(method_def, pattern, full_offset_sym, full_meth_sym, arg_names,
- full_func_sym, self_type, arg_names);
+ const char pattern[] =
+ "extern size_t %s;\n"
+ "#define %s(%s) \\\n"
+ " %s((%s)%s)\n";
+ char *method_def
+ = CFCUtil_sprintf(pattern, full_offset_sym, full_meth_sym, arg_names,
+ full_func_sym, self_type, arg_names);
FREEMEM(full_offset_sym);
FREEMEM(full_meth_sym);
@@ -139,26 +134,12 @@ S_virtual_method_def(CFCMethod *method, CFCClass *klass) {
" const %s method = *((%s*)method_address);\n"
" %smethod((%s*)self%s);\n"
"}\n";
-
- size_t size = sizeof(pattern)
- + strlen(visibility)
- + strlen(full_offset_sym)
- + strlen(ret_type_str)
- + strlen(full_meth_sym)
- + strlen(invoker_struct)
- + strlen(params_minus_invoker)
- + strlen(full_offset_sym)
- + strlen(full_typedef)
- + strlen(full_typedef)
- + strlen(maybe_return)
- + strlen(common_struct)
- + strlen(arg_names_minus_invoker)
- + 40;
- char *method_def = (char*)MALLOCATE(size);
- sprintf(method_def, pattern, visibility, full_offset_sym, ret_type_str,
- full_meth_sym, invoker_struct, params_minus_invoker,
- full_offset_sym, full_typedef, full_typedef, maybe_return,
- common_struct, arg_names_minus_invoker);
+ char *method_def
+ = CFCUtil_sprintf(pattern, visibility, full_offset_sym, ret_type_str,
+ full_meth_sym, invoker_struct, params_minus_invoker,
+ full_offset_sym, full_typedef, full_typedef,
+ maybe_return, common_struct,
+ arg_names_minus_invoker);
FREEMEM(full_offset_sym);
FREEMEM(full_meth_sym);
@@ -175,13 +156,8 @@ CFCBindMeth_typedef_dec(struct CFCMethod *method, CFCClass *klass) {
char *full_typedef = (char*)MALLOCATE(full_typedef_size);
CFCMethod_full_typedef(method, klass, full_typedef, full_typedef_size);
- size_t size = strlen(params)
- + strlen(ret_type)
- + strlen(full_typedef)
- + 20
- + sizeof("\0");
- char *buf = (char*)MALLOCATE(size);
- sprintf(buf, "typedef %s\n(*%s)(%s);\n", ret_type, full_typedef, params);
+ char *buf = CFCUtil_sprintf("typedef %s\n(*%s)(%s);\n", ret_type,
+ full_typedef, params);
FREEMEM(full_typedef);
return buf;
}
@@ -209,16 +185,9 @@ CFCBindMeth_spec_def(CFCMethod *method) {
" (cfish_method_t)%s, /* callback_func */\n"
" &%s /* offset */\n"
" }";
- size_t size = sizeof(pattern)
- + 10 /* for is_novel */
- + strlen(macro_sym)
- + strlen(impl_sym)
- + strlen(full_override_sym)
- + strlen(full_offset_sym)
- + 30;
- char *def = (char*)MALLOCATE(size);
- sprintf(def, pattern, is_novel, macro_sym, impl_sym, full_override_sym,
- full_offset_sym);
+ char *def
+ = CFCUtil_sprintf(pattern, is_novel, macro_sym, impl_sym,
+ full_override_sym, full_offset_sym);
FREEMEM(full_offset_sym);
return def;
@@ -248,9 +217,8 @@ S_maybe_unreachable(CFCType *return_type) {
}
else {
const char *ret_type_str = CFCType_to_c(return_type);
- return_statement = (char*)MALLOCATE(strlen(ret_type_str) + 60);
- sprintf(return_statement, "\n CHY_UNREACHABLE_RETURN(%s);",
- ret_type_str);
+ char pattern[] = "\n CHY_UNREACHABLE_RETURN(%s);";
+ return_statement = CFCUtil_sprintf(pattern, ret_type_str);
}
return return_statement;
}
@@ -277,18 +245,9 @@ CFCBindMeth_abstract_method_def(CFCMethod *method) {
" cfish_CharBuf *klass = self ? Cfish_Obj_Get_Class_Name((cfish_Obj*)self) : %s->name;%s\n"
" CFISH_THROW(CFISH_ERR, \"Abstract method '%s' not defined by %%o\", klass);%s\n"
"}\n";
- size_t needed = sizeof(pattern)
- + strlen(ret_type_str)
- + strlen(full_func_sym)
- + strlen(params)
- + strlen(vtable_var)
- + strlen(unused)
- + strlen(macro_sym)
- + strlen(return_statement)
- + 50;
- char *abstract_def = (char*)MALLOCATE(needed);
- sprintf(abstract_def, pattern, ret_type_str, full_func_sym, params,
- vtable_var, unused, macro_sym, return_statement);
+ char *abstract_def
+ = CFCUtil_sprintf(pattern, ret_type_str, full_func_sym, params,
+ vtable_var, unused, macro_sym, return_statement);
FREEMEM(unused);
FREEMEM(return_statement);
@@ -305,13 +264,8 @@ CFCBindMeth_callback_dec(CFCMethod *method) {
char pattern[] =
"%s\n"
"%s(%s);\n";
- size_t size = sizeof(pattern)
- + strlen(ret_type_str)
- + strlen(override_sym)
- + strlen(params);
-
- char *callback_dec = (char*)MALLOCATE(size);
- sprintf(callback_dec, pattern, ret_type_str, override_sym, params);
+ char *callback_dec
+ = CFCUtil_sprintf(pattern, ret_type_str, override_sym, params);
return callback_dec;
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCClass.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCClass.c b/clownfish/compiler/src/CFCClass.c
index 05e200c..09ffa68 100644
--- a/clownfish/compiler/src/CFCClass.c
+++ b/clownfish/compiler/src/CFCClass.c
@@ -160,30 +160,26 @@ CFCClass_do_create(CFCClass *self, struct CFCParcel *parcel,
? CFCUtil_strdup(last_colon + 1)
: CFCUtil_strdup(class_name);
const char *prefix = CFCClass_get_prefix(self);
- size_t prefix_len = strlen(prefix);
size_t struct_sym_len = strlen(self->struct_sym);
- self->short_vtable_var = (char*)MALLOCATE(struct_sym_len + 1);
- self->full_struct_sym = (char*)MALLOCATE(prefix_len + struct_sym_len + 1);
- self->full_vtable_var = (char*)MALLOCATE(prefix_len + struct_sym_len + 1);
- self->privacy_symbol = (char*)MALLOCATE(prefix_len + struct_sym_len + 2 + 1);
+ self->short_vtable_var = (char*)MALLOCATE(struct_sym_len + 1);
size_t i;
for (i = 0; i < struct_sym_len; i++) {
self->short_vtable_var[i] = toupper(self->struct_sym[i]);
}
self->short_vtable_var[struct_sym_len] = '\0';
- sprintf(self->full_struct_sym, "%s%s", prefix, self->struct_sym);
+ self->full_struct_sym = CFCUtil_sprintf("%s%s", prefix, self->struct_sym);
+ size_t full_struct_sym_len = strlen(self->full_struct_sym);
+ self->full_vtable_var = (char*)MALLOCATE(full_struct_sym_len + 1);
for (i = 0; self->full_struct_sym[i] != '\0'; i++) {
self->full_vtable_var[i] = toupper(self->full_struct_sym[i]);
}
self->full_vtable_var[i] = '\0';
- sprintf(self->privacy_symbol, "C_%s", self->full_vtable_var);
+ self->privacy_symbol = CFCUtil_sprintf("C_%s", self->full_vtable_var);
// Build the relative path to the autogenerated C header file.
if (file_spec) {
const char *path_part = CFCFileSpec_get_path_part(self->file_spec);
- size_t path_part_len = strlen(path_part);
- self->include_h = (char*)MALLOCATE(path_part_len + 3);
- sprintf(self->include_h, "%s.h", path_part);
+ self->include_h = CFCUtil_sprintf("%s.h", path_part);
}
else {
self->include_h = CFCUtil_strdup("class.h");
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCDumpable.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCDumpable.c b/clownfish/compiler/src/CFCDumpable.c
index 2bdd076..feec89b 100644
--- a/clownfish/compiler/src/CFCDumpable.c
+++ b/clownfish/compiler/src/CFCDumpable.c
@@ -180,16 +180,9 @@ S_add_dump_method(CFCClass *klass) {
"{\n"
" %s super_dump = SUPER_METHOD_PTR(%s, %s);\n"
" cfish_Hash *dump = (cfish_Hash*)super_dump(self);\n";
- size_t amount = sizeof(pattern)
- + strlen(full_func_sym)
- + strlen(full_struct)
- + strlen(full_typedef)
- + strlen(vtable_var)
- + strlen(full_meth)
- + 50;
- char *autocode = (char*)MALLOCATE(amount);
- sprintf(autocode, pattern, full_func_sym, full_struct, full_typedef,
- vtable_var, full_meth);
+ char *autocode
+ = CFCUtil_sprintf(pattern, full_func_sym, full_struct,
+ full_typedef, vtable_var, full_meth);
CFCClass_append_autocode(klass, autocode);
FREEMEM(full_meth);
FREEMEM(full_typedef);
@@ -209,12 +202,7 @@ S_add_dump_method(CFCClass *klass) {
" cfish_Hash *dump = cfish_Hash_new(0);\n"
" Cfish_Hash_Store_Str(dump, \"_class\", 6,\n"
" (cfish_Obj*)Cfish_CB_Clone(Cfish_Obj_Get_Class_Name((cfish_Obj*)self)));\n";
- size_t amount = sizeof(pattern)
- + strlen(full_func_sym)
- + strlen(full_struct)
- + 50;
- char *autocode = (char*)MALLOCATE(amount);
- sprintf(autocode, pattern, full_func_sym, full_struct);
+ char *autocode = CFCUtil_sprintf(pattern, full_func_sym, full_struct);
CFCClass_append_autocode(klass, autocode);
FREEMEM(autocode);
CFCVariable **members = CFCClass_member_vars(klass);
@@ -254,16 +242,10 @@ S_add_load_method(CFCClass *klass) {
" cfish_Hash *source = (cfish_Hash*)CFISH_CERTIFY(dump, CFISH_HASH);\n"
" %s super_load = SUPER_METHOD_PTR(%s, %s);\n"
" %s *loaded = (%s*)super_load(self, dump);\n";
- size_t amount = sizeof(pattern)
- + strlen(full_func_sym)
- + strlen(full_struct) * 3
- + strlen(full_typedef)
- + strlen(vtable_var)
- + strlen(full_meth)
- + 50;
- char *autocode = (char*)MALLOCATE(amount);
- sprintf(autocode, pattern, full_func_sym, full_struct, full_typedef,
- vtable_var, full_meth, full_struct, full_struct);
+ char *autocode
+ = CFCUtil_sprintf(pattern, full_func_sym, full_struct,
+ full_typedef, vtable_var, full_meth, full_struct,
+ full_struct);
CFCClass_append_autocode(klass, autocode);
FREEMEM(full_meth);
FREEMEM(full_typedef);
@@ -286,13 +268,9 @@ S_add_load_method(CFCClass *klass) {
" cfish_VTable *vtable = cfish_VTable_singleton(class_name, NULL);\n"
" %s *loaded = (%s*)Cfish_VTable_Make_Obj(vtable);\n"
" CHY_UNUSED_VAR(self);\n";
- size_t amount = sizeof(pattern)
- + strlen(full_func_sym)
- + strlen(full_struct) * 3
- + 50;
- char *autocode = (char*)MALLOCATE(amount);
- sprintf(autocode, pattern, full_func_sym, full_struct, full_struct,
- full_struct);
+ char *autocode
+ = CFCUtil_sprintf(pattern, full_func_sym, full_struct, full_struct,
+ full_struct);
CFCClass_append_autocode(klass, autocode);
FREEMEM(autocode);
CFCVariable **members = CFCClass_member_vars(klass);
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCFile.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCFile.c b/clownfish/compiler/src/CFCFile.c
index badfec6..6e827d5 100644
--- a/clownfish/compiler/src/CFCFile.c
+++ b/clownfish/compiler/src/CFCFile.c
@@ -67,8 +67,6 @@ CFCFile_init(CFCFile *self, CFCFileSpec *spec) {
const char *path_part = CFCFileSpec_get_path_part(self->spec);
size_t len = strlen(path_part);
self->guard_name = (char*)MALLOCATE(len + sizeof("H_") + 1);
- self->guard_start = (char*)MALLOCATE(len * 2 + 40);
- self->guard_close = (char*)MALLOCATE(len + 20);
memcpy(self->guard_name, "H_", 2);
size_t i, j;
for (i = 0, j = 2; i < len; i++) {
@@ -81,9 +79,9 @@ CFCFile_init(CFCFile *self, CFCFileSpec *spec) {
}
}
self->guard_name[j] = '\0';
- sprintf(self->guard_start, "#ifndef %s\n#define %s 1\n", self->guard_name,
- self->guard_name);
- sprintf(self->guard_close, "#endif /* %s */\n", self->guard_name);
+ self->guard_start = CFCUtil_sprintf("#ifndef %s\n#define %s 1\n",
+ self->guard_name, self->guard_name);
+ self->guard_close = CFCUtil_sprintf("#endif /* %s */\n", self->guard_name);
return self;
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCMethod.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCMethod.c b/clownfish/compiler/src/CFCMethod.c
index 6ed8f6e..329b109 100644
--- a/clownfish/compiler/src/CFCMethod.c
+++ b/clownfish/compiler/src/CFCMethod.c
@@ -113,8 +113,7 @@ CFCMethod_init(CFCMethod *self, CFCParcel *parcel, const char *exposure,
const char *prefix = CFCMethod_get_prefix(self);
const char *last_colon = strrchr(class_name, ':');
const char *struct_sym = last_colon ? last_colon + 1 : class_name;
- char *wanted = (char*)MALLOCATE(strlen(prefix) + strlen(struct_sym) + 1);
- sprintf(wanted, "%s%s", prefix, struct_sym);
+ char *wanted = CFCUtil_sprintf("%s%s", prefix, struct_sym);
int mismatch = strcmp(wanted, specifier);
FREEMEM(wanted);
if (mismatch) {
@@ -128,9 +127,7 @@ CFCMethod_init(CFCMethod *self, CFCParcel *parcel, const char *exposure,
// Derive more symbols.
const char *full_func_sym = CFCMethod_implementing_func_sym(self);
- size_t amount = strlen(full_func_sym) + sizeof("_OVERRIDE") + 1;
- self->full_override_sym = (char*)MALLOCATE(amount);
- sprintf(self->full_override_sym, "%s_OVERRIDE", full_func_sym);
+ self->full_override_sym = CFCUtil_sprintf("%s_OVERRIDE", full_func_sym);
// Assume that this method is novel until we discover when applying
// inheritance that it overrides another.
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerl.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerl.c b/clownfish/compiler/src/CFCPerl.c
index dd5c378..dd6d667 100644
--- a/clownfish/compiler/src/CFCPerl.c
+++ b/clownfish/compiler/src/CFCPerl.c
@@ -214,18 +214,9 @@ S_write_boot_h(CFCPerl *self) {
"#endif /* %s */\n"
"\n"
"%s\n";
-
- size_t size = sizeof(pattern)
- + strlen(self->header)
- + strlen(guard)
- + strlen(guard)
- + strlen(self->boot_func)
- + strlen(guard)
- + strlen(self->footer)
- + 20;
- char *content = (char*)MALLOCATE(size);
- sprintf(content, pattern, self->header, guard, guard, self->boot_func,
- guard, self->footer);
+ char *content
+ = CFCUtil_sprintf(pattern, self->header, guard, guard, self->boot_func,
+ guard, self->footer);
CFCUtil_write_file(self->boot_h_path, content, strlen(content));
FREEMEM(content);
@@ -266,16 +257,9 @@ S_write_boot_c(CFCPerl *self) {
" Cfish_ZCB_Assign_Str(alias, \"%s\", %u);\n"
" cfish_VTable_add_alias_to_registry(%s,\n"
" (cfish_CharBuf*)alias);\n";
-
- size_t new_size = sizeof(pattern)
- + strlen(alias_adds)
- + alias_len
- + 20 // stringified alias_len
- + strlen(vtable_var)
- + 50;
- char *new_alias_adds = (char*)MALLOCATE(new_size);
- sprintf(new_alias_adds, pattern, alias_adds, alias,
- (unsigned)alias_len, vtable_var);
+ char *new_alias_adds
+ = CFCUtil_sprintf(pattern, alias_adds, alias,
+ (unsigned)alias_len, vtable_var);
FREEMEM(alias_adds);
alias_adds = new_alias_adds;
}
@@ -319,20 +303,10 @@ S_write_boot_c(CFCPerl *self) {
"\n"
"%s\n"
"\n";
-
- size_t size = sizeof(pattern)
- + strlen(self->header)
- + strlen(self->boot_h_file)
- + strlen(pound_includes)
- + strlen(self->boot_func)
- + strlen(prefix)
- + strlen(alias_adds)
- + strlen(isa_pushes)
- + strlen(self->footer)
- + 100;
- char *content = (char*)MALLOCATE(size);
- sprintf(content, pattern, self->header, self->boot_h_file, pound_includes,
- self->boot_func, prefix, alias_adds, isa_pushes, self->footer);
+ char *content
+ = CFCUtil_sprintf(pattern, self->header, self->boot_h_file,
+ pound_includes, self->boot_func, prefix, alias_adds,
+ isa_pushes, self->footer);
CFCUtil_write_file(self->boot_c_path, content, strlen(content));
FREEMEM(content);
@@ -392,17 +366,10 @@ S_xs_file_contents(CFCPerl *self, const char *generated_xs,
"\n"
"%s\n"
"\n";
-
- size_t size = sizeof(pattern)
- + strlen(self->boot_h_file)
- + strlen(generated_xs)
- + strlen(self->boot_class) * 2
- + strlen(xs_init)
- + strlen(hand_rolled_xs)
- + 30;
- char *contents = (char*)MALLOCATE(size);
- sprintf(contents, pattern, self->boot_h_file, generated_xs,
- self->boot_class, self->boot_class, xs_init, hand_rolled_xs);
+ char *contents
+ = CFCUtil_sprintf(pattern, self->boot_h_file, generated_xs,
+ self->boot_class, self->boot_class, xs_init,
+ hand_rolled_xs);
return contents;
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlClass.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerlClass.c b/clownfish/compiler/src/CFCPerlClass.c
index 296aa01..03fdba7 100644
--- a/clownfish/compiler/src/CFCPerlClass.c
+++ b/clownfish/compiler/src/CFCPerlClass.c
@@ -491,20 +491,9 @@ CFCPerlClass_create_pod(CFCPerlClass *self) {
"\n"
"=cut\n"
"\n";
-
- size_t size = sizeof(pattern)
- + strlen(class_name)
- + strlen(brief)
- + strlen(synopsis)
- + strlen(description)
- + strlen(constructor_pod)
- + strlen(methods_pod)
- + strlen(inheritance)
- + 20;
-
- char *pod = (char*)MALLOCATE(size);
- sprintf(pod, pattern, class_name, brief, synopsis, description,
- constructor_pod, methods_pod, inheritance);
+ char *pod
+ = CFCUtil_sprintf(pattern, class_name, brief, synopsis, description,
+ constructor_pod, methods_pod, inheritance);
FREEMEM(brief);
FREEMEM(synopsis);
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlConstructor.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerlConstructor.c b/clownfish/compiler/src/CFCPerlConstructor.c
index 7e6b0b1..2ca468f 100644
--- a/clownfish/compiler/src/CFCPerlConstructor.c
+++ b/clownfish/compiler/src/CFCPerlConstructor.c
@@ -135,17 +135,10 @@ CFCPerlConstructor_xsub_def(CFCPerlConstructor *self) {
" sv_2mortal(ST(0));\n"
" XSRETURN(1);\n"
"}\n\n";
- size_t size = sizeof(pattern)
- + strlen(c_name) * 2
- + strlen(allot_params)
- + strlen(self_type_str) * 2
- + strlen(refcount_mods)
- + strlen(self_type_str)
- + strlen(func_sym)
- + strlen(name_list);
- char *xsub_def = (char*)MALLOCATE(size);
- sprintf(xsub_def, pattern, c_name, c_name, allot_params, self_type_str,
- self_type_str, refcount_mods, self_type_str, func_sym, name_list);
+ char *xsub_def
+ = CFCUtil_sprintf(pattern, c_name, c_name, allot_params, self_type_str,
+ self_type_str, refcount_mods, self_type_str,
+ func_sym, name_list);
FREEMEM(refcount_mods);
FREEMEM(allot_params);
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlMethod.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerlMethod.c b/clownfish/compiler/src/CFCPerlMethod.c
index a0cb4db..0a3de96 100644
--- a/clownfish/compiler/src/CFCPerlMethod.c
+++ b/clownfish/compiler/src/CFCPerlMethod.c
@@ -239,13 +239,8 @@ S_self_assign_statement(CFCPerlMethod *self, CFCType *type,
? "XSBind_maybe_sv_to_cfish_obj"
: "XSBind_sv_to_cfish_obj";
char pattern[] = "%s self = (%s)%s(ST(0), %s, NULL);";
- size_t size = sizeof(pattern)
- + strlen(type_c) * 2
- + strlen(binding_func)
- + strlen(vtable_var)
- + 10;
- char *statement = (char*)MALLOCATE(size);
- sprintf(statement, pattern, type_c, type_c, binding_func, vtable_var);
+ char *statement
+ = CFCUtil_sprintf(pattern, type_c, type_c, binding_func, vtable_var);
return statement;
}
@@ -278,16 +273,9 @@ S_xsub_def_labeled_params(CFCPerlMethod *self) {
" /* Execute */\n"
" %s\n"
"}\n";
- size_t size = sizeof(pattern)
- + strlen(c_name) * 2
- + strlen(self_micro_sym)
- + strlen(allot_params)
- + strlen(self_assign)
- + strlen(body)
- + 40;
- char *xsub_def = (char*)MALLOCATE(size);
- sprintf(xsub_def, pattern, c_name, c_name, self_micro_sym, allot_params,
- self_assign, body);
+ char *xsub_def
+ = CFCUtil_sprintf(pattern, c_name, c_name, self_micro_sym,
+ allot_params, self_assign, body);
FREEMEM(self_assign);
FREEMEM(allot_params);
@@ -326,17 +314,14 @@ S_xsub_def_positional_args(CFCPerlMethod *self) {
}
const char num_args_pattern[] =
"if (items %s %u) { CFISH_THROW(CFISH_ERR, \"Usage: %%s(%s)\", GvNAME(CvGV(cv))); }";
- size_t num_args_check_size = sizeof(num_args_pattern)
- + strlen(xs_name_list)
- + 30;
- char *num_args_check = (char*)MALLOCATE(num_args_check_size);
+ char *num_args_check;
if (min_required < num_vars) {
- sprintf(num_args_check, num_args_pattern, "<", min_required,
- xs_name_list);
+ num_args_check = CFCUtil_sprintf(num_args_pattern, "<", min_required,
+ xs_name_list);
}
else {
- sprintf(num_args_check, num_args_pattern, "!=", num_vars,
- xs_name_list);
+ num_args_check = CFCUtil_sprintf(num_args_pattern, "!=", num_vars,
+ xs_name_list);
}
// Var assignments.
@@ -367,15 +352,8 @@ S_xsub_def_positional_args(CFCPerlMethod *self) {
char pattern[] =
"\n %s %s = ( items >= %u && XSBind_sv_defined(ST(%u)) )"
" ? %s : %s;";
- size_t size = sizeof(pattern)
- + strlen(type_c)
- + strlen(var_name)
- + strlen(conversion)
- + strlen(val)
- + 100;
- char *statement = (char*)MALLOCATE(size);
- sprintf(statement, pattern, type_c, var_name, i, i,
- conversion, val);
+ char *statement = CFCUtil_sprintf(pattern, type_c, var_name, i,
+ i, conversion, val);
var_assignments
= CFCUtil_cat(var_assignments, statement, NULL);
FREEMEM(statement);
@@ -403,15 +381,9 @@ S_xsub_def_positional_args(CFCPerlMethod *self) {
" /* Execute */\n"
" %s\n"
"}\n";
- size_t size = sizeof(pattern)
- + strlen(self->sub.c_name) * 2
- + strlen(num_args_check)
- + strlen(var_assignments)
- + strlen(body)
- + 20;
- char *xsub = (char*)MALLOCATE(size);
- sprintf(xsub, pattern, self->sub.c_name, self->sub.c_name, num_args_check,
- var_assignments, body);
+ char *xsub
+ = CFCUtil_sprintf(pattern, self->sub.c_name, self->sub.c_name,
+ num_args_check, var_assignments, body);
FREEMEM(num_args_check);
FREEMEM(var_assignments);
@@ -477,9 +449,8 @@ S_maybe_unreachable(CFCType *return_type) {
}
else {
const char *ret_type_str = CFCType_to_c(return_type);
- return_statement = (char*)MALLOCATE(strlen(ret_type_str) + 60);
- sprintf(return_statement, "\n CHY_UNREACHABLE_RETURN(%s);",
- ret_type_str);
+ char pattern[] = "\n CHY_UNREACHABLE_RETURN(%s);";
+ return_statement = CFCUtil_sprintf(pattern, ret_type_str);
}
return return_statement;
}
@@ -498,8 +469,7 @@ S_callback_start(CFCMethod *method) {
int num_to_extend = num_args == 0 ? 1
: num_args == 1 ? 2
: 1 + (num_args * 2);
- char *params = (char*)MALLOCATE(sizeof(pattern) + 20);
- sprintf(params, pattern, num_to_extend);
+ char *params = CFCUtil_sprintf(pattern, num_to_extend);
// Iterate over arguments, mapping them to Perl scalars.
CFCVariable **arg_vars = CFCParamList_get_variables(param_list);
@@ -623,17 +593,9 @@ S_invalid_callback_def(CFCMethod *method) {
"%s(%s) {%s\n"
" CFISH_THROW(CFISH_ERR, \"Can't override %s via binding\");%s\n"
"}\n";
- size_t size = sizeof(pattern)
- + strlen(ret_type_str)
- + strlen(override_sym)
- + strlen(params)
- + strlen(unused)
- + strlen(full_method_sym)
- + strlen(unreachable)
- + 20;
- char *callback_def = (char*)MALLOCATE(size);
- sprintf(callback_def, pattern, ret_type_str, override_sym, params, unused,
- full_method_sym, unreachable);
+ char *callback_def
+ = CFCUtil_sprintf(pattern, ret_type_str, override_sym, params, unused,
+ full_method_sym, unreachable);
FREEMEM(full_method_sym);
FREEMEM(unreachable);
@@ -653,17 +615,9 @@ S_void_callback_def(CFCMethod *method, const char *callback_start,
"%s"
" S_finish_callback_void(\"%s\");%s\n"
"}\n";
-
- size_t size = sizeof(pattern)
- + strlen(override_sym)
- + strlen(params)
- + strlen(callback_start)
- + strlen(micro_sym)
- + strlen(refcount_mods)
- + 20;
- char *callback_def = (char*)MALLOCATE(size);
- sprintf(callback_def, pattern, override_sym, params, callback_start,
- micro_sym, refcount_mods);
+ char *callback_def
+ = CFCUtil_sprintf(pattern, override_sym, params, callback_start,
+ micro_sym, refcount_mods);
return callback_def;
}
@@ -695,21 +649,10 @@ S_primitive_callback_def(CFCMethod *method, const char *callback_start,
" %s retval = (%s)%s(\"%s\");%s\n"
" return retval;\n"
"}\n";
- size_t size = sizeof(pattern)
- + strlen(ret_type_str)
- + strlen(override_sym)
- + strlen(params)
- + strlen(callback_start)
- + strlen(ret_type_str)
- + strlen(ret_type_str)
- + strlen(callback_func)
- + strlen(micro_sym)
- + strlen(refcount_mods)
- + 30;
- char *callback_def = (char*)MALLOCATE(size);
- sprintf(callback_def, pattern, ret_type_str, override_sym, params,
- callback_start, ret_type_str, ret_type_str, callback_func,
- micro_sym, refcount_mods);
+ char *callback_def
+ = CFCUtil_sprintf(pattern, ret_type_str, override_sym, params,
+ callback_start, ret_type_str, ret_type_str,
+ callback_func, micro_sym, refcount_mods);
return callback_def;
}
@@ -731,22 +674,10 @@ S_obj_callback_def(CFCMethod *method, const char *callback_start,
" %s retval = (%s)S_finish_callback_obj(self, \"%s\", %s);%s\n"
" return retval;\n"
"}\n";
-
- size_t size = sizeof(pattern)
- + strlen(ret_type_str)
- + strlen(override_sym)
- + strlen(params)
- + strlen(callback_start)
- + strlen(ret_type_str)
- + strlen(ret_type_str)
- + strlen(micro_sym)
- + strlen(nullable)
- + strlen(refcount_mods)
- + 30;
- char *callback_def = (char*)MALLOCATE(size);
- sprintf(callback_def, pattern, ret_type_str, override_sym, params,
- callback_start, ret_type_str, ret_type_str, micro_sym, nullable,
- refcount_mods);
+ char *callback_def
+ = CFCUtil_sprintf(pattern, ret_type_str, override_sym, params,
+ callback_start, ret_type_str, ret_type_str,
+ micro_sym, nullable, refcount_mods);
return callback_def;
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlSub.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerlSub.c b/clownfish/compiler/src/CFCPerlSub.c
index c3533a5..ccc9077 100644
--- a/clownfish/compiler/src/CFCPerlSub.c
+++ b/clownfish/compiler/src/CFCPerlSub.c
@@ -159,16 +159,8 @@ S_allot_params_arg(CFCType *type, const char *label, int required) {
? "alloca(cfish_ZCB_size())"
: "NULL";
const char pattern[] = "ALLOT_OBJ(&%s, \"%s\", %u, %s, %s, %s)";
- size_t size = sizeof(pattern)
- + label_len * 2
- + 20
- + 5
- + strlen(vtable_var)
- + strlen(zcb_allocation)
- + 50;
- char *arg = (char*)MALLOCATE(size);
- sprintf(arg, pattern, label, label, label_len, req_string, vtable_var,
- zcb_allocation);
+ char *arg = CFCUtil_sprintf(pattern, label, label, label_len,
+ req_string, vtable_var, zcb_allocation);
return arg;
}
else if (CFCType_is_primitive(type)) {
@@ -177,15 +169,8 @@ S_allot_params_arg(CFCType *type, const char *label, int required) {
if (strcmp(prim_type, type_c_string) == 0) {
const char *allot = prim_type_to_allot_macro[i].allot_macro;
char pattern[] = "%s(&%s, \"%s\", %u, %s)";
- size_t size = sizeof(pattern)
- + strlen(allot)
- + label_len * 2
- + 20
- + 5
- + 20; // extra
- char *arg = (char*)MALLOCATE(size);
- sprintf(arg, pattern, allot, label, label, label_len,
- req_string);
+ char *arg = CFCUtil_sprintf(pattern, allot, label, label,
+ label_len, req_string);
return arg;
}
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCPerlTypeMap.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCPerlTypeMap.c b/clownfish/compiler/src/CFCPerlTypeMap.c
index 3ab05eb..864ede4 100644
--- a/clownfish/compiler/src/CFCPerlTypeMap.c
+++ b/clownfish/compiler/src/CFCPerlTypeMap.c
@@ -61,56 +61,54 @@ CFCPerlTypeMap_from_perl(CFCType *type, const char *xs_var) {
}
else if (CFCType_is_primitive(type)) {
const char *specifier = CFCType_get_specifier(type);
- size_t size = 80 + strlen(xs_var) * 2;
- result = (char*)MALLOCATE(size);
if (strcmp(specifier, "double") == 0) {
- sprintf(result, "SvNV(%s)", xs_var);
+ result = CFCUtil_sprintf("SvNV(%s)", xs_var);
}
else if (strcmp(specifier, "float") == 0) {
- sprintf(result, "(float)SvNV(%s)", xs_var);
+ result = CFCUtil_sprintf("(float)SvNV(%s)", xs_var);
}
else if (strcmp(specifier, "int") == 0) {
- sprintf(result, "(int)SvIV(%s)", xs_var);
+ result = CFCUtil_sprintf("(int)SvIV(%s)", xs_var);
}
else if (strcmp(specifier, "short") == 0) {
- sprintf(result, "(short)SvIV(%s)", xs_var);
+ result = CFCUtil_sprintf("(short)SvIV(%s)", xs_var);
}
else if (strcmp(specifier, "long") == 0) {
const char pattern[] =
"((sizeof(long) <= sizeof(IV)) ? (long)SvIV(%s) "
": (long)SvNV(%s))";
- sprintf(result, pattern, xs_var, xs_var);
+ result = CFCUtil_sprintf(pattern, xs_var, xs_var);
}
else if (strcmp(specifier, "size_t") == 0) {
- sprintf(result, "(size_t)SvIV(%s)", xs_var);
+ result = CFCUtil_sprintf("(size_t)SvIV(%s)", xs_var);
}
else if (strcmp(specifier, "uint64_t") == 0) {
- sprintf(result, "(uint64_t)SvNV(%s)", xs_var);
+ result = CFCUtil_sprintf("(uint64_t)SvNV(%s)", xs_var);
}
else if (strcmp(specifier, "uint32_t") == 0) {
- sprintf(result, "(uint32_t)SvUV(%s)", xs_var);
+ result = CFCUtil_sprintf("(uint32_t)SvUV(%s)", xs_var);
}
else if (strcmp(specifier, "uint16_t") == 0) {
- sprintf(result, "(uint16_t)SvUV(%s)", xs_var);
+ result = CFCUtil_sprintf("(uint16_t)SvUV(%s)", xs_var);
}
else if (strcmp(specifier, "uint8_t") == 0) {
- sprintf(result, "(uint8_t)SvUV(%s)", xs_var);
+ result = CFCUtil_sprintf("(uint8_t)SvUV(%s)", xs_var);
}
else if (strcmp(specifier, "int64_t") == 0) {
- sprintf(result, "(int64_t)SvNV(%s)", xs_var);
+ result = CFCUtil_sprintf("(int64_t)SvNV(%s)", xs_var);
}
else if (strcmp(specifier, "int32_t") == 0) {
- sprintf(result, "(int32_t)SvIV(%s)", xs_var);
+ result = CFCUtil_sprintf("(int32_t)SvIV(%s)", xs_var);
}
else if (strcmp(specifier, "int16_t") == 0) {
- sprintf(result, "(int16_t)SvIV(%s)", xs_var);
+ result = CFCUtil_sprintf("(int16_t)SvIV(%s)", xs_var);
}
else if (strcmp(specifier, "int8_t") == 0) {
- sprintf(result, "(int8_t)SvIV(%s)", xs_var);
+ result = CFCUtil_sprintf("(int8_t)SvIV(%s)", xs_var);
}
else if (strcmp(specifier, "bool") == 0) {
- sprintf(result, "SvTRUE(%s) ? 1 : 0", xs_var);
+ result = CFCUtil_sprintf("SvTRUE(%s) ? 1 : 0", xs_var);
}
else {
FREEMEM(result);
@@ -135,60 +133,58 @@ CFCPerlTypeMap_to_perl(CFCType *type, const char *cf_var) {
else if (CFCType_is_primitive(type)) {
// Convert from a primitive type to a Perl scalar.
const char *specifier = CFCType_get_specifier(type);
- size_t size = 80 + strlen(cf_var) * 2;
- result = (char*)MALLOCATE(size);
if (strcmp(specifier, "double") == 0) {
- sprintf(result, "newSVnv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSVnv(%s)", cf_var);
}
else if (strcmp(specifier, "float") == 0) {
- sprintf(result, "newSVnv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSVnv(%s)", cf_var);
}
else if (strcmp(specifier, "int") == 0) {
- sprintf(result, "newSViv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSViv(%s)", cf_var);
}
else if (strcmp(specifier, "short") == 0) {
- sprintf(result, "newSViv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSViv(%s)", cf_var);
}
else if (strcmp(specifier, "long") == 0) {
char pattern[] =
"((sizeof(long) <= sizeof(IV)) ? "
"newSViv((IV)%s) : newSVnv((NV)%s))";
- sprintf(result, pattern, cf_var, cf_var);
+ result = CFCUtil_sprintf(pattern, cf_var, cf_var);
}
else if (strcmp(specifier, "size_t") == 0) {
- sprintf(result, "newSViv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSViv(%s)", cf_var);
}
else if (strcmp(specifier, "uint64_t") == 0) {
char pattern[] =
"sizeof(UV) == 8 ? "
"newSVuv((UV)%s) : newSVnv((NV)CHY_U64_TO_DOUBLE(%s))";
- sprintf(result, pattern, cf_var, cf_var);
+ result = CFCUtil_sprintf(pattern, cf_var, cf_var);
}
else if (strcmp(specifier, "uint32_t") == 0) {
- sprintf(result, "newSVuv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSVuv(%s)", cf_var);
}
else if (strcmp(specifier, "uint16_t") == 0) {
- sprintf(result, "newSVuv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSVuv(%s)", cf_var);
}
else if (strcmp(specifier, "uint8_t") == 0) {
- sprintf(result, "newSVuv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSVuv(%s)", cf_var);
}
else if (strcmp(specifier, "int64_t") == 0) {
char pattern[] = "sizeof(IV) == 8 ? newSViv((IV)%s) : newSVnv((NV)%s)";
- sprintf(result, pattern, cf_var, cf_var);
+ result = CFCUtil_sprintf(pattern, cf_var, cf_var);
}
else if (strcmp(specifier, "int32_t") == 0) {
- sprintf(result, "newSViv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSViv(%s)", cf_var);
}
else if (strcmp(specifier, "int16_t") == 0) {
- sprintf(result, "newSViv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSViv(%s)", cf_var);
}
else if (strcmp(specifier, "int8_t") == 0) {
- sprintf(result, "newSViv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSViv(%s)", cf_var);
}
else if (strcmp(specifier, "bool") == 0) {
- sprintf(result, "newSViv(%s)", cf_var);
+ result = CFCUtil_sprintf("newSViv(%s)", cf_var);
}
else {
FREEMEM(result);
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCUtil.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCUtil.c b/clownfish/compiler/src/CFCUtil.c
index 5316f00..3f56cd0 100644
--- a/clownfish/compiler/src/CFCUtil.c
+++ b/clownfish/compiler/src/CFCUtil.c
@@ -374,25 +374,17 @@ CFCUtil_walk(const char *path, CFCUtil_walk_callback_t callback,
if (!(stat_buf.st_mode & S_IFDIR)) {
return;
}
- void *dirhandle = CFCUtil_opendir(path);
- size_t dir_len = strlen(path);
- size_t subpath_cap = dir_len * 2;
- char *subpath = (char*)MALLOCATE(subpath_cap);
- const char *entry = NULL;
+ void *dirhandle = CFCUtil_opendir(path);
+ const char *entry = NULL;
while (NULL != (entry = CFCUtil_dirnext(dirhandle))) {
if (strcmp(entry, ".") == 0 || strcmp(entry, "..") == 0) {
continue;
}
- size_t name_len = strlen(entry);
- size_t needed = dir_len + 1 + name_len + 1;
- if (needed > subpath_cap) {
- subpath_cap = needed;
- subpath = (char*)REALLOCATE(subpath, subpath_cap);
- }
- sprintf(subpath, "%s" CFCUTIL_PATH_SEP "%s", path, entry);
+ char *subpath = CFCUtil_sprintf("%s" CFCUTIL_PATH_SEP "%s", path,
+ entry);
CFCUtil_walk(subpath, callback, context);
+ FREEMEM(subpath);
}
- FREEMEM(subpath);
CFCUtil_closedir(dirhandle, path);
}
http://git-wip-us.apache.org/repos/asf/lucy/blob/e9641a06/clownfish/compiler/src/CFCVariable.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCVariable.c b/clownfish/compiler/src/CFCVariable.c
index 0eabb07..631480a 100644
--- a/clownfish/compiler/src/CFCVariable.c
+++ b/clownfish/compiler/src/CFCVariable.c
@@ -80,17 +80,10 @@ CFCVariable_init(CFCVariable *self, struct CFCParcel *parcel,
if (CFCType_is_composite(type) && CFCType_get_array(type) != NULL) {
postfix = CFCType_get_array(type);
}
- size_t size = strlen(type_str) + sizeof(" ") + strlen(micro_sym) +
- strlen(postfix) + 1;
- self->local_c = (char*)MALLOCATE(size);
- sprintf(self->local_c, "%s %s%s", type_str, micro_sym, postfix);
- self->local_dec = (char*)MALLOCATE(strlen(self->local_c) + sizeof(";\0"));
- sprintf(self->local_dec, "%s;", self->local_c);
+ self->local_c = CFCUtil_sprintf("%s %s%s", type_str, micro_sym, postfix);
+ self->local_dec = CFCUtil_sprintf("%s;", self->local_c);
const char *full_sym = CFCVariable_full_sym(self);
- size_t full_size = strlen(type_str) + sizeof(" ") + strlen(full_sym) +
- strlen(postfix) + 1;
- self->global_c = (char*)MALLOCATE(full_size);
- sprintf(self->global_c, "%s %s%s", type_str, full_sym, postfix);
+ self->global_c = CFCUtil_sprintf("%s %s%s", type_str, full_sym, postfix);
return self;
}