From 16e82693f89d2b1d176fb7b2f5718d5270ad0239 Mon Sep 17 00:00:00 2001 From: Tor Andersson Date: Fri, 12 Feb 2016 16:19:45 +0100 Subject: Inline fz_write function. --- include/mupdf/fitz/output.h | 34 ++++++++++++++++++++++++---------- source/fitz/output.c | 35 ++++++----------------------------- 2 files changed, 30 insertions(+), 39 deletions(-) diff --git a/include/mupdf/fitz/output.h b/include/mupdf/fitz/output.h index 449b76a6..e7179a3b 100644 --- a/include/mupdf/fitz/output.h +++ b/include/mupdf/fitz/output.h @@ -12,6 +12,15 @@ */ typedef struct fz_output_s fz_output; +struct fz_output_s +{ + void *opaque; + void (*write)(fz_context *, void *opaque, const void *, int n); + void (*seek)(fz_context *, void *opaque, fz_off_t off, int whence); + fz_off_t (*tell)(fz_context *, void *opaque); + void (*close)(fz_context *, void *opaque); +}; + /* fz_new_output_with_file: Open an output stream that writes to a FILE *. fz_new_output_with_path: Open an output stream that writes to a file. @@ -31,7 +40,6 @@ fz_output *fz_new_output_with_buffer(fz_context *, fz_buffer *); */ void fz_printf(fz_context *ctx, fz_output *out, const char *fmt, ...); void fz_vprintf(fz_context *ctx, fz_output *out, const char *fmt, va_list ap); -int fz_write(fz_context *, fz_output *out, const void *data, int len); #define fz_puts(C,O,S) fz_write(C, O, (S), strlen(S)) #define fz_putc(C,O,B) fz_write_byte(C, O, B) #define fz_putrune(C,O,R) fz_write_rune(C, O, R) @@ -48,6 +56,15 @@ fz_off_t fz_tell_output(fz_context *ctx, fz_output *out); */ void fz_drop_output(fz_context *, fz_output *); +/* + fz_write: Write data to output. +*/ + +static inline void fz_write(fz_context *ctx, fz_output *out, const void *data, int size) +{ + out->write(ctx, out->opaque, data, size); +} + /* fz_write_int32be: Write a big-endian 32-bit binary integer. fz_write_int32le: Write a little-endian 32-bit binary integer. @@ -55,7 +72,7 @@ void fz_drop_output(fz_context *, fz_output *); fz_write_rune: Write a UTF-8 encoded unicode character. */ -static inline int fz_write_int32be(fz_context *ctx, fz_output *out, int x) +static inline void fz_write_int32be(fz_context *ctx, fz_output *out, int x) { char data[4]; @@ -64,10 +81,10 @@ static inline int fz_write_int32be(fz_context *ctx, fz_output *out, int x) data[2] = x>>8; data[3] = x; - return fz_write(ctx, out, data, 4); + fz_write(ctx, out, data, 4); } -static inline int fz_write_int32le(fz_context *ctx, fz_output *out, int x) +static inline void fz_write_int32le(fz_context *ctx, fz_output *out, int x) { char data[4]; @@ -76,20 +93,17 @@ static inline int fz_write_int32le(fz_context *ctx, fz_output *out, int x) data[2] = x>>16; data[3] = x>>24; - return fz_write(ctx, out, data, 4); + fz_write(ctx, out, data, 4); } -static inline void fz_write_byte(fz_context *ctx, fz_output *out, int x) +static inline void fz_write_byte(fz_context *ctx, fz_output *out, unsigned char x) { - char data = x; - - fz_write(ctx, out, &data, 1); + fz_write(ctx, out, &x, 1); } static inline void fz_write_rune(fz_context *ctx, fz_output *out, int rune) { char data[10]; - fz_write(ctx, out, data, fz_runetochar(data, rune)); } diff --git a/source/fitz/output.c b/source/fitz/output.c index 3f2dde29..0dd0eb04 100644 --- a/source/fitz/output.c +++ b/source/fitz/output.c @@ -1,40 +1,25 @@ #include "mupdf/fitz.h" -struct fz_output_s -{ - void *opaque; - int (*write)(fz_context *, void *opaque, const void *, int n); - void (*seek)(fz_context *, void *opaque, fz_off_t off, int whence); - fz_off_t (*tell)(fz_context *, void *opaque); - void (*close)(fz_context *, void *opaque); -}; - -static int +static void file_write(fz_context *ctx, void *opaque, const void *buffer, int count) { FILE *file = opaque; size_t n; if (count < 0) - return 0; + return; if (count == 1) { int x = putc(((unsigned char*)buffer)[0], file); - if (x == EOF) - { - if (ferror(file)) - fz_throw(ctx, FZ_ERROR_GENERIC, "cannot fwrite: %s", strerror(errno)); - else - return 0; - } - return 1; + if (x == EOF && ferror(file)) + fz_throw(ctx, FZ_ERROR_GENERIC, "cannot fwrite: %s", strerror(errno)); + return; } n = fwrite(buffer, 1, count, file); if (n < (size_t)count && ferror(file)) fz_throw(ctx, FZ_ERROR_GENERIC, "cannot fwrite: %s", strerror(errno)); - return n; } static void @@ -98,12 +83,11 @@ fz_new_output_with_path(fz_context *ctx, const char *filename, int append) return out; } -static int +static void buffer_write(fz_context *ctx, void *opaque, const void *data, int len) { fz_buffer *buffer = opaque; fz_write_buffer(ctx, buffer, data, len); - return len; } static void @@ -202,10 +186,3 @@ fz_printf(fz_context *ctx, fz_output *out, const char *fmt, ...) fz_vprintf(ctx, out, fmt, args); va_end(args); } - -int -fz_write(fz_context *ctx, fz_output *out, const void *data, int len) -{ - if (!out) return 0; - return out->write(ctx, out->opaque, data, len); -} -- cgit v1.2.3