Merge jv
authorMerge Script
Wed, 06 Jul 2016 06:50:27 +0200
branchjv
changeset 20083 196706395bbc
parent 20082 ea1059c10bba (current diff)
parent 20072 b31532aea435 (diff)
child 20131 4118d61ddba0
Merge
ByteArray.st
Filename.st
String.st
--- a/ByteArray.st	Mon Jul 04 23:39:13 2016 +0100
+++ b/ByteArray.st	Wed Jul 06 06:50:27 2016 +0200
@@ -164,6 +164,9 @@
 ! !
 
 
+
+
+
 !ByteArray class methodsFor:'queries'!
 
 elementByteSize
@@ -198,6 +201,8 @@
     ^ 0
 ! !
 
+
+
 !ByteArray methodsFor:'Compatibility-Squeak'!
 
 bitXor:aByteArray
@@ -223,13 +228,6 @@
     "
 ! !
 
-!ByteArray methodsFor:'Compatibility-VW'!
-
-asByteString
-    "same as asString, for visualworks compatibility"
-    
-    ^ self asString
-! !
 
 !ByteArray methodsFor:'accessing'!
 
@@ -3106,6 +3104,7 @@
     "
 ! !
 
+
 !ByteArray methodsFor:'searching'!
 
 indexOf:aByte startingAt:start
@@ -3171,6 +3170,7 @@
     "
 ! !
 
+
 !ByteArray methodsFor:'testing'!
 
 isByteArray
@@ -3195,6 +3195,7 @@
     "Modified: 22.4.1996 / 12:55:30 / cg"
 ! !
 
+
 !ByteArray class methodsFor:'documentation'!
 
 version
--- a/Filename.st	Mon Jul 04 23:39:13 2016 +0100
+++ b/Filename.st	Wed Jul 06 06:50:27 2016 +0200
@@ -4190,12 +4190,12 @@
     |sepString sub|
 
     sub := subName asString.
+    nameString size == 0 ifTrue:[
+        ^ sub
+    ].
     sepString := self species separatorString.
-    nameString size == 0 ifTrue:[
-	^ sub
-    ].
     (nameString endsWith:sepString) ifTrue:[
-	^ nameString , sub
+        ^ nameString , sub
     ].
     ^ nameString , sepString , sub
 
--- a/String.st	Mon Jul 04 23:39:13 2016 +0100
+++ b/String.st	Wed Jul 06 06:50:27 2016 +0200
@@ -517,6 +517,7 @@
 
 
 
+
 !String class methodsFor:'queries'!
 
 defaultPlatformClass
@@ -541,26 +542,6 @@
 
 
 
-!String methodsFor:'Compatibility-VW5.4'!
-
-asByteString
-    ^ self asSingleByteString
-!
-
-asGUID
-    "return self as a GUID (or UUID if not present)"
-
-    GUID notNil ifTrue:[ ^ GUID fromString:self ].
-    ^ self asUUID
-
-    "
-     '{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}' asGUID
-    "
-
-    "Modified: / 12-01-2011 / 12:33:58 / cg"
-! !
-
-
 !String methodsFor:'accessing'!
 
 at:index
@@ -2781,15 +2762,15 @@
 
 !String methodsFor:'copying'!
 
-, aString
-    "return the concatenation of myself and the argument, aString as a String.
+, aStringOrCharacter
+    "return the concatenation of myself and the argument, aStringOrCharacter as a String.
      - reimplemented here for speed"
 
 %{
 #ifdef __SCHTEAM__
-    if ( aString.isStringLike() && self.isStringLike() ) {
+    if ( aStringOrCharacter.isStringLike() && self.isStringLike() ) {
         STString me = self.asSTString();
-        STString other = aString.asSTString();
+        STString other = aStringOrCharacter.asSTString();
         int myLength = me.characters.length;
         int otherLength = other.characters.length;
 
@@ -2802,22 +2783,36 @@
     /*
      * can do it here if both are Strings/Symbols:
      */
-    if (__qIsStringLike(self) && __isStringLike(aString)) {
-        OBJ newString;
+    if (__qIsStringLike(self)) {
+        char *cp1 = (char *) __stringVal(self);
         int l1 = __stringSize(self);
-        int l2 = __stringSize(aString);
-        int sz = OHDR_SIZE + l1 + l2 + 1;
-
+        int l2;
+        char *cp2;
+        int sz;
+        OBJ newString;
+        char character;
+
+        if (__isCharacter(aStringOrCharacter)) {
+            if (__intVal(__characterVal(aStringOrCharacter)) <= 0 || __intVal(__characterVal(aStringOrCharacter)) > 255)
+                goto out;
+
+            character = __intVal(__characterVal(aStringOrCharacter));
+            l2 = 1;
+            cp2 = &character;
+        } else if (__isStringLike(aStringOrCharacter)) {
+            l2 = __stringSize(aStringOrCharacter);
+            cp2 = (char *) __stringVal(aStringOrCharacter);
+        } else
+            goto out;
+
+        sz = OHDR_SIZE + l1 + l2 + 1;
         __qNew(newString, sz);      /* OBJECT ALLOCATION */
         if (newString != nil) {
-            char *cp1, *cp2;
             REGISTER unsigned char *dstp;
 
             __InstPtr(newString)->o_class = String;
             __qSTORE(newString, String);
             dstp = __stringVal(newString);
-            cp1 = (char *) __stringVal(self);
-            cp2 = (char *) __stringVal(aString);
 
 # ifdef bcopy4
             /* knowing that allocation is 4-byte aligned and
@@ -2868,13 +2863,15 @@
             RETURN ( newString );
         }
     }
+out:;
 #endif /* not SCHTEAM */
 %}.
-    ^ super , aString
+    ^ super , aStringOrCharacter
 
     "
-     'hello' , 'world' asImmutableString
-     'hello' , #world
+     'hello' , ' world' asImmutableString
+     'hello ' , #world
+     'hello ' , $w
      #[0 0 0 1] asString, #[0 0 0 2 0] asString
     "
 
@@ -3897,17 +3894,15 @@
     REGISTER OBJ slf, cls;
 
     slf = self;
-
     cls = __qClass(slf);
     if (cls == String) {
-	RETURN ( __mkSmallInteger(__stringSize(slf)) );
+        RETURN ( __mkSmallInteger(__stringSize(slf)) );
     }
     RETURN ( __mkSmallInteger(__stringSize(slf)
-			  - __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars))));
+                          - __OBJS2BYTES__(__intVal(__ClassInstPtr(cls)->c_ninstvars))));
 #endif
 %}.
     ^ super basicSize - 1
-
 !
 
 bitsPerCharacter