summaryrefslogtreecommitdiff
path: root/src/ParameterizedStringParser.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-28 12:30:11 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-02-28 12:30:11 +0000
commitc342bde9627b434effbc0cd10b817670d1da0923 (patch)
tree60d14bf448066b8dcd639adfa0db716d5a8258c8 /src/ParameterizedStringParser.cc
parent135f0a2a8c4ee04a5e96d84ba558245fabfc1f5c (diff)
2010-02-28 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Use vector instead of deque for containers which is used for mostly read-only purpose.
Diffstat (limited to 'src/ParameterizedStringParser.cc')
-rw-r--r--src/ParameterizedStringParser.cc29
1 files changed, 15 insertions, 14 deletions
diff --git a/src/ParameterizedStringParser.cc b/src/ParameterizedStringParser.cc
index b21bbc98..d342838e 100644
--- a/src/ParameterizedStringParser.cc
+++ b/src/ParameterizedStringParser.cc
@@ -47,14 +47,15 @@
namespace aria2 {
-PStringDatumHandle ParameterizedStringParser::parse(const std::string& src)
+SharedHandle<PStringDatum>
+ParameterizedStringParser::parse(const std::string& src)
{
int offset = 0;
return diggPString(src, offset);
}
-PStringDatumHandle ParameterizedStringParser::diggPString(const std::string& src,
- int& offset)
+SharedHandle<PStringDatum>
+ParameterizedStringParser::diggPString(const std::string& src, int& offset)
{
if(src.size() == (size_t)offset) {
return SharedHandle<PStringDatum>();
@@ -69,8 +70,8 @@ PStringDatumHandle ParameterizedStringParser::diggPString(const std::string& src
}
}
-PStringDatumHandle ParameterizedStringParser::createSegment(const std::string& src,
- int& offset)
+SharedHandle<PStringDatum>
+ParameterizedStringParser::createSegment(const std::string& src, int& offset)
{
std::string::size_type nextDelimiterIndex = src.find_first_of("[{", offset);
if(nextDelimiterIndex == std::string::npos) {
@@ -78,31 +79,31 @@ PStringDatumHandle ParameterizedStringParser::createSegment(const std::string& s
}
std::string value = src.substr(offset, nextDelimiterIndex-offset);
offset = nextDelimiterIndex;
- PStringDatumHandle next = diggPString(src, offset);
+ SharedHandle<PStringDatum> next = diggPString(src, offset);
return SharedHandle<PStringDatum>(new PStringSegment(value, next));
}
-PStringDatumHandle ParameterizedStringParser::createSelect(const std::string& src,
- int& offset)
+SharedHandle<PStringDatum>
+ParameterizedStringParser::createSelect(const std::string& src, int& offset)
{
++offset;
std::string::size_type rightParenIndex = src.find("}", offset);
if(rightParenIndex == std::string::npos) {
throw DL_ABORT_EX("Missing '}' in the parameterized string.");
}
- std::deque<std::string> values;
+ std::vector<std::string> values;
util::split(src.substr(offset, rightParenIndex-offset),
std::back_inserter(values), ",", true);
if(values.empty()) {
throw DL_ABORT_EX("Empty {} is not allowed.");
}
offset = rightParenIndex+1;
- PStringDatumHandle next = diggPString(src, offset);
+ SharedHandle<PStringDatum> next = diggPString(src, offset);
return SharedHandle<PStringDatum>(new PStringSelect(values, next));
}
-PStringDatumHandle ParameterizedStringParser::createLoop(const std::string& src,
- int& offset)
+SharedHandle<PStringDatum>
+ParameterizedStringParser::createLoop(const std::string& src, int& offset)
{
++offset;
std::string::size_type rightParenIndex = src.find("]", offset);
@@ -127,7 +128,7 @@ PStringDatumHandle ParameterizedStringParser::createLoop(const std::string& src,
if(range.first.empty() || range.second.empty()) {
throw DL_ABORT_EX("Loop range missing.");
}
- NumberDecoratorHandle nd;
+ SharedHandle<NumberDecorator> nd;
unsigned int start;
unsigned int end;
if(util::isNumber(range.first) && util::isNumber(range.second)) {
@@ -146,7 +147,7 @@ PStringDatumHandle ParameterizedStringParser::createLoop(const std::string& src,
throw DL_ABORT_EX("Invalid loop range.");
}
- PStringDatumHandle next(diggPString(src, offset));
+ SharedHandle<PStringDatum> next(diggPString(src, offset));
return SharedHandle<PStringDatum>(new PStringNumLoop(start, end, step, nd, next));
}