[svn:parrot] r48335 - branches/unshared_buffers/src/string/encoding

darbelo at svn.parrot.org darbelo at svn.parrot.org
Fri Aug 6 21:17:27 UTC 2010


Author: darbelo
Date: Fri Aug  6 21:17:27 2010
New Revision: 48335
URL: https://trac.parrot.org/parrot/changeset/48335

Log:
Disable shared buffers in substring operations.

Modified:
   branches/unshared_buffers/src/string/encoding/fixed_8.c
   branches/unshared_buffers/src/string/encoding/ucs2.c
   branches/unshared_buffers/src/string/encoding/utf16.c
   branches/unshared_buffers/src/string/encoding/utf8.c

Modified: branches/unshared_buffers/src/string/encoding/fixed_8.c
==============================================================================
--- branches/unshared_buffers/src/string/encoding/fixed_8.c	Fri Aug  6 21:06:40 2010	(r48334)
+++ branches/unshared_buffers/src/string/encoding/fixed_8.c	Fri Aug  6 21:17:27 2010	(r48335)
@@ -320,18 +320,9 @@
 get_bytes(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(get_bytes)
-    STRING * const return_string = Parrot_str_copy(interp, src);
 
-    return_string->encoding = src->encoding;
-    return_string->charset = src->charset;
-
-    return_string->strstart = (char *)return_string->strstart + offset ;
-    return_string->bufused = count;
-
-    return_string->strlen = count;
-    return_string->hashval = 0;
-
-    return return_string;
+    return Parrot_str_new_init(interp, src->strstart + offset, count,
+        src->encoding, src->charset, PObj_get_FLAGS(src));
 }
 
 
@@ -527,4 +518,3 @@
  * End:
  * vim: expandtab shiftwidth=4:
  */
-

Modified: branches/unshared_buffers/src/string/encoding/ucs2.c
==============================================================================
--- branches/unshared_buffers/src/string/encoding/ucs2.c	Fri Aug  6 21:06:40 2010	(r48334)
+++ branches/unshared_buffers/src/string/encoding/ucs2.c	Fri Aug  6 21:17:27 2010	(r48335)
@@ -313,27 +313,15 @@
 get_codepoints(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(get_codepoints)
-    STRING * const return_string = Parrot_str_copy(interp, src);
-
 #if PARROT_HAS_ICU
-    return_string->strstart = (char*)src->strstart + offset * sizeof (UChar);
-    return_string->bufused = count * sizeof (UChar);
+    return Parrot_str_new_init(interp, src->strstart + offset * sizeof (UChar),
+        count * sizeof (UChar), src->encoding, src->charset, PObj_get_FLAGS(src));
 #else
-    {
-        String_iter iter;
-        UINTVAL start;
-
-        iter_init(interp, src, &iter);
-        iter.set_position(interp, &iter, offset);
-        start = iter.bytepos;
-        return_string->strstart = (char *)return_string->strstart + start;
-        iter.set_position(interp, &iter, offset + count);
-        return_string->bufused = iter.bytepos - start;
-    }
+    UNUSED(src);
+    UNUSED(offset);
+    UNUSED(count);
+    no_ICU_lib(interp);
 #endif
-    return_string->strlen = count;
-    return_string->hashval = 0;
-    return return_string;
 }
 
 /*

Modified: branches/unshared_buffers/src/string/encoding/utf16.c
==============================================================================
--- branches/unshared_buffers/src/string/encoding/utf16.c	Fri Aug  6 21:06:40 2010	(r48334)
+++ branches/unshared_buffers/src/string/encoding/utf16.c	Fri Aug  6 21:17:27 2010	(r48335)
@@ -379,17 +379,14 @@
     ASSERT_ARGS(get_codepoints)
     String_iter iter;
     UINTVAL start;
-    STRING * const return_string = Parrot_str_copy(interp, src);
 
     iter_init(interp, src, &iter);
     iter.set_position(interp, &iter, offset);
     start = iter.bytepos;
-    return_string->strstart = (char *)return_string->strstart + start ;
     iter.set_position(interp, &iter, offset + count);
-    return_string->bufused = iter.bytepos - start;
-    return_string->strlen = count;
-    return_string->hashval = 0;
-    return return_string;
+
+    return Parrot_str_new_init(interp, src->strstart + start, iter.bytepos - start,
+        src->encoding, src->charset, PObj_get_FLAGS(src));
 }
 
 

Modified: branches/unshared_buffers/src/string/encoding/utf8.c
==============================================================================
--- branches/unshared_buffers/src/string/encoding/utf8.c	Fri Aug  6 21:06:40 2010	(r48334)
+++ branches/unshared_buffers/src/string/encoding/utf8.c	Fri Aug  6 21:17:27 2010	(r48335)
@@ -678,8 +678,6 @@
 get_codepoints(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(get_codepoints)
-
-    STRING * const return_string = Parrot_str_copy(interp, src);
     String_iter    iter;
     UINTVAL        start;
 
@@ -689,16 +687,12 @@
         iter.set_position(interp, &iter, offset);
 
     start                   = iter.bytepos;
-    return_string->strstart = (char *)return_string->strstart + start;
 
     if (count)
         iter.set_position(interp, &iter, offset + count);
 
-    return_string->bufused  = iter.bytepos - start;
-    return_string->strlen   = count;
-    return_string->hashval  = 0;
-
-    return return_string;
+    return Parrot_str_new_init(interp, src->strstart + start, iter.bytepos - start, 
+        src->encoding, src->charset, PObj_get_FLAGS(src));
 }
 
 /*
@@ -717,15 +711,8 @@
 get_bytes(PARROT_INTERP, ARGIN(const STRING *src), UINTVAL offset, UINTVAL count)
 {
     ASSERT_ARGS(get_bytes)
-    STRING * const return_string = Parrot_str_copy(interp, src);
-
-    return_string->strstart = (char *)return_string->strstart + offset ;
-    return_string->bufused = count;
-
-    return_string->strlen = count;
-    return_string->hashval = 0;
-
-    return return_string;
+    return Parrot_str_new_init(interp, src->strstart + offset, count,
+        src->encoding, src->charset, PObj_get_FLAGS(src));
 }
 
 


More information about the parrot-commits mailing list