diff --git a/testApp/remote/eget.cpp b/testApp/remote/eget.cpp index 0cc8bc3..2f4801c 100644 --- a/testApp/remote/eget.cpp +++ b/testApp/remote/eget.cpp @@ -12,6 +12,7 @@ #include #include #include +#include #include #include @@ -70,71 +71,11 @@ void convertToString(StringBuilder buffer,PVField * pv,int notFirst) *buffer += "\t"; return; } - PVScalar *pvScalar = static_cast(pv); - ScalarConstPtr pscalar = pvScalar->getScalar(); - ScalarType scalarType = pscalar->getScalarType(); - switch(scalarType) { - case pvBoolean: { - PVBoolean *data = static_cast(pv); - bool value = data->get(); - if(value) { - *buffer += "true"; - } else { - *buffer += "false"; - } - } - break; - case pvByte: { - PVByte *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%d",(int)data->get()); - *buffer += xxx; - } - break; - case pvShort: { - PVShort *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%d",(int)data->get()); - *buffer += xxx; - } - break; - case pvInt: { - PVInt *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%d",(int)data->get()); - *buffer += xxx; - } - break; - case pvLong: { - PVLong *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%lld",(int64)data->get()); - *buffer += xxx; - } - break; - case pvFloat: { - PVFloat *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%g",data->get()); - *buffer += xxx; - } - break; - case pvDouble: { - PVDouble *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%lg",data->get()); - *buffer += xxx; - } - break; - case pvString: { - PVString *data = static_cast(pv); - *buffer += data->get(); - } - break; - default: - *buffer += "(unknown ScalarType)"; - } + // scalar stringification + std::stringstream sstream; + sstream << std::boolalpha << *pv; + *buffer += sstream.str(); *buffer += "\t"; } @@ -150,168 +91,10 @@ void convertStructure(StringBuilder buffer,PVStructure *data,int notFirst) void convertArray(StringBuilder buffer,PVScalarArray * pv,int notFirst) { - ScalarArrayConstPtr array = pv->getScalarArray(); - ScalarType type = array->getElementType(); - switch(type) { - case pvBoolean: { - PVBooleanArray *pvdata = static_cast(pv); - BooleanArrayData data = BooleanArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ","; - int num = pvdata->get(i,1,data); - if(num==1) { - BooleanArray value = data.data; - if(value[data.offset]) { - *buffer += "true"; - } else { - *buffer += "false"; - } - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvByte: { - PVByteArray *pvdata = static_cast(pv); - ByteArrayData data = ByteArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ","; - int num = pvdata->get(i,1,data); - if(num==1) { - int val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%d",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvShort: { - PVShortArray *pvdata = static_cast(pv); - ShortArrayData data = ShortArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - int val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%d",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvInt: { - PVIntArray *pvdata = static_cast(pv); - IntArrayData data = IntArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - int val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%d",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvLong: { - PVLongArray *pvdata = static_cast(pv); - LongArrayData data = LongArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - int64 val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%lld",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvFloat: { - PVFloatArray *pvdata = static_cast(pv); - FloatArrayData data = FloatArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - float val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%g",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvDouble: { - PVDoubleArray *pvdata = static_cast(pv); - DoubleArrayData data = DoubleArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - double val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%lg",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += ("]"); - break; - } - case pvString: { - PVStringArray *pvdata = static_cast(pv); - StringArrayData data = StringArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ","; - int num = pvdata->get(i,1,data); - StringArray value = data.data; - if(num==1) { - if(value[data.offset].length()>0) { - *buffer += value[data.offset].c_str(); - } else { - *buffer += "null"; - } - } else { - *buffer += "null"; - } - } - *buffer += "]"; - break; - } - default: - *buffer += "(array element is unknown ScalarType)"; - } + // array stringification + std::stringstream sstream; + sstream << std::boolalpha << *pv; + *buffer += sstream.str(); } void convertStructureArray(StringBuilder buffer, diff --git a/testApp/remote/pvget.cpp b/testApp/remote/pvget.cpp index ca3d966..69d3850 100644 --- a/testApp/remote/pvget.cpp +++ b/testApp/remote/pvget.cpp @@ -11,7 +11,7 @@ #include #include - +#include #include #include @@ -62,71 +62,11 @@ void convertToString(StringBuilder buffer,PVField * pv,int notFirst) *buffer += "\t"; return; } - PVScalar *pvScalar = static_cast(pv); - ScalarConstPtr pscalar = pvScalar->getScalar(); - ScalarType scalarType = pscalar->getScalarType(); - switch(scalarType) { - case pvBoolean: { - PVBoolean *data = static_cast(pv); - bool value = data->get(); - if(value) { - *buffer += "true"; - } else { - *buffer += "false"; - } - } - break; - case pvByte: { - PVByte *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%d",(int)data->get()); - *buffer += xxx; - } - break; - case pvShort: { - PVShort *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%d",(int)data->get()); - *buffer += xxx; - } - break; - case pvInt: { - PVInt *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%d",(int)data->get()); - *buffer += xxx; - } - break; - case pvLong: { - PVLong *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%lld",(int64)data->get()); - *buffer += xxx; - } - break; - case pvFloat: { - PVFloat *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%g",data->get()); - *buffer += xxx; - } - break; - case pvDouble: { - PVDouble *data = static_cast(pv); - char xxx[30]; - sprintf(xxx,"%lg",data->get()); - *buffer += xxx; - } - break; - case pvString: { - PVString *data = static_cast(pv); - *buffer += data->get(); - } - break; - default: - *buffer += "(unknown ScalarType)"; - } - + + // scalar stringification + std::stringstream sstream; + sstream << std::boolalpha << *pv; + *buffer += sstream.str(); *buffer += "\t"; } @@ -142,168 +82,10 @@ void convertStructure(StringBuilder buffer,PVStructure *data,int notFirst) void convertArray(StringBuilder buffer,PVScalarArray *pv,int notFirst) { - ScalarArrayConstPtr array = pv->getScalarArray(); - ScalarType type = array->getElementType(); - switch(type) { - case pvBoolean: { - PVBooleanArray *pvdata = static_cast(pv); - BooleanArrayData data = BooleanArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ","; - int num = pvdata->get(i,1,data); - if(num==1) { - BooleanArray value = data.data; - if(value[data.offset]) { - *buffer += "true"; - } else { - *buffer += "false"; - } - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvByte: { - PVByteArray *pvdata = static_cast(pv); - ByteArrayData data = ByteArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ","; - int num = pvdata->get(i,1,data); - if(num==1) { - int val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%d",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvShort: { - PVShortArray *pvdata = static_cast(pv); - ShortArrayData data = ShortArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - int val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%d",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvInt: { - PVIntArray *pvdata = static_cast(pv); - IntArrayData data = IntArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - int val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%d",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvLong: { - PVLongArray *pvdata = static_cast(pv); - LongArrayData data = LongArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - int64 val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%lld",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvFloat: { - PVFloatArray *pvdata = static_cast(pv); - FloatArrayData data = FloatArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - float val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%g",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += "]"; - break; - } - case pvDouble: { - PVDoubleArray *pvdata = static_cast(pv); - DoubleArrayData data = DoubleArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ','; - int num = pvdata->get(i,1,data); - if(num==1) { - double val = data.data[data.offset]; - char buf[16]; - sprintf(buf,"%lg",val); - *buffer += buf; - } else { - *buffer += "???? "; - } - } - *buffer += ("]"); - break; - } - case pvString: { - PVStringArray *pvdata = static_cast(pv); - StringArrayData data = StringArrayData(); - *buffer += "["; - for(size_t i=0; i < pvdata->getLength(); i++) { - if(i!=0) *buffer += ","; - int num = pvdata->get(i,1,data); - StringArray value = data.data; - if(num==1) { - if(value[data.offset].length()>0) { - *buffer += value[data.offset].c_str(); - } else { - *buffer += "null"; - } - } else { - *buffer += "null"; - } - } - *buffer += "]"; - break; - } - default: - *buffer += "(array element is unknown ScalarType)"; - } + // array stringification + std::stringstream sstream; + sstream << std::boolalpha << *pv; + *buffer += sstream.str(); } void convertStructureArray(StringBuilder buffer,