-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathquickjs-textcode.h
More file actions
93 lines (81 loc) · 1.82 KB
/
Copy pathquickjs-textcode.h
File metadata and controls
93 lines (81 loc) · 1.82 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#ifndef QUICKJS_TEXTCODE_H
#define QUICKJS_TEXTCODE_H
#include "utils.h"
#include "ringbuffer.h"
/**
* \defgroup quickjs-textdecoder quickjs-textdecoder: String Decoder
* @{
*/
typedef enum utf_encoding {
UNKNOWN = 0,
UTF8 /* = 1 */,
UTF16 /* = 2 */,
UTF32 /* = 3 */,
} UTFCharset;
typedef enum text_encoding {
UTF16LE = 2,
UTF32LE = 3,
UTF16BE = 6,
UTF32BE = 7,
ISO_8859_1,
ISO_8859_2,
ISO_8859_3,
ISO_8859_4,
ISO_8859_5,
ISO_8859_6,
ISO_8859_7,
ISO_8859_8,
ISO_8859_9,
ISO_8859_10,
ISO_8859_11,
ISO_8859_13,
ISO_8859_14,
ISO_8859_15,
ISO_8859_16,
WINDOWS_1250,
WINDOWS_1251,
WINDOWS_1252,
WINDOWS_1253,
WINDOWS_1254,
WINDOWS_1255,
WINDOWS_1256,
WINDOWS_1257,
WINDOWS_1258,
} TextEncoding;
#define TextcodeType \
PACK union { \
struct { \
UTFCharset char_set : 2; \
Endian endian : 1; \
}; \
TextEncoding type_code; \
}; \
ENDPACK
struct text_coder {
/*RingBuffer buffer;*/
uint8_t buf[UTF8_CHAR_LEN_MAX];
uint8_t buflen;
TextcodeType
};
typedef struct text_coder TextEncoder;
typedef struct text_coder TextDecoder;
extern VISIBLE JSClassID js_decoder_class_id, js_encoder_class_id;
extern const char* const textcode_encodings[];
size_t textdecoder_length(TextDecoder*);
JSValue textdecoder_read(TextDecoder*, JSContext* ctx);
int js_code_init(JSContext*, JSModuleDef* m);
size_t textencoder_length(TextEncoder*);
JSValue textencoder_read(TextEncoder*, JSContext* ctx);
int js_encoder_init(JSContext*, JSModuleDef* m);
static inline TextDecoder*
js_decoder_data(JSContext* ctx, JSValueConst value) {
return JS_GetOpaque(value, js_decoder_class_id);
}
static inline TextEncoder*
js_encoder_data(JSContext* ctx, JSValueConst value) {
return JS_GetOpaque(value, js_encoder_class_id);
}
/**
* @}
*/
#endif /* defined(QUICKJS_TEXTCODE_H) */