__reader.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef AFUN_READER_H_
  2. #define AFUN_READER_H_
  3. #include <stdio.h>
  4. #include "aFunCoreExport.h" // reader.h 不包含 aFunCoreExport.h
  5. #include "tool.h"
  6. #include "reader.h"
  7. #define DEFAULT_BUF_SIZE (1024)
  8. #define NEW_BUF_SIZE (512)
  9. typedef struct af_Reader af_Reader;
  10. typedef size_t readerFunc(void *data, char *dest, size_t len);
  11. NEW_DLC_SYMBOL(readerFunc, readerFunc);
  12. typedef void destructReaderFunc(void *data);
  13. NEW_DLC_SYMBOL(destructReaderFunc, destructReaderFunc);
  14. struct af_Reader {
  15. DLC_SYMBOL(readerFunc) read_func;
  16. DLC_SYMBOL(destructReaderFunc) destruct;
  17. void *data;
  18. size_t data_size;
  19. char *buf;
  20. char *buf_end; // buf的尾部位置[NUL的位置]
  21. size_t buf_size; // buf的长度-1
  22. char *read;
  23. bool read_end;
  24. bool init; // 是否初始化
  25. };
  26. /* Reader 创建与释放 */
  27. AFUN_CORE_NO_EXPORT af_Reader *makeReader(DLC_SYMBOL(readerFunc) read_func, DLC_SYMBOL(destructReaderFunc) destruct_func, size_t data_size);
  28. AFUN_CORE_NO_EXPORT void freeReader(af_Reader *reader);
  29. /* Reader 初始化函数 */
  30. AFUN_CORE_NO_EXPORT af_Reader *initReader(af_Reader *reader);
  31. /* Reader 操作哈桑 */
  32. AFUN_CORE_NO_EXPORT char *readWord(size_t del_index, af_Reader *reader);
  33. AFUN_CORE_NO_EXPORT char getChar(af_Reader *reader);
  34. AFUN_CORE_NO_EXPORT void *getReaderData(af_Reader *reader);
  35. #endif //AFUN_READER_H_