12namespace opcua::detail {
14[[nodiscard]]
inline auto makeNative(std::string_view value) {
15 return detail::allocNativeString(value);
18template <
typename T, std::enable_if_t<std::is_enum_v<T>,
int> = 0>
19[[nodiscard]]
auto makeNative(T value)
noexcept {
20 return static_cast<std::underlying_type_t<T>
>(value);
23template <
typename T,
typename U = std::remove_cv_t<std::remove_reference_t<T>>>
24[[nodiscard]]
auto makeNative(T&& value
25) -> std::enable_if_t<IsWrapper<U>::value,
typename U::NativeType> {
26 using NativeType =
typename U::NativeType;
28 asWrapper<U>(native) = std::forward<T>(value);
33[[nodiscard]]
auto* makeNativeArray(Span<const T> array) {
35 return copyArray(
asNative(array.data()), array.size(), getDataType<T>());
37 return copyArray(array.data(), array.size(), getDataType<T>());
constexpr T::NativeType * asNative(T *wrapper) noexcept
Cast Wrapper object pointers to native object pointers.
static constexpr bool value