Add binary compatibility to PHYSFS_Io.

This commit is contained in:
Ryan C. Gordon 2012-03-25 17:18:24 -04:00
parent a7383c295f
commit 6222a4a92d
7 changed files with 37 additions and 24 deletions

View File

@ -526,6 +526,7 @@ static PHYSFS_sint64 ISO9660_length(PHYSFS_Io *io)
static const PHYSFS_Io ISO9660_Io =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
ISO9660_read,
ISO9660_write,
ISO9660_seek,
@ -533,8 +534,7 @@ static const PHYSFS_Io ISO9660_Io =
ISO9660_length,
ISO9660_duplicate,
ISO9660_flush,
ISO9660_destroy,
NULL
ISO9660_destroy
};

View File

@ -427,6 +427,7 @@ static void LZMA_destroy(PHYSFS_Io *io)
static const PHYSFS_Io LZMA_Io =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
LZMA_read,
LZMA_write,
LZMA_seek,
@ -434,8 +435,7 @@ static const PHYSFS_Io LZMA_Io =
LZMA_length,
LZMA_duplicate,
LZMA_flush,
LZMA_destroy,
NULL
LZMA_destroy
};

View File

@ -133,6 +133,7 @@ static void UNPK_destroy(PHYSFS_Io *io)
static const PHYSFS_Io UNPK_Io =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
UNPK_read,
UNPK_write,
UNPK_seek,
@ -140,8 +141,7 @@ static const PHYSFS_Io UNPK_Io =
UNPK_length,
UNPK_duplicate,
UNPK_flush,
UNPK_destroy,
NULL
UNPK_destroy
};

View File

@ -394,6 +394,7 @@ static void ZIP_destroy(PHYSFS_Io *io)
static const PHYSFS_Io ZIP_Io =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
ZIP_read,
ZIP_write,
ZIP_seek,
@ -401,8 +402,7 @@ static const PHYSFS_Io ZIP_Io =
ZIP_length,
ZIP_duplicate,
ZIP_flush,
ZIP_destroy,
NULL
ZIP_destroy
};

View File

@ -174,6 +174,7 @@ static void nativeIo_destroy(PHYSFS_Io *io)
static const PHYSFS_Io __PHYSFS_nativeIoInterface =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
nativeIo_read,
nativeIo_write,
nativeIo_seek,
@ -181,8 +182,7 @@ static const PHYSFS_Io __PHYSFS_nativeIoInterface =
nativeIo_length,
nativeIo_duplicate,
nativeIo_flush,
nativeIo_destroy,
NULL
nativeIo_destroy
};
PHYSFS_Io *__PHYSFS_createNativeIo(const char *path, const int mode)
@ -369,6 +369,7 @@ static void memoryIo_destroy(PHYSFS_Io *io)
static const PHYSFS_Io __PHYSFS_memoryIoInterface =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
memoryIo_read,
memoryIo_write,
memoryIo_seek,
@ -376,8 +377,7 @@ static const PHYSFS_Io __PHYSFS_memoryIoInterface =
memoryIo_length,
memoryIo_duplicate,
memoryIo_flush,
memoryIo_destroy,
NULL
memoryIo_destroy
};
PHYSFS_Io *__PHYSFS_createMemoryIo(const void *buf, PHYSFS_uint64 len,
@ -512,6 +512,7 @@ static void handleIo_destroy(PHYSFS_Io *io)
static const PHYSFS_Io __PHYSFS_handleIoInterface =
{
CURRENT_PHYSFS_IO_API_VERSION, NULL,
handleIo_read,
handleIo_write,
handleIo_seek,
@ -519,8 +520,7 @@ static const PHYSFS_Io __PHYSFS_handleIoInterface =
handleIo_length,
handleIo_duplicate,
handleIo_flush,
handleIo_destroy,
NULL
handleIo_destroy
};
static PHYSFS_Io *__PHYSFS_createHandleIo(PHYSFS_File *f)
@ -1494,6 +1494,7 @@ int PHYSFS_mountIo(PHYSFS_Io *io, const char *fname,
const char *mountPoint, int appendToPath)
{
BAIL_IF_MACRO(!io, PHYSFS_ERR_INVALID_ARGUMENT, 0);
BAIL_IF_MACRO(io->version != 0, PHYSFS_ERR_UNSUPPORTED, 0);
return doMount(io, fname, mountPoint, appendToPath);
} /* PHYSFS_mountIo */

View File

@ -2809,6 +2809,26 @@ PHYSFS_DECL PHYSFS_sint64 PHYSFS_writeBytes(PHYSFS_File *handle,
*/
typedef struct PHYSFS_Io
{
/**
* \brief Binary compatibility information.
*
* This must be set to zero at this time. Future versions of this
* struct will increment this field, so we know what a given
* implementation supports. We'll presumably keep supporting older
* versions as we offer new features, though.
*/
PHYSFS_uint32 version;
/**
* \brief Instance data for this struct.
*
* Each instance has a pointer associated with it that can be used to
* store anything it likes. This pointer is per-instance of the stream,
* so presumably it will change when calling duplicate(). This can be
* deallocated during the destroy() method.
*/
void *opaque;
/**
* \brief Read more data.
*
@ -2936,16 +2956,6 @@ typedef struct PHYSFS_Io
* \param s The i/o instance to destroy.
*/
void (*destroy)(struct PHYSFS_Io *io);
/**
* \brief Instance data for this struct.
*
* Each instance has a pointer associated with it that can be used to
* store anything it likes. This pointer is per-instance of the stream,
* so presumably it will change when calling duplicate(). This can be
* deallocated during the destroy() method.
*/
void *opaque;
} PHYSFS_Io;

View File

@ -118,6 +118,8 @@ void __PHYSFS_smallFree(void *ptr);
#define PHYSFS_SUPPORTS_ISO9660 0
#endif
/* The latest supported PHYSFS_Io::version value. */
#define CURRENT_PHYSFS_IO_API_VERSION 0
/* Opaque data for file and dir handlers... */
typedef void PHYSFS_Dir;