diff options
author | Max Kellermann <max@duempel.org> | 2008-10-26 20:38:44 +0100 |
---|---|---|
committer | Max Kellermann <max@duempel.org> | 2008-10-26 20:38:44 +0100 |
commit | f08041f0eb8512304584b583073508629a934c88 (patch) | |
tree | 6a0d548ac1ee174b5505abe621fcb6f67afc688b /src/input_stream.h | |
parent | dbc7e9ba2f57c71a9b73cd6d035ba2906190be72 (diff) | |
download | mpd-f08041f0eb8512304584b583073508629a934c88.tar.gz mpd-f08041f0eb8512304584b583073508629a934c88.tar.xz mpd-f08041f0eb8512304584b583073508629a934c88.zip |
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".
Diffstat (limited to 'src/input_stream.h')
-rw-r--r-- | src/input_stream.h | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/input_stream.h b/src/input_stream.h index fbd8eb3fd..b2887e10d 100644 --- a/src/input_stream.h +++ b/src/input_stream.h @@ -20,8 +20,23 @@ #define INPUT_STREAM_H #include <stddef.h> +#include <stdbool.h> + +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; |