diff options
author | Stanislav Malyshev <stas@php.net> | 2007-11-01 17:51:34 +0000 |
---|---|---|
committer | Stanislav Malyshev <stas@php.net> | 2007-11-01 17:51:34 +0000 |
commit | f6a01c836233ab83a5a2d12c0d423f701deb200d (patch) | |
tree | 5ca17a4ae5b3ef20df6a1421aa3f8fee8ac386d1 /ext/gmp | |
parent | 34b45a30e5bd96c7bbdcc5360911f50ce3b34cdb (diff) | |
download | php-git-f6a01c836233ab83a5a2d12c0d423f701deb200d.tar.gz |
merge gmp_testbit()
Diffstat (limited to 'ext/gmp')
-rw-r--r-- | ext/gmp/gmp.c | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/ext/gmp/gmp.c b/ext/gmp/gmp.c index 44995e5e5a..222bf0fdd3 100644 --- a/ext/gmp/gmp.c +++ b/ext/gmp/gmp.c @@ -238,6 +238,12 @@ ZEND_BEGIN_ARG_INFO(arginfo_gmp_clrbit, 0) ZEND_END_ARG_INFO() static +ZEND_BEGIN_ARG_INFO(arginfo_gmp_testbit, 0) + ZEND_ARG_INFO(0, a) + ZEND_ARG_INFO(0, index) +ZEND_END_ARG_INFO() + +static ZEND_BEGIN_ARG_INFO(arginfo_gmp_popcount, 0) ZEND_ARG_INFO(0, a) ZEND_END_ARG_INFO() @@ -308,8 +314,9 @@ const zend_function_entry gmp_functions[] = { ZEND_FE(gmp_xor, arginfo_gmp_xor) ZEND_FE(gmp_setbit, arginfo_gmp_setbit) ZEND_FE(gmp_clrbit, arginfo_gmp_clrbit) - ZEND_FE(gmp_scan0, arginfo_gmp_scan0) - ZEND_FE(gmp_scan1, arginfo_gmp_scan1) + ZEND_FE(gmp_scan0, arginfo_gmp_scan0) + ZEND_FE(gmp_scan1, arginfo_gmp_scan1) + ZEND_FE(gmp_testbit,arginfo_gmp_testbit) ZEND_FE(gmp_popcount, arginfo_gmp_popcount) ZEND_FE(gmp_hamdist, arginfo_gmp_hamdist) ZEND_FE(gmp_nextprime, arginfo_gmp_nextprime) @@ -1511,6 +1518,32 @@ ZEND_FUNCTION(gmp_clrbit) } /* }}} */ +/* {{{ proto bool gmp_testbit(resource a, int index) + Tests if bit is set in a */ +ZEND_FUNCTION(gmp_testbit) +{ + zval **a_arg; + int index; + mpz_t *gmpnum_a; + + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Zl", &a_arg, &index) == FAILURE){ + return; + } + + ZEND_FETCH_RESOURCE(gmpnum_a, mpz_t *, a_arg, -1, GMP_RESOURCE_NAME, le_gmp); + + if (index < 0) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Index must be greater than or equal to zero"); + RETURN_FALSE; + } + + if (mpz_tstbit(*gmpnum_a, index)) { + RETURN_TRUE; + } + RETURN_FALSE; +} +/* }}} */ + /* {{{ proto int gmp_popcount(resource a) Calculates the population count of a */ ZEND_FUNCTION(gmp_popcount) |