#include <assert.h>
#include "jscript.h"
#include "wine/debug.h"
Go to the source code of this file.
|
const char * | debugstr_jsstr (jsstr_t *str) |
|
void | jsstr_free (jsstr_t *str) |
|
static void | jsstr_init (jsstr_t *str, unsigned len, jsstr_tag_t tag) |
|
jsstr_t * | jsstr_alloc_buf (unsigned len, WCHAR **buf) |
|
jsstr_t * | jsstr_alloc_len (const WCHAR *buf, unsigned len) |
|
static void | jsstr_rope_extract (jsstr_rope_t *str, unsigned off, unsigned len, WCHAR *buf) |
|
void | jsstr_extract (jsstr_t *str, unsigned off, unsigned len, WCHAR *buf) |
|
static int | jsstr_cmp_str (jsstr_t *jsstr, const WCHAR *str, unsigned len) |
|
static int | ropes_cmp (jsstr_rope_t *left, jsstr_rope_t *right) |
|
static const WCHAR * | jsstr_try_flat (jsstr_t *str) |
|
int | jsstr_cmp (jsstr_t *str1, jsstr_t *str2) |
|
jsstr_t * | jsstr_concat (jsstr_t *str1, jsstr_t *str2) |
|
| C_ASSERT (sizeof(jsstr_heap_t)<=sizeof(jsstr_rope_t)) |
|
const WCHAR * | jsstr_rope_flatten (jsstr_rope_t *str) |
|
jsstr_t * | jsstr_nan (void) |
|
jsstr_t * | jsstr_empty (void) |
|
jsstr_t * | jsstr_undefined (void) |
|
jsstr_t * | jsstr_null_bstr (void) |
|
BOOL | is_null_bstr (jsstr_t *str) |
|
BOOL | init_strings (void) |
|
void | free_strings (void) |
|
◆ JSSTR_MAX_ROPE_DEPTH
#define JSSTR_MAX_ROPE_DEPTH 100 |
◆ JSSTR_SHORT_STRING_LENGTH
#define JSSTR_SHORT_STRING_LENGTH 8 |
◆ TMP_BUF_SIZE
◆ C_ASSERT()
◆ debugstr_jsstr()
Definition at line 37 of file jsstr.c.
static jsstr_rope_t * jsstr_as_rope(jsstr_t *str)
static unsigned jsstr_length(jsstr_t *str)
const char * wine_dbg_sprintf(const char *format,...)
GLenum GLuint GLenum GLsizei const GLchar * buf
const char * debugstr_jsstr(jsstr_t *str)
static BOOL jsstr_is_heap(jsstr_t *str)
static BOOL jsstr_is_inline(jsstr_t *str)
static jsstr_heap_t * jsstr_as_heap(jsstr_t *str)
static jsstr_inline_t * jsstr_as_inline(jsstr_t *str)
Referenced by array_join(), debugstr_jsstr(), debugstr_jsval(), dump_instr_arg(), interp_obj_prop(), interp_regexp(), interp_str(), interp_throw_type(), JSGlobal_decodeURI(), JSGlobal_encodeURI(), String_idx_get(), and String_replace().
◆ free_strings()
Definition at line 325 of file jsstr.c.
static jsstr_t * undefined_str
static void jsstr_release(jsstr_t *str)
static jsstr_t * empty_str
static jsstr_t * null_bstr_str
Referenced by DllMain().
◆ init_strings()
Definition at line 308 of file jsstr.c.
310 static const WCHAR NaNW[] = {
'N',
'a',
'N',0 };
311 static const WCHAR undefinedW[] = {
'u',
'n',
'd',
'e',
'f',
'i',
'n',
'e',
'd',0};
static jsstr_t * jsstr_alloc(const WCHAR *str)
static jsstr_t * undefined_str
static const WCHAR undefinedW[]
static jsstr_t * empty_str
static const WCHAR NaNW[]
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
static jsstr_t * null_bstr_str
Referenced by DllMain().
◆ is_null_bstr()
◆ jsstr_alloc_buf()
Definition at line 69 of file jsstr.c.
static void * heap_alloc(size_t len)
GLenum GLuint GLenum GLsizei const GLchar * buf
static void jsstr_init(jsstr_t *str, unsigned len, jsstr_tag_t tag)
#define FIELD_OFFSET(t, f)
Referenced by array_join(), Date_toLocaleDateString(), Date_toLocaleString(), Date_toLocaleTimeString(), do_attribute_tag_format(), do_attributeless_tag_format(), Error_toString(), init_strings(), JSGlobal_decodeURI(), JSGlobal_decodeURIComponent(), JSGlobal_encodeURI(), JSGlobal_encodeURIComponent(), JSGlobal_escape(), JSGlobal_unescape(), jsstr_alloc_len(), jsstr_concat(), jsstr_substr(), NativeFunction_toString(), number_to_exponential(), number_to_fixed(), Object_toString(), RegExp_toString(), String_concat(), String_toLowerCase(), String_toUpperCase(), and StringConstr_fromCharCode().
◆ jsstr_alloc_len()
Definition at line 86 of file jsstr.c.
GLenum GLuint GLenum GLsizei const GLchar * buf
#define memcpy(s1, s2, n)
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Referenced by compiler_alloc_string_len(), create_match_array(), interp_forin(), InterpretedFunction_toString(), JSON_stringify(), jsstr_alloc(), rep_call(), String_replace(), String_split(), String_trim(), and variant_to_jsval().
◆ jsstr_cmp()
Definition at line 189 of file jsstr.c.
199 return ret || len1 == len2 ?
ret : -1;
205 return ret || len1 == len2 ? -
ret : 1;
static int jsstr_cmp_str(jsstr_t *jsstr, const WCHAR *str, unsigned len)
static jsstr_rope_t * jsstr_as_rope(jsstr_t *str)
static unsigned jsstr_length(jsstr_t *str)
static int ropes_cmp(jsstr_rope_t *left, jsstr_rope_t *right)
static const WCHAR * jsstr_try_flat(jsstr_t *str)
Referenced by jsstr_eq(), less_eval(), and sort_cmp().
◆ jsstr_cmp_str()
Definition at line 128 of file jsstr.c.
144 if(
ret ||
len <= left_len)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static int jsstr_cmp_str(jsstr_t *jsstr, const WCHAR *str, unsigned len)
static jsstr_rope_t * jsstr_as_rope(jsstr_t *str)
static unsigned jsstr_length(jsstr_t *str)
GLenum GLuint GLenum GLsizei const GLchar * buf
static jsstr_tag_t jsstr_tag(jsstr_t *str)
static jsstr_heap_t * jsstr_as_heap(jsstr_t *str)
static jsstr_inline_t * jsstr_as_inline(jsstr_t *str)
Referenced by jsstr_cmp().
◆ jsstr_concat()
Definition at line 211 of file jsstr.c.
226 unsigned depth, depth2;
static jsstr_t * jsstr_addref(jsstr_t *str)
static jsstr_rope_t * jsstr_as_rope(jsstr_t *str)
static unsigned jsstr_flush(jsstr_t *str, WCHAR *buf)
static unsigned jsstr_length(jsstr_t *str)
static void * heap_alloc(size_t len)
static void jsstr_init(jsstr_t *str, unsigned len, jsstr_tag_t tag)
#define JSSTR_MAX_ROPE_DEPTH
GLint GLint GLsizei GLsizei GLsizei depth
#define JSSTR_SHORT_STRING_LENGTH
static BOOL jsstr_is_rope(jsstr_t *str)
jsstr_t * jsstr_alloc_buf(unsigned len, WCHAR **buf)
Referenced by add_eval(), and String_concat().
◆ jsstr_empty()
◆ jsstr_extract()
Definition at line 113 of file jsstr.c.
static jsstr_rope_t * jsstr_as_rope(jsstr_t *str)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define memcpy(s1, s2, n)
static jsstr_tag_t jsstr_tag(jsstr_t *str)
static void jsstr_rope_extract(jsstr_rope_t *str, unsigned off, unsigned len, WCHAR *buf)
static jsstr_heap_t * jsstr_as_heap(jsstr_t *str)
static jsstr_inline_t * jsstr_as_inline(jsstr_t *str)
Referenced by JSON_stringify(), jsstr_rope_extract(), jsstr_substr(), and String_charCodeAt().
◆ jsstr_free()
Definition at line 44 of file jsstr.c.
static jsstr_rope_t * jsstr_as_rope(jsstr_t *str)
static void jsstr_release(jsstr_t *str)
GLenum GLuint GLenum GLsizei const GLchar * buf
static jsstr_tag_t jsstr_tag(jsstr_t *str)
static jsstr_heap_t * jsstr_as_heap(jsstr_t *str)
static BOOL heap_free(void *mem)
Referenced by jsstr_release().
◆ jsstr_init()
◆ jsstr_nan()
◆ jsstr_null_bstr()
Definition at line 298 of file jsstr.c.
static jsstr_t * jsstr_addref(jsstr_t *str)
static jsstr_t * null_bstr_str
Referenced by variant_to_jsval().
◆ jsstr_rope_extract()
Definition at line 98 of file jsstr.c.
102 if(left_len <= off) {
104 }
else if(left_len >=
len+off) {
static unsigned jsstr_length(jsstr_t *str)
GLenum GLuint GLenum GLsizei const GLchar * buf
void jsstr_extract(jsstr_t *str, unsigned off, unsigned len, WCHAR *buf)
Referenced by jsstr_extract(), and ropes_cmp().
◆ jsstr_rope_flatten()
Definition at line 262 of file jsstr.c.
static unsigned jsstr_flush(jsstr_t *str, WCHAR *buf)
static unsigned jsstr_length(jsstr_t *str)
static void jsstr_release(jsstr_t *str)
static void * heap_alloc(size_t len)
GLenum GLuint GLenum GLsizei const GLchar * buf
static jsstr_heap_t * jsstr_as_heap(jsstr_t *str)
Referenced by jsstr_flatten().
◆ jsstr_try_flat()
Definition at line 182 of file jsstr.c.
static BOOL jsstr_is_heap(jsstr_t *str)
static BOOL jsstr_is_inline(jsstr_t *str)
static jsstr_heap_t * jsstr_as_heap(jsstr_t *str)
static jsstr_inline_t * jsstr_as_inline(jsstr_t *str)
Referenced by jsstr_cmp().
◆ jsstr_undefined()
Definition at line 293 of file jsstr.c.
static jsstr_t * undefined_str
static jsstr_t * jsstr_addref(jsstr_t *str)
Referenced by do_attribute_tag_format(), interp_typeofid(), interp_typeofident(), JSGlobal_decodeURI(), JSGlobal_decodeURIComponent(), JSGlobal_encodeURI(), JSGlobal_encodeURIComponent(), JSGlobal_escape(), JSGlobal_unescape(), RegExp_test(), and to_string().
◆ ropes_cmp()
Definition at line 156 of file jsstr.c.
161 unsigned cmp_off = 0, cmp_size;
165 while(cmp_off <
min(left_len, right_len)) {
166 cmp_size =
min(left_len, right_len) - cmp_off;
172 ret =
memcmp(left_buf, right_buf, cmp_size);
179 return left_len - right_len;
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
static unsigned jsstr_length(jsstr_t *str)
static void jsstr_rope_extract(jsstr_rope_t *str, unsigned off, unsigned len, WCHAR *buf)
Referenced by jsstr_cmp().
◆ empty_str
◆ nan_str
◆ null_bstr_str
◆ undefined_str