Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Conflicts:
	api.h
	backend/api.h
	backend/icu.cpp
	ustring.cpp
  • Loading branch information
weltling committed Aug 27, 2014
2 parents 496c1d1 + 574c90a commit c0b9155
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 44 deletions.
6 changes: 3 additions & 3 deletions api.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ extern "C" {
}

/* {{{ */
PHP_USTRING_API void php_ustring_construct(zval *that, const char *value, size_t len, const char *codepage, size_t clen TSRMLS_DC);
PHP_USTRING_API size_t php_ustring_length(zval *that TSRMLS_DC);
PHP_USTRING_API void php_ustring_construct(zval *that, const char *value, int32_t len, const char *codepage, int32_t clen TSRMLS_DC);
PHP_USTRING_API int32_t php_ustring_length(zval *that TSRMLS_DC);
PHP_USTRING_API bool php_ustring_startsWith(zval *that, zval *needle TSRMLS_DC);
PHP_USTRING_API bool php_ustring_endsWith(zval *that, zval *needle TSRMLS_DC);
PHP_USTRING_API int32_t php_ustring_indexOf(zval *that, zval *needle, int32_t offset TSRMLS_DC);
Expand All @@ -58,7 +58,7 @@ PHP_USTRING_API zval* php_ustring_pad(zval *that, int32_t target_len, z
PHP_USTRING_API zval* php_ustring_split(zval *that, zval *delimiter, int32_t limit, zval *pieces TSRMLS_DC);
PHP_USTRING_API zend_string* php_ustring_getCodepage(zval *that TSRMLS_DC);

PHP_USTRING_API void php_ustring_setDefaultCodepage(const char *value, size_t len TSRMLS_DC);
PHP_USTRING_API void php_ustring_setDefaultCodepage(const char *value, int32_t len TSRMLS_DC);
PHP_USTRING_API zend_string* php_ustring_getDefaultCodepage(TSRMLS_D);

PHP_USTRING_API zend_class_entry* ce_UString;
Expand Down
4 changes: 2 additions & 2 deletions backend/api.h
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,8 @@
#define PHP_USTRING_BACKEND_API_H

/* {{{ */
typedef void (*php_ustring_construct_f) (zval *that, const char *value, size_t len, const char *codepage, size_t clen TSRMLS_DC);
typedef size_t (*php_ustring_length_f) (zval *that TSRMLS_DC);
typedef void (*php_ustring_construct_f) (zval *that, const char *value, int32_t len, const char *codepage, int32_t clen TSRMLS_DC);
typedef int32_t (*php_ustring_length_f) (zval *that TSRMLS_DC);
typedef bool (*php_ustring_startsWith_f) (zval *that, zval *needle TSRMLS_DC);
typedef bool (*php_ustring_endsWith_f) (zval *that, zval *needle TSRMLS_DC);
typedef int32_t (*php_ustring_indexOf_f) (zval *that, zval *needle, int32_t offset TSRMLS_DC);
Expand Down
36 changes: 20 additions & 16 deletions backend/icu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ static inline php_ustring_t *php_ustring_copy_ex(php_ustring_t *target, php_ustr
return target;
}

static inline zval *php_ustring_zval_copy_ex(zval *target, php_ustring_t *source, int32_t offset, int32_t length)
#define php_ustring_zval_copy_ex(target, source, offset, length) \
_php_ustring_zval_copy_ex(target, source, offset, length TSRMLS_CC)

static inline zval *_php_ustring_zval_copy_ex(zval *target, php_ustring_t *source, int32_t offset, int32_t length TSRMLS_DC)
{
TSRMLS_FETCH();

Expand Down Expand Up @@ -223,23 +226,24 @@ static inline int _php_ustring_cast(zval *zread, zval *zwrite, int type TSRMLS_D
ustring = php_ustring_fetch(zread);

length = ustring->val->extract
(0, ustring->val->length(), NULL, length, ustring->codepage->val);
(0, ustring->val->length(), NULL, 0, ustring->codepage->val);

if (length) {
Z_STR_P(zwrite) = zend_string_alloc(length, 0);

ustring->val->extract(
0,
ustring->val->length(),
(char*) Z_STRVAL_P(zwrite),
(int32_t) Z_STRLEN_P(zwrite),
ustring->codepage->val);
zend_string *output = zend_string_alloc(length, 0);

ustring->val->extract(
0,
ustring->val->length(),
(char*)output->val,
length,
ustring->codepage->val);

output->val[length] = '\0';

ZVAL_NEW_STR(zwrite, output);
} else {
Z_STR_P(zwrite) = zend_string_alloc(0, 0);
ZVAL_EMPTY_STRING(zwrite);
}

Z_STRVAL_P(zwrite)[Z_STRLEN_P(zwrite)] = 0;
Z_TYPE_INFO_P(zwrite) = IS_STRING_EX;

return SUCCESS;
}
Expand Down Expand Up @@ -296,7 +300,7 @@ static inline int _php_ustring_operate(zend_uchar opcode, zval *result, zval *op
return FAILURE;
}

static inline void _php_ustring_construct(zval *that, const char *value, size_t vlen, const char *codepage, size_t clen TSRMLS_DC) {
static inline void _php_ustring_construct(zval *that, const char *value, int32_t vlen, const char *codepage, int32_t clen TSRMLS_DC) {
php_ustring_t* ustring;

if (Z_TYPE_P(that) != IS_OBJECT || !instanceof_function(Z_OBJCE_P(that), ce_UString TSRMLS_CC)) {
Expand All @@ -314,7 +318,7 @@ static inline void _php_ustring_construct(zval *that, const char *value, size_t
ustring->val = new UnicodeString(value, vlen, ustring->codepage->val);
}

static inline size_t _php_ustring_length(zval *that TSRMLS_DC) {
static inline int32_t _php_ustring_length(zval *that TSRMLS_DC) {
return (php_ustring_fetch(that))->val->length();
}

Expand Down
45 changes: 22 additions & 23 deletions ustring.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,11 @@ ZEND_DECLARE_MODULE_GLOBALS(ustring);

PHP_USTRING_API php_ustring_backend_t *php_ustring_backend = &php_ustring_defaults;

PHP_USTRING_API void php_ustring_construct(zval *that, const char *value, size_t vlen, const char *codepage, size_t clen TSRMLS_DC) {
PHP_USTRING_API void php_ustring_construct(zval *that, const char *value, int32_t vlen, const char *codepage, int32_t clen TSRMLS_DC) {
php_ustring_backend->construct(that, value, vlen, codepage, clen TSRMLS_CC);
}

PHP_USTRING_API size_t php_ustring_length(zval *that TSRMLS_DC) {
PHP_USTRING_API int32_t php_ustring_length(zval *that TSRMLS_DC) {
return php_ustring_backend->length(that TSRMLS_CC);
}

Expand Down Expand Up @@ -134,8 +134,7 @@ PHP_USTRING_API int php_ustring_compare(zval *op1, zval *op2 TSRMLS_DC) {
PHP_USTRING_API void php_ustring_setDefaultCodepage(const char *value, int32_t len TSRMLS_DC) {
zend_string_release(UG(codepage));

UG(codepage) =
zend_string_init(value, len, 0);
UG(codepage) = zend_string_init(value, len, 0);
}

PHP_USTRING_API zend_string* php_ustring_getDefaultCodepage(TSRMLS_D) {
Expand All @@ -147,8 +146,7 @@ PHP_METHOD(UString, __construct)
{
char *value = NULL,
*codepage = NULL;
int vlen = 0,
clen = 0;
int vlen = 0, clen = 0;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s|s", &value, &vlen, &codepage, &clen) != SUCCESS) {
return;
Expand Down Expand Up @@ -199,11 +197,12 @@ PHP_METHOD(UString, indexOf) {
return;
}

index = php_ustring_indexOf(getThis(), needle, offset TSRMLS_CC);
index = php_ustring_indexOf(getThis(), needle, (int32_t)offset TSRMLS_CC);

if (index < 0)
if (index < 0) {
RETURN_FALSE;

}

RETURN_LONG(index + offset);
} /* }}} */

Expand All @@ -217,11 +216,12 @@ PHP_METHOD(UString, lastIndexOf) {
return;
}

index = php_ustring_lastIndexOf(getThis(), needle, offset TSRMLS_CC);
index = php_ustring_lastIndexOf(getThis(), needle, (int32_t)offset TSRMLS_CC);

if (index < 0) {
RETURN_FALSE;
}

if (index < 0)
RETURN_FALSE;

RETURN_LONG(index + offset);
} /* }}} */

Expand Down Expand Up @@ -281,7 +281,7 @@ PHP_METHOD(UString, replaceSlice) {
return;
}

php_ustring_replaceSlice(getThis(), text, start, length, return_value TSRMLS_CC);
php_ustring_replaceSlice(getThis(), text, (int32_t)start, (int32_t)length, return_value TSRMLS_CC);
} /* }}} */

/* {{{ proto UString UString::charAt(int index) */
Expand All @@ -292,19 +292,18 @@ PHP_METHOD(UString, charAt) {
return;
}

php_ustring_charAt(getThis(), index, return_value TSRMLS_CC);
php_ustring_charAt(getThis(), (int32_t)index, return_value TSRMLS_CC);
} /* }}} */

/* {{{ proto UString UString::substring(int start [, int length]) */
PHP_METHOD(UString, substring) {
zend_long start = -1,
length = -1;
zend_long start = -1, length = -1;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "l|l", &start, &length) != SUCCESS) {
return;
}
php_ustring_substring(getThis(), start, length, return_value TSRMLS_CC);

php_ustring_substring(getThis(), (int32_t)start, (int32_t)length, return_value TSRMLS_CC);
} /* }}} */

/* {{{ proto bool UString::contains(UString text) */
Expand Down Expand Up @@ -337,7 +336,7 @@ PHP_METHOD(UString, repeat) {
return;
}

php_ustring_repeat(getThis(), count, return_value TSRMLS_CC);
php_ustring_repeat(getThis(), (int32_t)count, return_value TSRMLS_CC);
} /* }}} */

/* {{{ proto UString UString::pad(int length, UString pad = " ", int mode = STR_PAD_RIGHT) */
Expand All @@ -354,7 +353,7 @@ PHP_METHOD(UString, pad) {
pad = &UG(defaultpad);
}

php_ustring_pad(getThis(), length, pad, mode, return_value TSRMLS_CC);
php_ustring_pad(getThis(), (int32_t)length, pad, (int32_t)mode, return_value TSRMLS_CC);
}

/* {{{ proto array UString::split(UString delimiter, int limit = NULL) */
Expand All @@ -366,7 +365,7 @@ PHP_METHOD(UString, split) {
return;
}

php_ustring_split(getThis(), delimiter, limit, return_value TSRMLS_CC);
php_ustring_split(getThis(), delimiter, (int32_t)limit, return_value TSRMLS_CC);
}

/* {{{ proto string UString::getCodepage(void) */
Expand Down Expand Up @@ -550,7 +549,7 @@ PHP_MINFO_FUNCTION(ustring)
/* {{{ proto UString u(string value) */
PHP_FUNCTION(u) {
char *val;
size_t len;
int len;

if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &val, &len) != SUCCESS) {
return;
Expand Down

0 comments on commit c0b9155

Please sign in to comment.