hdf5: groups: handle paths to access sub-content objects
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
parent
39c0a3146f
commit
84f18e1d5e
2 changed files with 16 additions and 1 deletions
|
@ -75,7 +75,16 @@ namespace CNORXZ
|
|||
|
||||
const ContentPtr& Group::get(const String& name) const
|
||||
{
|
||||
auto i = this->getIndexTo(name);
|
||||
const String delim = "/";
|
||||
const SizeT delimpos = name.find(delim);
|
||||
const String thisname = name.substr(0, delimpos);
|
||||
if(delimpos != String::npos and delimpos+1 < name.size()){
|
||||
const String next = name.substr(delimpos+1);
|
||||
auto g = getGroup(thisname);
|
||||
g->open();
|
||||
return g->get(next);
|
||||
}
|
||||
auto i = this->getIndexTo(thisname);
|
||||
return *i;
|
||||
}
|
||||
|
||||
|
|
|
@ -139,6 +139,12 @@ namespace
|
|||
VCHECK(tab->path());
|
||||
EXPECT_EQ(tab->fields()->size(), 3u);
|
||||
EXPECT_EQ(tab->records()->size(), 5u);
|
||||
|
||||
EXPECT_THROW(h5f.getTable("moregroups/evenmore/need/tab1/a"), std::runtime_error);
|
||||
auto tab2 = h5f.getTable("moregroups/evenmore/need/tab1/");
|
||||
EXPECT_EQ(tab2->fields()->size(), 3u);
|
||||
EXPECT_EQ(tab2->records()->size(), 5u);
|
||||
|
||||
h5f.iter( [](const auto& c) { VCHECK(c->path()); } )();
|
||||
h5f.iterRecursive( [](const auto& c) { VCHECK(c->path()); } )();
|
||||
h5f.iterRecursive( [](const auto& c) { c->open(); VCHECK(toString(c->getRecursiveAttributes())); } )();
|
||||
|
|
Loading…
Reference in a new issue