From ca69dca25557b048bad0737ac962114f8815e005 Mon Sep 17 00:00:00 2001 From: Brett Langdon Date: Sun, 25 Nov 2012 11:04:17 -0500 Subject: [PATCH] added utils library --- binding.gyp | 1 + src/utils.cc | 31 +++++++++++++++++++++++++++++++ src/utils.h | 15 +++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 src/utils.cc create mode 100644 src/utils.h diff --git a/binding.gyp b/binding.gyp index 095a405..252c0c8 100644 --- a/binding.gyp +++ b/binding.gyp @@ -3,6 +3,7 @@ { "target_name": "nodelua", "sources": [ + "src/utils.cc", "src/luaobject.cc", "src/nodelua.cc" ], diff --git a/src/utils.cc b/src/utils.cc new file mode 100644 index 0000000..27c9e4b --- /dev/null +++ b/src/utils.cc @@ -0,0 +1,31 @@ +#include "utils.h" + +char * get_str(v8::Local val){ + if(!val->IsString()){ + v8::ThrowException(v8::Exception::TypeError(v8::String::New("Argument Must Be A String"))); + return NULL; + } + + v8::String::AsciiValue val_string(val); + char * val_char_ptr = (char *) malloc(val_string.length() + 1); + strcpy(val_char_ptr, *val_string); + return val_char_ptr; +} + + +v8::Local lua_to_value(lua_State* L, int i){ + switch(lua_type(L, i)){ + case LUA_TBOOLEAN: + return v8::Local::New(v8::Boolean::New((int)lua_toboolean(L, i))); + break; + case LUA_TNUMBER: + return v8::Local::New(v8::Number::New(lua_tonumber(L, i))); + break; + case LUA_TSTRING: + return v8::String::New((char *)lua_tostring(L, i)); + break; + default: + return v8::Local::New(v8::Undefined()); + break; + } +} diff --git a/src/utils.h b/src/utils.h new file mode 100644 index 0000000..2637a3a --- /dev/null +++ b/src/utils.h @@ -0,0 +1,15 @@ +#ifndef LUAUTILS_H +#define LUAUTILS_H + +#include + +extern "C"{ +#include +#include +#include +} + +char * get_str(v8::Local val); +v8::Local lua_to_value(lua_State* L, int); + +#endif