mirror of
https://github.com/opencv/opencv.git
synced 2025-06-06 00:43:52 +08:00
core(persistence): fix processing of multiple documents
This commit is contained in:
parent
c4c4ac28dc
commit
dcf72e49e2
@ -1900,18 +1900,19 @@ int FileStorage::getFormat() const
|
||||
|
||||
FileNode FileStorage::operator [](const char* key) const
|
||||
{
|
||||
if( p->roots.empty() )
|
||||
return FileNode();
|
||||
|
||||
return p->roots[0][key];
|
||||
return this->operator[](std::string(key));
|
||||
}
|
||||
|
||||
FileNode FileStorage::operator [](const std::string& key) const
|
||||
{
|
||||
if( p->roots.empty() )
|
||||
return FileNode();
|
||||
|
||||
return p->roots[0][key];
|
||||
FileNode res;
|
||||
for (size_t i = 0; i < p->roots.size(); i++)
|
||||
{
|
||||
res = p->roots[i][key];
|
||||
if (!res.empty())
|
||||
break;
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
String FileStorage::releaseAndGetString()
|
||||
|
@ -1654,9 +1654,19 @@ TEST(Core_InputOutput, FileStorage_YAML_parse_multiple_documents)
|
||||
fs.release();
|
||||
|
||||
fs.open(filename, FileStorage::READ);
|
||||
ASSERT_EQ(42, (int)fs["a"]);
|
||||
ASSERT_EQ(1988, (int)fs["b"]);
|
||||
|
||||
EXPECT_EQ(42, (int)fs["a"]);
|
||||
EXPECT_EQ(1988, (int)fs["b"]);
|
||||
|
||||
EXPECT_EQ(42, (int)fs.root(0)["a"]);
|
||||
EXPECT_TRUE(fs.root(0)["b"].empty());
|
||||
|
||||
EXPECT_TRUE(fs.root(1)["a"].empty());
|
||||
EXPECT_EQ(1988, (int)fs.root(1)["b"]);
|
||||
|
||||
fs.release();
|
||||
|
||||
ASSERT_EQ(0, std::remove(filename.c_str()));
|
||||
}
|
||||
|
||||
}} // namespace
|
||||
|
Loading…
Reference in New Issue
Block a user