This commit is contained in:
CismonX 2018-08-09 16:33:39 +08:00
parent 3bf72f95e7
commit db0465e943
4 changed files with 9 additions and 11 deletions

View File

@ -12,7 +12,6 @@ Method names and functionalities are inspired by [Kotlin.Collections](https://ko
### 1.1 Notes
* Requires PHP 7.1 and above.
* Currently not working on MacOS. Fix in progress.
## 2. Documentation

View File

@ -14,7 +14,7 @@
#include "php_collections.h"
zend_object_handlers* collection_handlers;
zend_object_handlers collection_handlers;
zend_class_entry* collections_collection_ce;
zend_class_entry* collections_pair_ce;
@ -36,13 +36,12 @@ PHP_MINIT_FUNCTION(collections)
2, zend_ce_countable,
#endif
zend_ce_arrayaccess);
collection_handlers = (zend_object_handlers*)emalloc(sizeof(zend_object_handlers));
memcpy(collection_handlers, &std_object_handlers, sizeof(zend_object_handlers));
collection_handlers->count_elements = count_collection;
collection_handlers->unset_dimension = collection_offset_unset;
collection_handlers->write_dimension = collection_offset_set;
collection_handlers->read_dimension = collection_offset_get;
collection_handlers->has_dimension = collection_offset_exists;
memcpy(&collection_handlers, &std_object_handlers, sizeof(zend_object_handlers));
collection_handlers.count_elements = count_collection;
collection_handlers.unset_dimension = collection_offset_unset;
collection_handlers.write_dimension = collection_offset_set;
collection_handlers.read_dimension = collection_offset_get;
collection_handlers.has_dimension = collection_offset_exists;
zend_class_entry pair_ce;
INIT_CLASS_ENTRY_EX(pair_ce, "Pair", sizeof "Pair" - 1, pair_methods);
collections_pair_ce = zend_register_internal_class(&pair_ce);

View File

@ -15,7 +15,7 @@
zend_object_std_init(name, ce); \
(name)->handlers = object_handlers
#define NEW_COLLECTION_OBJ(name) \
NEW_OBJ(name, collections_collection_ce, collection_handlers)
NEW_OBJ(name, collections_collection_ce, &collection_handlers)
#define NEW_PAIR_OBJ(name) \
NEW_OBJ(name, collections_pair_ce, &std_object_handlers); \
name->properties = (zend_array*)emalloc(sizeof(zend_array)); \

View File

@ -31,7 +31,7 @@ extern PHP_COLLECTIONS_API zend_class_entry* collections_pair_ce;
extern zend_string* collections_pair_first;
extern zend_string* collections_pair_second;
extern zend_object_handlers* collection_handlers;
extern zend_object_handlers collection_handlers;
int count_collection(zval* obj, zend_long* count);
int collection_offset_exists(zval* object, zval* offset, int check_empty);