chenluhua1980
2026-01-14 6b6297c6fc0aa5c059d35732c7ee22ebca93967f
SourceCode/Bond/Servo/CAttributeVector.cpp
@@ -1,5 +1,6 @@
#include "stdafx.h"
#include "CAttributeVector.h"
#include <algorithm>
namespace SERVO {
@@ -16,14 +17,43 @@
      m_attributes.clear();
   }
   void CAttributeVector::addAttribute(CAttribute* pAttribute)
   BOOL CAttributeVector::addAttribute(CAttribute* pAttribute, BOOL bReplace/* = FALSE*/)
   {
      if (!pAttribute) {
         return FALSE;
      }
      const std::string& name = pAttribute->getName();
      if (name.empty()) {
         return FALSE;
      }
      if (bReplace) {
         for (auto it = m_attributes.begin(); it != m_attributes.end(); ) {
            if (name.compare((*it)->getName()) == 0) {
               delete (*it);
               it = m_attributes.erase(it);
            }
            else {
               ++it;
            }
         }
      }
      m_attributes.push_back(pAttribute);
      return TRUE;
   }
   void CAttributeVector::addAttributeVector(CAttributeVector& av)
   {
      for (auto item : av.m_attributes) {
         m_attributes.push_back(item);
      }
   }
   unsigned int CAttributeVector::size()
   {
      return m_attributes.size();
      return (unsigned int)m_attributes.size();
   }
   void CAttributeVector::clear()
@@ -32,6 +62,13 @@
         delete item;
      }
      m_attributes.clear();
   }
   void CAttributeVector::sortWithWeight()
   {
      std::sort(m_attributes.begin(), m_attributes.end(), [](CAttribute* pAttribute1, CAttribute* pAttribut2) {
         return pAttribute1->getWeight() < pAttribut2->getWeight();
      });
   }
   bool CAttributeVector::empty()
@@ -44,4 +81,9 @@
      ASSERT(index < m_attributes.size());
      return m_attributes[index];
   }
   std::vector<CAttribute*>& CAttributeVector::getAttributes()
   {
      return m_attributes;
   }
}