finished off Translation module

develop
doomchild 2010-05-11 16:33:37 -05:00
parent bc7f676a49
commit e66d68e562
2 changed files with 65 additions and 0 deletions

@ -40,6 +40,9 @@ extern "C" {
DFHACK_EXPORT int Translation_Start(DFHackObject* trans);
DFHACK_EXPORT int Translation_Finish(DFHackObject* trans);
DFHACK_EXPORT char* Translation_TranslateNameEnglish(DFHackObject* trans, const DFHack::t_name* name, char* (*char_buffer_create)(int));
DFHACK_EXPORT char* Translation_TranslateNameNonEnglish(DFHackObject* trans, const DFHack::t_name* name, char* (*char_buffer_create)(int));
#ifdef __cplusplus
}
#endif

@ -23,6 +23,10 @@ distribution.
*/
#include "integers.h"
#include <string>
using namespace std;
#include "DFCommonInternal.h"
#include "DFTypes.h"
#include "modules/Translation.h"
@ -54,6 +58,64 @@ int Translation_Finish(DFHackObject* trans)
return -1;
}
char* Translation_TranslateNameEnglish(DFHackObject* trans, const DFHack::t_name* name, char* (*char_buffer_create)(int))
{
if(trans != NULL)
{
std::string nameTrans = ((DFHack::Translation*)trans)->TranslateName(*name, true);
if(nameTrans.size() > 0)
{
char* buf = (*char_buffer_create)(nameTrans.size());
if(buf != NULL)
{
size_t len = nameTrans.copy(buf, nameTrans.size());
if(len > 0)
buf[len] = '\0';
else
buf[0] = '\0';
}
return buf;
}
else
return NULL;
}
return NULL;
}
char* Translation_TranslateNameNonEnglish(DFHackObject* trans, const DFHack::t_name* name, char* (*char_buffer_create)(int))
{
if(trans != NULL)
{
std::string nameTrans = ((DFHack::Translation*)trans)->TranslateName(*name, false);
if(nameTrans.size() > 0)
{
char* buf = (*char_buffer_create)(nameTrans.size());
if(buf != NULL)
{
size_t len = nameTrans.copy(buf, nameTrans.size());
if(len > 0)
buf[len] = '\0';
else
buf[0] = '\0';
}
return buf;
}
else
return NULL;
}
return NULL;
}
#ifdef __cplusplus
}
#endif