Revision control

Copy as Markdown

// Copyright (C) 2019 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
// Qt-Security score:significant reason:default
#include <private/opcuaelementoperand_p.h>
QT_BEGIN_NAMESPACE
/*!
\qmltype ElementOperand
\inqmlmodule QtOpcUa
\brief The OPC UA ElementOperand type.
\since QtOpcUa 5.13
\deprecated [6.9]
The ElementOperand is defined in OPC UA 1.05 part 4, 7.7.4.2.
It is used to identify another element in the filter by its index
(the first element has the index 0).
This is required to create complex filters, for example to reference
the two operands of the AND operation in ((Severity > 500) AND (Message == "TestString")).
The first step is to create content filter elements for the two conditions (Severity > 500)
and (Message == "TestString"). A third content filter element is required to create an AND
combination of the two conditions. It consists of the AND operator and two element operands
with the indices of the two conditions created before:
\code
import QtOpcUa as QtOpcUa
QtOpcUa.EventFilter {
select : [ ... ]
where: [
QtOpcUa.FilterElement {
operator: QtOpcUa.FilterElement.GreaterThan
firstOperand: QtOpcUa.SimpleAttributeOperand {
browsePath: [
QtOpcUa.NodeId {
identifier: "Severity"
}
]
}
secondOperand: QtOpcUa.LiteralOperand {
value: 500
type: QtOpcUa.Constants.UInt16
}
}
QtOpcUa.FilterElement {
operator: QtOpcUa.FilterElement.Equals
firstOperand: QtOpcUa.SimpleAttributeOperand {
browsePath: [
QtOpcUa.NodeId {
identifier: "Message"
}
]
}
secondOperand: QtOpcUa.LiteralOperand {
value: "TestString"
type: QtOpcUa.Constants.String
}
}
QtOpcUa.FilterElement {
operator: QtOpcUa.FilterElement.And
firstOperand: QtOpcUa.ElementOperand {
index: 0
}
secondOperand: QtOpcUa.ElementOperand {
index: 1
}
}
]
}
\endcode
*/
/*!
\qmlproperty int ElementOperand::index
Index of the filter element that is going to be used as operand.
*/
OpcUaElementOperand::OpcUaElementOperand(QObject *parent)
: OpcUaOperandBase(parent)
{
}
OpcUaElementOperand::~OpcUaElementOperand() = default;
QVariant OpcUaElementOperand::toCppVariant(QOpcUaClient* client) const
{
Q_UNUSED(client);
QOpcUaElementOperand value(*this);
return value;
}
quint32 OpcUaElementOperand::index() const
{
return QOpcUaElementOperand::index();
}
void OpcUaElementOperand::setIndex(quint32 index)
{
if (index != QOpcUaElementOperand::index()) {
QOpcUaElementOperand::setIndex(index);
emit dataChanged();
}
}
QT_END_NAMESPACE