Index: src/libchcore/TPathContainer.cpp =================================================================== diff -u -N -r8a2ff3b2b71b45fb525e030167e62f316cb32869 -ra4635addad389b9e117679437a3e1b64a739ea96 --- src/libchcore/TPathContainer.cpp (.../TPathContainer.cpp) (revision 8a2ff3b2b71b45fb525e030167e62f316cb32869) +++ src/libchcore/TPathContainer.cpp (.../TPathContainer.cpp) (revision a4635addad389b9e117679437a3e1b64a739ea96) @@ -1,220 +1,220 @@ -// ============================================================================ -// Copyright (C) 2001-2014 by Jozef Starosczyk -// ixen@copyhandler.com -// -// This program is free software; you can redistribute it and/or modify -// it under the terms of the GNU Library General Public License -// (version 2) as published by the Free Software Foundation; -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU Library General Public -// License along with this program; if not, write to the -// Free Software Foundation, Inc., -// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -// ============================================================================ -#include "stdafx.h" -#include "TPathContainer.h" -#include "TCoreException.h" -#include "ErrorCodes.h" -#include "TStringArray.h" - -namespace chcore -{ - // ============================================================================ - /// TPathContainer::TPathContainer - /// @date 2009/11/30 - /// - /// @brief Constructs an empty path container object. - // ============================================================================ - TPathContainer::TPathContainer() : - m_vPaths() - { - } - - // ============================================================================ - /// TPathContainer::TPathContainer - /// @date 2009/11/30 - /// - /// @brief Constructs the path container object from another path container. - /// @param[in] rSrcContainer - path container to copy paths from. - // ============================================================================ - TPathContainer::TPathContainer(const TPathContainer& rSrcContainer) : - m_vPaths(rSrcContainer.m_vPaths) - { - } - - // ============================================================================ - /// TPathContainer::~TPathContainer - /// @date 2009/11/30 - /// - /// @brief Destructs this path container object. - // ============================================================================ - TPathContainer::~TPathContainer() - { - } - - // ============================================================================ - /// TPathContainer::operator= - /// @date 2009/11/30 - /// - /// @brief Assigns another path container object to this one. - /// @param[in] rSrcContainer - container with paths to copy from. - /// @return Reference to this object. - // ============================================================================ - TPathContainer& TPathContainer::operator=(const TPathContainer& rSrcContainer) - { - if (this != &rSrcContainer) - m_vPaths = rSrcContainer.m_vPaths; - - return *this; - } - - // ============================================================================ - /// TPathContainer::Add - /// @date 2009/11/30 - /// - /// @brief Adds a path to the end of list. - /// @param[in] spPath - path to be added. - // ============================================================================ - void TPathContainer::Add(const TSmartPath& spPath) - { - m_vPaths.push_back(spPath); - } - - void TPathContainer::Append(const TPathContainer& vPaths) - { - m_vPaths.insert(m_vPaths.end(), vPaths.m_vPaths.begin(), vPaths.m_vPaths.end()); - } - - // ============================================================================ - /// TPathContainer::GetAt - /// @date 2009/11/30 - /// - /// @brief Retrieves path at specified index. - /// @param[in] stIndex - index at which to retrieve item. - /// @return Reference to the path object. - // ============================================================================ - const TSmartPath& TPathContainer::GetAt(size_t stIndex) const - { - if (stIndex > m_vPaths.size()) - throw TCoreException(eErr_BoundsExceeded, L"stIndex", LOCATION); - - return m_vPaths.at(stIndex); - } - - // ============================================================================ - /// TPathContainer::GetAt - /// @date 2009/11/30 - /// - /// @brief Retrieves path at specified index. - /// @param[in] stIndex - index at which to retrieve item. - /// @return Reference to the path object. - // ============================================================================ - TSmartPath& TPathContainer::GetAt(size_t stIndex) - { - if (stIndex > m_vPaths.size()) - throw TCoreException(eErr_BoundsExceeded, L"stIndex", LOCATION); - - return m_vPaths.at(stIndex); - } - - // ============================================================================ - /// TPathContainer::SetAt - /// @date 2009/11/30 - /// - /// @brief Sets a path at a specified index. - /// @param[in] stIndex - index at which to set the path. - /// @param[in] spPath - path to be set. - // ============================================================================ - void TPathContainer::SetAt(size_t stIndex, const TSmartPath& spPath) - { - if (stIndex > m_vPaths.size()) - throw TCoreException(eErr_BoundsExceeded, L"stIndex", LOCATION); - - m_vPaths[stIndex] = spPath; - } - - // ============================================================================ - /// TPathContainer::DeleteAt - /// @date 2009/11/30 - /// - /// @brief Removes a path from container at specified index. - /// @param[in] stIndex - index at which to delete. - // ============================================================================ - void TPathContainer::DeleteAt(size_t stIndex) - { - if (stIndex > m_vPaths.size()) - throw TCoreException(eErr_BoundsExceeded, L"stIndex", LOCATION); - - m_vPaths.erase(m_vPaths.begin() + stIndex); - } - - // ============================================================================ - /// TPathContainer::Clear - /// @date 2009/11/30 - /// - /// @brief Removes all paths from this container. - // ============================================================================ - void TPathContainer::Clear() - { - m_vPaths.clear(); - } - - // ============================================================================ - /// TPathContainer::GetCount - /// @date 2009/11/30 - /// - /// @brief Retrieves count of elements in the container. - /// @return Count of elements. - // ============================================================================ - size_t TPathContainer::GetCount() const - { - return m_vPaths.size(); - } - - // ============================================================================ - /// TPathContainer::GetCount - /// @date 2010/10/12 - /// - /// @brief Retrieves info if this container is empty. - /// @return True if empty, false otherwise. - // ============================================================================ - bool TPathContainer::IsEmpty() const - { - return m_vPaths.empty(); - } - - void TPathContainer::StoreInConfig(TConfig& rConfig, PCTSTR pszPropName) const - { - TStringArray vPaths; - - // store as vector of strings (ineffective; should be done better) - for(const TSmartPath& spPath : m_vPaths) - { - vPaths.Add(spPath.ToWString()); - } - - rConfig.SetValue(pszPropName, vPaths); - } - - bool TPathContainer::ReadFromConfig(const TConfig& rConfig, PCTSTR pszPropName) - { - m_vPaths.clear(); - - TStringArray vPaths; - if (rConfig.GetValue(pszPropName, vPaths)) - { - for (size_t stIndex = 0; stIndex < vPaths.GetCount(); ++stIndex) - { - m_vPaths.push_back(PathFromWString(vPaths.GetAt(stIndex))); - } - return true; - } - else - return false; - } -} +// ============================================================================ +// Copyright (C) 2001-2014 by Jozef Starosczyk +// ixen@copyhandler.com +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU Library General Public License +// (version 2) as published by the Free Software Foundation; +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU Library General Public +// License along with this program; if not, write to the +// Free Software Foundation, Inc., +// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +// ============================================================================ +#include "stdafx.h" +#include "TPathContainer.h" +#include "TCoreException.h" +#include "ErrorCodes.h" +#include "TStringArray.h" + +namespace chcore +{ + // ============================================================================ + /// TPathContainer::TPathContainer + /// @date 2009/11/30 + /// + /// @brief Constructs an empty path container object. + // ============================================================================ + TPathContainer::TPathContainer() : + m_vPaths() + { + } + + // ============================================================================ + /// TPathContainer::TPathContainer + /// @date 2009/11/30 + /// + /// @brief Constructs the path container object from another path container. + /// @param[in] rSrcContainer - path container to copy paths from. + // ============================================================================ + TPathContainer::TPathContainer(const TPathContainer& rSrcContainer) : + m_vPaths(rSrcContainer.m_vPaths) + { + } + + // ============================================================================ + /// TPathContainer::~TPathContainer + /// @date 2009/11/30 + /// + /// @brief Destructs this path container object. + // ============================================================================ + TPathContainer::~TPathContainer() + { + } + + // ============================================================================ + /// TPathContainer::operator= + /// @date 2009/11/30 + /// + /// @brief Assigns another path container object to this one. + /// @param[in] rSrcContainer - container with paths to copy from. + /// @return Reference to this object. + // ============================================================================ + TPathContainer& TPathContainer::operator=(const TPathContainer& rSrcContainer) + { + if (this != &rSrcContainer) + m_vPaths = rSrcContainer.m_vPaths; + + return *this; + } + + // ============================================================================ + /// TPathContainer::Add + /// @date 2009/11/30 + /// + /// @brief Adds a path to the end of list. + /// @param[in] spPath - path to be added. + // ============================================================================ + void TPathContainer::Add(const TSmartPath& spPath) + { + m_vPaths.push_back(spPath); + } + + void TPathContainer::Append(const TPathContainer& vPaths) + { + m_vPaths.insert(m_vPaths.end(), vPaths.m_vPaths.begin(), vPaths.m_vPaths.end()); + } + + // ============================================================================ + /// TPathContainer::GetAt + /// @date 2009/11/30 + /// + /// @brief Retrieves path at specified index. + /// @param[in] stIndex - index at which to retrieve item. + /// @return Reference to the path object. + // ============================================================================ + const TSmartPath& TPathContainer::GetAt(size_t stIndex) const + { + if (stIndex > m_vPaths.size()) + throw TCoreException(eErr_BoundsExceeded, L"stIndex", LOCATION); + + return m_vPaths.at(stIndex); + } + + // ============================================================================ + /// TPathContainer::GetAt + /// @date 2009/11/30 + /// + /// @brief Retrieves path at specified index. + /// @param[in] stIndex - index at which to retrieve item. + /// @return Reference to the path object. + // ============================================================================ + TSmartPath& TPathContainer::GetAt(size_t stIndex) + { + if (stIndex > m_vPaths.size()) + throw TCoreException(eErr_BoundsExceeded, L"stIndex", LOCATION); + + return m_vPaths.at(stIndex); + } + + // ============================================================================ + /// TPathContainer::SetAt + /// @date 2009/11/30 + /// + /// @brief Sets a path at a specified index. + /// @param[in] stIndex - index at which to set the path. + /// @param[in] spPath - path to be set. + // ============================================================================ + void TPathContainer::SetAt(size_t stIndex, const TSmartPath& spPath) + { + if (stIndex > m_vPaths.size()) + throw TCoreException(eErr_BoundsExceeded, L"stIndex", LOCATION); + + m_vPaths[stIndex] = spPath; + } + + // ============================================================================ + /// TPathContainer::DeleteAt + /// @date 2009/11/30 + /// + /// @brief Removes a path from container at specified index. + /// @param[in] stIndex - index at which to delete. + // ============================================================================ + void TPathContainer::DeleteAt(size_t stIndex) + { + if (stIndex > m_vPaths.size()) + throw TCoreException(eErr_BoundsExceeded, L"stIndex", LOCATION); + + m_vPaths.erase(m_vPaths.begin() + stIndex); + } + + // ============================================================================ + /// TPathContainer::Clear + /// @date 2009/11/30 + /// + /// @brief Removes all paths from this container. + // ============================================================================ + void TPathContainer::Clear() + { + m_vPaths.clear(); + } + + // ============================================================================ + /// TPathContainer::GetCount + /// @date 2009/11/30 + /// + /// @brief Retrieves count of elements in the container. + /// @return Count of elements. + // ============================================================================ + size_t TPathContainer::GetCount() const + { + return m_vPaths.size(); + } + + // ============================================================================ + /// TPathContainer::GetCount + /// @date 2010/10/12 + /// + /// @brief Retrieves info if this container is empty. + /// @return True if empty, false otherwise. + // ============================================================================ + bool TPathContainer::IsEmpty() const + { + return m_vPaths.empty(); + } + + void TPathContainer::StoreInConfig(TConfig& rConfig, PCTSTR pszPropName) const + { + TStringArray vPaths; + + // store as vector of strings (ineffective; should be done better) + for(const TSmartPath& spPath : m_vPaths) + { + vPaths.Add(spPath.ToWString()); + } + + rConfig.SetValue(pszPropName, vPaths); + } + + bool TPathContainer::ReadFromConfig(const TConfig& rConfig, PCTSTR pszPropName) + { + m_vPaths.clear(); + + TStringArray vPaths; + if (rConfig.GetValue(pszPropName, vPaths)) + { + for (size_t stIndex = 0; stIndex < vPaths.GetCount(); ++stIndex) + { + m_vPaths.push_back(PathFromWString(vPaths.GetAt(stIndex))); + } + return true; + } + else + return false; + } +}