Create nbio_intf.c
This commit is contained in:
parent
81e543a4c9
commit
7a772b9cd4
|
@ -184,6 +184,7 @@ OBJ += frontend/frontend.o \
|
||||||
setting_list.o \
|
setting_list.o \
|
||||||
list_special.o \
|
list_special.o \
|
||||||
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_stdio.o \
|
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_stdio.o \
|
||||||
|
$(LIBRETRO_COMM_DIR)/file/nbio/nbio_intf.o \
|
||||||
$(LIBRETRO_COMM_DIR)/file/file_path.o \
|
$(LIBRETRO_COMM_DIR)/file/file_path.o \
|
||||||
file_path_special.o \
|
file_path_special.o \
|
||||||
file_path_str.o \
|
file_path_str.o \
|
||||||
|
|
|
@ -822,6 +822,7 @@ FILE
|
||||||
#include "../list_special.c"
|
#include "../list_special.c"
|
||||||
#include "../libretro-common/string/stdstring.c"
|
#include "../libretro-common/string/stdstring.c"
|
||||||
#include "../libretro-common/file/nbio/nbio_stdio.c"
|
#include "../libretro-common/file/nbio/nbio_stdio.c"
|
||||||
|
#include "../libretro-common/file/nbio/nbio_intf.c"
|
||||||
|
|
||||||
/*============================================================
|
/*============================================================
|
||||||
MESSAGE
|
MESSAGE
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
#include <file/nbio.h>
|
||||||
|
|
||||||
|
extern nbio_intf_t nbio_stdio;
|
||||||
|
|
||||||
|
static nbio_intf_t *internal_nbio = &nbio_stdio;
|
||||||
|
|
||||||
|
struct nbio_t* nbio_open(const char * filename, unsigned mode)
|
||||||
|
{
|
||||||
|
return internal_nbio->open(filename, mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nbio_begin_read(struct nbio_t* handle)
|
||||||
|
{
|
||||||
|
internal_nbio->begin_read(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nbio_begin_write(struct nbio_t* handle)
|
||||||
|
{
|
||||||
|
internal_nbio->begin_write(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool nbio_iterate(struct nbio_t* handle)
|
||||||
|
{
|
||||||
|
return internal_nbio->iterate(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nbio_resize(struct nbio_t* handle, size_t len)
|
||||||
|
{
|
||||||
|
internal_nbio->resize(handle, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void *nbio_get_ptr(struct nbio_t* handle, size_t* len)
|
||||||
|
{
|
||||||
|
return internal_nbio->get_ptr(handle, len);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nbio_cancel(struct nbio_t* handle)
|
||||||
|
{
|
||||||
|
internal_nbio->cancel(handle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void nbio_free(struct nbio_t* handle)
|
||||||
|
{
|
||||||
|
internal_nbio->free(handle);
|
||||||
|
}
|
|
@ -35,7 +35,7 @@ static const char * modes[]={ "rb", "wb", "r+b", "rb", "wb", "r+b" };
|
||||||
static const wchar_t * modes[]={ L"rb", L"wb", L"r+b", L"rb", L"wb", L"r+b" };
|
static const wchar_t * modes[]={ L"rb", L"wb", L"r+b", L"rb", L"wb", L"r+b" };
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
struct nbio_t* nbio_open(const char * filename, unsigned mode)
|
static struct nbio_t* nbio_stdio_open(const char * filename, unsigned mode)
|
||||||
{
|
{
|
||||||
void *buf = NULL;
|
void *buf = NULL;
|
||||||
struct nbio_t* handle = NULL;
|
struct nbio_t* handle = NULL;
|
||||||
|
@ -92,7 +92,7 @@ error:
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nbio_begin_read(struct nbio_t* handle)
|
static void nbio_stdio_begin_read(struct nbio_t* handle)
|
||||||
{
|
{
|
||||||
if (!handle)
|
if (!handle)
|
||||||
return;
|
return;
|
||||||
|
@ -109,7 +109,7 @@ void nbio_begin_read(struct nbio_t* handle)
|
||||||
handle->progress = 0;
|
handle->progress = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nbio_begin_write(struct nbio_t* handle)
|
static void nbio_stdio_begin_write(struct nbio_t* handle)
|
||||||
{
|
{
|
||||||
if (!handle)
|
if (!handle)
|
||||||
return;
|
return;
|
||||||
|
@ -125,7 +125,7 @@ void nbio_begin_write(struct nbio_t* handle)
|
||||||
handle->progress = 0;
|
handle->progress = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool nbio_iterate(struct nbio_t* handle)
|
static bool nbio_stdio_iterate(struct nbio_t* handle)
|
||||||
{
|
{
|
||||||
size_t amount = 65536;
|
size_t amount = 65536;
|
||||||
|
|
||||||
|
@ -167,7 +167,7 @@ bool nbio_iterate(struct nbio_t* handle)
|
||||||
return (handle->op < 0);
|
return (handle->op < 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
void nbio_resize(struct nbio_t* handle, size_t len)
|
static void nbio_stdio_resize(struct nbio_t* handle, size_t len)
|
||||||
{
|
{
|
||||||
if (!handle)
|
if (!handle)
|
||||||
return;
|
return;
|
||||||
|
@ -189,7 +189,7 @@ void nbio_resize(struct nbio_t* handle, size_t len)
|
||||||
handle->progress = handle->len;
|
handle->progress = handle->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* nbio_get_ptr(struct nbio_t* handle, size_t* len)
|
static void *nbio_stdio_get_ptr(struct nbio_t* handle, size_t* len)
|
||||||
{
|
{
|
||||||
if (!handle)
|
if (!handle)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -200,7 +200,7 @@ void* nbio_get_ptr(struct nbio_t* handle, size_t* len)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nbio_cancel(struct nbio_t* handle)
|
static void nbio_stdio_cancel(struct nbio_t* handle)
|
||||||
{
|
{
|
||||||
if (!handle)
|
if (!handle)
|
||||||
return;
|
return;
|
||||||
|
@ -209,7 +209,7 @@ void nbio_cancel(struct nbio_t* handle)
|
||||||
handle->progress = handle->len;
|
handle->progress = handle->len;
|
||||||
}
|
}
|
||||||
|
|
||||||
void nbio_free(struct nbio_t* handle)
|
static void nbio_stdio_free(struct nbio_t* handle)
|
||||||
{
|
{
|
||||||
if (!handle)
|
if (!handle)
|
||||||
return;
|
return;
|
||||||
|
@ -225,3 +225,15 @@ void nbio_free(struct nbio_t* handle)
|
||||||
handle->data = NULL;
|
handle->data = NULL;
|
||||||
free(handle);
|
free(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
nbio_intf_t nbio_stdio = {
|
||||||
|
nbio_stdio_open,
|
||||||
|
nbio_stdio_begin_read,
|
||||||
|
nbio_stdio_begin_write,
|
||||||
|
nbio_stdio_iterate,
|
||||||
|
nbio_stdio_resize,
|
||||||
|
nbio_stdio_get_ptr,
|
||||||
|
nbio_stdio_cancel,
|
||||||
|
nbio_stdio_free,
|
||||||
|
"nbio_stdio",
|
||||||
|
};
|
||||||
|
|
|
@ -53,6 +53,28 @@ RETRO_BEGIN_DECLS
|
||||||
|
|
||||||
struct nbio_t;
|
struct nbio_t;
|
||||||
|
|
||||||
|
typedef struct nbio_intf
|
||||||
|
{
|
||||||
|
struct nbio_t* (*open)(const char * filename, unsigned mode);
|
||||||
|
|
||||||
|
void (*begin_read)(struct nbio_t* handle);
|
||||||
|
|
||||||
|
void (*begin_write)(struct nbio_t* handle);
|
||||||
|
|
||||||
|
bool (*iterate)(struct nbio_t* handle);
|
||||||
|
|
||||||
|
void (*resize)(struct nbio_t* handle, size_t len);
|
||||||
|
|
||||||
|
void *(*get_ptr)(struct nbio_t* handle, size_t* len);
|
||||||
|
|
||||||
|
void (*cancel)(struct nbio_t* handle);
|
||||||
|
|
||||||
|
void (*free)(struct nbio_t* handle);
|
||||||
|
|
||||||
|
/* Human readable string. */
|
||||||
|
const char *ident;
|
||||||
|
} nbio_intf_t;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Creates an nbio structure for performing the given operation on the given file.
|
* Creates an nbio structure for performing the given operation on the given file.
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue