15#if !defined(Us_COCO_SCANNER_H__)
16#define Us_COCO_SCANNER_H__
30#define COCO_USE_WCHAR_T 0
35 static wchar_t*
ncpy(
wchar_t* dest,
const wchar_t* src,
size_t n) {
return wcsncpy(dest, src, n); }
36 static wchar_t*
cpy(
wchar_t* dest,
const wchar_t* src) {
return wcscpy(dest, src); }
37 static int len(
const wchar_t* s) {
return (
int)wcslen(s); }
38 static int cmp(
const wchar_t* s1,
const wchar_t* s2) {
return wcscmp(s1, s2); }
39 static const wchar_t*
rchr(
const wchar_t* wcs,
wchar_t wc) {
return wcsrchr(wcs, wc); }
40 static wchar_t*
rchr(
wchar_t* wcs,
wchar_t wc) {
return wcsrchr(wcs, wc); }
41 static const wchar_t*
chr(
const wchar_t* wcs,
wchar_t wc) {
return wcschr(wcs, wc); }
42 static wchar_t*
chr(
wchar_t* wcs,
wchar_t wc) {
return wcschr(wcs, wc); }
45#define coco_sprintf swprintf_s
47#define coco_sprintf _snwprintf
48#elif defined __MINGW32__
49#define coco_sprintf _snwprintf
52#define coco_sprintf swprintf
54#define COCO_STR(X) L##X
55#define coco_printf wprintf
60 static char*
ncpy(
char* dest,
const char* src,
size_t n) {
return strncpy(dest, src, n); }
61 static char*
cpy(
char* dest,
const char* src) {
return strcpy(dest, src); }
62 static int len(
const char* s) {
return (
int)strlen(s); }
63 static int cmp(
const char* s1,
const char* s2) {
return strcmp(s1, s2); }
64 static const char*
rchr(
const char* wcs,
char wc) {
return strrchr(wcs, wc); }
65 static char*
rchr(
char* wcs,
char wc) {
return strrchr(wcs, wc); }
66 static const char*
chr(
const char* wcs,
char wc) {
return strchr(wcs, wc); }
67 static char*
chr(
char* wcs,
char wc) {
return strchr(wcs, wc); }
70#define coco_sprintf sprintf
71#define coco_snprintf snprintf
73#define coco_printf printf
78#define COCO_WCHAR_MAX 65535
79#define COCO_MIN_BUFFER_LENGTH 1024
80#define COCO_MAX_BUFFER_LENGTH (64 * COCO_MIN_BUFFER_LENGTH)
81#define COCO_HEAP_BLOCK_SIZE (64 * 1024)
82#define COCO_CPP_NAMESPACE_SEPARATOR COCO_STR(':')
128#define COCO_USE_INLINE_BUFFER 1
129#if COCO_USE_INLINE_BUFFER
141 Buffer(
const unsigned char* buf,
int len)
143 this->buf =
new unsigned char[len];
144 memcpy(this->buf, buf, len *
sizeof(
unsigned char));
145 bufCapacity = bufLen = len;
164 return buf[bufPos++];
194 int GetPos() {
return bufPos; }
197 if ((value < 0) || (value > fileLen))
202 if ((value >= 0) && (value < (bufLen)))
234 Buffer(FILE* s,
bool isUserStream);
235 Buffer(
const unsigned char* buf,
int len);
239 virtual void Close();
244 virtual void SetPos(
int value);
256 int ReadNextStreamChunk();
277 tab =
new Elem*[128];
278 memset(tab, 0, 128 *
sizeof(Elem*));
282 for (
int i = 0; i < 128; ++i)
287 Elem* next = e->next;
298 void set(
int key,
int val)
300 Elem* e =
new Elem(key, val);
301 int k = ((
unsigned int)key) % 128;
308 Elem* e = tab[((
unsigned int)key) % 128];
309 while (e !=
nullptr && e->key != key)
311 return e ==
nullptr ? 0 : e->val;
320 Elem(
int key,
int val)
339 tab =
new Elem*[128];
340 memset(tab, 0, 128 *
sizeof(Elem*));
344 for (
int i = 0; i < 128; ++i)
349 Elem* next = e->next;
362 Elem* e =
new Elem(key, val);
373 return e ==
nullptr ? defaultVal : e->val;
398 Scanner(
const unsigned char* buf,
int len);
399#if !COCO_USE_INLINE_BUFFER
435 Token* tokens{
nullptr};
448 void CreateHeapBlock();
449 Token* CreateToken();
450 void AppendVal(Token* t);
451 void SetScannerBehindT();
WsfComponentListT< T >::Iterator end(const WsfComponentListT< T > &aList)
Definition WsfComponentList.hpp:546
Definition wizard/lib/source/Us/Scanner.h:222
virtual int Peek()
Definition wizard/lib/source/Us/Scanner.cpp:386
virtual int Read()
Definition wizard/lib/source/Us/Scanner.cpp:365
virtual void Close()
Definition wizard/lib/source/Us/Scanner.cpp:356
Buffer & operator=(const Buffer &aRhs)=delete
static const int EoF
Definition wizard/lib/source/Us/Scanner.h:229
virtual void SetPos(int value)
Definition wizard/lib/source/Us/Scanner.cpp:415
virtual cocochar_t * GetString(int beg, int end)
Definition wizard/lib/source/Us/Scanner.cpp:396
Buffer(const Buffer &aSrc)=delete
virtual ~Buffer()
Definition wizard/lib/source/Us/Scanner.cpp:346
virtual int GetPos()
Definition wizard/lib/source/Us/Scanner.cpp:410
virtual ~KeywordMap()
Definition wizard/lib/source/Us/Scanner.h:342
int get(const cocochar_t *key, int defaultVal)
Definition wizard/lib/source/Us/Scanner.h:368
KeywordMap()
Definition wizard/lib/source/Us/Scanner.h:337
void set(const cocochar_t *key, int val)
Definition wizard/lib/source/Us/Scanner.h:360
KeywordMap & operator=(const KeywordMap &aRhs)=delete
KeywordMap(const KeywordMap &aSrc)=delete
Token * Scan()
Definition wizard/lib/source/Us/Scanner.cpp:1504
Token * Peek()
Definition wizard/lib/source/Us/Scanner.cpp:1518
Scanner(const Scanner &aSrc)=delete
void * mNewTokenDataPtr
Definition wizard/lib/source/Us/Scanner.h:413
void ResetPeek()
Definition wizard/lib/source/Us/Scanner.cpp:1533
void(* NewTokCb)(Token *, void *)
Definition wizard/lib/source/Us/Scanner.h:412
Scanner(const unsigned char *buf, int len)
Definition wizard/lib/source/Us/Scanner.cpp:531
virtual ~Scanner()
Definition wizard/lib/source/Us/Scanner.cpp:559
Scanner & operator=(const Scanner &aRhs)=delete
Buffer * buffer
Definition wizard/lib/source/Us/Scanner.h:415
StartStates(const StartStates &aSrc)=delete
virtual ~StartStates()
Definition wizard/lib/source/Us/Scanner.h:280
int state(int key)
Definition wizard/lib/source/Us/Scanner.h:306
StartStates()
Definition wizard/lib/source/Us/Scanner.h:275
StartStates & operator=(const StartStates &aRhs)=delete
void set(int key, int val)
Definition wizard/lib/source/Us/Scanner.h:298
Definition wizard/lib/source/Us/Scanner.h:114
int col
Definition wizard/lib/source/Us/Scanner.h:122
virtual ~Token()
Definition wizard/lib/source/Us/Scanner.cpp:285
Token()
Definition wizard/lib/source/Us/Scanner.cpp:283
int len
Definition wizard/lib/source/Us/Scanner.h:126
Token * next
Definition wizard/lib/source/Us/Scanner.h:125
cocochar_t * val
Definition wizard/lib/source/Us/Scanner.h:124
int line
Definition wizard/lib/source/Us/Scanner.h:123
int kind
Definition wizard/lib/source/Us/Scanner.h:119
int pos
Definition wizard/lib/source/Us/Scanner.h:120
int charPos
Definition wizard/lib/source/Us/Scanner.h:121
UTF8Buffer(Buffer *b)
Definition wizard/lib/source/Us/Scanner.h:263
virtual int Read()
Definition wizard/lib/source/Us/Scanner.cpp:484
#define COCO_WCHAR_MAX
Definition core/wsf_parser/source/grammar_parse/Scanner.h:42
Definition wizard/lib/source/Us/Parser.cpp:18
char * coco_string_create_char(const cocochar_t *value)
Definition wizard/lib/source/Us/Scanner.cpp:271
int coco_string_length(const cocochar_t *data)
Definition wizard/lib/source/Us/Scanner.cpp:171
int coco_string_lastindexof(const cocochar_t *data, const cocochar_t value)
Definition wizard/lib/source/Us/Scanner.cpp:198
unsigned int coco_string_hash(const cocochar_t *data)
Definition wizard/lib/source/Us/Scanner.cpp:230
int coco_string_compareto(const cocochar_t *data1, const cocochar_t *data2)
Definition wizard/lib/source/Us/Scanner.cpp:225
cocochar_t * coco_string_create_upper(const cocochar_t *data)
Definition wizard/lib/source/Us/Scanner.cpp:58
cocochar_t * coco_string_create(const cocochar_t *value)
Definition wizard/lib/source/Us/Scanner.cpp:24
cocochar_t * coco_string_create_lower(const cocochar_t *data)
Definition wizard/lib/source/Us/Scanner.cpp:89
bool coco_string_equal(const cocochar_t *data1, const cocochar_t *data2)
Definition wizard/lib/source/Us/Scanner.cpp:220
void coco_string_merge(cocochar_t *&target, const cocochar_t *appendix)
Definition wizard/lib/source/Us/Scanner.cpp:209
cocochar_t * coco_string_create_append(const cocochar_t *data1, const cocochar_t *data2)
Definition wizard/lib/source/Us/Scanner.cpp:124
int coco_string_indexof(const cocochar_t *data, const cocochar_t value)
Definition wizard/lib/source/Us/Scanner.cpp:187
bool coco_string_endswith(const cocochar_t *data, const cocochar_t *end)
Definition wizard/lib/source/Us/Scanner.cpp:180
void coco_string_delete(cocochar_t *&data)
Definition wizard/lib/source/Us/Scanner.cpp:165
Definition wizard/lib/source/Us/Scanner.h:58
static int cmp(const char *s1, const char *s2)
Definition wizard/lib/source/Us/Scanner.h:63
static int len(const char *s)
Definition wizard/lib/source/Us/Scanner.h:62
char char_type
Definition wizard/lib/source/Us/Scanner.h:59
static char * chr(char *wcs, char wc)
Definition wizard/lib/source/Us/Scanner.h:67
static char * ncpy(char *dest, const char *src, size_t n)
Definition wizard/lib/source/Us/Scanner.h:60
static const char * rchr(const char *wcs, char wc)
Definition wizard/lib/source/Us/Scanner.h:64
static const char * chr(const char *wcs, char wc)
Definition wizard/lib/source/Us/Scanner.h:66
static char * cpy(char *dest, const char *src)
Definition wizard/lib/source/Us/Scanner.h:61
static char * rchr(char *wcs, char wc)
Definition wizard/lib/source/Us/Scanner.h:65
COCO_Str::char_type cocochar_t
Definition wizard/lib/source/Us/Scanner.h:76
#define COCO_STR(X)
Definition wizard/lib/source/Us/Scanner.h:72
#define coco_printf
Definition wizard/lib/source/Us/Scanner.h:73