mirror of
https://github.com/moses-smt/mosesdecoder.git
synced 2024-09-11 11:25:40 +03:00
api signature update
This commit is contained in:
parent
e9cc90e73a
commit
1631aa14d1
@ -1,64 +1,74 @@
|
||||
#include "Moses2Wrapper.h"
|
||||
#include <iostream>
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#endif // DEBUG
|
||||
#include <string.h>
|
||||
|
||||
|
||||
// Generic helper definitions for shared library support
|
||||
#if defined _WIN32
|
||||
#define IMPORT __declspec(dllimport)
|
||||
#define EXPORT __declspec(dllexport)
|
||||
#else // !(defined _WIN32 || defined __CYGWIN__) -- i.e., not Windows
|
||||
#define __stdcall
|
||||
#if __GNUC__ >= 4
|
||||
#define IMPORT __attribute__ ((visibility ("default")))
|
||||
#define EXPORT __attribute__ ((visibility ("default")))
|
||||
#else // __GNUC__ < 4, which does not support the __attribute__ tag
|
||||
#define IMPORT
|
||||
#define EXPORT
|
||||
#endif // __GNUC__ >= 4
|
||||
#endif
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
// Microsoft
|
||||
#define EXPORT __declspec(dllexport)
|
||||
#define IMPORT __declspec(dllimport)
|
||||
#elif defined(__GNUC__)
|
||||
// GCC
|
||||
#define HRESULT int
|
||||
#define EXPORT __attribute__((visibility("default")))
|
||||
#define __stdcall
|
||||
#define IMPORT
|
||||
#define S_OK 0
|
||||
#define E_FAIL 1
|
||||
#else
|
||||
// do nothing and hope for the best?
|
||||
#define EXPORT
|
||||
#define IMPORT
|
||||
#pragma warning Unknown dynamic link import/export semantics.
|
||||
#endif
|
||||
|
||||
using namespace std;
|
||||
using namespace Moses2;
|
||||
|
||||
extern "C" EXPORT HRESULT __stdcall GetMosesSystem(const char* filePath, Moses2::Moses2Wrapper ** pObject) {
|
||||
extern "C" EXPORT MosesApiErrorCode __stdcall GetMosesSystem(const char* filePath, Moses2::Moses2Wrapper * *pObject) {
|
||||
|
||||
if (*pObject == NULL) {
|
||||
*pObject = new Moses2::Moses2Wrapper(filePath);
|
||||
return S_OK;
|
||||
return MS_API_OK;
|
||||
}
|
||||
else {
|
||||
return E_FAIL;
|
||||
return MS_API_E_FAILURE;
|
||||
}
|
||||
}
|
||||
|
||||
extern "C" EXPORT HRESULT __stdcall MosesTranslate(Moses2::Moses2Wrapper * pObject, long id, const char* input, char* output, int strlen) {
|
||||
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);
|
||||
std::copy(tr.begin(), tr.end(), output);
|
||||
output[std::min(strlen - 1, (int)tr.size())] = 0;
|
||||
return S_OK;
|
||||
*output = Moses2Wrapper::CopyString(tr.c_str());
|
||||
return MS_API_OK;
|
||||
}
|
||||
else {
|
||||
return E_FAIL;
|
||||
return MS_API_E_FAILURE;
|
||||
}
|
||||
}
|
||||
extern "C" EXPORT int __stdcall ReleaseSystem(Moses2::Moses2Wrapper ** pObject) {
|
||||
|
||||
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;
|
||||
delete* pObject;
|
||||
*pObject = NULL;
|
||||
return S_OK;
|
||||
return MS_API_OK;
|
||||
}
|
||||
else {
|
||||
return E_FAIL;
|
||||
return MS_API_E_FAILURE;
|
||||
}
|
||||
}
|
||||
extern "C" EXPORT string __stdcall GetEngineVersion() {
|
||||
return "1.0";
|
||||
|
||||
extern "C" EXPORT MosesApiErrorCode __stdcall EngineVersion() {
|
||||
//std::cout << "windows build on v1142/ msvc 14.27.29110"<< std::endl;
|
||||
std::cout << "0.0.1" << std::endl;
|
||||
return MS_API_OK;
|
||||
}
|
Loading…
Reference in New Issue
Block a user