Ticket #1367 (closed patch: fixed)
[patch]changed codestring.pmc to use GET_ATTR syntax and consting
Reported by: | jimmy | Owned by: | jkeenan |
---|---|---|---|
Priority: | normal | Milestone: | |
Component: | core | Version: | 1.8.0 |
Severity: | medium | Keywords: | |
Cc: | Language: | ||
Patch status: | applied | Platform: |
Description
changed codestring.pmc to use GET_ATTR syntax and consting
Index: src/pmc/codestring.pmc =================================================================== --- src/pmc/codestring.pmc (版本 42954) +++ src/pmc/codestring.pmc (工作副本) @@ -48,9 +48,8 @@ */ VTABLE void init() { - Parrot_CodeString_attributes * const attrs = PARROT_CODESTRING(SELF); SUPER(); - attrs->linepos = PMCNULL; + SET_ATTR_linepos(INTERP, SELF, PMCNULL); PObj_custom_mark_SET(SELF); } @@ -65,10 +64,15 @@ */ VTABLE void mark() { - Parrot_CodeString_attributes * const attrs = PARROT_CODESTRING(SELF); + PMC *linepos; + SUPER(); - if (!attrs) return; - Parrot_gc_mark_PMC_alive(INTERP, attrs->linepos); + if (!PMC_data(SELF)) + return; + + GET_ATTR_linepos(INTERP, SELF, linepos); + + Parrot_gc_mark_PMC_alive(INTERP, linepos); } /* @@ -97,10 +101,10 @@ */ METHOD emit(STRING *fmt, PMC *args :slurpy, PMC *hash :slurpy :named) { - STRING *percent = CONST_STRING(INTERP, "%"); - STRING *comma = CONST_STRING(INTERP, ","); - STRING *comma_space = CONST_STRING(INTERP, ", "); - STRING *newline = CONST_STRING(INTERP, "\n"); + STRING * const percent = CONST_STRING(INTERP, "%"); + STRING * const comma = CONST_STRING(INTERP, ","); + STRING * const comma_space = CONST_STRING(INTERP, ", "); + STRING * const newline = CONST_STRING(INTERP, "\n"); STRING *key, *repl, *S0, *S1; INTVAL pos = 0; INTVAL replen = 0; @@ -150,7 +154,7 @@ } /* Add a newline if necessary */ - if ('\n' != Parrot_str_indexed(INTERP, fmt, Parrot_str_byte_length(interp, fmt) - 1)) + if ('\n' != Parrot_str_indexed(INTERP, fmt, Parrot_str_byte_length(INTERP, fmt) - 1)) fmt = Parrot_str_concat(INTERP, fmt, newline, 0); GET_ATTR_str_val(INTERP, SELF, S1); @@ -174,8 +178,8 @@ METHOD lineof(INTVAL pos) { PMC *linepos; - INTVAL line; INTVAL count; + INTVAL line = 0; GET_ATTR_linepos(INTERP, SELF, linepos); @@ -216,7 +220,6 @@ * search for now, * perhaps a binary search would be better someday. */ count = VTABLE_elements(INTERP, linepos); - line = 0; while (line < count && VTABLE_get_integer_keyed_int(INTERP, linepos, line) <= pos) line++; @@ -269,9 +272,9 @@ */ METHOD escape(STRING *str) { - STRING *escaped_str = Parrot_str_escape(INTERP, str); - STRING *quote = CONST_STRING(INTERP, "\x22"); - STRING *x = CONST_STRING(INTERP, "\\x"); + STRING *escaped_str = Parrot_str_escape(INTERP, str); + STRING * const quote = CONST_STRING(INTERP, "\x22"); + STRING * const x = CONST_STRING(INTERP, "\\x"); INTVAL x_pos; INTVAL is_unicode = 0; UNUSED(SELF); @@ -283,17 +286,16 @@ if (x_pos != -1) { is_unicode = 1; } - else - { - STRING *u = CONST_STRING(INTERP, "\\u"); + else { + STRING * const u = CONST_STRING(INTERP, "\\u"); INTVAL u_pos = Parrot_str_find_index(INTERP, escaped_str, u, 0); if (u_pos != -1) is_unicode = 1; } if (is_unicode) { - STRING *unicode = CONST_STRING(INTERP, "unicode:"); - escaped_str = Parrot_str_concat(INTERP, unicode, escaped_str, 1); + STRING * const unicode = CONST_STRING(INTERP, "unicode:"); + escaped_str = Parrot_str_concat(INTERP, unicode, escaped_str, 1); } RETURN(STRING *escaped_str); @@ -313,17 +315,16 @@ METHOD charname_to_ord(STRING *name) { #if PARROT_HAS_ICU - UChar32 codepoint; - UErrorCode err = U_ZERO_ERROR; - char *cstr = Parrot_str_to_cstring(INTERP, name); - codepoint = u_charFromName(U_EXTENDED_CHAR_NAME, cstr, &err); + UErrorCode err = U_ZERO_ERROR; + char * const cstr = Parrot_str_to_cstring(INTERP, name); + UChar32 codepoint = u_charFromName(U_EXTENDED_CHAR_NAME, cstr, &err); Parrot_str_free_cstring(cstr); if (U_SUCCESS(err)) { RETURN(INTVAL codepoint); } RETURN(INTVAL -1); #else - Parrot_ex_throw_from_c_args(interp, NULL, EXCEPTION_LIBRARY_ERROR, + Parrot_ex_throw_from_c_args(INTERP, NULL, EXCEPTION_LIBRARY_ERROR, "no ICU lib loaded"); #endif } @@ -340,20 +341,19 @@ */ METHOD key(PMC *args :slurpy) { - STRING *open_bracket = CONST_STRING(INTERP, "["); - STRING *semi = CONST_STRING(INTERP, ";"); - STRING *close_bracket = CONST_STRING(INTERP, "]"); - STRING *s_array = CONST_STRING(INTERP, "array"); - STRING *prefix = NULL; - STRING *out = open_bracket; - INTVAL elements, index; + INTVAL index; + INTVAL elements = VTABLE_elements(INTERP, args); + STRING * const open_bracket = CONST_STRING(INTERP, "["); + STRING * const semi = CONST_STRING(INTERP, ";"); + STRING * const close_bracket = CONST_STRING(INTERP, "]"); + STRING * const s_array = CONST_STRING(INTERP, "array"); + STRING * prefix = NULL; + STRING * out = open_bracket; - elements = VTABLE_elements(INTERP, args); - for (index = 0; index < elements; index++) { PMC *P0 = VTABLE_get_pmc_keyed_int(INTERP, args, index); if (PMC_IS_NULL(P0)) continue; - else if (VTABLE_does(interp, P0, s_array)) { + else if (VTABLE_does(INTERP, P0, s_array)) { INTVAL elements2, index2; elements2 = VTABLE_elements(INTERP, P0); for (index2 = 0; index2 < elements2; index2++) {
Attachments
Change History
Note: See
TracTickets for help on using
tickets.