00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef __BxBinxFileWriter__
00018 #define __BxBinxFileWriter__
00019
00020 #include <stdio.h>
00021
00022 #include "BxBinxFile.h"
00023 #include "BxDataObjects.h"
00024
00025 class BxDataObject;
00026 class BxDataset;
00027 class BxArray;
00028 class BxUnion;
00029
00050 class DECLSPEC BxBinxFileWriter : public BxBinxFile
00051 {
00052 public:
00053 BxBinxFileWriter();
00054 BxBinxFileWriter(const char * filename);
00055 virtual ~BxBinxFileWriter();
00056
00057 virtual char * className() const { return "BxBinxFileWriter"; }
00058
00059 bool save();
00060 bool save(const char * filename);
00061 bool saveDataBinx(FILE *);
00062
00063 bool createBinxFile(const char * filename);
00064 bool addTypeDefinition(BxDataObject *);
00065 bool removeTypeDefinition(const char * typeName);
00066
00067 private:
00068 void clear();
00069 bool writeDocument(FILE *);
00070 bool writeDefinitions(FILE *);
00071 bool writeFileStructures(FILE *);
00072 bool writeDataset(FILE *,BxDataset *);
00073 bool writeArray(FILE *,BxArray *);
00074 bool writeUnion(FILE *,BxUnion *);
00075 void writePrimitives(FILE *,BxDataObject * pd, bool addAttributes);
00076 void writeAttributes(FILE *,BxDataObject * pd, bool useType);
00077 FILE * createFile(const char * filename);
00078
00079 private:
00080 BxDataObjects definitions_;
00081 FILE * fileptr_;
00082 };
00083
00084 #endif
00085