On Fri, 22 Jun 2007 10:35:00 -0700
chromatic <[EMAIL PROTECTED]> wrote:
> > > If we're passing in a string literal, it seems silly to pass in a
> > > length of 0, as we're recalculating a constant on every call. I
> > > don't see that this macro fixes that.
>
> > It uses sizeof, not strlen. So, it pushes the calculation to
> > compile-time, so you only have to do it once, and never at runtime.
>
> You and Nicholas are both right. I saw sizeof() but thought
> strlen(). With Patrick's suggestion to use the name
> string_from_literal() instead, I'm satisfied.
Great! Here's a reissued patch with the name changed to
string_from_literal().
Mark
=== compilers/imcc/pbc.c
==================================================================
--- compilers/imcc/pbc.c (revision 21001)
+++ compilers/imcc/pbc.c (local)
@@ -534,7 +534,7 @@
/* :multi() n = 1, reg = NULL */
if (!pcc_sub->multi[0]) {
STRING *sig;
- sig = string_from_cstring(interp, "__VOID", 0);
+ sig = string_from_literal(interp, "__VOID");
sig_pmc = pmc_new(interp, enum_class_String);
VTABLE_set_string_native(interp, sig_pmc, sig);
=== compilers/pge/PGE/pmc/codestring.pmc
==================================================================
--- compilers/pge/PGE/pmc/codestring.pmc (revision 21001)
+++ compilers/pge/PGE/pmc/codestring.pmc (local)
@@ -73,7 +73,7 @@
PIO_printf(interp, "%d %Ss, %d\n", cur_ns, (STRING*)PMC_data(cur_ns), global_serno);
VTABLE_set_integer_native(INTERP, global_serno, 10);
- Parrot_set_global(INTERP, cur_ns, string_from_cstring(INTERP, "$!serno", 0), global_serno);
+ Parrot_set_global(INTERP, cur_ns, string_from_literal(INTERP, "$!serno"), global_serno);
}
}
*/
@@ -108,9 +108,9 @@
STRING *format;
STRING *key;
STRING *repl;
- STRING *PERCENT = string_from_cstring(INTERP, "%", 0);
+ STRING *PERCENT = string_from_literal(INTERP, "%");
STRING *COMMA = string_from_cstring(INTERP, ",", 0);
- STRING *NEWLINE = string_from_cstring(INTERP, "\n", 0);
+ STRING *NEWLINE = string_from_literal(INTERP, "\n");
format = string_copy(interp, orig_format);
@@ -197,14 +197,14 @@
*/
METHOD STRING* escape(STRING *str) {
- STRING *SLASH_U = string_from_cstring(INTERP, "\\u", 0);
- STRING *SLASH_X = string_from_cstring(INTERP, "\\x", 0);
+ STRING *SLASH_U = string_from_literal(INTERP, "\\u");
+ STRING *SLASH_X = string_from_literal(INTERP, "\\x");
str = string_escape_string(interp, str);
str = Parrot_sprintf_c(interp, "\"%Ss\"", str);
if (string_str_index(interp, str, SLASH_U, 0) >= 0
|| string_str_index(interp, str, SLASH_X, 0) >= 0) {
- str = string_concat(interp, string_from_cstring(interp, "unicode:", 0), str, 0);
+ str = string_concat(interp, string_from_literal(interp, "unicode:"), str, 0);
}
return str;
}
=== examples/compilers/japhc.c
==================================================================
--- examples/compilers/japhc.c (revision 21001)
+++ examples/compilers/japhc.c (local)
@@ -179,7 +179,7 @@
sub_data->seg = cur_cs;
sub_data->address = cur_cs->base.data;
sub_data->end = cur_cs->base.data + cur_cs->base.size;
- sub_data->name = string_from_cstring(interpreter, "JaPHC", 0);
+ sub_data->name = string_from_literal(interpreter, "JaPHC");
return sub;
}
=== include/parrot/string_funcs.h
==================================================================
--- include/parrot/string_funcs.h (revision 21001)
+++ include/parrot/string_funcs.h (local)
@@ -175,6 +175,9 @@
__attribute__nonnull__(1)
__attribute__warn_unused_result__;
+#define CSTRING_WITH_LEN(s) (s ""), (sizeof(s)-1)
+#define string_from_literal(i,s) string_from_cstring((i),CSTRING_WITH_LEN(s))
+
PARROT_API STRING * string_from_int( Interp *interp /*NN*/, INTVAL i )
__attribute__nonnull__(1);
=== languages/APL/src/pmc/aplvector.pmc
==================================================================
--- languages/APL/src/pmc/aplvector.pmc (revision 21001)
+++ languages/APL/src/pmc/aplvector.pmc (local)
@@ -114,7 +114,7 @@
INTVAL array_t;
STRING* property_name;
- property_name = string_from_cstring(INTERP,"shape",0);
+ property_name = string_from_literal(INTERP,"shape");
shape = VTABLE_getprop(INTERP, SELF, property_name);
if (PMC_IS_NULL(shape)) {
/*
@@ -126,7 +126,7 @@
*/
/*
array_t = pmc_type(INTERP,
- string_from_cstring(INTERP, "APLVector", 0)
+ string_from_literal(INTERP, "APLVector")
);
*/
shape = pmc_new(INTERP,VTABLE_type(INTERP,SELF));
@@ -165,7 +165,7 @@
INTVAL old_size,new_size,pos;
/* save the old shape momentarily, set the new shape */
- property_name = string_from_cstring(INTERP,"shape",0);
+ property_name = string_from_literal(INTERP,"shape");
old_shape = VTABLE_getprop(INTERP, SELF, property_name);
VTABLE_setprop(INTERP, SELF, property_name, new_shape);
=== languages/cardinal/src/pmc/rubyobject.pmc
==================================================================
--- languages/cardinal/src/pmc/rubyobject.pmc (revision 21001)
+++ languages/cardinal/src/pmc/rubyobject.pmc (local)
@@ -32,11 +32,11 @@
void class_init() {
if (pass) {
dynpmc_RubyString = pmc_type(INTERP,
- string_from_cstring(INTERP, "RubyString", 0));
+ string_from_literal(INTERP, "RubyString"));
dynpmc_RubyInteger = pmc_type(INTERP,
- string_from_cstring(INTERP, "RubyInteger", 0));
+ string_from_literal(INTERP, "RubyInteger"));
dynpmc_RubyFloat = pmc_type(INTERP,
- string_from_cstring(INTERP, "RubyFloat", 0));
+ string_from_literal(INTERP, "RubyFloat"));
}
}
=== languages/cardinal/src/pmc/rubystring.pmc
==================================================================
--- languages/cardinal/src/pmc/rubystring.pmc (revision 21001)
+++ languages/cardinal/src/pmc/rubystring.pmc (local)
@@ -32,7 +32,7 @@
yes = string_from_cstring(INTERP, "yes",3);
no = string_from_cstring(INTERP, "no",2);
- fixedstringarray_typenum = pmc_type(INTERP, string_from_cstring(INTERP, "FixedStringArray", 0));
+ fixedstringarray_typenum = pmc_type(INTERP, string_from_literal(INTERP, "FixedStringArray"));
string_anchor = pmc_new(INTERP,fixedstringarray_typenum);
VTABLE_set_integer_native(INTERP,string_anchor,4);
=== languages/lua/pmc/lua.pmc
==================================================================
--- languages/lua/pmc/lua.pmc (revision 21001)
+++ languages/lua/pmc/lua.pmc (local)
@@ -216,7 +216,7 @@
STRING *str;
parrot_context_t *ctx;
- bt = string_from_cstring(INTERP, "stack traceback:\n", 0);
+ bt = string_from_literal(INTERP, "stack traceback:\n");
/* information about the current sub */
ctx = CONTEXT(INTERP->ctx);
=== languages/perl5/src/pmc/perlarray.pmc
==================================================================
--- languages/perl5/src/pmc/perlarray.pmc (revision 21001)
+++ languages/perl5/src/pmc/perlarray.pmc (local)
@@ -34,7 +34,7 @@
INTVAL dynpmc_PerlUndef;
dynpmc_PerlUndef = pmc_type(interp,
- string_from_cstring(interp, "PerlUndef", 0));
+ string_from_literal(interp, "PerlUndef"));
return pmc_new(interp, dynpmc_PerlUndef);
}
@@ -97,7 +97,7 @@
PMC *src;
dynpmc_PerlInt = pmc_type(interp,
- string_from_cstring(interp, "PerlInt", 0));
+ string_from_literal(interp, "PerlInt"));
src = pmc_new_noinit(INTERP, dynpmc_PerlInt);
PMC_int_val(src) = value;
list_assign(INTERP, (List *) PMC_data(SELF), key, src, enum_type_PMC);
=== languages/perl5/src/pmc/perlenv.pmc
==================================================================
--- languages/perl5/src/pmc/perlenv.pmc (revision 21001)
+++ languages/perl5/src/pmc/perlenv.pmc (local)
@@ -71,7 +71,7 @@
STRING *string;
dynpmc_PerlString = pmc_type(interp,
- string_from_cstring(interp, "PerlString", 0));
+ string_from_literal(interp, "PerlString"));
ret = pmc_new(INTERP, dynpmc_PerlString);
string = DYNSELF.get_string_keyed(key);
VTABLE_set_string_native(INTERP, ret, string);
=== languages/perl5/src/pmc/perlhash.pmc
==================================================================
--- languages/perl5/src/pmc/perlhash.pmc (revision 21001)
+++ languages/perl5/src/pmc/perlhash.pmc (local)
@@ -37,7 +37,7 @@
void class_init() {
_PerlUndef = pmc_type(INTERP,
- string_from_cstring(INTERP, "PerlUndef", 0));
+ string_from_literal(INTERP, "PerlUndef"));
}
PMC* get_pmc_keyed(PMC *key) {
=== languages/perl5/src/pmc/perlint.pmc
==================================================================
--- languages/perl5/src/pmc/perlint.pmc (revision 21001)
+++ languages/perl5/src/pmc/perlint.pmc (local)
@@ -46,7 +46,7 @@
INTVAL dynpmc_PerlNum;
dynpmc_PerlNum = pmc_type(interp,
- string_from_cstring(interp, "PerlNum", 0));
+ string_from_literal(interp, "PerlNum"));
DYNSELF.morph(dynpmc_PerlNum);
DYNSELF.set_number_native(value);
}
@@ -65,7 +65,7 @@
INTVAL dynpmc_PerlString;
dynpmc_PerlString = pmc_type(interp,
- string_from_cstring(interp, "PerlString", 0));
+ string_from_literal(interp, "PerlString"));
DYNSELF.morph(dynpmc_PerlString);
DYNSELF.set_string_native(value);
}
=== languages/perl5/src/pmc/perlnum.pmc
==================================================================
--- languages/perl5/src/pmc/perlnum.pmc (revision 21001)
+++ languages/perl5/src/pmc/perlnum.pmc (local)
@@ -71,7 +71,7 @@
INTVAL dynpmc_PerlInt;
dynpmc_PerlInt = pmc_type(interp,
- string_from_cstring(interp, "PerlInt", 0));
+ string_from_literal(interp, "PerlInt"));
DYNSELF.morph(dynpmc_PerlInt);
DYNSELF.set_integer_native(value);
}
@@ -113,7 +113,7 @@
INTVAL dynpmc_PerlString;
dynpmc_PerlString = pmc_type(interp,
- string_from_cstring(interp, "PerlString", 0));
+ string_from_literal(interp, "PerlString"));
DYNSELF.morph(dynpmc_PerlString);
DYNSELF.set_string_native(value);
}
=== languages/perl5/src/pmc/perlscalar.pmc
==================================================================
--- languages/perl5/src/pmc/perlscalar.pmc (revision 21001)
+++ languages/perl5/src/pmc/perlscalar.pmc (local)
@@ -48,19 +48,19 @@
switch (type) {
case enum_class_Integer:
type = pmc_type(interp,
- string_from_cstring(interp, "PerlInt", 0));
+ string_from_literal(interp, "PerlInt"));
break;
case enum_class_Float:
type = pmc_type(interp,
- string_from_cstring(interp, "PerlNum", 0));
+ string_from_literal(interp, "PerlNum"));
break;
case enum_class_String:
type = pmc_type(interp,
- string_from_cstring(interp, "PerlString", 0));
+ string_from_literal(interp, "PerlString"));
break;
case enum_class_Undef:
type = pmc_type(interp,
- string_from_cstring(interp, "PerlUndef", 0));
+ string_from_literal(interp, "PerlUndef"));
break;
}
pmc_reuse(INTERP, SELF, type, 0);
=== languages/perl5/src/pmc/perlstring.pmc
==================================================================
--- languages/perl5/src/pmc/perlstring.pmc (revision 21001)
+++ languages/perl5/src/pmc/perlstring.pmc (local)
@@ -86,7 +86,7 @@
INTVAL dynpmc_PerlInt;
dynpmc_PerlInt = pmc_type(interp,
- string_from_cstring(interp, "PerlInt", 0));
+ string_from_literal(interp, "PerlInt"));
DYNSELF.morph(dynpmc_PerlInt);
DYNSELF.set_integer_native(value);
}
@@ -105,7 +105,7 @@
INTVAL dynpmc_PerlNum;
dynpmc_PerlNum = pmc_type(interp,
- string_from_cstring(interp, "PerlNum", 0));
+ string_from_literal(interp, "PerlNum"));
DYNSELF.morph(dynpmc_PerlNum);
DYNSELF.set_number_native(value);
}
@@ -165,7 +165,7 @@
s = PMC_str_val(SELF);
dynpmc_PerlString = pmc_type(interp,
- string_from_cstring(interp, "PerlString", 0));
+ string_from_literal(interp, "PerlString"));
ret = pmc_new_noinit(INTERP, dynpmc_PerlString);
PMC_str_val(ret) = string_substr(INTERP, s,
key_integer(INTERP,key), 1, NULL, 0);
=== languages/perl5/src/pmc/perlundef.pmc
==================================================================
--- languages/perl5/src/pmc/perlundef.pmc (revision 21001)
+++ languages/perl5/src/pmc/perlundef.pmc (local)
@@ -139,7 +139,7 @@
INTVAL dynpmc_PerlInt;
dynpmc_PerlInt = pmc_type(interp,
- string_from_cstring(interp, "PerlInt", 0));
+ string_from_literal(interp, "PerlInt"));
DYNSELF.morph(dynpmc_PerlInt);
DYNSELF.set_integer_native(value);
}
@@ -172,7 +172,7 @@
INTVAL dynpmc_PerlString;
dynpmc_PerlString = pmc_type(interp,
- string_from_cstring(interp, "PerlString", 0));
+ string_from_literal(interp, "PerlString"));
DYNSELF.morph(dynpmc_PerlString);
DYNSELF.set_string_native(value);
}
@@ -490,7 +490,7 @@
INTVAL dynpmc_PerlInt;
dynpmc_PerlInt = pmc_type(interp,
- string_from_cstring(interp, "PerlInt", 0));
+ string_from_literal(interp, "PerlInt"));
dest = pmc_new(INTERP, dynpmc_PerlInt);
}
VTABLE_set_integer_native(INTERP, dest, 1);
@@ -528,7 +528,7 @@
INTVAL dynpmc_PerlInt;
dynpmc_PerlInt = pmc_type(interp,
- string_from_cstring(interp, "PerlInt", 0));
+ string_from_literal(interp, "PerlInt"));
DYNSELF.morph(dynpmc_PerlInt);
PMC_int_val(SELF) = 1;
}
@@ -547,7 +547,7 @@
INTVAL dynpmc_PerlInt;
dynpmc_PerlInt = pmc_type(interp,
- string_from_cstring(interp, "PerlInt", 0));
+ string_from_literal(interp, "PerlInt"));
DYNSELF.morph(dynpmc_PerlInt);
PMC_int_val(SELF) = -1;
}
=== languages/pugs/pmc/pugscapture.pmc
==================================================================
--- languages/pugs/pmc/pugscapture.pmc (revision 21001)
+++ languages/pugs/pmc/pugscapture.pmc (local)
@@ -232,7 +232,7 @@
STRING* get_repr() {
- return string_from_cstring(INTERP, "toto", 0);
+ return string_from_literal(INTERP, "toto");
}
STRING* get_string() {
=== languages/tcl/src/binary.c
==================================================================
--- languages/tcl/src/binary.c (revision 21001)
+++ languages/tcl/src/binary.c (local)
@@ -238,10 +238,10 @@
/* make sure we've found the type numbers for the PMCs we want to create */
if (!class_TclFloat)
{
- class_TclFloat = pmc_type(interp, string_from_cstring(interp, "TclFloat", 0));
- class_TclInt = pmc_type(interp, string_from_cstring(interp, "TclInt", 0));
- class_TclList = pmc_type(interp, string_from_cstring(interp, "TclList", 0));
- class_TclString = pmc_type(interp, string_from_cstring(interp, "TclString", 0));
+ class_TclFloat = pmc_type(interp, string_from_literal(interp, "TclFloat"));
+ class_TclInt = pmc_type(interp, string_from_literal(interp, "TclInt"));
+ class_TclList = pmc_type(interp, string_from_literal(interp, "TclList"));
+ class_TclString = pmc_type(interp, string_from_literal(interp, "TclString"));
}
values = pmc_new(interp, class_TclList);
=== languages/tcl/src/pmc/tclarray.pmc
==================================================================
--- languages/tcl/src/pmc/tclarray.pmc (revision 21001)
+++ languages/tcl/src/pmc/tclarray.pmc (local)
@@ -52,7 +52,7 @@
void class_init() {
if (pass) {
dynpmc_TclString = pmc_type(INTERP,
- string_from_cstring(INTERP, "TclString", 0));
+ string_from_literal(INTERP, "TclString"));
}
}
=== languages/tcl/src/pmc/tcldict.pmc
==================================================================
--- languages/tcl/src/pmc/tcldict.pmc (revision 21001)
+++ languages/tcl/src/pmc/tcldict.pmc (local)
@@ -52,7 +52,7 @@
void class_init() {
if (pass) {
dynpmc_TclString = pmc_type(INTERP,
- string_from_cstring(INTERP, "TclString", 0));
+ string_from_literal(INTERP, "TclString"));
}
}
=== languages/tcl/src/pmc/tcllist.pmc
==================================================================
--- languages/tcl/src/pmc/tcllist.pmc (revision 21001)
+++ languages/tcl/src/pmc/tcllist.pmc (local)
@@ -47,7 +47,7 @@
void class_init() {
if (pass) {
dynpmc_TclInt = pmc_type(INTERP,
- string_from_cstring(INTERP, "TclInt", 0));
+ string_from_literal(INTERP, "TclInt"));
}
}
=== languages/tcl/src/pmc/tclobject.pmc
==================================================================
--- languages/tcl/src/pmc/tclobject.pmc (revision 21001)
+++ languages/tcl/src/pmc/tclobject.pmc (local)
@@ -29,11 +29,11 @@
void class_init() {
if (pass) {
dynpmc_TclString = pmc_type(INTERP,
- string_from_cstring(INTERP, "TclString", 0));
+ string_from_literal(INTERP, "TclString"));
dynpmc_TclInt = pmc_type(INTERP,
- string_from_cstring(INTERP, "TclInt", 0));
+ string_from_literal(INTERP, "TclInt"));
dynpmc_TclFloat = pmc_type(INTERP,
- string_from_cstring(INTERP, "TclFloat", 0));
+ string_from_literal(INTERP, "TclFloat"));
}
}
=== src/dynext.c
==================================================================
--- src/dynext.c (revision 21001)
+++ src/dynext.c (local)
@@ -111,7 +111,7 @@
if (lib == NULL) {
*handle = Parrot_dlopen((char *)NULL);
if (*handle) {
- return string_from_cstring(interp, "", 0);
+ return string_from_literal(interp, "");
}
err = Parrot_dlerror();
Parrot_warn(interp, PARROT_WARNINGS_DYNEXT_FLAG,
@@ -391,7 +391,7 @@
* LOCK()
*/
if (lib == NULL) {
- wo_ext = string_from_cstring(interp, "", 0);
+ wo_ext = string_from_literal(interp, "");
lib_name = NULL;
}
else {
=== src/dynpmc/gdbmhash.pmc
==================================================================
--- src/dynpmc/gdbmhash.pmc (revision 21001)
+++ src/dynpmc/gdbmhash.pmc (local)
@@ -90,7 +90,7 @@
#ifdef WIN32
/* XXX: What if libgdbm.so cannot be loaded */
/* Parrot_load_lib(INTERP, slib, NULL); */
- STRING *slib = string_from_cstring(INTERP, "gdbm3", 0);
+ STRING *slib = string_from_literal(INTERP, "gdbm3");
#endif
}
}
=== src/global.c
==================================================================
--- src/global.c (revision 21001)
+++ src/global.c (local)
@@ -187,7 +187,7 @@
Parrot_make_namespace_autobase(Interp *interp /*NN*/, PMC *key)
{
PMC *base_ns;
- if (VTABLE_isa(interp, key, string_from_cstring(interp, "String", 0)))
+ if (VTABLE_isa(interp, key, string_from_literal(interp, "String")))
base_ns = CONTEXT(interp->ctx)->current_namespace;
else
base_ns = VTABLE_get_pmc_keyed_int(interp, interp->HLL_namespace,
@@ -200,7 +200,7 @@
Parrot_get_namespace_autobase(Interp *interp /*NN*/, PMC *key)
{
PMC *base_ns;
- if (VTABLE_isa(interp, key, string_from_cstring(interp, "String", 0)))
+ if (VTABLE_isa(interp, key, string_from_literal(interp, "String")))
base_ns = CONTEXT(interp->ctx)->current_namespace;
else
base_ns = VTABLE_get_pmc_keyed_int(interp, interp->HLL_namespace,
=== src/global_setup.c
==================================================================
--- src/global_setup.c (revision 21001)
+++ src/global_setup.c (local)
@@ -117,7 +117,7 @@
for (i = 0; i <= interp->n_vtable_max; i++)
if (interp->vtables[i])
Parrot_PCCINVOKE(interp, interp->vtables[i]->_namespace,
- string_from_cstring(interp, "set_class", 0), "P->",
+ string_from_literal(interp, "set_class"), "P->",
VTABLE_get_pmc_keyed_int(interp, interp->pmc_proxies, i));
iglobals = interp->iglobals;
=== src/inter_create.c
==================================================================
--- src/inter_create.c (revision 21001)
+++ src/inter_create.c (local)
@@ -71,7 +71,7 @@
static void
setup_default_compreg(Parrot_Interp interp)
{
- STRING * const pasm1 = string_from_cstring(interp, "PASM1", 0);
+ STRING * const pasm1 = string_from_literal(interp, "PASM1");
/* register the nci compiler object */
Parrot_compreg(interp, pasm1, (Parrot_compiler_func_t)PDB_compile);
=== src/key.c
==================================================================
--- src/key.c (revision 21001)
+++ src/key.c (local)
@@ -441,7 +441,7 @@
}
break;
default:
- string_append(interp, value, string_from_cstring(interp, "Key type unknown", 0));
+ string_append(interp, value, string_from_literal(interp, "Key type unknown"));
break;
}
=== src/objects.c
==================================================================
--- src/objects.c (revision 21001)
+++ src/objects.c (local)
@@ -1821,7 +1821,7 @@
/* Now get immediate parents list. */
Parrot_PCCINVOKE(interp, _class,
- string_from_cstring(interp, "parents", 0),
+ string_from_literal(interp, "parents"),
"->P", &immediate_parents);
if (immediate_parents == NULL) {
@@ -1909,7 +1909,7 @@
/* Get the methods from the role. */
Parrot_PCCINVOKE(interp, role,
- string_from_cstring(interp, "methods", 0), "->P", &methods);
+ string_from_literal(interp, "methods"), "->P", &methods);
if (PMC_IS_NULL(methods))
return;
@@ -2031,7 +2031,7 @@
* as roles "flatten" the methods they get from other roles into their
* own method list. */
Parrot_PCCINVOKE(interp, role,
- string_from_cstring(interp, "roles", 0), "->P", &roles_of_role);
+ string_from_literal(interp, "roles"), "->P", &roles_of_role);
roles_of_role_count = VTABLE_elements(interp, roles_of_role);
for (i = 0; i < roles_of_role_count; i++) {
=== src/packfile.c
==================================================================
--- src/packfile.c (revision 21001)
+++ src/packfile.c (local)
@@ -2140,20 +2140,20 @@
{
switch (debug->mappings[i]->mapping_type) {
case PF_DEBUGMAPPINGTYPE_NONE:
- return string_from_cstring(interp,
- "(unknown file)", 0);
+ return string_from_literal(interp,
+ "(unknown file)");
case PF_DEBUGMAPPINGTYPE_FILENAME:
return PF_CONST(debug->code,
debug->mappings[i]->u.filename)->u.string;
case PF_DEBUGMAPPINGTYPE_SOURCESEG:
- return string_from_cstring(interp,
- "(unknown file)", 0);
+ return string_from_literal(interp,
+ "(unknown file)");
}
}
}
/* Otherwise, no mappings = no filename. */
- return string_from_cstring(interp, "(unknown file)", 0);
+ return string_from_literal(interp, "(unknown file)");
}
/*
=== src/pmc/class.pmc
==================================================================
--- src/pmc/class.pmc (revision 21001)
+++ src/pmc/class.pmc (local)
@@ -242,7 +242,7 @@
/* If we were passed a namespace PMC, set the namespace attribute
* directly. Otherwise, lookup or create the appropriate namespace. */
if (VTABLE_isa(interp, name_arg,
- string_from_cstring(interp, "NameSpace", 0)))
+ string_from_literal(interp, "NameSpace")))
new_namespace = name_arg;
else
new_namespace = Parrot_make_namespace_autobase(interp, name_arg);
@@ -276,19 +276,19 @@
* need to unset ourselves in the old namespace. */
if (!PMC_IS_NULL(old_ns) && _class->_namespace != old_ns)
Parrot_PCCINVOKE(interp, old_ns,
- string_from_cstring(interp, "set_class", 0), "P->", PMCNULL);
+ string_from_literal(interp, "set_class"), "P->", PMCNULL);
/* Link namespace to this class, if there is one. */
if (!PMC_IS_NULL(_class->_namespace))
Parrot_PCCINVOKE(interp, _class->_namespace,
- string_from_cstring(interp, "set_class", 0), "P->", self);
+ string_from_literal(interp, "set_class"), "P->", self);
/* Initialize resolve_method. */
if (VTABLE_exists_keyed_str(interp, info,
- string_from_cstring(interp, "resolve_method", 0))) {
+ string_from_literal(interp, "resolve_method"))) {
/* Set it. */
_class->resolve_method = VTABLE_get_pmc_keyed_str(interp, info,
- string_from_cstring(interp, "resolve_method", 0));
+ string_from_literal(interp, "resolve_method"));
}
/* Initialize parents, if we have any. */
=== src/pmc/env.pmc
==================================================================
--- src/pmc/env.pmc (revision 21001)
+++ src/pmc/env.pmc (local)
@@ -136,7 +136,7 @@
switch (PObj_get_FLAGS(key) & KEY_type_FLAGS) {
case KEY_integer_FLAG:
if (PMC_int_val(key) < 0) {
- retval = string_from_cstring(interp, "", 0);
+ retval = string_from_literal(interp, "");
}
else {
const char * const envp = environ[PMC_int_val(key)];
=== src/pmc/exception.pmc
==================================================================
--- src/pmc/exception.pmc (revision 21001)
+++ src/pmc/exception.pmc (local)
@@ -128,7 +128,7 @@
STRING* get_string_keyed(PMC* key) {
STRING* s = key_string(INTERP, key);
if (!string_compare(INTERP, s,
- string_from_cstring(INTERP, "_message", 0)))
+ string_from_literal(INTERP, "_message")))
return DYNSELF.get_string_keyed_int(0);
return 0;
}
@@ -150,10 +150,10 @@
INTVAL get_integer_keyed(PMC* key) {
STRING* s = key_string(INTERP, key);
if (!string_compare(INTERP, s,
- string_from_cstring(INTERP, "_type", 0)))
+ string_from_literal(INTERP, "_type")))
return DYNSELF.get_integer_keyed_int(1);
if (!string_compare(INTERP, s,
- string_from_cstring(INTERP, "_severity", 0)))
+ string_from_literal(INTERP, "_severity")))
return DYNSELF.get_integer_keyed_int(2);
return 0;
}
@@ -203,7 +203,7 @@
void set_string_keyed(PMC* key, STRING* value) {
STRING* s = key_string(INTERP, key);
if (!string_compare(INTERP, s,
- string_from_cstring(INTERP, "_message", 0)))
+ string_from_literal(INTERP, "_message")))
DYNSELF.set_string_keyed_int(0, value);
}
@@ -220,10 +220,10 @@
void set_integer_keyed(PMC* key, INTVAL value) {
STRING* s = key_string(INTERP, key);
if (!string_compare(INTERP, s,
- string_from_cstring(INTERP, "_type", 0)))
+ string_from_literal(INTERP, "_type")))
DYNSELF.set_integer_keyed_int(1, value);
if (!string_compare(INTERP, s,
- string_from_cstring(INTERP, "_severity", 0)))
+ string_from_literal(INTERP, "_severity")))
DYNSELF.set_integer_keyed_int(2, value);
}
=== src/pmc/fixedintegerarray.pmc
==================================================================
--- src/pmc/fixedintegerarray.pmc (revision 21001)
+++ src/pmc/fixedintegerarray.pmc (local)
@@ -328,7 +328,7 @@
INTVAL j, n;
PMC *val;
- res = string_from_cstring(INTERP, "[ ", 0);
+ res = string_from_literal(INTERP, "[ ");
n = VTABLE_elements(INTERP, SELF);
for (j = 0; j < n; ++j) {
val = SELF.get_pmc_keyed_int(j);
=== src/pmc/fixedpmcarray.pmc
==================================================================
--- src/pmc/fixedpmcarray.pmc (revision 21001)
+++ src/pmc/fixedpmcarray.pmc (local)
@@ -247,7 +247,7 @@
INTVAL j, n;
PMC *val;
- res = string_from_cstring(INTERP, "(", 0);
+ res = string_from_literal(INTERP, "(");
n = VTABLE_elements(INTERP, SELF);
for (j = 0; j < n; ++j) {
val = SELF.get_pmc_keyed_int(j);
=== src/pmc/hash.pmc
==================================================================
--- src/pmc/hash.pmc (revision 21001)
+++ src/pmc/hash.pmc (local)
@@ -370,7 +370,7 @@
STRING* get_repr() {
/* TODO use freeze */
PMC * const iter = VTABLE_get_iter(INTERP, SELF);
- STRING *res = string_from_cstring(INTERP, "{", 0);
+ STRING *res = string_from_literal(INTERP, "{");
const INTVAL n = VTABLE_elements(INTERP, SELF);
INTVAL j;
=== src/pmc/pccmethod_test.pmc
==================================================================
--- src/pmc/pccmethod_test.pmc (revision 21001)
+++ src/pmc/pccmethod_test.pmc (local)
@@ -62,7 +62,7 @@
}
PCCMETHOD void test_method2(int a1 :optional, int a1o :opt_flag, PMC *slurpy_pos :slurpy)
{
- STRING* kevin = string_from_cstring(interp, "KEVIN", 0);
+ STRING* kevin = string_from_literal(interp, "KEVIN");
PIO_printf(interp, "test_method2\n");
PIO_printf(interp, "%d, %d, %Ss %Ss\n", a1, a1o, VTABLE_name(interp, slurpy_pos),
VTABLE_get_repr(interp,slurpy_pos));
=== src/pmc/resizablepmcarray.pmc
==================================================================
--- src/pmc/resizablepmcarray.pmc (revision 21001)
+++ src/pmc/resizablepmcarray.pmc (local)
@@ -650,7 +650,7 @@
INTVAL j, n;
PMC *val;
- res = string_from_cstring(INTERP, "[ ", 0);
+ res = string_from_literal(INTERP, "[ ");
n = VTABLE_elements(INTERP, SELF);
for (j = 0; j < n; ++j) {
val = SELF.get_pmc_keyed_int(j);
=== src/pmc/role.pmc
==================================================================
--- src/pmc/role.pmc (revision 21001)
+++ src/pmc/role.pmc (local)
@@ -75,9 +75,9 @@
/* Check if we have a name and/or a namespace. */
have_name = VTABLE_exists_keyed_str(interp, info,
- string_from_cstring(interp, "name", 0));
+ string_from_literal(interp, "name"));
have_ns = VTABLE_exists_keyed_str(interp, info,
- string_from_cstring(interp, "namespace", 0));
+ string_from_literal(interp, "namespace"));
/* Take a copy of the current namespace the role is attached to. */
old_ns = role->_namespace;
@@ -88,8 +88,8 @@
/* If we weren't passed a NameSpace PMC, assume it's something we have
* to look one up with and do so. */
PMC *_namespace = VTABLE_get_pmc_keyed_str(interp, info,
- string_from_cstring(interp, "namespace", 0));
- if (!VTABLE_isa(interp, _namespace, string_from_cstring(interp, "NameSpace", 0)))
+ string_from_literal(interp, "namespace"));
+ if (!VTABLE_isa(interp, _namespace, string_from_literal(interp, "NameSpace")))
_namespace = Parrot_make_namespace_autobase(interp, _namespace);
/* If we get something null back it's an error; otherwise, store it. */
@@ -100,14 +100,14 @@
/* Set a (string) name. */
role->name = VTABLE_get_string_keyed_str(interp, info,
- string_from_cstring(interp, "name", 0));
+ string_from_literal(interp, "name"));
}
/* Otherwise, we may just have a name. */
else if (have_name) {
/* Set the name. */
role->name = VTABLE_get_string_keyed_str(interp, info,
- string_from_cstring(interp, "name", 0));
+ string_from_literal(interp, "name"));
/* Namespace is nested in the current namespace and with the name of
* the role. */
@@ -120,8 +120,8 @@
/* If we weren't passed a NameSpace PMC, assume it's something we have
* to look one up with and do so. */
PMC *_namespace = VTABLE_get_pmc_keyed_str(interp, info,
- string_from_cstring(interp, "namespace", 0));
- if (!VTABLE_isa(interp, _namespace, string_from_cstring(interp, "NameSpace", 0)))
+ string_from_literal(interp, "namespace"));
+ if (!VTABLE_isa(interp, _namespace, string_from_literal(interp, "NameSpace")))
_namespace = Parrot_make_namespace_autobase(interp, _namespace);
/* If we get something null back it's an error; otherwise, store it. */
@@ -138,21 +138,21 @@
* need to unset ourselves in the old namespace. */
if (!PMC_IS_NULL(old_ns) && role->_namespace != old_ns)
Parrot_PCCINVOKE(interp, old_ns,
- string_from_cstring(interp, "set_class", 0),
+ string_from_literal(interp, "set_class"),
"P->", PMCNULL);
/* Link namespace to this role, if there is one. */
if (!PMC_IS_NULL(role->_namespace))
Parrot_PCCINVOKE(interp, role->_namespace,
- string_from_cstring(interp, "set_class", 0),
+ string_from_literal(interp, "set_class"),
"P->", self);
/* Initialize roles, if we have any. */
if (VTABLE_exists_keyed_str(interp, info,
- string_from_cstring(interp, "roles", 0))) {
+ string_from_literal(interp, "roles"))) {
/* Loop over roles array and compose them. */
PMC *role_list = VTABLE_get_pmc_keyed_str(interp, info,
- string_from_cstring(interp, "roles", 0));
+ string_from_literal(interp, "roles"));
int role_count = VTABLE_elements(interp, role_list);
for (i = 0; i < role_count; i++) {
PMC *cur_role = VTABLE_get_pmc_keyed_int(interp, role_list, i);
@@ -162,10 +162,10 @@
/* Initialize attributes, if we have any. */
if (VTABLE_exists_keyed_str(interp, info,
- string_from_cstring(interp, "attributes", 0))) {
+ string_from_literal(interp, "attributes"))) {
/* Loop over attributes array and add them. */
PMC *attrib_name_list = VTABLE_get_pmc_keyed_str(interp, info,
- string_from_cstring(interp, "attributes", 0));
+ string_from_literal(interp, "attributes"));
int attrib_count = VTABLE_elements(interp, attrib_name_list);
for (i = 0; i < attrib_count; i++) {
STRING *attrib_name = VTABLE_get_string_keyed_int(interp,
@@ -176,10 +176,10 @@
/* Initialize methods, if we have any. */
if (VTABLE_exists_keyed_str(interp, info,
- string_from_cstring(interp, "methods", 0))) {
+ string_from_literal(interp, "methods"))) {
/* Get the methods hash. */
PMC *methods = VTABLE_get_pmc_keyed_str(interp, info,
- string_from_cstring(interp, "methods", 0));
+ string_from_literal(interp, "methods"));
/* Iterate over the list of methods. */
PMC *iter = VTABLE_get_iter(interp, methods);
=== src/pmc/unmanagedstruct.pmc
==================================================================
--- src/pmc/unmanagedstruct.pmc (revision 21001)
+++ src/pmc/unmanagedstruct.pmc (local)
@@ -154,7 +154,7 @@
*/
PMC * const ptr = VTABLE_get_pmc_keyed_int(interp, init, ix);
init = VTABLE_getprop(interp, ptr,
- string_from_cstring(interp, "_struct", 0));
+ string_from_literal(interp, "_struct"));
assert(init && (init->vtable->base_type == enum_class_UnManagedStruct
|| init->vtable->base_type == enum_class_ManagedStruct));
@@ -350,7 +350,7 @@
ptr = VTABLE_get_pmc_keyed_int(interp, init, idx*3);
if (ptr->pmc_ext && PMC_metadata(ptr)) {
PMC *sig = VTABLE_getprop(interp, ptr,
- string_from_cstring(interp, "_signature", 0));
+ string_from_literal(interp, "_signature"));
if (VTABLE_defined(interp, sig)) {
STRING *sig_str = VTABLE_get_string(interp, sig);
ret = pmc_new(interp, enum_class_NCI);
@@ -516,7 +516,7 @@
* so go through that struct and check
*/
nested = VTABLE_getprop(interp, type_pmc,
- string_from_cstring(interp, "_struct", 0));
+ string_from_literal(interp, "_struct"));
nested_init = PMC_pmc_val(nested);
}
if (type == enum_type_struct) {
@@ -598,7 +598,7 @@
toff = offs;
if (type == enum_type_struct) {
PMC *nested = VTABLE_getprop(interp, type_pmc,
- string_from_cstring(interp, "_struct", 0));
+ string_from_literal(interp, "_struct"));
size = PMC_int_val(nested);
}
else
=== src/pmc_freeze.c
==================================================================
--- src/pmc_freeze.c (revision 21001)
+++ src/pmc_freeze.c (local)
@@ -1352,9 +1352,9 @@
{
INTVAL len;
if (!PMC_IS_NULL(pmc) && (VTABLE_does(interp, pmc,
- string_from_cstring(interp, "array", 0)) ||
+ string_from_literal(interp, "array")) ||
VTABLE_does(interp, pmc,
- string_from_cstring(interp, "hash", 0)))) {
+ string_from_literal(interp, "hash")))) {
const INTVAL items = VTABLE_elements(interp, pmc);
/*
* TODO check e.g. first item of aggregate and estimate size
=== src/sub.c
==================================================================
--- src/sub.c (revision 21001)
+++ src/sub.c (local)
@@ -310,7 +310,7 @@
/* set the namespace name and fullname of the sub */
if (PMC_IS_NULL(sub->namespace_name)) {
- info->nsname = string_from_cstring(interp, "", 0);
+ info->nsname = string_from_literal(interp, "");
info->fullname = info->subname;
}
else {