Skip to content

Commit

Permalink
Refactor|libdoomsday: Encapsulated the DED parser into its own class
Browse files Browse the repository at this point in the history
  • Loading branch information
skyjake committed May 5, 2014
1 parent ef5c12b commit c4fef0b
Show file tree
Hide file tree
Showing 4 changed files with 2,162 additions and 2,124 deletions.
11 changes: 11 additions & 0 deletions doomsday/libdoomsday/include/doomsday/defs/dedfile.h
Expand Up @@ -31,9 +31,20 @@ LIBDOOMSDAY_PUBLIC void Def_ReadProcessDED(ded_t *defs, char const* path);
*/
LIBDOOMSDAY_PUBLIC int DED_ReadLump(ded_t* ded, lumpnum_t lumpNum);

/**
* Reads definitions from the given buffer.
* The definition is being loaded from @a _sourcefile (DED or WAD).
*
* @param buffer The data to be read, must be null-terminated.
* @param _sourceFile Just FYI.
*/
int DED_ReadData(ded_t* ded, const char* buffer, const char* _sourceFile);

/**
* @return @c true, if the file was successfully loaded.
*/
int DED_Read(ded_t* ded, const char* path);

void DED_SetError(char const *str);

#endif // LIBDOOMSDAY_DEFS_DED_H
18 changes: 13 additions & 5 deletions doomsday/libdoomsday/include/doomsday/defs/dedparser.h
Expand Up @@ -21,17 +21,25 @@
#ifndef LIBDOOMSDAY_DED_V1_PARSER_H
#define LIBDOOMSDAY_DED_V1_PARSER_H

#include <de/libcore.h>
#include "../libdoomsday.h"
#include "ded.h"

LIBDOOMSDAY_PUBLIC int DED_ReadLump(ded_t* ded, lumpnum_t lumpNum);

LIBDOOMSDAY_PUBLIC void DED_SetXGClassLinks(struct xgclass_s *links);

int DED_ReadData(ded_t* ded, const char* buffer, const char* _sourceFile);
/**
* Parser of DED v1 definitions.
* @ingroup data
*/
class LIBDOOMSDAY_PUBLIC DEDParser
{
public:
DEDParser(ded_t *ded);

void DED_Include(ded_t *ded, const char* fileName, const char* parentDirectory);
int parse(char const *buffer, char const *sourceFile);

void DED_SetError(char const *str);
private:
DENG2_PRIVATE(d)
};

#endif // LIBDOOMSDAY_DED_V1_PARSER_H
12 changes: 11 additions & 1 deletion doomsday/libdoomsday/src/defs/dedfile.cpp
Expand Up @@ -26,7 +26,12 @@

using namespace de;

extern char dedReadError[512]; // in defs/parser.cpp
char dedReadError[512];

void DED_SetError(char const *str)
{
strncpy(dedReadError, str, sizeof(dedReadError));
}

void Def_ReadProcessDED(ded_t *defs, char const* path)
{
Expand Down Expand Up @@ -118,3 +123,8 @@ int DED_Read(ded_t* ded, const char* path)
Str_Free(&transPath);
return result;
}

int DED_ReadData(ded_t* ded, const char* buffer, const char* _sourceFile)
{
return DEDParser(ded).parse(buffer, _sourceFile);
}

0 comments on commit c4fef0b

Please sign in to comment.