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); }
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); }
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); }