aboutsummaryrefslogtreecommitdiff
path: root/index.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'index.cpp')
-rwxr-xr-xindex.cpp45
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);