Exemplo n.º 1
0
        internal static string GetString(string key, params object[] args)
        {
            if (ResourceStrings.SystemResMgr == null)
            {
                ResourceStrings.InitResourceManager();
            }
            object resMgrLockObject;

            Monitor.Enter(resMgrLockObject = ResourceStrings.ResMgrLockObject);
            string @string;

            try
            {
                @string = ResourceStrings.SystemResMgr.GetString(key, null);
            }
            finally
            {
                Monitor.Exit(resMgrLockObject);
            }
            if (args == null || args.Length <= 0)
            {
                return(@string);
            }
            for (int i = 0; i < args.Length; i++)
            {
                string text = args[i] as string;
                if (text != null && text.Length > 1024)
                {
                    args[i] = text.Substring(0, 1021) + "...";
                }
            }
            return(string.Format(CultureInfo.CurrentCulture, @string, args));
        }
Exemplo n.º 2
0
 public override int GetMaxCharCount(int byteCount)
 {
     if (byteCount < 0 || byteCount > 1073741823)
     {
         throw new ArgumentOutOfRangeException("byteCount", ResourceStrings.GetString("ValueMustBeInRange", new object[]
         {
             0,
             1073741823
         }));
     }
     return(byteCount * 2);
 }
Exemplo n.º 3
0
 public override int GetMaxByteCount(int charCount)
 {
     if (charCount < 0)
     {
         throw new ArgumentOutOfRangeException("charCount", ResourceStrings.GetString("ValueMustBeNonNegative"));
     }
     if (charCount % 2 != 0)
     {
         throw new FormatException(ResourceStrings.GetString("XmlInvalidBinHexLength", new object[]
         {
             charCount.ToString(NumberFormatInfo.CurrentInfo)
         }));
     }
     return(charCount / 2);
 }
Exemplo n.º 4
0
        internal static string GetString(string key)
        {
            if (ResourceStrings.SystemResMgr == null)
            {
                ResourceStrings.InitResourceManager();
            }
            object resMgrLockObject;

            Monitor.Enter(resMgrLockObject = ResourceStrings.ResMgrLockObject);
            string @string;

            try
            {
                @string = ResourceStrings.SystemResMgr.GetString(key, null);
            }
            finally
            {
                Monitor.Exit(resMgrLockObject);
            }
            return(@string);
        }
Exemplo n.º 5
0
        public unsafe override int GetChars(byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex)
        {
            if (bytes == null)
            {
                throw new ArgumentNullException("bytes");
            }
            if (byteIndex < 0)
            {
                throw new ArgumentOutOfRangeException("byteIndex", ResourceStrings.GetString("ValueMustBeNonNegative"));
            }
            if (byteIndex > bytes.Length)
            {
                throw new ArgumentOutOfRangeException("byteIndex", ResourceStrings.GetString("OffsetExceedsBufferSize", new object[]
                {
                    bytes.Length
                }));
            }
            if (byteCount < 0)
            {
                throw new ArgumentOutOfRangeException("byteCount", ResourceStrings.GetString("ValueMustBeNonNegative"));
            }
            if (byteCount > bytes.Length - byteIndex)
            {
                throw new ArgumentOutOfRangeException("byteCount", ResourceStrings.GetString("SizeExceedsRemainingBufferSpace", new object[]
                {
                    bytes.Length - byteIndex
                }));
            }
            int charCount = this.GetCharCount(bytes, byteIndex, byteCount);

            if (chars == null)
            {
                throw new ArgumentNullException("chars");
            }
            if (charIndex < 0)
            {
                throw new ArgumentOutOfRangeException("charIndex", ResourceStrings.GetString("ValueMustBeNonNegative"));
            }
            if (charIndex > chars.Length)
            {
                throw new ArgumentOutOfRangeException("charIndex", ResourceStrings.GetString("OffsetExceedsBufferSize", new object[]
                {
                    chars.Length
                }));
            }
            if (charCount < 0 || charCount > chars.Length - charIndex)
            {
                throw new ArgumentException(ResourceStrings.GetString("XmlArrayTooSmall"), "chars");
            }
            if (byteCount > 0)
            {
                fixed(char *ptr = BinHexEncoding.val2char)
                {
                    char *ptr2 = ptr;

                    fixed(byte *ptr3 = &bytes[byteIndex])
                    {
                        fixed(char *ptr4 = &chars[charIndex])
                        {
                            char *ptr5 = ptr4;
                            byte *ptr6 = ptr3;
                            byte *ptr7 = ptr3 + (IntPtr)byteCount / 1;

                            while (ptr6 < ptr7)
                            {
                                *ptr5 = ptr2[(IntPtr)(*ptr6 >> 4)];
                                ptr5[(IntPtr)2 / 2] = *(ptr2 + (IntPtr)(*ptr6 & 15));
                                ptr6 += (IntPtr)1 / 1;
                                ptr5 += (IntPtr)4 / 2;
                            }
                        }
                    }
                }
            }
            return(charCount);
        }
Exemplo n.º 6
0
        public unsafe override int GetBytes(char[] chars, int charIndex, int charCount, byte[] bytes, int byteIndex)
        {
            if (chars == null)
            {
                throw new ArgumentNullException("chars");
            }
            if (charIndex < 0)
            {
                throw new ArgumentOutOfRangeException("charIndex", ResourceStrings.GetString("ValueMustBeNonNegative"));
            }
            if (charIndex > chars.Length)
            {
                throw new ArgumentOutOfRangeException("charIndex", ResourceStrings.GetString("OffsetExceedsBufferSize", new object[]
                {
                    chars.Length
                }));
            }
            if (charCount < 0)
            {
                throw new ArgumentOutOfRangeException("charCount", ResourceStrings.GetString("ValueMustBeNonNegative"));
            }
            if (charCount > chars.Length - charIndex)
            {
                throw new ArgumentOutOfRangeException("charCount", ResourceStrings.GetString("SizeExceedsRemainingBufferSpace", new object[]
                {
                    chars.Length - charIndex
                }));
            }
            if (bytes == null)
            {
                throw new ArgumentNullException("bytes");
            }
            if (byteIndex < 0)
            {
                throw new ArgumentOutOfRangeException("byteIndex", ResourceStrings.GetString("ValueMustBeNonNegative"));
            }
            if (byteIndex > bytes.Length)
            {
                throw new ArgumentOutOfRangeException("byteIndex", ResourceStrings.GetString("OffsetExceedsBufferSize", new object[]
                {
                    bytes.Length
                }));
            }
            int byteCount = this.GetByteCount(chars, charIndex, charCount);

            if (byteCount < 0 || byteCount > bytes.Length - byteIndex)
            {
                throw new ArgumentException(ResourceStrings.GetString("XmlArrayTooSmall"), "bytes");
            }
            if (charCount > 0)
            {
                fixed(byte *ptr = BinHexEncoding.char2val)
                {
                    fixed(byte *ptr2 = &bytes[byteIndex])
                    {
                        fixed(char *ptr3 = &chars[charIndex])
                        {
                            char *ptr4 = ptr3;
                            char *ptr5 = ptr3 + (IntPtr)charCount;
                            byte *ptr6 = ptr2;

                            while (ptr4 < ptr5)
                            {
                                char c  = *ptr4;
                                char c2 = ptr4[(IntPtr)2 / 2];
                                if ((c | c2) >= '\u0080')
                                {
                                    throw new FormatException(ResourceStrings.GetString("XmlInvalidBinHexSequence", new object[]
                                    {
                                        new string(ptr4, 0, 2),
                                        charIndex + (ptr4 - ptr3 / 2) / 2 / 2L
                                    }));
                                }
                                byte b  = ptr[(IntPtr)((byte)c) / 1];
                                byte b2 = ptr[(IntPtr)((byte)c2) / 1];
                                if ((b | b2) == 255)
                                {
                                    throw new FormatException(ResourceStrings.GetString("XmlInvalidBinHexSequence", new object[]
                                    {
                                        new string(ptr4, 0, 2),
                                        charIndex + (ptr4 - ptr3 / 2) / 2 / 2L
                                    }));
                                }
                                *ptr6 = (byte)(((int)b << 4) + (int)b2);
                                ptr4 += (IntPtr)4 / 2;
                                ptr6 += (IntPtr)1 / 1;
                            }
                        }
                    }
                }
            }
            return(byteCount);
        }