summaryrefslogtreecommitdiff
path: root/src/OptionParser.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-28 16:04:52 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-28 16:04:52 +0000
commit72e475dfdeaa4a87dff0eef994e7814e94c40363 (patch)
tree94a84e90c14876db223e4a733f651fe0b034f5e9 /src/OptionParser.cc
parentc342bde9627b434effbc0cd10b817670d1da0923 (diff)
2010-03-01 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Avoid to calculate end() iterator in each loop. std::deque is particularly slow. Make sure that recalculate end iterator if element is erased during loop.
Diffstat (limited to 'src/OptionParser.cc')
-rw-r--r--src/OptionParser.cc8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/OptionParser.cc b/src/OptionParser.cc
index 7e8b56ac..5508dc8a 100644
--- a/src/OptionParser.cc
+++ b/src/OptionParser.cc
@@ -209,8 +209,9 @@ void OptionParser::setOptionHandlers
(const std::vector<SharedHandle<OptionHandler> >& optionHandlers)
{
_optionHandlers = optionHandlers;
- for(std::vector<SharedHandle<OptionHandler> >::iterator i =
- _optionHandlers.begin(); i != _optionHandlers.end(); ++i) {
+ for(std::vector<SharedHandle<OptionHandler> >::const_iterator i =
+ _optionHandlers.begin(), eoi = _optionHandlers.end();
+ i != eoi; ++i) {
(*i)->setOptionID(++_idCounter);
}
std::sort(_optionHandlers.begin(), _optionHandlers.end(),
@@ -230,7 +231,8 @@ void OptionParser::addOptionHandler
void OptionParser::parseDefaultValues(Option& option) const
{
for(std::vector<SharedHandle<OptionHandler> >::const_iterator i =
- _optionHandlers.begin(); i != _optionHandlers.end(); ++i) {
+ _optionHandlers.begin(), eoi = _optionHandlers.end();
+ i != eoi; ++i) {
if(!(*i)->getDefaultValue().empty()) {
(*i)->parse(option, (*i)->getDefaultValue());
}