📄 stream.h
字号:
virtual void putLenString(const byte *string, int length, const char *desc);};/* cntl cmd */#define FCNTL_MODS_INVD 0x00000001#define FCNTL_MODS_FLUSH 0x00000002#define FCNTL_MODS_CLEAR_DIRTY_RANGE 0x00000003 // const FileOfs offset, const FileOfs range#define FCNTL_MODS_IS_DIRTY 0x00000004 // const FileOfs offset, const FileOfs range, bool &isdirty#define FCNTL_CACHE_INVD 0x00000005#define FCNTL_FLUSH_STAT 0x00000006#define FCNTL_GET_RELOC 0x00000007 // bool &enabled#define FCNTL_SET_RELOC 0x00000008 // bool enable#define FCNTL_GET_FD 0x00000009 // int &fd// Return a "modification count" that changes, every time the file state// ( content, size, pstat ) changes.// While identical mod-counts imply identical file states,// different mod-counts do not necessarily imply different file states !#define FCNTL_GET_MOD_COUNT 0x00000009 // int &mcount#define IS_DIRTY_SINGLEBIT 0x80000000/** * A file. */class File: public Stream {protected: int mcount;public: File(); /* new */ int cntl(uint cmd, ...); virtual void cut(FileOfs size); virtual void extend(FileOfs newsize); virtual String & getFilename(String &result) const; virtual FileOfs getSize() const; virtual void insert(const void *buf, FileOfs size); virtual void pstat(pstat_t &s) const; virtual void seek(FileOfs offset); virtual FileOfs tell() const; virtual void truncate(FileOfs newsize); virtual int vcntl(uint cmd, va_list vargs); void move(FileOfs src, FileOfs dest, FileOfs size); char * fgetstrz();};/** * A file, layering a file. */class FileLayer: public File {protected: File *mFile; bool mOwnFile;public: FileLayer(File *file, bool own_file); virtual ~FileLayer(); /* extends File */ virtual void cut(FileOfs size); virtual void extend(FileOfs newsize); virtual IOAccessMode getAccessMode() const; virtual String & getDesc(String &result) const; virtual String & getFilename(String &result) const; virtual FileOfs getSize() const; virtual void insert(const void *buf, FileOfs size); virtual void pstat(pstat_t &s) const; virtual uint read(void *buf, uint size); virtual void seek(FileOfs offset); virtual int setAccessMode(IOAccessMode mode); virtual FileOfs tell() const; virtual void truncate(FileOfs newsize); virtual int vcntl(uint cmd, va_list vargs); virtual uint write(const void *buf, uint size); /* new */ File * getLayered() const; virtual void setLayered(File *newLayered, bool ownNewLayered);};/** * A local file (file descriptor [fd]). */class LocalFileFD: public File {protected: String mFilename; FileOpenMode mOpenMode; int fd; bool own_fd; FileOfs offset; int setAccessModeInternal(IOAccessMode mode);public: LocalFileFD(const String &aFilename, IOAccessMode mode, FileOpenMode aOpenMode); LocalFileFD(int fd, bool own_fd, IOAccessMode mode); virtual ~LocalFileFD(); /* extends File */ virtual String & getDesc(String &result) const; virtual String & getFilename(String &result) const; virtual FileOfs getSize() const; virtual uint read(void *buf, uint size); virtual void seek(FileOfs offset); virtual int setAccessMode(IOAccessMode mode); virtual FileOfs tell() const; virtual void truncate(FileOfs newsize); virtual int vcntl(uint cmd, va_list vargs); virtual uint write(const void *buf, uint size);};/** * A local file (file stream [FILE*]). */class LocalFile: public File {protected: String mFilename; FileOpenMode mOpenMode; SYS_FILE * file; bool own_file; FileOfs offset; int setAccessModeInternal(IOAccessMode mode);public: LocalFile(const String &aFilename, IOAccessMode mode, FileOpenMode aOpenMode); LocalFile(SYS_FILE *file, bool own_file, IOAccessMode mode); virtual ~LocalFile(); /* extends File */ virtual String & getDesc(String &result) const; virtual String & getFilename(String &result) const; virtual FileOfs getSize() const; virtual void pstat(pstat_t &s) const; virtual uint read(void *buf, uint size); virtual void seek(FileOfs offset); virtual int setAccessMode(IOAccessMode mode); virtual FileOfs tell() const; virtual void truncate(FileOfs newsize); virtual int vcntl(uint cmd, va_list vargs); virtual uint write(const void *buf, uint size);};/** * A temporary file. */class TempFile: public LocalFile {public: TempFile(IOAccessMode mode); /* extends File */ virtual String & getDesc(String &result) const; virtual void pstat(pstat_t &s) const;};/** * A fixed-size, read-only file, mapping a area of memory. */class ConstMemMapFile: public File {protected: FileOfs ofs, pos; uint size; const void *buf;public: ConstMemMapFile(const void *buf, uint size, FileOfs ofs=0); /* extends File */ virtual String & getDesc(String &result) const; virtual FileOfs getSize() const; virtual uint read(void *buf, uint size); virtual void seek(FileOfs offset); virtual FileOfs tell() const;};/** * A fixed-size file, mapping a area of memory. */class MemMapFile: public ConstMemMapFile {public: MemMapFile(void *buf, uint size, FileOfs ofs=0); /* extends Stream */ virtual uint write(const void *buf, uint size);};/** * A (read-only) file with zero-content. */class NullFile: public File {public: NullFile(); /* extends File */ virtual void extend(FileOfs newsize); virtual String & getDesc(String &result) const; virtual FileOfs getSize() const; virtual void pstat(pstat_t &s) const; virtual uint read(void *buf, uint size); virtual void seek(FileOfs offset); virtual int setAccessMode(IOAccessMode mode); virtual FileOfs tell() const; virtual void truncate(FileOfs newsize); virtual uint write(const void *buf, uint size);};/** * A file, existing only in memory. */class MemoryFile: public File {protected: FileOfs ofs; FileOfs pos; uint bufsize, dsize, ibufsize; byte *buf; virtual uint extendBufSize(uint bufsize); virtual uint shrinkBufSize(uint bufsize); void extendBuf(); void shrinkBuf(); void resizeBuf(uint newsize);public: MemoryFile(FileOfs ofs = 0, uint size = 0, IOAccessMode mode = IOAM_READ | IOAM_WRITE); virtual ~MemoryFile(); /* extends File */ virtual void extend(FileOfs newsize); virtual IOAccessMode getAccessMode() const; virtual String & getDesc(String &result) const; virtual FileOfs getSize() const; virtual void pstat(pstat_t &s) const; virtual uint read(void *buf, uint size); virtual void seek(FileOfs offset); virtual int setAccessMode(IOAccessMode mode); virtual FileOfs tell() const; virtual void truncate(FileOfs newsize); virtual uint write(const void *buf, uint size); /* new */ byte * getBufPtr() const;};/** * A file layer, representing a cropped version of a file */class CroppedFile: public FileLayer {protected: FileOfs mCropStart; bool mHasCropSize; FileOfs mCropSize;public: // crop [start; start+size-1] CroppedFile(File *file, bool own_file, FileOfs aCropStart, FileOfs aCropSize); // no size, just start CroppedFile(File *file, bool own_file, FileOfs aCropStart); /* extends FileLayer */ virtual void extend(FileOfs newsize); virtual String & getDesc(String &result) const; virtual FileOfs getSize() const; virtual void pstat(pstat_t &s) const; virtual uint read(void *buf, uint size); virtual void seek(FileOfs offset); virtual FileOfs tell() const; virtual void truncate(FileOfs newsize); virtual uint write(const void *buf, uint size);};#endif /* __STREAM_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -