(z)->type = IS_STRING; \
}
+#define ZVAL_U_STRING(conv, z, s, duplicate) \
+ if (UG(unicode)) { \
+ UErrorCode status = U_ZERO_ERROR; \
+ UChar *u_str; \
+ int32_t u_len; \
+ uint length = strlen(s); \
+ zend_convert_to_unicode(conv, &u_str, &u_len, s, length, &status); \
+ ZVAL_UNICODEL(z, u_str, u_len, 0); \
+ } else { \
+ char *__s=(s); \
+ (z)->value.str.len = strlen(__s); \
+ (z)->value.str.val = (duplicate?estrndup(__s, (z)->value.str.len):__s); \
+ (z)->type = IS_STRING; \
+ }
+
+#define ZVAL_U_STRINGL(conv, z, s, l, duplicate) \
+ if (UG(unicode)) { \
+ UErrorCode status = U_ZERO_ERROR; \
+ UChar *u_str; \
+ int32_t u_len; \
+ zend_convert_to_unicode(conv, &u_str, &u_len, s, l, &status); \
+ ZVAL_UNICODEL(z, u_str, u_len, 0); \
+ } else { \
+ char *__s=(s); int __l=l; \
+ (z)->value.str.len = __l; \
+ (z)->value.str.val = (duplicate?estrndup(__s, __l):__s); \
+ (z)->type = IS_STRING; \
+ }
+
+#define ZVAL_RT_STRING(z, s, duplicate) \
+ ZVAL_U_STRING(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), z, s, duplicate)
+
+#define ZVAL_RT_STRINGL(z, s, l, duplicate) \
+ ZVAL_U_STRINGL(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), z, s, l, duplicate)
+
#define ZVAL_UNICODE(z, u, duplicate) { \
UChar *__u=(u); \
(z)->value.ustr.len = u_strlen(__u); \
#define RETVAL_STRINGL(s, l, duplicate) ZVAL_STRINGL(return_value, s, l, duplicate)
#define RETVAL_ASCII_STRING(s, duplicate) ZVAL_ASCII_STRING(return_value, s, duplicate)
#define RETVAL_ASCII_STRINGL(s, l, duplicate) ZVAL_ASCII_STRINGL(return_value, s, l, duplicate)
+#define RETVAL_U_STRING(conv, s, duplicate) ZVAL_U_STRING(conv, return_value, s, duplicate)
+#define RETVAL_U_STRINGL(conv, s, l, duplicate) ZVAL_U_STRINGL(conv, return_value, s, l, duplicate)
+#define RETVAL_RT_STRING(s, duplicate) ZVAL_RT_STRING(return_value, s, duplicate)
+#define RETVAL_RT_STRINGL(s, l, duplicate) ZVAL_RT_STRINGL(return_value, s, l, duplicate)
#define RETVAL_EMPTY_STRING() ZVAL_EMPTY_STRING(return_value)
#define RETVAL_UNICODE(u, duplicate) ZVAL_UNICODE(return_value, u, duplicate)
#define RETVAL_UNICODEL(u, l, duplicate) ZVAL_UNICODEL(return_value, u, l, duplicate)
#define RETURN_TEXTL(t, l, duplicate) { RETVAL_TEXTL(t, l, duplicate); return; }
#define RETURN_ASCII_STRING(t, duplicate) { RETVAL_ASCII_STRING(t, duplicate); return; }
#define RETURN_ASCII_STRINGL(t, l, duplicate) { RETVAL_ASCII_STRINGL(t, l, duplicate); return; }
+#define RETURN_U_STRING(conv, t, duplicate) { RETVAL_U_STRING(conv, t, duplicate); return; }
+#define RETURN_U_STRINGL(conv, t, l, duplicate) { RETVAL_U_STRINGL(conv, t, l, duplicate); return; }
+#define RETURN_RT_STRING(t, duplicate) { RETVAL_RT_STRING(t, duplicate); return; }
+#define RETURN_RT_STRINGL(t, l, duplicate) { RETVAL_RT_STRINGL(t, l, duplicate); return; }
#define SET_VAR_STRING(n, v) { \
{ \
zval z_key;
MAKE_STD_ZVAL(query_string);
- if (UG(unicode)) {
- UErrorCode status = U_ZERO_ERROR;
- UChar *u_str;
- int32_t u_len;
-
- zend_convert_to_unicode(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), &u_str, &u_len, stmt->query_string, stmt->query_stringlen, &status);
- ZVAL_UNICODEL(query_string, u_str, u_len, 0);
- u_str = zend_ascii_to_unicode("queryString", sizeof("queryString") ZEND_FILE_LINE_CC);
- ZVAL_UNICODEL(&z_key, u_str, sizeof("queryString")-1, 0);
- } else {
- ZVAL_STRINGL(query_string, stmt->query_string, stmt->query_stringlen, 1);
- ZVAL_STRINGL(&z_key, "queryString", sizeof("queryString")-1, 0);
- }
+ ZVAL_RT_STRINGL(query_string, stmt->query_string, stmt->query_stringlen, 1);
+ ZVAL_ASCII_STRINGL(&z_key, "queryString", sizeof("queryString")-1, 0);
std_object_handlers.write_property(object, &z_key, query_string TSRMLS_CC);
zval_ptr_dtor(&query_string);
if (UG(unicode)) {
} else {
if (node->type == XML_TEXT_NODE) {
MAKE_STD_ZVAL(value);
- ZVAL_STRING(value, xmlNodeListGetString(node->doc, node, 1), 1);
- if (UG(unicode)) {
- convert_to_unicode(value);
- }
+ ZVAL_U_STRING(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), value, xmlNodeListGetString(node->doc, node, 1), 1);
zend_hash_next_index_insert(rv, &value, sizeof(zval *), NULL);
goto next_iter;
}
if (zend_u_hash_find(Z_ARRVAL_P(list), ztype, pce->name, len+1, (void*)&tmp) == FAILURE) {
MAKE_STD_ZVAL(tmp);
- if (UG(unicode)) {
- ZVAL_UNICODEL(tmp, (UChar *)pce->name, pce->name_length, 1);
- } else {
- ZVAL_STRINGL(tmp, pce->name, pce->name_length, 1);
- }
+ ZVAL_TEXTL(tmp, pce->name, pce->name_length, 1);
zend_u_hash_add(Z_ARRVAL_P(list), ztype, pce->name, len+1, &tmp, sizeof(zval *), NULL);
}
}
intern = (php_sxe_object *)zend_object_store_get_object(sxe->iter.data TSRMLS_CC);
if (intern != NULL && intern->node != NULL) {
curnode = (xmlNodePtr)((php_libxml_node_ptr *)intern->node)->node;
- if (UG(unicode)) {
- UErrorCode status = U_ZERO_ERROR;
- UChar *u_str;
- int32_t u_len;
-
- zend_convert_to_unicode(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), &u_str, &u_len, (char*)curnode->name, xmlStrlen(curnode->name), &status);
- RETURN_UNICODEL(u_str, u_len, 0);
- } else {
- RETURN_STRINGL((char*)curnode->name, xmlStrlen(curnode->name), 1);
- }
+ RETURN_U_STRINGL(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), (char*)curnode->name, xmlStrlen(curnode->name), 1);
}
- RETURN_FALSE;
+ RETURN_FALSE;
}
/* }}} */
char *decoded = emalloc(l);
l = php_sqlite_decode_binary(rowdata[j]+1, decoded);
decoded[l] = '\0';
- if (UG(unicode)) {
- RETVAL_BINARYL(decoded, l, 0);
- } else {
- RETVAL_STRINGL(decoded, l, 0);
- }
+ RETVAL_BINARYL(decoded, l, 0);
if (!res->buffered) {
efree((char*)rowdata[j]);
rowdata[j] = NULL;
if (ZEND_NUM_ARGS() != 0) {
WRONG_PARAM_COUNT;
}
- if (UG(unicode)) {
- char *temp = (char*)sqlite_libversion();
- UChar *u_temp = zend_ascii_to_unicode(temp, strlen(temp)+1 ZEND_FILE_LINE_CC);
- RETURN_UNICODE(u_temp, 0);
- } else {
- RETURN_STRING((char*)sqlite_libversion(), 1);
- }
+ RETURN_ASCII_STRING((char*)sqlite_libversion(), 1);
}
/* }}} */
if (ZEND_NUM_ARGS() != 0) {
WRONG_PARAM_COUNT;
}
- if (UG(unicode)) {
- char *temp = (char*)sqlite_libencoding();
- UChar *u_temp = zend_ascii_to_unicode(temp, strlen(temp)+1 ZEND_FILE_LINE_CC);
- RETURN_UNICODE(u_temp, 0);
- } else {
- RETURN_STRING((char*)sqlite_libencoding(), 1);
- }
+ RETURN_ASCII_STRING((char*)sqlite_libencoding(), 1);
}
/* }}} */
RETURN_FALSE;
}
- if (UG(unicode)) {
- UErrorCode status = U_ZERO_ERROR;
- UChar *u_str;
- int32_t u_len;
-
- zend_convert_to_unicode(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), &u_str, &u_len, res->col_names[field], strlen(res->col_names[field]), &status);
- RETURN_UNICODEL(u_str, u_len, 0);
- } else {
- RETURN_STRING(res->col_names[field], 1);
- }
+ RETURN_U_STRING(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), res->col_names[field], 1);
}
/* }}} */
msg = sqlite_error_string(code);
if (msg) {
- if (UG(unicode)) {
- UErrorCode status = U_ZERO_ERROR;
- UChar *u_str;
- int32_t u_len;
-
- zend_convert_to_unicode(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), &u_str, &u_len, msg, strlen(msg), &status);
- RETURN_UNICODEL(u_str, u_len, 0);
- } else {
- RETURN_STRING((char*)msg, 1);
- }
+ RETURN_U_STRING(ZEND_U_CONVERTER(UG(runtime_encoding_conv)), (char*)msg, 1);
} else {
RETURN_NULL();
}
/* break omitted intentionally */
case EXTR_OVERWRITE:
- if (UG(unicode)) {
- ZVAL_UNICODEL(&final_name, var_name, var_name_len, 1);
- } else {
- ZVAL_STRINGL(&final_name, var_name, var_name_len, 1);
- }
+ ZVAL_TEXTL(&final_name, var_name, var_name_len, 1);
break;
case EXTR_PREFIX_IF_EXISTS:
case EXTR_PREFIX_SAME:
if (!var_exists) {
- if (UG(unicode)) {
- ZVAL_UNICODEL(&final_name, var_name, var_name_len, 1);
- } else {
- ZVAL_STRINGL(&final_name, var_name, var_name_len, 1);
- }
+ ZVAL_TEXTL(&final_name, var_name, var_name_len, 1);
}
/* break omitted intentionally */
memcpy(Z_STRVAL(final_name)+Z_STRLEN_PP(prefix)+1, var_name, var_name_len+1);
}
} else {
- if (UG(unicode)) {
- ZVAL_UNICODEL(&final_name, var_name, var_name_len, 1);
- } else {
- ZVAL_STRINGL(&final_name, var_name, var_name_len, 1);
- }
+ ZVAL_TEXTL(&final_name, var_name, var_name_len, 1);
}
}
break;
default:
if (!var_exists) {
- if (UG(unicode)) {
- ZVAL_UNICODEL(&final_name, var_name, var_name_len, 1);
- } else {
- ZVAL_STRINGL(&final_name, var_name, var_name_len, 1);
- }
+ ZVAL_TEXTL(&final_name, var_name, var_name_len, 1);
}
break;
}
MAKE_STD_ZVAL(val);
if (optarg != NULL) {
- ZVAL_STRING(val, optarg, 1);
+ ZVAL_RT_STRING(val, optarg, 1);
} else {
ZVAL_FALSE(val);
}
}
convert_to_long_ex(p_image_type);
temp = (char*)php_image_type_to_mime_type(Z_LVAL_PP(p_image_type));
- if (UG(unicode)) {
- UChar *u_temp = zend_ascii_to_unicode(temp, strlen(temp)+1 ZEND_FILE_LINE_CC);
- ZVAL_UNICODE(return_value, u_temp, 0);
- } else {
- ZVAL_STRING(return_value, temp, 1);
- }
+ ZVAL_ASCII_STRING(return_value, temp, 1);
}
/* }}} */
temp = ".xbm";
}
if (temp) {
- if (UG(unicode)) {
- UChar *u_temp = zend_ascii_to_unicode(temp + !inc_dot, strlen(temp)+inc_dot ZEND_FILE_LINE_CC);
- RETURN_UNICODE(u_temp, 0);
- } else {
- RETURN_STRING(temp + !inc_dot, 1);
- }
+ RETURN_ASCII_STRING(temp + !inc_dot, 1);
}
RETURN_FALSE;
add_index_long(return_value, 1, result->height);
add_index_long(return_value, 2, itype);
spprintf(&temp, 0, "width=\"%d\" height=\"%d\"", result->width, result->height);
+ add_index_ascii_string(return_value, 3, temp, 0);
if (UG(unicode)) {
- UChar *u_temp = zend_ascii_to_unicode(temp, strlen(temp)+1 ZEND_FILE_LINE_CC);
- add_index_unicode(return_value, 3, u_temp, 0);
efree(temp);
- } else {
- add_index_string(return_value, 3, temp, 0);
}
if (result->bits != 0) {
add_assoc_long(return_value, "channels", result->channels);
}
temp = (char*)php_image_type_to_mime_type(itype);
- if (UG(unicode)) {
- UChar *u_temp = zend_ascii_to_unicode(temp, strlen(temp)+1 ZEND_FILE_LINE_CC);
- add_assoc_unicode(return_value, "mime", u_temp, 0);
- } else {
- add_assoc_string(return_value, "mime", temp, 1);
- }
+ add_assoc_ascii_string(return_value, "mime", temp, 1);
efree(result);
} else {
RETURN_FALSE;
RETURN_BINARYL(digest, 16, 1);
} else {
make_digest(md5str, digest);
- if (UG(unicode)) {
- UChar *u_temp = zend_ascii_to_unicode(md5str, 33 ZEND_FILE_LINE_CC);
- RETVAL_UNICODE(u_temp, 0);
- } else {
- RETVAL_STRING(md5str, 1);
- }
+ RETVAL_ASCII_STRING(md5str, 1);
}
}
RETURN_BINARYL(digest, 16, 1);
} else {
make_digest(md5str, digest);
- if (UG(unicode)) {
- UChar *u_temp = zend_ascii_to_unicode(md5str, 33 ZEND_FILE_LINE_CC);
- RETVAL_UNICODE(u_temp, 0);
- } else {
- RETVAL_STRING(md5str, 1);
- }
+ RETVAL_ASCII_STRING(md5str, 1);
}
}
/* }}} */
WRONG_PARAM_COUNT;
}
if (Z_TYPE_PP(arg) != IS_STRING && Z_TYPE_PP(arg) != IS_UNICODE) {
- if (UG(unicode)) {
- convert_to_unicode_ex(arg);
- } else {
- convert_to_string_ex(arg);
- }
+ convert_to_text_ex(arg);
}
RETVAL_ZVAL(*arg, 1, 0);
WRONG_PARAM_COUNT;
}
if (Z_TYPE_PP(str) != IS_STRING && Z_TYPE_PP(str) != IS_UNICODE) {
- if (UG(unicode)) {
- convert_to_unicode_ex(str);
- } else {
- convert_to_string_ex(str);
- }
+ convert_to_text_ex(str);
}
RETVAL_ZVAL(*str, 1, 0);