/** * Allocate new ecma-string and fill it with reference to ECMA magic string * * @return pointer to ecma-string descriptor */ ecma_string_t * ecma_new_ecma_string_from_magic_string_ex_id (lit_magic_string_ex_id_t id) /**< identifier of externl magic string */ { JERRY_ASSERT (id < lit_get_magic_string_ex_count ()); ecma_string_t *string_desc_p = ecma_alloc_string (); ecma_init_ecma_string_from_magic_string_ex_id (string_desc_p, id); return string_desc_p; } /* ecma_new_ecma_string_from_magic_string_ex_id */
/** * Create new literal in literal storage from characters buffer. * Don't check if the same literal already exists. * * @return pointer to created record */ lit_literal_t lit_create_literal_from_utf8_string (const lit_utf8_byte_t *str_p, /**< string to initialize the record, * could be non-zero-terminated */ lit_utf8_size_t str_size) /**< length of the string */ { JERRY_ASSERT (str_p || !str_size); lit_magic_string_id_t m_str_id; for (m_str_id = (lit_magic_string_id_t) 0; m_str_id < LIT_MAGIC_STRING__COUNT; m_str_id = (lit_magic_string_id_t) (m_str_id + 1)) { if (lit_get_magic_string_size (m_str_id) != str_size) { continue; } if (!strncmp ((const char *) str_p, (const char *) lit_get_magic_string_utf8 (m_str_id), str_size)) { return lit_create_magic_literal (m_str_id); } } lit_magic_string_ex_id_t m_str_ex_id; for (m_str_ex_id = (lit_magic_string_ex_id_t) 0; m_str_ex_id < lit_get_magic_string_ex_count (); m_str_ex_id = (lit_magic_string_ex_id_t) (m_str_ex_id + 1)) { if (lit_get_magic_string_ex_size (m_str_ex_id) != str_size) { continue; } if (!strncmp ((const char *) str_p, (const char *) lit_get_magic_string_ex_utf8 (m_str_ex_id), str_size)) { return lit_create_magic_literal_ex (m_str_ex_id); } } return lit_create_charset_literal (str_p, str_size); } /* lit_create_literal_from_utf8_string */