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
void Resize(size_t nNew);
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:
ScQueryParamBase();
ScQueryParamBase(const ScQueryParamBase& r);
typedef boost::ptr_vector<ScQueryEntry> EntriesType;
EntriesType maEntries;
};
......
......@@ -1530,14 +1530,14 @@ bool ScTable::ValidQuery(
long nPos = -1;
QueryEvaluator aEval(*pDocument, *this, rParam, pbTestEqualCondition);
for (size_t i = 0; i < nEntryCount && rParam.GetEntry(i).bDoQuery; ++i)
ScQueryParam::const_iterator it, itBeg = rParam.begin(), itEnd = rParam.end();
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);
// we can only handle one single direct query
if ( !pCell || i > 0 )
if (!pCell || it != itBeg)
pCell = GetCell(nCol, nRow);
std::pair<bool,bool> aRes(false, false);
......
......@@ -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() :
bHasHeader(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