use new PVStructureArray api

This commit is contained in:
Michael Davidsaver
2013-06-11 10:59:32 -04:00
parent 7f9745c8d1
commit 8cb0b1a7d6
3 changed files with 18 additions and 23 deletions

View File

@@ -188,26 +188,23 @@ bool compareField(const PVStructure* left, const PVStructure* right)
bool compareField(const PVStructureArray* left, const PVStructureArray* right)
{
if(left->getLength()!=right->getLength())
if(*left->getStructureArray()->getStructure()
!= *right->getStructureArray()->getStructure())
return false;
StructureConstPtr ls = left->getStructureArray()->getStructure();
PVStructureArray::const_svector ld=left->view(), rd=right->view();
if(*ls!=*right->getStructureArray()->getStructure())
if(ld.size()!=rd.size())
return false;
const PVStructureArray::pointer ld=left->get(), rd=right->get();
PVStructureArray::const_svector::const_iterator lit, lend, rit;
for(size_t i=0, ilen=left->getLength(); i<ilen; i++)
for(lit=ld.begin(), lend=ld.end(), rit=rd.begin();
lit!=lend;
++lit, ++rit)
{
const PVFieldPtrArray& lf = ld[i]->getPVFields();
const PVFieldPtrArray& rf = rd[i]->getPVFields();
for(size_t k=0, klen=ls->getNumberFields(); k<klen; k++)
{
if(*lf[i]!=*rf[i])
return false;
}
if(**lit != **rit)
return false;
}
return true;
}

View File

@@ -77,14 +77,13 @@ int main(int, char**)
StructureConstPtr structure = standardField->scalar(pvDouble, "alarm,timeStamp");
pvStructure = standardPVField->structureArray(structure,"alarm,timeStamp");
size_t num = 2;
PVStructurePtrArray pvStructures;
pvStructures.reserve(num);
PVStructureArray::svector pvStructures(num);
for(size_t i=0; i<num; i++) {
pvStructures.push_back(
pvDataCreate->createPVStructure(structure));
pvStructures[i]=
pvDataCreate->createPVStructure(structure);
}
PVStructureArrayPtr pvStructureArray = pvStructure->getStructureArrayField("value");
pvStructureArray->put(0, num, pvStructures, 0);
pvStructureArray->replace(pvStructures);
std::cout << *pvStructure << std::endl;
return 0;

View File

@@ -70,14 +70,13 @@ int main(int, char **)
StructureConstPtr structure = standardField->scalar(pvDouble, "alarm,timeStamp");
pvStructure = standardPVField->structureArray(structure,"alarm,timeStamp");
size_t num = 2;
PVStructurePtrArray pvStructures;
pvStructures.reserve(num);
PVStructureArray::svector pvStructures(num);
for(size_t i=0; i<num; i++) {
pvStructures.push_back(
pvDataCreate->createPVStructure(structure));
pvStructures[i]=
pvDataCreate->createPVStructure(structure);
}
PVStructureArrayPtr pvStructureArray = pvStructure->getStructureArrayField("value");
pvStructureArray->put(0, num, pvStructures, 0);
pvStructureArray->replace(pvStructures);
builder.clear();
pvStructure->toString(&builder);
print("structureArrayTest");