Line data Source code
1 : 2 : #ifndef STREAM_H_ 3 : #define STREAM_H_ 4 : 5 : template<class T> 6 : struct streambuf 7 : { 8 : stream *s; 9 : 10 0 : streambuf(stream *s) : s(s) {} 11 : 12 0 : T get() { return s->get<T>(); } 13 0 : size_t get(T *vals, size_t numvals) { return s->get(vals, numvals); } 14 0 : void put(const T &val) { s->put(&val, 1); } 15 : void put(const T *vals, size_t numvals) { s->put(vals, numvals); } 16 0 : void push_back(const T &val) { put(val); } 17 : size_t length() { return s->size(); } 18 : }; 19 : 20 : enum 21 : { 22 : CubeType_Print = 1 << 0, 23 : CubeType_Space = 1 << 1, 24 : CubeType_Digit = 1 << 2, 25 : CubeType_Alpha = 1 << 3, 26 : CubeType_Lower = 1 << 4, 27 : CubeType_Upper = 1 << 5, 28 : CubeType_Unicode = 1 << 6 29 : }; 30 : 31 : extern const uchar cubectype[256]; 32 30 : inline int iscubeprint(uchar c) { return cubectype[c] & CubeType_Print; } 33 23 : inline int iscubespace(uchar c) { return cubectype[c] & CubeType_Space; } 34 : inline int iscubealpha(uchar c) { return cubectype[c] & CubeType_Alpha; } 35 1 : inline int iscubealnum(uchar c) { return cubectype[c]&(CubeType_Alpha | CubeType_Digit); } 36 0 : inline int iscubepunct(uchar c) { return cubectype[c] == CubeType_Print; } 37 13139 : inline int cube2uni(uchar c) 38 : { 39 13139 : return c; 40 : } 41 : 42 0 : inline uchar cubelower(uchar c) 43 : { 44 0 : return c; 45 : } 46 0 : inline uchar cubeupper(uchar c) 47 : { 48 0 : return c; 49 : } 50 : extern size_t encodeutf8(uchar *dstbuf, size_t dstlen, const uchar *srcbuf, size_t srclen, size_t *carry = nullptr); 51 : 52 : extern char *loadfile(const char *fn, size_t *size, bool utf8 = true); 53 : extern int listfiles(const char *dir, const char *ext, std::vector<char *> &files); 54 : extern int listzipfiles(const char *dir, const char *ext, std::vector<char *> &files); 55 : extern bool findzipfile(const char *filename); 56 : extern const char *addpackagedir(const char *dir); 57 : extern const char *parentdir(const char *directory); 58 : extern bool fileexists(const char *path, const char *mode); 59 : extern bool createdir(const char *path); 60 : extern size_t fixpackagedir(char *dir); 61 : extern char *makerelpath(const char *dir, const char *file, const char *prefix = nullptr, const char *cmd = nullptr); 62 : 63 : extern void sendstring(const char *t, std::vector<uchar> &p); 64 : 65 : extern void putint(std::vector<uchar> &p, int n); 66 : extern int getint(std::vector<uchar> &p); 67 : extern void putfloat(std::vector<uchar> &p, float n); 68 : extern float getfloat(std::vector<uchar> &p); 69 : #endif