Commit c180526d authored by Marcin Siodelski's avatar Marcin Siodelski

[3408] Addressed review comments.

parent 51720f50
...@@ -218,19 +218,34 @@ Element::create(const long long int i, const Position& pos) { ...@@ -218,19 +218,34 @@ Element::create(const long long int i, const Position& pos) {
return (ElementPtr(new IntElement(static_cast<int64_t>(i), pos))); return (ElementPtr(new IntElement(static_cast<int64_t>(i), pos)));
} }
ElementPtr
Element::create(const int i, const Position& pos) {
return (create(static_cast<long long int>(i), pos));
};
ElementPtr
Element::create(const long int i, const Position& pos) {
return (create(static_cast<long long int>(i), pos));
};
ElementPtr ElementPtr
Element::create(const double d, const Position& pos) { Element::create(const double d, const Position& pos) {
return (ElementPtr(new DoubleElement(d, pos))); return (ElementPtr(new DoubleElement(d, pos)));
} }
ElementPtr
Element::create(const bool b, const Position& pos) {
return (ElementPtr(new BoolElement(b, pos)));
}
ElementPtr ElementPtr
Element::create(const std::string& s, const Position& pos) { Element::create(const std::string& s, const Position& pos) {
return (ElementPtr(new StringElement(s, pos))); return (ElementPtr(new StringElement(s, pos)));
} }
ElementPtr ElementPtr
Element::create(const bool b, const Position& pos) { Element::create(const char *s, const Position& pos) {
return (ElementPtr(new BoolElement(b, pos))); return (create(std::string(s), pos));
} }
ElementPtr ElementPtr
...@@ -412,7 +427,8 @@ fromStringstreamNumber(std::istream& in, const std::string& file, ...@@ -412,7 +427,8 @@ fromStringstreamNumber(std::istream& in, const std::string& file,
return (Element::create(boost::lexical_cast<double>(number), return (Element::create(boost::lexical_cast<double>(number),
Element::Position(line, start_pos))); Element::Position(line, start_pos)));
} catch (const boost::bad_lexical_cast&) { } catch (const boost::bad_lexical_cast&) {
isc_throw(JSONError, std::string("Number overflow: ") + number); throwJSONError(std::string("Number overflow: ") + number,
file, line, start_pos);
} }
} else { } else {
try { try {
......
...@@ -351,16 +351,11 @@ public: ...@@ -351,16 +351,11 @@ public:
static ElementPtr create(const long long int i, static ElementPtr create(const long long int i,
const Position& pos = ZERO_POSITION()); const Position& pos = ZERO_POSITION());
static ElementPtr create(const int i, static ElementPtr create(const int i,
const Position& pos = ZERO_POSITION()) { const Position& pos = ZERO_POSITION());
return (create(static_cast<long long int>(i), pos));
};
static ElementPtr create(const long int i, static ElementPtr create(const long int i,
const Position& pos = ZERO_POSITION()) { const Position& pos = ZERO_POSITION());
return (create(static_cast<long long int>(i), pos));
};
static ElementPtr create(const double d, static ElementPtr create(const double d,
const Position& pos = ZERO_POSITION()); const Position& pos = ZERO_POSITION());
static ElementPtr create(const bool b, static ElementPtr create(const bool b,
const Position& pos = ZERO_POSITION()); const Position& pos = ZERO_POSITION());
static ElementPtr create(const std::string& s, static ElementPtr create(const std::string& s,
...@@ -368,9 +363,7 @@ public: ...@@ -368,9 +363,7 @@ public:
// need both std:string and char *, since c++ will match // need both std:string and char *, since c++ will match
// bool before std::string when you pass it a char * // bool before std::string when you pass it a char *
static ElementPtr create(const char *s, static ElementPtr create(const char *s,
const Position& pos = ZERO_POSITION()) { const Position& pos = ZERO_POSITION());
return (create(std::string(s), pos));
}
/// \brief Creates an empty ListElement type ElementPtr. /// \brief Creates an empty ListElement type ElementPtr.
/// ///
...@@ -474,7 +467,7 @@ public: ...@@ -474,7 +467,7 @@ public:
/// (C++ tries to convert integer type values and reference/pointer /// (C++ tries to convert integer type values and reference/pointer
/// if value types do not match exactly) /// if value types do not match exactly)
/// We decided the storage as int64_t, /// We decided the storage as int64_t,
/// three (long long, long, int) override function defintions /// three (long long, long, int) override function definitions
/// and cast int/long/long long to int64_t via long long. /// and cast int/long/long long to int64_t via long long.
/// Therefore, call by value methods (create, setValue) have three /// Therefore, call by value methods (create, setValue) have three
/// (int,long,long long) definitions. Others use int64_t. /// (int,long,long long) definitions. Others use int64_t.
......
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