php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_string.h File Reference
#include "zend_types.h"
#include "zend_gc.h"
#include "zend_alloc.h"

Go to the source code of this file.

Macros

#define ZSTR_VAL(zstr)
 
#define ZSTR_LEN(zstr)
 
#define ZSTR_H(zstr)
 
#define ZSTR_HASH(zstr)
 
#define IS_INTERNED(s)
 
#define STR_EMPTY_ALLOC()
 
#define _STR_HEADER_SIZE   _ZSTR_HEADER_SIZE
 
#define STR_ALLOCA_ALLOC(str, _len, use_heap)
 
#define STR_ALLOCA_INIT(str, s, len, use_heap)
 
#define STR_ALLOCA_FREE(str, use_heap)
 
#define ZSTR_IS_INTERNED(s)
 
#define ZSTR_IS_VALID_UTF8(s)
 
#define ZSTR_COPYABLE_CONCAT_PROPERTIES   (IS_STR_VALID_UTF8)
 
#define ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(s)
 
#define ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(s1, s2)
 
#define ZSTR_COPY_CONCAT_PROPERTIES(out, in)
 
#define ZSTR_COPY_CONCAT_PROPERTIES_BOTH(out, in1, in2)
 
#define ZSTR_EMPTY_ALLOC()
 
#define ZSTR_CHAR(c)
 
#define ZSTR_KNOWN(idx)
 
#define _ZSTR_HEADER_SIZE   XtOffsetOf(zend_string, val)
 
#define _ZSTR_STRUCT_SIZE(len)
 
#define ZSTR_MAX_OVERHEAD   (ZEND_MM_ALIGNED_SIZE(_ZSTR_HEADER_SIZE + 1))
 
#define ZSTR_MAX_LEN   (SIZE_MAX - ZSTR_MAX_OVERHEAD)
 
#define ZSTR_ALLOCA_ALLOC(str, _len, use_heap)
 
#define ZSTR_ALLOCA_INIT(str, s, len, use_heap)
 
#define ZSTR_ALLOCA_FREE(str, use_heap)
 
#define ZSTR_INIT_LITERAL(s, persistent)
 
#define zend_string_equals_ci(s1, s2)
 
#define zend_string_equals_literal_ci(str, c)
 
#define zend_string_equals_literal(str, literal)
 
#define zend_string_starts_with_literal(str, prefix)
 
#define zend_string_starts_with_literal_ci(str, prefix)
 
#define ZEND_KNOWN_STRINGS(_)
 
#define _ZEND_STR_ID(id, str)
 

Typedefs

typedef void(* zend_string_copy_storage_func_t) (void)
 
typedef zend_string *(ZEND_FASTCALLzend_new_interned_string_func_t) (zend_string *str)
 
typedef zend_string *(ZEND_FASTCALLzend_string_init_interned_func_t) (const char *str, size_t size, bool permanent)
 
typedef zend_string *(ZEND_FASTCALLzend_string_init_existing_interned_func_t) (const char *str, size_t size, bool permanent)
 
typedef enum _zend_known_string_id zend_known_string_id
 

Enumerations

enum  _zend_known_string_id { ZEND_STR_LAST_KNOWN }
 

Functions

ZEND_API zend_ulong ZEND_FASTCALL zend_string_hash_func (zend_string *str)
 
ZEND_API zend_ulong ZEND_FASTCALL zend_hash_func (const char *str, size_t len)
 
ZEND_API zend_string *ZEND_FASTCALL zend_interned_string_find_permanent (zend_string *str)
 
ZEND_API zend_stringzend_string_concat2 (const char *str1, size_t str1_len, const char *str2, size_t str2_len)
 
ZEND_API zend_stringzend_string_concat3 (const char *str1, size_t str1_len, const char *str2, size_t str2_len, const char *str3, size_t str3_len)
 
ZEND_API void zend_interned_strings_init (void)
 
ZEND_API void zend_interned_strings_dtor (void)
 
ZEND_API void zend_interned_strings_activate (void)
 
ZEND_API void zend_interned_strings_deactivate (void)
 
ZEND_API void zend_interned_strings_set_request_storage_handlers (zend_new_interned_string_func_t handler, zend_string_init_interned_func_t init_handler, zend_string_init_existing_interned_func_t init_existing_handler)
 
ZEND_API void zend_interned_strings_switch_storage (bool request)
 

Variables

ZEND_API zend_new_interned_string_func_t zend_new_interned_string
 
ZEND_API zend_string_init_interned_func_t zend_string_init_interned
 
ZEND_API zend_string_init_existing_interned_func_t zend_string_init_existing_interned
 
ZEND_API zend_stringzend_empty_string
 
ZEND_API zend_stringzend_one_char_string [256]
 
ZEND_API zend_string ** zend_known_strings
 

Macro Definition Documentation

◆ _STR_HEADER_SIZE

#define _STR_HEADER_SIZE   _ZSTR_HEADER_SIZE

Definition at line 77 of file zend_string.h.

◆ _ZEND_STR_ID

#define _ZEND_STR_ID ( id,
str )
Value:
id,

Definition at line 644 of file zend_string.h.

◆ _ZSTR_HEADER_SIZE

#define _ZSTR_HEADER_SIZE   XtOffsetOf(zend_string, val)

Definition at line 112 of file zend_string.h.

◆ _ZSTR_STRUCT_SIZE

#define _ZSTR_STRUCT_SIZE ( len)
Value:
size_t len
Definition apprentice.c:174
#define _ZSTR_HEADER_SIZE

Definition at line 114 of file zend_string.h.

◆ IS_INTERNED

#define IS_INTERNED ( s)
Value:
char s[4]
Definition cdf.c:77
#define ZSTR_IS_INTERNED(s)
Definition zend_string.h:84

Definition at line 75 of file zend_string.h.

◆ STR_ALLOCA_ALLOC

#define STR_ALLOCA_ALLOC ( str,
_len,
use_heap )
Value:
ZSTR_ALLOCA_ALLOC(str, _len, use_heap)
#define ZSTR_ALLOCA_ALLOC(str, _len, use_heap)

Definition at line 78 of file zend_string.h.

◆ STR_ALLOCA_FREE

#define STR_ALLOCA_FREE ( str,
use_heap )
Value:
ZSTR_ALLOCA_FREE(str, use_heap)
#define ZSTR_ALLOCA_FREE(str, use_heap)

Definition at line 80 of file zend_string.h.

◆ STR_ALLOCA_INIT

#define STR_ALLOCA_INIT ( str,
s,
len,
use_heap )
Value:
ZSTR_ALLOCA_INIT(str, s, len, use_heap)
#define ZSTR_ALLOCA_INIT(str, s, len, use_heap)

Definition at line 79 of file zend_string.h.

◆ STR_EMPTY_ALLOC

#define STR_EMPTY_ALLOC ( )
Value:
#define ZSTR_EMPTY_ALLOC()

Definition at line 76 of file zend_string.h.

◆ ZEND_KNOWN_STRINGS

#define ZEND_KNOWN_STRINGS ( _)

Definition at line 563 of file zend_string.h.

◆ zend_string_equals_ci

#define zend_string_equals_ci ( s1,
s2 )
Value:
ZEND_API int ZEND_FASTCALL zend_binary_strcasecmp(const char *s1, size_t len1, const char *s2, size_t len2)
#define ZSTR_VAL(zstr)
Definition zend_string.h:68
#define ZSTR_LEN(zstr)
Definition zend_string.h:69

Definition at line 394 of file zend_string.h.

◆ zend_string_equals_literal

#define zend_string_equals_literal ( str,
literal )
Value:
zend_string_equals_cstr(str, "" literal, sizeof(literal) - 1)

Definition at line 400 of file zend_string.h.

◆ zend_string_equals_literal_ci

#define zend_string_equals_literal_ci ( str,
c )
Value:
(ZSTR_LEN(str) == sizeof("" c) - 1 && !zend_binary_strcasecmp(ZSTR_VAL(str), ZSTR_LEN(str), (c), sizeof(c) - 1))

Definition at line 397 of file zend_string.h.

◆ zend_string_starts_with_literal

#define zend_string_starts_with_literal ( str,
prefix )
Value:
zend_string_starts_with_cstr(str, prefix, strlen(prefix))
#define prefix
strlen(string $string)

Definition at line 413 of file zend_string.h.

◆ zend_string_starts_with_literal_ci

#define zend_string_starts_with_literal_ci ( str,
prefix )
Value:
zend_string_starts_with_cstr_ci(str, prefix, strlen(prefix))

Definition at line 426 of file zend_string.h.

◆ ZSTR_ALLOCA_ALLOC

#define ZSTR_ALLOCA_ALLOC ( str,
_len,
use_heap )
Value:
do { \
(str) = (zend_string *)do_alloca(ZEND_MM_ALIGNED_SIZE_EX(_ZSTR_STRUCT_SIZE(_len), 8), (use_heap)); \
GC_SET_REFCOUNT(str, 1); \
GC_TYPE_INFO(str) = GC_STRING; \
ZSTR_H(str) = 0; \
ZSTR_LEN(str) = _len; \
} while (0)
#define ZEND_MM_ALIGNED_SIZE_EX(size, alignment)
Definition zend_alloc.h:37
struct _zend_string zend_string
#define do_alloca(p, use_heap)
#define _ZSTR_STRUCT_SIZE(len)
#define GC_STRING
Definition zend_types.h:785

Definition at line 119 of file zend_string.h.

◆ ZSTR_ALLOCA_FREE

#define ZSTR_ALLOCA_FREE ( str,
use_heap )
Value:
free_alloca(str, use_heap)
#define free_alloca(p, use_heap)

Definition at line 133 of file zend_string.h.

◆ ZSTR_ALLOCA_INIT

#define ZSTR_ALLOCA_INIT ( str,
s,
len,
use_heap )
Value:
do { \
ZSTR_ALLOCA_ALLOC(str, len, use_heap); \
memcpy(ZSTR_VAL(str), (s), (len)); \
ZSTR_VAL(str)[(len)] = '\0'; \
} while (0)

Definition at line 127 of file zend_string.h.

◆ ZSTR_CHAR

#define ZSTR_CHAR ( c)
Value:
ZEND_API zend_string * zend_one_char_string[256]
Definition zend_string.c:52

Definition at line 109 of file zend_string.h.

◆ ZSTR_COPY_CONCAT_PROPERTIES

#define ZSTR_COPY_CONCAT_PROPERTIES ( out,
in )
Value:
do { \
zend_string *_out = (out); \
uint32_t properties = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES((in)); \
GC_ADD_FLAGS(_out, properties); \
} while (0)
#define ZSTR_GET_COPYABLE_CONCAT_PROPERTIES(s)
Definition zend_string.h:92
out($f, $s)

Definition at line 96 of file zend_string.h.

◆ ZSTR_COPY_CONCAT_PROPERTIES_BOTH

#define ZSTR_COPY_CONCAT_PROPERTIES_BOTH ( out,
in1,
in2 )
Value:
do { \
zend_string *_out = (out); \
uint32_t properties = ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH((in1), (in2)); \
GC_ADD_FLAGS(_out, properties); \
} while (0)
#define ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH(s1, s2)
Definition zend_string.h:94

Definition at line 102 of file zend_string.h.

◆ ZSTR_COPYABLE_CONCAT_PROPERTIES

#define ZSTR_COPYABLE_CONCAT_PROPERTIES   (IS_STR_VALID_UTF8)

Definition at line 90 of file zend_string.h.

◆ ZSTR_EMPTY_ALLOC

#define ZSTR_EMPTY_ALLOC ( )
Value:
ZEND_API zend_string * zend_empty_string
Definition zend_string.c:51

Definition at line 108 of file zend_string.h.

◆ ZSTR_GET_COPYABLE_CONCAT_PROPERTIES

#define ZSTR_GET_COPYABLE_CONCAT_PROPERTIES ( s)
Value:
#define ZSTR_COPYABLE_CONCAT_PROPERTIES
Definition zend_string.h:90
#define GC_FLAGS(p)
Definition zend_types.h:756

Definition at line 92 of file zend_string.h.

◆ ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH

#define ZSTR_GET_COPYABLE_CONCAT_PROPERTIES_BOTH ( s1,
s2 )
Value:

Definition at line 94 of file zend_string.h.

◆ ZSTR_H

#define ZSTR_H ( zstr)
Value:
(zstr)->h

Definition at line 70 of file zend_string.h.

◆ ZSTR_HASH

#define ZSTR_HASH ( zstr)
Value:
zend_string_hash_val(zstr)

Definition at line 71 of file zend_string.h.

◆ ZSTR_INIT_LITERAL

#define ZSTR_INIT_LITERAL ( s,
persistent )
Value:
(zend_string_init((s), strlen(s), (persistent)))
ffi persistent
Definition ffi.c:3633

Definition at line 135 of file zend_string.h.

◆ ZSTR_IS_INTERNED

#define ZSTR_IS_INTERNED ( s)
Value:
#define IS_STR_INTERNED
Definition zend_types.h:817

Definition at line 84 of file zend_string.h.

◆ ZSTR_IS_VALID_UTF8

#define ZSTR_IS_VALID_UTF8 ( s)
Value:
#define IS_STR_VALID_UTF8
Definition zend_types.h:820

Definition at line 85 of file zend_string.h.

◆ ZSTR_KNOWN

#define ZSTR_KNOWN ( idx)
Value:
ZEND_API zend_string ** zend_known_strings
Definition zend_string.c:53

Definition at line 110 of file zend_string.h.

◆ ZSTR_LEN

#define ZSTR_LEN ( zstr)
Value:
(zstr)->len

Definition at line 69 of file zend_string.h.

◆ ZSTR_MAX_LEN

#define ZSTR_MAX_LEN   (SIZE_MAX - ZSTR_MAX_OVERHEAD)

Definition at line 117 of file zend_string.h.

◆ ZSTR_MAX_OVERHEAD

#define ZSTR_MAX_OVERHEAD   (ZEND_MM_ALIGNED_SIZE(_ZSTR_HEADER_SIZE + 1))

Definition at line 116 of file zend_string.h.

◆ ZSTR_VAL

#define ZSTR_VAL ( zstr)
Value:
(zstr)->val
zval * val
Definition ffi.c:4262

Definition at line 68 of file zend_string.h.

Typedef Documentation

◆ zend_known_string_id

◆ zend_new_interned_string_func_t

typedef zend_string *(ZEND_FASTCALL * zend_new_interned_string_func_t) (zend_string *str)

Definition at line 29 of file zend_string.h.

◆ zend_string_copy_storage_func_t

typedef void(* zend_string_copy_storage_func_t) (void)

Definition at line 28 of file zend_string.h.

◆ zend_string_init_existing_interned_func_t

typedef zend_string *(ZEND_FASTCALL * zend_string_init_existing_interned_func_t) (const char *str, size_t size, bool permanent)

Definition at line 31 of file zend_string.h.

◆ zend_string_init_interned_func_t

typedef zend_string *(ZEND_FASTCALL * zend_string_init_interned_func_t) (const char *str, size_t size, bool permanent)

Definition at line 30 of file zend_string.h.

Enumeration Type Documentation

◆ _zend_known_string_id

Enumerator
ZEND_STR_LAST_KNOWN 

Definition at line 643 of file zend_string.h.

Function Documentation

◆ zend_hash_func()

ZEND_API zend_ulong ZEND_FASTCALL zend_hash_func ( const char * str,
size_t len )

Definition at line 60 of file zend_string.c.

◆ zend_interned_string_find_permanent()

ZEND_API zend_string *ZEND_FASTCALL zend_interned_string_find_permanent ( zend_string * str)

Definition at line 192 of file zend_string.c.

◆ zend_interned_strings_activate()

ZEND_API void zend_interned_strings_activate ( void )

Definition at line 351 of file zend_string.c.

◆ zend_interned_strings_deactivate()

ZEND_API void zend_interned_strings_deactivate ( void )

Definition at line 356 of file zend_string.c.

◆ zend_interned_strings_dtor()

ZEND_API void zend_interned_strings_dtor ( void )

Definition at line 129 of file zend_string.c.

◆ zend_interned_strings_init()

ZEND_API void zend_interned_strings_init ( void )

Definition at line 86 of file zend_string.c.

◆ zend_interned_strings_set_request_storage_handlers()

ZEND_API void zend_interned_strings_set_request_storage_handlers ( zend_new_interned_string_func_t handler,
zend_string_init_interned_func_t init_handler,
zend_string_init_existing_interned_func_t init_existing_handler )

Definition at line 361 of file zend_string.c.

◆ zend_interned_strings_switch_storage()

ZEND_API void zend_interned_strings_switch_storage ( bool request)

Definition at line 368 of file zend_string.c.

◆ zend_string_concat2()

ZEND_API zend_string * zend_string_concat2 ( const char * str1,
size_t str1_len,
const char * str2,
size_t str2_len )

Definition at line 478 of file zend_string.c.

◆ zend_string_concat3()

ZEND_API zend_string * zend_string_concat3 ( const char * str1,
size_t str1_len,
const char * str2,
size_t str2_len,
const char * str3,
size_t str3_len )

Definition at line 492 of file zend_string.c.

◆ zend_string_hash_func()

ZEND_API zend_ulong ZEND_FASTCALL zend_string_hash_func ( zend_string * str)

Definition at line 55 of file zend_string.c.

Variable Documentation

◆ zend_empty_string

ZEND_API zend_string* zend_empty_string
extern

Definition at line 51 of file zend_string.c.

◆ zend_known_strings

ZEND_API zend_string** zend_known_strings
extern

Definition at line 53 of file zend_string.c.

◆ zend_new_interned_string

ZEND_API zend_new_interned_string_func_t zend_new_interned_string
extern

Definition at line 30 of file zend_string.c.

◆ zend_one_char_string

ZEND_API zend_string* zend_one_char_string[256]
extern

Definition at line 52 of file zend_string.c.

◆ zend_string_init_existing_interned

ZEND_API zend_string_init_existing_interned_func_t zend_string_init_existing_interned
extern

Definition at line 32 of file zend_string.c.

◆ zend_string_init_interned

ZEND_API zend_string_init_interned_func_t zend_string_init_interned
extern

Definition at line 31 of file zend_string.c.