diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-04-20 00:50:22 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2008-04-20 00:50:22 +0000 |
| commit | 3505201f3333c937b5b870d70019d400c722a69f (patch) | |
| tree | def64ac6be50375e43da5e3e91eb443dd4c171fc /src/ParameterizedStringParser.cc | |
| parent | 99733a84e2102739ee7c9de08ffae9e9216b6003 (diff) | |
2008-04-20 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Rewritten SharedHandle. Now copy constructor taking raw pointer
has
keyword explicit and SharedHandle's default constructor
initializes
its internal obj to null, old implementation initializes it
using
obj's default constructor.
To assign null, write SharedHandle<T> x(...); x.reset();
TODO: test/SharedHandleTest.cc needs more tests.
* src/SharedHandle.h
Diffstat (limited to 'src/ParameterizedStringParser.cc')
| -rw-r--r-- | src/ParameterizedStringParser.cc | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/ParameterizedStringParser.cc b/src/ParameterizedStringParser.cc index 902d64ba..5de69064 100644 --- a/src/ParameterizedStringParser.cc +++ b/src/ParameterizedStringParser.cc @@ -55,7 +55,7 @@ PStringDatumHandle ParameterizedStringParser::diggPString(const std::string& src int& offset) { if(src.size() == (size_t)offset) { - return 0; + return SharedHandle<PStringDatum>(); } switch(src[offset]) { case '[': @@ -77,7 +77,7 @@ PStringDatumHandle ParameterizedStringParser::createSegment(const std::string& s std::string value = src.substr(offset, nextDelimiterIndex-offset); offset = nextDelimiterIndex; PStringDatumHandle next = diggPString(src, offset); - return new PStringSegment(value, next); + return SharedHandle<PStringDatum>(new PStringSegment(value, next)); } PStringDatumHandle ParameterizedStringParser::createSelect(const std::string& src, @@ -95,7 +95,7 @@ PStringDatumHandle ParameterizedStringParser::createSelect(const std::string& sr } offset = rightParenIndex+1; PStringDatumHandle next = diggPString(src, offset); - return new PStringSelect(values, next); + return SharedHandle<PStringDatum>(new PStringSelect(values, next)); } PStringDatumHandle ParameterizedStringParser::createLoop(const std::string& src, @@ -124,27 +124,27 @@ PStringDatumHandle ParameterizedStringParser::createLoop(const std::string& src, if(range.first == "" || range.second == "") { throw new FatalException("Loop range missing."); } - NumberDecoratorHandle nd = 0; + NumberDecoratorHandle nd; unsigned int start; unsigned int end; if(Util::isNumber(range.first) && Util::isNumber(range.second)) { - nd = new FixedWidthNumberDecorator(range.first.size()); + nd.reset(new FixedWidthNumberDecorator(range.first.size())); start = Util::parseUInt(range.first); end = Util::parseUInt(range.second); } else if(Util::isLowercase(range.first) && Util::isLowercase(range.second)) { - nd = new AlphaNumberDecorator(range.first.size()); + nd.reset(new AlphaNumberDecorator(range.first.size())); start = Util::alphaToNum(range.first); end = Util::alphaToNum(range.second); } else if(Util::isUppercase(range.first) && Util::isUppercase(range.second)) { - nd = new AlphaNumberDecorator(range.first.size(), true); + nd.reset(new AlphaNumberDecorator(range.first.size(), true)); start = Util::alphaToNum(range.first); end = Util::alphaToNum(range.second); } else { throw new FatalException("Invalid loop range."); } - PStringDatumHandle next = diggPString(src, offset); - return new PStringNumLoop(start, end, step, nd, next); + PStringDatumHandle next(diggPString(src, offset)); + return SharedHandle<PStringDatum>(new PStringNumLoop(start, end, step, nd, next)); } } // namespace aria2 |
