示例#1
0
        /// <summary>
        /// Load a Cry Binary XML buffer into memory and return the NodeRef for the root element
        /// </summary>
        /// <param name="filename">The byte buffer to read</param>
        /// <param name="result">Read result</param>
        /// <returns>The NodeRef of the root element or NULL</returns>
        public CryXmlNodeRef LoadFromBuffer(byte[] binBuffer, out EResult result)
        {
            m_errorDescription = "";
            result             = EResult.Error;

            UInt32 fileSize = ( UInt32 )binBuffer.Length;

            try {
                if (fileSize < CryXMLHeader.MySize( ))
                {
                    result = EResult.NotBinXml;
                    SetErrorDescription("File is not a binary XML file (file size is too small).");
                    return(null);
                }

                // read from binary file and map the content into the memory
                CryXmlBinContext pData = Create(binBuffer, out result);

                if (result != EResult.Success)
                {
                    return(null);                     // Well...
                }
                // Return first node
                CryXmlNodeRef n = pData.pBinaryNodes[0];
                return(n);
            } catch {
                result = EResult.NotBinXml;
                SetErrorDescription("Exception in buffer reader");
                return(null);
            }
        }
示例#2
0
        /// <summary>
        /// Load a Cry Binary XML file into memory and return the NodeRef for the root element
        /// </summary>
        /// <param name="filename">The file to read</param>
        /// <param name="result">Read result</param>
        /// <returns>The NodeRef of the root element or NULL</returns>
        public CryXmlNodeRef LoadFromFile(string filename, out EResult result)
        {
            m_errorDescription = "";
            result             = EResult.Error;

            if (!File.Exists(filename))
            {
                SetErrorDescription("Can't open file (file not found).");
                return(null);
            }

            using (BinaryReader binReader = new BinaryReader(File.Open(filename, FileMode.Open))) {
                try {
                    UInt32 fileSize = ( UInt32 )binReader.BaseStream.Length;

                    if (fileSize < CryXMLHeader.MySize( ))
                    {
                        result = EResult.NotBinXml;
                        SetErrorDescription("File is not a binary XML file (file size is too small).");
                        return(null);
                    }

                    // read from binary file and map the content into the memory
                    CryXmlBinContext pData = Create(binReader, fileSize, out result);

                    if (result != EResult.Success)
                    {
                        return(null);                   // Well...
                    }
                    // Return first node
                    CryXmlNodeRef n = pData.pBinaryNodes[0];
                    return(n);
                } catch {
                    result = EResult.NotBinXml;
                    SetErrorDescription("Exception in BinaryReader.");
                    return(null);
                }
            }
        }