123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281 |
- #ifndef __NEROFILESYSTEMCONTENT_H
- #define __NEROFILESYSTEMCONTENT_H
- #if defined(__BORLANDC__)
- #pragma pack(push, 8)
- #pragma option push -b
- #endif
- namespace FileSystemContent
- {
- class InterfaceBase
- {
- public:
-
-
-
- virtual void *GetOtherInterface(int interfaceId) const
- {
- return 0;
- }
- virtual void *GetOtherInterface(const char *interfaceName) const
- {
- return 0;
- }
- protected:
- virtual ~InterfaceBase() {}
- };
- class IFileContent : public InterfaceBase
- {
- public:
- virtual unsigned Read(void *pBuffer,unsigned length) =0;
- virtual bool EndOfFile() =0;
- virtual bool Error() =0;
-
- virtual void Release() = 0;
- };
- class IDirectory;
- class IDirectoryEntry : public InterfaceBase
- {
- public:
- enum ENTRY_ERROR
- {
- ENTRY_NO_ERROR,
- SEQUENCING_ERROR,
- ERROR_NOT_A_FILE,
- NOT_AVAILABLE,
- INTERFACE_ERROR,
- FEATURE_NOT_AVAILABLE
- };
- enum {
- MODE2_FORM2 =1<<0,
- FIXED_INSIDE_VOLUME_SPACE =1<<1,
- FIXED_OUTSIDE_VOLUME_SPACE =1<<2,
- NO_OWN_CONTENT =1<<3
- };
-
- virtual const char *GetName() const =0;
- virtual const IDirectory *GetSubDirectory() const =0;
- virtual ENTRY_ERROR GetContent(IFileContent **) const =0;
- virtual const char *GetSourceFilePath() const =0;
- virtual __int64 GetSize() const =0;
- virtual int GetFilePriority() const =0;
- virtual int GetDirOrder() const =0;
- virtual int GetId() const =0;
- virtual unsigned GetDataStartSec() const =0;
- };
- class IDirectory : public InterfaceBase
- {
- public:
- virtual int GetNumEntries() const =0;
- virtual const IDirectoryEntry *GetDirectoryEntry(int i) const =0;
- };
- class IFileSystemContent : public InterfaceBase
- {
- public:
- virtual const char *GetName() const =0;
- virtual const IDirectory *GetRoot() const =0;
- };
- class IDataInputStream : public InterfaceBase
- {
- public:
- virtual void Write(const void *buffer,int size) = 0;
- };
- class IFileProducer : public InterfaceBase
- {
- public:
-
-
- virtual IDirectoryEntry::ENTRY_ERROR ProduceFile(IDataInputStream *str) const = 0;
-
- virtual void Release() const = 0;
- };
- class IDirectoryContainer;
- class IDirectoryEntryContainer : public IDirectoryEntry
- {
- public:
-
- enum
- {
- IID_IDirectoryEntryContainer,
- IID_IFileProducer,
-
- IID_IDirectoryEntryContainer2,
- IID_IDirectoryEntry2
- };
-
- virtual void SetSize(__int64 size) =0;
-
-
- virtual void SetPriority(int priority) =0;
- virtual void SetDirOrder(int directoryPriority) =0;
-
- virtual void SetDataStartSec(unsigned) =0;
-
- virtual void SetFixedDataStartSec(unsigned) =0;
- virtual void SetFileNumber(int) =0;
- virtual void SetId(int) =0;
- virtual void SetFlags(bool enable,unsigned f) =0;
- };
- class IDirectoryEntryContainer2 : public IDirectoryEntryContainer
- {
- public:
-
- virtual const IFileProducer *GetFileProducer() const =0;
-
-
- virtual ENTRY_ERROR MeasureSize() =0;
-
-
-
- virtual ENTRY_ERROR SetDirRecordSize(__int64 size) =0;
- };
- class IDirectoryContainer : public IDirectory
- {
- public:
-
-
-
- virtual IDirectoryContainer *AddDirectory(const char *name, int directoryPriority) =0;
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- virtual IDirectoryEntryContainer *AddFile(const char *name,
- const IFileProducer *fp,__int64 size,
- int priority, int directoryPriority) = 0;
-
- virtual IDirectoryEntryContainer *AddFile(const char *name,
- const char *sourcePath,
- int priority, int directoryPriority) = 0;
-
-
- virtual bool RemoveEntry(const char *name) =0;
- virtual IDirectoryEntryContainer *Entry(const char *name) =0;
- virtual IDirectoryEntryContainer *Entry(int i) =0;
- virtual IDirectoryContainer *SubDirectory(const char *name) =0;
- };
- class IDirectoryContainerSearch {
- public:
- enum {
- SEARCH_DEPTH_INCL,
- SEARCH_CHILDREN_EXCL
- };
-
-
- virtual IDirectoryContainer *SubDirectoryEx(const char *name, unsigned mode, void *reserved) = 0;
- };
- struct IFileSystemDescContainer : public IFileSystemContent
- {
- virtual void SetName(const char *) =0;
- virtual IDirectoryContainer *Root() =0;
-
- virtual void Release() const = 0;
- };
- }
- #if defined(__BORLANDC__)
- #pragma pack(pop)
- #pragma option pop
- #endif
- #endif
|