Skip to content

Commit

Permalink
Refactor|LumpFile: Dumped LumpFile's now redundant C wrapper API
Browse files Browse the repository at this point in the history
  • Loading branch information
danij-deng committed Oct 6, 2012
1 parent d0e8ca2 commit eea0e59
Show file tree
Hide file tree
Showing 4 changed files with 7 additions and 167 deletions.
6 changes: 3 additions & 3 deletions doomsday/engine/portable/include/fs_main.h
Expand Up @@ -41,9 +41,9 @@
#ifndef LIBDENG_FILESYS_MAIN_H
#define LIBDENG_FILESYS_MAIN_H

#include "zipfile.h"
#include "wadfile.h"
#include "lumpfile.h"
#include "abstractfile.h"
#include "dfile.h"
#include "lumpinfo.h"
#include "pathdirectory.h"

#ifdef __cplusplus
Expand Down
55 changes: 3 additions & 52 deletions doomsday/engine/portable/include/lumpfile.h
Expand Up @@ -33,21 +33,11 @@
#ifndef LIBDENG_FILESYS_LUMPFILE_H
#define LIBDENG_FILESYS_LUMPFILE_H

#include "lumpinfo.h"
#include "abstractfile.h"

#ifdef __cplusplus
extern "C" {
#endif

struct lumpdirectory_s;
struct pathdirectorynode_s;

#ifdef __cplusplus
} // extern "C"
#endif
#include "abstractfile.h"
#include "lumpinfo.h"

#ifdef __cplusplus
namespace de {

class LumpDirectory;
Expand Down Expand Up @@ -170,47 +160,8 @@ class LumpFile : public AbstractFile
extern "C" {
#endif // __cplusplus

/**
* C wrapper API:
*/

struct lumpfile_s; // The lumpfile instance (opaque)
typedef struct lumpfile_s LumpFile;

/**
* Constructs a new LumpFile instance which must be destroyed with LumpFile_Delete()
* once it is no longer needed.
*
* @param file Virtual file handle to the underlying file resource.
* @param path Virtual file system path to associate with the resultant LumpFile.
* @param info File info descriptor for the resultant LumpFile. A copy is made.
*/
LumpFile* LumpFile_New(DFile* file, char const* path, LumpInfo const* info);

/**
* Destroy LumpFile instance @a lump.
*/
void LumpFile_Delete(LumpFile* lump);

struct pathdirectorynode_s* LumpFile_LumpDirectoryNode(LumpFile* lump, int lumpIdx);

AutoStr* LumpFile_ComposeLumpPath(LumpFile* lump, int lumpIdx, char delimiter);

LumpInfo const* LumpFile_LumpInfo(LumpFile* lump, int lumpIdx);

int LumpFile_LumpCount(LumpFile* lump);

size_t LumpFile_ReadLump2(LumpFile* lump, int lumpIdx, uint8_t* buffer, boolean tryCache);
size_t LumpFile_ReadLump(LumpFile* lump, int lumpIdx, uint8_t* buffer/*, tryCache = true*/);

size_t LumpFile_ReadLumpSection2(LumpFile* lump, int lumpIdx, uint8_t* buffer, size_t startOffset, size_t length, boolean tryCache);
size_t LumpFile_ReadLumpSection(LumpFile* lump, int lumpIdx, uint8_t* buffer, size_t startOffset, size_t length/*, tryCache = true*/);

uint8_t const* LumpFile_CacheLump(LumpFile* lump, int lumpIdx);

void LumpFile_UnlockLump(LumpFile* lump, int lumpIdx);

int LumpFile_PublishLumpsToDirectory(LumpFile* lump, struct lumpdirectory_s* directory);
//typedef struct lumpfile_s LumpFile;

#ifdef __cplusplus
} // extern "C"
Expand Down
1 change: 1 addition & 0 deletions doomsday/engine/portable/src/dd_games.cpp
Expand Up @@ -26,6 +26,7 @@
#include "dd_games.h"

#include "abstractresource.h"
#include "zipfile.h"

using de::FS;
using de::DFile;
Expand Down
112 changes: 0 additions & 112 deletions doomsday/engine/portable/src/lumpfile.cpp
Expand Up @@ -31,9 +31,7 @@
#include <de/memory.h>

using namespace de;
using de::AbstractFile;
using de::DFile;
using de::LumpFile;
using de::PathDirectoryNode;

LumpFile::LumpFile(DFile& file, char const* path, LumpInfo const& info)
Expand Down Expand Up @@ -98,113 +96,3 @@ int LumpFile::publishLumpsToDirectory(LumpDirectory* directory)
}
return 1;
}

/**
* C Wrapper API:
*/

#define TOINTERNAL(inst) \
(inst) != 0? reinterpret_cast<LumpFile*>(inst) : NULL

#define TOINTERNAL_CONST(inst) \
(inst) != 0? reinterpret_cast<LumpFile const*>(inst) : NULL

#define SELF(inst) \
DENG2_ASSERT(inst); \
LumpFile* self = TOINTERNAL(inst)

#define SELF_CONST(inst) \
DENG2_ASSERT(inst); \
LumpFile const* self = TOINTERNAL_CONST(inst)

struct lumpfile_s* LumpFile_New(struct dfile_s* hndl, char const* path, LumpInfo const* info)
{
if(!info) LegacyCore_FatalError("LumpFile_New: Received invalid LumpInfo (=NULL).");
try
{
return reinterpret_cast<struct lumpfile_s*>(new LumpFile(*reinterpret_cast<DFile*>(hndl), path, *info));
}
catch(Error& er)
{
QString msg = QString("LumpFile_New: Failed to instantiate new LumpFile. ") + er.asText();
LegacyCore_FatalError(msg.toUtf8().constData());
exit(1); // Unreachable.
}
}

void LumpFile_Delete(struct lumpfile_s* lump)
{
if(lump)
{
SELF(lump);
delete self;
}
}

struct pathdirectorynode_s* LumpFile_LumpDirectoryNode(struct lumpfile_s* lump, int lumpIdx)
{
SELF(lump);
return reinterpret_cast<struct pathdirectorynode_s*>( self->lumpDirectoryNode(lumpIdx) );
}

AutoStr* LumpFile_ComposeLumpPath(struct lumpfile_s* lump, int lumpIdx, char delimiter)
{
SELF(lump);
return self->composeLumpPath(lumpIdx, delimiter);
}

LumpInfo const* LumpFile_LumpInfo(struct lumpfile_s* lump, int lumpIdx)
{
SELF(lump);
return self->lumpInfo(lumpIdx);
}

int LumpFile_LumpCount(struct lumpfile_s* lump)
{
SELF(lump);
return self->lumpCount();
}

size_t LumpFile_ReadLumpSection2(struct lumpfile_s* lump, int lumpIdx, uint8_t* buffer,
size_t startOffset, size_t length, boolean tryCache)
{
SELF(lump);
return self->readLump(lumpIdx, buffer, startOffset, length, CPP_BOOL(tryCache));
}

size_t LumpFile_ReadLumpSection(struct lumpfile_s* lump, int lumpIdx, uint8_t* buffer,
size_t startOffset, size_t length)
{
SELF(lump);
return self->readLump(lumpIdx, buffer, startOffset, length);
}

size_t LumpFile_ReadLump2(struct lumpfile_s* lump, int lumpIdx, uint8_t* buffer, boolean tryCache)
{
SELF(lump);
return self->readLump(lumpIdx, buffer, CPP_BOOL(tryCache));
}

size_t LumpFile_ReadLump(struct lumpfile_s* lump, int lumpIdx, uint8_t* buffer)
{
SELF(lump);
return self->readLump(lumpIdx, buffer);
}

uint8_t const* LumpFile_CacheLump(struct lumpfile_s* lump, int lumpIdx)
{
SELF(lump);
return self->cacheLump(lumpIdx);
}

void LumpFile_UnlockLump(struct lumpfile_s* lump, int lumpIdx)
{
SELF(lump);
self->unlockLump(lumpIdx);
}

int LumpFile_PublishLumpsToDirectory(struct lumpfile_s* lump, struct lumpdirectory_s* directory)
{
SELF(lump);
return self->publishLumpsToDirectory(reinterpret_cast<LumpDirectory*>(directory));
}

0 comments on commit eea0e59

Please sign in to comment.