|
|
#include "Moses2Wrapper.h" |
|
|
#include <iostream> |
|
|
#include <string.h> |
|
|
|
|
|
|
|
|
|
|
|
#if defined _WIN32 |
|
|
#define IMPORT __declspec(dllimport) |
|
|
#define EXPORT __declspec(dllexport) |
|
|
#else |
|
|
#define __stdcall |
|
|
#if __GNUC__ >= 4 |
|
|
#define IMPORT __attribute__ ((visibility ("default"))) |
|
|
#define EXPORT __attribute__ ((visibility ("default"))) |
|
|
#else |
|
|
#define IMPORT |
|
|
#define EXPORT |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
using namespace std; |
|
|
using namespace Moses2; |
|
|
|
|
|
extern "C" EXPORT MosesApiErrorCode __stdcall GetMosesSystem(const char* filePath, Moses2::Moses2Wrapper * *pObject) { |
|
|
|
|
|
if (*pObject == NULL) { |
|
|
*pObject = new Moses2::Moses2Wrapper(filePath); |
|
|
return MS_API_OK; |
|
|
} |
|
|
else { |
|
|
return MS_API_E_FAILURE; |
|
|
} |
|
|
} |
|
|
|
|
|
extern "C" EXPORT MosesApiErrorCode __stdcall Translate(Moses2::Moses2Wrapper * pObject, long id, const char* input, char** output) { |
|
|
if (pObject != NULL) |
|
|
{ |
|
|
std::string tr = pObject->Translate(input, id); |
|
|
*output = Moses2Wrapper::CopyString(tr.c_str()); |
|
|
return MS_API_OK; |
|
|
} |
|
|
else { |
|
|
return MS_API_E_FAILURE; |
|
|
} |
|
|
} |
|
|
|
|
|
extern "C" EXPORT MosesApiErrorCode __stdcall FreeMemory(char* output) { |
|
|
if (output != nullptr) { |
|
|
Moses2Wrapper::Free(output); |
|
|
return MS_API_OK; |
|
|
} |
|
|
else { |
|
|
return MS_API_E_FAILURE; |
|
|
} |
|
|
} |
|
|
|
|
|
extern "C" EXPORT MosesApiErrorCode __stdcall ReleaseSystem(Moses2::Moses2Wrapper **pObject) { |
|
|
if (*pObject != NULL) |
|
|
{ |
|
|
delete* pObject; |
|
|
*pObject = NULL; |
|
|
return MS_API_OK; |
|
|
} |
|
|
else { |
|
|
return MS_API_E_FAILURE; |
|
|
} |
|
|
} |
|
|
|
|
|
extern "C" EXPORT MosesApiErrorCode __stdcall EngineVersion() { |
|
|
|
|
|
std::cout << "0.0.1" << std::endl; |
|
|
return MS_API_OK; |
|
|
} |