From 1e980651a9a019c85d3953bca4719c5b4411b336 Mon Sep 17 00:00:00 2001 From: Dave Hickin Date: Mon, 4 Jul 2016 17:03:07 +0100 Subject: [PATCH] Use template getSubField when type known Replace non-template getSubField with template version when PVField is of a known, derived type. --- src/copy/pvCopy.cpp | 6 +- testApp/copy/testCreateRequest.cpp | 128 ++++++++++++++--------------- testApp/copy/testPVCopy.cpp | 7 +- testApp/property/testProperty.cpp | 10 +-- testApp/pv/testBitSetUtil.cpp | 20 ++--- testApp/pv/testPVData.cpp | 20 ++--- 6 files changed, 89 insertions(+), 102 deletions(-) diff --git a/src/copy/pvCopy.cpp b/src/copy/pvCopy.cpp index 8f6b4fb..882a460 100644 --- a/src/copy/pvCopy.cpp +++ b/src/copy/pvCopy.cpp @@ -83,7 +83,7 @@ PVCopyPtr PVCopy::create( pvStructure = pvRequest->getSubField(structureName); if(!pvStructure) return NULLPVCopy; } - } else if(pvStructure->getSubField("field")) { + } else if(pvStructure->getSubField("field")) { pvStructure = pvRequest->getSubField("field"); } PVCopyPtr pvCopy = PVCopyPtr(new PVCopy(pvMaster)); @@ -444,9 +444,7 @@ CopyNodePtr PVCopy::createStructureNodes( string fieldName = copyPVField->getFieldName(); PVStructurePtr requestPVStructure = pvFromRequest->getSubField(fieldName); - PVStructurePtr pvSubFieldOptions; - PVFieldPtr pvField = requestPVStructure->getSubField("_options"); - if(pvField) pvSubFieldOptions = static_pointer_cast(pvField); + PVStructurePtr pvSubFieldOptions = requestPVStructure->getSubField("_options"); PVFieldPtr pvMasterField; PVFieldPtrArray const & pvMasterFields = pvMasterStructure->getPVFields(); for(size_t j=0; igetMessage() << endl;} if(debug) { cout << pvRequest << endl;} testOk1(pvRequest.get()!=NULL); - testOk1(pvRequest->getSubField("field").get()!=NULL); - testOk1(pvRequest->getSubField("putField").get()!=NULL); - testOk1(pvRequest->getSubField("getField").get()!=NULL); + testOk1(pvRequest->getSubField("field").get()!=NULL); + testOk1(pvRequest->getSubField("putField").get()!=NULL); + testOk1(pvRequest->getSubField("getField").get()!=NULL); testPass("request %s",request.c_str()); request = "record[a=b,x=y]field(a) putField(a),getField(a)"; @@ -59,9 +59,9 @@ static void testCreateRequestInternal() { pvString = pvRequest->getSubField("record._options.x"); sval = pvString->get(); testOk(sval.compare("y")==0,"record.x = y"); - testOk1(pvRequest->getSubField("field.a").get()!=NULL); - testOk1(pvRequest->getSubField("putField.a").get()!=NULL); - testOk1(pvRequest->getSubField("getField.a").get()!=NULL); + testOk1(pvRequest->getSubField("field.a").get()!=NULL); + testOk1(pvRequest->getSubField("putField.a").get()!=NULL); + testOk1(pvRequest->getSubField("getField.a").get()!=NULL); testPass("request %s",request.c_str()); request = "field(a.b[x=y])"; @@ -93,7 +93,7 @@ static void testCreateRequestInternal() { pvString = pvRequest->getSubField("field.a.b._options.x"); sval = pvString->get(); testOk(sval.compare("y")==0,"field.a.b._options.x = y"); - testOk1(pvRequest->getSubField("field.a.b.c.d").get()!=NULL); + testOk1(pvRequest->getSubField("field.a.b.c.d").get()!=NULL); testPass("request %s",request.c_str()); request = "field(a.b[x=y]{c.d[x=y]})"; @@ -125,8 +125,8 @@ static void testCreateRequestInternal() { pvString = pvRequest->getSubField("field.b.a._options.a"); sval = pvString->get(); testOk(sval.compare("b")==0,"field.b.a._options.a = b"); - testOk1(pvRequest->getSubField("field.b.a.a").get()!=NULL); - testOk1(pvRequest->getSubField("field.b.a.b").get()!=NULL); + testOk1(pvRequest->getSubField("field.b.a.a").get()!=NULL); + testOk1(pvRequest->getSubField("field.b.a.b").get()!=NULL); testPass("request %s",request.c_str()); @@ -136,9 +136,9 @@ static void testCreateRequestInternal() { if(!pvRequest) { cout<< createRequest->getMessage() << endl;} if(debug) { cout << pvRequest << endl;} testOk1(pvRequest.get()!=NULL); - testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("field.timeStamp").get()!=NULL); - testOk1(pvRequest->getSubField("field.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("field.timeStamp").get()!=NULL); + testOk1(pvRequest->getSubField("field.power.value").get()!=NULL); testPass("request %s",request.c_str()); request = "record[process=true]field(alarm,timeStamp,power.value)"; @@ -150,9 +150,9 @@ static void testCreateRequestInternal() { pvString = pvRequest->getSubField("record._options.process"); sval = pvString->get(); testOk(sval.compare("true")==0,"record._options.process = true"); - testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("field.timeStamp").get()!=NULL); - testOk1(pvRequest->getSubField("field.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("field.timeStamp").get()!=NULL); + testOk1(pvRequest->getSubField("field.power.value").get()!=NULL); testPass("request %s",request.c_str()); request = "record[process=true]field(alarm,timeStamp[algorithm=onChange,causeMonitor=false],power{value,alarm})"; @@ -164,16 +164,16 @@ static void testCreateRequestInternal() { pvString = pvRequest->getSubField("record._options.process"); sval = pvString->get(); testOk(sval.compare("true")==0,"record._options.process = true"); - testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("field.timeStamp").get()!=NULL); + testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("field.timeStamp").get()!=NULL); pvString = pvRequest->getSubField("field.timeStamp._options.algorithm"); sval = pvString->get(); testOk(sval.compare("onChange")==0,"field.timeStamp._options.algorithm = onChange"); pvString = pvRequest->getSubField("field.timeStamp._options.causeMonitor"); sval = pvString->get(); testOk(sval.compare("false")==0,"field.timeStamp._options.causeMonitor = false"); - testOk1(pvRequest->getSubField("field.power.value").get()!=NULL); - testOk1(pvRequest->getSubField("field.power.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("field.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.power.alarm").get()!=NULL); testPass("request %s",request.c_str()); request = "record[int=2,float=3.14159]field(alarm,timeStamp[shareData=true],power.value)"; @@ -188,11 +188,11 @@ static void testCreateRequestInternal() { pvString = pvRequest->getSubField("record._options.float"); sval = pvString->get(); testOk(sval.compare("3.14159")==0,"record._options.float = 3.14159"); - testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); pvString = pvRequest->getSubField("field.timeStamp._options.shareData"); sval = pvString->get(); testOk(sval.compare("true")==0,"field.timeStamp._options.shareData = true"); - testOk1(pvRequest->getSubField("field.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.power.value").get()!=NULL); testPass("request %s",request.c_str()); request = string("record[process=true,xxx=yyy]") @@ -204,15 +204,15 @@ static void testCreateRequestInternal() { if(!pvRequest) { cout<< createRequest->getMessage() << endl;} if(debug) { cout << pvRequest << endl;} testOk1(pvRequest.get()!=NULL); - testOk1(pvRequest->getSubField("putField.power.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.timeStamp").get()!=NULL); - testOk1(pvRequest->getSubField("getField.power.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.power.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.current.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.current.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.voltage.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.voltage.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("putField.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.timeStamp").get()!=NULL); + testOk1(pvRequest->getSubField("getField.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.power.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.current.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.current.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.voltage.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.voltage.alarm").get()!=NULL); testPass("request %s",request.c_str()); request = string("field(alarm,timeStamp,supply{") @@ -224,14 +224,14 @@ static void testCreateRequestInternal() { if(!pvRequest) { cout<< createRequest->getMessage() << endl;} if(debug) { cout << pvRequest << endl;} testOk1(pvRequest.get()!=NULL); - testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("field.timeStamp").get()!=NULL); - testOk1(pvRequest->getSubField("field.supply.zero.voltage.value").get()!=NULL); - testOk1(pvRequest->getSubField("field.supply.zero.current.value").get()!=NULL); - testOk1(pvRequest->getSubField("field.supply.zero.power.value").get()!=NULL); - testOk1(pvRequest->getSubField("field.supply.one.voltage.value").get()!=NULL); - testOk1(pvRequest->getSubField("field.supply.one.current.value").get()!=NULL); - testOk1(pvRequest->getSubField("field.supply.one.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("field.timeStamp").get()!=NULL); + testOk1(pvRequest->getSubField("field.supply.zero.voltage.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.supply.zero.current.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.supply.zero.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.supply.one.voltage.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.supply.one.current.value").get()!=NULL); + testOk1(pvRequest->getSubField("field.supply.one.power.value").get()!=NULL); testPass("request %s",request.c_str()); request = string("record[process=true,xxx=yyy]") @@ -246,31 +246,31 @@ static void testCreateRequestInternal() { if(!pvRequest) { cout<< createRequest->getMessage() << endl;} if(debug) { cout << pvRequest << endl;} testOk1(pvRequest.get()!=NULL); - testOk1(pvRequest->getSubField("putField.power.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.timeStamp").get()!=NULL); - testOk1(pvRequest->getSubField("getField.power.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.power.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.current.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.current.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.voltage.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.voltage.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps0.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps0.timeStamp").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps0.power.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps0.power.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps0.current.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps0.current.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps0.voltage.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps0.voltage.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps1.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps1.timeStamp").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps1.power.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps1.power.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps1.current.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps1.current.alarm").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps1.voltage.value").get()!=NULL); - testOk1(pvRequest->getSubField("getField.ps1.voltage.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("putField.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.timeStamp").get()!=NULL); + testOk1(pvRequest->getSubField("getField.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.power.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.current.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.current.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.voltage.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.voltage.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps0.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps0.timeStamp").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps0.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps0.power.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps0.current.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps0.current.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps0.voltage.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps0.voltage.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps1.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps1.timeStamp").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps1.power.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps1.power.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps1.current.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps1.current.alarm").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps1.voltage.value").get()!=NULL); + testOk1(pvRequest->getSubField("getField.ps1.voltage.alarm").get()!=NULL); testPass("request %s",request.c_str()); request = "a{b{c{d}}}"; @@ -279,7 +279,7 @@ static void testCreateRequestInternal() { if(!pvRequest) { cout<< createRequest->getMessage() << endl;} if(debug) { cout << pvRequest << endl;} testOk1(pvRequest.get()!=NULL); - testOk1(pvRequest->getSubField("field.a.b.c.d").get()!=NULL); + testOk1(pvRequest->getSubField("field.a.b.c.d").get()!=NULL); testPass("request %s",request.c_str()); request = string("record[process=true,xxx=yyy]") diff --git a/testApp/copy/testPVCopy.cpp b/testApp/copy/testPVCopy.cpp index cd69f21..9907c06 100644 --- a/testApp/copy/testPVCopy.cpp +++ b/testApp/copy/testPVCopy.cpp @@ -41,21 +41,18 @@ static void testPVScalar( PVCopyPtr const & pvCopy) { PVStructurePtr pvStructureCopy; - PVFieldPtr pvField; PVScalarPtr pvValueMaster; PVScalarPtr pvValueCopy; BitSetPtr bitSet; size_t offset; ConvertPtr convert = getConvert(); - pvField = pvMaster->getSubField(valueNameMaster); - pvValueMaster = static_pointer_cast(pvField); + pvValueMaster = pvMaster->getSubField(valueNameMaster); convert->fromDouble(pvValueMaster,.04); StructureConstPtr structure = pvCopy->getStructure(); if(debug) { cout << "structure from copy" << endl << *structure << endl; } pvStructureCopy = pvCopy->createPVStructure(); - pvField = pvStructureCopy->getSubField(valueNameCopy); - pvValueCopy = static_pointer_cast(pvField); + pvValueCopy = pvStructureCopy->getSubField(valueNameCopy); bitSet = BitSetPtr(new BitSet(pvStructureCopy->getNumberFields())); pvCopy->initCopy(pvStructureCopy, bitSet); if(debug) { cout << "after initCopy pvValueCopy " << convert->toDouble(pvValueCopy); } diff --git a/testApp/property/testProperty.cpp b/testApp/property/testProperty.cpp index 3ff363f..c0fa3a8 100644 --- a/testApp/property/testProperty.cpp +++ b/testApp/property/testProperty.cpp @@ -71,7 +71,7 @@ static void testAlarm() Alarm alarm; PVAlarm pvAlarm; bool result; - PVFieldPtr pvField = doubleRecord->getSubField(string("alarm")); + PVFieldPtr pvField = doubleRecord->getSubField(string("alarm")); if(pvField.get()==NULL) { printf("testAlarm ERROR did not find field alarm\n"); return; @@ -104,7 +104,7 @@ static void testTimeStamp() TimeStamp timeStamp; PVTimeStamp pvTimeStamp; bool result; - PVFieldPtr pvField = doubleRecord->getSubField(string("timeStamp")); + PVFieldPtr pvField = doubleRecord->getSubField(string("timeStamp")); if(pvField.get()==NULL) { printf("testTimeStamp ERROR did not find field timeStamp\n"); return; @@ -144,7 +144,7 @@ static void testControl() Control control; PVControl pvControl; bool result; - PVFieldPtr pvField = doubleRecord->getSubField(string("control")); + PVFieldPtr pvField = doubleRecord->getSubField(string("control")); if(pvField.get()==NULL) { printf("testControl ERROR did not find field control\n"); return; @@ -171,7 +171,7 @@ static void testDisplay() Display display; PVDisplay pvDisplay; bool result; - PVFieldPtr pvField = doubleRecord->getSubField(string("display")); + PVFieldPtr pvField = doubleRecord->getSubField(string("display")); if(pvField.get()==NULL) { printf("testDisplay ERROR did not find field display\n"); return; @@ -203,7 +203,7 @@ static void testEnumerated() if(debug) printf("testEnumerated\n"); PVEnumerated pvEnumerated; bool result; - PVFieldPtr pvField = enumeratedRecord->getSubField(string("value")); + PVFieldPtr pvField = enumeratedRecord->getSubField(string("value")); if(pvField.get()==NULL) { printf("testEnumerated ERROR did not find field enumerated\n"); return; diff --git a/testApp/pv/testBitSetUtil.cpp b/testApp/pv/testBitSetUtil.cpp index c54975c..7381f8b 100644 --- a/testApp/pv/testBitSetUtil.cpp +++ b/testApp/pv/testBitSetUtil.cpp @@ -84,13 +84,13 @@ static void test() std::cout << oss.str(); } bitSet->clear(); - PVFieldPtr pvField = pvs->getSubField("timeStamp"); + PVFieldPtr pvField = pvs->getSubField("timeStamp"); int32 offsetTimeStamp = (int32)pvField->getFieldOffset(); - pvField = pvs->getSubField("timeStamp.secondsPastEpoch"); + pvField = pvs->getSubField("timeStamp.secondsPastEpoch"); int32 offsetSeconds = (int32)pvField->getFieldOffset(); - pvField = pvs->getSubField("timeStamp.nanoseconds"); + pvField = pvs->getSubField("timeStamp.nanoseconds"); int32 offsetNano = (int32)pvField->getFieldOffset(); - pvField = pvs->getSubField("timeStamp.userTag"); + pvField = pvs->getSubField("timeStamp.userTag"); int32 offsetUserTag = (int32)pvField->getFieldOffset(); bitSet->set(offsetSeconds); BitSetUtil::compress(bitSet,pvs); @@ -114,17 +114,17 @@ static void test() } bitSet->clear(); - pvField = pvs->getSubField("current"); + pvField = pvs->getSubField("current"); int32 offsetCurrent = (int32)pvField->getFieldOffset(); - pvField = pvs->getSubField("current.value"); + pvField = pvs->getSubField("current.value"); int32 offsetValue = (int32)pvField->getFieldOffset(); - pvField = pvs->getSubField("current.alarm"); + pvField = pvs->getSubField("current.alarm"); int32 offsetAlarm = (int32)pvField->getFieldOffset(); - pvField = pvs->getSubField("current.alarm.severity"); + pvField = pvs->getSubField("current.alarm.severity"); int32 offsetSeverity = (int32)pvField->getFieldOffset(); - pvField = pvs->getSubField("current.alarm.status"); + pvField = pvs->getSubField("current.alarm.status"); int32 offsetStatus = (int32)pvField->getFieldOffset(); - pvField = pvs->getSubField("current.alarm.message"); + pvField = pvs->getSubField("current.alarm.message"); int32 offsetMessage = (int32)pvField->getFieldOffset(); bitSet->set(offsetValue); bitSet->set(offsetSeverity); diff --git a/testApp/pv/testPVData.cpp b/testApp/pv/testPVData.cpp index 6d061e8..5694bd6 100644 --- a/testApp/pv/testPVData.cpp +++ b/testApp/pv/testPVData.cpp @@ -260,18 +260,12 @@ static void testPVScalarWithProperties( limit->put(9.0); } if(hasValueAlarm) { - PVFieldPtr pvField = pvStructure->getSubField( - string("valueAlarm.active")); - PVBooleanPtr pvBoolean = static_pointer_cast(pvField); + PVBooleanPtr pvBoolean = pvStructure->getSubField("valueAlarm.active"); pvBoolean->put(true); - pvField = pvStructure->getSubField( - string("valueAlarm.lowAlarmLimit")); - PVScalarPtr pvtemp = static_pointer_cast(pvField); + PVScalarPtr pvtemp = pvStructure->getSubField("valueAlarm.lowAlarmLimit"); testOk1(pvtemp.get()!=0); convert->fromDouble(pvtemp,1.0); - pvField = pvStructure->getSubField( - string("valueAlarm.highAlarmLimit")); - pvtemp = static_pointer_cast(pvField); + pvtemp = pvStructure->getSubField("valueAlarm.highAlarmLimit"); testOk1(pvtemp.get()!=0); convert->fromDouble(pvtemp,9.0); severity = pvStructure->getSubField( @@ -288,9 +282,7 @@ static void testPVScalarWithProperties( active->put(true); } if(hasBooleanAlarm) { - PVFieldPtr pvField = pvStructure->getSubField( - string("valueAlarm.active")); - PVBooleanPtr pvBoolean = static_pointer_cast(pvField); + PVBooleanPtr pvBoolean = pvStructure->getSubField("valueAlarm.active"); pvBoolean->put(true); severity = pvStructure->getSubField( string("valueAlarm.falseSeverity")); @@ -364,7 +356,7 @@ static void testScalarArrayCommon(string /*fieldName*/,ScalarType stype) } if(debug) std::cout << *pvStructure << std::endl; - PVFieldPtr pvField = pvStructure->getSubField("alarm.status"); + PVFieldPtr pvField = pvStructure->getSubField("alarm.status"); testOk1(pvField.get()!=0); } @@ -425,7 +417,7 @@ pvString->put("true"); cout << *pvTop << endl; string subName("record._options.process"); -PVFieldPtr pvField = pvTop->getSubField(subName); +PVFieldPtr pvField = pvTop->getSubField(subName); string fieldName = pvField->getFieldName(); string fullName = pvField->getFullName(); cout << "fieldName " << fieldName << " fullName " << fullName << endl;