1- #include < string>
2- #include " bitem.h"
31#include " bdict.h"
2+ #include " bint.h"
3+ #include " bitem.h"
44#include " blist.h"
55#include " bstr.h"
6- #include " bint.h"
76#include " zend_container.h"
7+ #include < string>
88
9- bdict::bdict () : bitem() {
9+ bdict::bdict ()
10+ : bitem()
11+ {
1012 ALLOC_HASHTABLE (_data);
1113 zend_hash_init (_data, 0 , NULL , ZVAL_PTR_DTOR, 0 );
1214}
1315
14- bdict::bdict (const bdict *that) : bitem() {
16+ bdict::bdict (const bdict *that)
17+ : bitem()
18+ {
1519 ALLOC_HASHTABLE (_data);
1620 zend_hash_init (_data, 0 , NULL , ZVAL_PTR_DTOR, 0 );
1721 // zend_hash_copy(_data, that->_data, (copy_ctor_func_t) ZVAL_COPY_CTOR);
18- for (zend_hash_internal_pointer_reset (that->_data );
19- zend_hash_has_more_elements (that->_data ) == SUCCESS;
20- zend_hash_move_forward (that->_data )) {
22+ for (zend_hash_internal_pointer_reset (that->_data );
23+ zend_hash_has_more_elements (that->_data ) == SUCCESS;
24+ zend_hash_move_forward (that->_data )) {
2125 zval *tmp = new zval ();
2226 ZVAL_OBJ (tmp, zend_container::bnode_object_clone (zend_hash_get_current_data (that->_data )));
2327 zend_string *_str_index;
@@ -27,35 +31,40 @@ bdict::bdict(const bdict *that) : bitem() {
2731 }
2832}
2933
30- bdict::~bdict () {
34+ bdict::~bdict ()
35+ {
3136 zend_hash_destroy (_data);
3237 FREE_HASHTABLE (_data);
3338}
3439
35- std::string bdict::get_type () const {
40+ std::string bdict::get_type () const
41+ {
3642 return " bdict" ;
3743}
3844
39- zval * bdict::get (const std::string &key) const {
45+ zval *bdict::get (const std::string &key) const
46+ {
4047 if (!zend_hash_str_exists (_data, key.c_str (), key.length ())) {
4148 return bitem::get_zval_bool (false );
4249 }
4350 return zend_hash_str_find (_data, key.c_str (), key.length ());
4451}
4552
46- bool bdict::has (const std::string &key) const {
53+ bool bdict::has (const std::string &key) const
54+ {
4755 if (zend_hash_str_exists (_data, key.c_str (), key.length ())) {
4856 return true ;
4957 } else {
5058 return false ;
5159 }
5260}
5361
54- void bdict::set (const std::string &key, zval *value) {
62+ void bdict::set (const std::string &key, zval *value)
63+ {
5564 std::string class_name = zend_container::bnode_object_get_class_name (value);
5665 zend_object *clone_object = NULL ;
5766 if (class_name == " bdict" || class_name == " blist" ||
58- class_name == " bstr" || class_name == " bint" ) {
67+ class_name == " bstr" || class_name == " bint" ) {
5968 clone_object = zend_container::bnode_object_clone (value);
6069 } else {
6170 return ;
@@ -69,15 +78,17 @@ void bdict::set(const std::string &key, zval *value) {
6978 }
7079}
7180
72- bool bdict::del (const std::string &key) {
81+ bool bdict::del (const std::string &key)
82+ {
7383 if (zend_hash_str_del (_data, key.c_str (), key.length ()) == SUCCESS) {
7484 return true ;
7585 } else {
7686 return false ;
7787 }
7888}
7989
80- zval * bdict::get_path (const std::string &key, size_t &pt) const {
90+ zval *bdict::get_path (const std::string &key, size_t &pt) const
91+ {
8192 std::string current_key = bitem::get_current_key (key, pt);
8293 if (!zend_hash_str_exists (_data, current_key.c_str (), current_key.length ())) {
8394 return bitem::get_zval_bool (false );
@@ -97,10 +108,11 @@ zval * bdict::get_path(const std::string &key, size_t &pt) const {
97108 }
98109}
99110
100- void bdict::set_path (const std::string &key, size_t &pt, zval *value) {
111+ void bdict::set_path (const std::string &key, size_t &pt, zval *value)
112+ {
101113 std::string class_name = zend_container::bnode_object_get_class_name (value);
102114 if (!(class_name == " bdict" || class_name == " blist" ||
103- class_name == " bstr" || class_name == " bint" )) {
115+ class_name == " bstr" || class_name == " bint" )) {
104116 bitem::throw_general_exception (" Unsupported node given" );
105117 return ;
106118 }
@@ -152,7 +164,8 @@ void bdict::set_path(const std::string &key, size_t &pt, zval *value) {
152164 }
153165}
154166
155- bool bdict::del_path (const std::string &key, size_t &pt) {
167+ bool bdict::del_path (const std::string &key, size_t &pt)
168+ {
156169 std::string current_key = bitem::get_current_key (key, pt);
157170 if (!zend_hash_str_exists (_data, current_key.c_str (), current_key.length ())) {
158171 return false ;
@@ -172,15 +185,18 @@ bool bdict::del_path(const std::string &key, size_t &pt) {
172185 }
173186}
174187
175- size_t bdict::length () const {
188+ size_t bdict::length () const
189+ {
176190 return (encode ().length () / sizeof (char ));
177191}
178192
179- size_t bdict::count () const {
193+ size_t bdict::count () const
194+ {
180195 return zend_array_count (_data);
181196}
182197
183- zval * bdict::parse (const std::string &ben, size_t &pt) {
198+ zval *bdict::parse (const std::string &ben, size_t &pt)
199+ {
184200 if (ben[pt] != ' d' )
185201 return bitem::throw_general_exception (" Error parsing bdict" );
186202 zval *zv = new zval ();
@@ -192,7 +208,8 @@ zval * bdict::parse(const std::string &ben, size_t &pt) {
192208
193209 while (ben[pt] != ' e' ) {
194210 size_t start = pt;
195- while (isdigit (ben[pt])) ++pt;
211+ while (isdigit (ben[pt]))
212+ ++pt;
196213 std::string key_len = ben.substr (start, pt - start);
197214 ++pt;
198215 std::string key = ben.substr (pt, std::stoull (key_len));
@@ -217,30 +234,32 @@ zval * bdict::parse(const std::string &ben, size_t &pt) {
217234 return zv;
218235}
219236
220- std::string bdict::encode () const {
237+ std::string bdict::encode () const
238+ {
221239 std::string result = " d" ;
222- for (zend_hash_internal_pointer_reset (_data);
223- zend_hash_has_more_elements (_data) == SUCCESS;
224- zend_hash_move_forward (_data)) {
240+ for (zend_hash_internal_pointer_reset (_data);
241+ zend_hash_has_more_elements (_data) == SUCCESS;
242+ zend_hash_move_forward (_data)) {
225243 zend_string *_str_index;
226244 zend_ulong num_index;
227245 zend_hash_get_current_key (_data, &_str_index, &num_index);
228246 zval *value = zend_hash_get_current_data (_data);
229247 std::string str_index (ZSTR_VAL (_str_index), ZSTR_LEN (_str_index));
230248
231- result += std::to_string (str_index.length ()) + " :" + str_index
232- + zend_container::bnode_fetch_object_data (Z_OBJ_P (value))->encode ();
249+ result += std::to_string (str_index.length ()) + " :" + str_index +
250+ zend_container::bnode_fetch_object_data (Z_OBJ_P (value))->encode ();
233251 }
234252 return result + " e" ;
235253}
236254
237- zval * bdict::to_array (const bool include_meta) const {
255+ zval *bdict::to_array (const bool include_meta) const
256+ {
238257 zval *zv = new zval ();
239258 array_init (zv);
240259
241- for (zend_hash_internal_pointer_reset (_data);
242- zend_hash_has_more_elements (_data) == SUCCESS;
243- zend_hash_move_forward (_data)) {
260+ for (zend_hash_internal_pointer_reset (_data);
261+ zend_hash_has_more_elements (_data) == SUCCESS;
262+ zend_hash_move_forward (_data)) {
244263 zend_string *str_index;
245264 zend_ulong num_index;
246265 zend_hash_get_current_key (_data, &str_index, &num_index);
@@ -260,16 +279,17 @@ zval * bdict::to_array(const bool include_meta) const {
260279 return zv;
261280}
262281
263- zval * bdict::search (const std::string &needle, const long &mode, const std::string path) const {
282+ zval *bdict::search (const std::string &needle, const long &mode, const std::string path) const
283+ {
264284 if (mode < 0 || mode > 1 )
265285 bitem::throw_general_exception (" Illegal search mode" );
266286
267287 zval *zv = new zval ();
268288 array_init (zv);
269289
270- for (zend_hash_internal_pointer_reset (_data);
271- zend_hash_has_more_elements (_data) == SUCCESS;
272- zend_hash_move_forward (_data)) {
290+ for (zend_hash_internal_pointer_reset (_data);
291+ zend_hash_has_more_elements (_data) == SUCCESS;
292+ zend_hash_move_forward (_data)) {
273293 zend_string *_str_index;
274294 zend_ulong num_index;
275295 zend_hash_get_current_key (_data, &_str_index, &num_index);
0 commit comments