mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2024-12-30 22:14:09 +08:00
commit
9c17e61bd0
@ -738,6 +738,7 @@ public:
|
|||||||
typedef ValueConstIterator SelfType;
|
typedef ValueConstIterator SelfType;
|
||||||
|
|
||||||
ValueConstIterator();
|
ValueConstIterator();
|
||||||
|
ValueConstIterator(ValueIterator const& other);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
/*! \internal Use by Value to create an iterator.
|
/*! \internal Use by Value to create an iterator.
|
||||||
@ -787,7 +788,7 @@ public:
|
|||||||
typedef ValueIterator SelfType;
|
typedef ValueIterator SelfType;
|
||||||
|
|
||||||
ValueIterator();
|
ValueIterator();
|
||||||
ValueIterator(const ValueConstIterator& other);
|
explicit ValueIterator(const ValueConstIterator& other);
|
||||||
ValueIterator(const ValueIterator& other);
|
ValueIterator(const ValueIterator& other);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -129,6 +129,9 @@ ValueConstIterator::ValueConstIterator(
|
|||||||
const Value::ObjectValues::iterator& current)
|
const Value::ObjectValues::iterator& current)
|
||||||
: ValueIteratorBase(current) {}
|
: ValueIteratorBase(current) {}
|
||||||
|
|
||||||
|
ValueConstIterator::ValueConstIterator(ValueIterator const& other)
|
||||||
|
: ValueIteratorBase(other) {}
|
||||||
|
|
||||||
ValueConstIterator& ValueConstIterator::
|
ValueConstIterator& ValueConstIterator::
|
||||||
operator=(const ValueIteratorBase& other) {
|
operator=(const ValueIteratorBase& other) {
|
||||||
copy(other);
|
copy(other);
|
||||||
@ -149,7 +152,9 @@ ValueIterator::ValueIterator(const Value::ObjectValues::iterator& current)
|
|||||||
: ValueIteratorBase(current) {}
|
: ValueIteratorBase(current) {}
|
||||||
|
|
||||||
ValueIterator::ValueIterator(const ValueConstIterator& other)
|
ValueIterator::ValueIterator(const ValueConstIterator& other)
|
||||||
: ValueIteratorBase(other) {}
|
: ValueIteratorBase(other) {
|
||||||
|
throwRuntimeError("ConstIterator to Iterator should never be allowed.");
|
||||||
|
}
|
||||||
|
|
||||||
ValueIterator::ValueIterator(const ValueIterator& other)
|
ValueIterator::ValueIterator(const ValueIterator& other)
|
||||||
: ValueIteratorBase(other) {}
|
: ValueIteratorBase(other) {}
|
||||||
|
@ -8,6 +8,9 @@
|
|||||||
#include <json/json.h>
|
#include <json/json.h>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
#include <limits>
|
#include <limits>
|
||||||
|
#include <sstream>
|
||||||
|
#include <string>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
// Make numeric limits more convenient to talk about.
|
// Make numeric limits more convenient to talk about.
|
||||||
// Assumes int type in 32 bits.
|
// Assumes int type in 32 bits.
|
||||||
@ -2430,6 +2433,33 @@ JSONTEST_FIXTURE(IteratorTest, indexes) {
|
|||||||
JSONTEST_ASSERT(it == json.end());
|
JSONTEST_ASSERT(it == json.end());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
JSONTEST_FIXTURE(IteratorTest, const) {
|
||||||
|
Json::Value const v;
|
||||||
|
JSONTEST_ASSERT_THROWS(
|
||||||
|
Json::Value::iterator it(v.begin()) // Compile, but throw.
|
||||||
|
);
|
||||||
|
|
||||||
|
Json::Value value;
|
||||||
|
|
||||||
|
for(int i = 9; i < 12; ++i)
|
||||||
|
{
|
||||||
|
std::ostringstream out;
|
||||||
|
out << std::setw(2) << i;
|
||||||
|
std::string str = out.str();
|
||||||
|
value[str] = str;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::ostringstream out;
|
||||||
|
//in old code, this will get a compile error
|
||||||
|
Json::Value::const_iterator iter = value.begin();
|
||||||
|
for(; iter != value.end(); ++iter)
|
||||||
|
{
|
||||||
|
out << *iter << ',';
|
||||||
|
}
|
||||||
|
std::string expected = "\" 9\",\"10\",\"11\",";
|
||||||
|
JSONTEST_ASSERT_STRING_EQUAL(expected, out.str());
|
||||||
|
}
|
||||||
|
|
||||||
int main(int argc, const char* argv[]) {
|
int main(int argc, const char* argv[]) {
|
||||||
JsonTest::Runner runner;
|
JsonTest::Runner runner;
|
||||||
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, checkNormalizeFloatingPointStr);
|
JSONTEST_REGISTER_FIXTURE(runner, ValueTest, checkNormalizeFloatingPointStr);
|
||||||
@ -2500,6 +2530,7 @@ int main(int argc, const char* argv[]) {
|
|||||||
JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, distance);
|
JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, distance);
|
||||||
JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, names);
|
JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, names);
|
||||||
JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, indexes);
|
JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, indexes);
|
||||||
|
JSONTEST_REGISTER_FIXTURE(runner, IteratorTest, const);
|
||||||
|
|
||||||
return runner.runCommandLine(argc, argv);
|
return runner.runCommandLine(argc, argv);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user