Skip to content

Commit 64d0416

Browse files
committed
Add ext/gmp stubs
1 parent 6e31350 commit 64d0416

File tree

3 files changed

+511
-131
lines changed

3 files changed

+511
-131
lines changed

ext/gmp/gmp.c

Lines changed: 38 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -30,106 +30,13 @@
3030
#include "zend_exceptions.h"
3131

3232
#include <gmp.h>
33+
#include "gmp_arginfo.h"
3334

3435
/* Needed for gmp_random() */
3536
#include "ext/standard/php_rand.h"
3637
#include "ext/standard/php_lcg.h"
3738
#define GMP_ABS(x) ((x) >= 0 ? (x) : -(x))
3839

39-
/* {{{ arginfo */
40-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_init, 0, 0, 1)
41-
ZEND_ARG_INFO(0, number)
42-
ZEND_ARG_INFO(0, base)
43-
ZEND_END_ARG_INFO()
44-
45-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_import, 0, 0, 1)
46-
ZEND_ARG_INFO(0, data)
47-
ZEND_ARG_INFO(0, word_size)
48-
ZEND_ARG_INFO(0, options)
49-
ZEND_END_ARG_INFO()
50-
51-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_export, 0, 0, 1)
52-
ZEND_ARG_INFO(0, gmpnumber)
53-
ZEND_ARG_INFO(0, word_size)
54-
ZEND_ARG_INFO(0, options)
55-
ZEND_END_ARG_INFO()
56-
57-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_intval, 0, 0, 1)
58-
ZEND_ARG_INFO(0, gmpnumber)
59-
ZEND_END_ARG_INFO()
60-
61-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_strval, 0, 0, 1)
62-
ZEND_ARG_INFO(0, gmpnumber)
63-
ZEND_ARG_INFO(0, base)
64-
ZEND_END_ARG_INFO()
65-
66-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_unary, 0, 0, 1)
67-
ZEND_ARG_INFO(0, a)
68-
ZEND_END_ARG_INFO()
69-
70-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_binary, 0, 0, 2)
71-
ZEND_ARG_INFO(0, a)
72-
ZEND_ARG_INFO(0, b)
73-
ZEND_END_ARG_INFO()
74-
75-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_div, 0, 0, 2)
76-
ZEND_ARG_INFO(0, a)
77-
ZEND_ARG_INFO(0, b)
78-
ZEND_ARG_INFO(0, round)
79-
ZEND_END_ARG_INFO()
80-
81-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_pow, 0, 0, 2)
82-
ZEND_ARG_INFO(0, base)
83-
ZEND_ARG_INFO(0, exp)
84-
ZEND_END_ARG_INFO()
85-
86-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_powm, 0, 0, 3)
87-
ZEND_ARG_INFO(0, base)
88-
ZEND_ARG_INFO(0, exp)
89-
ZEND_ARG_INFO(0, mod)
90-
ZEND_END_ARG_INFO()
91-
92-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_root, 0, 0, 2)
93-
ZEND_ARG_INFO(0, a)
94-
ZEND_ARG_INFO(0, nth)
95-
ZEND_END_ARG_INFO()
96-
97-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_prob_prime, 0, 0, 1)
98-
ZEND_ARG_INFO(0, a)
99-
ZEND_ARG_INFO(0, reps)
100-
ZEND_END_ARG_INFO()
101-
102-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_random_seed, 0, 0, 1)
103-
ZEND_ARG_INFO(0, seed)
104-
ZEND_END_ARG_INFO()
105-
106-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_random_bits, 0, 0, 1)
107-
ZEND_ARG_INFO(0, bits)
108-
ZEND_END_ARG_INFO()
109-
110-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_random_range, 0, 0, 2)
111-
ZEND_ARG_INFO(0, min)
112-
ZEND_ARG_INFO(0, max)
113-
ZEND_END_ARG_INFO()
114-
115-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_setbit, 0, 0, 2)
116-
ZEND_ARG_INFO(0, a)
117-
ZEND_ARG_INFO(0, index)
118-
ZEND_ARG_INFO(0, set_clear)
119-
ZEND_END_ARG_INFO()
120-
121-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_bit, 0, 0, 2)
122-
ZEND_ARG_INFO(0, a)
123-
ZEND_ARG_INFO(0, index)
124-
ZEND_END_ARG_INFO()
125-
126-
ZEND_BEGIN_ARG_INFO_EX(arginfo_gmp_scan, 0, 0, 2)
127-
ZEND_ARG_INFO(0, a)
128-
ZEND_ARG_INFO(0, start)
129-
ZEND_END_ARG_INFO()
130-
131-
/* }}} */
132-
13340
ZEND_DECLARE_MODULE_GLOBALS(gmp)
13441
static ZEND_GINIT_FUNCTION(gmp);
13542

@@ -141,52 +48,52 @@ static const zend_function_entry gmp_functions[] = {
14148
ZEND_FE(gmp_export, arginfo_gmp_export)
14249
ZEND_FE(gmp_intval, arginfo_gmp_intval)
14350
ZEND_FE(gmp_strval, arginfo_gmp_strval)
144-
ZEND_FE(gmp_add, arginfo_gmp_binary)
145-
ZEND_FE(gmp_sub, arginfo_gmp_binary)
146-
ZEND_FE(gmp_mul, arginfo_gmp_binary)
147-
ZEND_FE(gmp_div_qr, arginfo_gmp_div)
148-
ZEND_FE(gmp_div_q, arginfo_gmp_div)
149-
ZEND_FE(gmp_div_r, arginfo_gmp_div)
51+
ZEND_FE(gmp_add, arginfo_gmp_add)
52+
ZEND_FE(gmp_sub, arginfo_gmp_sub)
53+
ZEND_FE(gmp_mul, arginfo_gmp_mul)
54+
ZEND_FE(gmp_div_qr, arginfo_gmp_div_qr)
55+
ZEND_FE(gmp_div_q, arginfo_gmp_div_q)
56+
ZEND_FE(gmp_div_r, arginfo_gmp_div_r)
15057
ZEND_FALIAS(gmp_div, gmp_div_q, arginfo_gmp_div)
151-
ZEND_FE(gmp_mod, arginfo_gmp_binary)
152-
ZEND_FE(gmp_divexact, arginfo_gmp_binary)
153-
ZEND_FE(gmp_neg, arginfo_gmp_unary)
154-
ZEND_FE(gmp_abs, arginfo_gmp_unary)
155-
ZEND_FE(gmp_fact, arginfo_gmp_unary)
156-
ZEND_FE(gmp_sqrt, arginfo_gmp_unary)
157-
ZEND_FE(gmp_sqrtrem, arginfo_gmp_unary)
58+
ZEND_FE(gmp_mod, arginfo_gmp_mod)
59+
ZEND_FE(gmp_divexact, arginfo_gmp_divexact)
60+
ZEND_FE(gmp_neg, arginfo_gmp_neg)
61+
ZEND_FE(gmp_abs, arginfo_gmp_abs)
62+
ZEND_FE(gmp_fact, arginfo_gmp_fact)
63+
ZEND_FE(gmp_sqrt, arginfo_gmp_sqrt)
64+
ZEND_FE(gmp_sqrtrem, arginfo_gmp_sqrtrem)
15865
ZEND_FE(gmp_root, arginfo_gmp_root)
159-
ZEND_FE(gmp_rootrem, arginfo_gmp_root)
66+
ZEND_FE(gmp_rootrem, arginfo_gmp_rootrem)
16067
ZEND_FE(gmp_pow, arginfo_gmp_pow)
16168
ZEND_FE(gmp_powm, arginfo_gmp_powm)
162-
ZEND_FE(gmp_perfect_square, arginfo_gmp_unary)
163-
ZEND_FE(gmp_perfect_power, arginfo_gmp_unary)
69+
ZEND_FE(gmp_perfect_square, arginfo_gmp_perfect_square)
70+
ZEND_FE(gmp_perfect_power, arginfo_gmp_perfect_power)
16471
ZEND_FE(gmp_prob_prime, arginfo_gmp_prob_prime)
165-
ZEND_FE(gmp_gcd, arginfo_gmp_binary)
166-
ZEND_FE(gmp_gcdext, arginfo_gmp_binary)
167-
ZEND_FE(gmp_lcm, arginfo_gmp_binary)
168-
ZEND_FE(gmp_invert, arginfo_gmp_binary)
169-
ZEND_FE(gmp_jacobi, arginfo_gmp_binary)
170-
ZEND_FE(gmp_legendre, arginfo_gmp_binary)
171-
ZEND_FE(gmp_kronecker, arginfo_gmp_binary)
172-
ZEND_FE(gmp_cmp, arginfo_gmp_binary)
173-
ZEND_FE(gmp_sign, arginfo_gmp_unary)
72+
ZEND_FE(gmp_gcd, arginfo_gmp_gcd)
73+
ZEND_FE(gmp_gcdext, arginfo_gmp_gcdext)
74+
ZEND_FE(gmp_lcm, arginfo_gmp_lcm)
75+
ZEND_FE(gmp_invert, arginfo_gmp_invert)
76+
ZEND_FE(gmp_jacobi, arginfo_gmp_jacobi)
77+
ZEND_FE(gmp_legendre, arginfo_gmp_legendre)
78+
ZEND_FE(gmp_kronecker, arginfo_gmp_kronecker)
79+
ZEND_FE(gmp_cmp, arginfo_gmp_cmp)
80+
ZEND_FE(gmp_sign, arginfo_gmp_sign)
17481
ZEND_FE(gmp_random_seed, arginfo_gmp_random_seed)
17582
ZEND_FE(gmp_random_bits, arginfo_gmp_random_bits)
17683
ZEND_FE(gmp_random_range, arginfo_gmp_random_range)
177-
ZEND_FE(gmp_and, arginfo_gmp_binary)
178-
ZEND_FE(gmp_or, arginfo_gmp_binary)
179-
ZEND_FE(gmp_com, arginfo_gmp_unary)
180-
ZEND_FE(gmp_xor, arginfo_gmp_binary)
84+
ZEND_FE(gmp_and, arginfo_gmp_and)
85+
ZEND_FE(gmp_or, arginfo_gmp_or)
86+
ZEND_FE(gmp_com, arginfo_gmp_com)
87+
ZEND_FE(gmp_xor, arginfo_gmp_xor)
18188
ZEND_FE(gmp_setbit, arginfo_gmp_setbit)
182-
ZEND_FE(gmp_clrbit, arginfo_gmp_bit)
183-
ZEND_FE(gmp_testbit, arginfo_gmp_bit)
184-
ZEND_FE(gmp_scan0, arginfo_gmp_scan)
185-
ZEND_FE(gmp_scan1, arginfo_gmp_scan)
186-
ZEND_FE(gmp_popcount, arginfo_gmp_unary)
187-
ZEND_FE(gmp_hamdist, arginfo_gmp_binary)
188-
ZEND_FE(gmp_nextprime, arginfo_gmp_unary)
189-
ZEND_FE(gmp_binomial, arginfo_gmp_binary)
89+
ZEND_FE(gmp_clrbit, arginfo_gmp_clrbit)
90+
ZEND_FE(gmp_testbit, arginfo_gmp_testbit)
91+
ZEND_FE(gmp_scan0, arginfo_gmp_scan0)
92+
ZEND_FE(gmp_scan1, arginfo_gmp_scan1)
93+
ZEND_FE(gmp_popcount, arginfo_gmp_popcount)
94+
ZEND_FE(gmp_hamdist, arginfo_gmp_hamdist)
95+
ZEND_FE(gmp_nextprime, arginfo_gmp_nextprime)
96+
ZEND_FE(gmp_binomial, arginfo_gmp_binomial)
19097
PHP_FE_END
19198
};
19299
/* }}} */

0 commit comments

Comments
 (0)