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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user