Use template getSubField when type known
Replace non-template getSubField with template version when PVField is of a known, derived type.
This commit is contained in:
@@ -42,9 +42,9 @@ static void testCreateRequestInternal() {
|
||||
if(!pvRequest) { cout<< createRequest->getMessage() << 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<PVStructure>("field").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("putField").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("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<PVString>("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<PVStructure>("field.a").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("putField.a").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("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<PVString>("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<PVStructure>("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<PVString>("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<PVStructure>("field.b.a.a").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("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<PVStructure>("field.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("field.timeStamp").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("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<PVString>("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<PVStructure>("field.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("field.timeStamp").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("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<PVString>("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<PVStructure>("field.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("field.timeStamp").get()!=NULL);
|
||||
pvString = pvRequest->getSubField<PVString>("field.timeStamp._options.algorithm");
|
||||
sval = pvString->get();
|
||||
testOk(sval.compare("onChange")==0,"field.timeStamp._options.algorithm = onChange");
|
||||
pvString = pvRequest->getSubField<PVString>("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<PVStructure>("field.power.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("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<PVString>("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<PVStructure>("field.alarm").get()!=NULL);
|
||||
pvString = pvRequest->getSubField<PVString>("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<PVStructure>("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<PVStructure>("putField.power.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.timeStamp").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.power.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.power.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.current.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.current.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.voltage.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("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<PVStructure>("field.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("field.timeStamp").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("field.supply.zero.voltage.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("field.supply.zero.current.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("field.supply.zero.power.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("field.supply.one.voltage.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("field.supply.one.current.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("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<PVStructure>("putField.power.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.timeStamp").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.power.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.power.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.current.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.current.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.voltage.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.voltage.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps0.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps0.timeStamp").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps0.power.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps0.power.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps0.current.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps0.current.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps0.voltage.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps0.voltage.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps1.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps1.timeStamp").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps1.power.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps1.power.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps1.current.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps1.current.alarm").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("getField.ps1.voltage.value").get()!=NULL);
|
||||
testOk1(pvRequest->getSubField<PVStructure>("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<PVStructure>("field.a.b.c.d").get()!=NULL);
|
||||
testPass("request %s",request.c_str());
|
||||
|
||||
request = string("record[process=true,xxx=yyy]")
|
||||
|
||||
Reference in New Issue
Block a user