diff options
Diffstat (limited to 'index.cpp')
-rwxr-xr-x | index.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/index.cpp b/index.cpp new file mode 100755 index 0000000..4832400 --- /dev/null +++ b/index.cpp @@ -0,0 +1,45 @@ +#include <node.h> +#include <v8.h> + +#include <iostream> +#include "iconvlite.h" +#import "vkext_flex.h" + +using namespace v8; +using namespace std; + +const char* ToCString(const String::Utf8Value& value) { + return *value ? *value : "<string conversion failed>"; +} + +void flex(const FunctionCallbackInfo<Value>& args) { + Isolate* isolate = args.GetIsolate(); + + String::Utf8Value nameArg(args[0]); + string nameString(*nameArg); + string nameStringWindows1251 = utf2cp(nameString); + + String::Utf8Value сaseArg(args[2]); + string caseString(*сaseArg); + string caseStringWindows1251 = utf2cp(caseString); + + String::Utf8Value typeArg(args[3]); + string typeString(*typeArg); + string ctypeStringWindows1251 = utf2cp(typeString); + + int sex = args[1]->NumberValue(); + int lang = args[4]->NumberValue(); + + char *result = do_flex(nameStringWindows1251.c_str(), nameStringWindows1251.length(), caseStringWindows1251.c_str(), caseStringWindows1251.length(), sex, ctypeStringWindows1251.c_str(), ctypeStringWindows1251.length(), lang); + + string resultStringWindows1251(result); + string resultString = cp2utf(resultStringWindows1251); + + args.GetReturnValue().Set(String::NewFromUtf8(isolate, resultString.c_str())); +} + +void Init(Handle<Object> exports) { + NODE_SET_METHOD(exports, "flex", flex); +} + +NODE_MODULE(hello, Init); |