Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
duk_hstring.h File Reference

Go to the source code of this file.

Data Structures

struct  duk_hstring
 
struct  duk_hstring_external
 

Macros

#define DUK_HSTRING_MAX_BYTELEN   (0x7fffffffUL)
 
#define DUK_HSTRING_FLAG_ASCII   DUK_HEAPHDR_USER_FLAG(0) /* string is ASCII, clen == blen */
 
#define DUK_HSTRING_FLAG_ARRIDX   DUK_HEAPHDR_USER_FLAG(1) /* string is a valid array index */
 
#define DUK_HSTRING_FLAG_INTERNAL   DUK_HEAPHDR_USER_FLAG(2) /* string is internal */
 
#define DUK_HSTRING_FLAG_RESERVED_WORD   DUK_HEAPHDR_USER_FLAG(3) /* string is a reserved word (non-strict) */
 
#define DUK_HSTRING_FLAG_STRICT_RESERVED_WORD   DUK_HEAPHDR_USER_FLAG(4) /* string is a reserved word (strict) */
 
#define DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS   DUK_HEAPHDR_USER_FLAG(5) /* string is 'eval' or 'arguments' */
 
#define DUK_HSTRING_FLAG_EXTDATA   DUK_HEAPHDR_USER_FLAG(6) /* string data is external (duk_hstring_external) */
 
#define DUK_HSTRING_HAS_ASCII(x)   DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ASCII)
 
#define DUK_HSTRING_HAS_ARRIDX(x)   DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX)
 
#define DUK_HSTRING_HAS_INTERNAL(x)   DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_INTERNAL)
 
#define DUK_HSTRING_HAS_RESERVED_WORD(x)   DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD)
 
#define DUK_HSTRING_HAS_STRICT_RESERVED_WORD(x)   DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD)
 
#define DUK_HSTRING_HAS_EVAL_OR_ARGUMENTS(x)   DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS)
 
#define DUK_HSTRING_HAS_EXTDATA(x)   DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA)
 
#define DUK_HSTRING_SET_ASCII(x)   DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ASCII)
 
#define DUK_HSTRING_SET_ARRIDX(x)   DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX)
 
#define DUK_HSTRING_SET_INTERNAL(x)   DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_INTERNAL)
 
#define DUK_HSTRING_SET_RESERVED_WORD(x)   DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD)
 
#define DUK_HSTRING_SET_STRICT_RESERVED_WORD(x)   DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD)
 
#define DUK_HSTRING_SET_EVAL_OR_ARGUMENTS(x)   DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS)
 
#define DUK_HSTRING_SET_EXTDATA(x)   DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA)
 
#define DUK_HSTRING_CLEAR_ASCII(x)   DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ASCII)
 
#define DUK_HSTRING_CLEAR_ARRIDX(x)   DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX)
 
#define DUK_HSTRING_CLEAR_INTERNAL(x)   DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_INTERNAL)
 
#define DUK_HSTRING_CLEAR_RESERVED_WORD(x)   DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD)
 
#define DUK_HSTRING_CLEAR_STRICT_RESERVED_WORD(x)   DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD)
 
#define DUK_HSTRING_CLEAR_EVAL_OR_ARGUMENTS(x)   DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS)
 
#define DUK_HSTRING_CLEAR_EXTDATA(x)   DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA)
 
#define DUK_HSTRING_IS_ASCII(x)   DUK_HSTRING_HAS_ASCII((x))
 
#define DUK_HSTRING_IS_EMPTY(x)   (DUK_HSTRING_GET_BYTELEN((x)) == 0)
 
#define DUK_HSTRING_GET_HASH(x)   ((x)->hash)
 
#define DUK_HSTRING_SET_HASH(x, v)
 
#define DUK_HSTRING_GET_BYTELEN(x)   ((x)->blen)
 
#define DUK_HSTRING_SET_BYTELEN(x, v)
 
#define DUK_HSTRING_GET_CHARLEN(x)   ((x)->clen)
 
#define DUK_HSTRING_SET_CHARLEN(x, v)
 
#define DUK_HSTRING_GET_DATA(x)    ((const duk_uint8_t *) ((x) + 1))
 
#define DUK_HSTRING_GET_DATA_END(x)    (DUK_HSTRING_GET_DATA((x)) + (x)->blen)
 
#define DUK_HSTRING_NO_ARRAY_INDEX   (0xffffffffUL)
 
#define DUK_HSTRING_GET_ARRIDX_FAST(h)    (DUK_HSTRING_HAS_ARRIDX((h)) ? duk_js_to_arrayindex_string_helper((h)) : DUK_HSTRING_NO_ARRAY_INDEX)
 
#define DUK_HSTRING_GET_ARRIDX_SLOW(h)    (duk_js_to_arrayindex_string_helper((h)))
 

Functions

DUK_INTERNAL_DECL duk_ucodepoint_t duk_hstring_char_code_at_raw (duk_hthread *thr, duk_hstring *h, duk_uint_t pos)
 
DUK_INTERNAL_DECL duk_size_t duk_hstring_get_charlen (duk_hstring *h)
 

Macro Definition Documentation

◆ DUK_HSTRING_CLEAR_ARRIDX

#define DUK_HSTRING_CLEAR_ARRIDX ( x)    DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX)

Definition at line 66 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_CLEAR_ASCII

#define DUK_HSTRING_CLEAR_ASCII ( x)    DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ASCII)

Definition at line 65 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_CLEAR_EVAL_OR_ARGUMENTS

#define DUK_HSTRING_CLEAR_EVAL_OR_ARGUMENTS ( x)    DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS)

Definition at line 70 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_CLEAR_EXTDATA

#define DUK_HSTRING_CLEAR_EXTDATA ( x)    DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA)

Definition at line 71 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_CLEAR_INTERNAL

#define DUK_HSTRING_CLEAR_INTERNAL ( x)    DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_INTERNAL)

Definition at line 67 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_CLEAR_RESERVED_WORD

#define DUK_HSTRING_CLEAR_RESERVED_WORD ( x)    DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD)

Definition at line 68 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_CLEAR_STRICT_RESERVED_WORD

#define DUK_HSTRING_CLEAR_STRICT_RESERVED_WORD ( x)    DUK_HEAPHDR_CLEAR_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD)

Definition at line 69 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_FLAG_ARRIDX

#define DUK_HSTRING_FLAG_ARRIDX   DUK_HEAPHDR_USER_FLAG(1) /* string is a valid array index */

Definition at line 42 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_FLAG_ASCII

#define DUK_HSTRING_FLAG_ASCII   DUK_HEAPHDR_USER_FLAG(0) /* string is ASCII, clen == blen */

Definition at line 41 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS

#define DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS   DUK_HEAPHDR_USER_FLAG(5) /* string is 'eval' or 'arguments' */

Definition at line 46 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_FLAG_EXTDATA

#define DUK_HSTRING_FLAG_EXTDATA   DUK_HEAPHDR_USER_FLAG(6) /* string data is external (duk_hstring_external) */

Definition at line 47 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_FLAG_INTERNAL

#define DUK_HSTRING_FLAG_INTERNAL   DUK_HEAPHDR_USER_FLAG(2) /* string is internal */

Definition at line 43 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_FLAG_RESERVED_WORD

#define DUK_HSTRING_FLAG_RESERVED_WORD   DUK_HEAPHDR_USER_FLAG(3) /* string is a reserved word (non-strict) */

Definition at line 44 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_FLAG_STRICT_RESERVED_WORD

#define DUK_HSTRING_FLAG_STRICT_RESERVED_WORD   DUK_HEAPHDR_USER_FLAG(4) /* string is a reserved word (strict) */

Definition at line 45 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_GET_ARRIDX_FAST

#define DUK_HSTRING_GET_ARRIDX_FAST ( h)     (DUK_HSTRING_HAS_ARRIDX((h)) ? duk_js_to_arrayindex_string_helper((h)) : DUK_HSTRING_NO_ARRAY_INDEX)

Definition at line 140 of file duktape-1.5.2/src-separate/duk_hstring.h.

140#define DUK_HSTRING_GET_ARRIDX_FAST(h) \
141 (DUK_HSTRING_HAS_ARRIDX((h)) ? duk_js_to_arrayindex_string_helper((h)) : DUK_HSTRING_NO_ARRAY_INDEX)

◆ DUK_HSTRING_GET_ARRIDX_SLOW

#define DUK_HSTRING_GET_ARRIDX_SLOW ( h)     (duk_js_to_arrayindex_string_helper((h)))

Definition at line 144 of file duktape-1.5.2/src-separate/duk_hstring.h.

144#define DUK_HSTRING_GET_ARRIDX_SLOW(h) \
145 (duk_js_to_arrayindex_string_helper((h)))

◆ DUK_HSTRING_GET_BYTELEN

#define DUK_HSTRING_GET_BYTELEN ( x)    ((x)->blen)

Definition at line 110 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_GET_CHARLEN

#define DUK_HSTRING_GET_CHARLEN ( x)    ((x)->clen)

Definition at line 114 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_GET_DATA

#define DUK_HSTRING_GET_DATA ( x)     ((const duk_uint8_t *) ((x) + 1))

Definition at line 127 of file duktape-1.5.2/src-separate/duk_hstring.h.

127#define DUK_HSTRING_GET_DATA(x) \
128 ((const duk_uint8_t *) ((x) + 1))

◆ DUK_HSTRING_GET_DATA_END

#define DUK_HSTRING_GET_DATA_END ( x)     (DUK_HSTRING_GET_DATA((x)) + (x)->blen)

Definition at line 131 of file duktape-1.5.2/src-separate/duk_hstring.h.

131#define DUK_HSTRING_GET_DATA_END(x) \
132 (DUK_HSTRING_GET_DATA((x)) + (x)->blen)

◆ DUK_HSTRING_GET_HASH

#define DUK_HSTRING_GET_HASH ( x)    ((x)->hash)

Definition at line 87 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_HAS_ARRIDX

#define DUK_HSTRING_HAS_ARRIDX ( x)    DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX)

Definition at line 50 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_HAS_ASCII

#define DUK_HSTRING_HAS_ASCII ( x)    DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ASCII)

Definition at line 49 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_HAS_EVAL_OR_ARGUMENTS

#define DUK_HSTRING_HAS_EVAL_OR_ARGUMENTS ( x)    DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS)

Definition at line 54 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_HAS_EXTDATA

#define DUK_HSTRING_HAS_EXTDATA ( x)    DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA)

Definition at line 55 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_HAS_INTERNAL

#define DUK_HSTRING_HAS_INTERNAL ( x)    DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_INTERNAL)

Definition at line 51 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_HAS_RESERVED_WORD

#define DUK_HSTRING_HAS_RESERVED_WORD ( x)    DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD)

Definition at line 52 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_HAS_STRICT_RESERVED_WORD

#define DUK_HSTRING_HAS_STRICT_RESERVED_WORD ( x)    DUK_HEAPHDR_CHECK_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD)

Definition at line 53 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_IS_ASCII

#define DUK_HSTRING_IS_ASCII ( x)    DUK_HSTRING_HAS_ASCII((x))

Definition at line 78 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_IS_EMPTY

#define DUK_HSTRING_IS_EMPTY ( x)    (DUK_HSTRING_GET_BYTELEN((x)) == 0)

Definition at line 79 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_MAX_BYTELEN

#define DUK_HSTRING_MAX_BYTELEN   (0x7fffffffUL)

Definition at line 32 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_NO_ARRAY_INDEX

#define DUK_HSTRING_NO_ARRAY_INDEX   (0xffffffffUL)

Definition at line 135 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_SET_ARRIDX

#define DUK_HSTRING_SET_ARRIDX ( x)    DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ARRIDX)

Definition at line 58 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_SET_ASCII

#define DUK_HSTRING_SET_ASCII ( x)    DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_ASCII)

Definition at line 57 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_SET_BYTELEN

#define DUK_HSTRING_SET_BYTELEN ( x,
v )
Value:
do { \
(x)->blen = (v); \
} while (0)

Definition at line 111 of file duktape-1.5.2/src-separate/duk_hstring.h.

111#define DUK_HSTRING_SET_BYTELEN(x,v) do { \
112 (x)->blen = (v); \
113 } while (0)

◆ DUK_HSTRING_SET_CHARLEN

#define DUK_HSTRING_SET_CHARLEN ( x,
v )
Value:
do { \
(x)->clen = (v); \
} while (0)

Definition at line 115 of file duktape-1.5.2/src-separate/duk_hstring.h.

115#define DUK_HSTRING_SET_CHARLEN(x,v) do { \
116 (x)->clen = (v); \
117 } while (0)

◆ DUK_HSTRING_SET_EVAL_OR_ARGUMENTS

#define DUK_HSTRING_SET_EVAL_OR_ARGUMENTS ( x)    DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EVAL_OR_ARGUMENTS)

Definition at line 62 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_SET_EXTDATA

#define DUK_HSTRING_SET_EXTDATA ( x)    DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_EXTDATA)

Definition at line 63 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_SET_HASH

#define DUK_HSTRING_SET_HASH ( x,
v )
Value:
do { \
(x)->hash = (v); \
} while (0)

Definition at line 88 of file duktape-1.5.2/src-separate/duk_hstring.h.

88#define DUK_HSTRING_SET_HASH(x,v) do { \
89 (x)->hash = (v); \
90 } while (0)

◆ DUK_HSTRING_SET_INTERNAL

#define DUK_HSTRING_SET_INTERNAL ( x)    DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_INTERNAL)

Definition at line 59 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_SET_RESERVED_WORD

#define DUK_HSTRING_SET_RESERVED_WORD ( x)    DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_RESERVED_WORD)

Definition at line 60 of file duktape-1.5.2/src-separate/duk_hstring.h.

◆ DUK_HSTRING_SET_STRICT_RESERVED_WORD

#define DUK_HSTRING_SET_STRICT_RESERVED_WORD ( x)    DUK_HEAPHDR_SET_FLAG_BITS(&(x)->hdr, DUK_HSTRING_FLAG_STRICT_RESERVED_WORD)

Definition at line 61 of file duktape-1.5.2/src-separate/duk_hstring.h.

Function Documentation

◆ duk_hstring_char_code_at_raw()

DUK_INTERNAL_DECL duk_ucodepoint_t duk_hstring_char_code_at_raw ( duk_hthread * thr,
duk_hstring * h,
duk_uint_t pos )

Definition at line 53074 of file duktape-1.5.2/src-noline/duktape.c.

53091 {
53092 duk_uint32_t boff;
53093 const duk_uint8_t *p, *p_start, *p_end;
53095
53096 /* Caller must check character offset to be inside the string. */
53097 DUK_ASSERT(thr != NULL);
53098 DUK_ASSERT(h != NULL);
53099 DUK_ASSERT_DISABLE(pos >= 0); /* unsigned */
53101
duk_uint_fast32_t duk_uint_t
#define DUK_HSTRING_GET_CHARLEN(x)
#define DUK_ASSERT_DISABLE(x)
#define NULL
Definition gmacros.h:924

◆ duk_hstring_get_charlen()

DUK_INTERNAL_DECL duk_size_t duk_hstring_get_charlen ( duk_hstring * h)