88 */
99
1010#include " php_buffer.h"
11+ #include " arginfo.h"
1112#include " Buffer.hpp"
1213
1314#define GUARD_SIZE (b, s ) { if (guard_data_size (b, s) == false ) return ; }
@@ -663,58 +664,58 @@ PHP_METHOD(ByteBuffer, consumeDouble)
663664}
664665
665666static zend_function_entry buffer_object_methods[] = {
666- PHP_ME (ByteBuffer, __construct, NULL , ZEND_ACC_CTOR | ZEND_ACC_PUBLIC)
667- PHP_ME (ByteBuffer, __toString, NULL , ZEND_ACC_PUBLIC)
668- PHP_ME (ByteBuffer, bytes, NULL , ZEND_ACC_PUBLIC)
669- PHP_ME (ByteBuffer, size, NULL , ZEND_ACC_PUBLIC)
670- PHP_ME (ByteBuffer, empty, NULL , ZEND_ACC_PUBLIC)
671- PHP_ME (ByteBuffer, append, NULL , ZEND_ACC_PUBLIC)
672- PHP_ME (ByteBuffer, read, NULL , ZEND_ACC_PUBLIC)
673- PHP_ME (ByteBuffer, consume, NULL , ZEND_ACC_PUBLIC)
674- PHP_ME (ByteBuffer, discard, NULL , ZEND_ACC_PUBLIC)
675- PHP_ME (ByteBuffer, slice, NULL , ZEND_ACC_PUBLIC)
676- PHP_ME (ByteBuffer, shift, NULL , ZEND_ACC_PUBLIC)
677- PHP_ME (ByteBuffer, flush, NULL , ZEND_ACC_PUBLIC)
667+ PHP_ME (ByteBuffer, __construct, arginfo_construct , ZEND_ACC_CTOR | ZEND_ACC_PUBLIC)
668+ PHP_ME (ByteBuffer, __toString, arginfo_empty , ZEND_ACC_PUBLIC)
669+ PHP_ME (ByteBuffer, bytes, arginfo_empty , ZEND_ACC_PUBLIC)
670+ PHP_ME (ByteBuffer, size, arginfo_empty , ZEND_ACC_PUBLIC)
671+ PHP_ME (ByteBuffer, empty, arginfo_empty , ZEND_ACC_PUBLIC)
672+ PHP_ME (ByteBuffer, append, arginfo_string , ZEND_ACC_PUBLIC)
673+ PHP_ME (ByteBuffer, read, arginfo_read , ZEND_ACC_PUBLIC)
674+ PHP_ME (ByteBuffer, consume, arginfo_count , ZEND_ACC_PUBLIC)
675+ PHP_ME (ByteBuffer, discard, arginfo_count , ZEND_ACC_PUBLIC)
676+ PHP_ME (ByteBuffer, slice, arginfo_read , ZEND_ACC_PUBLIC)
677+ PHP_ME (ByteBuffer, shift, arginfo_count , ZEND_ACC_PUBLIC)
678+ PHP_ME (ByteBuffer, flush, arginfo_empty , ZEND_ACC_PUBLIC)
678679 // BOOL
679- PHP_ME (ByteBuffer, appendBool, NULL , ZEND_ACC_PUBLIC)
680- PHP_ME (ByteBuffer, readBool, NULL , ZEND_ACC_PUBLIC)
681- PHP_ME (ByteBuffer, consumeBool, NULL , ZEND_ACC_PUBLIC)
680+ PHP_ME (ByteBuffer, appendBool, arginfo_bool , ZEND_ACC_PUBLIC)
681+ PHP_ME (ByteBuffer, readBool, arginfo_offset , ZEND_ACC_PUBLIC)
682+ PHP_ME (ByteBuffer, consumeBool, arginfo_empty , ZEND_ACC_PUBLIC)
682683 // INT 8
683- PHP_ME (ByteBuffer, appendInt8, NULL , ZEND_ACC_PUBLIC)
684- PHP_ME (ByteBuffer, readInt8, NULL , ZEND_ACC_PUBLIC)
685- PHP_ME (ByteBuffer, consumeInt8, NULL , ZEND_ACC_PUBLIC)
686- PHP_ME (ByteBuffer, appendUInt8, NULL , ZEND_ACC_PUBLIC)
687- PHP_ME (ByteBuffer, readUInt8, NULL , ZEND_ACC_PUBLIC)
688- PHP_ME (ByteBuffer, consumeUInt8, NULL , ZEND_ACC_PUBLIC)
684+ PHP_ME (ByteBuffer, appendInt8, arginfo_int , ZEND_ACC_PUBLIC)
685+ PHP_ME (ByteBuffer, readInt8, arginfo_offset , ZEND_ACC_PUBLIC)
686+ PHP_ME (ByteBuffer, consumeInt8, arginfo_empty , ZEND_ACC_PUBLIC)
687+ PHP_ME (ByteBuffer, appendUInt8, arginfo_int , ZEND_ACC_PUBLIC)
688+ PHP_ME (ByteBuffer, readUInt8, arginfo_offset , ZEND_ACC_PUBLIC)
689+ PHP_ME (ByteBuffer, consumeUInt8, arginfo_empty , ZEND_ACC_PUBLIC)
689690 // INT 16
690- PHP_ME (ByteBuffer, appendInt16, NULL , ZEND_ACC_PUBLIC)
691- PHP_ME (ByteBuffer, readInt16, NULL , ZEND_ACC_PUBLIC)
692- PHP_ME (ByteBuffer, consumeInt16, NULL , ZEND_ACC_PUBLIC)
693- PHP_ME (ByteBuffer, appendUInt16, NULL , ZEND_ACC_PUBLIC)
694- PHP_ME (ByteBuffer, readUInt16, NULL , ZEND_ACC_PUBLIC)
695- PHP_ME (ByteBuffer, consumeUInt16, NULL , ZEND_ACC_PUBLIC)
691+ PHP_ME (ByteBuffer, appendInt16, arginfo_int , ZEND_ACC_PUBLIC)
692+ PHP_ME (ByteBuffer, readInt16, arginfo_offset , ZEND_ACC_PUBLIC)
693+ PHP_ME (ByteBuffer, consumeInt16, arginfo_empty , ZEND_ACC_PUBLIC)
694+ PHP_ME (ByteBuffer, appendUInt16, arginfo_int , ZEND_ACC_PUBLIC)
695+ PHP_ME (ByteBuffer, readUInt16, arginfo_offset , ZEND_ACC_PUBLIC)
696+ PHP_ME (ByteBuffer, consumeUInt16, arginfo_empty , ZEND_ACC_PUBLIC)
696697 // INT 32
697- PHP_ME (ByteBuffer, appendInt32, NULL , ZEND_ACC_PUBLIC)
698- PHP_ME (ByteBuffer, readInt32, NULL , ZEND_ACC_PUBLIC)
699- PHP_ME (ByteBuffer, consumeInt32, NULL , ZEND_ACC_PUBLIC)
700- PHP_ME (ByteBuffer, appendUInt32, NULL , ZEND_ACC_PUBLIC)
701- PHP_ME (ByteBuffer, readUInt32, NULL , ZEND_ACC_PUBLIC)
702- PHP_ME (ByteBuffer, consumeUInt32, NULL , ZEND_ACC_PUBLIC)
698+ PHP_ME (ByteBuffer, appendInt32, arginfo_int , ZEND_ACC_PUBLIC)
699+ PHP_ME (ByteBuffer, readInt32, arginfo_offset , ZEND_ACC_PUBLIC)
700+ PHP_ME (ByteBuffer, consumeInt32, arginfo_empty , ZEND_ACC_PUBLIC)
701+ PHP_ME (ByteBuffer, appendUInt32, arginfo_int , ZEND_ACC_PUBLIC)
702+ PHP_ME (ByteBuffer, readUInt32, arginfo_offset , ZEND_ACC_PUBLIC)
703+ PHP_ME (ByteBuffer, consumeUInt32, arginfo_empty , ZEND_ACC_PUBLIC)
703704 // INT 64
704- PHP_ME (ByteBuffer, appendInt64, NULL , ZEND_ACC_PUBLIC)
705- PHP_ME (ByteBuffer, readInt64, NULL , ZEND_ACC_PUBLIC)
706- PHP_ME (ByteBuffer, consumeInt64, NULL , ZEND_ACC_PUBLIC)
707- PHP_ME (ByteBuffer, appendUInt64, NULL , ZEND_ACC_PUBLIC)
708- PHP_ME (ByteBuffer, readUInt64, NULL , ZEND_ACC_PUBLIC)
709- PHP_ME (ByteBuffer, consumeUInt64, NULL , ZEND_ACC_PUBLIC)
705+ PHP_ME (ByteBuffer, appendInt64, arginfo_int , ZEND_ACC_PUBLIC)
706+ PHP_ME (ByteBuffer, readInt64, arginfo_offset , ZEND_ACC_PUBLIC)
707+ PHP_ME (ByteBuffer, consumeInt64, arginfo_empty , ZEND_ACC_PUBLIC)
708+ PHP_ME (ByteBuffer, appendUInt64, arginfo_int , ZEND_ACC_PUBLIC)
709+ PHP_ME (ByteBuffer, readUInt64, arginfo_offset , ZEND_ACC_PUBLIC)
710+ PHP_ME (ByteBuffer, consumeUInt64, arginfo_empty , ZEND_ACC_PUBLIC)
710711 // FLOAT
711- PHP_ME (ByteBuffer, appendFloat, NULL , ZEND_ACC_PUBLIC)
712- PHP_ME (ByteBuffer, readFloat, NULL , ZEND_ACC_PUBLIC)
713- PHP_ME (ByteBuffer, consumeFloat, NULL , ZEND_ACC_PUBLIC)
712+ PHP_ME (ByteBuffer, appendFloat, arginfo_float , ZEND_ACC_PUBLIC)
713+ PHP_ME (ByteBuffer, readFloat, arginfo_offset , ZEND_ACC_PUBLIC)
714+ PHP_ME (ByteBuffer, consumeFloat, arginfo_empty , ZEND_ACC_PUBLIC)
714715 // DOUBLE
715- PHP_ME (ByteBuffer, appendDouble, NULL , ZEND_ACC_PUBLIC)
716- PHP_ME (ByteBuffer, readDouble, NULL , ZEND_ACC_PUBLIC)
717- PHP_ME (ByteBuffer, consumeDouble, NULL , ZEND_ACC_PUBLIC)
716+ PHP_ME (ByteBuffer, appendDouble, arginfo_float , ZEND_ACC_PUBLIC)
717+ PHP_ME (ByteBuffer, readDouble, arginfo_offset , ZEND_ACC_PUBLIC)
718+ PHP_ME (ByteBuffer, consumeDouble, arginfo_empty , ZEND_ACC_PUBLIC)
718719
719720 PHP_FE_END
720721};
@@ -732,9 +733,10 @@ static zend_object* buffer_object_create(zend_class_entry *ce) {
732733 return ret;
733734}
734735
736+ #if PHP_VERSION_ID < 80000
735737static zend_object *buffer_object_clone (zval *object)
736738{
737- buffer_object *old_obj = buffer_object_from_zend_object (Z_OBJ_P (object));
739+ buffer_object *old_obj = buffer_object_from_zend_object (Z_OBJ_P (object));
738740 buffer_object *new_obj = buffer_object_from_zend_object (buffer_object_create (old_obj->std .ce ));
739741
740742 zend_objects_clone_members (&new_obj->std , &old_obj->std );
@@ -744,6 +746,20 @@ static zend_object *buffer_object_clone(zval *object)
744746
745747 return &new_obj->std ;
746748}
749+ #else
750+ static zend_object *buffer_object_clone (zend_object *object)
751+ {
752+ buffer_object *old_obj = buffer_object_from_zend_object (object);
753+ buffer_object *new_obj = buffer_object_from_zend_object (buffer_object_create (old_obj->std .ce ));
754+
755+ zend_objects_clone_members (&new_obj->std , &old_obj->std );
756+
757+ new_obj->data = new Buffer ();
758+ new_obj->data ->merge (*old_obj->data );
759+
760+ return &new_obj->std ;
761+ }
762+ #endif
747763
748764static void buffer_object_free (zend_object *zobj)
749765{
0 commit comments