From 49974ff630a3bd7b20a5efe9f6ef2bac1d6a1e54 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Mon, 5 Feb 2024 17:24:34 +0000 Subject: [PATCH] Added clear() to allow discarding ByteBuffer contents the allocated memory is retained for reuse --- encoding.cpp | 9 +++++++++ stubs/BaseByteBuffer.stub.php | 6 ++++++ stubs/BaseByteBuffer_arginfo.h | 6 +++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/encoding.cpp b/encoding.cpp index 53c95e0..2851563 100644 --- a/encoding.cpp +++ b/encoding.cpp @@ -544,6 +544,15 @@ BYTE_BUFFER_METHOD(trim) { } } +BYTE_BUFFER_METHOD(clear) { + zend_parse_parameters_none_throw(); + + auto object = BYTE_BUFFER_THIS(); + object->read_offset = 0; + object->write_offset = 0; + object->used = 0; +} + BYTE_BUFFER_METHOD(__serialize) { zend_parse_parameters_none_throw(); diff --git a/stubs/BaseByteBuffer.stub.php b/stubs/BaseByteBuffer.stub.php index 7666d90..7adcdcd 100644 --- a/stubs/BaseByteBuffer.stub.php +++ b/stubs/BaseByteBuffer.stub.php @@ -95,6 +95,12 @@ public function reserve(int $length) : void{} */ public function trim() : void{} + /** + * Clears all data from the buffer. The memory used is retained + * as reserved memory. + */ + public function clear() : void{} + public function __serialize() : array{} public function __unserialize(array $data) : void{} diff --git a/stubs/BaseByteBuffer_arginfo.h b/stubs/BaseByteBuffer_arginfo.h index 87fa4c2..75ca069 100644 --- a/stubs/BaseByteBuffer_arginfo.h +++ b/stubs/BaseByteBuffer_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 7cd1dd363517d6bc01b82e50e5dc8e16c3ac569b */ + * Stub hash: e4cd03e67587e5cd47862bdb22a4f9ef22e24367 */ ZEND_BEGIN_ARG_INFO_EX(arginfo_class_pmmp_encoding_BaseByteBuffer___construct, 0, 0, 0) ZEND_ARG_TYPE_INFO_WITH_DEFAULT_VALUE(0, buffer, IS_STRING, 0, "\"\"") @@ -38,6 +38,8 @@ ZEND_END_ARG_INFO() ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_pmmp_encoding_BaseByteBuffer_trim, 0, 0, IS_VOID, 0) ZEND_END_ARG_INFO() +#define arginfo_class_pmmp_encoding_BaseByteBuffer_clear arginfo_class_pmmp_encoding_BaseByteBuffer_trim + ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_class_pmmp_encoding_BaseByteBuffer___serialize, 0, 0, IS_ARRAY, 0) ZEND_END_ARG_INFO() @@ -60,6 +62,7 @@ ZEND_METHOD(pmmp_encoding_BaseByteBuffer, getUsedLength); ZEND_METHOD(pmmp_encoding_BaseByteBuffer, getReservedLength); ZEND_METHOD(pmmp_encoding_BaseByteBuffer, reserve); ZEND_METHOD(pmmp_encoding_BaseByteBuffer, trim); +ZEND_METHOD(pmmp_encoding_BaseByteBuffer, clear); ZEND_METHOD(pmmp_encoding_BaseByteBuffer, __serialize); ZEND_METHOD(pmmp_encoding_BaseByteBuffer, __unserialize); ZEND_METHOD(pmmp_encoding_BaseByteBuffer, __debugInfo); @@ -78,6 +81,7 @@ static const zend_function_entry class_pmmp_encoding_BaseByteBuffer_methods[] = ZEND_ME(pmmp_encoding_BaseByteBuffer, getReservedLength, arginfo_class_pmmp_encoding_BaseByteBuffer_getReservedLength, ZEND_ACC_PUBLIC) ZEND_ME(pmmp_encoding_BaseByteBuffer, reserve, arginfo_class_pmmp_encoding_BaseByteBuffer_reserve, ZEND_ACC_PUBLIC) ZEND_ME(pmmp_encoding_BaseByteBuffer, trim, arginfo_class_pmmp_encoding_BaseByteBuffer_trim, ZEND_ACC_PUBLIC) + ZEND_ME(pmmp_encoding_BaseByteBuffer, clear, arginfo_class_pmmp_encoding_BaseByteBuffer_clear, ZEND_ACC_PUBLIC) ZEND_ME(pmmp_encoding_BaseByteBuffer, __serialize, arginfo_class_pmmp_encoding_BaseByteBuffer___serialize, ZEND_ACC_PUBLIC) ZEND_ME(pmmp_encoding_BaseByteBuffer, __unserialize, arginfo_class_pmmp_encoding_BaseByteBuffer___unserialize, ZEND_ACC_PUBLIC) ZEND_ME(pmmp_encoding_BaseByteBuffer, __debugInfo, arginfo_class_pmmp_encoding_BaseByteBuffer___debugInfo, ZEND_ACC_PUBLIC)