Kaydet (Commit) 237e4f52 authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Use iterators over index access.

This makes ValidQuery *slightly* faster.

Change-Id: I9fff6099b597d7a8d4d5a4358099348baa657802
üst c9e4cc27
...@@ -59,11 +59,19 @@ struct ScQueryParamBase ...@@ -59,11 +59,19 @@ struct ScQueryParamBase
void Resize(size_t nNew); void Resize(size_t nNew);
void FillInExcelSyntax(const rtl::OUString& aCellStr, SCSIZE nIndex); void FillInExcelSyntax(const rtl::OUString& aCellStr, SCSIZE nIndex);
protected:
typedef boost::ptr_vector<ScQueryEntry> EntriesType;
public:
typedef EntriesType::const_iterator const_iterator;
const_iterator begin() const;
const_iterator end() const;
protected: protected:
ScQueryParamBase(); ScQueryParamBase();
ScQueryParamBase(const ScQueryParamBase& r); ScQueryParamBase(const ScQueryParamBase& r);
typedef boost::ptr_vector<ScQueryEntry> EntriesType;
EntriesType maEntries; EntriesType maEntries;
}; };
......
...@@ -1530,14 +1530,14 @@ bool ScTable::ValidQuery( ...@@ -1530,14 +1530,14 @@ bool ScTable::ValidQuery(
long nPos = -1; long nPos = -1;
QueryEvaluator aEval(*pDocument, *this, rParam, pbTestEqualCondition); QueryEvaluator aEval(*pDocument, *this, rParam, pbTestEqualCondition);
ScQueryParam::const_iterator it, itBeg = rParam.begin(), itEnd = rParam.end();
for (size_t i = 0; i < nEntryCount && rParam.GetEntry(i).bDoQuery; ++i) for (it = itBeg; it != itEnd && it->bDoQuery; ++it)
{ {
const ScQueryEntry& rEntry = rParam.GetEntry(i); const ScQueryEntry& rEntry = *it;
SCCOL nCol = static_cast<SCCOL>(rEntry.nField); SCCOL nCol = static_cast<SCCOL>(rEntry.nField);
// we can only handle one single direct query // we can only handle one single direct query
if ( !pCell || i > 0 ) if (!pCell || it != itBeg)
pCell = GetCell(nCol, nRow); pCell = GetCell(nCol, nRow);
std::pair<bool,bool> aRes(false, false); std::pair<bool,bool> aRes(false, false);
......
...@@ -57,6 +57,16 @@ struct FindUnused : public std::unary_function<ScQueryEntry, bool> ...@@ -57,6 +57,16 @@ struct FindUnused : public std::unary_function<ScQueryEntry, bool>
} }
ScQueryParamBase::const_iterator ScQueryParamBase::begin() const
{
return maEntries.begin();
}
ScQueryParamBase::const_iterator ScQueryParamBase::end() const
{
return maEntries.end();
}
ScQueryParamBase::ScQueryParamBase() : ScQueryParamBase::ScQueryParamBase() :
bHasHeader(true), bHasHeader(true),
bByRow(true), bByRow(true),
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment