Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions napi-inl.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@
#endif // NAPI_HAS_THREADS
#include <type_traits>
#include <utility>
#if __cplusplus >= 201703L
#include <string_view>
#endif

#if defined(__clang__) || defined(__GNUC__)
#define NAPI_NO_SANITIZE_VPTR __attribute__((no_sanitize("vptr")))
Expand Down Expand Up @@ -1255,6 +1258,12 @@ inline String String::New(napi_env env, const std::u16string& val) {
return String::New(env, val.c_str(), val.size());
}

#if __cplusplus >= 201703L
inline String String::New(napi_env env, std::string_view val) {
return String::New(env, val.data(), val.size());
}
#endif

inline String String::New(napi_env env, const char* val) {
// TODO(@gabrielschulhof) Remove if-statement when core's error handling is
// available in all supported versions.
Expand Down Expand Up @@ -1364,6 +1373,13 @@ inline Symbol Symbol::New(napi_env env, const std::string& description) {
return Symbol::New(env, descriptionValue);
}

#if __cplusplus >= 201703L
inline Symbol Symbol::New(napi_env env, std::string_view description) {
napi_value descriptionValue = String::New(env, description);
return Symbol::New(env, descriptionValue);
}
#endif

inline Symbol Symbol::New(napi_env env, String description) {
napi_value descriptionValue = description;
return Symbol::New(env, descriptionValue);
Expand Down
19 changes: 19 additions & 0 deletions napi.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
#endif // NAPI_HAS_THREADS
#include <string>
#include <vector>
#if __cplusplus >= 201703L
#include <string_view>
#endif

// VS2015 RTM has bugs with constexpr, so require min of VS2015 Update 3 (known
// good version)
Expand Down Expand Up @@ -718,6 +721,13 @@ class String : public Name {
const std::u16string& value ///< UTF-16 encoded C++ string
);

#if __cplusplus >= 201703L
/// Creates a new String value from a UTF-8 encoded C++ string view.
static String New(napi_env env, ///< Node-API environment
std::string_view value ///< UTF-8 encoded C++ string view
);
#endif

/// Creates a new String value from a UTF-8 encoded C string.
static String New(
napi_env env, ///< Node-API environment
Expand Down Expand Up @@ -791,6 +801,15 @@ class Symbol : public Name {
description ///< UTF-8 encoded C++ string describing the symbol
);

#if __cplusplus >= 201703L
/// Creates a new Symbol value with a description.
static Symbol New(
napi_env env, ///< Node-API environment
std::string_view
description ///< UTF-8 encoded C++ string view describing the symbol
);
#endif

/// Creates a new Symbol value with a description.
static Symbol New(napi_env env, ///< Node-API environment
String description ///< String value describing the symbol
Expand Down