Skip to content

Commit 20a3044

Browse files
bjoriderickr
authored andcommitted
PHPC-369: Split PHP5 and PHP7 style custom object struct declrations
1 parent 4c918b8 commit 20a3044

File tree

3 files changed

+474
-141
lines changed

3 files changed

+474
-141
lines changed

php_phongo_classes.h

Lines changed: 53 additions & 141 deletions
Original file line numberDiff line numberDiff line change
@@ -16,156 +16,68 @@
1616
+----------------------------------------------------------------------+
1717
*/
1818

19-
/* $Id$ */
20-
2119
#ifndef PHONGO_CLASSES_H
2220
#define PHONGO_CLASSES_H
2321

24-
/* PHP Core stuff */
25-
#include <php.h>
26-
#include <mongoc-bulk-operation-private.h>
27-
28-
/* Our stuffz */
29-
#include "php_bson.h"
30-
31-
32-
typedef struct {
33-
zend_object std;
34-
bson_t *bson;
35-
} php_phongo_command_t;
36-
37-
typedef struct {
38-
zend_object std;
39-
mongoc_cursor_t *cursor;
40-
mongoc_client_t *client;
41-
int server_id;
42-
php_phongo_bson_state visitor_data;
43-
int got_iterator;
44-
} php_phongo_cursor_t;
22+
#if PHP_VERSION_ID >= 70000
23+
# include "php_phongo_structs-7.h"
24+
# define Z_COMMAND_OBJ_P(zv) php_command_fetch_object(Z_OBJ_P(zv));
25+
# define Z_CURSOR_OBJ_P(zv) php_cursor_fetch_object(Z_OBJ_P(zv));
26+
# define Z_CURSORID_OBJ_P(zv) php_cursorid_fetch_object(Z_OBJ_P(zv));
27+
# define Z_MANAGER_OBJ_P(zv) php_manager_fetch_object(Z_OBJ_P(zv));
28+
# define Z_QUERY_OBJ_P(zv) php_query_fetch_object(Z_OBJ_P(zv));
29+
# define Z_READPREFERENCE_OBJ_P(zv) php_readpreference_fetch_object(Z_OBJ_P(zv));
30+
# define Z_SERVER_OBJ_P(zv) php_server_fetch_object(Z_OBJ_P(zv));
31+
# define Z_BULKWRITE_OBJ_P(zv) php_bulkwrite_fetch_object(Z_OBJ_P(zv));
32+
# define Z_WRITECONCERN_OBJ_P(zv) php_writeconcern_fetch_object(Z_OBJ_P(zv));
33+
# define Z_WRITECONCERNERROR_OBJ_P(zv) php_writeconcernerror_fetch_object(Z_OBJ_P(zv));
34+
# define Z_WRITEERROR_OBJ_P(zv) php_writeerror_fetch_object(Z_OBJ_P(zv));
35+
# define Z_WRITERESULT_OBJ_P(zv) php_writeresult_fetch_object(Z_OBJ_P(zv));
36+
# define Z_BINARY_OBJ_P(zv) php_binary_fetch_object(Z_OBJ_P(zv));
37+
# define Z_INT32_OBJ_P(zv) php_int32_fetch_object(Z_OBJ_P(zv));
38+
# define Z_INT64_OBJ_P(zv) php_int64_fetch_object(Z_OBJ_P(zv));
39+
# define Z_JAVASCRIPT_OBJ_P(zv) php_javascript_fetch_object(Z_OBJ_P(zv));
40+
# define Z_LOG_OBJ_P(zv) php_log_fetch_object(Z_OBJ_P(zv));
41+
# define Z_MAXKEY_OBJ_P(zv) php_maxkey_fetch_object(Z_OBJ_P(zv));
42+
# define Z_MINKEY_OBJ_P(zv) php_minkey_fetch_object(Z_OBJ_P(zv));
43+
# define Z_OBJECTID_OBJ_P(zv) php_objectid_fetch_object(Z_OBJ_P(zv));
44+
# define Z_REGEX_OBJ_P(zv) php_regex_fetch_object(Z_OBJ_P(zv));
45+
# define Z_TIMESTAMP_OBJ_P(zv) php_timestamp_fetch_object(Z_OBJ_P(zv));
46+
# define Z_UTCDATETIME_OBJ_P(zv) php_utcdatetime_fetch_object(Z_OBJ_P(zv));
47+
#else
48+
# include "php_phongo_structs-5.h"
49+
# define Z_COMMAND_OBJ_P(zv) (php_phongo_command_t *)zend_object_store_get_object(zv TSRMLS_CC);
50+
# define Z_CURSOR_OBJ_P(zv) (php_phongo_cursor_t *)zend_object_store_get_object(zv TSRMLS_CC);
51+
# define Z_CURSORID_OBJ_P(zv) (php_phongo_cursorid_t *)zend_object_store_get_object(zv TSRMLS_CC);
52+
# define Z_MANAGER_OBJ_P(zv) (php_phongo_manager_t *)zend_object_store_get_object(zv TSRMLS_CC);
53+
# define Z_QUERY_OBJ_P(zv) (php_phongo_query_t *)zend_object_store_get_object(zv TSRMLS_CC);
54+
# define Z_READPREFERENCE_OBJ_P(zv) (php_phongo_readpreference_t *)zend_object_store_get_object(zv TSRMLS_CC);
55+
# define Z_SERVER_OBJ_P(zv) (php_phongo_server_t *)zend_object_store_get_object(zv TSRMLS_CC);
56+
# define Z_BULKWRITE_OBJ_P(zv) (php_phongo_bulkwrite_t *)zend_object_store_get_object(zv TSRMLS_CC);
57+
# define Z_WRITECONCERN_OBJ_P(zv) (php_phongo_writeconcern_t *)zend_object_store_get_object(zv TSRMLS_CC);
58+
# define Z_WRITECONCERNERROR_OBJ_P(zv) (php_phongo_writeconcernerror_t *)zend_object_store_get_object(zv TSRMLS_CC);
59+
# define Z_WRITEERROR_OBJ_P(zv) (php_phongo_writeerror_t *)zend_object_store_get_object(zv TSRMLS_CC);
60+
# define Z_WRITERESULT_OBJ_P(zv) (php_phongo_writeresult_t *)zend_object_store_get_object(zv TSRMLS_CC);
61+
# define Z_BINARY_OBJ_P(zv) (php_phongo_binary_t *)zend_object_store_get_object(zv TSRMLS_CC);
62+
# define Z_INT32_OBJ_P(zv) (php_phongo_int32_t *)zend_object_store_get_object(zv TSRMLS_CC);
63+
# define Z_INT64_OBJ_P(zv) (php_phongo_int64_t *)zend_object_store_get_object(zv TSRMLS_CC);
64+
# define Z_JAVASCRIPT_OBJ_P(zv) (php_phongo_javascript_t *)zend_object_store_get_object(zv TSRMLS_CC);
65+
# define Z_LOG_OBJ_P(zv) (php_phongo_log_t *)zend_object_store_get_object(zv TSRMLS_CC);
66+
# define Z_MAXKEY_OBJ_P(zv) (php_phongo_maxkey_t *)zend_object_store_get_object(zv TSRMLS_CC);
67+
# define Z_MINKEY_OBJ_P(zv) (php_phongo_minkey_t *)zend_object_store_get_object(zv TSRMLS_CC);
68+
# define Z_OBJECTID_OBJ_P(zv) (php_phongo_objectid_t *)zend_object_store_get_object(zv TSRMLS_CC);
69+
# define Z_REGEX_OBJ_P(zv) (php_phongo_regex_t *)zend_object_store_get_object(zv TSRMLS_CC);
70+
# define Z_TIMESTAMP_OBJ_P(zv) (php_phongo_timestamp_t *)zend_object_store_get_object(zv TSRMLS_CC);
71+
# define Z_UTCDATETIME_OBJ_P(zv) (php_phongo_utcdatetime_t *)zend_object_store_get_object(zv TSRMLS_CC);
72+
73+
#endif
4574

4675
typedef struct {
4776
zend_object_iterator intern;
4877
php_phongo_cursor_t *cursor;
4978
long current;
5079
} php_phongo_cursor_iterator;
5180

52-
typedef struct {
53-
zend_object std;
54-
uint64_t id;
55-
} php_phongo_cursorid_t;
56-
57-
typedef struct {
58-
zend_object std;
59-
mongoc_client_t *client;
60-
} php_phongo_manager_t;
61-
62-
typedef struct {
63-
zend_object std;
64-
bson_t *query;
65-
bson_t *selector;
66-
mongoc_query_flags_t flags;
67-
uint32_t skip;
68-
uint32_t limit;
69-
uint32_t batch_size;
70-
mongoc_read_concern_t *read_concern;
71-
} php_phongo_query_t;
72-
73-
typedef struct {
74-
zend_object std;
75-
mongoc_read_concern_t *read_concern;
76-
} php_phongo_readconcern_t;
77-
78-
typedef struct {
79-
zend_object std;
80-
mongoc_read_prefs_t *read_preference;
81-
} php_phongo_readpreference_t;
82-
83-
typedef struct {
84-
zend_object std;
85-
mongoc_client_t *client;
86-
int server_id;
87-
} php_phongo_server_t;
88-
89-
typedef struct {
90-
zend_object std;
91-
mongoc_bulk_operation_t *bulk;
92-
} php_phongo_bulkwrite_t;
93-
94-
typedef struct {
95-
zend_object std;
96-
mongoc_write_concern_t *write_concern;
97-
} php_phongo_writeconcern_t;
98-
99-
typedef struct {
100-
zend_object std;
101-
int code;
102-
char *message;
103-
zval *info;
104-
} php_phongo_writeconcernerror_t;
105-
106-
typedef struct {
107-
zend_object std;
108-
int code;
109-
char *message;
110-
zval *info;
111-
uint32_t index;
112-
} php_phongo_writeerror_t;
113-
114-
typedef struct {
115-
zend_object std;
116-
mongoc_write_concern_t *write_concern;
117-
mongoc_write_result_t write_result;
118-
mongoc_client_t *client;
119-
int server_id;
120-
} php_phongo_writeresult_t;
121-
122-
typedef struct {
123-
zend_object std;
124-
char *data;
125-
int data_len;
126-
int type;
127-
} php_phongo_binary_t;
128-
typedef struct {
129-
zend_object std;
130-
} php_phongo_int32_t;
131-
typedef struct {
132-
zend_object std;
133-
} php_phongo_int64_t;
134-
typedef struct {
135-
zend_object std;
136-
char *javascript;
137-
size_t javascript_len;
138-
bson_t *document;
139-
} php_phongo_javascript_t;
140-
typedef struct {
141-
zend_object std;
142-
} php_phongo_log_t;
143-
typedef struct {
144-
zend_object std;
145-
} php_phongo_maxkey_t;
146-
typedef struct {
147-
zend_object std;
148-
} php_phongo_minkey_t;
149-
typedef struct {
150-
zend_object std;
151-
char oid[25];
152-
} php_phongo_objectid_t;
153-
typedef struct {
154-
zend_object std;
155-
char *pattern;
156-
int pattern_len;
157-
char *flags;
158-
int flags_len;
159-
} php_phongo_regex_t;
160-
typedef struct {
161-
zend_object std;
162-
int32_t increment;
163-
int32_t timestamp;
164-
} php_phongo_timestamp_t;
165-
typedef struct {
166-
zend_object std;
167-
int64_t milliseconds;
168-
} php_phongo_utcdatetime_t;
16981

17082
extern PHONGO_API zend_class_entry *php_phongo_command_ce;
17183
extern PHONGO_API zend_class_entry *php_phongo_cursor_ce;
@@ -257,7 +169,7 @@ PHP_MINIT_FUNCTION(Regex);
257169
PHP_MINIT_FUNCTION(Timestamp);
258170
PHP_MINIT_FUNCTION(UTCDateTime);
259171

260-
#endif /* PHONGO_H */
172+
#endif /* PHONGO_CLASSES_H */
261173

262174

263175
/*

php_phongo_structs-5.h

Lines changed: 175 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,175 @@
1+
/*
2+
+---------------------------------------------------------------------------+
3+
| PHP Driver for MongoDB |
4+
+---------------------------------------------------------------------------+
5+
| Copyright 2015 MongoDB, Inc. |
6+
| |
7+
| Licensed under the Apache License, Version 2.0 (the "License"); |
8+
| you may not use this file except in compliance with the License. |
9+
| You may obtain a copy of the License at |
10+
| |
11+
| http://www.apache.org/licenses/LICENSE-2.0 |
12+
| |
13+
| Unless required by applicable law or agreed to in writing, software |
14+
| distributed under the License is distributed on an "AS IS" BASIS, |
15+
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
16+
| See the License for the specific language governing permissions and |
17+
| limitations under the License. |
18+
+---------------------------------------------------------------------------+
19+
| Copyright (c) 2015 MongoDB, Inc. |
20+
+---------------------------------------------------------------------------+
21+
*/
22+
23+
24+
#ifndef PHONGO_STRUCTS_H
25+
#define PHONGO_STRUCTS_H
26+
27+
/* PHP Core stuff */
28+
#include <php.h>
29+
#include <mongoc-bulk-operation-private.h>
30+
31+
/* Our stuffz */
32+
#include "php_bson.h"
33+
34+
35+
typedef struct {
36+
zend_object std;
37+
bson_t *bson;
38+
} php_phongo_command_t;
39+
40+
typedef struct {
41+
zend_object std;
42+
mongoc_cursor_t *cursor;
43+
mongoc_client_t *client;
44+
int server_id;
45+
php_phongo_bson_state visitor_data;
46+
int got_iterator;
47+
} php_phongo_cursor_t;
48+
49+
typedef struct {
50+
zend_object std;
51+
uint64_t id;
52+
} php_phongo_cursorid_t;
53+
54+
typedef struct {
55+
zend_object std;
56+
mongoc_client_t *client;
57+
} php_phongo_manager_t;
58+
59+
typedef struct {
60+
zend_object std;
61+
bson_t *query;
62+
bson_t *selector;
63+
mongoc_query_flags_t flags;
64+
uint32_t skip;
65+
uint32_t limit;
66+
uint32_t batch_size;
67+
} php_phongo_query_t;
68+
69+
typedef struct {
70+
zend_object std;
71+
mongoc_read_concern_t *read_concern;
72+
} php_phongo_readconcern_t;
73+
74+
typedef struct {
75+
zend_object std;
76+
mongoc_read_prefs_t *read_preference;
77+
} php_phongo_readpreference_t;
78+
79+
typedef struct {
80+
zend_object std;
81+
mongoc_client_t *client;
82+
int server_id;
83+
} php_phongo_server_t;
84+
85+
typedef struct {
86+
zend_object std;
87+
mongoc_bulk_operation_t *bulk;
88+
} php_phongo_bulkwrite_t;
89+
90+
typedef struct {
91+
zend_object std;
92+
mongoc_write_concern_t *write_concern;
93+
} php_phongo_writeconcern_t;
94+
95+
typedef struct {
96+
zend_object std;
97+
int code;
98+
char *message;
99+
zval *info;
100+
} php_phongo_writeconcernerror_t;
101+
102+
typedef struct {
103+
zend_object std;
104+
int code;
105+
char *message;
106+
zval *info;
107+
uint32_t index;
108+
} php_phongo_writeerror_t;
109+
110+
typedef struct {
111+
zend_object std;
112+
mongoc_write_concern_t *write_concern;
113+
mongoc_write_result_t write_result;
114+
mongoc_client_t *client;
115+
int server_id;
116+
} php_phongo_writeresult_t;
117+
118+
typedef struct {
119+
zend_object std;
120+
char *data;
121+
int data_len;
122+
int type;
123+
} php_phongo_binary_t;
124+
typedef struct {
125+
zend_object std;
126+
} php_phongo_int32_t;
127+
typedef struct {
128+
zend_object std;
129+
} php_phongo_int64_t;
130+
typedef struct {
131+
zend_object std;
132+
char *javascript;
133+
size_t javascript_len;
134+
bson_t *document;
135+
} php_phongo_javascript_t;
136+
typedef struct {
137+
zend_object std;
138+
} php_phongo_log_t;
139+
typedef struct {
140+
zend_object std;
141+
} php_phongo_maxkey_t;
142+
typedef struct {
143+
zend_object std;
144+
} php_phongo_minkey_t;
145+
typedef struct {
146+
zend_object std;
147+
char oid[25];
148+
} php_phongo_objectid_t;
149+
typedef struct {
150+
zend_object std;
151+
char *pattern;
152+
int pattern_len;
153+
char *flags;
154+
int flags_len;
155+
} php_phongo_regex_t;
156+
typedef struct {
157+
zend_object std;
158+
int32_t increment;
159+
int32_t timestamp;
160+
} php_phongo_timestamp_t;
161+
typedef struct {
162+
zend_object std;
163+
int64_t milliseconds;
164+
} php_phongo_utcdatetime_t;
165+
166+
#endif /* PHONGO_STRUCTS */
167+
168+
/*
169+
* Local variables:
170+
* tab-width: 4
171+
* c-basic-offset: 4
172+
* End:
173+
* vim600: noet sw=4 ts=4 fdm=marker
174+
* vim<600: noet sw=4 ts=4
175+
*/

0 commit comments

Comments
 (0)