Index: src/libchcore/TSQLiteColumnDefinition.cpp =================================================================== diff -u -N -r9479911a096555a7504c5c8a8eaee83ecb63440c -rfc67a825635691930b3ac00dc95b16e59f3d2fae --- src/libchcore/TSQLiteColumnDefinition.cpp (.../TSQLiteColumnDefinition.cpp) (revision 9479911a096555a7504c5c8a8eaee83ecb63440c) +++ src/libchcore/TSQLiteColumnDefinition.cpp (.../TSQLiteColumnDefinition.cpp) (revision fc67a825635691930b3ac00dc95b16e59f3d2fae) @@ -31,9 +31,9 @@ { } -size_t TSQLiteColumnsDefinition::AddColumn(const TString& strColumnName) +size_t TSQLiteColumnsDefinition::AddColumn(const TString& strColumnName, ETypes eColType) { - m_vColumns.push_back(strColumnName); + m_vColumns.push_back(std::make_pair(strColumnName, eColType)); return m_vColumns.size() - 1; } @@ -42,24 +42,22 @@ m_vColumns.clear(); } -size_t TSQLiteColumnsDefinition::GetColumnIndex(const TString& strColumnName, bool bAdd) +size_t TSQLiteColumnsDefinition::GetColumnIndex(const TString& strColumnName) { - std::vector::const_iterator iterFnd = std::find(m_vColumns.begin(), m_vColumns.end(), strColumnName); - if(iterFnd == m_vColumns.end()) + size_t stPos = 0; + for(VecColumns::const_iterator iterFnd = m_vColumns.begin(); iterFnd != m_vColumns.end(); ++iterFnd) { - if(bAdd) - return AddColumn(strColumnName); - - THROW_CORE_EXCEPTION(eErr_InvalidData); + if(iterFnd->first == strColumnName) + return stPos; + ++stPos; } - std::vector::const_iterator iterBegin = m_vColumns.begin(); - return std::distance(iterBegin, iterFnd); + THROW_CORE_EXCEPTION(eErr_BoundsExceeded); } TString TSQLiteColumnsDefinition::GetColumnName(size_t stIndex) const { - return m_vColumns.at(stIndex); + return m_vColumns.at(stIndex).first; } size_t TSQLiteColumnsDefinition::GetCount() const @@ -72,18 +70,13 @@ return m_vColumns.empty(); } -IColumnsDefinition& TSQLiteColumnsDefinition::operator%(const TString& strColName) +TString TSQLiteColumnsDefinition::GetCommaSeparatedColumns() const { - AddColumn(strColName); - return *this; -} - -chcore::TString TSQLiteColumnsDefinition::GetCommaSeparatedColumns() const -{ TString strColumns; - BOOST_FOREACH(const TString& strName, m_vColumns) + VecColumns::value_type pairCol; + BOOST_FOREACH(pairCol, m_vColumns) { - strColumns += strName + _T(","); + strColumns += pairCol.first + _T(","); } strColumns.TrimRightSelf(_T(","));