/[svn]/libgig/trunk/src/RIFF.h
ViewVC logotype

Diff of /libgig/trunk/src/RIFF.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 780 by schoenebeck, Sun Sep 25 13:40:37 2005 UTC revision 1050 by schoenebeck, Fri Mar 2 01:04:45 2007 UTC
# Line 1  Line 1 
1  /***************************************************************************  /***************************************************************************
2   *                                                                         *   *                                                                         *
3   *   libgig - C++ cross-platform Gigasampler format file loader library    *   *   libgig - C++ cross-platform Gigasampler format file access library    *
4   *                                                                         *   *                                                                         *
5   *   Copyright (C) 2003-2005 by Christian Schoenebeck                      *   *   Copyright (C) 2003-2007 by Christian Schoenebeck                      *
6   *                              <cuse@users.sourceforge.net>               *   *                              <cuse@users.sourceforge.net>               *
7   *                                                                         *   *                                                                         *
8   *   This library is free software; you can redistribute it and/or modify  *   *   This library is free software; you can redistribute it and/or modify  *
# Line 24  Line 24 
24  #ifndef __RIFF_H__  #ifndef __RIFF_H__
25  #define __RIFF_H__  #define __RIFF_H__
26    
27  #define POSIX 1  #ifdef WIN32
28  #define DEBUG 0  # define POSIX 0
29    #endif
30    
31    #ifndef POSIX
32    # define POSIX 1
33    #endif
34    
35    #ifndef DEBUG
36    # define DEBUG 0
37    #endif
38    
39  #include <string>  #include <string>
40  #include <list>  #include <list>
# Line 45  Line 54 
54    
55  #include <stdint.h>  #include <stdint.h>
56    
57  //typedef unsigned char  uint8_t;  #ifdef WIN32
58  //typedef unsigned short uint16_t;  # include "../win32/libgig_private.h" // like config.h, automatically generated by Dev-C++
59  //typedef unsigned int   uint32_t;  # include <windows.h>
60      typedef unsigned int   uint;
61      typedef unsigned char  uint8_t;
62      typedef unsigned short uint16_t;
63      typedef unsigned int   uint32_t;
64    # define PACKAGE "libgig"
65    # define VERSION VER_STRING // VER_STRING defined in libgig_private.h
66    #endif // WIN32
67    
68  #include <stdio.h>  #include <stdio.h>
69    
# Line 78  namespace RIFF { Line 94  namespace RIFF {
94    
95      /** Whether file stream is open in read or in read/write mode. */      /** Whether file stream is open in read or in read/write mode. */
96      typedef enum {      typedef enum {
97          stream_mode_read,          stream_mode_read       = 0,
98          stream_mode_read_write          stream_mode_read_write = 1,
99            stream_mode_closed     = 2
100      } stream_mode_t;      } stream_mode_t;
101    
102      /** Current state of the file stream. */      /** Current state of the file stream. */
# Line 144  namespace RIFF { Line 161  namespace RIFF {
161              unsigned long ulStartPos;           /* actual position in file where chunk (without header) starts */              unsigned long ulStartPos;           /* actual position in file where chunk (without header) starts */
162              unsigned long ulPos;                /* # of bytes from ulStartPos */              unsigned long ulPos;                /* # of bytes from ulStartPos */
163              uint8_t*      pChunkData;              uint8_t*      pChunkData;
164                unsigned long ulChunkDataSize;
165    
166              Chunk(File* pFile);              Chunk(File* pFile);
167              Chunk(File* pFile, List* pParent, uint32_t uiChunkID, uint uiBodySize);              Chunk(File* pFile, List* pParent, uint32_t uiChunkID, uint uiBodySize);
# Line 222  namespace RIFF { Line 240  namespace RIFF {
240              void ReadHeader(unsigned long fPos);              void ReadHeader(unsigned long fPos);
241              void WriteHeader(unsigned long fPos);              void WriteHeader(unsigned long fPos);
242              void LoadSubChunks();              void LoadSubChunks();
243                void LoadSubChunksRecursively();
244              virtual unsigned long WriteChunk(unsigned long ulWritePos, unsigned long ulCurrentDataOffset);              virtual unsigned long WriteChunk(unsigned long ulWritePos, unsigned long ulCurrentDataOffset);
245              virtual void __resetPos(); ///< Sets List Chunk's read/write position to zero and causes all sub chunks to do the same.              virtual void __resetPos(); ///< Sets List Chunk's read/write position to zero and causes all sub chunks to do the same.
246      };      };
# Line 229  namespace RIFF { Line 248  namespace RIFF {
248      /** Parses arbitrary RIFF files and provides together with it's base classes convenient methods to walk through the RIFF tree. */      /** Parses arbitrary RIFF files and provides together with it's base classes convenient methods to walk through the RIFF tree. */
249      class File : public List {      class File : public List {
250          public:          public:
251              File();              File(uint32_t FileType);
252              File(const String& path);              File(const String& path);
253              stream_mode_t GetMode();              stream_mode_t GetMode();
254              bool          SetMode(stream_mode_t NewMode);              bool          SetMode(stream_mode_t NewMode);
# Line 241  namespace RIFF { Line 260  namespace RIFF {
260              #if POSIX              #if POSIX
261              int    hFileRead;  ///< handle / descriptor for reading from file              int    hFileRead;  ///< handle / descriptor for reading from file
262              int    hFileWrite; ///< handle / descriptor for writing to (some) file              int    hFileWrite; ///< handle / descriptor for writing to (some) file
263                #elif defined(WIN32)
264                HANDLE hFileRead;  ///< handle / descriptor for reading from file
265                HANDLE hFileWrite; ///< handle / descriptor for writing to (some) file
266              #else              #else
267              FILE*  hFileRead;  ///< handle / descriptor for reading from file              FILE*  hFileRead;  ///< handle / descriptor for reading from file
268              FILE*  hFileWrite; ///< handle / descriptor for writing to (some) file              FILE*  hFileWrite; ///< handle / descriptor for writing to (some) file
# Line 257  namespace RIFF { Line 279  namespace RIFF {
279    
280              unsigned long GetFileSize();              unsigned long GetFileSize();
281              void ResizeFile(unsigned long ulNewSize);              void ResizeFile(unsigned long ulNewSize);
282                #if POSIX
283                unsigned long __GetFileSize(int hFile);
284                #elif defined(WIN32)
285                unsigned long __GetFileSize(HANDLE hFile);
286                #else
287                unsigned long __GetFileSize(FILE* hFile);
288                #endif
289      };      };
290    
291      /** Will be thrown whenever an error occurs while parsing a RIFF file. */      /** Will be thrown whenever an error occurs while parsing a RIFF file. */

Legend:
Removed from v.780  
changed lines
  Added in v.1050

  ViewVC Help
Powered by ViewVC