Index: src/ch/FileFilter.cpp =================================================================== diff -u -N -r52e4374b1e7044f77439e34581780750675125a7 -r09d557ffefb1dd57e7606695e16c3151e42285f2 --- src/ch/FileFilter.cpp (.../FileFilter.cpp) (revision 52e4374b1e7044f77439e34581780750675125a7) +++ src/ch/FileFilter.cpp (.../FileFilter.cpp) (revision 09d557ffefb1dd57e7606695e16c3151e42285f2) @@ -552,15 +552,27 @@ } } +CFiltersArray& CFiltersArray::operator=(const CFiltersArray& rSrc) +{ + if(this != &rSrc) + { + m_vFilters = rSrc.m_vFilters; + } + + return *this; +} + bool CFiltersArray::Match(const CFileInfo& rInfo) const { - if (GetSize() == 0) + if(m_vFilters.empty()) return true; // if only one of the filters matches - return true - for (int i=0;i::const_iterator iterFilter = m_vFilters.begin(); iterFilter != m_vFilters.end(); iterFilter++) + { + if((*iterFilter).Match(rInfo)) return true; + } return false; } @@ -569,21 +581,74 @@ { if (ar.is_storing()) { - ar<::iterator iterFilter = m_vFilters.begin(); iterFilter != m_vFilters.end(); iterFilter++) + { + (*iterFilter).Serialize(ar); + } } else { - int iSize; + m_vFilters.clear(); + + size_t stSize; CFileFilter ff; - ar>>iSize; - SetSize(iSize); - for (int i=0;i> stSize; + m_vFilters.reserve(stSize); + while(stSize--) { ff.Serialize(ar); - SetAt(i, ff); + m_vFilters.push_back(ff); } } } + +bool CFiltersArray::IsEmpty() const +{ + return m_vFilters.empty(); +} + +void CFiltersArray::Add(const CFileFilter& rFilter) +{ + m_vFilters.push_back(rFilter); +} + +bool CFiltersArray::SetAt(size_t stIndex, const CFileFilter& rNewFilter) +{ + BOOST_ASSERT(stIndex < m_vFilters.size()); + if(stIndex < m_vFilters.size()) + { + CFileFilter& rFilter = m_vFilters.at(stIndex); + rFilter = rNewFilter; + return true; + } + else + return false; +} + +const CFileFilter* CFiltersArray::GetAt(size_t stIndex) const +{ + BOOST_ASSERT(stIndex < m_vFilters.size()); + if(stIndex < m_vFilters.size()) + return &m_vFilters.at(stIndex); + else + return NULL; +} + +bool CFiltersArray::RemoveAt(size_t stIndex) +{ + BOOST_ASSERT(stIndex < m_vFilters.size()); + if(stIndex < m_vFilters.size()) + { + m_vFilters.erase(m_vFilters.begin() + stIndex); + return true; + } + else + return false; +} + +size_t CFiltersArray::GetSize() const +{ + return m_vFilters.size(); +}