mirror of
https://github.com/pocoproject/poco.git
synced 2024-12-13 18:45:10 +01:00
Merge branch 'poco-1.6.1' of https://github.com/pocoproject/poco into poco-1.6.1
This commit is contained in:
commit
60b1431539
@ -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>();
|
||||
}
|
||||
|
@ -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 == ""));
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
Loading…
Reference in New Issue
Block a user