Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members

XMLBinaryFile Class Reference

Class for reading/writing an xml file with binary data appended to it. More...

#include <XMLBinaryFile.hpp>

Inheritance diagram for XMLBinaryFile:

Inheritance graph
[legend]
List of all members.

Public Member Functions

 XMLBinaryFile (const string &_fileName="", const string &mode="", bool _exceptionOnFail=false)
void OpenRead (const string &_fileName)
void OpenWrite (const string &_fileName)
void Close ()
xmlpp::Element * AddBinaryNode (xmlpp::Element *parent, int size=-1)
template<class T, class iterator>
void BinaryWrite (iterator begin, iterator end)
 endian preserving write of a value range. meant only for simple types
template<class T, class iterator>
void BinaryRead (iterator begin, iterator end)
 endian preserving write of a value range. meant only for simple types
void BinaryWrite (void *data, size_t size)
 Write some binary data. Use this only after AddBinaryNode.
void BinaryWrite (xmlpp::Element *binNode, void *data, size_t size)
 Add "size" bytes of data to binary node (use this!).
void ReadBinaryNode (xmlpp::Element *parent)
void EndBinaryWrite (xmlpp::Element *binNode)
void BinaryRead (void *data, size_t size)
bool CheckBinaryReadComplete ()
Convenience functions xmlpp::Element * AddChild (xmlpp::Element *parent, const string &name, const string &a1="", const string &a2="", const string &a3="", const string &a4="")
xmlpp::Element * GetChild (xmlpp::Element *parent, const string &name)
bool HasChild (xmlpp::Element *parent, const string &name)
int GetIntAttribute (xmlpp::Element *node, const string &name)
double GetDoubleAttribute (xmlpp::Element *node, const string &name)
string GetAttribute (xmlpp::Element *node, const string &name)
bool HasAttribute (xmlpp::Element *node, const string &name)
xmlpp::Element * GetRoot (const string &rootName="")
xmlpp::Element * SetRoot (const string &rootName)
void ShowXML (xmlpp::Element *node=NULL, int depth=0)
 Print an XML tree (for debuging).
void ExceptionOnFail ()

Static Public Member Functions

static string Quote (const string &src)
 remove any chars that confuse xml
static string UnQuote (const string &src)
 restore any chars that confuse xml, that where removed by "Quote"

Public Attributes

int debug

Protected Member Functions

int AllocInBinary (size_t size)
 Allocate space for a new binary block (for ex.image data).
name Accesors string GetBinFileName ()
string GetFileName ()
int GetBinaryBegining ()
string ReadXMLHeader ()
 Read xml header from fileName.
void Error (const char *fmt,...)

Protected Attributes

string fileName
 The real file name.
string binFileName
 The temporary binary file name.
FILE * binaryFile
 The temporary binary file.
xmlpp::DomParser * parser
xmlpp::Document * document
size_t binaryCurrentAllocPos
 Current allocation position within the binary file.
size_t posInsideCurrentAllocBlock
size_t currentAllocBlockSize
size_t binaryBegining
 Size of xml header, or equivalently, pos of begining of bin data.
bool isWrite
bool isOpen
bool exceptionOnFail

Detailed Description

Class for reading/writing an xml file with binary data appended to it.

File structure is:<xml header=""><binary data="">. The <binary data=""> may contain several blocks : <binary data="">=<bin1><bin2><bin3> For example an image using a mask would contain: <binary data="">=<mask data=""><image data=""> The xml header is read-to/written-from an XML tree using xml++ (that uses libxml)

Definition at line 44 of file XMLBinaryFile.hpp.


Member Function Documentation

int XMLBinaryFile::AllocInBinary size_t  size  )  [protected]
 

Allocate space for a new binary block (for ex.image data).

if size==0 block is extensible, must call EndBinaryNode

Definition at line 240 of file XMLBinaryFile.cpp.

References binaryCurrentAllocPos, and binaryFile.

string XMLBinaryFile::ReadXMLHeader  )  [protected]
 

Read xml header from fileName.

Finds the end of the xml header and reads it

Definition at line 253 of file XMLBinaryFile.cpp.

References binaryBegining, and fileName.


Member Data Documentation

size_t XMLBinaryFile::binaryBegining [protected]
 

Size of xml header, or equivalently, pos of begining of bin data.

Only used when reading

Definition at line 126 of file XMLBinaryFile.hpp.

Referenced by ReadXMLHeader().


The documentation for this class was generated from the following files:
Generated on Fri Jun 17 13:36:20 2005 for ImLib3D by  doxygen 1.4.2