IReader Class Referenceabstract

EBML processing class. More...

Inherited by CReader, and CReader.

Public Member Functions

virtual EBML::boolean processData (const void *pBuffer, const EBML::uint64 ui64BufferSize)=0
 Processes a chunk of data. More...
 
virtual EBML::CIdentifier getCurrentNodeIdentifier (void) const =0
 Gets the identifier of the current node. More...
 
virtual EBML::uint64 getCurrentNodeSize (void) const =0
 Gets the size of the current node. More...
 
virtual void release (void)=0
 Tells this object it won't be used anymore. More...
 

Protected Member Functions

virtual ~IReader (void)
 Virtual destructor - should be overloaded.
 

Detailed Description

EBML processing class.

Author
Yann Renard (INRIA/IRISA)
Date
2006-08-07 This class should be used in order to parse an EBML stream. It should be given a callback object that can handle the content of the stream. The parser itself as no understanding of what is included in the EBML structure.

The parsing interface looks like the eXpat XML parser, allowing on-the-fly parsing. See http://expat.sourceforge.net for more details.

To create instances of this class, the user has to call EBML::createReader. To delete instances of this class, the user has to call EBML::IReader::release.

Be sure to look at http://ebml.sourceforge.net/specs/ in order to understand what EBML is and how it should be used.

Member Function Documentation

virtual EBML::boolean processData ( const void *  pBuffer,
const EBML::uint64  ui64BufferSize 
)
pure virtual

Processes a chunk of data.

Parameters
pBuffer[in] : The buffer of data to process
ui64BufferSize[in] : The buffer size in bytes
Returns
true when data processing was ok
false in other cases.

This function has to be called as soon as the stream reader (file, socket, whatever) has data. Those data are sent to the parser and parsing for this chunk is started immediatly. The callback object is called according to the EBML structure contained in the chunk and the previously parsed chunks. See EBML::IReaderCallback for more details on the callback object.

virtual EBML::CIdentifier getCurrentNodeIdentifier ( void  ) const
pure virtual

Gets the identifier of the current node.

Returns
the identifier of the current node
virtual EBML::uint64 getCurrentNodeSize ( void  ) const
pure virtual

Gets the size of the current node.

Returns
the size of the current node
virtual void release ( void  )
pure virtual

Tells this object it won't be used anymore.

Instances of this class can not be instanciated another way than calling createReader. They can not be deleted either because the destructor is. protected. The library knows how to create and delete an instance of this class... Calling release will simply delete this instance and handle necessary cleanings when needed.

The current object is invalid after calling this function. It can not be used anymore.