diff --git a/src/nt/ntfield.cpp b/src/nt/ntfield.cpp index 434fbd1..9455156 100644 --- a/src/nt/ntfield.cpp +++ b/src/nt/ntfield.cpp @@ -64,7 +64,7 @@ bool NTField::isTimeStamp(FieldConstPtr const & field) ScalarConstPtr s = static_pointer_cast(f); if(s->getScalarType()!=pvLong) return false; f = fields[1]; - if(names[1].compare("nanoSeconds")!=0) return false; + if(names[1].compare("nanoseconds")!=0) return false; if(f->getType()!=scalar) return false; s = static_pointer_cast(f); if(s->getScalarType()!=pvInt) return false; @@ -184,7 +184,7 @@ bool NTField::isAlarmLimit(FieldConstPtr const & field) s = static_pointer_cast(f); if(s->getScalarType()!=pvInt) return false; f = fields[9]; - if(names[9].compare("hystersis")!=0) return false; + if(names[9].compare("hysteresis")!=0) return false; if(f->getType()!=scalar) return false; return true; } diff --git a/src/nt/ntfield.h b/src/nt/ntfield.h index e7fc73f..3314051 100644 --- a/src/nt/ntfield.h +++ b/src/nt/ntfield.h @@ -15,6 +15,7 @@ #include #include #include +#include namespace epics { namespace pvData { /** @@ -23,8 +24,6 @@ namespace epics { namespace pvData { * */ -typedef std::tr1::shared_ptr StringArrayPtr; - class NTField; typedef std::tr1::shared_ptr NTFieldPtr; diff --git a/src/nt/nttable.cpp b/src/nt/nttable.cpp index 308990b..7e14e3c 100644 --- a/src/nt/nttable.cpp +++ b/src/nt/nttable.cpp @@ -44,7 +44,7 @@ bool NTTable::isNTTable(PVStructurePtr const & pvStructure) NTTablePtr NTTable::create( bool hasFunction,bool hasTimeStamp, bool hasAlarm, - StringArray const & valueNames, + shared_vector const & valueNames, FieldConstPtrArray const &valueFields) { StandardFieldPtr standardField = getStandardField(); @@ -55,10 +55,8 @@ NTTablePtr NTTable::create( nfields += valueFields.size(); FieldCreatePtr fieldCreate = getFieldCreate(); PVDataCreatePtr pvDataCreate = getPVDataCreate(); - FieldConstPtrArray fields; - StringArray names; - fields.resize(nfields); - names.resize(nfields); + FieldConstPtrArray fields(nfields); + StringArray names(nfields); size_t ind = 0; if(hasFunction) { names[ind] = "function"; @@ -83,7 +81,10 @@ NTTablePtr NTTable::create( PVStructurePtr pvStructure = pvDataCreate->createPVStructure(st); PVStringArrayPtr pvLabel = static_pointer_cast (pvStructure->getScalarArrayField("label",pvString)); - pvLabel->put(0,numberValues,valueNames,0); + shared_vector xxx(numberValues); + for(size_t i=0; i data(freeze(xxx)); + pvLabel->replace(data); return NTTablePtr(new NTTable(pvStructure)); } diff --git a/src/nt/nttable.h b/src/nt/nttable.h index 683463d..44e3e1e 100644 --- a/src/nt/nttable.h +++ b/src/nt/nttable.h @@ -41,7 +41,7 @@ public: */ static NTTablePtr create( bool hasFunction,bool hasTimeStamp, bool hasAlarm, - StringArray const & valueNames, + shared_vector const & valueNames, FieldConstPtrArray const &valueFields); static NTTablePtr clone(PVStructurePtr const &); /** diff --git a/test/nt/ntfieldTest.cpp b/test/nt/ntfieldTest.cpp index 1c9e150..71aee93 100644 --- a/test/nt/ntfieldTest.cpp +++ b/test/nt/ntfieldTest.cpp @@ -14,16 +14,18 @@ #include #include #include -#include -#include #include #include +#include #include #include using namespace epics::pvData; +using std::string; +using std::cout; +using std::endl; static FieldCreatePtr fieldCreate = getFieldCreate(); static PVDataCreatePtr pvDataCreate = getPVDataCreate(); @@ -31,61 +33,42 @@ static StandardFieldPtr standardField = getStandardField(); static StandardPVFieldPtr standardPVField = getStandardPVField(); static NTFieldPtr ntField = NTField::get(); static PVNTFieldPtr pvntField = PVNTField::get(); -static String builder; static void testNTField(FILE * fd) { StructureConstPtr structureConstPtr = ntField->createEnumerated(); - builder.clear(); - structureConstPtr->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *structureConstPtr << endl; assert(ntField->isEnumerated(structureConstPtr)); structureConstPtr = ntField->createTimeStamp(); - builder.clear(); - structureConstPtr->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *structureConstPtr << endl; assert(ntField->isTimeStamp(structureConstPtr)); structureConstPtr = ntField->createAlarm(); - builder.clear(); - structureConstPtr->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *structureConstPtr << endl; assert(ntField->isAlarm(structureConstPtr)); structureConstPtr = ntField->createDisplay(); - builder.clear(); - structureConstPtr->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *structureConstPtr << endl; assert(ntField->isDisplay(structureConstPtr)); structureConstPtr = ntField->createAlarmLimit(); - builder.clear(); - structureConstPtr->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *structureConstPtr << endl; assert(ntField->isAlarmLimit(structureConstPtr)); structureConstPtr = ntField->createControl(); - builder.clear(); - structureConstPtr->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *structureConstPtr << endl; assert(ntField->isControl(structureConstPtr)); StructureArrayConstPtr structureArrayConstPtr = ntField->createEnumeratedArray(); - builder.clear(); - structureArrayConstPtr->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *structureConstPtr << endl; structureArrayConstPtr = ntField->createTimeStampArray(); - builder.clear(); - structureArrayConstPtr->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *structureConstPtr << endl; structureArrayConstPtr = ntField->createAlarmArray(); - builder.clear(); - structureArrayConstPtr->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *structureConstPtr << endl; } static void testPVNTField(FILE * fd) @@ -97,61 +80,39 @@ static void testPVNTField(FILE * fd) choices[2] = "three"; PVStructurePtr pvStructure = PVStructurePtr( pvntField->createEnumerated(choices)); - builder.clear(); - pvStructure->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; assert(ntField->isEnumerated(pvStructure->getStructure())); pvStructure = PVStructurePtr(pvntField->createTimeStamp()); - builder.clear(); - pvStructure->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; assert(ntField->isTimeStamp(pvStructure->getStructure())); pvStructure = PVStructurePtr(pvntField->createAlarm()); - builder.clear(); - pvStructure->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; assert(ntField->isAlarm(pvStructure->getStructure())); pvStructure = PVStructurePtr(pvntField->createDisplay()); - builder.clear(); - pvStructure->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; assert(ntField->isDisplay(pvStructure->getStructure())); pvStructure = PVStructurePtr(pvntField->createAlarmLimit()); - builder.clear(); - pvStructure->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; assert(ntField->isAlarmLimit(pvStructure->getStructure())); PVStructureArrayPtr pvStructureArray = PVStructureArrayPtr( pvntField->createEnumeratedArray()); - builder.clear(); - pvStructureArray->toString(&builder); - fprintf(fd,"\n%s\n",builder.c_str()); - builder.clear(); - pvStructureArray->getStructureArray()->getStructure()->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; + cout << *pvStructureArray->getStructureArray()->getStructure(); pvStructureArray = PVStructureArrayPtr( pvntField->createTimeStampArray()); - builder.clear(); - pvStructureArray->toString(&builder); - fprintf(fd,"\n%s\n",builder.c_str()); - builder.clear(); - pvStructureArray->getStructureArray()->getStructure()->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; + cout << *pvStructureArray->getStructureArray()->getStructure(); pvStructureArray = PVStructureArrayPtr( pvntField->createAlarmArray()); - builder.clear(); - pvStructureArray->toString(&builder); - fprintf(fd,"\n%s\n",builder.c_str()); - builder.clear(); - pvStructureArray->getStructureArray()->getStructure()->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; + cout << *pvStructureArray->getStructureArray()->getStructure(); } int main(int argc,char *argv[]) diff --git a/test/nt/ntnameValueTest.cpp b/test/nt/ntnameValueTest.cpp index 05904f0..accad8a 100644 --- a/test/nt/ntnameValueTest.cpp +++ b/test/nt/ntnameValueTest.cpp @@ -14,45 +14,41 @@ #include #include #include -#include -#include #include #include +#include #include #include +#include using namespace epics::pvData; +using std::string; +using std::cout; +using std::endl; static PVDataCreatePtr pvDataCreate = getPVDataCreate(); static NTFieldPtr ntField = NTField::get(); static PVNTFieldPtr pvntField = PVNTField::get(); -static String builder; static void test(FILE * fd) { NTNameValuePtr ntNameValue = NTNameValue::create(true,true,true); PVStructurePtr pvStructure = ntNameValue->getPVStructure(); - builder.clear(); - pvStructure->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); - builder.clear(); - pvStructure->getStructure()->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; + cout << *pvStructure->getStructure() << endl; PVStringArrayPtr names = ntNameValue->getNames(); PVStringArrayPtr values = ntNameValue->getValues(); size_t n = 2; - StringArray name; - StringArray value; - name.resize(n); - value.resize(n); + shared_vector name(n); + shared_vector value(n); name[0] = "name 0"; name[1] = "name 1"; value[0] = "value 0"; value[1] = "value 1"; - names->put(0,n,name,0); - values->put(0,n,value,0); + names->replace(freeze(name)); + values->replace(freeze(value)); PVStringPtr function = ntNameValue->getFunction(); function->put("test"); PVAlarm pvAlarm; @@ -66,9 +62,7 @@ static void test(FILE * fd) ntNameValue->attachTimeStamp(pvTimeStamp); TimeStamp timeStamp(1000,1000,10); pvTimeStamp.set(timeStamp); - builder.clear(); - pvStructure->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; assert(NTNameValue::isNTNameValue(pvStructure)); } diff --git a/test/nt/nttableTest.cpp b/test/nt/nttableTest.cpp index 8df9cd4..78326dc 100644 --- a/test/nt/nttableTest.cpp +++ b/test/nt/nttableTest.cpp @@ -14,29 +14,29 @@ #include #include #include -#include -#include #include #include - +#include #include #include using namespace epics::pvData; using std::tr1::static_pointer_cast; +using std::string; +using std::cout; +using std::endl; static FieldCreatePtr fieldCreate = getFieldCreate(); static PVDataCreatePtr pvDataCreate = getPVDataCreate(); static NTFieldPtr ntField = NTField::get(); static PVNTFieldPtr pvntField = PVNTField::get(); -static String builder; static void test(FILE * fd) { size_t n = 2; FieldConstPtrArray fields(n); - StringArray names(n); + shared_vector names(n); names[0] = "position"; names[1] = "alarms"; fields[0] = fieldCreate->createScalarArray(pvDouble); @@ -44,23 +44,19 @@ static void test(FILE * fd) NTTablePtr ntTable = NTTable::create( true,true,true,names,fields); PVStructurePtr pvStructure = ntTable->getPVStructure(); - builder.clear(); - pvStructure->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); - builder.clear(); - pvStructure->getStructure()->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; + cout << *pvStructure->getStructure() << endl; PVDoubleArrayPtr pvPositions = static_pointer_cast(ntTable->getPVField(0)); - DoubleArray positions(2); + shared_vector positions(2); positions[0] = 1.0; positions[1] = 2.0; - pvPositions->put(0,2,positions,0); + pvPositions->replace(freeze(positions)); PVStructureArrayPtr pvAlarms = static_pointer_cast(ntTable->getPVField(1)); PVAlarm pvAlarm; Alarm alarm; - PVStructurePtrArray palarms(n); + shared_vector palarms(n); for(size_t i=0; icreateAlarm(); pvAlarm.attach(palarms[i]); @@ -69,12 +65,12 @@ static void test(FILE * fd) alarm.setStatus(clientStatus); pvAlarm.set(alarm); } - pvAlarms->put(0,n,palarms,0); - StringArray labels(n); + pvAlarms->replace(freeze(palarms)); + shared_vector labels(n); labels[0] = pvPositions->getFieldName(); labels[1] = pvAlarms->getFieldName(); PVStringArrayPtr label = ntTable->getLabel(); - label->put(0,n,labels,0); + label->replace(freeze(labels)); PVStringPtr function = ntTable->getFunction(); function->put("test"); ntTable->attachAlarm(pvAlarm); @@ -86,9 +82,7 @@ static void test(FILE * fd) ntTable->attachTimeStamp(pvTimeStamp); TimeStamp timeStamp(1000,1000,10); pvTimeStamp.set(timeStamp); - builder.clear(); - pvStructure->toString(&builder); - fprintf(fd,"%s\n",builder.c_str()); + cout << *pvStructure << endl; assert(NTTable::isNTTable(pvStructure)); }