12namespace opcua::detail {
14template <
typename T,
typename = std::enable_if_t<std::is_enum_v<T>>>
15[[nodiscard]]
auto toNative(T value)
noexcept {
16 return static_cast<std::underlying_type_t<T>
>(value);
19[[nodiscard]]
inline auto toNative(std::string_view value) {
20 return allocNativeString(value);
23template <typename T, typename = std::enable_if_t<IsWrapper<T>::value>>
24[[nodiscard]]
auto toNative(T&& value) {
25 using NativeType =
typename T::NativeType;
27 asWrapper<T>(native) = std::forward<T>(value);
32[[nodiscard]]
auto* toNativeArray(Span<const T> array) {
33 if constexpr (IsWrapper<T>::value) {
34 return copyArray(asNative(array.data()), array.size(), getDataType<T>());
36 return copyArray(array.data(), array.size(), getDataType<T>());