- made prefix() and postfix() virtual

- avoid stream operator calls when copying empty strings
This commit is contained in:
Aleksandar Fabijanic 2009-10-29 17:45:02 +00:00
parent 417c2344cb
commit 65ad81c363
3 changed files with 17 additions and 11 deletions

View File

@ -616,13 +616,6 @@ inline RecordSet::Iterator RecordSet::end()
}
inline std::ostream& RecordSet::copyNames(std::ostream& os) const
{
os << (*_pBegin)->namesToString();
return os;
}
inline const RowFilter* RecordSet::getFilter() const
{
return _pFilter;

View File

@ -103,10 +103,10 @@ public:
void setTotalRowCount(int count);
/// Sets total row count.
const std::string& prefix() const;
virtual const std::string& prefix() const;
/// Returns prefix string;
const std::string& postfix() const;
virtual const std::string& postfix() const;
/// Returns postfix string;
void reset();
@ -116,7 +116,7 @@ public:
protected:
void setPrefix(const std::string& prefix) const;
/// Sets the p[refix for the formatter.
/// Sets the prefix for the formatter.
void setPostfix(const std::string& postfix) const;
/// Sets the postfix for the formatter

View File

@ -319,11 +319,24 @@ void RecordSet::setRowFormatter(RowFormatter* pRowFormatter)
}
std::ostream& RecordSet::copyNames(std::ostream& os) const
{
std::string names = (*_pBegin)->namesToString();
if (!names.empty()) os << names;
return os;
}
std::ostream& RecordSet::copyValues(std::ostream& os, std::size_t offset, std::size_t length) const
{
RowIterator itBegin = *_pBegin + offset;
RowIterator itEnd = (RowIterator::POSITION_END != length) ? itBegin + length : *_pEnd;
std::copy(itBegin, itEnd, std::ostream_iterator<Row>(os));
std::string val;
for (; itBegin != itEnd; ++itBegin)
{
val = itBegin->valuesToString();
if (!val.empty()) os << val;
}
return os;
}