open62541pp 0.19.0
C++ wrapper of open62541
Loading...
Searching...
No Matches
types.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <cstdint>
4#include <initializer_list>
5#include <string_view>
6#include <type_traits>
7#include <utility> // forward, move
8#include <variant>
9
11#include "open62541pp/common.hpp" // AttributeId, ...
12#include "open62541pp/config.hpp"
14#include "open62541pp/detail/traits.hpp" // IsOneOf
15#include "open62541pp/detail/types_conversion.hpp" // makeNative, makeNativeArray
16#include "open62541pp/detail/types_handling.hpp" // deallocateArray, copyArray
17#include "open62541pp/span.hpp"
18#include "open62541pp/typeregistry.hpp" // getDataType
19#include "open62541pp/types.hpp"
20#include "open62541pp/ua/nodeids.hpp" // ReferenceTypeId
23
24#ifndef UA_DEFAULT_ATTRIBUTES_DEFINED
25#define UA_DEFAULT_ATTRIBUTES_DEFINED
26extern "C" {
34UA_EXPORT extern const UA_ViewAttributes UA_ViewAttributes_default;
35}
36#endif
37
38// NOLINTBEGIN(cppcoreguidelines-macro-usage)
39#define UAPP_GETTER(Type, member) \
40 Type member() const noexcept { \
41 return handle()->member; \
42 }
43
44#define UAPP_GETTER_CAST(Type, member) \
45 Type member() const noexcept { \
46 return static_cast<Type>(handle()->member); \
47 }
48
49#define UAPP_GETTER_WRAPPER_CONST(Type, member) \
50 const Type& member() const noexcept { \
51 return asWrapper<Type>(handle()->member); \
52 }
53#define UAPP_GETTER_WRAPPER_NONCONST(Type, member) \
54 Type& member() noexcept { \
55 return asWrapper<Type>(handle()->member); \
56 }
57#define UAPP_GETTER_WRAPPER(Type, member) \
58 UAPP_GETTER_WRAPPER_CONST(Type, member) \
59 UAPP_GETTER_WRAPPER_NONCONST(Type, member)
60
61#define UAPP_GETTER_SPAN(Type, memberArray, memberSize) \
62 Span<const Type> memberArray() const noexcept { \
63 return {handle()->memberArray, handle()->memberSize}; \
64 } \
65 Span<Type> memberArray() noexcept { \
66 return {handle()->memberArray, handle()->memberSize}; \
67 }
68
69#define UAPP_GETTER_SPAN_WRAPPER(Type, memberArray, memberSize) \
70 Span<const Type> memberArray() const noexcept { \
71 return {asWrapper<Type>(handle()->memberArray), handle()->memberSize}; \
72 } \
73 Span<Type> memberArray() noexcept { \
74 return {asWrapper<Type>(handle()->memberArray), handle()->memberSize}; \
75 }
76
77// NOLINTEND(cppcoreguidelines-macro-usage)
78
79namespace opcua {
80inline namespace ua {
81
82/// IntegerId.
83/// @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.19
84using IntegerId = uint32_t;
85
86/**
87 * @addtogroup Wrapper
88 * @{
89 */
90
91/**
92 * UA_EnumValueType wrapper class.
93 * @see https://reference.opcfoundation.org/Core/Part3/v105/docs/8.39
94 */
95class EnumValueType : public WrapperNative<UA_EnumValueType, UA_TYPES_ENUMVALUETYPE> {
96public:
97 using Wrapper::Wrapper;
98
100 handle()->value = value;
101 handle()->displayName = detail::makeNative(std::move(displayName));
102 handle()->description = detail::makeNative(std::move(description));
103 }
104
108};
109
110/**
111 * Application type.
112 * @see UA_ApplicationType
113 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.4
114 */
115enum class ApplicationType : int32_t {
116 Server = 0,
117 Client = 1,
118 ClientAndServer = 2,
119 DiscoveryServer = 3,
120};
121
122/**
123 * UA_ApplicationDescription wrapper class.
124 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.2
125 */
127 : public WrapperNative<UA_ApplicationDescription, UA_TYPES_APPLICATIONDESCRIPTION> {
128public:
129 using Wrapper::Wrapper;
130
132 std::string_view applicationUri,
133 std::string_view productUri,
134 LocalizedText applicationName,
135 ApplicationType applicationType,
136 std::string_view gatewayServerUri,
137 std::string_view discoveryProfileUri,
138 Span<const String> discoveryUrls
139 ) {
140 handle()->applicationUri = detail::makeNative(applicationUri);
141 handle()->productUri = detail::makeNative(productUri);
142 handle()->applicationName = detail::makeNative(std::move(applicationName));
143 handle()->applicationType = static_cast<UA_ApplicationType>(applicationType);
144 handle()->gatewayServerUri = detail::makeNative(gatewayServerUri);
145 handle()->discoveryProfileUri = detail::makeNative(discoveryProfileUri);
146 handle()->discoveryUrlsSize = discoveryUrls.size();
147 handle()->discoveryUrls = detail::makeNativeArray(discoveryUrls);
148 }
149
154 UAPP_GETTER_WRAPPER(String, gatewayServerUri)
155 UAPP_GETTER_WRAPPER(String, discoveryProfileUri)
156 UAPP_GETTER_SPAN_WRAPPER(String, discoveryUrls, discoveryUrlsSize)
157};
158
159/**
160 * UA_RequestHeader wrapper class.
161 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.33
162 */
163class RequestHeader : public WrapperNative<UA_RequestHeader, UA_TYPES_REQUESTHEADER> {
164public:
165 using Wrapper::Wrapper;
166
168 NodeId authenticationToken,
169 DateTime timestamp,
170 IntegerId requestHandle,
171 uint32_t returnDiagnostics,
172 std::string_view auditEntryId,
173 uint32_t timeoutHint,
174 ExtensionObject additionalHeader
175 ) {
176 handle()->authenticationToken = detail::makeNative(std::move(authenticationToken));
177 handle()->timestamp = timestamp;
178 handle()->requestHandle = requestHandle;
179 handle()->returnDiagnostics = returnDiagnostics;
180 handle()->auditEntryId = detail::makeNative(auditEntryId);
181 handle()->timeoutHint = timeoutHint;
182 handle()->additionalHeader = detail::makeNative(std::move(additionalHeader));
183 }
184
185 UAPP_GETTER_WRAPPER(NodeId, authenticationToken)
187 UAPP_GETTER(IntegerId, requestHandle)
188 UAPP_GETTER(uint32_t, returnDiagnostics)
190 UAPP_GETTER(uint32_t, timeoutHint)
192};
193
194/**
195 * UA_ResponseHeader wrapper class.
196 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.34
197 */
198class ResponseHeader : public WrapperNative<UA_ResponseHeader, UA_TYPES_RESPONSEHEADER> {
199public:
200 using Wrapper::Wrapper;
201
203 UAPP_GETTER(IntegerId, requestHandle)
204 UAPP_GETTER(StatusCode, serviceResult)
206 UAPP_GETTER_SPAN_WRAPPER(String, stringTable, stringTableSize)
208};
209
210/**
211 * Message security mode.
212 * @see UA_MessageSecurityMode
213 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.20
214 */
215enum class MessageSecurityMode : int32_t {
216 // clang-format off
217 Invalid = 0, ///< Will always be rejected
218 None = 1, ///< No security applied
219 Sign = 2, ///< All messages are signed but not encrypted
220 SignAndEncrypt = 3, ///< All messages are signed and encrypted
221 // clang-format on
222};
223
224/**
225 * User identity token type.
226 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.43
227 */
228enum class UserTokenType : int32_t {
229 // clang-format off
230 Anonymous = 0, ///< No token is required
231 Username = 1, ///< A username/password token
232 Certificate = 2, ///< An X.509 v3 certificate token
233 IssuedToken = 3, ///< Any token issued by an authorization service
234 // clang-format on
235};
236
237/**
238 * UA_UserTokenPolicy wrapper class.
239 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.42
240 */
241class UserTokenPolicy : public WrapperNative<UA_UserTokenPolicy, UA_TYPES_USERTOKENPOLICY> {
242public:
243 using Wrapper::Wrapper;
244
246 std::string_view policyId,
247 UserTokenType tokenType,
248 std::string_view issuedTokenType,
249 std::string_view issuerEndpointUrl,
250 std::string_view securityPolicyUri
251 ) {
252 handle()->policyId = detail::makeNative(policyId);
253 handle()->tokenType = static_cast<UA_UserTokenType>(tokenType);
254 handle()->issuedTokenType = detail::makeNative(issuedTokenType);
255 handle()->issuerEndpointUrl = detail::makeNative(issuerEndpointUrl);
256 handle()->securityPolicyUri = detail::makeNative(securityPolicyUri);
257 }
258
261 UAPP_GETTER_WRAPPER(String, issuedTokenType)
262 UAPP_GETTER_WRAPPER(String, issuerEndpointUrl)
263 UAPP_GETTER_WRAPPER(String, securityPolicyUri)
264};
265
266/**
267 * UA_EndpointDescription wrapper class.
268 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.14
269 */
271 : public WrapperNative<UA_EndpointDescription, UA_TYPES_ENDPOINTDESCRIPTION> {
272public:
273 using Wrapper::Wrapper;
274
277 UAPP_GETTER_WRAPPER(ByteString, serverCertificate)
279 UAPP_GETTER_WRAPPER(String, securityPolicyUri)
280 UAPP_GETTER_SPAN_WRAPPER(UserTokenPolicy, userIdentityTokens, userIdentityTokensSize)
281 UAPP_GETTER_WRAPPER(String, transportProfileUri)
282 UAPP_GETTER(UA_Byte, securityLevel)
283};
284
285/* --------------------------------------- Node attributes -------------------------------------- */
286
287/**
288 * Node attributes mask.
289 * Bitmask used in the node attributes parameters to specify which attributes are set.
290 * @see UA_NodeAttributesMask
291 */
292enum class NodeAttributesMask : uint32_t {
293 // clang-format off
294 None = 0,
295 AccessLevel = 1,
296 ArrayDimensions = 2,
297 BrowseName = 4,
298 ContainsNoLoops = 8,
299 DataType = 16,
300 Description = 32,
301 DisplayName = 64,
302 EventNotifier = 128,
303 Executable = 256,
304 Historizing = 512,
305 InverseName = 1024,
306 IsAbstract = 2048,
308 NodeClass = 8192,
309 NodeId = 16384,
310 Symmetric = 32768,
311 UserAccessLevel = 65536,
312 UserExecutable = 131072,
313 UserWriteMask = 262144,
314 ValueRank = 524288,
315 WriteMask = 1048576,
316 Value = 2097152,
317 DataTypeDefinition = 4194304,
318 RolePermissions = 8388608,
319 AccessRestrictions = 16777216,
320 All = 33554431,
321 BaseNode = 26501220,
322 Object = 26501348,
323 ObjectType = 26503268,
324 Variable = 26571383,
325 VariableType = 28600438,
326 Method = 26632548,
327 ReferenceType = 26537060,
328 View = 26501356,
329 // clang-format on
330};
331
332constexpr std::true_type isBitmaskEnum(NodeAttributesMask);
333
334// Specifialized macros to generate getters/setters for `UA_*Attribute` classes.
335// The `specifiedAttributes` mask is automatically updated in the setter methods.
336// A fluent interface is used for the setter methods.
337
338// NOLINTBEGIN(cppcoreguidelines-macro-usage)
339#define UAPP_NODEATTR(Type, suffix, member, flag) \
340 UAPP_GETTER(Type, member) \
341 auto& set##suffix(Type member) noexcept { \
342 handle()->specifiedAttributes |= flag; \
343 handle()->member = member; \
344 return *this; \
345 }
346#define UAPP_NODEATTR_CAST(Type, suffix, member, flag) \
347 UAPP_GETTER_CAST(Type, member) \
348 auto& set##suffix(Type member) noexcept { \
349 handle()->specifiedAttributes |= flag; \
350 handle()->member = static_cast<decltype(handle()->member)>(member); \
351 return *this; \
352 }
353#define UAPP_NODEATTR_WRAPPER(Type, suffix, member, flag) \
354 UAPP_GETTER_WRAPPER_CONST(Type, member) \
355 auto& set##suffix(Type member) { \
356 handle()->specifiedAttributes |= flag; \
357 asWrapper<Type>(handle()->member) = std::move(member); \
358 return *this; \
359 }
360#define UAPP_NODEATTR_ARRAY(Type, suffix, member, memberSize, flag) \
361 UAPP_GETTER_SPAN(Type, member, memberSize) \
362 auto& set##suffix(Span<const Type> member) { \
363 const auto& dataType = opcua::getDataType<Type>(); \
364 handle()->specifiedAttributes |= flag; \
365 detail::deallocateArray(handle()->member, handle()->memberSize, dataType); \
366 handle()->member = detail::copyArray(member.data(), member.size(), dataType); \
367 handle()->memberSize = member.size(); \
368 return *this; \
369 }
370#define UAPP_NODEATTR_COMMON \
371 UAPP_GETTER(Bitmask<NodeAttributesMask>, specifiedAttributes) \
372 UAPP_NODEATTR_WRAPPER( \
373 LocalizedText, DisplayName, displayName, UA_NODEATTRIBUTESMASK_DISPLAYNAME \
374 ) \
375 UAPP_NODEATTR_WRAPPER( \
376 LocalizedText, Description, description, UA_NODEATTRIBUTESMASK_DESCRIPTION \
377 ) \
378 UAPP_NODEATTR_CAST(Bitmask<WriteMask>, WriteMask, writeMask, UA_NODEATTRIBUTESMASK_WRITEMASK) \
379 UAPP_NODEATTR_CAST( \
380 Bitmask<WriteMask>, UserWriteMask, userWriteMask, UA_NODEATTRIBUTESMASK_USERWRITEMASK \
381 )
382
383// NOLINTEND(cppcoreguidelines-macro-usage)
384
385/**
386 * UA_NodeAttributes wrapper class.
387 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.24
388 */
389class NodeAttributes : public WrapperNative<UA_NodeAttributes, UA_TYPES_NODEATTRIBUTES> {
390public:
391 using Wrapper::Wrapper;
392
394};
395
396/**
397 * UA_ObjectAttributes wrapper class.
398 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.24.2
399 */
400class ObjectAttributes : public WrapperNative<UA_ObjectAttributes, UA_TYPES_OBJECTATTRIBUTES> {
401public:
402 using Wrapper::Wrapper;
403
404 /// Construct with default attribute definitions.
407
410 Bitmask<EventNotifier>, EventNotifier, eventNotifier, UA_NODEATTRIBUTESMASK_EVENTNOTIFIER
412};
413
414/**
415 * UA_VariableAttributes wrapper class.
416 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.24.3
417 */
419 : public WrapperNative<UA_VariableAttributes, UA_TYPES_VARIABLEATTRIBUTES> {
420public:
421 using Wrapper::Wrapper;
422
423 /// Construct with default attribute definitions.
426
428 UAPP_NODEATTR_WRAPPER(Variant, Value, value, UA_NODEATTRIBUTESMASK_VALUE)
429
430 /// @deprecated Use setValue(Variant{...}) instead
431 template <typename... Args>
432 [[deprecated("use setValue(Variant{...}) instead")]]
433 auto& setValueScalar(Args&&... args) {
434 return setValue(Variant{std::forward<Args>(args)...});
435 }
436
437 /// @deprecated Use setValue(Variant{...}) instead
438 template <typename... Args>
439 [[deprecated("use setValue(Variant{...}) instead")]]
440 auto& setValueArray(Args&&... args) {
441 return setValue(Variant{std::forward<Args>(args)...});
442 }
443
444 UAPP_NODEATTR_WRAPPER(NodeId, DataType, dataType, UA_NODEATTRIBUTESMASK_DATATYPE)
445
446 /// @overload
447 /// Deduce the `dataType` from the template type.
448 template <typename T>
449 auto& setDataType() {
450 return setDataType(asWrapper<NodeId>(opcua::getDataType<T>().typeId));
451 }
452
453 UAPP_NODEATTR_CAST(ValueRank, ValueRank, valueRank, UA_NODEATTRIBUTESMASK_VALUERANK)
455 uint32_t,
456 ArrayDimensions,
457 arrayDimensions,
458 arrayDimensionsSize,
459 UA_NODEATTRIBUTESMASK_ARRAYDIMENSIONS
462 Bitmask<AccessLevel>, AccessLevel, accessLevel, UA_NODEATTRIBUTESMASK_ACCESSLEVEL
466 UserAccessLevel,
467 userAccessLevel,
468 UA_NODEATTRIBUTESMASK_USERACCESSLEVEL
471 double,
472 MinimumSamplingInterval,
473 minimumSamplingInterval,
474 UA_NODEATTRIBUTESMASK_MINIMUMSAMPLINGINTERVAL
476 UAPP_NODEATTR(bool, Historizing, historizing, UA_NODEATTRIBUTESMASK_HISTORIZING)
477};
478
479/**
480 * UA_MethodAttributes wrapper class.
481 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.24.4
482 */
483class MethodAttributes : public WrapperNative<UA_MethodAttributes, UA_TYPES_METHODATTRIBUTES> {
484public:
485 using Wrapper::Wrapper;
486
487 /// Construct with default attribute definitions.
490
492 UAPP_NODEATTR(bool, Executable, executable, UA_NODEATTRIBUTESMASK_EXECUTABLE)
493 UAPP_NODEATTR(bool, UserExecutable, userExecutable, UA_NODEATTRIBUTESMASK_USEREXECUTABLE)
494};
495
496/**
497 * UA_ObjectTypeAttributes wrapper class.
498 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.24.5
499 */
501 : public WrapperNative<UA_ObjectTypeAttributes, UA_TYPES_OBJECTTYPEATTRIBUTES> {
502public:
503 using Wrapper::Wrapper;
504
505 /// Construct with default attribute definitions.
508
510 UAPP_NODEATTR(bool, IsAbstract, isAbstract, UA_NODEATTRIBUTESMASK_ISABSTRACT)
511};
512
513/**
514 * UA_VariableAttributes wrapper class.
515 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.24.6
516 */
518 : public WrapperNative<UA_VariableTypeAttributes, UA_TYPES_VARIABLETYPEATTRIBUTES> {
519public:
520 using Wrapper::Wrapper;
521
522 /// Construct with default attribute definitions.
525
527 UAPP_NODEATTR_WRAPPER(Variant, Value, value, UA_NODEATTRIBUTESMASK_VALUE)
528
529 /// @deprecated Use setValue(Variant{...}) instead
530 template <typename... Args>
531 [[deprecated("use setValue(Variant{...}) instead")]]
532 auto& setValueScalar(Args&&... args) {
533 return setValue(Variant{std::forward<Args>(args)...});
534 }
535
536 /// @deprecated Use setValue(Variant{...}) instead
537 template <typename... Args>
538 [[deprecated("use setValue(Variant{...}) instead")]]
539 auto& setValueArray(Args&&... args) {
540 return setValue(Variant{std::forward<Args>(args)...});
541 }
542
543 UAPP_NODEATTR_WRAPPER(NodeId, DataType, dataType, UA_NODEATTRIBUTESMASK_DATATYPE)
544
545 /// @overload
546 /// Deduce the `dataType` from the template type.
547 template <typename T>
548 auto& setDataType() {
549 return setDataType(asWrapper<NodeId>(opcua::getDataType<T>().typeId));
550 }
551
552 UAPP_NODEATTR_CAST(ValueRank, ValueRank, valueRank, UA_NODEATTRIBUTESMASK_VALUERANK)
554 uint32_t,
555 ArrayDimensions,
556 arrayDimensions,
557 arrayDimensionsSize,
558 UA_NODEATTRIBUTESMASK_ARRAYDIMENSIONS
560 UAPP_NODEATTR(bool, IsAbstract, isAbstract, UA_NODEATTRIBUTESMASK_ISABSTRACT)
561};
562
563/**
564 * UA_ReferenceTypeAttributes wrapper class.
565 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.24.7
566 */
568 : public WrapperNative<UA_ReferenceTypeAttributes, UA_TYPES_REFERENCETYPEATTRIBUTES> {
569public:
570 using Wrapper::Wrapper;
571
572 /// Construct with default attribute definitions.
575
577 UAPP_NODEATTR(bool, IsAbstract, isAbstract, UA_NODEATTRIBUTESMASK_ISABSTRACT)
578 UAPP_NODEATTR(bool, Symmetric, symmetric, UA_NODEATTRIBUTESMASK_SYMMETRIC)
580 LocalizedText, InverseName, inverseName, UA_NODEATTRIBUTESMASK_INVERSENAME
582};
583
584/**
585 * UA_DataTypeAttributes wrapper class.
586 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.24.8
587 */
589 : public WrapperNative<UA_DataTypeAttributes, UA_TYPES_DATATYPEATTRIBUTES> {
590public:
591 using Wrapper::Wrapper;
592
593 /// Construct with default attribute definitions.
596
598 UAPP_NODEATTR(bool, IsAbstract, isAbstract, UA_NODEATTRIBUTESMASK_ISABSTRACT)
599};
600
601/**
602 * UA_ViewAttributes wrapper class.
603 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.24.9
604 */
605class ViewAttributes : public WrapperNative<UA_ViewAttributes, UA_TYPES_VIEWATTRIBUTES> {
606public:
607 using Wrapper::Wrapper;
608
609 /// Construct with default attribute definitions.
612
614 UAPP_NODEATTR(bool, IsAbstract, containsNoLoops, UA_NODEATTRIBUTESMASK_CONTAINSNOLOOPS)
616 Bitmask<EventNotifier>, EventNotifier, eventNotifier, UA_NODEATTRIBUTESMASK_EVENTNOTIFIER
618};
619
620#undef UAPP_NODEATTR
621#undef UAPP_NODEATTR_CAST
622#undef UAPP_NODEATTR_WRAPPER
623#undef UAPP_NODEATTR_ARRAY
624#undef UAPP_NODEATTR_COMMON
625
626/* ---------------------------------------------------------------------------------------------- */
627
628/**
629 * UA_UserIdentityToken wrapper class.
630 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.41
631 */
632class UserIdentityToken : public WrapperNative<UA_UserIdentityToken, UA_TYPES_USERIDENTITYTOKEN> {
633public:
634 using Wrapper::Wrapper;
635
637};
638
639/**
640 * UA_AnonymousIdentityToken wrapper class.
641 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.41.3
642 */
644 : public WrapperNative<UA_AnonymousIdentityToken, UA_TYPES_ANONYMOUSIDENTITYTOKEN> {
645public:
646 using Wrapper::Wrapper;
647
649};
650
651/**
652 * UA_UserNameIdentityToken wrapper class.
653 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.41.4
654 */
656 : public WrapperNative<UA_UserNameIdentityToken, UA_TYPES_USERNAMEIDENTITYTOKEN> {
657public:
658 using Wrapper::Wrapper;
659
661 std::string_view userName,
662 std::string_view password,
663 std::string_view encryptionAlgorithm = {}
664 ) {
665 handle()->userName = detail::makeNative(userName);
666 handle()->password = detail::makeNative(password);
667 handle()->encryptionAlgorithm = detail::makeNative(encryptionAlgorithm);
668 }
669
673 UAPP_GETTER_WRAPPER(String, encryptionAlgorithm)
674};
675
676/**
677 * UA_X509IdentityToken wrapper class.
678 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.41.5
679 */
680class X509IdentityToken : public WrapperNative<UA_X509IdentityToken, UA_TYPES_X509IDENTITYTOKEN> {
681public:
682 using Wrapper::Wrapper;
683
684 explicit X509IdentityToken(ByteString certificateData) {
685 handle()->certificateData = detail::makeNative(std::move(certificateData));
686 }
687
690};
691
692/**
693 * UA_IssuedIdentityToken wrapper class.
694 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.41.6
695 */
697 : public WrapperNative<UA_IssuedIdentityToken, UA_TYPES_ISSUEDIDENTITYTOKEN> {
698public:
699 using Wrapper::Wrapper;
700
701 explicit IssuedIdentityToken(ByteString tokenData, std::string_view encryptionAlgorithm = {}) {
702 handle()->tokenData = detail::makeNative(std::move(tokenData));
703 handle()->encryptionAlgorithm = detail::makeNative(encryptionAlgorithm);
704 }
705
708 UAPP_GETTER_WRAPPER(String, encryptionAlgorithm)
709};
710
711/**
712 * UA_AddNodesItem wrapper class.
713 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.2
714 */
715class AddNodesItem : public WrapperNative<UA_AddNodesItem, UA_TYPES_ADDNODESITEM> {
716public:
717 using Wrapper::Wrapper;
718
720 ExpandedNodeId parentNodeId,
721 NodeId referenceTypeId,
722 ExpandedNodeId requestedNewNodeId,
723 QualifiedName browseName,
724 NodeClass nodeClass,
725 ExtensionObject nodeAttributes,
726 ExpandedNodeId typeDefinition
727 ) {
728 handle()->parentNodeId = detail::makeNative(std::move(parentNodeId));
729 handle()->referenceTypeId = detail::makeNative(std::move(referenceTypeId));
730 handle()->requestedNewNodeId = detail::makeNative(std::move(requestedNewNodeId));
731 handle()->browseName = detail::makeNative(std::move(browseName));
732 handle()->nodeClass = static_cast<UA_NodeClass>(nodeClass);
733 handle()->nodeAttributes = detail::makeNative(std::move(nodeAttributes));
734 handle()->typeDefinition = detail::makeNative(std::move(typeDefinition));
735 }
736
738 UAPP_GETTER_WRAPPER(NodeId, referenceTypeId)
744};
745
746/**
747 * UA_AddNodesResult wrapper class.
748 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.2
749 */
750class AddNodesResult : public WrapperNative<UA_AddNodesResult, UA_TYPES_ADDNODESRESULT> {
751public:
752 using Wrapper::Wrapper;
753
756};
757
758/**
759 * UA_AddNodesRequest wrapper class.
760 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.2
761 */
762class AddNodesRequest : public WrapperNative<UA_AddNodesRequest, UA_TYPES_ADDNODESREQUEST> {
763public:
764 using Wrapper::Wrapper;
765
767 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
768 handle()->nodesToAddSize = nodesToAdd.size();
769 handle()->nodesToAdd = detail::makeNativeArray(nodesToAdd);
770 }
771
773 UAPP_GETTER_SPAN_WRAPPER(AddNodesItem, nodesToAdd, nodesToAddSize)
774};
775
776/**
777 * UA_AddNodesResponse wrapper class.
778 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.2
779 */
780class AddNodesResponse : public WrapperNative<UA_AddNodesResponse, UA_TYPES_ADDNODESRESPONSE> {
781public:
782 using Wrapper::Wrapper;
783
786 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
787};
788
789/**
790 * UA_AddReferencesItem wrapper class.
791 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.3
792 */
793class AddReferencesItem : public WrapperNative<UA_AddReferencesItem, UA_TYPES_ADDREFERENCESITEM> {
794public:
795 using Wrapper::Wrapper;
796
798 NodeId sourceNodeId,
799 NodeId referenceTypeId,
800 bool isForward,
801 std::string_view targetServerUri,
802 ExpandedNodeId targetNodeId,
803 NodeClass targetNodeClass
804 ) {
805 handle()->sourceNodeId = detail::makeNative(std::move(sourceNodeId));
806 handle()->referenceTypeId = detail::makeNative(std::move(referenceTypeId));
807 handle()->isForward = isForward;
808 handle()->targetServerUri = detail::makeNative(targetServerUri);
809 handle()->targetNodeId = detail::makeNative(std::move(targetNodeId));
810 handle()->targetNodeClass = static_cast<UA_NodeClass>(targetNodeClass);
811 }
812
814 UAPP_GETTER_WRAPPER(NodeId, referenceTypeId)
815 UAPP_GETTER(bool, isForward)
816 UAPP_GETTER_WRAPPER(String, targetServerUri)
818 UAPP_GETTER_CAST(NodeClass, targetNodeClass)
819};
820
821/**
822 * UA_AddReferencesRequest wrapper class.
823 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.3
824 */
826 : public WrapperNative<UA_AddReferencesRequest, UA_TYPES_ADDREFERENCESREQUEST> {
827public:
828 using Wrapper::Wrapper;
829
831 RequestHeader requestHeader, Span<const AddReferencesItem> referencesToAdd
832 ) {
833 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
834 handle()->referencesToAddSize = referencesToAdd.size();
835 handle()->referencesToAdd = detail::makeNativeArray(referencesToAdd);
836 }
837
839 UAPP_GETTER_SPAN_WRAPPER(AddReferencesItem, referencesToAdd, referencesToAddSize)
840};
841
842/**
843 * UA_AddReferencesResponse wrapper class.
844 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.3
845 */
847 : public WrapperNative<UA_AddReferencesResponse, UA_TYPES_ADDREFERENCESRESPONSE> {
848public:
849 using Wrapper::Wrapper;
850
853 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
854};
855
856/**
857 * UA_DeleteNodesItem wrapper class.
858 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.4
859 */
860class DeleteNodesItem : public WrapperNative<UA_DeleteNodesItem, UA_TYPES_DELETENODESITEM> {
861public:
862 using Wrapper::Wrapper;
863
864 DeleteNodesItem(NodeId nodeId, bool deleteTargetReferences) {
865 handle()->nodeId = detail::makeNative(std::move(nodeId));
866 handle()->deleteTargetReferences = deleteTargetReferences;
867 }
868
870 UAPP_GETTER(bool, deleteTargetReferences)
871};
872
873/**
874 * UA_DeleteNodesRequest wrapper class.
875 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.4
876 */
878 : public WrapperNative<UA_DeleteNodesRequest, UA_TYPES_DELETENODESREQUEST> {
879public:
880 using Wrapper::Wrapper;
881
883 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
884 handle()->nodesToDeleteSize = nodesToDelete.size();
885 handle()->nodesToDelete = detail::makeNativeArray(nodesToDelete);
886 }
887
889 UAPP_GETTER_SPAN_WRAPPER(DeleteNodesItem, nodesToDelete, nodesToDeleteSize)
890};
891
892/**
893 * UA_DeleteNodesResponse wrapper class.
894 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.4
895 */
897 : public WrapperNative<UA_DeleteNodesResponse, UA_TYPES_DELETENODESRESPONSE> {
898public:
899 using Wrapper::Wrapper;
900
903 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
904};
905
906/**
907 * UA_DeleteReferencesItem wrapper class.
908 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.5
909 */
911 : public WrapperNative<UA_DeleteReferencesItem, UA_TYPES_DELETEREFERENCESITEM> {
912public:
913 using Wrapper::Wrapper;
914
916 NodeId sourceNodeId,
917 NodeId referenceTypeId,
918 bool isForward,
919 ExpandedNodeId targetNodeId,
920 bool deleteBidirectional
921 ) {
922 handle()->sourceNodeId = detail::makeNative(std::move(sourceNodeId));
923 handle()->referenceTypeId = detail::makeNative(std::move(referenceTypeId));
924 handle()->isForward = isForward;
925 handle()->targetNodeId = detail::makeNative(std::move(targetNodeId));
926 handle()->deleteBidirectional = deleteBidirectional;
927 }
928
930 UAPP_GETTER_WRAPPER(NodeId, referenceTypeId)
931 UAPP_GETTER(bool, isForward)
933 UAPP_GETTER(bool, deleteBidirectional)
934};
935
936/**
937 * UA_DeleteReferencesRequest wrapper class.
938 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.5
939 */
941 : public WrapperNative<UA_DeleteReferencesRequest, UA_TYPES_DELETEREFERENCESREQUEST> {
942public:
943 using Wrapper::Wrapper;
944
946 RequestHeader requestHeader, Span<const DeleteReferencesItem> referencesToDelete
947 ) {
948 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
949 handle()->referencesToDeleteSize = referencesToDelete.size();
950 handle()->referencesToDelete = detail::makeNativeArray(referencesToDelete);
951 }
952
954 UAPP_GETTER_SPAN_WRAPPER(DeleteReferencesItem, referencesToDelete, referencesToDeleteSize)
955};
956
957/**
958 * UA_DeleteReferencesResponse wrapper class.
959 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.7.5
960 */
962 : public WrapperNative<UA_DeleteReferencesResponse, UA_TYPES_DELETEREFERENCESRESPONSE> {
963public:
964 using Wrapper::Wrapper;
965
968 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
969};
970
971/**
972 * UA_ViewDescription wrapper class.
973 */
974class ViewDescription : public WrapperNative<UA_ViewDescription, UA_TYPES_VIEWDESCRIPTION> {
975public:
976 using Wrapper::Wrapper;
977
978 ViewDescription(NodeId viewId, DateTime timestamp, uint32_t viewVersion) {
979 handle()->viewId = detail::makeNative(std::move(viewId));
980 handle()->timestamp = timestamp;
981 handle()->viewVersion = viewVersion;
982 }
983
986 UAPP_GETTER(uint32_t, viewVersion)
987};
988
989/**
990 * Browse direction.
991 * An enumeration that specifies the direction of references to follow.
992 * @see UA_BrowseDirection
993 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.5
994 */
995enum class BrowseDirection : int32_t {
996 // clang-format off
997 Forward = 0,
998 Inverse = 1,
999 Both = 2,
1000 Invalid = 3,
1001 // clang-format on
1002};
1003
1004/**
1005 * Browse result mask.
1006 *
1007 * The enum can be used as a bitmask and allows bitwise operations, e.g.:
1008 * @code
1009 * auto mask = BrowseResultMask::ReferenceTypeId | BrowseResultMask::IsForward;
1010 * @endcode
1011 *
1012 * @see UA_BrowseResultMask
1013 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.8.2
1014 */
1029
1030constexpr std::true_type isBitmaskEnum(BrowseResultMask);
1031
1032/**
1033 * UA_BrowseDescription wrapper class.
1034 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.8.2
1035 */
1036class BrowseDescription : public WrapperNative<UA_BrowseDescription, UA_TYPES_BROWSEDESCRIPTION> {
1037public:
1038 using Wrapper::Wrapper;
1039
1041 NodeId nodeId,
1042 BrowseDirection browseDirection,
1043 NodeId referenceTypeId = ReferenceTypeId::References,
1044 bool includeSubtypes = true,
1045 Bitmask<NodeClass> nodeClassMask = NodeClass::Unspecified,
1046 Bitmask<BrowseResultMask> resultMask = BrowseResultMask::All
1047 ) {
1048 handle()->nodeId = detail::makeNative(std::move(nodeId));
1049 handle()->browseDirection = static_cast<UA_BrowseDirection>(browseDirection);
1050 handle()->referenceTypeId = detail::makeNative(std::move(referenceTypeId));
1051 handle()->includeSubtypes = includeSubtypes;
1052 handle()->nodeClassMask = nodeClassMask.get();
1053 handle()->resultMask = resultMask.get();
1054 }
1055
1058 UAPP_GETTER_WRAPPER(NodeId, referenceTypeId)
1059 UAPP_GETTER(bool, includeSubtypes)
1062};
1063
1064/**
1065 * UA_BrowseRequest wrapper class.
1066 */
1067class BrowseRequest : public WrapperNative<UA_BrowseRequest, UA_TYPES_BROWSEREQUEST> {
1068public:
1069 using Wrapper::Wrapper;
1070
1072 RequestHeader requestHeader,
1073 ViewDescription view,
1074 uint32_t requestedMaxReferencesPerNode,
1075 Span<const BrowseDescription> nodesToBrowse
1076 ) {
1077 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
1078 handle()->view = detail::makeNative(std::move(view));
1079 handle()->requestedMaxReferencesPerNode = requestedMaxReferencesPerNode;
1080 handle()->nodesToBrowseSize = nodesToBrowse.size();
1081 handle()->nodesToBrowse = detail::makeNativeArray(nodesToBrowse);
1082 }
1083
1086 UAPP_GETTER(uint32_t, requestedMaxReferencesPerNode)
1087 UAPP_GETTER_SPAN_WRAPPER(BrowseDescription, nodesToBrowse, nodesToBrowseSize)
1088};
1089
1090/**
1091 * UA_ReferenceDescription wrapper class.
1092 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.30
1093 */
1095 : public WrapperNative<UA_ReferenceDescription, UA_TYPES_REFERENCEDESCRIPTION> {
1096public:
1097 using Wrapper::Wrapper;
1098
1099 UAPP_GETTER_WRAPPER(NodeId, referenceTypeId)
1100 UAPP_GETTER(bool, isForward)
1106};
1107
1108/**
1109 * UA_BrowseResult wrapper class.
1110 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.6
1111 */
1112class BrowseResult : public WrapperNative<UA_BrowseResult, UA_TYPES_BROWSERESULT> {
1113public:
1114 using Wrapper::Wrapper;
1115
1119};
1120
1121/**
1122 * UA_BrowseResponse wrapper class.
1123 */
1124class BrowseResponse : public WrapperNative<UA_BrowseResponse, UA_TYPES_BROWSERESPONSE> {
1125public:
1126 using Wrapper::Wrapper;
1127
1130 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
1131};
1132
1133/**
1134 * UA_BrowseNextRequest wrapper class.
1135 */
1136class BrowseNextRequest : public WrapperNative<UA_BrowseNextRequest, UA_TYPES_BROWSENEXTREQUEST> {
1137public:
1138 using Wrapper::Wrapper;
1139
1141 RequestHeader requestHeader,
1142 bool releaseContinuationPoints,
1143 Span<const ByteString> continuationPoints
1144 ) {
1145 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
1146 handle()->releaseContinuationPoints = releaseContinuationPoints;
1147 handle()->continuationPointsSize = continuationPoints.size();
1148 handle()->continuationPoints = detail::makeNativeArray(continuationPoints);
1149 }
1150
1152 UAPP_GETTER(bool, releaseContinuationPoints)
1153 UAPP_GETTER_SPAN_WRAPPER(ByteString, continuationPoints, continuationPointsSize)
1154};
1155
1156/**
1157 * UA_BrowseNextResponse wrapper class.
1158 */
1160 : public WrapperNative<UA_BrowseNextResponse, UA_TYPES_BROWSENEXTRESPONSE> {
1161public:
1162 using Wrapper::Wrapper;
1163
1166 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
1167};
1168
1169/**
1170 * UA_RelativePathElement wrapper class.
1171 */
1173 : public WrapperNative<UA_RelativePathElement, UA_TYPES_RELATIVEPATHELEMENT> {
1174public:
1175 using Wrapper::Wrapper;
1176
1178 NodeId referenceTypeId, bool isInverse, bool includeSubtypes, QualifiedName targetName
1179 ) {
1180 handle()->referenceTypeId = detail::makeNative(std::move(referenceTypeId));
1181 handle()->isInverse = isInverse;
1182 handle()->includeSubtypes = includeSubtypes;
1183 handle()->targetName = detail::makeNative(std::move(targetName));
1184 }
1185
1186 UAPP_GETTER_WRAPPER(NodeId, referenceTypeId)
1187 UAPP_GETTER(bool, isInverse)
1188 UAPP_GETTER(bool, includeSubtypes)
1190};
1191
1192/**
1193 * UA_RelativePath wrapper class.
1194 */
1195class RelativePath : public WrapperNative<UA_RelativePath, UA_TYPES_RELATIVEPATH> {
1196public:
1197 using Wrapper::Wrapper;
1198
1199 RelativePath(std::initializer_list<RelativePathElement> elements)
1200 : RelativePath({elements.begin(), elements.size()}) {}
1201
1203 handle()->elementsSize = elements.size();
1204 handle()->elements = detail::makeNativeArray(elements);
1205 }
1206
1208};
1209
1210/**
1211 * UA_BrowsePath wrapper class.
1212 */
1213class BrowsePath : public WrapperNative<UA_BrowsePath, UA_TYPES_BROWSEPATH> {
1214public:
1215 using Wrapper::Wrapper;
1216
1217 BrowsePath(NodeId startingNode, RelativePath relativePath) {
1218 handle()->startingNode = detail::makeNative(std::move(startingNode));
1219 handle()->relativePath = detail::makeNative(std::move(relativePath));
1220 }
1221
1224};
1225
1226/**
1227 * UA_BrowsePathTarget wrapper class.
1228 */
1229class BrowsePathTarget : public WrapperNative<UA_BrowsePathTarget, UA_TYPES_BROWSEPATHTARGET> {
1230public:
1231 using Wrapper::Wrapper;
1232
1234 UAPP_GETTER(uint32_t, remainingPathIndex)
1235};
1236
1237/**
1238 * UA_BrowsePathResult wrapper class.
1239 */
1240class BrowsePathResult : public WrapperNative<UA_BrowsePathResult, UA_TYPES_BROWSEPATHRESULT> {
1241public:
1242 using Wrapper::Wrapper;
1243
1246};
1247
1248/**
1249 * UA_TranslateBrowsePathsToNodeIdsRequest wrapper class.
1250 */
1252 : public WrapperNative<
1254 UA_TYPES_TRANSLATEBROWSEPATHSTONODEIDSREQUEST> {
1255public:
1256 using Wrapper::Wrapper;
1257
1259 RequestHeader requestHeader, Span<const BrowsePath> browsePaths
1260 ) {
1261 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
1262 handle()->browsePathsSize = browsePaths.size();
1263 handle()->browsePaths = detail::makeNativeArray(browsePaths);
1264 }
1265
1267 UAPP_GETTER_SPAN_WRAPPER(BrowsePath, browsePaths, browsePathsSize)
1268};
1269
1270/**
1271 * UA_TranslateBrowsePathsToNodeIdsResponse wrapper class.
1272 */
1274 : public WrapperNative<
1276 UA_TYPES_TRANSLATEBROWSEPATHSTONODEIDSRESPONSE> {
1277public:
1278 using Wrapper::Wrapper;
1279
1282 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
1283};
1284
1285/**
1286 * UA_RegisterNodesRequest wrapper class.
1287 */
1289 : public WrapperNative<UA_RegisterNodesRequest, UA_TYPES_REGISTERNODESREQUEST> {
1290public:
1291 using Wrapper::Wrapper;
1292
1294 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
1295 handle()->nodesToRegisterSize = nodesToRegister.size();
1296 handle()->nodesToRegister = detail::makeNativeArray(nodesToRegister);
1297 }
1298
1300 UAPP_GETTER_SPAN_WRAPPER(NodeId, nodesToRegister, nodesToRegisterSize)
1301};
1302
1303/**
1304 * UA_RegisterNodesResponse wrapper class.
1305 */
1307 : public WrapperNative<UA_RegisterNodesResponse, UA_TYPES_REGISTERNODESRESPONSE> {
1308public:
1309 using Wrapper::Wrapper;
1310
1312 UAPP_GETTER_SPAN_WRAPPER(NodeId, registeredNodeIds, registeredNodeIdsSize)
1313};
1314
1315/**
1316 * UA_UnregisterNodesRequest wrapper class.
1317 */
1319 : public WrapperNative<UA_UnregisterNodesRequest, UA_TYPES_UNREGISTERNODESREQUEST> {
1320public:
1321 using Wrapper::Wrapper;
1322
1323 UnregisterNodesRequest(RequestHeader requestHeader, Span<const NodeId> nodesToUnregister) {
1324 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
1325 handle()->nodesToUnregisterSize = nodesToUnregister.size();
1326 handle()->nodesToUnregister = detail::makeNativeArray(nodesToUnregister);
1327 }
1328
1330 UAPP_GETTER_SPAN_WRAPPER(NodeId, nodesToUnregister, nodesToUnregisterSize)
1331};
1332
1333/**
1334 * UA_UnregisterNodesResponse wrapper class.
1335 */
1337 : public WrapperNative<UA_UnregisterNodesResponse, UA_TYPES_UNREGISTERNODESRESPONSE> {
1338public:
1339 using Wrapper::Wrapper;
1340
1342};
1343
1344/**
1345 * Timestamps to return.
1346 * @see UA_TimestampsToReturn
1347 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.40
1348 */
1349enum class TimestampsToReturn : int32_t {
1350 // clang-format off
1351 Source = 0,
1352 Server = 1,
1353 Both = 2,
1354 Neither = 3,
1355 Invalid = 4,
1356 // clang-format on
1357};
1358
1359/**
1360 * UA_ReadValueId wrapper class.
1361 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.29
1362 */
1363class ReadValueId : public WrapperNative<UA_ReadValueId, UA_TYPES_READVALUEID> {
1364public:
1365 using Wrapper::Wrapper;
1366
1368 NodeId nodeId,
1369 AttributeId attributeId,
1370 std::string_view indexRange = {},
1371 QualifiedName dataEncoding = {}
1372 ) {
1373 handle()->nodeId = detail::makeNative(std::move(nodeId));
1374 handle()->attributeId = detail::makeNative(attributeId);
1375 handle()->indexRange = detail::makeNative(indexRange);
1376 handle()->dataEncoding = detail::makeNative(std::move(dataEncoding));
1377 }
1378
1383};
1384
1385/**
1386 * UA_ReadRequest wrapper class.
1387 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10.2
1388 */
1389class ReadRequest : public WrapperNative<UA_ReadRequest, UA_TYPES_READREQUEST> {
1390public:
1391 using Wrapper::Wrapper;
1392
1394 RequestHeader requestHeader,
1395 double maxAge,
1396 TimestampsToReturn timestampsToReturn,
1397 Span<const ReadValueId> nodesToRead
1398 ) {
1399 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
1400 handle()->maxAge = maxAge;
1401 handle()->timestampsToReturn = static_cast<UA_TimestampsToReturn>(timestampsToReturn);
1402 handle()->nodesToReadSize = nodesToRead.size();
1403 handle()->nodesToRead = detail::makeNativeArray(nodesToRead);
1404 }
1405
1407 UAPP_GETTER(double, maxAge)
1409 UAPP_GETTER_SPAN_WRAPPER(ReadValueId, nodesToRead, nodesToReadSize)
1410};
1411
1412/**
1413 * UA_ReadResponse wrapper class.
1414 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10.2
1415 */
1416class ReadResponse : public WrapperNative<UA_ReadResponse, UA_TYPES_READRESPONSE> {
1417public:
1418 using Wrapper::Wrapper;
1419
1422 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
1423};
1424
1425/**
1426 * UA_WriteValue wrapper class.
1427 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10.4
1428 */
1429class WriteValue : public WrapperNative<UA_WriteValue, UA_TYPES_WRITEVALUE> {
1430public:
1431 using Wrapper::Wrapper;
1432
1434 NodeId nodeId, AttributeId attributeId, std::string_view indexRange, DataValue value
1435 ) {
1436 handle()->nodeId = detail::makeNative(std::move(nodeId));
1437 handle()->attributeId = detail::makeNative(attributeId);
1438 handle()->indexRange = detail::makeNative(indexRange);
1439 handle()->value = detail::makeNative(std::move(value));
1440 }
1441
1446};
1447
1448/**
1449 * UA_WriteRequest wrapper class.
1450 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10.4
1451 */
1452class WriteRequest : public WrapperNative<UA_WriteRequest, UA_TYPES_WRITEREQUEST> {
1453public:
1454 using Wrapper::Wrapper;
1455
1457 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
1458 handle()->nodesToWriteSize = nodesToWrite.size();
1459 handle()->nodesToWrite = detail::makeNativeArray(nodesToWrite);
1460 }
1461
1463 UAPP_GETTER_SPAN_WRAPPER(WriteValue, nodesToWrite, nodesToWriteSize)
1464};
1465
1466/**
1467 * UA_WriteResponse wrapper class.
1468 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.10.4
1469 */
1470class WriteResponse : public WrapperNative<UA_WriteResponse, UA_TYPES_WRITERESPONSE> {
1471public:
1472 using Wrapper::Wrapper;
1473
1476 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
1477};
1478
1479/**
1480 * UA_BuildInfo wrapper class.
1481 * @see https://reference.opcfoundation.org/Core/Part5/v105/docs/12.4
1482 */
1483class BuildInfo : public WrapperNative<UA_BuildInfo, UA_TYPES_BUILDINFO> {
1484public:
1485 using Wrapper::Wrapper;
1486
1488 std::string_view productUri,
1489 std::string_view manufacturerName,
1490 std::string_view productName,
1491 std::string_view softwareVersion,
1492 std::string_view buildNumber,
1493 DateTime buildDate
1494 ) {
1495 handle()->productUri = detail::makeNative(productUri);
1496 handle()->manufacturerName = detail::makeNative(manufacturerName);
1497 handle()->productName = detail::makeNative(productName);
1498 handle()->softwareVersion = detail::makeNative(softwareVersion);
1499 handle()->buildNumber = detail::makeNative(buildNumber);
1500 handle()->buildDate = detail::makeNative(std::move(buildDate));
1501 }
1502
1504 UAPP_GETTER_WRAPPER(String, manufacturerName);
1506 UAPP_GETTER_WRAPPER(String, softwareVersion);
1509};
1510
1511/* ------------------------------------------- Method ------------------------------------------- */
1512
1513#ifdef UA_ENABLE_METHODCALLS
1514
1515/**
1516 * UA_Argument wrapper class.
1517 * @see https://reference.opcfoundation.org/Core/Part3/v105/docs/8.6
1518 */
1519class Argument : public WrapperNative<UA_Argument, UA_TYPES_ARGUMENT> {
1520public:
1521 using Wrapper::Wrapper;
1522
1524 std::string_view name,
1525 LocalizedText description,
1526 NodeId dataType,
1527 ValueRank valueRank = {},
1528 Span<const uint32_t> arrayDimensions = {}
1529 ) {
1530 handle()->name = detail::makeNative(name);
1531 handle()->description = detail::makeNative(std::move(description));
1532 handle()->dataType = detail::makeNative(std::move(dataType));
1533 handle()->valueRank = detail::makeNative(valueRank);
1534 handle()->arrayDimensionsSize = arrayDimensions.size();
1535 handle()->arrayDimensions = detail::makeNativeArray(arrayDimensions);
1536 }
1537
1542 UAPP_GETTER_SPAN(uint32_t, arrayDimensions, arrayDimensionsSize)
1543};
1544
1545/**
1546 * UA_CallMethodRequest wrapper class.
1547 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.11.2
1548 */
1549class CallMethodRequest : public WrapperNative<UA_CallMethodRequest, UA_TYPES_CALLMETHODREQUEST> {
1550public:
1551 using Wrapper::Wrapper;
1552
1553 CallMethodRequest(NodeId objectId, NodeId methodId, Span<const Variant> inputArguments) {
1554 handle()->objectId = detail::makeNative(std::move(objectId));
1555 handle()->methodId = detail::makeNative(std::move(methodId));
1556 handle()->inputArgumentsSize = inputArguments.size();
1557 handle()->inputArguments = detail::makeNativeArray(inputArguments);
1558 }
1559
1562 UAPP_GETTER_SPAN_WRAPPER(Variant, inputArguments, inputArgumentsSize)
1563};
1564
1565/**
1566 * UA_CallMethodResult wrapper class.
1567 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.11.2
1568 */
1569class CallMethodResult : public WrapperNative<UA_CallMethodResult, UA_TYPES_CALLMETHODRESULT> {
1570public:
1571 using Wrapper::Wrapper;
1572
1574 UAPP_GETTER_SPAN_WRAPPER(StatusCode, inputArgumentResults, inputArgumentResultsSize)
1576 DiagnosticInfo, inputArgumentDiagnosticInfos, inputArgumentDiagnosticInfosSize
1578 UAPP_GETTER_SPAN_WRAPPER(Variant, outputArguments, outputArgumentsSize)
1579};
1580
1581/**
1582 * UA_CallRequest wrapper class.
1583 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.11.2
1584 */
1585class CallRequest : public WrapperNative<UA_CallRequest, UA_TYPES_CALLREQUEST> {
1586public:
1587 using Wrapper::Wrapper;
1588
1590 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
1591 handle()->methodsToCallSize = methodsToCall.size();
1592 handle()->methodsToCall = detail::makeNativeArray(methodsToCall);
1593 }
1594
1596 UAPP_GETTER_SPAN_WRAPPER(CallMethodRequest, methodsToCall, methodsToCallSize)
1597};
1598
1599/**
1600 * UA_CallResponse wrapper class.
1601 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.11.2
1602 */
1603class CallResponse : public WrapperNative<UA_CallResponse, UA_TYPES_CALLRESPONSE> {
1604public:
1605 using Wrapper::Wrapper;
1606
1609 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
1610};
1611
1612#endif // UA_ENABLE_METHODCALLS
1613
1614/* ---------------------------------------- Subscriptions --------------------------------------- */
1615
1616#ifdef UA_ENABLE_SUBSCRIPTIONS
1617
1618/**
1619 * Monitoring mode.
1620 * @see UA_MonitoringMode
1621 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.23
1622 */
1623enum class MonitoringMode : int32_t {
1624 // clang-format off
1625 Disabled = 0,
1626 Sampling = 1,
1627 Reporting = 2,
1628 // clang-format on
1629};
1630
1631/**
1632 * Filter operator.
1633 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.7.3
1634 */
1635enum class FilterOperator : int32_t {
1636 // clang-format off
1637 Equals = 0,
1638 IsNull = 1,
1639 GreaterThan = 2,
1640 LessThan = 3,
1641 GreaterThanOrEqual = 4,
1642 LessThanOrEqual = 5,
1643 Like = 6,
1644 Not = 7,
1645 Between = 8,
1646 InList = 9,
1647 And = 10,
1648 Or = 11,
1649 Cast = 12,
1650 InView = 13,
1651 OfType = 14,
1652 RelatedTo = 15,
1653 BitwiseAnd = 16,
1654 BitwiseOr = 17,
1655 // clang-format on
1656};
1657
1658/**
1659 * UA_ElementOperand wrapper class.
1660 * Reference a sub-element in the ContentFilter elements array by index.
1661 * The index must be greater than the element index it is part of.
1662 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.7.4.2
1663 */
1664class ElementOperand : public WrapperNative<UA_ElementOperand, UA_TYPES_ELEMENTOPERAND> {
1665public:
1666 using Wrapper::Wrapper;
1667
1668 explicit ElementOperand(uint32_t index) {
1669 handle()->index = index;
1670 }
1671
1672 UAPP_GETTER(uint32_t, index)
1673};
1674
1675/**
1676 * UA_LiteralOperand wrapper class.
1677 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.7.4.3
1678 */
1679class LiteralOperand : public WrapperNative<UA_LiteralOperand, UA_TYPES_LITERALOPERAND> {
1680private:
1681 template <typename T>
1682 using EnableIfLiteral =
1683 std::enable_if_t<!detail::IsOneOf<T, Variant, UA_LiteralOperand, LiteralOperand>::value>;
1684
1685public:
1686 using Wrapper::Wrapper;
1687
1688 explicit LiteralOperand(Variant value) {
1689 handle()->value = detail::makeNative(std::move(value));
1690 }
1691
1692 template <typename T, typename = EnableIfLiteral<T>>
1693 explicit LiteralOperand(T&& literal)
1694 : LiteralOperand{Variant{std::forward<T>(literal)}} {}
1695
1697};
1698
1699/**
1700 * UA_AttributeOperand wrapper class.
1701 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.7.4.4
1702 */
1703class AttributeOperand : public WrapperNative<UA_AttributeOperand, UA_TYPES_ATTRIBUTEOPERAND> {
1704public:
1705 using Wrapper::Wrapper;
1706
1708 NodeId nodeId,
1709 std::string_view alias,
1710 RelativePath browsePath,
1711 AttributeId attributeId,
1712 std::string_view indexRange = {}
1713 ) {
1714 handle()->nodeId = detail::makeNative(std::move(nodeId));
1715 handle()->alias = detail::makeNative(alias);
1716 handle()->browsePath = detail::makeNative(std::move(browsePath));
1717 handle()->attributeId = detail::makeNative(attributeId);
1718 handle()->indexRange = detail::makeNative(indexRange);
1719 }
1720
1726};
1727
1728/**
1729 * UA_SimpleAttributeOperand wrapper class.
1730 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.7.4.5
1731 */
1733 : public WrapperNative<UA_SimpleAttributeOperand, UA_TYPES_SIMPLEATTRIBUTEOPERAND> {
1734public:
1735 using Wrapper::Wrapper;
1736
1738 NodeId typeDefinitionId,
1739 Span<const QualifiedName> browsePath,
1740 AttributeId attributeId,
1741 std::string_view indexRange = {}
1742 ) {
1743 handle()->typeDefinitionId = detail::makeNative(std::move(typeDefinitionId));
1744 handle()->browsePathSize = browsePath.size();
1745 handle()->browsePath = detail::makeNativeArray(browsePath);
1746 handle()->attributeId = detail::makeNative(attributeId);
1747 handle()->indexRange = detail::makeNative(indexRange);
1748 }
1749
1750 UAPP_GETTER_WRAPPER(NodeId, typeDefinitionId)
1751 UAPP_GETTER_SPAN_WRAPPER(QualifiedName, browsePath, browsePathSize)
1754};
1755
1756/**
1757 * Filter operand.
1758 *
1759 * The FilterOperand is an extensible parameter and can be of type:
1760 * - ElementOperand
1761 * - LiteralOperand
1762 * - AttributeOperand
1763 * - SimpleAttributeOperand
1764 * - ExtensionObject (other types)
1765 *
1766 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.7.4
1767 */
1768using FilterOperand = std::variant<
1774
1775/**
1776 * UA_ContentFilterElement wrapper class.
1777 *
1778 * ContentFilterElements compose a filter criteria with an operator and its operands.
1779 * ContentFilterElements can be composed to ContentFilter objects with the `&&`/`||` operators and
1780 * negated with the `!` operator.
1781 *
1782 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.7.1
1783 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/B.1
1784 */
1786 : public WrapperNative<UA_ContentFilterElement, UA_TYPES_CONTENTFILTERELEMENT> {
1787public:
1788 using Wrapper::Wrapper;
1789
1791
1793 UAPP_GETTER_SPAN_WRAPPER(ExtensionObject, filterOperands, filterOperandsSize)
1794};
1795
1796/**
1797 * UA_ContentFilter wrapper class.
1798 *
1799 * A collection of ContentFilterElement objects that define a filter criteria. The ContentFilter has
1800 * a tree-like structure with references to sub-elements (of type ElementOperand). The evaluation of
1801 * the ContentFilter starts with the first entry of the elements.
1802 * ContentFilter objects can be composed with `&&`/`||` operators and negated with the `!` operator.
1803 *
1804 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.7.1
1805 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/B.1
1806 */
1807class ContentFilter : public WrapperNative<UA_ContentFilter, UA_TYPES_CONTENTFILTER> {
1808public:
1809 using Wrapper::Wrapper;
1810
1811 ContentFilter(std::initializer_list<ContentFilterElement> elements);
1813
1815};
1816
1817/// @relates ContentFilterElement
1819/// @relates ContentFilter
1821
1822/// @relates ContentFilterElement
1824/// @relates ContentFilterElement
1825/// @relatesalso ContentFilter
1827/// @relates ContentFilter
1828/// @relatesalso ContentFilterElement
1830/// @relates ContentFilter
1832
1833/// @relates ContentFilterElement
1835/// @relates ContentFilterElement
1836/// @relatesalso ContentFilter
1838/// @relates ContentFilter
1839/// @relatesalso ContentFilterElement
1841/// @relates ContentFilter
1843
1844/**
1845 * Data change trigger.
1846 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.10
1847 */
1848enum class DataChangeTrigger : int32_t {
1849 // clang-format off
1850 Status = 0,
1851 StatusValue = 1,
1852 StatusValueTimestamp = 2,
1853 // clang-format on
1854};
1855
1856/**
1857 * Deadband type.
1858 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.22.2
1859 */
1860enum class DeadbandType : int32_t {
1861 // clang-format off
1862 None = 0,
1863 Absolute = 1,
1864 Percent = 2,
1865 // clang-format on
1866};
1867
1868/**
1869 * UA_DataChangeFilter wrapper class.
1870 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.22.2
1871 */
1872class DataChangeFilter : public WrapperNative<UA_DataChangeFilter, UA_TYPES_DATACHANGEFILTER> {
1873public:
1874 using Wrapper::Wrapper;
1875
1876 DataChangeFilter(DataChangeTrigger trigger, DeadbandType deadbandType, double deadbandValue) {
1877 handle()->trigger = static_cast<UA_DataChangeTrigger>(trigger);
1878 handle()->deadbandType = detail::makeNative(deadbandType);
1879 handle()->deadbandValue = deadbandValue;
1880 }
1881
1884 UAPP_GETTER(double, deadbandValue)
1885};
1886
1887/**
1888 * UA_EventFilter wrapper class.
1889 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.22.3
1890 */
1891class EventFilter : public WrapperNative<UA_EventFilter, UA_TYPES_EVENTFILTER> {
1892public:
1893 using Wrapper::Wrapper;
1894
1896 handle()->selectClausesSize = selectClauses.size();
1897 handle()->selectClauses = detail::makeNativeArray(selectClauses);
1898 handle()->whereClause = detail::makeNative(std::move(whereClause));
1899 }
1900
1901 UAPP_GETTER_SPAN_WRAPPER(SimpleAttributeOperand, selectClauses, selectClausesSize)
1903};
1904
1906
1907/**
1908 * UA_AggregateFilter wrapper class.
1909 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.22.4
1910 */
1911class AggregateFilter : public WrapperNative<UA_AggregateFilter, UA_TYPES_AGGREGATEFILTER> {
1912public:
1913 using Wrapper::Wrapper;
1914
1916 DateTime startTime,
1917 NodeId aggregateType,
1918 double processingInterval,
1919 AggregateConfiguration aggregateConfiguration
1920 ) {
1921 handle()->startTime = detail::makeNative(std::move(startTime));
1922 handle()->aggregateType = detail::makeNative(std::move(aggregateType));
1923 handle()->processingInterval = processingInterval;
1924 handle()->aggregateConfiguration = aggregateConfiguration; // TODO: make wrapper?
1925 }
1926
1929 UAPP_GETTER(double, processingInterval)
1930 UAPP_GETTER(AggregateConfiguration, aggregateConfiguration)
1931};
1932
1933/**
1934 * UA_MonitoringParameters wrapper class.
1935 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.21
1936 */
1938 : public WrapperNative<UA_MonitoringParameters, UA_TYPES_MONITORINGPARAMETERS> {
1939public:
1940 using Wrapper::Wrapper;
1941
1942 /// Construct with default values from open62541.
1943 /// The `clientHandle` parameter cannot be set by the user, any value will be replaced by the
1944 /// client before sending the request to the server.
1945 // NOLINTNEXTLINE(hicpp-explicit-conversions)
1947 double samplingInterval = 250.0,
1948 ExtensionObject filter = {},
1949 uint32_t queueSize = 1U,
1950 bool discardOldest = true
1951 ) {
1952 handle()->samplingInterval = samplingInterval;
1953 handle()->filter = detail::makeNative(std::move(filter));
1954 handle()->queueSize = queueSize;
1955 handle()->discardOldest = discardOldest;
1956 }
1957
1958 UAPP_GETTER(double, samplingInterval)
1960 UAPP_GETTER(uint32_t, queueSize)
1961 UAPP_GETTER(bool, discardOldest)
1962};
1963
1964/**
1965 * UA_MonitoredItemCreateRequest wrapper class.
1966 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.2
1967 */
1969 : public WrapperNative<UA_MonitoredItemCreateRequest, UA_TYPES_MONITOREDITEMCREATEREQUEST> {
1970public:
1971 using Wrapper::Wrapper;
1972
1974 ReadValueId itemToMonitor,
1975 MonitoringMode monitoringMode = MonitoringMode::Reporting,
1976 MonitoringParameters requestedParameters = {}
1977 ) {
1978 handle()->itemToMonitor = detail::makeNative(std::move(itemToMonitor));
1979 handle()->monitoringMode = static_cast<UA_MonitoringMode>(monitoringMode);
1980 handle()->requestedParameters = detail::makeNative(std::move(requestedParameters));
1981 }
1982
1986};
1987
1988/**
1989 * UA_MonitoredItemCreateResult wrapper class.
1990 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.2
1991 */
1993 : public WrapperNative<UA_MonitoredItemCreateResult, UA_TYPES_MONITOREDITEMCREATERESULT> {
1994public:
1995 using Wrapper::Wrapper;
1996
1998 UAPP_GETTER(IntegerId, monitoredItemId);
1999 UAPP_GETTER(double, revisedSamplingInterval);
2000 UAPP_GETTER(IntegerId, revisedQueueSize);
2002};
2003
2004/**
2005 * UA_CreateMonitoredItemsRequest wrapper class.
2006 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.2
2007 */
2009 : public WrapperNative<UA_CreateMonitoredItemsRequest, UA_TYPES_CREATEMONITOREDITEMSREQUEST> {
2010public:
2011 using Wrapper::Wrapper;
2012
2014 RequestHeader requestHeader,
2015 IntegerId subscriptionId,
2016 TimestampsToReturn timestampsToReturn,
2018 ) {
2019 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
2020 handle()->subscriptionId = subscriptionId;
2021 handle()->timestampsToReturn = static_cast<UA_TimestampsToReturn>(timestampsToReturn);
2022 handle()->itemsToCreateSize = itemsToCreate.size();
2023 handle()->itemsToCreate = detail::makeNativeArray(itemsToCreate);
2024 }
2025
2027 UAPP_GETTER(IntegerId, subscriptionId)
2029 UAPP_GETTER_SPAN_WRAPPER(MonitoredItemCreateRequest, itemsToCreate, itemsToCreateSize)
2030};
2031
2032/**
2033 * UA_CreateMonitoredItemsResponse wrapper class.
2034 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.2
2035 */
2037 : public WrapperNative<UA_CreateMonitoredItemsResponse, UA_TYPES_CREATEMONITOREDITEMSRESPONSE> {
2038public:
2039 using Wrapper::Wrapper;
2040
2043 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
2044};
2045
2046/**
2047 * UA_MonitoredItemModifyRequest wrapper class.
2048 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.3
2049 */
2051 : public WrapperNative<UA_MonitoredItemModifyRequest, UA_TYPES_MONITOREDITEMMODIFYREQUEST> {
2052public:
2053 using Wrapper::Wrapper;
2054
2056 IntegerId monitoredItemId, MonitoringParameters requestedParameters
2057 ) {
2058 handle()->monitoredItemId = monitoredItemId;
2059 handle()->requestedParameters = detail::makeNative(std::move(requestedParameters));
2060 }
2061
2062 UAPP_GETTER(IntegerId, monitoredItemId);
2064};
2065
2066/**
2067 * UA_MonitoredItemModifyResult wrapper class.
2068 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.3
2069 */
2071 : public WrapperNative<UA_MonitoredItemModifyResult, UA_TYPES_MONITOREDITEMMODIFYRESULT> {
2072public:
2073 using Wrapper::Wrapper;
2074
2076 UAPP_GETTER(double, revisedSamplingInterval);
2077 UAPP_GETTER(uint32_t, revisedQueueSize);
2079};
2080
2081/**
2082 * UA_ModifyMonitoredItemsRequest wrapper class.
2083 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.3
2084 */
2086 : public WrapperNative<UA_ModifyMonitoredItemsRequest, UA_TYPES_MODIFYMONITOREDITEMSREQUEST> {
2087public:
2088 using Wrapper::Wrapper;
2089
2091 RequestHeader requestHeader,
2092 IntegerId subscriptionId,
2093 TimestampsToReturn timestampsToReturn,
2095 ) {
2096 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
2097 handle()->subscriptionId = subscriptionId;
2098 handle()->timestampsToReturn = static_cast<UA_TimestampsToReturn>(timestampsToReturn);
2099 handle()->itemsToModifySize = itemsToModify.size();
2100 handle()->itemsToModify = detail::makeNativeArray(itemsToModify);
2101 }
2102
2104 UAPP_GETTER(IntegerId, subscriptionId)
2106 UAPP_GETTER_SPAN_WRAPPER(MonitoredItemModifyRequest, itemsToModify, itemsToModifySize)
2107};
2108
2109/**
2110 * UA_CreateMonitoredItemsResponse wrapper class.
2111 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.3
2112 */
2114 : public WrapperNative<UA_ModifyMonitoredItemsResponse, UA_TYPES_MODIFYMONITOREDITEMSRESPONSE> {
2115public:
2116 using Wrapper::Wrapper;
2117
2120 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
2121};
2122
2123/**
2124 * UA_SetMonitoringModeRequest wrapper class.
2125 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.4
2126 */
2128 : public WrapperNative<UA_SetMonitoringModeRequest, UA_TYPES_SETMONITORINGMODEREQUEST> {
2129public:
2130 using Wrapper::Wrapper;
2131
2133 RequestHeader requestHeader,
2134 IntegerId subscriptionId,
2135 MonitoringMode monitoringMode,
2136 Span<const IntegerId> monitoredItemIds
2137 ) {
2138 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
2139 handle()->subscriptionId = subscriptionId;
2140 handle()->monitoringMode = static_cast<UA_MonitoringMode>(monitoringMode);
2141 handle()->monitoredItemIdsSize = monitoredItemIds.size();
2142 handle()->monitoredItemIds = detail::makeNativeArray(monitoredItemIds);
2143 }
2144
2146 UAPP_GETTER(IntegerId, subscriptionId)
2148 UAPP_GETTER_SPAN(IntegerId, monitoredItemIds, monitoredItemIdsSize)
2149};
2150
2151/**
2152 * UA_SetMonitoringModeResponse wrapper class.
2153 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.4
2154 */
2156 : public WrapperNative<UA_SetMonitoringModeResponse, UA_TYPES_SETMONITORINGMODERESPONSE> {
2157public:
2158 using Wrapper::Wrapper;
2159
2161 UAPP_GETTER_SPAN_WRAPPER(StatusCode, results, resultsSize);
2162 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
2163};
2164
2165/**
2166 * UA_SetTriggeringRequest wrapper class.
2167 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.5
2168 */
2170 : public WrapperNative<UA_SetTriggeringRequest, UA_TYPES_SETTRIGGERINGREQUEST> {
2171public:
2172 using Wrapper::Wrapper;
2173
2175 RequestHeader requestHeader,
2176 IntegerId subscriptionId,
2177 IntegerId triggeringItemId,
2178 Span<const IntegerId> linksToAdd,
2179 Span<const IntegerId> linksToRemove
2180 ) {
2181 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
2182 handle()->subscriptionId = subscriptionId;
2183 handle()->triggeringItemId = triggeringItemId;
2184 handle()->linksToAddSize = linksToAdd.size();
2185 handle()->linksToAdd = detail::makeNativeArray(linksToAdd);
2186 handle()->linksToRemoveSize = linksToRemove.size();
2187 handle()->linksToRemove = detail::makeNativeArray(linksToRemove);
2188 }
2189
2191 UAPP_GETTER(IntegerId, subscriptionId)
2192 UAPP_GETTER(IntegerId, triggeringItemId)
2193 UAPP_GETTER_SPAN(IntegerId, linksToAdd, linksToAddSize)
2194 UAPP_GETTER_SPAN(IntegerId, linksToRemove, linksToRemoveSize)
2195};
2196
2197/**
2198 * UA_SetTriggeringResponse wrapper class.
2199 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.5
2200 */
2202 : public WrapperNative<UA_SetTriggeringResponse, UA_TYPES_SETTRIGGERINGRESPONSE> {
2203public:
2204 using Wrapper::Wrapper;
2205
2207 UAPP_GETTER_SPAN_WRAPPER(StatusCode, addResults, addResultsSize);
2208 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, addDiagnosticInfos, addDiagnosticInfosSize)
2209 UAPP_GETTER_SPAN_WRAPPER(StatusCode, removeResults, removeResultsSize);
2210 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, removeDiagnosticInfos, removeDiagnosticInfosSize)
2211};
2212
2213/**
2214 * UA_DeleteMonitoredItemsRequest wrapper class.
2215 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.6
2216 */
2218 : public WrapperNative<UA_DeleteMonitoredItemsRequest, UA_TYPES_DELETEMONITOREDITEMSREQUEST> {
2219public:
2220 using Wrapper::Wrapper;
2221
2223 RequestHeader requestHeader,
2224 IntegerId subscriptionId,
2225 Span<const IntegerId> monitoredItemIds
2226 ) {
2227 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
2228 handle()->subscriptionId = subscriptionId;
2229 handle()->monitoredItemIdsSize = monitoredItemIds.size();
2230 handle()->monitoredItemIds = detail::makeNativeArray(monitoredItemIds);
2231 }
2232
2234 UAPP_GETTER(IntegerId, subscriptionId)
2235 UAPP_GETTER_SPAN(IntegerId, monitoredItemIds, monitoredItemIdsSize)
2236};
2237
2238/**
2239 * UA_DeleteMonitoredItemsResponse wrapper class.
2240 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.12.6
2241 */
2243 : public WrapperNative<UA_DeleteMonitoredItemsResponse, UA_TYPES_DELETEMONITOREDITEMSRESPONSE> {
2244public:
2245 using Wrapper::Wrapper;
2246
2248 UAPP_GETTER_SPAN_WRAPPER(StatusCode, results, resultsSize);
2249 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
2250};
2251
2252/**
2253 * UA_CreateSubscriptionRequest wrapper class.
2254 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.2
2255 */
2257 : public WrapperNative<UA_CreateSubscriptionRequest, UA_TYPES_CREATESUBSCRIPTIONREQUEST> {
2258public:
2259 using Wrapper::Wrapper;
2260
2262 RequestHeader requestHeader,
2263 double requestedPublishingInterval,
2264 uint32_t requestedLifetimeCount,
2265 uint32_t requestedMaxKeepAliveCount,
2266 uint32_t maxNotificationsPerPublish,
2267 bool publishingEnabled,
2268 uint8_t priority
2269 ) {
2270 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
2271 handle()->requestedPublishingInterval = requestedPublishingInterval;
2272 handle()->requestedLifetimeCount = requestedLifetimeCount;
2273 handle()->requestedMaxKeepAliveCount = requestedMaxKeepAliveCount;
2274 handle()->maxNotificationsPerPublish = maxNotificationsPerPublish;
2275 handle()->publishingEnabled = publishingEnabled;
2276 handle()->priority = priority;
2277 }
2278
2280 UAPP_GETTER(double, requestedPublishingInterval)
2281 UAPP_GETTER(uint32_t, requestedLifetimeCount)
2282 UAPP_GETTER(uint32_t, requestedMaxKeepAliveCount)
2283 UAPP_GETTER(uint32_t, maxNotificationsPerPublish)
2284 UAPP_GETTER(bool, publishingEnabled)
2285 UAPP_GETTER(uint8_t, priority)
2286};
2287
2288/**
2289 * UA_CreateSubscriptionResponse wrapper class.
2290 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.2
2291 */
2293 : public WrapperNative<UA_CreateSubscriptionResponse, UA_TYPES_CREATESUBSCRIPTIONRESPONSE> {
2294public:
2295 using Wrapper::Wrapper;
2296
2298 UAPP_GETTER(IntegerId, subscriptionId)
2299 UAPP_GETTER(bool, revisedPublishingInterval)
2300 UAPP_GETTER(uint32_t, revisedLifetimeCount)
2301 UAPP_GETTER(uint32_t, revisedMaxKeepAliveCount)
2302};
2303
2304/**
2305 * UA_ModifySubscriptionRequest wrapper class.
2306 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.3
2307 */
2309 : public WrapperNative<UA_ModifySubscriptionRequest, UA_TYPES_MODIFYSUBSCRIPTIONREQUEST> {
2310public:
2311 using Wrapper::Wrapper;
2312
2314 RequestHeader requestHeader,
2315 IntegerId subscriptionId,
2316 double requestedPublishingInterval,
2317 uint32_t requestedLifetimeCount,
2318 uint32_t requestedMaxKeepAliveCount,
2319 uint32_t maxNotificationsPerPublish,
2320 uint8_t priority
2321 ) {
2322 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
2323 handle()->subscriptionId = subscriptionId;
2324 handle()->requestedPublishingInterval = requestedPublishingInterval;
2325 handle()->requestedLifetimeCount = requestedLifetimeCount;
2326 handle()->requestedMaxKeepAliveCount = requestedMaxKeepAliveCount;
2327 handle()->maxNotificationsPerPublish = maxNotificationsPerPublish;
2328 handle()->priority = priority;
2329 }
2330
2332 UAPP_GETTER(IntegerId, subscriptionId)
2333 UAPP_GETTER(double, requestedPublishingInterval)
2334 UAPP_GETTER(uint32_t, requestedLifetimeCount)
2335 UAPP_GETTER(uint32_t, requestedMaxKeepAliveCount)
2336 UAPP_GETTER(uint32_t, maxNotificationsPerPublish)
2337 UAPP_GETTER(uint8_t, priority)
2338};
2339
2340/**
2341 * UA_ModifySubscriptionResponse wrapper class.
2342 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.3
2343 */
2345 : public WrapperNative<UA_ModifySubscriptionResponse, UA_TYPES_MODIFYSUBSCRIPTIONRESPONSE> {
2346public:
2347 using Wrapper::Wrapper;
2348
2350 UAPP_GETTER(bool, revisedPublishingInterval)
2351 UAPP_GETTER(uint32_t, revisedLifetimeCount)
2352 UAPP_GETTER(uint32_t, revisedMaxKeepAliveCount)
2353};
2354
2355/**
2356 * UA_SetPublishingModeRequest wrapper class.
2357 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.4
2358 */
2360 : public WrapperNative<UA_SetPublishingModeRequest, UA_TYPES_SETPUBLISHINGMODEREQUEST> {
2361public:
2362 using Wrapper::Wrapper;
2363
2365 RequestHeader requestHeader, bool publishingEnabled, Span<const IntegerId> subscriptionIds
2366 ) {
2367 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
2368 handle()->publishingEnabled = publishingEnabled;
2369 handle()->subscriptionIdsSize = subscriptionIds.size();
2370 handle()->subscriptionIds = detail::makeNativeArray(subscriptionIds);
2371 }
2372
2374 UAPP_GETTER(bool, publishingEnabled)
2375 UAPP_GETTER_SPAN(IntegerId, subscriptionIds, subscriptionIdsSize)
2376};
2377
2378/**
2379 * UA_SetPublishingModeResponse wrapper class.
2380 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.4
2381 */
2383 : public WrapperNative<UA_SetPublishingModeResponse, UA_TYPES_SETPUBLISHINGMODERESPONSE> {
2384public:
2385 using Wrapper::Wrapper;
2386
2389 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
2390};
2391
2392/**
2393 * UA_StatusChangeNotification wrapper class.
2394 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/7.25.4
2395 */
2397 : public WrapperNative<UA_StatusChangeNotification, UA_TYPES_STATUSCHANGENOTIFICATION> {
2398public:
2399 using Wrapper::Wrapper;
2400
2403};
2404
2405/**
2406 * UA_DeleteSubscriptionsRequest wrapper class.
2407 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.8
2408 */
2410 : public WrapperNative<UA_DeleteSubscriptionsRequest, UA_TYPES_DELETESUBSCRIPTIONSREQUEST> {
2411public:
2412 using Wrapper::Wrapper;
2413
2415 handle()->requestHeader = detail::makeNative(std::move(requestHeader));
2416 handle()->subscriptionIdsSize = subscriptionIds.size();
2417 handle()->subscriptionIds = detail::makeNativeArray(subscriptionIds);
2418 }
2419
2421 UAPP_GETTER_SPAN(IntegerId, subscriptionIds, subscriptionIdsSize)
2422};
2423
2424/**
2425 * UA_DeleteSubscriptionsResponse wrapper class.
2426 * @see https://reference.opcfoundation.org/Core/Part4/v105/docs/5.13.8
2427 */
2429 : public WrapperNative<UA_DeleteSubscriptionsResponse, UA_TYPES_DELETESUBSCRIPTIONSRESPONSE> {
2430public:
2431 using Wrapper::Wrapper;
2432
2435 UAPP_GETTER_SPAN_WRAPPER(DiagnosticInfo, diagnosticInfos, diagnosticInfosSize)
2436};
2437
2438#endif // UA_ENABLE_SUBSCRIPTIONS
2439
2440/* ----------------------------------------- Historizing ---------------------------------------- */
2441
2442/**
2443 * Perform update type for structured data history updates.
2444 * @see UA_PerformUpdateType
2445 * @see https://reference.opcfoundation.org/Core/Part11/v104/docs/6.8.3
2446 */
2447enum class PerformUpdateType : int32_t {
2448 // clang-format off
2449 Insert = 1,
2450 Replace = 2,
2451 Update = 3,
2452 Remove = 4,
2453 // clang-format on
2454};
2455
2456/* ----------------------------------------- DataAccess ----------------------------------------- */
2457
2458#if UAPP_HAS_DATAACCESS
2459
2460/**
2461 * UA_Range wrapper class.
2462 * @see https://reference.opcfoundation.org/Core/Part8/v105/docs/5.6.2
2463 */
2464class Range : public WrapperNative<UA_Range, UA_TYPES_RANGE> {
2465public:
2466 using Wrapper::Wrapper;
2467
2468 Range(double low, double high) noexcept {
2469 handle()->low = low;
2470 handle()->high = high;
2471 }
2472
2473 UAPP_GETTER(double, low)
2474 UAPP_GETTER(double, high)
2475};
2476
2477/**
2478 * UA_EUInformation wrapper class.
2479 * @see https://reference.opcfoundation.org/Core/Part8/v105/docs/5.6.3
2480 */
2481class EUInformation : public WrapperNative<UA_EUInformation, UA_TYPES_EUINFORMATION> {
2482public:
2483 using Wrapper::Wrapper;
2484
2486 std::string_view namespaceUri,
2487 int32_t unitId,
2488 LocalizedText displayName,
2489 LocalizedText description
2490 ) {
2491 handle()->namespaceUri = detail::makeNative(namespaceUri);
2492 handle()->unitId = unitId;
2493 handle()->displayName = detail::makeNative(std::move(displayName));
2494 handle()->description = detail::makeNative(std::move(description));
2495 }
2496
2498 UAPP_GETTER(int32_t, unitId)
2501};
2502
2503/**
2504 * UA_ComplexNumberType wrapper class.
2505 * @see https://reference.opcfoundation.org/Core/Part8/v105/docs/5.6.4
2506 */
2507class ComplexNumberType : public WrapperNative<UA_ComplexNumberType, UA_TYPES_COMPLEXNUMBERTYPE> {
2508public:
2509 using Wrapper::Wrapper;
2510
2511 ComplexNumberType(float real, float imaginary) noexcept {
2512 handle()->real = real;
2513 handle()->imaginary = imaginary;
2514 }
2515
2516 UAPP_GETTER(float, real)
2517 UAPP_GETTER(float, imaginary)
2518};
2519
2520/**
2521 * UA_DoubleComplexNumberType wrapper class.
2522 * @see https://reference.opcfoundation.org/Core/Part8/v105/docs/5.6.5
2523 */
2525 : public WrapperNative<UA_DoubleComplexNumberType, UA_TYPES_DOUBLECOMPLEXNUMBERTYPE> {
2526public:
2527 using Wrapper::Wrapper;
2528
2529 DoubleComplexNumberType(double real, double imaginary) noexcept {
2530 handle()->real = real;
2531 handle()->imaginary = imaginary;
2532 }
2533
2534 UAPP_GETTER(double, real)
2535 UAPP_GETTER(double, imaginary)
2536};
2537
2538/**
2539 * Axis scale.
2540 * @see https://reference.opcfoundation.org/Core/Part8/v105/docs/5.6.7
2541 */
2542enum class AxisScaleEnumeration : int32_t {
2543 Linear = 1,
2544 Log = 2,
2545 Ln = 3,
2546};
2547
2548/**
2549 * UA_AxisInformation wrapper class.
2550 * @see https://reference.opcfoundation.org/Core/Part8/v105/docs/5.6.6
2551 */
2552class AxisInformation : public WrapperNative<UA_AxisInformation, UA_TYPES_AXISINFORMATION> {
2553public:
2554 using Wrapper::Wrapper;
2555
2557 EUInformation engineeringUnits,
2558 Range eURange,
2559 LocalizedText title,
2560 AxisScaleEnumeration axisScaleType,
2561 Span<const double> axisSteps
2562 ) {
2563 handle()->engineeringUnits = detail::makeNative(std::move(engineeringUnits));
2564 handle()->eURange = detail::makeNative(std::move(eURange));
2565 handle()->title = detail::makeNative(std::move(title));
2566 handle()->axisScaleType = static_cast<UA_AxisScaleEnumeration>(axisScaleType);
2567 handle()->axisStepsSize = axisSteps.size();
2568 handle()->axisSteps = detail::makeNativeArray(axisSteps);
2569 }
2570
2575 UAPP_GETTER_SPAN(double, axisSteps, axisStepsSize)
2576};
2577
2578/**
2579 * UA_XVType wrapper class.
2580 * @see https://reference.opcfoundation.org/Core/Part8/v105/docs/5.6.8
2581 */
2582class XVType : public WrapperNative<UA_XVType, UA_TYPES_XVTYPE> {
2583public:
2584 using Wrapper::Wrapper;
2585
2586 XVType(double x, float value) noexcept {
2587 handle()->x = x;
2588 handle()->value = value;
2589 }
2590
2591 UAPP_GETTER(double, x)
2592 UAPP_GETTER(float, value)
2593};
2594
2595#endif // UAPP_HAS_DATAACCESS
2596
2597/* -------------------------------------- Type description -------------------------------------- */
2598
2599#ifdef UA_ENABLE_TYPEDESCRIPTION
2600
2601/**
2602 * Structure type.
2603 * @see https://reference.opcfoundation.org/Core/Part3/v105/docs/8.49
2604 */
2605enum class StructureType : int32_t {
2606 // clang-format off
2607 Structure = 0,
2608 StructureWithOptionalFields = 1,
2609 Union = 2,
2610 // clang-format on
2611};
2612
2613/**
2614 * UA_StructureField wrapper class.
2615 * @see https://reference.opcfoundation.org/Core/Part3/v105/docs/8.51
2616 */
2617class StructureField : public WrapperNative<UA_StructureField, UA_TYPES_STRUCTUREFIELD> {
2618public:
2619 using Wrapper::Wrapper;
2620
2625 UAPP_GETTER_SPAN(uint32_t, arrayDimensions, arrayDimensionsSize)
2626 UAPP_GETTER(uint32_t, maxStringLength)
2627 UAPP_GETTER(bool, isOptional)
2628};
2629
2630/**
2631 * UA_StructureDefinition wrapper class.
2632 * @see https://reference.opcfoundation.org/Core/Part3/v105/docs/8.48
2633 */
2635 : public WrapperNative<UA_StructureDefinition, UA_TYPES_STRUCTUREDEFINITION> {
2636public:
2637 using Wrapper::Wrapper;
2638
2639 UAPP_GETTER_WRAPPER(NodeId, defaultEncodingId)
2643};
2644
2645/**
2646 * UA_EnumField wrapper class.
2647 * @see https://reference.opcfoundation.org/Core/Part3/v105/docs/8.52
2648 */
2649class EnumField : public WrapperNative<UA_EnumField, UA_TYPES_ENUMFIELD> {
2650public:
2651 using Wrapper::Wrapper;
2652
2653 EnumField(int64_t value, std::string_view name)
2654 : EnumField(value, {"", name}, {}, name) {}
2655
2657 int64_t value, LocalizedText displayName, LocalizedText description, std::string_view name
2658 ) {
2659 handle()->value = value;
2660 handle()->displayName = detail::makeNative(std::move(displayName));
2661 handle()->description = detail::makeNative(std::move(description));
2662 handle()->name = detail::makeNative(name);
2663 }
2664
2665 UAPP_GETTER(int64_t, value)
2669};
2670
2671/**
2672 * UA_EnumDefinition wrapper class.
2673 * @see https://reference.opcfoundation.org/Core/Part3/v105/docs/8.50
2674 */
2675class EnumDefinition : public WrapperNative<UA_EnumDefinition, UA_TYPES_ENUMDEFINITION> {
2676public:
2677 using Wrapper::Wrapper;
2678
2679 EnumDefinition(std::initializer_list<EnumField> fields)
2680 : EnumDefinition({fields.begin(), fields.size()}) {}
2681
2683 handle()->fieldsSize = fields.size();
2684 handle()->fields = detail::makeNativeArray(fields);
2685 }
2686
2688};
2689
2690#endif // UA_ENABLE_TYPEDESCRIPTION
2691
2692/**
2693 * @}
2694 */
2695
2696} // namespace ua
2697} // namespace opcua
Bitmask using (scoped) enums.
Definition bitmask.hpp:127
UA_ByteString wrapper class.
Definition types.hpp:537
High-level client class.
Definition client.hpp:130
UA_DataType wrapper class.
Definition datatype.hpp:111
UA_DataValue wrapper class.
Definition types.hpp:1568
UA_DateTime wrapper class.
Definition types.hpp:381
UA_DiagnosticInfo wrapper class.
Definition types.hpp:1905
UA_ExpandedNodeId wrapper class.
Definition types.hpp:822
UA_ExtensionObject wrapper class.
Definition types.hpp:1742
UA_LocalizedText wrapper class.
Definition types.hpp:956
UA_NodeId wrapper class.
Definition types.hpp:641
UA_QualifiedName wrapper class.
Definition types.hpp:915
High-level server class.
Definition server.hpp:142
View to a contiguous sequence of objects, similar to std::span in C++20.
Definition span.hpp:29
constexpr size_t size() const noexcept
Definition span.hpp:94
UA_StatusCode wrapper class.
Definition types.hpp:44
UA_String wrapper class.
Definition types.hpp:256
UA_Variant wrapper class.
Definition types.hpp:1048
Template base class to wrap (native) objects.
Definition wrapper.hpp:135
constexpr T * handle() noexcept
Return pointer to native object.
Definition wrapper.hpp:221
constexpr Wrapper() noexcept=default
UA_AddNodesItem wrapper class.
Definition types.hpp:715
AddNodesItem(ExpandedNodeId parentNodeId, NodeId referenceTypeId, ExpandedNodeId requestedNewNodeId, QualifiedName browseName, NodeClass nodeClass, ExtensionObject nodeAttributes, ExpandedNodeId typeDefinition)
Definition types.hpp:719
UA_AddNodesRequest wrapper class.
Definition types.hpp:762
AddNodesRequest(RequestHeader requestHeader, Span< const AddNodesItem > nodesToAdd)
Definition types.hpp:766
UA_AddNodesResponse wrapper class.
Definition types.hpp:780
UA_AddNodesResult wrapper class.
Definition types.hpp:750
UA_AddReferencesItem wrapper class.
Definition types.hpp:793
AddReferencesItem(NodeId sourceNodeId, NodeId referenceTypeId, bool isForward, std::string_view targetServerUri, ExpandedNodeId targetNodeId, NodeClass targetNodeClass)
Definition types.hpp:797
UA_AddReferencesRequest wrapper class.
Definition types.hpp:826
AddReferencesRequest(RequestHeader requestHeader, Span< const AddReferencesItem > referencesToAdd)
Definition types.hpp:830
UA_AddReferencesResponse wrapper class.
Definition types.hpp:847
UA_AggregateFilter wrapper class.
Definition types.hpp:1911
AggregateFilter(DateTime startTime, NodeId aggregateType, double processingInterval, AggregateConfiguration aggregateConfiguration)
Definition types.hpp:1915
UA_AnonymousIdentityToken wrapper class.
Definition types.hpp:644
UA_ApplicationDescription wrapper class.
Definition types.hpp:127
ApplicationDescription(std::string_view applicationUri, std::string_view productUri, LocalizedText applicationName, ApplicationType applicationType, std::string_view gatewayServerUri, std::string_view discoveryProfileUri, Span< const String > discoveryUrls)
Definition types.hpp:131
UA_Argument wrapper class.
Definition types.hpp:1519
Argument(std::string_view name, LocalizedText description, NodeId dataType, ValueRank valueRank={}, Span< const uint32_t > arrayDimensions={})
Definition types.hpp:1523
UA_AttributeOperand wrapper class.
Definition types.hpp:1703
AttributeOperand(NodeId nodeId, std::string_view alias, RelativePath browsePath, AttributeId attributeId, std::string_view indexRange={})
Definition types.hpp:1707
UA_AxisInformation wrapper class.
Definition types.hpp:2552
AxisInformation(EUInformation engineeringUnits, Range eURange, LocalizedText title, AxisScaleEnumeration axisScaleType, Span< const double > axisSteps)
Definition types.hpp:2556
UA_BrowseDescription wrapper class.
Definition types.hpp:1036
BrowseDescription(NodeId nodeId, BrowseDirection browseDirection, NodeId referenceTypeId=ReferenceTypeId::References, bool includeSubtypes=true, Bitmask< NodeClass > nodeClassMask=NodeClass::Unspecified, Bitmask< BrowseResultMask > resultMask=BrowseResultMask::All)
Definition types.hpp:1040
UA_BrowseNextRequest wrapper class.
Definition types.hpp:1136
BrowseNextRequest(RequestHeader requestHeader, bool releaseContinuationPoints, Span< const ByteString > continuationPoints)
Definition types.hpp:1140
UA_BrowseNextResponse wrapper class.
Definition types.hpp:1160
UA_BrowsePathResult wrapper class.
Definition types.hpp:1240
UA_BrowsePathTarget wrapper class.
Definition types.hpp:1229
UA_BrowsePath wrapper class.
Definition types.hpp:1213
BrowsePath(NodeId startingNode, RelativePath relativePath)
Definition types.hpp:1217
UA_BrowseRequest wrapper class.
Definition types.hpp:1067
BrowseRequest(RequestHeader requestHeader, ViewDescription view, uint32_t requestedMaxReferencesPerNode, Span< const BrowseDescription > nodesToBrowse)
Definition types.hpp:1071
UA_BrowseResponse wrapper class.
Definition types.hpp:1124
UA_BrowseResult wrapper class.
Definition types.hpp:1112
UA_BuildInfo wrapper class.
Definition types.hpp:1483
BuildInfo(std::string_view productUri, std::string_view manufacturerName, std::string_view productName, std::string_view softwareVersion, std::string_view buildNumber, DateTime buildDate)
Definition types.hpp:1487
UA_CallMethodRequest wrapper class.
Definition types.hpp:1549
CallMethodRequest(NodeId objectId, NodeId methodId, Span< const Variant > inputArguments)
Definition types.hpp:1553
UA_CallMethodResult wrapper class.
Definition types.hpp:1569
UA_CallRequest wrapper class.
Definition types.hpp:1585
CallRequest(RequestHeader requestHeader, Span< const CallMethodRequest > methodsToCall)
Definition types.hpp:1589
UA_CallResponse wrapper class.
Definition types.hpp:1603
UA_ComplexNumberType wrapper class.
Definition types.hpp:2507
ComplexNumberType(float real, float imaginary) noexcept
Definition types.hpp:2511
UA_ContentFilterElement wrapper class.
Definition types.hpp:1786
ContentFilterElement(FilterOperator filterOperator, Span< const FilterOperand > operands)
UA_ContentFilter wrapper class.
Definition types.hpp:1807
ContentFilter(std::initializer_list< ContentFilterElement > elements)
ContentFilter(Span< const ContentFilterElement > elements)
UA_CreateMonitoredItemsRequest wrapper class.
Definition types.hpp:2009
CreateMonitoredItemsRequest(RequestHeader requestHeader, IntegerId subscriptionId, TimestampsToReturn timestampsToReturn, Span< const MonitoredItemCreateRequest > itemsToCreate)
Definition types.hpp:2013
UA_CreateMonitoredItemsResponse wrapper class.
Definition types.hpp:2037
UA_CreateSubscriptionRequest wrapper class.
Definition types.hpp:2257
CreateSubscriptionRequest(RequestHeader requestHeader, double requestedPublishingInterval, uint32_t requestedLifetimeCount, uint32_t requestedMaxKeepAliveCount, uint32_t maxNotificationsPerPublish, bool publishingEnabled, uint8_t priority)
Definition types.hpp:2261
UA_CreateSubscriptionResponse wrapper class.
Definition types.hpp:2293
UA_DataChangeFilter wrapper class.
Definition types.hpp:1872
DataChangeFilter(DataChangeTrigger trigger, DeadbandType deadbandType, double deadbandValue)
Definition types.hpp:1876
UA_DataTypeAttributes wrapper class.
Definition types.hpp:589
DataTypeAttributes()
Construct with default attribute definitions.
Definition types.hpp:594
UA_DeleteMonitoredItemsRequest wrapper class.
Definition types.hpp:2218
DeleteMonitoredItemsRequest(RequestHeader requestHeader, IntegerId subscriptionId, Span< const IntegerId > monitoredItemIds)
Definition types.hpp:2222
UA_DeleteMonitoredItemsResponse wrapper class.
Definition types.hpp:2243
UA_DeleteNodesItem wrapper class.
Definition types.hpp:860
DeleteNodesItem(NodeId nodeId, bool deleteTargetReferences)
Definition types.hpp:864
UA_DeleteNodesRequest wrapper class.
Definition types.hpp:878
DeleteNodesRequest(RequestHeader requestHeader, Span< const DeleteNodesItem > nodesToDelete)
Definition types.hpp:882
UA_DeleteNodesResponse wrapper class.
Definition types.hpp:897
UA_DeleteReferencesItem wrapper class.
Definition types.hpp:911
DeleteReferencesItem(NodeId sourceNodeId, NodeId referenceTypeId, bool isForward, ExpandedNodeId targetNodeId, bool deleteBidirectional)
Definition types.hpp:915
UA_DeleteReferencesRequest wrapper class.
Definition types.hpp:941
DeleteReferencesRequest(RequestHeader requestHeader, Span< const DeleteReferencesItem > referencesToDelete)
Definition types.hpp:945
UA_DeleteReferencesResponse wrapper class.
Definition types.hpp:962
UA_DeleteSubscriptionsRequest wrapper class.
Definition types.hpp:2410
DeleteSubscriptionsRequest(RequestHeader requestHeader, Span< const IntegerId > subscriptionIds)
Definition types.hpp:2414
UA_DeleteSubscriptionsResponse wrapper class.
Definition types.hpp:2429
UA_DoubleComplexNumberType wrapper class.
Definition types.hpp:2525
DoubleComplexNumberType(double real, double imaginary) noexcept
Definition types.hpp:2529
UA_EUInformation wrapper class.
Definition types.hpp:2481
EUInformation(std::string_view namespaceUri, int32_t unitId, LocalizedText displayName, LocalizedText description)
Definition types.hpp:2485
UA_ElementOperand wrapper class.
Definition types.hpp:1664
ElementOperand(uint32_t index)
Definition types.hpp:1668
UA_EndpointDescription wrapper class.
Definition types.hpp:271
UA_EnumDefinition wrapper class.
Definition types.hpp:2675
EnumDefinition(std::initializer_list< EnumField > fields)
Definition types.hpp:2679
EnumDefinition(Span< const EnumField > fields)
Definition types.hpp:2682
UA_EnumField wrapper class.
Definition types.hpp:2649
EnumField(int64_t value, LocalizedText displayName, LocalizedText description, std::string_view name)
Definition types.hpp:2656
EnumField(int64_t value, std::string_view name)
Definition types.hpp:2653
UA_EnumValueType wrapper class.
Definition types.hpp:95
EnumValueType(int64_t value, LocalizedText displayName, LocalizedText description)
Definition types.hpp:99
const LocalizedText & description() const noexcept
Definition types.hpp:107
const LocalizedText & displayName() const noexcept
Definition types.hpp:106
int64_t value() const noexcept
Definition types.hpp:105
UA_EventFilter wrapper class.
Definition types.hpp:1891
EventFilter(Span< const SimpleAttributeOperand > selectClauses, ContentFilter whereClause)
Definition types.hpp:1895
UA_IssuedIdentityToken wrapper class.
Definition types.hpp:697
IssuedIdentityToken(ByteString tokenData, std::string_view encryptionAlgorithm={})
Definition types.hpp:701
UA_LiteralOperand wrapper class.
Definition types.hpp:1679
LiteralOperand(T &&literal)
Definition types.hpp:1693
LiteralOperand(Variant value)
Definition types.hpp:1688
UA_MethodAttributes wrapper class.
Definition types.hpp:483
MethodAttributes()
Construct with default attribute definitions.
Definition types.hpp:488
UA_ModifyMonitoredItemsRequest wrapper class.
Definition types.hpp:2086
ModifyMonitoredItemsRequest(RequestHeader requestHeader, IntegerId subscriptionId, TimestampsToReturn timestampsToReturn, Span< const MonitoredItemModifyRequest > itemsToModify)
Definition types.hpp:2090
UA_CreateMonitoredItemsResponse wrapper class.
Definition types.hpp:2114
UA_ModifySubscriptionRequest wrapper class.
Definition types.hpp:2309
ModifySubscriptionRequest(RequestHeader requestHeader, IntegerId subscriptionId, double requestedPublishingInterval, uint32_t requestedLifetimeCount, uint32_t requestedMaxKeepAliveCount, uint32_t maxNotificationsPerPublish, uint8_t priority)
Definition types.hpp:2313
UA_ModifySubscriptionResponse wrapper class.
Definition types.hpp:2345
UA_MonitoredItemCreateRequest wrapper class.
Definition types.hpp:1969
MonitoredItemCreateRequest(ReadValueId itemToMonitor, MonitoringMode monitoringMode=MonitoringMode::Reporting, MonitoringParameters requestedParameters={})
Definition types.hpp:1973
UA_MonitoredItemCreateResult wrapper class.
Definition types.hpp:1993
UA_MonitoredItemModifyRequest wrapper class.
Definition types.hpp:2051
MonitoredItemModifyRequest(IntegerId monitoredItemId, MonitoringParameters requestedParameters)
Definition types.hpp:2055
UA_MonitoredItemModifyResult wrapper class.
Definition types.hpp:2071
UA_MonitoringParameters wrapper class.
Definition types.hpp:1938
MonitoringParameters(double samplingInterval=250.0, ExtensionObject filter={}, uint32_t queueSize=1U, bool discardOldest=true)
Construct with default values from open62541.
Definition types.hpp:1946
UA_NodeAttributes wrapper class.
Definition types.hpp:389
UA_ObjectAttributes wrapper class.
Definition types.hpp:400
ObjectAttributes()
Construct with default attribute definitions.
Definition types.hpp:405
UA_ObjectTypeAttributes wrapper class.
Definition types.hpp:501
ObjectTypeAttributes()
Construct with default attribute definitions.
Definition types.hpp:506
UA_Range wrapper class.
Definition types.hpp:2464
Range(double low, double high) noexcept
Definition types.hpp:2468
UA_ReadRequest wrapper class.
Definition types.hpp:1389
ReadRequest(RequestHeader requestHeader, double maxAge, TimestampsToReturn timestampsToReturn, Span< const ReadValueId > nodesToRead)
Definition types.hpp:1393
UA_ReadResponse wrapper class.
Definition types.hpp:1416
UA_ReadValueId wrapper class.
Definition types.hpp:1363
ReadValueId(NodeId nodeId, AttributeId attributeId, std::string_view indexRange={}, QualifiedName dataEncoding={})
Definition types.hpp:1367
UA_ReferenceDescription wrapper class.
Definition types.hpp:1095
UA_ReferenceTypeAttributes wrapper class.
Definition types.hpp:568
ReferenceTypeAttributes()
Construct with default attribute definitions.
Definition types.hpp:573
UA_RegisterNodesRequest wrapper class.
Definition types.hpp:1289
RegisterNodesRequest(RequestHeader requestHeader, Span< const NodeId > nodesToRegister)
Definition types.hpp:1293
UA_RegisterNodesResponse wrapper class.
Definition types.hpp:1307
UA_RelativePathElement wrapper class.
Definition types.hpp:1173
RelativePathElement(NodeId referenceTypeId, bool isInverse, bool includeSubtypes, QualifiedName targetName)
Definition types.hpp:1177
UA_RelativePath wrapper class.
Definition types.hpp:1195
RelativePath(Span< const RelativePathElement > elements)
Definition types.hpp:1202
RelativePath(std::initializer_list< RelativePathElement > elements)
Definition types.hpp:1199
UA_RequestHeader wrapper class.
Definition types.hpp:163
RequestHeader(NodeId authenticationToken, DateTime timestamp, IntegerId requestHandle, uint32_t returnDiagnostics, std::string_view auditEntryId, uint32_t timeoutHint, ExtensionObject additionalHeader)
Definition types.hpp:167
UA_ResponseHeader wrapper class.
Definition types.hpp:198
UA_SetMonitoringModeRequest wrapper class.
Definition types.hpp:2128
SetMonitoringModeRequest(RequestHeader requestHeader, IntegerId subscriptionId, MonitoringMode monitoringMode, Span< const IntegerId > monitoredItemIds)
Definition types.hpp:2132
UA_SetMonitoringModeResponse wrapper class.
Definition types.hpp:2156
UA_SetPublishingModeRequest wrapper class.
Definition types.hpp:2360
SetPublishingModeRequest(RequestHeader requestHeader, bool publishingEnabled, Span< const IntegerId > subscriptionIds)
Definition types.hpp:2364
UA_SetPublishingModeResponse wrapper class.
Definition types.hpp:2383
UA_SetTriggeringRequest wrapper class.
Definition types.hpp:2170
SetTriggeringRequest(RequestHeader requestHeader, IntegerId subscriptionId, IntegerId triggeringItemId, Span< const IntegerId > linksToAdd, Span< const IntegerId > linksToRemove)
Definition types.hpp:2174
UA_SetTriggeringResponse wrapper class.
Definition types.hpp:2202
UA_SimpleAttributeOperand wrapper class.
Definition types.hpp:1733
SimpleAttributeOperand(NodeId typeDefinitionId, Span< const QualifiedName > browsePath, AttributeId attributeId, std::string_view indexRange={})
Definition types.hpp:1737
UA_StatusChangeNotification wrapper class.
Definition types.hpp:2397
UA_StructureDefinition wrapper class.
Definition types.hpp:2635
UA_StructureField wrapper class.
Definition types.hpp:2617
UA_TranslateBrowsePathsToNodeIdsRequest wrapper class.
Definition types.hpp:1254
TranslateBrowsePathsToNodeIdsRequest(RequestHeader requestHeader, Span< const BrowsePath > browsePaths)
Definition types.hpp:1258
UA_TranslateBrowsePathsToNodeIdsResponse wrapper class.
Definition types.hpp:1276
UA_UnregisterNodesRequest wrapper class.
Definition types.hpp:1319
UnregisterNodesRequest(RequestHeader requestHeader, Span< const NodeId > nodesToUnregister)
Definition types.hpp:1323
UA_UnregisterNodesResponse wrapper class.
Definition types.hpp:1337
UA_UserIdentityToken wrapper class.
Definition types.hpp:632
UA_UserNameIdentityToken wrapper class.
Definition types.hpp:656
UserNameIdentityToken(std::string_view userName, std::string_view password, std::string_view encryptionAlgorithm={})
Definition types.hpp:660
UA_UserTokenPolicy wrapper class.
Definition types.hpp:241
UserTokenPolicy(std::string_view policyId, UserTokenType tokenType, std::string_view issuedTokenType, std::string_view issuerEndpointUrl, std::string_view securityPolicyUri)
Definition types.hpp:245
UA_VariableAttributes wrapper class.
Definition types.hpp:419
auto & setValueArray(Args &&... args)
Definition types.hpp:440
auto & setDataType()
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition types.hpp:449
auto & setValueScalar(Args &&... args)
Definition types.hpp:433
VariableAttributes()
Construct with default attribute definitions.
Definition types.hpp:424
UA_VariableAttributes wrapper class.
Definition types.hpp:518
VariableTypeAttributes()
Construct with default attribute definitions.
Definition types.hpp:523
auto & setValueArray(Args &&... args)
Definition types.hpp:539
auto & setDataType()
This is an overloaded member function, provided for convenience. It differs from the above function o...
Definition types.hpp:548
auto & setValueScalar(Args &&... args)
Definition types.hpp:532
UA_ViewAttributes wrapper class.
Definition types.hpp:605
ViewAttributes()
Construct with default attribute definitions.
Definition types.hpp:610
UA_ViewDescription wrapper class.
Definition types.hpp:974
ViewDescription(NodeId viewId, DateTime timestamp, uint32_t viewVersion)
Definition types.hpp:978
UA_WriteRequest wrapper class.
Definition types.hpp:1452
WriteRequest(RequestHeader requestHeader, Span< const WriteValue > nodesToWrite)
Definition types.hpp:1456
UA_WriteResponse wrapper class.
Definition types.hpp:1470
UA_WriteValue wrapper class.
Definition types.hpp:1429
WriteValue(NodeId nodeId, AttributeId attributeId, std::string_view indexRange, DataValue value)
Definition types.hpp:1433
UA_X509IdentityToken wrapper class.
Definition types.hpp:680
X509IdentityToken(ByteString certificateData)
Definition types.hpp:684
UA_XVType wrapper class.
Definition types.hpp:2582
XVType(double x, float value) noexcept
Definition types.hpp:2586
UA_EXPORT const UA_ObjectTypeAttributes UA_ObjectTypeAttributes_default
UA_EXPORT const UA_VariableAttributes UA_VariableAttributes_default
UA_EXPORT const UA_DataTypeAttributes UA_DataTypeAttributes_default
UA_EXPORT const UA_ViewAttributes UA_ViewAttributes_default
UA_EXPORT const UA_VariableTypeAttributes UA_VariableTypeAttributes_default
UA_EXPORT const UA_MethodAttributes UA_MethodAttributes_default
UA_EXPORT const UA_ReferenceTypeAttributes UA_ReferenceTypeAttributes_default
UA_EXPORT const UA_ObjectAttributes UA_ObjectAttributes_default
constexpr std::false_type isBitmaskEnum(T)
Function template to define an enum (class) as a bitmask and allow bitwise operations.
ReferenceTypeId
ReferenceType node ids defined by the OPC UA specification (generated).
Definition nodeids.hpp:457
BrowseResultMask
Browse result mask.
Definition types.hpp:1015
DeadbandType
Deadband type.
Definition types.hpp:1860
#define UAPP_NODEATTR_WRAPPER(Type, suffix, member, flag)
Definition types.hpp:353
ContentFilter operator!(const ContentFilterElement &filterElement)
std::variant< ElementOperand, LiteralOperand, AttributeOperand, SimpleAttributeOperand, ExtensionObject > FilterOperand
Filter operand.
Definition types.hpp:1773
ContentFilter operator||(const ContentFilter &lhs, const ContentFilterElement &rhs)
UserTokenType
User identity token type.
Definition types.hpp:228
PerformUpdateType
Perform update type for structured data history updates.
Definition types.hpp:2447
DataChangeTrigger
Data change trigger.
Definition types.hpp:1848
ContentFilter operator!(const ContentFilter &filter)
StructureType
Structure type.
Definition types.hpp:2605
AxisScaleEnumeration
Axis scale.
Definition types.hpp:2542
ContentFilter operator&&(const ContentFilterElement &lhs, const ContentFilterElement &rhs)
ApplicationType
Application type.
Definition types.hpp:115
MonitoringMode
Monitoring mode.
Definition types.hpp:1623
ContentFilter operator||(const ContentFilterElement &lhs, const ContentFilter &rhs)
MessageSecurityMode
Message security mode.
Definition types.hpp:215
BrowseDirection
Browse direction.
Definition types.hpp:995
ContentFilter operator||(const ContentFilter &lhs, const ContentFilter &rhs)
ContentFilter operator&&(const ContentFilter &lhs, const ContentFilterElement &rhs)
TimestampsToReturn
Timestamps to return.
Definition types.hpp:1349
ContentFilter operator&&(const ContentFilterElement &lhs, const ContentFilter &rhs)
NodeAttributesMask
Node attributes mask.
Definition types.hpp:292
ContentFilter operator||(const ContentFilterElement &lhs, const ContentFilterElement &rhs)
#define UAPP_NODEATTR_ARRAY(Type, suffix, member, memberSize, flag)
Definition types.hpp:360
FilterOperator
Filter operator.
Definition types.hpp:1635
#define UAPP_NODEATTR_CAST(Type, suffix, member, flag)
Definition types.hpp:346
#define UAPP_NODEATTR(Type, suffix, member, flag)
Definition types.hpp:339
ContentFilter operator&&(const ContentFilter &lhs, const ContentFilter &rhs)
#define UAPP_NODEATTR_COMMON
Definition types.hpp:370
static UA_LogCategory const char va_list args
uint32_t IntegerId
IntegerId.
Definition types.hpp:84
NodeClass
Node class.
Definition common.hpp:71
AccessLevel
Access level.
Definition common.hpp:94
EventNotifier
Event notifier.
Definition common.hpp:174
ValueRank
Value rank.
Definition common.hpp:157
WriteMask
Write mask.
Definition common.hpp:116
AttributeId
Attribute identifiers.
Definition common.hpp:28
If a reference is symmetric
Definition symmetric.dox:1
uint8_t UA_Byte
UA_BrowseDirection
UA_DataChangeTrigger
UA_UserTokenType
UA_BROWSERESULTMASK_REFERENCETYPEID
UA_BROWSERESULTMASK_DISPLAYNAME
UA_BROWSERESULTMASK_ALL
UA_BROWSERESULTMASK_ISFORWARD
UA_BROWSERESULTMASK_REFERENCETYPEINFO
UA_BROWSERESULTMASK_TYPEDEFINITION
UA_BROWSERESULTMASK_BROWSENAME
UA_BROWSERESULTMASK_TARGETINFO
UA_BROWSERESULTMASK_NODECLASS
UA_BROWSERESULTMASK_NONE
UA_ApplicationType
UA_AxisScaleEnumeration
UA_TimestampsToReturn
UA_MonitoringMode
UA_NodeClass
UA_EXPORT const UA_ObjectTypeAttributes UA_ObjectTypeAttributes_default
UA_EXPORT const UA_VariableAttributes UA_VariableAttributes_default
#define UAPP_GETTER_SPAN(Type, memberArray, memberSize)
Definition types.hpp:61
#define UAPP_GETTER_SPAN_WRAPPER(Type, memberArray, memberSize)
Definition types.hpp:69
UA_EXPORT const UA_DataTypeAttributes UA_DataTypeAttributes_default
UA_EXPORT const UA_ViewAttributes UA_ViewAttributes_default
UA_EXPORT const UA_VariableTypeAttributes UA_VariableTypeAttributes_default
UA_EXPORT const UA_MethodAttributes UA_MethodAttributes_default
#define UAPP_GETTER_CAST(Type, member)
Definition types.hpp:44
#define UAPP_GETTER(Type, member)
Definition types.hpp:39
UA_EXPORT const UA_ReferenceTypeAttributes UA_ReferenceTypeAttributes_default
#define UAPP_GETTER_WRAPPER(Type, member)
Definition types.hpp:57
UA_EXPORT const UA_ObjectAttributes UA_ObjectAttributes_default
UA_StatusCode status