updating to the latest module.
[mono.git] / mcs / class / corlib / System.Text / UTF7Encoding.cs
old mode 100644 (file)
new mode 100755 (executable)
index 376346b..d024829
@@ -28,12 +28,8 @@ namespace System.Text
 {
 
 using System;
-using System.Runtime.InteropServices;
 
 [Serializable]
-#if NET_2_0
-[ComVisible (true)]
-#endif
 [MonoTODO ("Fix serialization compatibility with MS.NET")]
 #if ECMA_COMPAT
 internal
@@ -109,24 +105,6 @@ class UTF7Encoding : Encoding
                windows_code_page = UnicodeEncoding.UNICODE_CODE_PAGE;
        }
 
-#if NET_2_0
-       public override int GetHashCode ()
-       {
-               int basis = base.GetHashCode ();
-               return allowOptionals ? -basis : basis;
-       }
-
-       public override bool Equals (object other)
-       {
-               UTF7Encoding e = other as UTF7Encoding;
-               if (e == null)
-                       return false;
-               return allowOptionals == e.allowOptionals &&
-                       EncoderFallback.Equals (e.EncoderFallback) &&
-                       DecoderFallback.Equals (e.DecoderFallback);
-       }
-#endif
-
        // Internal version of "GetByteCount" that can handle
        // a rolling state between calls.
        private static int InternalGetByteCount
@@ -479,7 +457,6 @@ class UTF7Encoding : Encoding
                int byteval, b64value;
                bool normal = ((leftOver & 0x01000000) == 0);
                bool prevIsPlus = ((leftOver & 0x02000000) != 0);
-               bool afterHighSurrogate = ((leftOver & 0x04000000) != 0);
                int leftOverSize = ((leftOver >> 16) & 0xFF);
                int leftOverBits = (leftOver & 0xFFFF);
                sbyte[] base64 = base64Values;
@@ -492,9 +469,6 @@ class UTF7Encoding : Encoding
                                        if (posn >= charLength) {
                                                throw new ArgumentException (_("Arg_InsufficientSpace"), "chars");
                                        }
-                                       if (afterHighSurrogate) {
-                                               throw new ArgumentException (_("Arg_InvalidUTF7"), "chars");
-                                       }
                                        chars[posn++] = (char)byteval;
                                } else {
                                        // Start of a base64-encoded character.
@@ -509,9 +483,6 @@ class UTF7Encoding : Encoding
                                                if (posn >= charLength) {
                                                        throw new ArgumentException (_("Arg_InsufficientSpace"), "chars");
                                                }
-                                               if (afterHighSurrogate) {
-                                                       throw new ArgumentException (_("Arg_InvalidUTF7"), "chars");
-                                               }
                                                chars[posn++] = '+';
                                        }
                                        // RFC1642 Rule #2
@@ -532,26 +503,13 @@ class UTF7Encoding : Encoding
                                                        throw new ArgumentException (_("Arg_InsufficientSpace"), "chars");
                                                }
                                                leftOverSize -= 16;
-                                               char nextChar = (char)(leftOverBits >> leftOverSize);
-                                               if ((nextChar & 0xFC00) == 0xD800) {
-                                                 afterHighSurrogate = true;
-                                               }
-                                               else if ((nextChar & 0xFC00) == 0xDC00) {
-                                                       if (!afterHighSurrogate) {
-                                                               throw new ArgumentException (_("Arg_InvalidUTF7"), "chars");
-                                                       }
-                                                       afterHighSurrogate = false;
-                                               }
-                                               chars[posn++] = nextChar;
+                                               chars[posn++] = (char)(leftOverBits >> leftOverSize);
                                                leftOverBits &= ((1 << leftOverSize) - 1);
                                        }
                                } else {
                                        if (posn >= charLength) {
                                                throw new ArgumentException (_("Arg_InsufficientSpace"), "chars");
                                        }
-                                       if (afterHighSurrogate) {
-                                               throw new ArgumentException (_("Arg_InvalidUTF7"), "chars");
-                                       }
                                        chars[posn++] = (char)byteval;
                                        normal = true;
                                        leftOverSize = 0;
@@ -562,8 +520,7 @@ class UTF7Encoding : Encoding
                }
                leftOver = (leftOverBits | (leftOverSize << 16) |
                                    (normal ? 0 : 0x01000000) |
-                                   (prevIsPlus ? 0x02000000 : 0) |
-                                   (afterHighSurrogate ? 0x04000000 : 0));
+                                   (prevIsPlus ? 0x02000000 : 0));
 
                // Return the final length to the caller.
                return posn - charIndex;
@@ -574,11 +531,7 @@ class UTF7Encoding : Encoding
                                                                 char[] chars, int charIndex)
        {
                int leftOver = 0;
-               int amount = InternalGetChars (bytes, byteIndex, byteCount, chars, charIndex, ref leftOver);
-               if ((leftOver & 0x04000000) != 0) {
-                       throw new ArgumentException (_("Arg_InvalidUTF7"), "chars");
-               }
-               return amount;
+               return InternalGetChars (bytes, byteIndex, byteCount, chars, charIndex, ref leftOver);
        }
 
        // Get the maximum number of bytes needed to encode a
@@ -672,50 +625,6 @@ class UTF7Encoding : Encoding
 
        } // class UTF7Encoder
 
-#if NET_2_0
-       // a bunch of practically missing implementations (but should just work)
-
-       [CLSCompliantAttribute (false)]
-       public override unsafe int GetByteCount (char *chars, int count)
-       {
-               return base.GetByteCount (chars, count);
-       }
-
-       public override int GetByteCount (string s)
-       {
-               return base.GetByteCount (s);
-       }
-
-       [CLSCompliantAttribute (false)]
-       public override unsafe int GetBytes (char *chars, int charCount, byte* bytes, int byteCount)
-       {
-               return base.GetBytes (chars, charCount, bytes, byteCount);
-       }
-
-       public override int GetBytes (string s, int charIndex, int charCount, byte [] bytes, int byteIndex)
-       {
-               return base.GetBytes (s, charIndex, charCount, bytes, byteIndex);
-       }
-
-       [CLSCompliantAttribute (false)]
-       public override unsafe int GetCharCount (byte *bytes, int count)
-       {
-               return base.GetCharCount (bytes, count);
-       }
-
-       [CLSCompliantAttribute (false)]
-       public override unsafe int GetChars (byte* bytes, int byteCount, char* chars, int charCount)
-       {
-               return base.GetChars (bytes, byteCount, chars, charCount);
-       }
-
-       public override string GetString (byte [] bytes, int index, int count)
-       {
-               return base.GetString (bytes, index, count);
-       }
-
-#endif
-
 }; // class UTF7Encoding
 
 }; // namespace System.Text