2 * Copyright (C) 2012-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
11 #include "utils/IXmlDeserializable.h"
18 BooleanLogicOperationOr
= 0,
19 BooleanLogicOperationAnd
20 } BooleanLogicOperation
;
22 class CBooleanLogicValue
: public IXmlDeserializable
25 CBooleanLogicValue(const std::string
&value
= "", bool negated
= false)
26 : m_value(value
), m_negated(negated
)
28 ~CBooleanLogicValue() override
= default;
30 bool Deserialize(const TiXmlNode
*node
) override
;
32 virtual const std::string
& GetValue() const { return m_value
; }
33 virtual bool IsNegated() const { return m_negated
; }
34 virtual const char* GetTag() const { return "value"; }
36 virtual void SetValue(const std::string
&value
) { m_value
= value
; }
37 virtual void SetNegated(bool negated
) { m_negated
= negated
; }
44 typedef std::shared_ptr
<CBooleanLogicValue
> CBooleanLogicValuePtr
;
45 typedef std::vector
<CBooleanLogicValuePtr
> CBooleanLogicValues
;
47 class CBooleanLogicOperation
;
48 typedef std::shared_ptr
<CBooleanLogicOperation
> CBooleanLogicOperationPtr
;
49 typedef std::vector
<CBooleanLogicOperationPtr
> CBooleanLogicOperations
;
51 class CBooleanLogicOperation
: public IXmlDeserializable
54 explicit CBooleanLogicOperation(BooleanLogicOperation op
= BooleanLogicOperationAnd
)
57 ~CBooleanLogicOperation() override
= default;
59 bool Deserialize(const TiXmlNode
*node
) override
;
61 virtual BooleanLogicOperation
GetOperation() const { return m_operation
; }
62 virtual const CBooleanLogicOperations
& GetOperations() const { return m_operations
; }
63 virtual const CBooleanLogicValues
& GetValues() const { return m_values
; }
65 virtual void SetOperation(BooleanLogicOperation op
) { m_operation
= op
; }
68 virtual CBooleanLogicOperation
* newOperation() { return new CBooleanLogicOperation(); }
69 virtual CBooleanLogicValue
* newValue() { return new CBooleanLogicValue(); }
71 BooleanLogicOperation m_operation
;
72 CBooleanLogicOperations m_operations
;
73 CBooleanLogicValues m_values
;
76 class CBooleanLogic
: public IXmlDeserializable
79 /* make sure nobody deletes a pointer to this class */
80 ~CBooleanLogic() override
= default;
83 bool Deserialize(const TiXmlNode
*node
) override
;
85 const CBooleanLogicOperationPtr
& Get() const { return m_operation
; }
86 CBooleanLogicOperationPtr
Get() { return m_operation
; }
89 CBooleanLogicOperationPtr m_operation
;