Merge branch 'poco-1.6.1' of https://github.com/pocoproject/poco into poco-1.6.1

This commit is contained in:
Guenter Obiltschnig 2015-04-23 11:55:28 +02:00
commit 60b1431539
10 changed files with 86 additions and 15 deletions

View File

@ -255,7 +255,7 @@ const Var Var::operator -- (int)
bool Var::operator == (const Var& other) const
{
if (isEmpty() && !other.isEmpty()) return false;
if (isEmpty() != other.isEmpty()) return false;
if (isEmpty() && other.isEmpty()) return true;
return convert<std::string>() == other.convert<std::string>();
}

View File

@ -2473,6 +2473,11 @@ void VarTest::testEmpty()
assert (da == da);
assert (!(da != da));
assert (da != Var(1));
assert (!(da == Var(1)));
assert (Var(1) != da);
assert (!(Var(1) == da));
assert (da != "");
assert ("" != da);
assert (!(da == ""));

View File

@ -109,12 +109,14 @@ private:
unsigned indent();
bool printFlat() const;
void arrayValue();
bool array() const;
std::ostream& _out;
unsigned _indent;
std::string _tab;
bool _array;
int _array;
bool _value;
bool _objStart;
};
@ -124,6 +126,13 @@ inline void PrintHandler::setIndent(unsigned indent)
}
inline bool PrintHandler::array() const
{
return _array > 0;
}
}} // namespace Poco::JSON

View File

@ -26,8 +26,9 @@ namespace JSON {
PrintHandler::PrintHandler(unsigned indent):
_out(std::cout),
_indent(indent),
_array(false),
_value(false)
_array(0),
_value(false),
_objStart(false)
{
}
@ -35,8 +36,9 @@ PrintHandler::PrintHandler(unsigned indent):
PrintHandler::PrintHandler(std::ostream& out, unsigned indent):
_out(out),
_indent(indent),
_array(false),
_value(false)
_array(0),
_value(false),
_objStart(false)
{
}
@ -50,7 +52,7 @@ void PrintHandler::reset()
{
_out.flush();
_tab = "";
_array = false;
_array = 0;
_value = false;
}
@ -78,9 +80,11 @@ unsigned PrintHandler::indent()
void PrintHandler::startObject()
{
arrayValue();
_out << '{';
_out << endLine();
_tab.append(indent(), ' ');
_objStart = true;
}
@ -90,6 +94,7 @@ void PrintHandler::endObject()
_tab.erase(_tab.length() - indent());
_out << endLine() << _tab << '}';
if (array()) _value = true;
}
@ -97,7 +102,7 @@ void PrintHandler::startArray()
{
_out << '[' << endLine();
_tab.append(indent(), ' ');
_array = true;
++_array;
_value = false;
}
@ -106,7 +111,8 @@ void PrintHandler::endArray()
{
_tab.erase(_tab.length() - indent());
_out << endLine() << _tab << ']';
_array = false;
--_array;
poco_assert (_array >= 0);
_value = false;
}
@ -115,9 +121,10 @@ void PrintHandler::key(const std::string& k)
{
if (_value)
{
comma();
if (!_objStart) comma();
_value = false;
}
_objStart = false;
_out << _tab;
Stringifier::formatString(k, _out);
if (!printFlat()) _out << ' ';
@ -201,7 +208,7 @@ void PrintHandler::comma()
void PrintHandler::arrayValue()
{
if (_array)
if (array())
{
if (_value) comma();
_out << _tab;

View File

@ -1181,6 +1181,45 @@ void JSONTest::testPrintHandler()
" ]\n"
"}"
);
json =
"{"
"\"array\":"
"["
"{"
"\"key1\":"
"["
"1,2,3,"
"{"
"\"subkey\":"
"\"test\""
"}"
"]"
"},"
"{"
"\"key2\":"
"{"
"\"anotherSubKey\":"
"["
"1,"
"{"
"\"subSubKey\":"
"["
"4,5,6"
"]"
"}"
"]"
"}"
"}"
"]"
"}";
ostr.str("");
pHandler->setIndent(0);
parser.reset();
parser.parse(json);
assert (json == ostr.str());
}

View File

@ -19,6 +19,6 @@ objects = Mail
target = Mail
target_version = 1
target_libs = PocoNetSSL PocoNet PocoCrypto PocoUtil PocoXML PocoFoundation
target_libs = PocoNetSSL PocoNet PocoCrypto PocoUtil PocoJSON PocoXML PocoFoundation
include $(POCO_BASE)/build/rules/exec

View File

@ -8,11 +8,18 @@
include $(POCO_BASE)/build/rules/global
# Note: linking order is important, do not change it.
ifeq ($(POCO_CONFIG),FreeBSD)
SYSLIBS += -lssl -lcrypto -lz
else
SYSLIBS += -lssl -lcrypto -lz -ldl
endif
objects = Twitter TweetApp
target = tweet
target_version = 1
target_libs = PocoUtil PocoJSON PocoNetSSL PocoCrypto PocoNet PocoXML PocoFoundation
target_libs = PocoNetSSL PocoCrypto PocoNet PocoUtil PocoJSON PocoXML PocoFoundation
include $(POCO_BASE)/build/rules/exec

View File

@ -19,6 +19,6 @@ objects = download
target = download
target_version = 1
target_libs = PocoNetSSL PocoCrypto PocoNet PocoUtil PocoXML PocoFoundation
target_libs = PocoNetSSL PocoCrypto PocoNet PocoUtil PocoJSON PocoXML PocoFoundation
include $(POCO_BASE)/build/rules/exec

View File

@ -21,6 +21,6 @@ objects = NetSSLTestSuite Driver \
target = testrunner
target_version = 1
target_libs = PocoNetSSL PocoNet PocoCrypto PocoUtil PocoXML PocoFoundation CppUnit
target_libs = PocoNetSSL PocoNet PocoCrypto PocoUtil PocoJSON PocoXML PocoFoundation CppUnit
include $(POCO_BASE)/build/rules/exec

View File

@ -331,6 +331,10 @@ AAAIntroduction
- Dynamic::Var: comparison of two empty objects now returns true
- WinCE does not build in this release; this will be fixed in a later release
- JSON::DefaultHandler was renamed to a more appropriate name - ParseHandler;
ParseHandler does not have to be passed to the Parser, it will be used by default;
handlers are now passed into Parser as smart pointers, so passing in addresses of
stack objects will cause undefined behavior
- Please note that 1.5.x releases are development releases and not considered stable.
Interfaces may change, and backwards compatibility with the stable 1.4 release
series is not guaranteed. There may also be some rough edges.