12namespace opcua::detail {
14[[nodiscard]]
inline auto makeNative(std::string_view value) {
15 return detail::allocNativeString(value);
19[[nodiscard]]
auto makeNative(T value)
noexcept
20 -> std::enable_if_t<std::is_enum_v<T>, std::underlying_type_t<T>> {
21 return static_cast<std::underlying_type_t<T>
>(value);
24template <
typename T,
typename U = std::remove_cv_t<std::remove_reference_t<T>>>
25[[nodiscard]]
auto makeNative(T&& value)
26 -> std::enable_if_t<IsWrapper<U>::value,
typename U::NativeType> {
27 using NativeType =
typename U::NativeType;
29 asWrapper<U>(native) = std::forward<T>(value);
34[[nodiscard]]
auto* makeNativeArray(Span<const T> array) {
36 return copyArray(
asNative(array.data()), array.size(), getDataType<T>());
38 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