Skip to content

Commit f6456f3

Browse files
committed
Convert macros to inline functions in Zend SmartStr
1 parent 76e28b3 commit f6456f3

File tree

2 files changed

+60
-22
lines changed

2 files changed

+60
-22
lines changed

Zend/zend_smart_str.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,18 @@ static size_t zend_compute_escaped_string_len(const char *s, size_t l) {
7373
return len;
7474
}
7575

76+
extern ZEND_API inline void smart_str_appendl(smart_str *dest, const char *src, size_t length);
77+
extern ZEND_API inline void smart_str_appends_ex(smart_str *dest, const char *src, bool persistent);
78+
extern ZEND_API inline void smart_str_appends(smart_str *dest, const char *src);
79+
extern ZEND_API inline void smart_str_append(smart_str *dest, const zend_string *src);
80+
extern ZEND_API inline void smart_str_appendc(smart_str *dest, char ch);
81+
extern ZEND_API inline void smart_str_append_smart_str(smart_str *dest, const smart_str *src);
82+
extern ZEND_API inline void smart_str_free(smart_str *str);
83+
extern ZEND_API inline void smart_str_append_long(smart_str *dest, zend_long num);
84+
extern ZEND_API inline void smart_str_append_unsigned(smart_str *dest, zend_ulong num);
85+
extern ZEND_API inline void smart_str_sets(smart_str *dest, const char *src);
86+
87+
7688
ZEND_API void ZEND_FASTCALL smart_str_append_escaped(smart_str *str, const char *s, size_t l) {
7789
char *res;
7890
size_t i, len = zend_compute_escaped_string_len(s, l);

Zend/zend_smart_str.h

Lines changed: 48 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -21,28 +21,30 @@
2121
#include "zend_globals.h"
2222
#include "zend_smart_str_public.h"
2323

24-
#define smart_str_appends_ex(dest, src, what) \
25-
smart_str_appendl_ex((dest), (src), strlen(src), (what))
26-
#define smart_str_appends(dest, src) \
27-
smart_str_appendl((dest), (src), strlen(src))
28-
#define smart_str_extend(dest, len) \
29-
smart_str_extend_ex((dest), (len), 0)
30-
#define smart_str_appendc(dest, c) \
31-
smart_str_appendc_ex((dest), (c), 0)
32-
#define smart_str_appendl(dest, src, len) \
33-
smart_str_appendl_ex((dest), (src), (len), 0)
34-
#define smart_str_append(dest, src) \
35-
smart_str_append_ex((dest), (src), 0)
36-
#define smart_str_append_smart_str(dest, src) \
37-
smart_str_append_smart_str_ex((dest), (src), 0)
38-
#define smart_str_sets(dest, src) \
39-
smart_str_setl((dest), (src), strlen(src));
40-
#define smart_str_append_long(dest, val) \
41-
smart_str_append_long_ex((dest), (val), 0)
42-
#define smart_str_append_unsigned(dest, val) \
43-
smart_str_append_unsigned_ex((dest), (val), 0)
44-
#define smart_str_free(dest) \
45-
smart_str_free_ex((dest), 0)
24+
ZEND_API inline void smart_str_appendl(smart_str *dest, const char *src, size_t length)
25+
{
26+
smart_str_appendl_ex(dest, src, length, 0);
27+
}
28+
ZEND_API inline void smart_str_appends_ex(smart_str *dest, const char *src, bool persistent)
29+
{
30+
smart_str_appendl_ex(dest, src, strlen(src), persistent);
31+
}
32+
ZEND_API inline void smart_str_appends(smart_str *dest, const char *src)
33+
{
34+
smart_str_appendl_ex(dest, src, strlen(src), 0);
35+
}
36+
ZEND_API inline void smart_str_append(smart_str *dest, const zend_string *src)
37+
{
38+
smart_str_append_ex(dest, src, 0);
39+
}
40+
ZEND_API inline void smart_str_appendc(smart_str *dest, char ch)
41+
{
42+
smart_str_appendc_ex(dest, ch, 0);
43+
}
44+
ZEND_API inline void smart_str_append_smart_str(smart_str *dest, const smart_str *src)
45+
{
46+
smart_str_append_smart_str_ex(dest, src, 0);
47+
}
4648

4749
BEGIN_EXTERN_C()
4850

@@ -78,6 +80,11 @@ static zend_always_inline char* smart_str_extend_ex(smart_str *dest, size_t len,
7880
return ret;
7981
}
8082

83+
ZEND_API inline char* smart_str_extend(smart_str *dest, size_t length)
84+
{
85+
return smart_str_extend_ex(dest, length, 0);
86+
}
87+
8188
static zend_always_inline void smart_str_free_ex(smart_str *str, zend_bool persistent) {
8289
if (str->s) {
8390
zend_string_release_ex(str->s, persistent);
@@ -86,6 +93,11 @@ static zend_always_inline void smart_str_free_ex(smart_str *str, zend_bool persi
8693
str->a = 0;
8794
}
8895

96+
ZEND_API inline void smart_str_free(smart_str *str)
97+
{
98+
smart_str_free_ex(str, 0);
99+
}
100+
89101
static zend_always_inline void smart_str_0(smart_str *str) {
90102
if (str->s) {
91103
ZSTR_VAL(str->s)[ZSTR_LEN(str->s)] = '\0';
@@ -136,15 +148,29 @@ static zend_always_inline void smart_str_append_long_ex(smart_str *dest, zend_lo
136148
smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
137149
}
138150

151+
ZEND_API inline void smart_str_append_long(smart_str *dest, zend_long num)
152+
{
153+
smart_str_append_long_ex(dest, num, 0);
154+
}
155+
139156
static zend_always_inline void smart_str_append_unsigned_ex(smart_str *dest, zend_ulong num, zend_bool persistent) {
140157
char buf[32];
141158
char *result = zend_print_ulong_to_buf(buf + sizeof(buf) - 1, num);
142159
smart_str_appendl_ex(dest, result, buf + sizeof(buf) - 1 - result, persistent);
143160
}
144161

162+
ZEND_API inline void smart_str_append_unsigned(smart_str *dest, zend_ulong num)
163+
{
164+
smart_str_append_unsigned_ex(dest, num, 0);
165+
}
166+
145167
static zend_always_inline void smart_str_setl(smart_str *dest, const char *src, size_t len) {
146168
smart_str_free(dest);
147169
smart_str_appendl(dest, src, len);
148170
}
149171

172+
ZEND_API inline void smart_str_sets(smart_str *dest, const char *src)
173+
{
174+
smart_str_setl(dest, src, strlen(src));
175+
}
150176
#endif

0 commit comments

Comments
 (0)