libgig  3.3.0.svn20
RIFF::File Class Reference

RIFF File. More...

#include <RIFF.h>

Inheritance diagram for RIFF::File:
RIFF::List RIFF::Chunk

Public Member Functions

 File (uint32_t FileType)
 Create new RIFF file. More...
 
 File (const String &path)
 Load existing RIFF file. More...
 
 File (const String &path, uint32_t FileType, endian_t Endian, layout_t layout)
 Load existing RIFF-like file. More...
 
stream_mode_t GetMode ()
 
bool SetMode (stream_mode_t NewMode)
 Change file access mode. More...
 
void SetByteOrder (endian_t Endian)
 Set the byte order to be used when saving. More...
 
String GetFileName ()
 
void SetFileName (const String &path)
 
bool IsNew () const
 Returns true if this file has been created new from scratch and has not been stored to disk yet. More...
 
layout_t GetLayout () const
 
virtual void Save ()
 Save changes to same file. More...
 
virtual void Save (const String &path)
 Save changes to another file. More...
 
virtual ~File ()
 
String GetListTypeString ()
 Returns string representation of the lists's id. More...
 
uint32_t GetListType ()
 Returns unsigned integer representation of the list's ID. More...
 
ChunkGetSubChunk (uint32_t ChunkID)
 Returns subchunk with chunk ID ChunkID within this chunk list. More...
 
ListGetSubList (uint32_t ListType)
 Returns sublist chunk with list type ListType within this chunk list. More...
 
ChunkGetFirstSubChunk ()
 Returns the first subchunk within the list. More...
 
ChunkGetNextSubChunk ()
 Returns the next subchunk within the list. More...
 
ListGetFirstSubList ()
 Returns the first sublist within the list (that is a subchunk with chunk ID "LIST"). More...
 
ListGetNextSubList ()
 Returns the next sublist (that is a subchunk with chunk ID "LIST") within the list. More...
 
unsigned int CountSubChunks ()
 Returns number of subchunks within the list. More...
 
unsigned int CountSubChunks (uint32_t ChunkID)
 Returns number of subchunks within the list with chunk ID ChunkId. More...
 
unsigned int CountSubLists ()
 Returns number of sublists within the list. More...
 
unsigned int CountSubLists (uint32_t ListType)
 Returns number of sublists within the list with list type ListType More...
 
ChunkAddSubChunk (uint32_t uiChunkID, uint uiBodySize)
 Creates a new sub chunk. More...
 
ListAddSubList (uint32_t uiListType)
 Creates a new list sub chunk. More...
 
void DeleteSubChunk (Chunk *pSubChunk)
 Removes a sub chunk. More...
 
void MoveSubChunk (Chunk *pSrc, Chunk *pDst)
 Moves a sub chunk witin this list. More...
 
void MoveSubChunk (Chunk *pSrc, List *pNewParent)
 Moves a sub chunk from this list to another list. More...
 
String GetChunkIDString ()
 Returns the String representation of the chunk's ID (e.g. More...
 
uint32_t GetChunkID ()
 Chunk ID in unsigned integer representation. More...
 
FileGetFile ()
 Returns pointer to the chunk's File object. More...
 
ListGetParent ()
 Returns pointer to the chunk's parent list chunk. More...
 
unsigned long GetSize () const
 Chunk size in bytes (without header, thus the chunk data body) More...
 
unsigned long GetNewSize ()
 New chunk size if it was modified with Resize(). More...
 
unsigned long GetPos ()
 Position within the chunk data body. More...
 
unsigned long GetFilePos ()
 Current, actual offset in file. More...
 
unsigned long SetPos (unsigned long Where, stream_whence_t Whence=stream_start)
 Sets the position within the chunk body, thus within the data portion of the chunk (in bytes). More...
 
unsigned long RemainingBytes ()
 Returns the number of bytes left to read in the chunk body. More...
 
stream_state_t GetState ()
 Returns the current state of the chunk object. More...
 
unsigned long Read (void *pData, unsigned long WordCount, unsigned long WordSize)
 Reads WordCount number of data words with given WordSize and copies it into a buffer pointed by pData. More...
 
unsigned long ReadInt8 (int8_t *pData, unsigned long WordCount=1)
 Reads WordCount number of 8 Bit signed integer words and copies it into the buffer pointed by pData. More...
 
int8_t ReadInt8 ()
 Reads one 8 Bit signed integer word and increments the position within the chunk. More...
 
unsigned long ReadUint8 (uint8_t *pData, unsigned long WordCount=1)
 Reads WordCount number of 8 Bit unsigned integer words and copies it into the buffer pointed by pData. More...
 
uint8_t ReadUint8 ()
 Reads one 8 Bit unsigned integer word and increments the position within the chunk. More...
 
unsigned long ReadInt16 (int16_t *pData, unsigned long WordCount=1)
 Reads WordCount number of 16 Bit signed integer words and copies it into the buffer pointed by pData. More...
 
int16_t ReadInt16 ()
 Reads one 16 Bit signed integer word and increments the position within the chunk. More...
 
unsigned long ReadUint16 (uint16_t *pData, unsigned long WordCount=1)
 Reads WordCount number of 16 Bit unsigned integer words and copies it into the buffer pointed by pData. More...
 
uint16_t ReadUint16 ()
 Reads one 16 Bit unsigned integer word and increments the position within the chunk. More...
 
unsigned long ReadInt32 (int32_t *pData, unsigned long WordCount=1)
 Reads WordCount number of 32 Bit signed integer words and copies it into the buffer pointed by pData. More...
 
int32_t ReadInt32 ()
 Reads one 32 Bit signed integer word and increments the position within the chunk. More...
 
unsigned long ReadUint32 (uint32_t *pData, unsigned long WordCount=1)
 Reads WordCount number of 32 Bit unsigned integer words and copies it into the buffer pointed by pData. More...
 
uint32_t ReadUint32 ()
 Reads one 32 Bit unsigned integer word and increments the position within the chunk. More...
 
void ReadString (String &s, int size)
 Reads a null-padded string of size characters and copies it into the string s. More...
 
unsigned long Write (void *pData, unsigned long WordCount, unsigned long WordSize)
 Writes WordCount number of data words with given WordSize from the buffer pointed by pData. More...
 
unsigned long WriteInt8 (int8_t *pData, unsigned long WordCount=1)
 Writes WordCount number of 8 Bit signed integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file. More...
 
unsigned long WriteUint8 (uint8_t *pData, unsigned long WordCount=1)
 Writes WordCount number of 8 Bit unsigned integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file. More...
 
unsigned long WriteInt16 (int16_t *pData, unsigned long WordCount=1)
 Writes WordCount number of 16 Bit signed integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file. More...
 
unsigned long WriteUint16 (uint16_t *pData, unsigned long WordCount=1)
 Writes WordCount number of 16 Bit unsigned integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file. More...
 
unsigned long WriteInt32 (int32_t *pData, unsigned long WordCount=1)
 Writes WordCount number of 32 Bit signed integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file. More...
 
unsigned long WriteUint32 (uint32_t *pData, unsigned long WordCount=1)
 Writes WordCount number of 32 Bit unsigned integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file. More...
 
void * LoadChunkData ()
 Load chunk body into RAM. More...
 
void ReleaseChunkData ()
 Free loaded chunk body from RAM. More...
 
void Resize (int iNewSize)
 Resize chunk. More...
 

Protected Types

typedef std::map< uint32_t,
RIFF::Chunk * > 
ChunkMap
 
typedef std::list< Chunk * > ChunkList
 

Protected Member Functions

void LogAsResized (Chunk *pResizedChunk)
 
void UnlogResized (Chunk *pResizedChunk)
 
void ReadHeader (unsigned long fPos)
 
void WriteHeader (unsigned long fPos)
 
void LoadSubChunks ()
 
void LoadSubChunksRecursively ()
 
virtual unsigned long WriteChunk (unsigned long ulWritePos, unsigned long ulCurrentDataOffset)
 Write list chunk persistently e.g. More...
 
virtual void __resetPos ()
 Sets List Chunk's read/write position to zero and causes all sub chunks to do the same. More...
 
void DeleteChunkList ()
 
unsigned long ReadSceptical (void *pData, unsigned long WordCount, unsigned long WordSize)
 Just an internal wrapper for the main Read() method with additional Exception throwing on errors. More...
 
void swapBytes_16 (void *Word)
 
void swapBytes_32 (void *Word)
 
void swapBytes (void *Word, unsigned long WordSize)
 
String convertToString (uint32_t word)
 

Protected Attributes

int hFileRead
 handle / descriptor for reading from file More...
 
int hFileWrite
 handle / descriptor for writing to (some) file More...
 
String Filename
 
bool bEndianNative
 
bool bIsNewFile
 
layout_t Layout
 An ordinary RIFF file is always set to layout_standard. More...
 
uint32_t ListType
 
ChunkListpSubChunks
 
ChunkMappSubChunksMap
 
ChunkList::iterator ChunksIterator
 
ChunkList::iterator ListIterator
 
uint32_t ChunkID
 
uint32_t CurrentChunkSize
 
uint32_t NewChunkSize
 
ListpParent
 
FilepFile
 
unsigned long ulStartPos
 
unsigned long ulPos
 
uint8_t * pChunkData
 
unsigned long ulChunkDataSize
 

Friends

class Chunk
 
class List
 

Detailed Description

RIFF File.

Handles arbitrary RIFF files and provides together with its base classes convenient methods to walk through, read and modify the file's RIFF tree.

Definition at line 328 of file RIFF.h.

Member Typedef Documentation

typedef std::list<Chunk*> RIFF::List::ChunkList
protectedinherited

Definition at line 303 of file RIFF.h.

typedef std::map<uint32_t, RIFF::Chunk*> RIFF::List::ChunkMap
protectedinherited

Definition at line 302 of file RIFF.h.

Constructor & Destructor Documentation

RIFF::File::File ( uint32_t  FileType)

Create new RIFF file.

Use this constructor if you want to create a new RIFF file completely "from scratch". Note: there must be no empty chunks or empty list chunks when trying to make the new RIFF file persistent with Save()!

Note: by default, the RIFF file will be saved in native endian format; that is, as a RIFF file on little-endian machines and as a RIFX file on big-endian. To change this behaviour, call SetByteOrder() before calling Save().

Parameters
FileType- four-byte identifier of the RIFF file type
See also
AddSubChunk(), AddSubList(), SetByteOrder()

Definition at line 1454 of file RIFF.cpp.

References bEndianNative, hFileRead, hFileWrite, RIFF::List::ListType, RIFF_HEADER_SIZE, RIFF::stream_mode_closed, and RIFF::Chunk::ulStartPos.

RIFF::File::File ( const String path)

Load existing RIFF file.

Loads an existing RIFF file with all its chunks.

Parameters
path- path and file name of the RIFF file to open
Exceptions
RIFF::Exceptionif error occured while trying to load the given RIFF file

Definition at line 1478 of file RIFF.cpp.

References bEndianNative, CHUNK_ID_RIFF, CHUNK_ID_RIFX, and RIFF::Chunk::ChunkID.

RIFF::File::File ( const String path,
uint32_t  FileType,
endian_t  Endian,
layout_t  layout 
)

Load existing RIFF-like file.

Loads an existing file, which is not a "real" RIFF file, but similar to an ordinary RIFF file.

A "real" RIFF file contains at top level a List chunk either with chunk ID "RIFF" or "RIFX". The simple constructor above expects this to be case, and if it finds the toplevel List chunk to have another chunk ID than one of those two expected ones, it would throw an Exception and would refuse to load the file accordingly.

Since there are however a lot of file formats which use the same simple principles of the RIFF format, with another toplevel List chunk ID though, you can use this alternative constructor here to be able to load and handle those files in the same way as you would do with "real" RIFF files.

Parameters
path- path and file name of the RIFF-alike file to be opened
FileType- expected toplevel List chunk ID (this is the very first chunk found in the file)
Endian- whether the file uses little endian or big endian layout
layout- general file structure type
Exceptions
RIFF::Exceptionif error occured while trying to load the given RIFF-alike file

Definition at line 1522 of file RIFF.cpp.

References SetByteOrder().

RIFF::File::~File ( )
virtual

Definition at line 1914 of file RIFF.cpp.

Member Function Documentation

void RIFF::List::__resetPos ( )
protectedvirtualinherited

Sets List Chunk's read/write position to zero and causes all sub chunks to do the same.

Reimplemented from RIFF::Chunk.

Definition at line 1415 of file RIFF.cpp.

References RIFF::Chunk::__resetPos(), and RIFF::List::pSubChunks.

Referenced by SetMode().

Chunk * RIFF::List::AddSubChunk ( uint32_t  uiChunkID,
uint  uiBodySize 
)
inherited

Creates a new sub chunk.

Creates and adds a new sub chunk to this list chunk. Note that the chunk's body size given by uiBodySize must be greater than zero. You have to call File::Save() to make this change persistent to the actual file and before performing any data write operations on the new chunk!

Parameters
uiChunkID- chunk ID of the new chunk
uiBodySize- size of the new chunk's body, that is its actual data size (without header)
Exceptions
RIFF::Exceptionif uiBodySize equals zero

Definition at line 1182 of file RIFF.cpp.

References RIFF::Chunk::Chunk(), CHUNK_HEADER_SIZE, RIFF::List::LoadSubChunks(), LogAsResized(), RIFF::Chunk::NewChunkSize, RIFF::Chunk::pFile, RIFF::List::pSubChunks, and RIFF::Chunk::Resize().

Referenced by DLS::File::__ensureMandatoryChunksExist(), gig::File::AddInstrument(), gig::File::AddSample(), gig::File::File(), DLS::Sample::Resize(), DLS::Resource::UpdateChunks(), DLS::Sampler::UpdateChunks(), DLS::Sample::UpdateChunks(), DLS::Region::UpdateChunks(), gig::DimensionRegion::UpdateChunks(), DLS::Instrument::UpdateChunks(), DLS::File::UpdateChunks(), gig::Sample::UpdateChunks(), gig::Region::UpdateChunks(), gig::Script::UpdateChunks(), gig::Instrument::UpdateChunks(), and gig::File::UpdateChunks().

List * RIFF::List::AddSubList ( uint32_t  uiListType)
inherited
String RIFF::Chunk::convertToString ( uint32_t  word)
inlineprotectedinherited
unsigned int RIFF::List::CountSubChunks ( )
inherited

Returns number of subchunks within the list.

Definition at line 1120 of file RIFF.cpp.

References RIFF::List::LoadSubChunks(), and RIFF::List::pSubChunks.

Referenced by RIFF::List::CountSubLists().

unsigned int RIFF::List::CountSubChunks ( uint32_t  ChunkID)
inherited

Returns number of subchunks within the list with chunk ID ChunkId.

Definition at line 1129 of file RIFF.cpp.

References RIFF::Chunk::ChunkID, RIFF::List::LoadSubChunks(), and RIFF::List::pSubChunks.

unsigned int RIFF::List::CountSubLists ( )
inherited

Returns number of sublists within the list.

Definition at line 1146 of file RIFF.cpp.

References CHUNK_ID_LIST, and RIFF::List::CountSubChunks().

unsigned int RIFF::List::CountSubLists ( uint32_t  ListType)
inherited

Returns number of sublists within the list with list type ListType

Definition at line 1154 of file RIFF.cpp.

References CHUNK_ID_LIST, RIFF::List::GetListType(), RIFF::List::ListType, RIFF::List::LoadSubChunks(), and RIFF::List::pSubChunks.

void RIFF::List::DeleteChunkList ( )
protectedinherited

Definition at line 974 of file RIFF.cpp.

References RIFF::List::pSubChunks, and RIFF::List::pSubChunksMap.

Referenced by RIFF::List::~List().

void RIFF::List::DeleteSubChunk ( Chunk pSubChunk)
inherited

Removes a sub chunk.

Removes the sub chunk given by pSubChunk from this list and frees it completely from RAM. The given chunk can either be a normal sub chunk or a list sub chunk. In case the given chunk is a list chunk, all its subchunks (if any) will be removed recursively as well. You should call File::Save() to make this change persistent at any time.

Parameters
pSubChunk- sub chunk or sub list chunk to be removed

Definition at line 1273 of file RIFF.cpp.

References RIFF::Chunk::GetChunkID(), RIFF::List::LoadSubChunks(), RIFF::List::pSubChunks, and RIFF::List::pSubChunksMap.

Referenced by gig::Region::DeleteDimension(), gig::ScriptGroup::DeleteScript(), gig::File::DeleteScriptGroup(), gig::Sample::UpdateChunks(), gig::Instrument::UpdateChunks(), gig::File::UpdateChunks(), gig::Group::~Group(), DLS::Instrument::~Instrument(), DLS::Region::~Region(), and DLS::Sample::~Sample().

uint32_t RIFF::Chunk::GetChunkID ( )
inlineinherited
String RIFF::Chunk::GetChunkIDString ( )
inherited

Returns the String representation of the chunk's ID (e.g.

"RIFF", "LIST").

Definition at line 183 of file RIFF.cpp.

References RIFF::Chunk::ChunkID, and RIFF::Chunk::convertToString().

File* RIFF::Chunk::GetFile ( )
inlineinherited

Returns pointer to the chunk's File object.

Definition at line 188 of file RIFF.h.

References RIFF::Chunk::pFile.

Referenced by Korg::KMPRegion::FullSampleFileName().

unsigned long RIFF::Chunk::GetFilePos ( )
inlineinherited

Current, actual offset in file.

Definition at line 193 of file RIFF.h.

References RIFF::Chunk::ulPos, and RIFF::Chunk::ulStartPos.

Referenced by DLS::File::LoadSamples(), gig::File::LoadSamples(), and gig::Instrument::LoadScripts().

Chunk * RIFF::List::GetFirstSubChunk ( )
inherited

Returns the first subchunk within the list.

You have to call this method before you can call GetNextSubChunk(). Recall it when you want to start from the beginning of the list again.

Returns
pointer to the first subchunk within the list, NULL otherwise

Definition at line 1046 of file RIFF.cpp.

References RIFF::List::ChunksIterator, RIFF::List::LoadSubChunks(), and RIFF::List::pSubChunks.

Referenced by DLS::Articulator::LoadArticulations(), gig::File::LoadGroups(), gig::ScriptGroup::LoadScripts(), gig::Group::UpdateChunks(), and gig::File::UpdateChunks().

List * RIFF::List::GetFirstSubList ( )
inherited

Returns the first sublist within the list (that is a subchunk with chunk ID "LIST").

You have to call this method before you can call GetNextSubList(). Recall it when you want to start from the beginning of the list again.

Returns
pointer to the first sublist within the list, NULL otherwise

Definition at line 1080 of file RIFF.cpp.

References CHUNK_ID_LIST, RIFF::List::ListIterator, RIFF::List::LoadSubChunks(), and RIFF::List::pSubChunks.

Referenced by gig::Instrument::Instrument(), gig::Region::LoadDimensionRegions(), DLS::File::LoadInstruments(), gig::File::LoadInstruments(), DLS::Instrument::LoadRegions(), DLS::File::LoadSamples(), gig::File::LoadSamples(), gig::File::LoadScriptGroups(), and RIFF::List::LoadSubChunksRecursively().

layout_t RIFF::File::GetLayout ( ) const

Definition at line 1608 of file RIFF.cpp.

References Layout.

String RIFF::List::GetListTypeString ( )
inherited

Returns string representation of the lists's id.

Definition at line 1427 of file RIFF.cpp.

References RIFF::Chunk::convertToString(), and RIFF::List::ListType.

stream_mode_t RIFF::File::GetMode ( )

Definition at line 1604 of file RIFF.cpp.

unsigned long RIFF::Chunk::GetNewSize ( )
inlineinherited

New chunk size if it was modified with Resize().

Definition at line 191 of file RIFF.h.

References RIFF::Chunk::NewChunkSize.

Referenced by gig::DimensionRegion::UpdateChunks().

Chunk * RIFF::List::GetNextSubChunk ( )
inherited

Returns the next subchunk within the list.

You have to call GetFirstSubChunk() before you can use this method!

Returns
pointer to the next subchunk within the list or NULL if end of list is reached

Definition at line 1062 of file RIFF.cpp.

References RIFF::List::ChunksIterator, and RIFF::List::pSubChunks.

Referenced by DLS::Articulator::LoadArticulations(), gig::File::LoadGroups(), gig::ScriptGroup::LoadScripts(), gig::Group::UpdateChunks(), and gig::File::UpdateChunks().

List * RIFF::List::GetNextSubList ( )
inherited

Returns the next sublist (that is a subchunk with chunk ID "LIST") within the list.

You have to call GetFirstSubList() before you can use this method!

Returns
pointer to the next sublist within the list, NULL if end of list is reached

Definition at line 1102 of file RIFF.cpp.

References CHUNK_ID_LIST, RIFF::List::ListIterator, and RIFF::List::pSubChunks.

Referenced by gig::Instrument::Instrument(), gig::Region::LoadDimensionRegions(), DLS::File::LoadInstruments(), gig::File::LoadInstruments(), DLS::Instrument::LoadRegions(), DLS::File::LoadSamples(), gig::File::LoadSamples(), gig::File::LoadScriptGroups(), and RIFF::List::LoadSubChunksRecursively().

List* RIFF::Chunk::GetParent ( )
inlineinherited
unsigned long RIFF::Chunk::GetPos ( )
inlineinherited
stream_state_t RIFF::Chunk::GetState ( )
inherited

Returns the current state of the chunk object.

Following values are possible:

Definition at line 249 of file RIFF.cpp.

References RIFF::Chunk::CurrentChunkSize, hFileRead, RIFF::Chunk::pFile, RIFF::stream_closed, RIFF::stream_end_reached, RIFF::stream_ready, and RIFF::Chunk::ulPos.

Chunk * RIFF::List::GetSubChunk ( uint32_t  ChunkID)
inherited

Returns subchunk with chunk ID ChunkID within this chunk list.

Use this method if you expect only one subchunk of that type in the list. It there are more than one, it's undetermined which one of them will be returned! If there are no subchunks with that desired chunk ID, NULL will be returned.

Parameters
ChunkID- chunk ID of the sought subchunk
Returns
pointer to the subchunk or NULL if there is none of that ID

Definition at line 1002 of file RIFF.cpp.

References RIFF::Chunk::ChunkID, RIFF::List::LoadSubChunks(), and RIFF::List::pSubChunksMap.

Referenced by DLS::File::__ensureMandatoryChunksExist(), gig::DimensionRegion::DimensionRegion(), DLS::File::File(), sf2::File::File(), sf2::GetMandatoryChunk(), Korg::KSFSample::GetPos(), sf2::Info::Info(), DLS::Instrument::Instrument(), gig::Instrument::Instrument(), Korg::KMPInstrument::KMPInstrument(), Korg::KSFSample::KSFSample(), Korg::KSFSample::Read(), DLS::Region::Region(), gig::Region::Region(), DLS::Sample::Resize(), DLS::Resource::Resource(), DLS::Sample::Sample(), gig::Sample::Sample(), DLS::Sampler::Sampler(), gig::ScriptGroup::ScriptGroup(), Korg::KSFSample::SetPos(), gig::File::SetSampleChecksum(), DLS::Resource::UpdateChunks(), DLS::Sampler::UpdateChunks(), DLS::Sample::UpdateChunks(), DLS::Region::UpdateChunks(), gig::DimensionRegion::UpdateChunks(), DLS::Instrument::UpdateChunks(), DLS::File::UpdateChunks(), gig::Sample::UpdateChunks(), gig::Region::UpdateChunks(), gig::Instrument::UpdateChunks(), gig::Group::UpdateChunks(), gig::File::UpdateChunks(), and gig::Instrument::UpdateScriptFileOffsets().

List * RIFF::List::GetSubList ( uint32_t  ListType)
inherited

Returns sublist chunk with list type ListType within this chunk list.

Use this method if you expect only one sublist chunk of that type in the list. It there are more than one, it's undetermined which one of them will be returned! If there are no sublists with that desired list type, NULL will be returned.

Parameters
ListType- list type of the sought sublist
Returns
pointer to the sublist or NULL if there is none of that type

Definition at line 1021 of file RIFF.cpp.

References CHUNK_ID_LIST, RIFF::List::GetListType(), RIFF::List::ListType, RIFF::List::LoadSubChunks(), and RIFF::List::pSubChunks.

Referenced by DLS::File::__ensureMandatoryChunksExist(), gig::Region::AddDimension(), DLS::File::AddInstrument(), gig::File::AddInstrument(), DLS::Instrument::AddRegion(), gig::Instrument::AddRegion(), DLS::File::AddSample(), gig::File::AddSample(), gig::Region::DeleteDimension(), gig::Region::DeleteDimensionZone(), sf2::File::File(), sf2::Info::Info(), DLS::Info::Info(), gig::Instrument::Instrument(), DLS::Articulator::LoadArticulations(), gig::Region::LoadDimensionRegions(), gig::File::LoadGroups(), DLS::File::LoadInstruments(), gig::File::LoadInstruments(), DLS::Instrument::LoadRegions(), DLS::File::LoadSamples(), gig::File::LoadSamples(), gig::File::LoadScriptGroups(), gig::Region::Region(), gig::Region::SplitDimensionZone(), DLS::Info::UpdateChunks(), gig::Region::UpdateChunks(), gig::ScriptGroup::UpdateChunks(), gig::Instrument::UpdateChunks(), gig::Group::UpdateChunks(), gig::File::UpdateChunks(), and gig::Instrument::UpdateScriptFileOffsets().

bool RIFF::File::IsNew ( ) const

Returns true if this file has been created new from scratch and has not been stored to disk yet.

Definition at line 1925 of file RIFF.cpp.

References bIsNewFile.

Referenced by gig::File::AddContentOf().

void * RIFF::Chunk::LoadChunkData ( )
inherited

Load chunk body into RAM.

Loads the whole chunk body into memory. You can modify the data in RAM and save the data by calling File::Save() afterwards.

Caution: the buffer pointer will be invalidated once File::Save() was called. You have to call LoadChunkData() again to get a new, valid pointer whenever File::Save() was called.

You can call LoadChunkData() again if you previously scheduled to enlarge this chunk with a Resize() call. In that case the buffer will be enlarged to the new, scheduled chunk size and you can already place the new chunk data to the buffer and finally call File::Save() to enlarge the chunk physically and write the new data in one rush. This approach is definitely recommended if you have to enlarge and write new data to a lot of chunks.

Returns
a pointer to the data in RAM on success, NULL otherwise
Exceptions
Exceptionif data buffer could not be enlarged
See also
ReleaseChunkData()

Definition at line 753 of file RIFF.cpp.

References RIFF::Chunk::CurrentChunkSize, Filename, RIFF::Chunk::GetSize(), hFileRead, RIFF::Chunk::NewChunkSize, RIFF::Chunk::pChunkData, RIFF::Chunk::pFile, RIFF::Chunk::ulChunkDataSize, and RIFF::Chunk::ulStartPos.

Referenced by gig::File::LoadGroups(), DLS::Sample::LoadSampleData(), DLS::Articulation::UpdateChunks(), DLS::Resource::UpdateChunks(), DLS::Sampler::UpdateChunks(), DLS::Sample::UpdateChunks(), DLS::Region::UpdateChunks(), gig::DimensionRegion::UpdateChunks(), DLS::Instrument::UpdateChunks(), DLS::File::UpdateChunks(), gig::Sample::UpdateChunks(), gig::Region::UpdateChunks(), gig::Script::UpdateChunks(), gig::Instrument::UpdateChunks(), gig::File::UpdateChunks(), and RIFF::Chunk::WriteChunk().

void RIFF::List::LoadSubChunksRecursively ( )
protectedinherited

Definition at line 1372 of file RIFF.cpp.

References RIFF::List::GetFirstSubList(), and RIFF::List::GetNextSubList().

Referenced by Save().

void RIFF::File::LogAsResized ( Chunk pResizedChunk)
protected

Definition at line 1943 of file RIFF.cpp.

References _GET_RESIZED_CHUNKS.

Referenced by RIFF::List::AddSubChunk(), RIFF::List::AddSubList(), and RIFF::Chunk::Resize().

void RIFF::List::MoveSubChunk ( Chunk pSrc,
Chunk pDst 
)
inherited

Moves a sub chunk witin this list.

Moves a sub chunk from one position in this list to another position in the same list. The pSrc chunk is placed before the pDst chunk.

Parameters
pSrc- sub chunk to be moved
pDst- the position to move to. pSrc will be placed before pDst. If pDst is 0, pSrc will be placed last in list.

Definition at line 1205 of file RIFF.cpp.

References RIFF::List::LoadSubChunks(), and RIFF::List::pSubChunks.

Referenced by gig::Region::AddDimension(), gig::Script::SetGroup(), gig::Region::UpdateChunks(), gig::Group::UpdateChunks(), and gig::File::UpdateChunks().

void RIFF::List::MoveSubChunk ( Chunk pSrc,
List pNewParent 
)
inherited

Moves a sub chunk from this list to another list.

Moves a sub chunk from this list list to the end of another list.

Parameters
pSrc- sub chunk to be moved
pDst- destination list where the chunk shall be moved to

Definition at line 1220 of file RIFF.cpp.

References RIFF::Chunk::GetChunkID(), RIFF::List::LoadSubChunks(), RIFF::List::pSubChunks, and RIFF::List::pSubChunksMap.

unsigned long RIFF::Chunk::Read ( void *  pData,
unsigned long  WordCount,
unsigned long  WordSize 
)
inherited

Reads WordCount number of data words with given WordSize and copies it into a buffer pointed by pData.

The buffer has to be allocated and be sure to provide the correct WordSize, as this will be important and taken into account for eventual endian correction (swapping of bytes due to different native byte order of a system). The position within the chunk will automatically be incremented.

Parameters
pDatadestination buffer
WordCountnumber of data words to read
WordSizesize of each data word to read
Returns
number of successfully read data words or 0 if end of file reached or error occured

Definition at line 280 of file RIFF.cpp.

References bEndianNative, RIFF::Chunk::CurrentChunkSize, hFileRead, RIFF::Chunk::pFile, RIFF::Chunk::SetPos(), RIFF::stream_curpos, RIFF::Chunk::swapBytes(), RIFF::Chunk::swapBytes_16(), RIFF::Chunk::swapBytes_32(), RIFF::Chunk::ulPos, and RIFF::Chunk::ulStartPos.

Referenced by DLS::Articulation::Articulation(), gig::DimensionRegion::DimensionRegion(), DLS::File::File(), DLS::Instrument::Instrument(), RIFF::List::LoadSubChunks(), gig::MidiRuleAlternator::MidiRuleAlternator(), Korg::KSFSample::Read(), sf2::Sample::Read(), DLS::Sample::Read(), gig::Sample::Read(), RIFF::Chunk::ReadSceptical(), Korg::readText(), DLS::Region::Region(), DLS::Resource::Resource(), gig::Sample::Sample(), and DLS::Sampler::Sampler().

void RIFF::List::ReadHeader ( unsigned long  fPos)
protectedinherited
unsigned long RIFF::Chunk::ReadInt16 ( int16_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Reads WordCount number of 16 Bit signed integer words and copies it into the buffer pointed by pData.

The buffer has to be allocated. Endian correction will automatically be done if needed. The position within the chunk will automatically be incremented.

Parameters
pDatadestination buffer
WordCountnumber of 16 Bit signed integers to read
Returns
number of read integers
Exceptions
RIFF::Exceptionif an error occured or less than WordCount integers could be read!

Definition at line 479 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

Referenced by gig::DimensionRegion::DimensionRegion(), sf2::File::File(), sf2::Instrument::Instrument(), gig::Instrument::Instrument(), gig::MidiRuleLegato::MidiRuleLegato(), sf2::Preset::Preset(), sf2::Sample::Sample(), gig::Sample::Sample(), and DLS::Sampler::Sampler().

int16_t RIFF::Chunk::ReadInt16 ( )
inherited

Reads one 16 Bit signed integer word and increments the position within the chunk.

Endian correction will automatically be done if needed.

Returns
read integer word
Exceptions
RIFF::Exceptionif an error occured

Definition at line 672 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

unsigned long RIFF::Chunk::ReadInt32 ( int32_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Reads WordCount number of 32 Bit signed integer words and copies it into the buffer pointed by pData.

The buffer has to be allocated. Endian correction will automatically be done if needed. The position within the chunk will automatically be incremented.

Parameters
pDatadestination buffer
WordCountnumber of 32 Bit signed integers to read
Returns
number of read integers
Exceptions
RIFF::Exceptionif an error occured or less than WordCount integers could be read!

Definition at line 553 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

Referenced by gig::DimensionRegion::DimensionRegion(), gig::Instrument::Instrument(), sf2::Preset::Preset(), sf2::Sample::Sample(), gig::Sample::Sample(), and DLS::Sampler::Sampler().

int32_t RIFF::Chunk::ReadInt32 ( )
inherited

Reads one 32 Bit signed integer word and increments the position within the chunk.

Endian correction will automatically be done if needed.

Returns
read integer word
Exceptions
RIFF::Exceptionif an error occured

Definition at line 706 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

unsigned long RIFF::Chunk::ReadInt8 ( int8_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Reads WordCount number of 8 Bit signed integer words and copies it into the buffer pointed by pData.

The buffer has to be allocated. The position within the chunk will automatically be incremented.

Parameters
pDatadestination buffer
WordCountnumber of 8 Bit signed integers to read
Returns
number of read integers
Exceptions
RIFF::Exceptionif an error occured or less than WordCount integers could be read!

Definition at line 405 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

Referenced by gig::DimensionRegion::DimensionRegion(), Korg::KMPRegion::KMPRegion(), Korg::KSFSample::KSFSample(), sf2::LoadString(), and sf2::Sample::Sample().

int8_t RIFF::Chunk::ReadInt8 ( )
inherited

Reads one 8 Bit signed integer word and increments the position within the chunk.

Returns
read integer word
Exceptions
RIFF::Exceptionif an error occured

Definition at line 639 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

unsigned long RIFF::Chunk::ReadSceptical ( void *  pData,
unsigned long  WordCount,
unsigned long  WordSize 
)
protectedinherited

Just an internal wrapper for the main Read() method with additional Exception throwing on errors.

Definition at line 388 of file RIFF.cpp.

References RIFF::Chunk::Read().

Referenced by RIFF::Chunk::ReadInt16(), RIFF::Chunk::ReadInt32(), RIFF::Chunk::ReadInt8(), RIFF::Chunk::ReadString(), RIFF::Chunk::ReadUint16(), RIFF::Chunk::ReadUint32(), and RIFF::Chunk::ReadUint8().

void RIFF::Chunk::ReadString ( String s,
int  size 
)
inherited

Reads a null-padded string of size characters and copies it into the string s.

The position within the chunk will automatically be incremented.

Parameters
sdestination string
sizenumber of characters to read
Exceptions
RIFF::Exceptionif an error occured or less than size characters could be read!

Definition at line 607 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

Referenced by gig::MidiRuleAlternator::MidiRuleAlternator().

unsigned long RIFF::Chunk::ReadUint16 ( uint16_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Reads WordCount number of 16 Bit unsigned integer words and copies it into the buffer pointed by pData.

The buffer has to be allocated. Endian correction will automatically be done if needed. The position within the chunk will automatically be incremented.

Parameters
pDatadestination buffer
WordCountnumber of 8 Bit unsigned integers to read
Returns
number of read integers
Exceptions
RIFF::Exceptionif an error occured or less than WordCount integers could be read!

Definition at line 516 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

Referenced by gig::DimensionRegion::DimensionRegion(), gig::Instrument::Instrument(), gig::MidiRuleLegato::MidiRuleLegato(), DLS::Region::Region(), DLS::Sample::Sample(), DLS::Sampler::Sampler(), and sf2::Version::Version().

uint16_t RIFF::Chunk::ReadUint16 ( )
inherited

Reads one 16 Bit unsigned integer word and increments the position within the chunk.

Endian correction will automatically be done if needed.

Returns
read integer word
Exceptions
RIFF::Exceptionif an error occured

Definition at line 689 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

unsigned long RIFF::Chunk::ReadUint32 ( uint32_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Reads WordCount number of 32 Bit unsigned integer words and copies it into the buffer pointed by pData.

The buffer has to be allocated. Endian correction will automatically be done if needed. The position within the chunk will automatically be incremented.

Parameters
pDatadestination buffer
WordCountnumber of 32 Bit unsigned integers to read
Returns
number of read integers
Exceptions
RIFF::Exceptionif an error occured or less than WordCount integers could be read!

Definition at line 590 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

Referenced by DLS::Articulation::Articulation(), DLS::File::File(), DLS::Instrument::Instrument(), gig::Instrument::Instrument(), Korg::KSFSample::KSFSample(), DLS::Region::Region(), gig::Region::Region(), DLS::Sample::Sample(), DLS::Sampler::Sampler(), and gig::Script::Script().

uint32_t RIFF::Chunk::ReadUint32 ( )
inherited

Reads one 32 Bit unsigned integer word and increments the position within the chunk.

Endian correction will automatically be done if needed.

Returns
read integer word
Exceptions
RIFF::Exceptionif an error occured

Definition at line 723 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

unsigned long RIFF::Chunk::ReadUint8 ( uint8_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Reads WordCount number of 8 Bit unsigned integer words and copies it into the buffer pointed by pData.

The buffer has to be allocated. The position within the chunk will automatically be incremented.

Parameters
pDatadestination buffer
WordCountnumber of 8 Bit unsigned integers to read
Returns
number of read integers
Exceptions
RIFF::Exceptionif an error occured or less than WordCount integers could be read!

Definition at line 442 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

Referenced by gig::DimensionRegion::DimensionRegion(), gig::Instrument::Instrument(), Korg::KMPInstrument::KMPInstrument(), Korg::KMPRegion::KMPRegion(), Korg::KSFSample::KSFSample(), gig::MidiRuleAlternator::MidiRuleAlternator(), gig::MidiRuleCtrlTrigger::MidiRuleCtrlTrigger(), gig::MidiRuleLegato::MidiRuleLegato(), gig::Region::Region(), and gig::Script::Script().

uint8_t RIFF::Chunk::ReadUint8 ( )
inherited

Reads one 8 Bit unsigned integer word and increments the position within the chunk.

Returns
read integer word
Exceptions
RIFF::Exceptionif an error occured

Definition at line 655 of file RIFF.cpp.

References RIFF::Chunk::ReadSceptical().

void RIFF::Chunk::ReleaseChunkData ( )
inherited

Free loaded chunk body from RAM.

Frees loaded chunk body data from memory (RAM). You should call File::Save() before calling this method if you modified the data to make the changes persistent.

Definition at line 797 of file RIFF.cpp.

References RIFF::Chunk::pChunkData.

Referenced by DLS::Sample::ReleaseSampleData().

unsigned long RIFF::Chunk::RemainingBytes ( )
inherited

Returns the number of bytes left to read in the chunk body.

When reading data from the chunk using the Read*() Methods, the position within the chunk data (that is the chunk body) will be incremented by the number of read bytes and RemainingBytes() returns how much data is left to read from the current position to the end of the chunk data.

Returns
number of bytes left to read

Definition at line 231 of file RIFF.cpp.

References RIFF::Chunk::CurrentChunkSize, and RIFF::Chunk::ulPos.

Referenced by gig::DimensionRegion::DimensionRegion(), RIFF::List::LoadSubChunks(), gig::Sample::Read(), and DLS::Region::Region().

void RIFF::Chunk::Resize ( int  iNewSize)
inherited

Resize chunk.

Resizes this chunk's body, that is the actual size of data possible to be written to this chunk. This call will return immediately and just schedule the resize operation. You should call File::Save() to actually perform the resize operation(s) "physically" to the file. As this can take a while on large files, it is recommended to call Resize() first on all chunks which have to be resized and finally to call File::Save() to perform all those resize operations in one rush.

Caution: You cannot directly write to enlarged chunks before calling File::Save() as this might exceed the current chunk's body boundary!

Parameters
iNewSize- new chunk body size in bytes (must be greater than zero)
Exceptions
RIFF::Exceptionif iNewSize is less than 1
See also
File::Save()

Definition at line 822 of file RIFF.cpp.

References LogAsResized(), RIFF::Chunk::NewChunkSize, and RIFF::Chunk::pFile.

Referenced by RIFF::List::AddSubChunk(), DLS::Sample::Resize(), DLS::Articulation::UpdateChunks(), DLS::Sampler::UpdateChunks(), DLS::File::UpdateChunks(), gig::Script::UpdateChunks(), gig::Instrument::UpdateChunks(), and gig::File::UpdateChunks().

void RIFF::File::Save ( )
virtual

Save changes to same file.

Make all changes of all chunks persistent by writing them to the actual (same) file. The file might temporarily grow to a higher size than it will have at the end of the saving process, in case chunks were grown.

Exceptions
RIFF::Exceptionif there is an empty chunk or empty list chunk or any kind of IO error occured

Definition at line 1743 of file RIFF.cpp.

References _GET_RESIZED_CHUNKS, RIFF::Chunk::GetSize(), hFileRead, hFileWrite, Layout, RIFF::layout_flat, RIFF::List::LoadSubChunksRecursively(), RIFF_HEADER_SIZE, SetMode(), RIFF::stream_mode_read_write, RIFF::Chunk::ulPos, and RIFF::List::WriteChunk().

Referenced by DLS::File::Save().

void RIFF::File::Save ( const String path)
virtual

Save changes to another file.

Make all changes of all chunks persistent by writing them to another file. Caution: this method is optimized for writing to another file, do not use it to save the changes to the same file! Use File::Save() in that case instead! Ignoring this might result in a corrupted file, especially in case chunks were resized!

After calling this method, this File object will be associated with the new file (given by path) afterwards.

Parameters
path- path and file name where everything should be written to

Definition at line 1836 of file RIFF.cpp.

References _GET_RESIZED_CHUNKS, bIsNewFile, Filename, hFileRead, hFileWrite, Layout, RIFF::layout_flat, RIFF::List::LoadSubChunksRecursively(), SetMode(), RIFF::stream_mode_read, RIFF::stream_mode_read_write, and RIFF::List::WriteChunk().

void RIFF::File::SetByteOrder ( endian_t  Endian)

Set the byte order to be used when saving.

Set the byte order to be used in the file. A value of endian_little will create a RIFF file, endian_big a RIFX file and endian_native will create a RIFF file on little-endian machines and RIFX on big-endian machines.

Parameters
Endian- endianess to use when file is saved.

Definition at line 1725 of file RIFF.cpp.

References bEndianNative, RIFF::endian_big, and RIFF::endian_little.

Referenced by File(), and DLS::File::File().

void RIFF::File::SetFileName ( const String path)

Definition at line 1600 of file RIFF.cpp.

References Filename.

Referenced by DLS::File::SetFileName().

bool RIFF::File::SetMode ( stream_mode_t  NewMode)

Change file access mode.

Changes files access mode either to read-only mode or to read/write mode.

Parameters
NewMode- new file access mode
Returns
true if mode was changed, false if current mode already equals new mode
Exceptions
RIFF::Exceptionif new file access mode is unknown

Definition at line 1622 of file RIFF.cpp.

References RIFF::List::__resetPos(), Filename, hFileRead, hFileWrite, RIFF::stream_mode_closed, RIFF::stream_mode_read, and RIFF::stream_mode_read_write.

Referenced by Save().

unsigned long RIFF::Chunk::SetPos ( unsigned long  Where,
stream_whence_t  Whence = stream_start 
)
inherited
void RIFF::Chunk::swapBytes ( void *  Word,
unsigned long  WordSize 
)
inlineprotectedinherited

Definition at line 251 of file RIFF.h.

Referenced by RIFF::Chunk::Read(), and RIFF::Chunk::Write().

void RIFF::Chunk::swapBytes_16 ( void *  Word)
inlineprotectedinherited

Definition at line 238 of file RIFF.h.

Referenced by RIFF::Chunk::Read(), and RIFF::Chunk::Write().

void RIFF::Chunk::swapBytes_32 ( void *  Word)
inlineprotectedinherited
void RIFF::File::UnlogResized ( Chunk pResizedChunk)
protected

Definition at line 1947 of file RIFF.cpp.

References _GET_RESIZED_CHUNKS.

Referenced by RIFF::Chunk::~Chunk().

unsigned long RIFF::Chunk::Write ( void *  pData,
unsigned long  WordCount,
unsigned long  WordSize 
)
inherited

Writes WordCount number of data words with given WordSize from the buffer pointed by pData.

Be sure to provide the correct WordSize, as this will be important and taken into account for eventual endian correction (swapping of bytes due to different native byte order of a system). The position within the chunk will automatically be incremented.

Parameters
pDatasource buffer (containing the data)
WordCountnumber of data words to write
WordSizesize of each data word to write
Returns
number of successfully written data words
Exceptions
RIFF::Exceptionif write operation would exceed current chunk size or any IO error occured
See also
Resize()

Definition at line 338 of file RIFF.cpp.

References bEndianNative, RIFF::Chunk::CurrentChunkSize, hFileWrite, RIFF::Chunk::pFile, RIFF::Chunk::SetPos(), RIFF::stream_curpos, RIFF::stream_mode_read_write, RIFF::Chunk::swapBytes(), RIFF::Chunk::swapBytes_16(), RIFF::Chunk::swapBytes_32(), RIFF::Chunk::ulPos, and RIFF::Chunk::ulStartPos.

Referenced by DLS::Sample::Write(), gig::Sample::Write(), RIFF::Chunk::WriteInt16(), RIFF::Chunk::WriteInt32(), RIFF::Chunk::WriteInt8(), RIFF::Chunk::WriteUint16(), RIFF::Chunk::WriteUint32(), and RIFF::Chunk::WriteUint8().

unsigned long RIFF::List::WriteChunk ( unsigned long  ulWritePos,
unsigned long  ulCurrentDataOffset 
)
protectedvirtualinherited

Write list chunk persistently e.g.

to disk.

Stores the list chunk persistently to its actual "physical" file. All subchunks (including sub list chunks) will be stored recursively as well.

Parameters
ulWritePos- position within the "physical" file where this list chunk should be written to
ulCurrentDataOffset- offset of current (old) data within the file
Returns
new write position in the "physical" file, that is ulWritePos incremented by this list chunk's new size (including its header size of course)

Reimplemented from RIFF::Chunk.

Definition at line 1391 of file RIFF.cpp.

References RIFF::Chunk::CurrentChunkSize, LIST_HEADER_SIZE, RIFF::Chunk::NewChunkSize, RIFF::Chunk::pFile, RIFF::List::pSubChunks, RIFF::stream_mode_read_write, RIFF::Chunk::ulStartPos, and RIFF::List::WriteHeader().

Referenced by Save().

void RIFF::List::WriteHeader ( unsigned long  fPos)
protectedinherited
unsigned long RIFF::Chunk::WriteInt16 ( int16_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Writes WordCount number of 16 Bit signed integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file.

The position within the chunk will automatically be incremented. Note: you cannot write beyond the boundaries of the chunk, to append data to the chunk call Resize() before.

Parameters
pDatasource buffer (containing the data)
WordCountnumber of 16 Bit signed integers to write
Returns
number of written integers
Exceptions
RIFF::Exceptionif an IO error occured
See also
Resize()

Definition at line 500 of file RIFF.cpp.

References RIFF::Chunk::Write().

unsigned long RIFF::Chunk::WriteInt32 ( int32_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Writes WordCount number of 32 Bit signed integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file.

The position within the chunk will automatically be incremented. Note: you cannot write beyond the boundaries of the chunk, to append data to the chunk call Resize() before.

Parameters
pDatasource buffer (containing the data)
WordCountnumber of 32 Bit signed integers to write
Returns
number of written integers
Exceptions
RIFF::Exceptionif an IO error occured
See also
Resize()

Definition at line 574 of file RIFF.cpp.

References RIFF::Chunk::Write().

unsigned long RIFF::Chunk::WriteInt8 ( int8_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Writes WordCount number of 8 Bit signed integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file.

The position within the chunk will automatically be incremented. Note: you cannot write beyond the boundaries of the chunk, to append data to the chunk call Resize() before.

Parameters
pDatasource buffer (containing the data)
WordCountnumber of 8 Bit signed integers to write
Returns
number of written integers
Exceptions
RIFF::Exceptionif an IO error occured
See also
Resize()

Definition at line 426 of file RIFF.cpp.

References RIFF::Chunk::Write().

unsigned long RIFF::Chunk::WriteUint16 ( uint16_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Writes WordCount number of 16 Bit unsigned integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file.

The position within the chunk will automatically be incremented. Note: you cannot write beyond the boundaries of the chunk, to append data to the chunk call Resize() before.

Parameters
pDatasource buffer (containing the data)
WordCountnumber of 16 Bit unsigned integers to write
Returns
number of written integers
Exceptions
RIFF::Exceptionif an IO error occured
See also
Resize()

Definition at line 537 of file RIFF.cpp.

References RIFF::Chunk::Write().

unsigned long RIFF::Chunk::WriteUint32 ( uint32_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Writes WordCount number of 32 Bit unsigned integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file.

The position within the chunk will automatically be incremented. Note: you cannot write beyond the boundaries of the chunk, to append data to the chunk call Resize() before.

Parameters
pDatasource buffer (containing the data)
WordCountnumber of 32 Bit unsigned integers to write
Returns
number of written integers
Exceptions
RIFF::Exceptionif an IO error occured
See also
Resize()

Definition at line 628 of file RIFF.cpp.

References RIFF::Chunk::Write().

Referenced by gig::File::SetSampleChecksum(), and gig::Instrument::UpdateScriptFileOffsets().

unsigned long RIFF::Chunk::WriteUint8 ( uint8_t *  pData,
unsigned long  WordCount = 1 
)
inherited

Writes WordCount number of 8 Bit unsigned integer words from the buffer pointed by pData to the chunk's body, directly to the actual "physical" file.

The position within the chunk will automatically be incremented. Note: you cannot write beyond the boundaries of the chunk, to append data to the chunk call Resize() before.

Parameters
pDatasource buffer (containing the data)
WordCountnumber of 8 Bit unsigned integers to write
Returns
number of written integers
Exceptions
RIFF::Exceptionif an IO error occured
See also
Resize()

Definition at line 463 of file RIFF.cpp.

References RIFF::Chunk::Write().

Friends And Related Function Documentation

friend class Chunk
friend

Definition at line 361 of file RIFF.h.

friend class List
friend

Definition at line 362 of file RIFF.h.

Member Data Documentation

bool RIFF::File::bEndianNative
protected
bool RIFF::File::bIsNewFile
protected

Definition at line 356 of file RIFF.h.

Referenced by IsNew(), and Save().

ChunkList::iterator RIFF::List::ChunksIterator
protectedinherited

Definition at line 308 of file RIFF.h.

Referenced by RIFF::List::GetFirstSubChunk(), and RIFF::List::GetNextSubChunk().

String RIFF::File::Filename
protected

Definition at line 354 of file RIFF.h.

Referenced by GetFileName(), RIFF::Chunk::LoadChunkData(), Save(), SetFileName(), and SetMode().

int RIFF::File::hFileRead
protected
int RIFF::File::hFileWrite
protected

handle / descriptor for writing to (some) file

Definition at line 346 of file RIFF.h.

Referenced by File(), Save(), SetMode(), RIFF::Chunk::Write(), RIFF::Chunk::WriteChunk(), RIFF::Chunk::WriteHeader(), and RIFF::List::WriteHeader().

layout_t RIFF::File::Layout
protected

An ordinary RIFF file is always set to layout_standard.

Definition at line 357 of file RIFF.h.

Referenced by GetLayout(), and Save().

ChunkList::iterator RIFF::List::ListIterator
protectedinherited

Definition at line 309 of file RIFF.h.

Referenced by RIFF::List::GetFirstSubList(), and RIFF::List::GetNextSubList().

uint8_t* RIFF::Chunk::pChunkData
protectedinherited
List* RIFF::Chunk::pParent
protectedinherited

Definition at line 226 of file RIFF.h.

Referenced by RIFF::Chunk::Chunk(), and RIFF::Chunk::GetParent().

unsigned long RIFF::Chunk::ulChunkDataSize
protectedinherited

Definition at line 231 of file RIFF.h.

Referenced by RIFF::Chunk::Chunk(), and RIFF::Chunk::LoadChunkData().


The documentation for this class was generated from the following files: