using System;
+[Serializable]
internal class Latin1Encoding : Encoding
{
// Magic number used by Windows for the ISO Latin1 code page.
internal const int ISOLATIN_CODE_PAGE = 28591;
// Constructor.
- public Latin1Encoding()
- : base(ISOLATIN_CODE_PAGE)
- {
- // Nothing to do here.
- }
+ public Latin1Encoding () : base (ISOLATIN_CODE_PAGE)
+ {
+ // Nothing to do here.
+ }
// Get the number of bytes needed to encode a character buffer.
- public override int GetByteCount(char[] chars, int index, int count)
- {
- if(chars == null)
- {
- throw new ArgumentNullException("chars");
- }
- if(index < 0 || index > chars.Length)
- {
- throw new ArgumentOutOfRangeException
- ("index", _("ArgRange_Array"));
- }
- if(count < 0 || count > (chars.Length - index))
- {
- throw new ArgumentOutOfRangeException
- ("count", _("ArgRange_Array"));
- }
- return count;
- }
+ public override int GetByteCount (char[] chars, int index, int count)
+ {
+ if (chars == null) {
+ throw new ArgumentNullException ("chars");
+ }
+ if (index < 0 || index > chars.Length) {
+ throw new ArgumentOutOfRangeException ("index", _("ArgRange_Array"));
+ }
+ if (count < 0 || count > (chars.Length - index)) {
+ throw new ArgumentOutOfRangeException ("count", _("ArgRange_Array"));
+ }
+ return count;
+ }
// Convenience wrappers for "GetByteCount".
- public override int GetByteCount(String s)
- {
- if(s == null)
- {
- throw new ArgumentNullException("s");
- }
- return s.Length;
- }
+ public override int GetByteCount (String s)
+ {
+ if (s == null) {
+ throw new ArgumentNullException ("s");
+ }
+ return s.Length;
+ }
// Get the bytes that result from encoding a character buffer.
- public override int GetBytes(char[] chars, int charIndex, int charCount,
+ public override int GetBytes (char[] chars, int charIndex, int charCount,
byte[] bytes, int byteIndex)
- {
- if(chars == null)
- {
- throw new ArgumentNullException("chars");
- }
- if(bytes == null)
- {
- throw new ArgumentNullException("bytes");
- }
- if(charIndex < 0 || charIndex > chars.Length)
- {
- throw new ArgumentOutOfRangeException
- ("charIndex", _("ArgRange_Array"));
- }
- if(charCount < 0 || charCount > (chars.Length - charIndex))
- {
- throw new ArgumentOutOfRangeException
- ("charCount", _("ArgRange_Array"));
- }
- if(byteIndex < 0 || byteIndex > bytes.Length)
- {
- throw new ArgumentOutOfRangeException
- ("byteIndex", _("ArgRange_Array"));
- }
- if((bytes.Length - byteIndex) < charCount)
- {
- throw new ArgumentException
- (_("Arg_InsufficientSpace"));
- }
- int count = charCount;
- char ch;
- while(count-- > 0)
- {
- ch = chars[charIndex++];
- if(ch < (char)0x0100)
- {
- bytes[byteIndex++] = (byte)ch;
- }
- else if(ch >= '\uFF01' && ch <= '\uFF5E')
- {
- bytes[byteIndex++] = (byte)(ch - 0xFEE0);
- }
- else
- {
- bytes[byteIndex++] = (byte)'?';
- }
- }
- return charCount;
+ {
+ if (chars == null) {
+ throw new ArgumentNullException ("chars");
+ }
+ if (bytes == null) {
+ throw new ArgumentNullException ("bytes");
+ }
+ if (charIndex < 0 || charIndex > chars.Length) {
+ throw new ArgumentOutOfRangeException ("charIndex", _("ArgRange_Array"));
+ }
+ if (charCount < 0 || charCount > (chars.Length - charIndex)) {
+ throw new ArgumentOutOfRangeException ("charCount", _("ArgRange_Array"));
+ }
+ if (byteIndex < 0 || byteIndex > bytes.Length) {
+ throw new ArgumentOutOfRangeException ("byteIndex", _("ArgRange_Array"));
+ }
+ if ((bytes.Length - byteIndex) < charCount) {
+ throw new ArgumentException (_("Arg_InsufficientSpace"));
+ }
+ int count = charCount;
+ char ch;
+ while (count-- > 0) {
+ ch = chars [charIndex++];
+ if (ch < (char)0x0100) {
+ bytes [byteIndex++] = (byte)ch;
+ } else if (ch >= '\uFF01' && ch <= '\uFF5E') {
+ bytes [byteIndex++] = (byte)(ch - 0xFEE0);
+ } else {
+ bytes [byteIndex++] = (byte)'?';
}
+ }
+ return charCount;
+ }
// Convenience wrappers for "GetBytes".
- public override int GetBytes(String s, int charIndex, int charCount,
+ public override int GetBytes (String s, int charIndex, int charCount,
byte[] bytes, int byteIndex)
- {
- if(s == null)
- {
- throw new ArgumentNullException("s");
- }
- if(bytes == null)
- {
- throw new ArgumentNullException("bytes");
- }
- if(charIndex < 0 || charIndex > s.Length)
- {
- throw new ArgumentOutOfRangeException
- ("charIndex", _("ArgRange_StringIndex"));
- }
- if(charCount < 0 || charCount > (s.Length - charIndex))
- {
- throw new ArgumentOutOfRangeException
- ("charCount", _("ArgRange_StringRange"));
- }
- if(byteIndex < 0 || byteIndex > bytes.Length)
- {
- throw new ArgumentOutOfRangeException
- ("byteIndex", _("ArgRange_Array"));
- }
- if((bytes.Length - byteIndex) < charCount)
- {
- throw new ArgumentException(_("Arg_InsufficientSpace"));
- }
- int count = charCount;
- char ch;
- while(count-- > 0)
- {
- ch = s[charIndex++];
- if(ch < (char)0x0100)
- {
- bytes[byteIndex++] = (byte)ch;
- }
- else if(ch >= '\uFF01' && ch <= '\uFF5E')
- {
- bytes[byteIndex++] = (byte)(ch - 0xFEE0);
- }
- else
- {
- bytes[byteIndex++] = (byte)'?';
- }
- }
- return charCount;
+ {
+ if (s == null) {
+ throw new ArgumentNullException ("s");
+ }
+ if (bytes == null) {
+ throw new ArgumentNullException ("bytes");
+ }
+ if (charIndex < 0 || charIndex > s.Length) {
+ throw new ArgumentOutOfRangeException ("charIndex", _("ArgRange_StringIndex"));
+ }
+ if (charCount < 0 || charCount > (s.Length - charIndex)) {
+ throw new ArgumentOutOfRangeException ("charCount", _("ArgRange_StringRange"));
+ }
+ if (byteIndex < 0 || byteIndex > bytes.Length) {
+ throw new ArgumentOutOfRangeException ("byteIndex", _("ArgRange_Array"));
+ }
+ if ((bytes.Length - byteIndex) < charCount) {
+ throw new ArgumentException (_("Arg_InsufficientSpace"));
+ }
+ int count = charCount;
+ char ch;
+ while (count-- > 0) {
+ ch = s [charIndex++];
+ if (ch < (char)0x0100) {
+ bytes [byteIndex++] = (byte)ch;
+ } else if (ch >= '\uFF01' && ch <= '\uFF5E') {
+ bytes [byteIndex++] = (byte)(ch - 0xFEE0);
+ } else {
+ bytes [byteIndex++] = (byte)'?';
}
+ }
+ return charCount;
+ }
// Get the number of characters needed to decode a byte buffer.
- public override int GetCharCount(byte[] bytes, int index, int count)
- {
- if(bytes == null)
- {
- throw new ArgumentNullException("bytes");
- }
- if(index < 0 || index > bytes.Length)
- {
- throw new ArgumentOutOfRangeException
- ("index", _("ArgRange_Array"));
- }
- if(count < 0 || count > (bytes.Length - index))
- {
- throw new ArgumentOutOfRangeException
- ("count", _("ArgRange_Array"));
- }
- return count;
- }
+ public override int GetCharCount (byte[] bytes, int index, int count)
+ {
+ if (bytes == null) {
+ throw new ArgumentNullException ("bytes");
+ }
+ if (index < 0 || index > bytes.Length) {
+ throw new ArgumentOutOfRangeException ("index", _("ArgRange_Array"));
+ }
+ if (count < 0 || count > (bytes.Length - index)) {
+ throw new ArgumentOutOfRangeException ("count", _("ArgRange_Array"));
+ }
+ return count;
+ }
// Get the characters that result from decoding a byte buffer.
- public override int GetChars(byte[] bytes, int byteIndex, int byteCount,
+ public override int GetChars (byte[] bytes, int byteIndex, int byteCount,
char[] chars, int charIndex)
- {
- if(bytes == null)
- {
- throw new ArgumentNullException("bytes");
- }
- if(chars == null)
- {
- throw new ArgumentNullException("chars");
- }
- if(byteIndex < 0 || byteIndex > bytes.Length)
- {
- throw new ArgumentOutOfRangeException
- ("byteIndex", _("ArgRange_Array"));
- }
- if(byteCount < 0 || byteCount > (bytes.Length - byteIndex))
- {
- throw new ArgumentOutOfRangeException
- ("byteCount", _("ArgRange_Array"));
- }
- if(charIndex < 0 || charIndex > chars.Length)
- {
- throw new ArgumentOutOfRangeException
- ("charIndex", _("ArgRange_Array"));
- }
- if((chars.Length - charIndex) < byteCount)
- {
- throw new ArgumentException(_("Arg_InsufficientSpace"));
- }
- int count = byteCount;
- while(count-- > 0)
- {
- chars[charIndex++] = (char)(bytes[byteIndex++]);
- }
- return byteCount;
- }
+ {
+ if (bytes == null) {
+ throw new ArgumentNullException ("bytes");
+ }
+ if (chars == null) {
+ throw new ArgumentNullException ("chars");
+ }
+ if (byteIndex < 0 || byteIndex > bytes.Length) {
+ throw new ArgumentOutOfRangeException ("byteIndex", _("ArgRange_Array"));
+ }
+ if (byteCount < 0 || byteCount > (bytes.Length - byteIndex)) {
+ throw new ArgumentOutOfRangeException ("byteCount", _("ArgRange_Array"));
+ }
+ if (charIndex < 0 || charIndex > chars.Length) {
+ throw new ArgumentOutOfRangeException ("charIndex", _("ArgRange_Array"));
+ }
+ if ((chars.Length - charIndex) < byteCount) {
+ throw new ArgumentException (_("Arg_InsufficientSpace"));
+ }
+ int count = byteCount;
+ while (count-- > 0) {
+ chars [charIndex++] = (char)(bytes [byteIndex++]);
+ }
+ return byteCount;
+ }
// Get the maximum number of bytes needed to encode a
// specified number of characters.
- public override int GetMaxByteCount(int charCount)
- {
- if(charCount < 0)
- {
- throw new ArgumentOutOfRangeException
- ("charCount", _("ArgRange_NonNegative"));
- }
- return charCount;
- }
+ public override int GetMaxByteCount (int charCount)
+ {
+ if (charCount < 0) {
+ throw new ArgumentOutOfRangeException ("charCount", _("ArgRange_NonNegative"));
+ }
+ return charCount;
+ }
// Get the maximum number of characters needed to decode a
// specified number of bytes.
- public override int GetMaxCharCount(int byteCount)
- {
- if(byteCount < 0)
- {
- throw new ArgumentOutOfRangeException
- ("byteCount", _("ArgRange_NonNegative"));
- }
- return byteCount;
- }
+ public override int GetMaxCharCount (int byteCount)
+ {
+ if (byteCount < 0) {
+ throw new ArgumentOutOfRangeException ("byteCount", _("ArgRange_NonNegative"));
+ }
+ return byteCount;
+ }
// Decode a buffer of bytes into a string.
- public override String GetString(byte[] bytes, int index, int count)
- {
- if(bytes == null)
- {
- throw new ArgumentNullException("bytes");
- }
- if(index < 0 || index > bytes.Length)
- {
- throw new ArgumentOutOfRangeException
- ("index", _("ArgRange_Array"));
- }
- if(count < 0 || count > (bytes.Length - index))
- {
- throw new ArgumentOutOfRangeException
- ("count", _("ArgRange_Array"));
- }
- /*String s = String.NewString(count);
- int posn = 0;
- while(count-- > 0)
- {
- s.SetChar(posn++, (char)(bytes[index++]));
- }
- return s;*/
- unsafe {
- fixed (byte *ss = &bytes [0]) {
- return new String ((sbyte*)ss, index, count);
- }
- }
+ public override String GetString (byte[] bytes, int index, int count)
+ {
+ if (bytes == null) {
+ throw new ArgumentNullException ("bytes");
+ }
+ if (index < 0 || index > bytes.Length) {
+ throw new ArgumentOutOfRangeException ("index", _("ArgRange_Array"));
+ }
+ if (count < 0 || count > (bytes.Length - index)) {
+ throw new ArgumentOutOfRangeException ("count", _("ArgRange_Array"));
+ }
+ if (count == 0)
+ return String.Empty;
+ unsafe {
+ fixed (byte *ss = &bytes [0]) {
+ return new String ((sbyte*)ss, index, count);
}
- public override String GetString(byte[] bytes)
- {
- if(bytes == null)
- {
- throw new ArgumentNullException("bytes");
- }
- int count = bytes.Length;
- /*int posn = 0;
- String s = String.NewString(count);
- while(count-- > 0)
- {
- s.SetChar(posn, (char)(bytes[posn]));
- ++posn;
- }
- return s;*/
- unsafe {
- fixed (byte *ss = &bytes [0]) {
- return new String ((sbyte*)ss, 0, count);
- }
- }
+ }
+ }
+ public override String GetString (byte[] bytes)
+ {
+ if (bytes == null) {
+ throw new ArgumentNullException ("bytes");
+ }
+ int count = bytes.Length;
+ if (count == 0)
+ return String.Empty;
+ unsafe {
+ fixed (byte *ss = &bytes [0]) {
+ return new String ((sbyte*)ss, 0, count);
}
+ }
+ }
#if !ECMA_COMPAT
// Get the mail body name for this encoding.
public override String BodyName
- {
- get
- {
- return "iso-8859-1";
- }
- }
+ {
+ get {
+ return "iso-8859-1";
+ }
+ }
// Get the human-readable name for this encoding.
public override String EncodingName
- {
- get
- {
- return "Western European (ISO)";
- }
- }
+ {
+ get {
+ return "Western European (ISO)";
+ }
+ }
// Get the mail agent header name for this encoding.
public override String HeaderName
- {
- get
- {
- return "iso-8859-1";
- }
- }
+ {
+ get {
+ return "iso-8859-1";
+ }
+ }
// Determine if this encoding can be displayed in a Web browser.
public override bool IsBrowserDisplay
- {
- get
- {
- return true;
- }
- }
+ {
+ get {
+ return true;
+ }
+ }
// Determine if this encoding can be saved from a Web browser.
public override bool IsBrowserSave
- {
- get
- {
- return true;
- }
- }
+ {
+ get {
+ return true;
+ }
+ }
// Determine if this encoding can be displayed in a mail/news agent.
public override bool IsMailNewsDisplay
- {
- get
- {
- return true;
- }
- }
+ {
+ get {
+ return true;
+ }
+ }
// Determine if this encoding can be saved from a mail/news agent.
public override bool IsMailNewsSave
- {
- get
- {
- return true;
- }
- }
+ {
+ get {
+ return true;
+ }
+ }
// Get the IANA-preferred Web name for this encoding.
public override String WebName
- {
- get
- {
- return "iso-8859-1";
- }
- }
+ {
+ get {
+ return "iso-8859-1";
+ }
+ }
#endif // !ECMA_COMPAT