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