Add implentations of isValid()

for NTAggregate, NTAttibute, NTContinuum, NTEnum, NTHistogram, NTMatrix,
NTNameValue, NTNDArrayAttribute, NTScalar, NTScalarArray and NTUnion.
This commit is contained in:
Dave Hickin
2015-08-30 23:46:02 +01:00
parent ddab44823f
commit 6ec5fb6ef9
11 changed files with 73 additions and 0 deletions

View File

@@ -278,6 +278,11 @@ bool NTAggregate::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTAggregate::isValid()
{
return true;
}
NTAggregateBuilderPtr NTAggregate::createBuilder()
{
return NTAggregateBuilderPtr(new detail::NTAggregateBuilder());

View File

@@ -175,6 +175,11 @@ bool NTAttribute::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTAttribute::isValid()
{
return true;
}
NTAttributeBuilderPtr NTAttribute::createBuilder()
{
return NTAttributeBuilderPtr(new detail::NTAttributeBuilder());

View File

@@ -161,6 +161,11 @@ bool NTContinuum::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTContinuum::isValid()
{
return ((getUnits()->getLength()-1)*getBase()->getLength() ==
getValue()->getLength());
}
NTContinuumBuilderPtr NTContinuum::createBuilder()
{

View File

@@ -154,6 +154,11 @@ bool NTEnum::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTEnum::isValid()
{
return true;
}
NTEnumBuilderPtr NTEnum::createBuilder()
{
return NTEnumBuilderPtr(new detail::NTEnumBuilder());

View File

@@ -171,6 +171,10 @@ bool NTHistogram::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTHistogram::isValid()
{
return (getValue()->getLength()+1 == getRanges()->getLength());
}
NTHistogramBuilderPtr NTHistogram::createBuilder()
{

View File

@@ -181,6 +181,31 @@ bool NTMatrix::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTMatrix::isValid()
{
int valueLength = getValue()->getLength();
if (valueLength == 0)
return false;
PVIntArrayPtr pvDim = getDim();
if (pvDim.get())
{
int length = pvDim->getLength();
if (length != 1 && length !=2)
return false;
PVIntArray::const_svector data = pvDim->view();
int expectedLength = 1;
for (PVIntArray::const_svector::const_iterator it = data.begin();
it != data.end(); ++it)
{
expectedLength *= *it;
}
if (expectedLength != valueLength)
return false;
}
return true;
}
NTMatrixBuilderPtr NTMatrix::createBuilder()
{

View File

@@ -168,6 +168,11 @@ bool NTNameValue::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTNameValue::isValid()
{
return (getValue<PVScalarArray>()->getLength() == getName()->getLength());
}
NTNameValueBuilderPtr NTNameValue::createBuilder()
{
return NTNameValueBuilderPtr(new detail::NTNameValueBuilder());

View File

@@ -158,6 +158,11 @@ bool NTNDArrayAttribute::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTNDArrayAttribute::isValid()
{
return true;
}
NTNDArrayAttributeBuilderPtr NTNDArrayAttribute::createBuilder()
{
return NTNDArrayAttributeBuilderPtr(new detail::NTNDArrayAttributeBuilder());

View File

@@ -193,6 +193,11 @@ bool NTScalar::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTScalar::isValid()
{
return true;
}
NTScalarBuilderPtr NTScalar::createBuilder()
{
return NTScalarBuilderPtr(new detail::NTScalarBuilder());

View File

@@ -189,6 +189,10 @@ bool NTScalarArray::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTScalarArray::isValid()
{
return true;
}
NTScalarArrayBuilderPtr NTScalarArray::createBuilder()
{

View File

@@ -154,6 +154,11 @@ bool NTUnion::isCompatible(PVStructurePtr const & pvStructure)
return isCompatible(pvStructure->getStructure());
}
bool NTUnion::isValid()
{
return true;
}
NTUnionBuilderPtr NTUnion::createBuilder()
{
return NTUnionBuilderPtr(new detail::NTUnionBuilder());