Add helper functions for implementing unicode support in lexer.

JerryScript-DCO-1.0-Signed-off-by: Andrey Shitov a.shitov@samsung.com
This commit is contained in:
Andrey Shitov
2015-07-03 21:41:03 +03:00
committed by Ruben Ayrapetyan
parent c21399cd58
commit d248d0944c
5 changed files with 122 additions and 3 deletions
+14 -2
View File
@@ -17,7 +17,6 @@
#define LIT_UNICODE_HELPERS_H
#include "jrt.h"
#include "lit-char-helpers.h"
#include "lit-globals.h"
/**
@@ -27,7 +26,7 @@
/**
* For the formal definition of Unicode transformation formats (UTF) see Section 3.9, Unicode Encoding Forms in The
* Unicode Standard (http://www.unicode.org/versions/Unicode7.0.0/ch03.pdf#G7404, tables 3-6, 3-7).
* Unicode Standard (http://www.unicode.org/versions/Unicode3.0.0/ch03.pdf#G7404).
*/
#define LIT_UNICODE_CODE_POINT_NULL (0x0)
#define LIT_UNICODE_CODE_POINT_MAX (0x10FFFF)
@@ -112,6 +111,10 @@ typedef struct
/* validation */
bool lit_is_utf8_string_valid (const lit_utf8_byte_t *, lit_utf8_size_t);
/* checks */
bool lit_is_code_unit_low_surrogate (ecma_char_t);
bool lit_is_code_unit_high_surrogate (ecma_char_t);
/* iteration */
lit_utf8_iterator_t lit_utf8_iterator_create (const lit_utf8_byte_t *, lit_utf8_size_t);
@@ -136,6 +139,11 @@ ecma_char_t lit_utf8_iterator_read_prev (lit_utf8_iterator_t *);
bool lit_utf8_iterator_is_eos (const lit_utf8_iterator_t *);
bool lit_utf8_iterator_is_bos (const lit_utf8_iterator_t *);
lit_utf8_size_t lit_utf8_iterator_get_offset (const lit_utf8_iterator_t *);
void lit_utf8_iterator_set_offset (lit_utf8_iterator_t *, lit_utf8_size_t);
lit_utf8_byte_t *lit_utf8_iterator_get_ptr (const lit_utf8_iterator_t *);
/* size */
lit_utf8_size_t lit_zt_utf8_string_size (const lit_utf8_byte_t *);
@@ -152,6 +160,7 @@ lit_utf8_size_t lit_get_unicode_char_size_by_utf8_first_byte (lit_utf8_byte_t);
/* conversion */
lit_utf8_size_t lit_code_unit_to_utf8 (ecma_char_t, lit_utf8_byte_t *);
lit_utf8_size_t lit_code_point_to_utf8 (lit_code_point_t, lit_utf8_byte_t *);
lit_code_point_t lit_convert_surrogate_pair_to_code_point (ecma_char_t, ecma_char_t);
/* comparison */
bool lit_compare_utf8_strings (const lit_utf8_byte_t *,
@@ -169,4 +178,7 @@ lit_utf8_size_t lit_read_code_point_from_utf8 (const lit_utf8_byte_t *,
lit_utf8_size_t,
lit_code_point_t *);
/* print */
void lit_put_ecma_char (ecma_char_t);
#endif /* LIT_UNICODE_HELPERS_H */