]> granicus.if.org Git - icinga2/commitdiff
Use Array::Contains in InExpression/NotInExpression
authorGunnar Beutner <gunnar@beutner.name>
Sat, 15 Nov 2014 07:22:09 +0000 (08:22 +0100)
committerGunnar Beutner <gunnar@beutner.name>
Sat, 15 Nov 2014 07:22:32 +0000 (08:22 +0100)
lib/base/array.cpp
lib/base/array.hpp
lib/config/expression.cpp

index c6a79bf4a94e004458b24bb578288c3992425221..6b4ad211437ff07ec089a542339a8b5dc96be5f3 100644 (file)
@@ -115,7 +115,7 @@ size_t Array::GetLength(void) const
  * @param value The value.
  * @returns true if the array contains the value, false otherwise.
  */
-bool Array::Contains(const String& value) const
+bool Array::Contains(const Value& value) const
 {
        ASSERT(!OwnsLock());
        ObjectLock olock(this);
index 7459348ab0ac3c3527ba3a79e96ed054e441b7e9..e721cc0e6e59f9746e75d740e1fa814a1f21ee0c 100644 (file)
@@ -53,7 +53,7 @@ public:
        Iterator End(void);
 
        size_t GetLength(void) const;
-       bool Contains(const String& value) const;
+       bool Contains(const Value& value) const;
 
        void Insert(unsigned int index, const Value& value);
        void Remove(unsigned int index);
index 7135e4c640b314eb45e4274744b428c32d68641a..d3f6914e3a26a0eb32a5fade93a9fc07aa4b6ca2 100644 (file)
@@ -200,14 +200,7 @@ Value InExpression::DoEvaluate(const Object::Ptr& context, DebugHint *dhint) con
        Value left = m_Operand1->Evaluate(context);
                
        Array::Ptr arr = right;
-       ObjectLock olock(arr);
-       BOOST_FOREACH(const Value& value, arr) {
-               if (value == left) {
-                       return true;
-               }
-       }
-
-       return false;
+       return arr->Contains(left);
 }
 
 Value NotInExpression::DoEvaluate(const Object::Ptr& context, DebugHint *dhint) const
@@ -222,13 +215,7 @@ Value NotInExpression::DoEvaluate(const Object::Ptr& context, DebugHint *dhint)
        Value left = m_Operand1->Evaluate(context);
 
        Array::Ptr arr = right;
-       ObjectLock olock(arr);
-       BOOST_FOREACH(const Value& value, arr) {
-               if (value == left)
-                       return false;
-       }
-
-       return true;
+       return !arr->Contains(left);
 }
 
 Value LogicalAndExpression::DoEvaluate(const Object::Ptr& context, DebugHint *dhint) const