Validator: add simple Result caching

This commit is contained in:
Bruno Martins
2019-05-29 14:22:47 -04:00
committed by mdavidsaver
parent e0d422ffd9
commit 31050952b6
18 changed files with 218 additions and 88 deletions

View File

@@ -148,14 +148,20 @@ bool NTURI::is_a(PVStructurePtr const & pvStructure)
return is_a(pvStructure->getStructure());
}
static epicsThreadOnceId cachedResultOnceId = EPICS_THREAD_ONCE_INIT;
static epicsThreadPrivateId cachedResultId;
bool NTURI::isCompatible(StructureConstPtr const & structure)
{
if (!structure)
return false;
Result result(structure);
Result& result = Result::fromCache(&cachedResultOnceId, &cachedResultId);
result
if (result.wraps(structure))
return result.valid();
result.reset(structure)
.is<Structure>()
.has<Scalar>("scheme")
.has<Scalar>("path")