X-Git-Url: https://git.m6w6.name/?p=m6w6%2Fext-http;a=blobdiff_plain;f=phpstr%2Fphpstr.h;h=04a74ed05718a7cd1076df8fa0fb03a5b1a90357;hp=a36f88ac2d25aab2dfaa6bf0c37ed33edd6366f4;hb=6be753a288ed7a42e0cd19551d85eb8eb14c4566;hpb=0d925a2820b9d75b8e32c451fd400863e51e22fe;ds=sidebyside diff --git a/phpstr/phpstr.h b/phpstr/phpstr.h index a36f88a..04a74ed 100644 --- a/phpstr/phpstr.h +++ b/phpstr/phpstr.h @@ -6,6 +6,10 @@ #include "php.h" +#ifndef PHPSTR_DEFAULT_SIZE +# define PHPSTR_DEFAULT_SIZE 256 +#endif + #ifndef STR_SET # define STR_SET(STR, SET) \ { \ @@ -85,7 +89,7 @@ typedef enum { #define phpstr_new() phpstr_init(NULL) #define phpstr_init(b) phpstr_init_ex(b, 0, 0) #define phpstr_clone(phpstr_pointer) phpstr_init_ex(NULL, (phpstr_pointer)->size, 0) -PHPSTR_API phpstr *phpstr_init_ex(phpstr *buf, size_t chunk_size, zend_bool pre_alloc); +PHPSTR_API phpstr *phpstr_init_ex(phpstr *buf, size_t chunk_size, int pre_alloc); /* create a phpstr from a zval or c-string */ #define phpstr_from_zval(z) phpstr_from_string(Z_STRVAL(z), Z_STRLEN(z)) @@ -151,6 +155,12 @@ PHPSTR_API void phpstr_dtor(phpstr *buf); /* free a phpstr object completely */ PHPSTR_API void phpstr_free(phpstr **buf); +/* stores data in a phpstr until it reaches chunk_size */ +PHPSTR_API size_t phpstr_chunk_buffer(phpstr **s, const char *data, size_t data_len, char **chunk, size_t chunk_size); + +/* wrapper around phpstr_chunk_buffer, which passes available chunks to passthru() */ +PHPSTR_API void phpstr_chunked_output(phpstr **s, const char *data, size_t data_len, size_t chunk_size, void (*passthru)(const char *, size_t TSRMLS_DC) TSRMLS_DC); + #endif