#ifndef __ISOBUILDER_H__ #define __ISOBUILDER_H__ #include #include "cdutils.h" #include "yazedc.h" class isobuilder : public Base { public: struct Date { int year, month, day, hour, minute, second, hundredths, offset; void dump(Byte * datas); Date(int = 0); Date(Byte * datas); }; struct PVD { String sysid, volid; String volsetid, pubid, prepid, appid; String copyright, abstract, biblio; Date volcreat, modif, volexp, voleff; Byte appdata[512]; }; class DirTree : public Base { public: DirTree(DirTree * father, bool dir = true); virtual ~DirTree(); void fromdir(cdutils::DirEntry *); void dumpdirs(isobuilder *) throw (GeneralException); int buildpath(Byte * datas, int size, bool bigendian = false) throw (GeneralException); void setbasicsxa(); int sector; int size; bool hidden; String name; Date creation; bool have_xa, xa_dir, xa_audio, xa_str, xa_xa, xa_form1; int buildentry(Byte * buffer, int spaceleft, bool put_xa = true); int mode; private: DirTree * father, * child, * brother; bool dir; int node; int numerate(int); }; isobuilder(Handle * w, int mode = MODE2_FORM1); ~isobuilder(); void foreword(Handle * forewords, int mode = MODE_RAW); void foreword(Byte * forewords, int mode = MODE_RAW); int getdispsect(); int putfile(Handle * file, int mode = -1, int n = -1); void putdatas(Byte * datas, size_t size, int mode = -1, int n = -1); void createsector(Byte * datas, int type = -1, int n = -1); void setEOF(); void clearEOF(); DirTree * setbasics(PVD pvd, int rootsize = 1, int ptsize = 1, int nvd = 1) throw (GeneralException); DirTree * createdir(DirTree *, const String & _name, int size = 1, cdutils::DirEntry * = 0, int mode = MODE2_FORM1) throw (GeneralException); DirTree * createfile(DirTree *, Handle * file, const String & _name, cdutils::DirEntry * = 0, int mode = MODE2_FORM1) throw (GeneralException); void copydir(DirTree *, const String & _name, cdutils *, cdutils::DirEntry *, int mode = MODE2_FORM1); static PVD createpvd(Handle *); static PVD createpvd(cdutils *); static PVD createpvd(Byte *); void close(Handle * cue = 0, int mode = -1) throw (GeneralException); private: Handle * w; int sector, nsectors; int sub_EOF, sub_EOR; bool basics; PVD pvd; int rootsize, ptsize, nvd, ptsect, rootsect; int lastdispsect; DirTree * root; yazedc yazedc_o; bool closed; int dmode; }; #endif