X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2Fcorlib%2FSystem.Text%2FUTF7Encoding.cs;h=d024829fc8b672a956817733a3150fad9f159fef;hb=ff228e1c801bda9666b6edab3ee962e05edcf480;hp=376346b73aa25259843bb397557a8d1bd9e1eb7f;hpb=04d1b4116331e3813b8f75304f714a5d61ba1214;p=mono.git diff --git a/mcs/class/corlib/System.Text/UTF7Encoding.cs b/mcs/class/corlib/System.Text/UTF7Encoding.cs old mode 100644 new mode 100755 index 376346b73aa..d024829fc8b --- a/mcs/class/corlib/System.Text/UTF7Encoding.cs +++ b/mcs/class/corlib/System.Text/UTF7Encoding.cs @@ -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