123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #ifndef AFUN_PARSER_READER_H
- #define AFUN_PARSER_READER_H
- #include "aFuntool.h"
- #include "aFunParserExport.h"
- namespace aFunparser {
- class AFUN_PARSER_EXPORT Reader {
- public:
- typedef enum ReadMode {
- read_mode_normal = 0,
- read_mode_finished = 1,
- read_mode_error = 2,
- } ReadMode;
- AFUN_STATIC const size_t DEFAULT_BUF_SIZE = 1024;
- AFUN_STATIC const size_t NEW_BUF_SIZE = 512;
- AFUN_INLINE explicit Reader(aFuntool::FilePath path_, aFuntool::FileLine line_ = 1);
- Reader(const Reader &) = delete;
- virtual ~Reader();
- Reader &operator=(const Reader &) = delete;
- virtual size_t readText(char *dest, size_t len, ReadMode &mode) = 0;
- [[nodiscard]] AFUN_INLINE size_t countRead() const;
- [[nodiscard]] AFUN_INLINE bool isEnd() const;
- [[nodiscard]] AFUN_INLINE bool isError() const;
- [[nodiscard]] AFUN_INLINE aFuntool::FileLine getFileLine() const;
- [[nodiscard]] AFUN_INLINE const aFuntool::FilePath &getFilePath() const;
- char *readWord(size_t del_index);
- void readFirstWord();
- char getChar();
- private:
- char *buf;
- size_t buf_size; // buf的长度-1
- char *read;
- bool read_end;
- bool read_error;
- aFuntool::FileLine line;
- aFuntool::FilePath path;
- };
- }
- #include "parser-reader.inline.h"
- #endif //AFUN_PARSER_READER_H
|