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".
This commit is contained in:
Max Kellermann
2008-10-26 20:38:44 +01:00
parent dbc7e9ba2f
commit f08041f0eb
6 changed files with 63 additions and 56 deletions

View File

@@ -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;