a complete set of tests for PVData now exists
This commit is contained in:
@@ -126,7 +126,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
|
||||
bool value =
|
||||
((from.compare("true")==0) ? true : false);
|
||||
pv->put(value);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
case pvByte : {
|
||||
PVByte *pv = (PVByte*)pvScalar;
|
||||
@@ -134,7 +134,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
|
||||
sscanf(from.c_str(),"%d",&ival);
|
||||
int8 value = ival;
|
||||
pv->put(value);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
case pvShort : {
|
||||
PVShort *pv = (PVShort*)pvScalar;
|
||||
@@ -142,7 +142,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
|
||||
sscanf(from.c_str(),"%d",&ival);
|
||||
int16 value = ival;
|
||||
pv->put(value);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
case pvInt : {
|
||||
PVInt *pv = (PVInt*)pvScalar;
|
||||
@@ -150,7 +150,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
|
||||
sscanf(from.c_str(),"%d",&ival);
|
||||
int32 value = ival;
|
||||
pv->put(value);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
case pvLong : {
|
||||
PVLong *pv = (PVLong*)pvScalar;
|
||||
@@ -158,26 +158,26 @@ void Convert::fromString(PVScalar *pvScalar, String from)
|
||||
sscanf(from.c_str(),"%lld",&ival);
|
||||
int64 value = ival;
|
||||
pv->put(value);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
case pvFloat : {
|
||||
PVFloat *pv = (PVFloat*)pvScalar;
|
||||
float value;
|
||||
sscanf(from.c_str(),"%f",&value);
|
||||
pv->put(value);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
case pvDouble : {
|
||||
PVDouble*pv = (PVDouble*)pvScalar;
|
||||
double value;
|
||||
sscanf(from.c_str(),"%lf",&value);
|
||||
pv->put(value);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
case pvString: {
|
||||
PVString *value = (PVString*)pvScalar;
|
||||
value->put(from);
|
||||
break;
|
||||
return;
|
||||
}
|
||||
}
|
||||
String message("Convert::fromString unknown scalarType ");
|
||||
@@ -3056,7 +3056,13 @@ void convertToString(StringBuilder buffer,PVField * pv,int indentLevel)
|
||||
return convertStructureArray(buffer,(PVStructureArray*)pv,indentLevel);
|
||||
}
|
||||
PVScalar *pvScalar = (PVScalar*)pv;
|
||||
switch(pvScalar->getScalar()->getScalarType()) {
|
||||
ScalarConstPtr pscalar = pvScalar->getScalar();
|
||||
ScalarType scalarType = pscalar->getScalarType();
|
||||
ScalarTypeFunc::toString(buffer,scalarType);
|
||||
*buffer += " ";
|
||||
*buffer += pscalar->getFieldName();
|
||||
*buffer += " ";
|
||||
switch(scalarType) {
|
||||
case pvBoolean: {
|
||||
PVBoolean *data = (PVBoolean*)pv;
|
||||
bool value = data->get();
|
||||
@@ -3121,30 +3127,28 @@ void convertToString(StringBuilder buffer,PVField * pv,int indentLevel)
|
||||
|
||||
void convertStructure(StringBuilder buffer,PVStructure *data,int indentLevel)
|
||||
{
|
||||
convert->newLine(buffer, indentLevel);
|
||||
*buffer += "structure {";
|
||||
*buffer += "structure ";
|
||||
*buffer += data->getField()->getFieldName();
|
||||
convert->newLine(buffer, indentLevel+1);
|
||||
PVFieldPtrArray fieldsData = data->getPVFields();
|
||||
if (fieldsData != 0) {
|
||||
int length = data->getStructure()->getNumberFields();
|
||||
for(int i=0; i<length; i++) {
|
||||
PVField *fieldField = fieldsData[i];
|
||||
FieldConstPtr fieldnow = fieldField->getField();
|
||||
convert->newLine(buffer, indentLevel + 1);
|
||||
int size = fieldnow->getFieldName().length();
|
||||
char buff[size+2];
|
||||
sprintf(buff,"%s = ",fieldnow->getFieldName().c_str());
|
||||
*buffer += buff;
|
||||
convert->getString(buffer,fieldField,indentLevel + 1);
|
||||
fieldField->toString(buffer,indentLevel + 1);
|
||||
if(i<length-1) convert->newLine(buffer, indentLevel+1);
|
||||
}
|
||||
}
|
||||
convert->newLine(buffer, indentLevel);
|
||||
*buffer += "}";
|
||||
}
|
||||
|
||||
void convertArray(StringBuilder buffer,PVScalarArray * pv,int indentLevel)
|
||||
{
|
||||
ScalarArrayConstPtr array = pv->getScalarArray();
|
||||
ScalarType type = array->getElementType();
|
||||
ScalarTypeFunc::toString(buffer,type);
|
||||
*buffer += "Array ";
|
||||
*buffer += array->getFieldName();
|
||||
*buffer += " ";
|
||||
switch(type) {
|
||||
case pvBoolean: {
|
||||
PVBooleanArray *pvdata = (PVBooleanArray*)pv;
|
||||
@@ -3313,9 +3317,17 @@ void convertArray(StringBuilder buffer,PVScalarArray * pv,int indentLevel)
|
||||
void convertStructureArray(StringBuilder buffer,
|
||||
PVStructureArray * pvdata,int indentLevel)
|
||||
{
|
||||
*buffer += "structureArray ";
|
||||
*buffer += pvdata->getField()->getFieldName();
|
||||
*buffer += " ";
|
||||
StructureArrayData data = StructureArrayData();
|
||||
int length = pvdata->getLength();
|
||||
pvdata->get(0, length, &data);
|
||||
if(length<=0) {
|
||||
*buffer += " []";
|
||||
return;
|
||||
}
|
||||
convert->newLine(buffer, indentLevel);
|
||||
*buffer += "[";
|
||||
for (int i = 0; i < length; i++) {
|
||||
if (i != 0) {
|
||||
|
||||
Reference in New Issue
Block a user