improved nan helper
This commit is contained in:
parent
85cdac3501
commit
7c7e4a3d26
10
native/dist/ext_nan/CMakeLists.txt
vendored
10
native/dist/ext_nan/CMakeLists.txt
vendored
@ -5,4 +5,12 @@ project(nan_ext VERSION 1.0.0)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++17")
|
||||
|
||||
add_add_executable(test test/main.cpp)
|
||||
add_executable(nan_helper_tests test/main.cpp)
|
||||
|
||||
add_library(Nan__Helpers INTERFACE)
|
||||
target_include_directories(Nan__Helpers INTERFACE
|
||||
include/
|
||||
#$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/lib1>
|
||||
#$<INSTALL_INTERFACE:${INSTALL_DI}/lib1>
|
||||
)
|
||||
add_library(Nan::Helpers ALIAS Nan__Helpers)
|
66
native/dist/ext_nan/include/NanStrings.h
vendored
Normal file
66
native/dist/ext_nan/include/NanStrings.h
vendored
Normal file
@ -0,0 +1,66 @@
|
||||
#pragma once
|
||||
|
||||
#include <string_view>
|
||||
#include <v8.h>
|
||||
|
||||
namespace Nan {
|
||||
/* UTF-8 Helpers */
|
||||
inline v8::Local<v8::String> StringUTF8(std::string_view buffer) {
|
||||
Nan::EscapableHandleScope scope{};
|
||||
auto data = v8::String::NewFromUtf8(Nan::GetCurrentContext()->GetIsolate(), buffer.data(), v8::NewStringType::kNormal, buffer.length());
|
||||
|
||||
v8::Local<v8::String> response{};
|
||||
if(!data.ToLocal(&response))
|
||||
throw std::bad_alloc{};
|
||||
return scope.Escape(response);
|
||||
}
|
||||
|
||||
template <size_t S>
|
||||
inline v8::Local<v8::String> StringUTF8(const char (&buffer)[S]) {
|
||||
return Nan::StringUTF8(buffer, S);
|
||||
}
|
||||
|
||||
inline v8::Local<v8::String> StringUTF8(const char* buffer, size_t length) {
|
||||
return Nan::StringUTF8(std::string_view{buffer, length});
|
||||
}
|
||||
|
||||
/* Latin1 Helpers */
|
||||
inline v8::Local<v8::String> String(std::string_view buffer) {
|
||||
Nan::EscapableHandleScope scope{};
|
||||
auto data = v8::String::NewFromOneByte(Nan::GetCurrentContext()->GetIsolate(), (uint8_t*) buffer.data(), v8::NewStringType::kNormal, buffer.length());
|
||||
|
||||
v8::Local<v8::String> response{};
|
||||
if(!data.ToLocal(&response))
|
||||
throw std::bad_alloc{};
|
||||
return scope.Escape(response);
|
||||
}
|
||||
|
||||
template <size_t S>
|
||||
inline v8::Local<v8::String> String(const char (&buffer)[S]) {
|
||||
return Nan::StringUTF8(buffer, S);
|
||||
}
|
||||
|
||||
inline v8::Local<v8::String> String(const char* buffer, size_t length) {
|
||||
return Nan::StringUTF8(std::string_view{buffer, length});
|
||||
}
|
||||
|
||||
/* Wide char helpers */
|
||||
inline v8::Local<v8::String> String(std::wstring_view buffer) {
|
||||
Nan::EscapableHandleScope scope{};
|
||||
auto data = v8::String::NewFromTwoByte(Nan::GetCurrentContext()->GetIsolate(), (uint16_t*) buffer.data(), v8::NewStringType::kNormal, buffer.length());
|
||||
|
||||
v8::Local<v8::String> response{};
|
||||
if(!data.ToLocal(&response))
|
||||
throw std::bad_alloc{};
|
||||
return scope.Escape(response);
|
||||
}
|
||||
|
||||
template <size_t S>
|
||||
inline v8::Local<v8::String> String(const wchar_t (&buffer)[S]) {
|
||||
return Nan::String(buffer, S);
|
||||
}
|
||||
|
||||
inline v8::Local<v8::String> String(const wchar_t* buffer, size_t length) {
|
||||
return Nan::String(std::wstring_view{buffer, length});
|
||||
}
|
||||
}
|
9
native/dist/ext_nan/test/main.cpp
vendored
9
native/dist/ext_nan/test/main.cpp
vendored
@ -1,2 +1,7 @@
|
||||
#include "../NanEventCallback.h"
|
||||
#include "../NanException.h"
|
||||
#include "include/NanEventCallback.h"
|
||||
#include "include/NanException.h"
|
||||
#include "include/NanStrings.h"
|
||||
|
||||
int main() {
|
||||
auto str = Nan::StringUTF8("Hello World");
|
||||
}
|
Loading…
Reference in New Issue
Block a user