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

Chunk Class Reference

#include <chunk.h>

Inheritance diagram for Chunk:

Inheritance graph
[legend]
List of all members.

Detailed Description

Chunk base class All chunks are derived from this base class. Derived implementations should only overload the ReadData, ParseData, WriteData and GetSize methods. Do not inherit from this base class directly, but from the PrimitiveChunk and ComplexChunk classes.

Author:
Mattias Jansson (mattias@realityrift.com)


Public Member Functions

 Chunk (unsigned short usType, const NeoEngine::HashString &rstrType, const NeoEngine::HashString &rstrID="")
virtual ~Chunk ()
void AttachChunk (Chunk *pkChunk, bool bReplace=false)
ChunkFindChunk (const NeoEngine::HashString &rstrID, unsigned short usType, int iRecurse=-1, bool bIgnoreID=false)
int FindChunks (const NeoEngine::HashString &rstrID, unsigned short usType, std::vector< Chunk * > *pvpkResult, bool bRecurse=false, bool bIgnoreID=false)
const std::vector< Chunk * > & GetSubChunks () const
unsigned short GetType () const
const NeoEngine::HashString & GetTypeAsString () const
const NeoEngine::HashString & GetID () const
virtual int GetSize (bool bIncludeHeader=false) const=0
virtual bool IsComplex () const=0
virtual int ReadData (NeoEngine::File *pkFile, ChunkIO::CHUNKIOMODE eMode, unsigned int uiEnd)
virtual int ParseData (unsigned int uiFlags, NeoEngine::FileManager *pkFileManager)
virtual int WriteData (NeoEngine::File *pkFile, ChunkIO::CHUNKIOMODE eMode, unsigned int uiLevel)
int ParseRecursive (unsigned int uiFlags, NeoEngine::FileManager *pkFileManager)

Public Attributes

bool m_bParse

Protected Attributes

unsigned short m_usType
NeoEngine::HashString m_strType
NeoEngine::HashString m_strID
unsigned short m_usFindType
std::vector< Chunk * > m_vpkSubChunks


Constructor & Destructor Documentation

Chunk unsigned short  usType,
const NeoEngine::HashString &  rstrType,
const NeoEngine::HashString &  rstrID = ""
[inline]
 

Initialize chunk

Parameters:
usType Chunk type
rstrType Chunk type as string
rstrID Chunk ID string

virtual ~Chunk  )  [virtual]
 

Deallocate data and subchunks


Member Function Documentation

void AttachChunk Chunk pkChunk,
bool  bReplace = false
 

Attach subchunk

Parameters:
pkChunk Chunk to attach
bReplace Replace and deallocate old chunk of same type and ID (default false)

Chunk* FindChunk const NeoEngine::HashString &  rstrID,
unsigned short  usType,
int  iRecurse = -1,
bool  bIgnoreID = false
 

Locate chunk in hierarchy matching chunk properties

Parameters:
rstrID Chunk ID
usType Chunk type, ignored if zero
iRecurse Recurse on sub (1 - recurse infinite, 0 - only ourselves, -1 only child nodes - default)
bIgnoreID Ignore matching ID string
Returns:
Ptr to first chunk matching search criteria

int FindChunks const NeoEngine::HashString &  rstrID,
unsigned short  usType,
std::vector< Chunk * > *  pvpkResult,
bool  bRecurse = false,
bool  bIgnoreID = false
 

Find all subchunks matching query

Parameters:
rstrID Chunk ID
usType Chunk type, ignored if zero
pvpkResult Vector of chunk pointers receiving pointers to matching subchunks (if null, only count)
bRecurse Recurse on subchunks (default false, search only our subchunks)
bIgnoreID Ignore matching ID string
Returns:
Number of chunks found

const std::vector< Chunk* >& GetSubChunks  )  const [inline]
 

Returns:
Subchunk vector

unsigned short GetType  )  const [inline]
 

Returns:
Chunk type

const NeoEngine::HashString& GetTypeAsString  )  const [inline]
 

Returns:
Chunk type as string

const NeoEngine::HashString& GetID  )  const [inline]
 

Returns:
Chunk ID

virtual int GetSize bool  bIncludeHeader = false  )  const [pure virtual]
 

Get size of chunk in binary mode

Parameters:
bIncludeHeader If true, add header of chunk (type + ID) to size as well as subchunks and data
Returns:
Size of chunk data in bytes as if read/written from/to file

Implemented in BoolChunk, ColorChunk, ComplexChunk, FloatChunk, IntChunk, MatrixChunk, PolygonBufferChunk, PolygonStripChunk, PrimitiveChunk, QuaternionChunk, ShortChunk, SkinVertexBufferChunk, StringChunk, VectorChunk, and VertexBufferChunk.

virtual bool IsComplex  )  const [pure virtual]
 

Returns:
true if complex chunk, false if primitive

Implemented in ComplexChunk, and PrimitiveChunk.

virtual int ReadData NeoEngine::File *  pkFile,
ChunkIO::CHUNKIOMODE  eMode,
unsigned int  uiEnd
[inline, virtual]
 

Read chunk data from file

Parameters:
pkFile File
eMode Chunk mode (ChunkIO::ASCII or ChunkIO::BINARY)
uiEnd Bytes to end of chunk (in binary mode)
Returns:
<0 if error, number of bytes read if successful

Reimplemented in BoolChunk, ColorChunk, FloatChunk, IntChunk, MaterialChunk, MatrixChunk, PolygonBufferChunk, PolygonStripChunk, QuaternionChunk, ShortChunk, SkinVertexBufferChunk, StringChunk, TechniqueChunk, VectorChunk, and VertexBufferChunk.

virtual int ParseData unsigned int  uiFlags,
NeoEngine::FileManager *  pkFileManager
[inline, virtual]
 

Parse chunk data

Parameters:
uiFlags Parse flags
pkFileManager File manager
Returns:
<0 if error, >0 if successful (0 reserved)

Reimplemented in BoneChunk, BoundingVolumeChunk, LightChunk, MaterialChunk, MeshChunk, MeshEntityChunk, NodeAnimationChunk, NodeKeyframeChunk, PolygonBufferChunk, ProgramChunk, RoomChunk, SceneEntityChunk, SceneNodeChunk, SkeletonChunk, SkeletonAnimationChunk, SkinChunk, SkyBoxChunk, SkyDomeChunk, SubMeshChunk, SubMeshAnimationChunk, SubMeshKeyframeChunk, TechniqueChunk, TextureLayerChunk, and TextureMatrixGenChunk.

virtual int WriteData NeoEngine::File *  pkFile,
ChunkIO::CHUNKIOMODE  eMode,
unsigned int  uiLevel
[inline, virtual]
 

Write chunk data to file

Parameters:
pkFile File
eMode Chunk mode (ChunkIO::ASCII or ChunkIO::BINARY)
uiLevel Recursion level for ascii format
Returns:
<0 if error, number of bytes written if successful

Reimplemented in BoolChunk, ColorChunk, FloatChunk, IntChunk, MatrixChunk, PolygonBufferChunk, PolygonStripChunk, QuaternionChunk, ShortChunk, SkinVertexBufferChunk, StringChunk, VectorChunk, and VertexBufferChunk.

int ParseRecursive unsigned int  uiFlags,
NeoEngine::FileManager *  pkFileManager
 

Parse child chunks, then ourselves

Parameters:
uiFlags Parse flags
pkFileManager File manager object
Returns:
<0 if error, >0 if successful (0 reserved for future use)


Member Data Documentation

unsigned short m_usType [protected]
 

Chunk type

NeoEngine::HashString m_strType [protected]
 

Type as string

NeoEngine::HashString m_strID [protected]
 

Chunk ID

unsigned short m_usFindType [protected]
 

Chunk type used in search

std::vector< Chunk* > m_vpkSubChunks [protected]
 

Sub chunks

bool m_bParse
 

Parse flag. If false, the chunk will not be parsed


The documentation for this class was generated from the following file:
Generated on Wed Jan 21 14:21:18 2004 for NeoChunkIO by doxygen 1.3.5