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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user