diff --git a/testApp/misc/testSerialization.cpp b/testApp/misc/testSerialization.cpp index d51451a..3549b5a 100644 --- a/testApp/misc/testSerialization.cpp +++ b/testApp/misc/testSerialization.cpp @@ -259,9 +259,9 @@ void testArrayType(const typename PVT::value_type* rdata, size_t len) typename PVT::shared_pointer pv = std::tr1::static_pointer_cast(getPVDataCreate()->createPVScalarArray(PVT::typeCode)); - pv->replace(empty); + pv->replace(freeze(empty)); serializationTest(pv); - pv->replace(data); + pv->replace(freeze(data)); serializationTest(pv); } @@ -394,7 +394,7 @@ void testStructureArray() { data[1] = getPVDataCreate()->createPVStructure(getStandardField()->alarm()); data[4] = getPVDataCreate()->createPVStructure(getStandardField()->alarm()); - pvArr->replace(data); + pvArr->replace(freeze(data)); testDiag("Some NULLs"); serializationTest(pvArr); diff --git a/testApp/pv/testOperators.cpp b/testApp/pv/testOperators.cpp index cff09b6..eaf30bc 100644 --- a/testApp/pv/testOperators.cpp +++ b/testApp/pv/testOperators.cpp @@ -69,7 +69,7 @@ int main(int, char**) PVDoubleArray::svector values(3); values[0] = 1.1; values[1] = 2.2; values[2] = 3.3; PVDoubleArrayPtr darray = std::tr1::dynamic_pointer_cast(pvStructure->getScalarArrayField("value", pvDouble)); - darray->replace(values); + darray->replace(freeze(values)); std::cout << *darray << std::endl; std::cout << format::array_at(1) << *darray << std::endl; @@ -83,7 +83,7 @@ int main(int, char**) pvDataCreate->createPVStructure(structure); } PVStructureArrayPtr pvStructureArray = pvStructure->getStructureArrayField("value"); - pvStructureArray->replace(pvStructures); + pvStructureArray->replace(freeze(pvStructures)); std::cout << *pvStructure << std::endl; return 0; diff --git a/testApp/pv/testPVScalarArray.cpp b/testApp/pv/testPVScalarArray.cpp index e5de290..363a7cf 100644 --- a/testApp/pv/testPVScalarArray.cpp +++ b/testApp/pv/testPVScalarArray.cpp @@ -53,7 +53,7 @@ static void testFactory() template bool hasUniqueVector(const typename PVT::shared_pointer& pv) { - typename PVT::svector data; + typename PVT::const_svector data; pv->swap(data); bool ret = data.unique(); pv->swap(data); @@ -98,22 +98,24 @@ static void testBasic() data.reserve(200); basicTestData::fill(data); - testOk1(data.unique()); - arr1->replace(data); - testOk1(!data.unique()); + typename PVT::const_svector cdata(freeze(data)); + + testOk1(cdata.unique()); + arr1->replace(cdata); + testOk1(!cdata.unique()); { typename PVT::const_svector avoid; arr1->PVScalarArray::getAs<(ScalarType)ScalarTypeID::value>(avoid); - testOk1(avoid.data()==data.data()); + testOk1(avoid.data()==cdata.data()); testOk1(avoid.data()==arr1->view().data()); } - testOk1(arr1->getLength()==data.size()); + testOk1(arr1->getLength()==cdata.size()); testOk1(*arr1!=*arr2); - data.clear(); + cdata.clear(); testOk1(hasUniqueVector(arr1)); @@ -122,11 +124,11 @@ static void testBasic() testOk1(*arr1==*arr2); testOk1(!hasUniqueVector(arr1)); - arr2->swap(data); + arr2->swap(cdata); arr2->postPut(); testOk1(arr2->getLength()==0); - testOk1(data.size()==arr1->getLength()); + testOk1(cdata.size()==arr1->getLength()); PVIntArray::const_svector idata; arr1->PVScalarArray::getAs(idata); @@ -137,7 +139,9 @@ static void testBasic() wdata.at(1) = 42; - arr1->PVScalarArray::putFrom(wdata); + idata = freeze(wdata); + + arr1->PVScalarArray::putFrom(idata); testOk1(castUnsafe(arr1->view()[1])==42); } @@ -149,7 +153,7 @@ static void testShare() PVIntArrayPtr iarr = static_pointer_cast(getPVDataCreate()->createPVScalarArray(pvInt)); PVStringArrayPtr sarr = static_pointer_cast(getPVDataCreate()->createPVScalarArray(pvString)); - PVIntArray::svector idata(4, 1); + PVIntArray::const_svector idata(4, 1); sarr->PVScalarArray::putFrom(idata); // copy and convert diff --git a/testApp/pv/testPVStructureArray.cpp b/testApp/pv/testPVStructureArray.cpp index c9b36e6..f5701fb 100644 --- a/testApp/pv/testPVStructureArray.cpp +++ b/testApp/pv/testPVStructureArray.cpp @@ -92,22 +92,24 @@ static void testCompress() contents[5] = pvDataCreate->createPVStructure(standardField->alarm()); contents[8] = pvDataCreate->createPVStructure(standardField->alarm()); - alarmarr->replace(contents); + PVStructureArray::const_svector scont(freeze(contents)); - testOk1(!contents.unique()); + alarmarr->replace(scont); + + testOk1(!scont.unique()); testOk1(alarmarr->getLength()==10); alarmarr->compress(); - testOk1(contents.unique()); // a realloc happened + testOk1(scont.unique()); // a realloc happened testOk1(alarmarr->getLength()==4); PVStructureArray::svector compressed(alarmarr->reuse()); - testOk1(contents[2]==compressed[0]); - testOk1(contents[4]==compressed[1]); - testOk1(contents[5]==compressed[2]); - testOk1(contents[8]==compressed[3]); + testOk1(scont[2]==compressed[0]); + testOk1(scont[4]==compressed[1]); + testOk1(scont[5]==compressed[2]); + testOk1(scont[8]==compressed[3]); } static void testRemove() @@ -123,21 +125,23 @@ static void testRemove() fieldCreate->createStructureArray(standardField->alarm())); PVStructureArrayPtr alarmarr(pvDataCreate->createPVStructureArray(alarmtype)); - alarmarr->replace(contents); + PVStructureArray::const_svector scont(freeze(contents)); + + alarmarr->replace(scont); alarmarr->remove(0, 10); // all testOk1(alarmarr->getLength()==0); - alarmarr->replace(contents); + alarmarr->replace(scont); alarmarr->remove(1, 1); PVStructureArray::const_svector check(alarmarr->view()); - testOk1(contents[0]==check[0]); - testOk1(contents[2]==check[1]); - testOk1(contents[3]==check[2]); + testOk1(scont[0]==check[0]); + testOk1(scont[2]==check[1]); + testOk1(scont[3]==check[2]); } MAIN(testPVStructureArray) diff --git a/testApp/pv/testStandardPVField.cpp b/testApp/pv/testStandardPVField.cpp index 238ba82..11a276b 100644 --- a/testApp/pv/testStandardPVField.cpp +++ b/testApp/pv/testStandardPVField.cpp @@ -76,7 +76,7 @@ int main(int, char **) pvDataCreate->createPVStructure(structure); } PVStructureArrayPtr pvStructureArray = pvStructure->getStructureArrayField("value"); - pvStructureArray->replace(pvStructures); + pvStructureArray->replace(freeze(pvStructures)); builder.clear(); pvStructure->toString(&builder); print("structureArrayTest");