Exemplo n.º 1
0
        public uint AddBlob(byte [] data)
        {
            if (data == null || data.Length == 0)
            {
                return(0);
            }

            object cached = m_blobCache [data];

            if (cached != null)
            {
                return((uint)cached);
            }

            uint pointer = (uint)m_blobWriter.BaseStream.Position;

            m_blobCache [data] = pointer;
            Utilities.WriteCompressedInteger(m_blobWriter, data.Length);
            m_blobWriter.Write(data);
            return(pointer);
        }
Exemplo n.º 2
0
        public uint AddUserString(string str)
        {
            if (str == null)
            {
                return(0);
            }

            if (m_usCache.Contains(str))
            {
                return((uint)m_usCache [str]);
            }

            uint pointer = (uint)m_usWriter.BaseStream.Position;

            m_usCache [str] = pointer;
            byte [] us = Encoding.Unicode.GetBytes(str);
            Utilities.WriteCompressedInteger(m_usWriter, us.Length + 1);
            m_usWriter.Write(us);
            m_usWriter.Write((byte)(RequiresSpecialHandling(us) ? 1 : 0));
            return(pointer);
        }
Exemplo n.º 3
0
        public uint AddBlob(byte [] data)
        {
            if (data == null || data.Length == 0)
            {
                return(0);
            }

            // using CompactFramework compatible version of
            // Convert.ToBase64String
            string key = Convert.ToBase64String(data, 0, data.Length);

            if (m_blobCache.Contains(key))
            {
                return((uint)m_blobCache [key]);
            }

            uint pointer = (uint)m_blobWriter.BaseStream.Position;

            m_blobCache [key] = pointer;
            Utilities.WriteCompressedInteger(m_blobWriter, data.Length);
            m_blobWriter.Write(data);
            return(pointer);
        }