1// Copyright (C) 2015 basysKom GmbH, opensource@basyskom.com
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include "qopcuaargument.h"
5#include "qopcuatype.h"
6
7QT_BEGIN_NAMESPACE
8
9/*!
10 \class QOpcUaArgument
11 \inmodule QtOpcUa
12 \brief The OPC UA Argument type.
13
14 This is the Qt OPC UA representation for the Argument type defined in OPC UA 1.05 part 3, 8.6.
15
16 The Argument type is mainly used for the values of the InputArguments and OutputArguments properties
17 which describe the parameters and return values of method nodes.
18*/
19class QOpcUaArgumentData : public QSharedData
20{
21public:
22 QString name;
23 QString dataTypeId;
24 qint32 valueRank{-2};
25 QList<quint32> arrayDimensions;
26 QOpcUaLocalizedText description;
27};
28
29/*!
30 Default constructs an argument with no parameters set.
31*/
32QOpcUaArgument::QOpcUaArgument()
33 : data(new QOpcUaArgumentData)
34{
35}
36
37QOpcUaArgument::QOpcUaArgument(const QOpcUaArgument &rhs)
38 : data(rhs.data)
39{
40}
41
42/*!
43 Constructs an argument with name \a name, data type id \a dataTypeId, value rank \a valueRank,
44 array dimensions \a arrayDimensions and description \a description.
45*/
46QOpcUaArgument::QOpcUaArgument(const QString &name, const QString &dataTypeId, qint32 valueRank,
47 const QList<quint32> &arrayDimensions, const QOpcUaLocalizedText &description)
48 : data(new QOpcUaArgumentData)
49{
50 setName(name);
51 setDataTypeId(dataTypeId);
52 setValueRank(valueRank);
53 setArrayDimensions(arrayDimensions);
54 setDescription(description);
55}
56
57/*!
58 Sets the values from \a rhs in this argument.
59*/
60QOpcUaArgument &QOpcUaArgument::operator=(const QOpcUaArgument &rhs)
61{
62 if (this != &rhs)
63 data.operator=(o: rhs.data);
64 return *this;
65}
66
67/*!
68 Returns true if this argument has the same value as \a other.
69*/
70bool QOpcUaArgument::operator==(const QOpcUaArgument &other) const
71{
72 return data->arrayDimensions == other.arrayDimensions() &&
73 QOpcUa::nodeIdEquals(first: data->dataTypeId, second: other.dataTypeId()) &&
74 data->description == other.description() &&
75 data->name == other.name() &&
76 data->valueRank == other.valueRank();
77}
78
79/*!
80 Converts this argument to \l QVariant.
81*/
82QOpcUaArgument::operator QVariant() const
83{
84 return QVariant::fromValue(value: *this);
85}
86
87QOpcUaArgument::~QOpcUaArgument()
88{
89}
90
91/*!
92 Returns the name of the argument.
93*/
94QString QOpcUaArgument::name() const
95{
96 return data->name;
97}
98
99/*!
100 Sets the name of the argument to \a name.
101*/
102void QOpcUaArgument::setName(const QString &name)
103{
104 data->name = name;
105}
106
107/*!
108 Returns the data type node id of the argument.
109*/
110QString QOpcUaArgument::dataTypeId() const
111{
112 return data->dataTypeId;
113}
114
115/*!
116 Sets the data type node id of the argument to \a dataTypeId.
117*/
118void QOpcUaArgument::setDataTypeId(const QString &dataTypeId)
119{
120 data->dataTypeId = dataTypeId;
121}
122
123/*!
124 Returns the value rank of the argument.
125 The value rank describes the structure of the value.
126 \table
127 \header
128 \li ValueRank
129 \li Meaning
130 \row
131 \li -3
132 \li Scalar or one dimensional array
133 \row
134 \li -2
135 \li Scalar or array with any number of dimensions
136 \row
137 \li -1
138 \li Not an array
139 \row
140 \li 0
141 \li Array with one or more dimensions
142 \row
143 \li 1
144 \li One dimensional array
145 \row
146 \li >1
147 \li Array with n dimensions
148 \endtable
149*/
150qint32 QOpcUaArgument::valueRank() const
151{
152 return data->valueRank;
153}
154
155/*!
156 Sets the value rank of the argument to \a valueRank.
157*/
158void QOpcUaArgument::setValueRank(qint32 valueRank)
159{
160 data->valueRank = valueRank;
161}
162
163/*!
164 Returns the array dimensions of the argument.
165
166 The array dimensions describe the length of each array dimension.
167*/
168QList<quint32> QOpcUaArgument::arrayDimensions() const
169{
170 return data->arrayDimensions;
171}
172
173/*!
174 Returns a reference to the array dimensions of the argument.
175*/
176QList<quint32> &QOpcUaArgument::arrayDimensionsRef()
177{
178 return data->arrayDimensions;
179}
180
181/*!
182 Sets the array dimensions of the argument to \a arrayDimensions.
183*/
184void QOpcUaArgument::setArrayDimensions(const QList<quint32> &arrayDimensions)
185{
186 data->arrayDimensions = arrayDimensions;
187}
188
189/*!
190 Returns the description of the argument.
191*/
192QOpcUaLocalizedText QOpcUaArgument::description() const
193{
194 return data->description;
195}
196
197/*!
198 Sets the description of the argument to \a description.
199*/
200void QOpcUaArgument::setDescription(const QOpcUaLocalizedText &description)
201{
202 data->description = description;
203}
204
205QT_END_NAMESPACE
206

Provided by KDAB

Privacy Policy
Learn Advanced QML with KDAB
Find out more

source code of qtopcua/src/opcua/client/qopcuaargument.cpp