bprint: add av_bprint_init_for_buffer().

pull/59/head
Nicolas George 13 years ago
parent 9148ae5b91
commit b3e2bb08a9
  1. 14
      libavutil/bprint.c
  2. 11
      libavutil/bprint.h

@ -78,6 +78,15 @@ void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
av_bprint_alloc(buf, size_init - 1); av_bprint_alloc(buf, size_init - 1);
} }
void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size)
{
buf->str = buffer;
buf->len = 0;
buf->size = size;
buf->size_max = size;
*buf->str = 0;
}
void av_bprintf(AVBPrint *buf, const char *fmt, ...) void av_bprintf(AVBPrint *buf, const char *fmt, ...)
{ {
unsigned room; unsigned room;
@ -178,6 +187,7 @@ static void bprint_pascal(AVBPrint *b, unsigned size)
int main(void) int main(void)
{ {
AVBPrint b; AVBPrint b;
char buf[256];
av_bprint_init(&b, 0, -1); av_bprint_init(&b, 0, -1);
bprint_pascal(&b, 5); bprint_pascal(&b, 5);
@ -208,6 +218,10 @@ int main(void)
bprint_pascal(&b, 25); bprint_pascal(&b, 25);
printf("Long text count only buffer: %zu/%u\n", strlen(b.str), b.len); printf("Long text count only buffer: %zu/%u\n", strlen(b.str), b.len);
av_bprint_init_for_buffer(&b, buf, sizeof(buf));
bprint_pascal(&b, 25);
printf("Long text count only buffer: %zu/%u\n", strlen(buf), b.len);
return 0; return 0;
} }

@ -99,6 +99,17 @@ void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max);
#define AV_BPRINT_SIZE_AUTOMATIC 1 #define AV_BPRINT_SIZE_AUTOMATIC 1
#define AV_BPRINT_SIZE_COUNT_ONLY 0 #define AV_BPRINT_SIZE_COUNT_ONLY 0
/**
* Init a print buffer using a pre-existing buffer.
*
* The buffer will not be reallocated.
*
* @param buf buffer structure to init
* @param buffer byte buffer to use for the string data
* @param size size of buffer
*/
void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size);
/** /**
* Append a formated string to a print buffer. * Append a formated string to a print buffer.
*/ */

Loading…
Cancel
Save