aboutsummaryrefslogtreecommitdiff
path: root/src/dummy/File.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/dummy/File.c')
-rw-r--r--src/dummy/File.c200
1 files changed, 200 insertions, 0 deletions
diff --git a/src/dummy/File.c b/src/dummy/File.c
new file mode 100644
index 0000000..2cb1cd6
--- /dev/null
+++ b/src/dummy/File.c
@@ -0,0 +1,200 @@
+#include <BH/IO.h>
+
+typedef struct BH_File
+{
+ int implement;
+ int me;
+} BH_File;
+
+
+static int BH_FileInfo(BH_File *file,
+ size_t *size,
+ const char **name);
+
+
+static int BH_FileInit(BH_File *file,
+ const char *path);
+
+
+static int BH_FileDestroy(BH_File *file);
+
+
+static int BH_FileOpen(BH_File *file,
+ int *mode);
+
+
+static int BH_FileClose(BH_File *file);
+
+
+static int BH_FileRead(BH_File *file,
+ char *data,
+ size_t *size);
+
+
+static int BH_FileWrite(BH_File *file,
+ const char *data,
+ size_t *size);
+
+
+static int BH_FilePeek(BH_File* file,
+ char *data,
+ size_t *size);
+
+
+static int BH_FileFlush(BH_File *file);
+
+
+static int BH_FileSeek(BH_File *file,
+ int64_t *pos,
+ int *dir);
+
+
+static int BH_FileTell(BH_File *file,
+ int64_t *pos);
+
+
+static int BH_FileSize(BH_File *file,
+ int64_t *size);
+
+
+static int BH_FileFlags(BH_File *file);
+
+
+static int BH_FileClear(BH_File *file);
+
+
+static int BH_FileInfo(BH_File *file,
+ size_t *size,
+ const char **name)
+{
+ static const char classname[] = BH_FILE_CLASSNAME;
+
+ if (size)
+ *size = sizeof(*file);
+ if (name)
+ *name = classname;
+
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileInit(BH_File *file,
+ const char *path)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileDestroy(BH_File *file)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileOpen(BH_File *file,
+ int *mode)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileClose(BH_File *file)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileRead(BH_File *file,
+ char *data,
+ size_t *size)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileWrite(BH_File *file,
+ const char *data,
+ size_t *size)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FilePeek(BH_File *file,
+ char *data,
+ size_t *size)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileFlush(BH_File *file)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileSeek(BH_File *file,
+ int64_t *pos,
+ int *dir)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileTell(BH_File *file,
+ int64_t *pos)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileSize(BH_File *file,
+ int64_t *size)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileFlags(BH_File *file)
+{
+ return BH_IO_FLAG_ERROR;
+}
+
+
+static int BH_FileClear(BH_File *file)
+{
+ return BH_NOIMPL;
+}
+
+
+static int BH_FileCallback(BH_File *file,
+ int type,
+ void *arg1,
+ void *arg2)
+{
+ switch (type)
+ {
+ case BH_IO_INFO_CB: return BH_FileInfo(file, (size_t *)arg1, (const char **)arg2);
+ case BH_IO_INIT_CB: return BH_FileInit(file, (const char *)arg1);
+ case BH_IO_DESTROY_CB: return BH_FileDestroy(file);
+ case BH_IO_OPEN_CB: return BH_FileOpen(file, (int *)arg1);
+ case BH_IO_CLOSE_CB: return BH_FileClose(file);
+ case BH_IO_READ_CB: return BH_FileRead(file, (char *)arg1, (size_t *)arg2);
+ case BH_IO_WRITE_CB: return BH_FileWrite(file, (const char *)arg1, (size_t *)arg2);
+ case BH_IO_PEEK_CB: return BH_FilePeek(file, (char *)arg1, (size_t *)arg2);
+ case BH_IO_FLUSH_CB: return BH_FileFlush(file);
+ case BH_IO_SEEK_CB: return BH_FileSeek(file, (int64_t *)arg1, (int *)arg2);
+ case BH_IO_TELL_CB: return BH_FileTell(file, (int64_t *)arg1);
+ case BH_IO_SIZE_CB: return BH_FileSize(file, (int64_t *)arg1);
+ case BH_IO_FLAGS_CB: return BH_FileFlags(file);
+ case BH_IO_CLEAR_CB: return BH_FileClear(file);
+ default: return BH_NOIMPL;
+ }
+}
+
+
+BH_IO *BH_FileNew(const char *path)
+{
+ return BH_IONew((BH_IOCallback)BH_FileCallback, (void *)path);
+}