diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2016-02-12 16:19:45 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2016-02-12 16:19:45 +0100 |
commit | 16e82693f89d2b1d176fb7b2f5718d5270ad0239 (patch) | |
tree | 7ac2a3b3c4280d49f1e67a3f95847a9a2621e950 | |
parent | 91d33255793adf58816308c97559c22d0c26cc78 (diff) | |
download | mupdf-16e82693f89d2b1d176fb7b2f5718d5270ad0239.tar.xz |
Inline fz_write function.
-rw-r--r-- | include/mupdf/fitz/output.h | 34 | ||||
-rw-r--r-- | 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) @@ -49,13 +57,22 @@ 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. fz_write_byte: Write a single byte. 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); -} |