Main Page   Namespace List   Class Hierarchy   Compound List   File List   Compound Members   File Members  

datafile_writer.h

Go to the documentation of this file.
00001 /*
00002         ClanLib, the platform independent game SDK.
00003         This library is distributed under the GNU LIBRARY GENERAL PUBLIC
00004         LICENSE version 2. See COPYING for details. For a total list of
00005         contributers see CREDITS.
00006 
00007         $Id: datafile_writer.h,v 1.2 2000/07/15 15:45:50 starch Exp $
00008 
00009 */
00010 
00011 #ifndef header_datafilewriter
00012 #define header_datafilewriter
00013 
00014 #define datafile_id "ClanSoft datafile version 3.0"
00015 
00016 #include <list>
00017 
00018 #ifdef __BEOS__
00019 #include <gnu/zlib.h>
00020 #else
00021 #include <zlib.h> // Zlib compression library
00022 #endif
00023 
00024 #include "API/Core/System/clanstring.h"
00025 #include "API/Core/IOData/outputsource.h"
00026 #include "API/Core/IOData/outputsource_provider.h"
00027 
00028 /*
00029 class CL_Datafile_Write
00030 {
00031 protected:
00032         char *filename;
00033 
00034         int datafile;
00035         int index;
00036         int data;
00037         gzFile data_indexed;
00038         bool index_open;
00039         int num_indexes;
00040 
00041         void init_datafile();
00042         void finish_datafile();
00043 
00044         void copy_file(int dest, int source, long len);
00045 
00046         int cur_index_size;
00047 
00048 public:
00049         CL_Datafile_Write(char *filename);
00050         virtual ~CL_Datafile_Write();
00051 
00052         void create_index(char *index);
00053         void write_data(void *data, int data_size);
00054         gzFile get_file_pointer();
00055 };
00056 */
00057 
00058 class DatafileIndex
00059 {
00060 public:
00061         CL_String name;
00062         int pos;
00063         int size;
00064 
00065         DatafileIndex(const char *_name, int _pos)
00066         {
00067                 name = _name;
00068                 pos = _pos;
00069                 size = 0;
00070         }
00071 };
00072 
00073 class OutputSourceProvider_Datafile : public CL_OutputSourceProvider
00074 {
00075 protected:
00076         CL_String filename;
00077         int datafile_fd;
00078 
00079         std::list<DatafileIndex*> indexes;
00080 
00081 public:
00082         OutputSourceProvider_Datafile(const char *filename);
00083         virtual ~OutputSourceProvider_Datafile();
00084 
00085         gzFile create_index(const char *index);
00086         void close_index(gzFile gz_fd, int size);
00087 
00088         virtual CL_OutputSource *open_source(const char *handle);
00089         virtual CL_OutputSourceProvider *clone();
00090 };
00091 
00092 class OutputSource_Datafile : public CL_OutputSource
00093 {
00094 protected:
00095         OutputSourceProvider_Datafile *provider;
00096         gzFile output_fd;
00097         int pos;
00098 
00099 public:
00100         OutputSource_Datafile(const char *handle, OutputSourceProvider_Datafile *provider);
00101         virtual ~OutputSource_Datafile();
00102 
00103         virtual void set_system_mode();
00104         virtual void set_big_endian_mode();
00105         virtual void set_little_endian_mode();
00106 
00107         virtual void write_int32(int data);
00108         virtual void write_uint32(unsigned int data);
00109 
00110         virtual void write_short16(short data);
00111         virtual void write_ushort16(unsigned short data);
00112 
00113         virtual void write_char8(char data);
00114         virtual void write_uchar8(unsigned char data);
00115 
00116         virtual void write_float32(float data);
00117 
00118         virtual int write(const void *data, int size);
00119 
00120         virtual void open();
00121         virtual void close();
00122 
00123         virtual CL_OutputSource *clone();
00124 
00125         virtual int tell();
00126         virtual int size();
00127 
00128         virtual void write_string(const char *string);
00129 };
00130 
00131 #endif

Generated at Wed Apr 4 19:53:59 2001 for ClanLib by doxygen1.2.6 written by Dimitri van Heesch, © 1997-2001