mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Declare ext/pgsql constants in stubs (#9092)
This commit is contained in:
parent
1362fefc85
commit
eae893bd3e
3 changed files with 512 additions and 112 deletions
|
@ -39,7 +39,6 @@
|
|||
#include "php_pgsql.h"
|
||||
#include "php_globals.h"
|
||||
#include "zend_exceptions.h"
|
||||
#include "pgsql_arginfo.h"
|
||||
|
||||
#ifdef HAVE_PGSQL
|
||||
|
||||
|
@ -61,6 +60,10 @@
|
|||
#define PGSQL_MAX_LENGTH_OF_LONG 30
|
||||
#define PGSQL_MAX_LENGTH_OF_DOUBLE 60
|
||||
|
||||
char pgsql_libpq_version[16];
|
||||
|
||||
#include "pgsql_arginfo.h"
|
||||
|
||||
#if ZEND_LONG_MAX < UINT_MAX
|
||||
#define PGSQL_RETURN_OID(oid) do { \
|
||||
if (oid > ZEND_LONG_MAX) { \
|
||||
|
@ -431,8 +434,6 @@ static void php_libpq_version(char *buf, size_t len)
|
|||
|
||||
PHP_MINIT_FUNCTION(pgsql)
|
||||
{
|
||||
char buf[16];
|
||||
|
||||
REGISTER_INI_ENTRIES();
|
||||
|
||||
le_plink = zend_register_list_destructors_ex(NULL, _close_pgsql_plink, "pgsql link persistent", module_number);
|
||||
|
@ -468,108 +469,10 @@ PHP_MINIT_FUNCTION(pgsql)
|
|||
pgsql_lob_object_handlers.compare = zend_objects_not_comparable;
|
||||
|
||||
/* libpq version */
|
||||
php_libpq_version(buf, sizeof(buf));
|
||||
REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION", buf, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION_STR", buf, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED);
|
||||
/* For connection option */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECT_FORCE_NEW", PGSQL_CONNECT_FORCE_NEW, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECT_ASYNC", PGSQL_CONNECT_ASYNC, CONST_CS | CONST_PERSISTENT);
|
||||
/* For pg_fetch_array() */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_ASSOC", PGSQL_ASSOC, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NUM", PGSQL_NUM, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_BOTH", PGSQL_BOTH, CONST_CS | CONST_PERSISTENT);
|
||||
/* For pg_last_notice() */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NOTICE_LAST", PGSQL_NOTICE_LAST, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NOTICE_ALL", PGSQL_NOTICE_ALL, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NOTICE_CLEAR", PGSQL_NOTICE_CLEAR, CONST_CS | CONST_PERSISTENT);
|
||||
/* For pg_connection_status() */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_BAD", CONNECTION_BAD, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_OK", CONNECTION_OK, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_STARTED", CONNECTION_STARTED, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_MADE", CONNECTION_MADE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AWAITING_RESPONSE", CONNECTION_AWAITING_RESPONSE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AUTH_OK", CONNECTION_AUTH_OK, CONST_CS | CONST_PERSISTENT);
|
||||
#ifdef CONNECTION_SSL_STARTUP
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SSL_STARTUP", CONNECTION_SSL_STARTUP, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SETENV", CONNECTION_SETENV, CONST_CS | CONST_PERSISTENT);
|
||||
/* For pg_connect_poll() */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_FAILED", PGRES_POLLING_FAILED, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_READING", PGRES_POLLING_READING, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_WRITING", PGRES_POLLING_WRITING, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_OK", PGRES_POLLING_OK, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_ACTIVE", PGRES_POLLING_ACTIVE, CONST_CS | CONST_PERSISTENT);
|
||||
/* For pg_transaction_status() */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_IDLE", PQTRANS_IDLE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_ACTIVE", PQTRANS_ACTIVE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INTRANS", PQTRANS_INTRANS, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INERROR", PQTRANS_INERROR, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_UNKNOWN", PQTRANS_UNKNOWN, CONST_CS | CONST_PERSISTENT);
|
||||
/* For pg_set_error_verbosity() */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_ERRORS_TERSE", PQERRORS_TERSE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_ERRORS_DEFAULT", PQERRORS_DEFAULT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_ERRORS_VERBOSE", PQERRORS_VERBOSE, CONST_CS | CONST_PERSISTENT);
|
||||
/* For lo_seek() */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_SEEK_SET", SEEK_SET, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_SEEK_CUR", SEEK_CUR, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_SEEK_END", SEEK_END, CONST_CS | CONST_PERSISTENT);
|
||||
/* For pg_result_status() return value type */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_STATUS_LONG", PGSQL_STATUS_LONG, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_STATUS_STRING", PGSQL_STATUS_STRING, CONST_CS | CONST_PERSISTENT);
|
||||
/* For pg_result_status() return value */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_EMPTY_QUERY", PGRES_EMPTY_QUERY, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_COMMAND_OK", PGRES_COMMAND_OK, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TUPLES_OK", PGRES_TUPLES_OK, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_COPY_OUT", PGRES_COPY_OUT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_COPY_IN", PGRES_COPY_IN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_BAD_RESPONSE", PGRES_BAD_RESPONSE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NONFATAL_ERROR", PGRES_NONFATAL_ERROR, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_FATAL_ERROR", PGRES_FATAL_ERROR, CONST_CS | CONST_PERSISTENT);
|
||||
/* For pg_result_error_field() field codes */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY", PG_DIAG_SEVERITY, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SQLSTATE", PG_DIAG_SQLSTATE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_PRIMARY", PG_DIAG_MESSAGE_PRIMARY, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_DETAIL", PG_DIAG_MESSAGE_DETAIL, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_HINT", PG_DIAG_MESSAGE_HINT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_STATEMENT_POSITION", PG_DIAG_STATEMENT_POSITION, CONST_CS | CONST_PERSISTENT);
|
||||
#ifdef PG_DIAG_INTERNAL_POSITION
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_POSITION", PG_DIAG_INTERNAL_POSITION, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef PG_DIAG_INTERNAL_QUERY
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_QUERY", PG_DIAG_INTERNAL_QUERY, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONTEXT", PG_DIAG_CONTEXT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FILE", PG_DIAG_SOURCE_FILE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_LINE", PG_DIAG_SOURCE_LINE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FUNCTION", PG_DIAG_SOURCE_FUNCTION, CONST_CS | CONST_PERSISTENT);
|
||||
#ifdef PG_DIAG_SCHEMA_NAME
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SCHEMA_NAME", PG_DIAG_SCHEMA_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef PG_DIAG_TABLE_NAME
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_TABLE_NAME", PG_DIAG_TABLE_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef PG_DIAG_COLUMN_NAME
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_COLUMN_NAME", PG_DIAG_COLUMN_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef PG_DIAG_DATATYPE_NAME
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_DATATYPE_NAME", PG_DIAG_DATATYPE_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef PG_DIAG_CONSTRAINT_NAME
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONSTRAINT_NAME", PG_DIAG_CONSTRAINT_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#ifdef PG_DIAG_SEVERITY_NONLOCALIZED
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY_NONLOCALIZED", PG_DIAG_SEVERITY_NONLOCALIZED, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
/* pg_convert options */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_DEFAULT", PGSQL_CONV_IGNORE_DEFAULT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONV_FORCE_NULL", PGSQL_CONV_FORCE_NULL, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_NOT_NULL", PGSQL_CONV_IGNORE_NOT_NULL, CONST_CS | CONST_PERSISTENT);
|
||||
/* pg_insert/update/delete/select options */
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_ESCAPE", PGSQL_DML_ESCAPE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_NO_CONV", PGSQL_DML_NO_CONV, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_EXEC", PGSQL_DML_EXEC, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_ASYNC", PGSQL_DML_ASYNC, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_STRING", PGSQL_DML_STRING, CONST_CS | CONST_PERSISTENT);
|
||||
php_libpq_version(pgsql_libpq_version, sizeof(pgsql_libpq_version));
|
||||
|
||||
register_pgsql_symbols(module_number);
|
||||
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -610,8 +513,7 @@ PHP_MINFO_FUNCTION(pgsql)
|
|||
|
||||
php_info_print_table_start();
|
||||
php_info_print_table_header(2, "PostgreSQL Support", "enabled");
|
||||
php_libpq_version(buf, sizeof(buf));
|
||||
php_info_print_table_row(2, "PostgreSQL (libpq) Version", buf);
|
||||
php_info_print_table_row(2, "PostgreSQL (libpq) Version", pgsql_libpq_version);
|
||||
#ifdef HAVE_PGSQL_WITH_MULTIBYTE_SUPPORT
|
||||
php_info_print_table_row(2, "Multibyte character support", "enabled");
|
||||
#else
|
||||
|
@ -910,9 +812,7 @@ static void php_pgsql_get_link_info(INTERNAL_FUNCTION_PARAMETERS, int entry_type
|
|||
break;
|
||||
case PHP_PG_VERSION:
|
||||
array_init(return_value);
|
||||
char buf[16];
|
||||
php_libpq_version(buf, sizeof(buf));
|
||||
add_assoc_string(return_value, "client", buf);
|
||||
add_assoc_string(return_value, "client", pgsql_libpq_version);
|
||||
add_assoc_long(return_value, "protocol", PQprotocolVersion(pgsql));
|
||||
if (PQprotocolVersion(pgsql) >= 3) {
|
||||
/* 8.0 or grater supports protorol version 3 */
|
||||
|
|
|
@ -3,6 +3,415 @@
|
|||
/** @generate-class-entries */
|
||||
|
||||
namespace PgSql {
|
||||
/* libpq version */
|
||||
|
||||
/**
|
||||
* @var string
|
||||
* @cvalue pgsql_libpq_version
|
||||
*/
|
||||
const PGSQL_LIBPQ_VERSION = UNKNOWN;
|
||||
/**
|
||||
* @var string
|
||||
* @cvalue pgsql_libpq_version
|
||||
* @deprecated
|
||||
*/
|
||||
const PGSQL_LIBPQ_VERSION_STR = UNKNOWN;
|
||||
|
||||
/* For connection option */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_CONNECT_FORCE_NEW
|
||||
*/
|
||||
const PGSQL_CONNECT_FORCE_NEW = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_CONNECT_ASYNC
|
||||
*/
|
||||
const PGSQL_CONNECT_ASYNC = UNKNOWN;
|
||||
|
||||
/* For pg_fetch_array() */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_ASSOC
|
||||
*/
|
||||
const PGSQL_ASSOC = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_NUM
|
||||
*/
|
||||
const PGSQL_NUM = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_BOTH
|
||||
*/
|
||||
const PGSQL_BOTH = UNKNOWN;
|
||||
|
||||
/* For pg_last_notice() */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_NOTICE_LAST
|
||||
*/
|
||||
const PGSQL_NOTICE_LAST = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_NOTICE_ALL
|
||||
*/
|
||||
const PGSQL_NOTICE_ALL = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_NOTICE_CLEAR
|
||||
*/
|
||||
const PGSQL_NOTICE_CLEAR = UNKNOWN;
|
||||
|
||||
/* For pg_connection_status() */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue CONNECTION_BAD
|
||||
*/
|
||||
const PGSQL_CONNECTION_BAD = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue CONNECTION_OK
|
||||
*/
|
||||
const PGSQL_CONNECTION_OK = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue CONNECTION_STARTED
|
||||
*/
|
||||
const PGSQL_CONNECTION_STARTED = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue CONNECTION_MADE
|
||||
*/
|
||||
const PGSQL_CONNECTION_MADE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue CONNECTION_AWAITING_RESPONSE
|
||||
*/
|
||||
const PGSQL_CONNECTION_AWAITING_RESPONSE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue CONNECTION_AUTH_OK
|
||||
*/
|
||||
const PGSQL_CONNECTION_AUTH_OK = UNKNOWN;
|
||||
#ifdef CONNECTION_SSL_STARTUP
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue CONNECTION_SSL_STARTUP
|
||||
*/
|
||||
const PGSQL_CONNECTION_SSL_STARTUP = UNKNOWN;
|
||||
#endif
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue CONNECTION_SETENV
|
||||
*/
|
||||
const PGSQL_CONNECTION_SETENV = UNKNOWN;
|
||||
|
||||
/* For pg_connect_poll() */
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_POLLING_FAILED
|
||||
*/
|
||||
const PGSQL_POLLING_FAILED = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_POLLING_READING
|
||||
*/
|
||||
const PGSQL_POLLING_READING = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_POLLING_WRITING
|
||||
*/
|
||||
const PGSQL_POLLING_WRITING = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_POLLING_OK
|
||||
*/
|
||||
const PGSQL_POLLING_OK = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_POLLING_ACTIVE
|
||||
*/
|
||||
const PGSQL_POLLING_ACTIVE = UNKNOWN;
|
||||
|
||||
/* For pg_transaction_status() */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PQTRANS_IDLE
|
||||
*/
|
||||
const PGSQL_TRANSACTION_IDLE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PQTRANS_ACTIVE
|
||||
*/
|
||||
const PGSQL_TRANSACTION_ACTIVE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PQTRANS_INTRANS
|
||||
*/
|
||||
const PGSQL_TRANSACTION_INTRANS = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PQTRANS_INERROR
|
||||
*/
|
||||
const PGSQL_TRANSACTION_INERROR = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PQTRANS_UNKNOWN
|
||||
*/
|
||||
const PGSQL_TRANSACTION_UNKNOWN = UNKNOWN;
|
||||
|
||||
/* For pg_set_error_verbosity() */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PQERRORS_TERSE
|
||||
*/
|
||||
const PGSQL_ERRORS_TERSE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PQERRORS_DEFAULT
|
||||
*/
|
||||
const PGSQL_ERRORS_DEFAULT = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PQERRORS_VERBOSE
|
||||
*/
|
||||
const PGSQL_ERRORS_VERBOSE = UNKNOWN;
|
||||
|
||||
/* For lo_seek() */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue SEEK_SET
|
||||
*/
|
||||
const PGSQL_SEEK_SET = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue SEEK_CUR
|
||||
*/
|
||||
const PGSQL_SEEK_CUR = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue SEEK_END
|
||||
*/
|
||||
const PGSQL_SEEK_END = UNKNOWN;
|
||||
|
||||
/* For pg_result_status() return value type */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_STATUS_LONG
|
||||
*/
|
||||
const PGSQL_STATUS_LONG = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_STATUS_STRING
|
||||
*/
|
||||
const PGSQL_STATUS_STRING = UNKNOWN;
|
||||
|
||||
/* For pg_result_status() return value */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_EMPTY_QUERY
|
||||
*/
|
||||
const PGSQL_EMPTY_QUERY = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_COMMAND_OK
|
||||
*/
|
||||
const PGSQL_COMMAND_OK = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_TUPLES_OK
|
||||
*/
|
||||
const PGSQL_TUPLES_OK = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_COPY_OUT
|
||||
*/
|
||||
const PGSQL_COPY_OUT = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_COPY_IN
|
||||
*/
|
||||
const PGSQL_COPY_IN = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_BAD_RESPONSE
|
||||
*/
|
||||
const PGSQL_BAD_RESPONSE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_NONFATAL_ERROR
|
||||
*/
|
||||
const PGSQL_NONFATAL_ERROR = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGRES_FATAL_ERROR
|
||||
*/
|
||||
const PGSQL_FATAL_ERROR = UNKNOWN;
|
||||
|
||||
/* For pg_result_error_field() field codes */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_SEVERITY
|
||||
*/
|
||||
const PGSQL_DIAG_SEVERITY = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_SQLSTATE
|
||||
*/
|
||||
const PGSQL_DIAG_SQLSTATE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_MESSAGE_PRIMARY
|
||||
*/
|
||||
const PGSQL_DIAG_MESSAGE_PRIMARY = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_MESSAGE_DETAIL
|
||||
*/
|
||||
const PGSQL_DIAG_MESSAGE_DETAIL = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_MESSAGE_HINT
|
||||
*/
|
||||
const PGSQL_DIAG_MESSAGE_HINT = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_STATEMENT_POSITION
|
||||
*/
|
||||
const PGSQL_DIAG_STATEMENT_POSITION = UNKNOWN;
|
||||
#ifdef PG_DIAG_INTERNAL_POSITION
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_INTERNAL_POSITION
|
||||
*/
|
||||
const PGSQL_DIAG_INTERNAL_POSITION = UNKNOWN;
|
||||
#endif
|
||||
#ifdef PG_DIAG_INTERNAL_QUERY
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_INTERNAL_QUERY
|
||||
*/
|
||||
const PGSQL_DIAG_INTERNAL_QUERY = UNKNOWN;
|
||||
#endif
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_CONTEXT
|
||||
*/
|
||||
const PGSQL_DIAG_CONTEXT = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_SOURCE_FILE
|
||||
*/
|
||||
const PGSQL_DIAG_SOURCE_FILE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_SOURCE_LINE
|
||||
*/
|
||||
const PGSQL_DIAG_SOURCE_LINE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_SOURCE_FUNCTION
|
||||
*/
|
||||
const PGSQL_DIAG_SOURCE_FUNCTION = UNKNOWN;
|
||||
#ifdef PG_DIAG_SCHEMA_NAME
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_SCHEMA_NAME
|
||||
*/
|
||||
const PGSQL_DIAG_SCHEMA_NAME = UNKNOWN;
|
||||
#endif
|
||||
#ifdef PG_DIAG_TABLE_NAME
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_TABLE_NAME
|
||||
*/
|
||||
const PGSQL_DIAG_TABLE_NAME = UNKNOWN;
|
||||
#endif
|
||||
#ifdef PG_DIAG_COLUMN_NAME
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_COLUMN_NAME
|
||||
*/
|
||||
const PGSQL_DIAG_COLUMN_NAME = UNKNOWN;
|
||||
#endif
|
||||
#ifdef PG_DIAG_DATATYPE_NAME
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_DATATYPE_NAME
|
||||
*/
|
||||
const PGSQL_DIAG_DATATYPE_NAME = UNKNOWN;
|
||||
#endif
|
||||
#ifdef PG_DIAG_CONSTRAINT_NAME
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_CONSTRAINT_NAME
|
||||
*/
|
||||
const PGSQL_DIAG_CONSTRAINT_NAME = UNKNOWN;
|
||||
#endif
|
||||
#ifdef PG_DIAG_SEVERITY_NONLOCALIZED
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PG_DIAG_SEVERITY_NONLOCALIZED
|
||||
*/
|
||||
const PGSQL_DIAG_SEVERITY_NONLOCALIZED = UNKNOWN;
|
||||
#endif
|
||||
|
||||
/* pg_convert options */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_CONV_IGNORE_DEFAULT
|
||||
*/
|
||||
const PGSQL_CONV_IGNORE_DEFAULT = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_CONV_FORCE_NULL
|
||||
*/
|
||||
const PGSQL_CONV_FORCE_NULL = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_CONV_IGNORE_NOT_NULL
|
||||
*/
|
||||
const PGSQL_CONV_IGNORE_NOT_NULL = UNKNOWN;
|
||||
|
||||
/* pg_insert/update/delete/select options */
|
||||
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_DML_ESCAPE
|
||||
*/
|
||||
const PGSQL_DML_ESCAPE = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_DML_NO_CONV
|
||||
*/
|
||||
const PGSQL_DML_NO_CONV = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_DML_EXEC
|
||||
*/
|
||||
const PGSQL_DML_EXEC = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_DML_ASYNC
|
||||
*/
|
||||
const PGSQL_DML_ASYNC = UNKNOWN;
|
||||
/**
|
||||
* @var int
|
||||
* @cvalue PGSQL_DML_STRING
|
||||
*/
|
||||
const PGSQL_DML_STRING = UNKNOWN;
|
||||
|
||||
/**
|
||||
* @strict-properties
|
||||
|
@ -513,5 +922,4 @@ namespace {
|
|||
* @refcount 1
|
||||
*/
|
||||
function pg_select(PgSql\Connection $connection, string $table_name, array $conditions, int $flags = PGSQL_DML_EXEC, int $mode = PGSQL_ASSOC): array|string|false {}
|
||||
|
||||
}
|
||||
|
|
94
ext/pgsql/pgsql_arginfo.h
generated
94
ext/pgsql/pgsql_arginfo.h
generated
|
@ -1,5 +1,5 @@
|
|||
/* This is a generated file, edit the .stub.php file instead.
|
||||
* Stub hash: 35f41dd74485f921feddc223085dea520f8d816e */
|
||||
* Stub hash: 16b910c38da087e1b4b55e38031b593334c698ec */
|
||||
|
||||
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_pg_connect, 0, 1, PgSql\\Connection, MAY_BE_FALSE)
|
||||
ZEND_ARG_TYPE_INFO(0, connection_string, IS_STRING, 0)
|
||||
|
@ -674,6 +674,98 @@ static const zend_function_entry class_PgSql_Lob_methods[] = {
|
|||
ZEND_FE_END
|
||||
};
|
||||
|
||||
static void register_pgsql_symbols(int module_number)
|
||||
{
|
||||
REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION", pgsql_libpq_version, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_STRING_CONSTANT("PGSQL_LIBPQ_VERSION_STR", pgsql_libpq_version, CONST_CS | CONST_PERSISTENT | CONST_DEPRECATED);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECT_FORCE_NEW", PGSQL_CONNECT_FORCE_NEW, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECT_ASYNC", PGSQL_CONNECT_ASYNC, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_ASSOC", PGSQL_ASSOC, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NUM", PGSQL_NUM, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_BOTH", PGSQL_BOTH, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NOTICE_LAST", PGSQL_NOTICE_LAST, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NOTICE_ALL", PGSQL_NOTICE_ALL, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NOTICE_CLEAR", PGSQL_NOTICE_CLEAR, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_BAD", CONNECTION_BAD, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_OK", CONNECTION_OK, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_STARTED", CONNECTION_STARTED, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_MADE", CONNECTION_MADE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AWAITING_RESPONSE", CONNECTION_AWAITING_RESPONSE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_AUTH_OK", CONNECTION_AUTH_OK, CONST_CS | CONST_PERSISTENT);
|
||||
#if defined(CONNECTION_SSL_STARTUP)
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SSL_STARTUP", CONNECTION_SSL_STARTUP, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONNECTION_SETENV", CONNECTION_SETENV, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_FAILED", PGRES_POLLING_FAILED, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_READING", PGRES_POLLING_READING, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_WRITING", PGRES_POLLING_WRITING, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_OK", PGRES_POLLING_OK, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_POLLING_ACTIVE", PGRES_POLLING_ACTIVE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_IDLE", PQTRANS_IDLE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_ACTIVE", PQTRANS_ACTIVE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INTRANS", PQTRANS_INTRANS, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_INERROR", PQTRANS_INERROR, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TRANSACTION_UNKNOWN", PQTRANS_UNKNOWN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_ERRORS_TERSE", PQERRORS_TERSE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_ERRORS_DEFAULT", PQERRORS_DEFAULT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_ERRORS_VERBOSE", PQERRORS_VERBOSE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_SEEK_SET", SEEK_SET, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_SEEK_CUR", SEEK_CUR, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_SEEK_END", SEEK_END, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_STATUS_LONG", PGSQL_STATUS_LONG, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_STATUS_STRING", PGSQL_STATUS_STRING, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_EMPTY_QUERY", PGRES_EMPTY_QUERY, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_COMMAND_OK", PGRES_COMMAND_OK, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_TUPLES_OK", PGRES_TUPLES_OK, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_COPY_OUT", PGRES_COPY_OUT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_COPY_IN", PGRES_COPY_IN, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_BAD_RESPONSE", PGRES_BAD_RESPONSE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_NONFATAL_ERROR", PGRES_NONFATAL_ERROR, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_FATAL_ERROR", PGRES_FATAL_ERROR, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY", PG_DIAG_SEVERITY, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SQLSTATE", PG_DIAG_SQLSTATE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_PRIMARY", PG_DIAG_MESSAGE_PRIMARY, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_DETAIL", PG_DIAG_MESSAGE_DETAIL, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_MESSAGE_HINT", PG_DIAG_MESSAGE_HINT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_STATEMENT_POSITION", PG_DIAG_STATEMENT_POSITION, CONST_CS | CONST_PERSISTENT);
|
||||
#if defined(PG_DIAG_INTERNAL_POSITION)
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_POSITION", PG_DIAG_INTERNAL_POSITION, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#if defined(PG_DIAG_INTERNAL_QUERY)
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_INTERNAL_QUERY", PG_DIAG_INTERNAL_QUERY, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONTEXT", PG_DIAG_CONTEXT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FILE", PG_DIAG_SOURCE_FILE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_LINE", PG_DIAG_SOURCE_LINE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SOURCE_FUNCTION", PG_DIAG_SOURCE_FUNCTION, CONST_CS | CONST_PERSISTENT);
|
||||
#if defined(PG_DIAG_SCHEMA_NAME)
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SCHEMA_NAME", PG_DIAG_SCHEMA_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#if defined(PG_DIAG_TABLE_NAME)
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_TABLE_NAME", PG_DIAG_TABLE_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#if defined(PG_DIAG_COLUMN_NAME)
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_COLUMN_NAME", PG_DIAG_COLUMN_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#if defined(PG_DIAG_DATATYPE_NAME)
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_DATATYPE_NAME", PG_DIAG_DATATYPE_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#if defined(PG_DIAG_CONSTRAINT_NAME)
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_CONSTRAINT_NAME", PG_DIAG_CONSTRAINT_NAME, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
#if defined(PG_DIAG_SEVERITY_NONLOCALIZED)
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DIAG_SEVERITY_NONLOCALIZED", PG_DIAG_SEVERITY_NONLOCALIZED, CONST_CS | CONST_PERSISTENT);
|
||||
#endif
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_DEFAULT", PGSQL_CONV_IGNORE_DEFAULT, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONV_FORCE_NULL", PGSQL_CONV_FORCE_NULL, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_CONV_IGNORE_NOT_NULL", PGSQL_CONV_IGNORE_NOT_NULL, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_ESCAPE", PGSQL_DML_ESCAPE, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_NO_CONV", PGSQL_DML_NO_CONV, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_EXEC", PGSQL_DML_EXEC, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_ASYNC", PGSQL_DML_ASYNC, CONST_CS | CONST_PERSISTENT);
|
||||
REGISTER_LONG_CONSTANT("PGSQL_DML_STRING", PGSQL_DML_STRING, CONST_CS | CONST_PERSISTENT);
|
||||
}
|
||||
|
||||
static zend_class_entry *register_class_PgSql_Connection(void)
|
||||
{
|
||||
zend_class_entry ce, *class_entry;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue