2 +--------------------------------------------------------------------+
4 +--------------------------------------------------------------------+
5 | Redistribution and use in source and binary forms, with or without |
6 | modification, are permitted provided that the conditions mentioned |
7 | in the accompanying LICENSE file are met. |
8 +--------------------------------------------------------------------+
9 | Copyright (c) 2013, Michael Wallner <mike@php.net> |
10 +--------------------------------------------------------------------+
14 #ifndef PHP_PQ_ERROR_H
15 #define PHP_PQ_ERROR_H
19 #include "php_pqres.h"
21 #define z_is_true zend_is_true
22 #define smart_str_s(ss) (ss)->s
23 #define smart_str_v(ss) (smart_str_s(ss)?(ss)->s->val:NULL)
24 #define smart_str_l(ss) (smart_str_s(ss)?(ss)->s->len:0)
26 /* clear result object associated with a result handle */
27 extern void php_pqres_clear(PGresult
*r
);
28 /* clear any asynchronous results */
29 extern void php_pqconn_clear(PGconn
*conn
);
30 /* safe wrappers to clear any asynchronous wrappers before querying synchronously */
31 extern PGresult
*php_pq_exec(PGconn
*conn
, const char *query
);
32 extern PGresult
*php_pq_exec_params(PGconn
*conn
, const char *command
, int nParams
, const Oid
*paramTypes
, const char *const * paramValues
, const int *paramLengths
, const int *paramFormats
, int resultFormat
);
33 extern PGresult
*php_pq_prepare(PGconn
*conn
, const char *stmtName
, const char *query
, int nParams
, const Oid
*paramTypes
);
34 extern PGresult
*php_pq_exec_prepared(PGconn
*conn
, const char *stmtName
, int nParams
, const char *const * paramValues
, const int *paramLengths
, const int *paramFormats
, int resultFormat
);
37 /* trim LF from EOL */
38 extern char *php_pq_rtrim(char *e
);
41 extern const char *php_pq_strmode(long mode
);
43 /* free zval ptr values (as hash dtor) */
44 extern void php_pq_hash_ptr_dtor(zval
*p
);
46 #define PHP_PQerrorMessage(c) php_pq_rtrim(PQerrorMessage((c)))
47 #define PHP_PQresultErrorMessage(r) php_pq_rtrim(PQresultErrorMessage((r)))
49 extern zend_class_entry
*php_pqdt_class_entry
;
50 extern zval
*php_pqdt_from_string(zval
*zv
, char *input_fmt
, char *dt_str
, size_t dt_len
, const char *output_fmt
, zval
*ztimezone
);
51 extern zend_string
*php_pqdt_to_string(zval
*zdt
, const char *format
);
53 extern zend_class_entry
*php_pqconv_class_entry
;
55 extern HashTable
*php_pq_parse_array(php_pqres_t
*res
, const char *val_str
, size_t val_len
, Oid typ
);
58 #if PHP_VERSION_ID >= 80000
59 extern int php_pq_compare_index(Bucket
*lptr
, Bucket
*rptr
);
61 # define php_pq_call_method(objval_ptr, method_name, num_args, ...) \
62 zend_call_method_with_ ## num_args ## _params( \
63 Z_OBJ_P(objval_ptr), Z_OBJCE_P(objval_ptr), NULL, \
64 (method_name), __VA_ARGS__)
65 # define php_pq_read_property(objval_ptr, prop_name, tmpval_ptr) \
66 zend_read_property(Z_OBJCE_P(objval_ptr), Z_OBJ_P(objval_ptr), \
67 (prop_name), strlen(prop_name), 0, (tmpval_ptr))
68 # define php_pq_update_property(objval_ptr, prop_name, newval_ptr) \
69 zend_update_property(Z_OBJCE_P(objval_ptr), Z_OBJ_P(objval_ptr), \
70 (prop_name), strlen(prop_name), (newval_ptr))
71 #define php_pq_cast_object(objval_ptr, cast_type, retval_ptr) \
72 (Z_OBJ_HT_P(objval_ptr)->cast_object && \
73 SUCCESS == Z_OBJ_HT_P(objval_ptr)->cast_object(Z_OBJ_P(objval_ptr), (retval_ptr), (cast_type)))
76 extern int php_pq_compare_index(const void *lptr
, const void *rptr
);
78 # define zend_ce_countable spl_ce_Countable
80 # define php_pq_call_method(objval_ptr, method_name, num_args, ...) \
81 zend_call_method_with_ ## num_args ## _params( \
82 (objval_ptr), NULL, NULL, \
83 (method_name), __VA_ARGS__)
84 # define php_pq_read_property(objval_ptr, prop_name, tmpval_ptr) \
85 zend_read_property(Z_OBJCE_P(objval_ptr), (objval_ptr), \
86 (prop_name), strlen(prop_name), 0, (tmpval_ptr))
87 # define php_pq_update_property(objval_ptr, prop_name, newval_ptr) \
88 zend_update_property(Z_OBJCE_P(objval_ptr), (objval_ptr), \
89 (prop_name), strlen(prop_name), (newval_ptr))
90 #define php_pq_cast_object(objval_ptr, cast_type, retval_ptr) \
91 (Z_OBJ_HT_P(objval_ptr)->cast_object && \
92 SUCCESS == Z_OBJ_HT_P(objval_ptr)->cast_object(objval_ptr, (retval_ptr), (cast_type)))
95 #if PHP_VERSION_ID < 80100
96 # define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_TYPE_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
97 ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, required_num_args)
98 # define ZEND_BEGIN_ARG_WITH_TENTATIVE_RETURN_OBJ_INFO_EX(name, return_reference, required_num_args, type, allow_null) \
99 ZEND_BEGIN_ARG_INFO_EX(name, 0, return_reference, required_num_args)
103 extern PHP_MINIT_FUNCTION(pq_misc
);
112 * vim600: noet sw=4 ts=4 fdm=marker
113 * vim<600: noet sw=4 ts=4