From f08041f0eb8512304584b583073508629a934c88 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sun, 26 Oct 2008 20:38:44 +0100 Subject: input_stream: added struct input_plugin Instead of managing a set of method pointers in each input_stream struct, move these into the new input_plugin struct. Each input_stream has only a pointer to the plugin struct. Pointers to all implementations are kept in the array "input_plugins". --- src/input_stream.h | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) (limited to 'src/input_stream.h') diff --git a/src/input_stream.h b/src/input_stream.h index fbd8eb3f..b2887e10 100644 --- a/src/input_stream.h +++ b/src/input_stream.h @@ -20,8 +20,23 @@ #define INPUT_STREAM_H #include +#include + +struct input_stream; + +struct input_plugin { + bool (*open)(struct input_stream *is, const char *url); + int (*close)(struct input_stream *is); + + int (*buffer)(struct input_stream *is); + size_t (*read)(struct input_stream *is, void *ptr, size_t size); + int (*eof)(struct input_stream *is); + int (*seek)(struct input_stream *is, long offset, int whence); +}; struct input_stream { + const struct input_plugin *plugin; + int ready; int error; @@ -30,12 +45,6 @@ struct input_stream { char *mime; int seekable; - int (*seekFunc)(struct input_stream *is, long offset, int whence); - size_t (*readFunc)(struct input_stream *is, void *ptr, size_t size); - int (*closeFunc)(struct input_stream *is); - int (*atEOFFunc)(struct input_stream *is); - int (*bufferFunc)(struct input_stream *is); - void *data; char *meta_name; char *meta_title; -- cgit v1.2.3