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 *in) : s(in) {}
11 :
12 0 : T get()
13 : {
14 0 : return s->get<T>();
15 : }
16 :
17 0 : size_t get(T *vals, size_t numvals)
18 : {
19 0 : return s->get(vals, numvals);
20 : }
21 :
22 0 : void put(const T &val)
23 : {
24 0 : s->put(&val, 1);
25 0 : }
26 :
27 : void put(const T *vals, size_t numvals)
28 : {
29 : s->put(vals, numvals);
30 : }
31 :
32 0 : void push_back(const T &val)
33 : {
34 0 : put(val);
35 0 : }
36 :
37 : size_t length()
38 : {
39 : return s->size();
40 : }
41 : };
42 :
43 : enum
44 : {
45 : CubeType_Print = 1 << 0,
46 : CubeType_Space = 1 << 1,
47 : CubeType_Digit = 1 << 2,
48 : CubeType_Alpha = 1 << 3,
49 : CubeType_Lower = 1 << 4,
50 : CubeType_Upper = 1 << 5,
51 : CubeType_Unicode = 1 << 6
52 : };
53 :
54 : extern const uchar cubectype[256];
55 30 : inline int iscubeprint(uchar c) { return cubectype[c] & CubeType_Print; }
56 23 : inline int iscubespace(uchar c) { return cubectype[c] & CubeType_Space; }
57 : inline int iscubealpha(uchar c) { return cubectype[c] & CubeType_Alpha; }
58 1 : inline int iscubealnum(uchar c) { return cubectype[c]&(CubeType_Alpha | CubeType_Digit); }
59 0 : inline int iscubepunct(uchar c) { return cubectype[c] == CubeType_Print; }
60 13134 : inline int cube2uni(uchar c)
61 : {
62 13134 : return c;
63 : }
64 :
65 0 : inline uchar cubelower(uchar c)
66 : {
67 0 : return c;
68 : }
69 0 : inline uchar cubeupper(uchar c)
70 : {
71 0 : return c;
72 : }
73 : extern size_t encodeutf8(uchar *dstbuf, size_t dstlen, const uchar *srcbuf, size_t srclen, size_t *carry = nullptr);
74 :
75 : extern char *loadfile(const char *fn, size_t *size, bool utf8 = true);
76 : extern int listfiles(const char *dir, const char *ext, std::vector<char *> &files);
77 : extern int listzipfiles(const char *dir, const char *ext, std::vector<char *> &files);
78 : extern bool findzipfile(const char *filename);
79 : extern const char *addpackagedir(const char *dir);
80 : extern const char *parentdir(const char *directory);
81 : extern bool fileexists(const char *path, const char *mode);
82 : extern bool createdir(const char *path);
83 : extern size_t fixpackagedir(char *dir);
84 : extern char *makerelpath(const char *dir, const char *file, const char *prefix = nullptr, const char *cmd = nullptr);
85 :
86 : extern void sendstring(const char *t, std::vector<uchar> &p);
87 :
88 : extern void putint(std::vector<uchar> &p, int n);
89 : extern int getint(std::vector<uchar> &p);
90 : extern void putfloat(std::vector<uchar> &p, float n);
91 : extern float getfloat(std::vector<uchar> &p);
92 : #endif
|