Skip to content

Commit deabd5a

Browse files
kocsismatecmb69
andauthored
Declare ext/gmp constants in stubs (#8704)
Co-authored-by: Christoph M. Becker <[email protected]>
1 parent 7e6301c commit deabd5a

File tree

3 files changed

+90
-25
lines changed

3 files changed

+90
-25
lines changed

ext/gmp/gmp.c

Lines changed: 18 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,28 @@
2828
#include "zend_exceptions.h"
2929

3030
#include <gmp.h>
31-
#include "gmp_arginfo.h"
3231

3332
/* Needed for gmp_random() */
3433
#include "ext/standard/php_rand.h"
3534
#include "ext/standard/php_lcg.h"
3635

36+
#define GMP_ROUND_ZERO 0
37+
#define GMP_ROUND_PLUSINF 1
38+
#define GMP_ROUND_MINUSINF 2
39+
40+
#ifdef mpir_version
41+
#define GMP_MPIR_VERSION_STRING ((char *) mpir_version)
42+
#endif
43+
#define GMP_VERSION_STRING ((char *) gmp_version)
44+
45+
#define GMP_MSW_FIRST (1 << 0)
46+
#define GMP_LSW_FIRST (1 << 1)
47+
#define GMP_LITTLE_ENDIAN (1 << 2)
48+
#define GMP_BIG_ENDIAN (1 << 3)
49+
#define GMP_NATIVE_ENDIAN (1 << 4)
50+
51+
#include "gmp_arginfo.h"
52+
3753
ZEND_DECLARE_MODULE_GLOBALS(gmp)
3854
static ZEND_GINIT_FUNCTION(gmp);
3955

@@ -75,16 +91,6 @@ typedef struct _gmp_temp {
7591
bool is_used;
7692
} gmp_temp_t;
7793

78-
#define GMP_ROUND_ZERO 0
79-
#define GMP_ROUND_PLUSINF 1
80-
#define GMP_ROUND_MINUSINF 2
81-
82-
#define GMP_MSW_FIRST (1 << 0)
83-
#define GMP_LSW_FIRST (1 << 1)
84-
#define GMP_LITTLE_ENDIAN (1 << 2)
85-
#define GMP_BIG_ENDIAN (1 << 3)
86-
#define GMP_NATIVE_ENDIAN (1 << 4)
87-
8894
#define GMP_MAX_BASE 62
8995

9096
#define GMP_51_OR_NEWER \
@@ -540,19 +546,7 @@ ZEND_MINIT_FUNCTION(gmp)
540546
gmp_object_handlers.do_operation = gmp_do_operation;
541547
gmp_object_handlers.compare = gmp_compare;
542548

543-
REGISTER_LONG_CONSTANT("GMP_ROUND_ZERO", GMP_ROUND_ZERO, CONST_CS | CONST_PERSISTENT);
544-
REGISTER_LONG_CONSTANT("GMP_ROUND_PLUSINF", GMP_ROUND_PLUSINF, CONST_CS | CONST_PERSISTENT);
545-
REGISTER_LONG_CONSTANT("GMP_ROUND_MINUSINF", GMP_ROUND_MINUSINF, CONST_CS | CONST_PERSISTENT);
546-
#ifdef mpir_version
547-
REGISTER_STRING_CONSTANT("GMP_MPIR_VERSION", (char *)mpir_version, CONST_CS | CONST_PERSISTENT);
548-
#endif
549-
REGISTER_STRING_CONSTANT("GMP_VERSION", (char *)gmp_version, CONST_CS | CONST_PERSISTENT);
550-
551-
REGISTER_LONG_CONSTANT("GMP_MSW_FIRST", GMP_MSW_FIRST, CONST_CS | CONST_PERSISTENT);
552-
REGISTER_LONG_CONSTANT("GMP_LSW_FIRST", GMP_LSW_FIRST, CONST_CS | CONST_PERSISTENT);
553-
REGISTER_LONG_CONSTANT("GMP_LITTLE_ENDIAN", GMP_LITTLE_ENDIAN, CONST_CS | CONST_PERSISTENT);
554-
REGISTER_LONG_CONSTANT("GMP_BIG_ENDIAN", GMP_BIG_ENDIAN, CONST_CS | CONST_PERSISTENT);
555-
REGISTER_LONG_CONSTANT("GMP_NATIVE_ENDIAN", GMP_NATIVE_ENDIAN, CONST_CS | CONST_PERSISTENT);
549+
register_gmp_symbols(module_number);
556550

557551
return SUCCESS;
558552
}

ext/gmp/gmp.stub.php

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,61 @@
22

33
/** @generate-class-entries */
44

5+
/**
6+
* @var int
7+
* @cname GMP_ROUND_ZERO
8+
*/
9+
const GMP_ROUND_ZERO = UNKNOWN;
10+
/**
11+
* @var int
12+
* @cname GMP_ROUND_PLUSINF
13+
*/
14+
const GMP_ROUND_PLUSINF = UNKNOWN;
15+
/**
16+
* @var int
17+
* @cname GMP_ROUND_MINUSINF
18+
*/
19+
const GMP_ROUND_MINUSINF = UNKNOWN;
20+
21+
#ifdef mpir_version
22+
/**
23+
* @var string
24+
* @cname GMP_MPIR_VERSION_STRING
25+
*/
26+
const GMP_MPIR_VERSION = UNKNOWN;
27+
#endif
28+
/**
29+
* @var string
30+
* @cname GMP_VERSION_STRING
31+
*/
32+
const GMP_VERSION = UNKNOWN;
33+
34+
/**
35+
* @var int
36+
* @cname GMP_MSW_FIRST
37+
*/
38+
const GMP_MSW_FIRST = UNKNOWN;
39+
/**
40+
* @var int
41+
* @cname GMP_LSW_FIRST
42+
*/
43+
const GMP_LSW_FIRST = UNKNOWN;
44+
/**
45+
* @var int
46+
* @cname GMP_LITTLE_ENDIAN
47+
*/
48+
const GMP_LITTLE_ENDIAN = UNKNOWN;
49+
/**
50+
* @var int
51+
* @cname GMP_BIG_ENDIAN
52+
*/
53+
const GMP_BIG_ENDIAN = UNKNOWN;
54+
/**
55+
* @var int
56+
* @cname GMP_NATIVE_ENDIAN
57+
*/
58+
const GMP_NATIVE_ENDIAN = UNKNOWN;
59+
560
class GMP
661
{
762
public function __serialize(): array {}

ext/gmp/gmp_arginfo.h

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: be077a57bc9ddbb9100fadfb212857c0b8f21ebf */
2+
* Stub hash: da609931609768d5e874f460cf0b162d813066f0 */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_INFO_EX(arginfo_gmp_init, 0, 1, GMP, 0)
55
ZEND_ARG_TYPE_MASK(0, num, MAY_BE_LONG|MAY_BE_STRING, NULL)
@@ -308,6 +308,22 @@ static const zend_function_entry class_GMP_methods[] = {
308308
ZEND_FE_END
309309
};
310310

311+
static void register_gmp_symbols(int module_number)
312+
{
313+
REGISTER_LONG_CONSTANT("GMP_ROUND_ZERO", GMP_ROUND_ZERO, CONST_CS | CONST_PERSISTENT);
314+
REGISTER_LONG_CONSTANT("GMP_ROUND_PLUSINF", GMP_ROUND_PLUSINF, CONST_CS | CONST_PERSISTENT);
315+
REGISTER_LONG_CONSTANT("GMP_ROUND_MINUSINF", GMP_ROUND_MINUSINF, CONST_CS | CONST_PERSISTENT);
316+
#if defined(mpir_version)
317+
REGISTER_STRING_CONSTANT("GMP_MPIR_VERSION", GMP_MPIR_VERSION_STRING, CONST_CS | CONST_PERSISTENT);
318+
#endif
319+
REGISTER_STRING_CONSTANT("GMP_VERSION", GMP_VERSION_STRING, CONST_CS | CONST_PERSISTENT);
320+
REGISTER_LONG_CONSTANT("GMP_MSW_FIRST", GMP_MSW_FIRST, CONST_CS | CONST_PERSISTENT);
321+
REGISTER_LONG_CONSTANT("GMP_LSW_FIRST", GMP_LSW_FIRST, CONST_CS | CONST_PERSISTENT);
322+
REGISTER_LONG_CONSTANT("GMP_LITTLE_ENDIAN", GMP_LITTLE_ENDIAN, CONST_CS | CONST_PERSISTENT);
323+
REGISTER_LONG_CONSTANT("GMP_BIG_ENDIAN", GMP_BIG_ENDIAN, CONST_CS | CONST_PERSISTENT);
324+
REGISTER_LONG_CONSTANT("GMP_NATIVE_ENDIAN", GMP_NATIVE_ENDIAN, CONST_CS | CONST_PERSISTENT);
325+
}
326+
311327
static zend_class_entry *register_class_GMP(void)
312328
{
313329
zend_class_entry ce, *class_entry;

0 commit comments

Comments
 (0)