Skip to content

Commit

Permalink
Allow "meta" at member top of array of struct
Browse files Browse the repository at this point in the history
  • Loading branch information
mdavidsaver committed Nov 3, 2022
1 parent 3b9990e commit 2a53ea7
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
14 changes: 14 additions & 0 deletions iocBoot/iocimagedemo/image.db
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,17 @@ record(mbbi, "$(N):ColorMode") {
}
})
}

record(bo, "$(N):extra") {
field(ZNAM, "foo")
field(ONAM, "bar")
info(Q:group, {
"$(N):Array":{
"attribute[1].value":{+type:"any",
+channel:"VAL",
+putorder:0,
+trigger:"attribute[1].value"},
"attribute[1]":{+type:"meta", +channel:"SEVR"}
}
})
}
9 changes: 6 additions & 3 deletions pdbApp/pdb.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -438,6 +438,9 @@ PDBProvider::PDBProvider(const epics::pvAccess::Configuration::const_shared_poin
else
builder = builder->addNestedStructure(parts[j].name);
}
if(parts.back().isArray()) {
builder = builder->addNestedStructureArray(parts.back().name);
}
}

if(!mem.structID.empty())
Expand All @@ -457,14 +460,16 @@ PDBProvider::PDBProvider(const epics::pvAccess::Configuration::const_shared_poin

std::tr1::shared_ptr<PVIFBuilder> pvifbuilder(PVIFBuilder::create(mem.type, chan.chan));

if(!parts.empty())
if(!parts.empty() && !parts.back().isArray())
builder = pvifbuilder->dtype(builder, parts.back().name);
else
builder = pvifbuilder->dtype(builder, "");

if(!parts.empty()) {
for(size_t j=0; j<parts.size()-1; j++)
builder = builder->endNested();
if(parts.back().isArray())
builder = builder->endNested();
}

if(!mem.pvname.empty()) {
Expand Down Expand Up @@ -744,8 +749,6 @@ FieldName::FieldName(const std::string& pv)
}
if(parts.empty())
throw std::runtime_error("Empty field name");
if(parts.back().isArray())
throw std::runtime_error("leaf field may not have sub-script : "+pv);
}

epics::pvData::PVFieldPtr
Expand Down

0 comments on commit 2a53ea7

Please sign in to comment.