{
using System;
+using System.Runtime.InteropServices;
[Serializable]
-[MonoTODO ("Fix serialization compatibility with MS.NET")]
+#if NET_2_0
+[ComVisible (true)]
+#endif
+[MonoTODO ("Serialization format not compatible with .NET")]
#if ECMA_COMPAT
internal
#else
private static readonly sbyte[] base64Values = {
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 00
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 10
- -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, 63, // 20
+ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, // 20
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, // 30
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, // 40
windows_code_page = UnicodeEncoding.UNICODE_CODE_PAGE;
}
+#if NET_2_0
+ [ComVisible (false)]
+ public override int GetHashCode ()
+ {
+ int basis = base.GetHashCode ();
+ return allowOptionals ? -basis : basis;
+ }
+
+ [ComVisible(false)]
+ public override bool Equals (object value)
+ {
+ UTF7Encoding e = value 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
// End of a base64 sequence.
if (prevIsPlus) {
++length;
- leftOverSize = 0;
}
+ leftOverSize = 0;
normal = true;
} else if (base64 [byteval] != -1) {
// Extra character in a base64 sequence.
} // class UTF7Encoder
+#if NET_2_0
+ // a bunch of practically missing implementations (but should just work)
+
+ [CLSCompliantAttribute (false)]
+ [ComVisible(false)]
+ public override unsafe int GetByteCount (char *chars, int count)
+ {
+ return base.GetByteCount (chars, count);
+ }
+
+ [ComVisible(false)]
+ public override int GetByteCount (string s)
+ {
+ return base.GetByteCount (s);
+ }
+
+ [ComVisible(false)]
+ [CLSCompliantAttribute (false)]
+ public override unsafe int GetBytes (char *chars, int charCount, byte* bytes, int byteCount)
+ {
+ return base.GetBytes (chars, charCount, bytes, byteCount);
+ }
+
+ [ComVisible(false)]
+ public override int GetBytes (string s, int charIndex, int charCount, byte [] bytes, int byteIndex)
+ {
+ return base.GetBytes (s, charIndex, charCount, bytes, byteIndex);
+ }
+
+ [ComVisible(false)]
+ [CLSCompliantAttribute (false)]
+ public override unsafe int GetCharCount (byte *bytes, int count)
+ {
+ return base.GetCharCount (bytes, count);
+ }
+
+ [ComVisible(false)]
+ [CLSCompliantAttribute (false)]
+ public override unsafe int GetChars (byte* bytes, int byteCount, char* chars, int charCount)
+ {
+ return base.GetChars (bytes, byteCount, chars, charCount);
+ }
+
+ [ComVisible(false)]
+ public override string GetString (byte [] bytes, int index, int count)
+ {
+ return base.GetString (bytes, index, count);
+ }
+
+#endif
+
}; // class UTF7Encoding
}; // namespace System.Text