diff --git a/pvDataApp/factory/FieldCreateFactory.cpp b/pvDataApp/factory/FieldCreateFactory.cpp index da86d70..54e4c99 100644 --- a/pvDataApp/factory/FieldCreateFactory.cpp +++ b/pvDataApp/factory/FieldCreateFactory.cpp @@ -184,6 +184,9 @@ Structure::Structure (StringArray const & fieldNames,FieldConstPtrArray const & size_t number = fields.size(); for(size_t i=0; i parentStructure = const_pointer_cast( parent->getStructure()); - FieldConstPtrArray const &fields = parentStructure->getFields(); - for(size_t i=0; igetPVFields(); + for(size_t i=0; irenameField(i,newName); fieldName = newName; return; diff --git a/testApp/pv/testPVAppend.cpp b/testApp/pv/testPVAppend.cpp index 0f2c4b4..f712afb 100644 --- a/testApp/pv/testPVAppend.cpp +++ b/testApp/pv/testPVAppend.cpp @@ -66,18 +66,18 @@ static void checkNameAndParent( static void testAppendSimple(FILE * fd) { - printf("\ntestAppendSimple\n"); + fprintf(fd,"\ntestAppendSimple\n"); PVFieldPtrArray fields; StringArray names; PVStructurePtr pvParent = pvDataCreate->createPVStructure(names,fields); PVStringPtr pvStringField = static_pointer_cast( pvDataCreate->createPVScalar(pvString)); - pvStringField->put(String("value,timeStamp")); + pvStringField->put("value,timeStamp"); PVFieldPtr pvField = pvStringField; pvParent->appendPVField("fieldlist",pvField); pvStringField = static_pointer_cast( pvDataCreate->createPVScalar(pvString)); - pvStringField->put(String("junk")); + pvStringField->put("junk"); pvField = pvStringField; pvParent->appendPVField("extra",pvField); builder.clear(); @@ -87,7 +87,7 @@ static void testAppendSimple(FILE * fd) static void testAppendMore(FILE * fd) { - printf("\ntestAppendMore\n"); + fprintf(fd,"\ntestAppendMore\n"); PVFieldPtrArray fields; StringArray names; PVStructurePtr pvStructure = pvDataCreate->createPVStructure(names,fields); @@ -135,7 +135,7 @@ static void append2(PVStructurePtr &pvStructure, } static void testAppends(FILE * fd) { - printf("\ntestAppends\n"); + fprintf(fd,"\ntestAppends\n"); PVFieldPtrArray emptyPVFields; StringArray emptyNames; PVFieldPtrArray pvFields; diff --git a/testApp/pv/testPVData.cpp b/testApp/pv/testPVData.cpp index d254572..7b96ca7 100644 --- a/testApp/pv/testPVData.cpp +++ b/testApp/pv/testPVData.cpp @@ -89,12 +89,13 @@ static void testPVScalarWithProperties( { PVStructurePtr pvStructure; bool hasValueAlarm = false; + bool hasBooleanAlarm = false; bool hasDisplayControl = false; switch(stype) { case pvBoolean: { pvStructure = standardPVField->scalar( stype,alarmTimeStampValueAlarm); - hasValueAlarm = true; + hasBooleanAlarm = true; PVBooleanPtr pvField = pvStructure->getBooleanField("value"); pvField->put(true); break; @@ -245,7 +246,13 @@ static void testPVScalarWithProperties( String("control.limitHigh")); assert(limit!=0); limit->put(9.0); + } + if(hasValueAlarm) { PVFieldPtr pvField = pvStructure->getSubField( + String("valueAlarm.active")); + PVBooleanPtr pvBoolean = static_pointer_cast(pvField); + pvBoolean->put(true); + pvField = pvStructure->getSubField( String("valueAlarm.lowAlarmLimit")); PVScalarPtr pvtemp = static_pointer_cast(pvField); assert(pvtemp.get()!=0); @@ -268,6 +275,24 @@ static void testPVScalarWithProperties( assert(active!=0); active->put(true); } + if(hasBooleanAlarm) { + PVFieldPtr pvField = pvStructure->getSubField( + String("valueAlarm.active")); + PVBooleanPtr pvBoolean = static_pointer_cast(pvField); + pvBoolean->put(true); + severity = pvStructure->getIntField( + String("valueAlarm.falseSeverity")); + assert(severity!=0); + severity->put(0); + severity = pvStructure->getIntField( + String("valueAlarm.trueSeverity")); + assert(severity!=0); + severity->put(2); + severity = pvStructure->getIntField( + String("valueAlarm.changeStateSeverity")); + assert(severity!=0); + severity->put(1); + } builder.clear(); pvStructure->toString(&builder); fprintf(fd,"%s\n",builder.c_str());