ConvertFactory.cpp is now complete

This commit is contained in:
Marty Kraimer
2010-10-21 10:19:42 -04:00
parent e0ca45a028
commit ebbb1191bd
5 changed files with 292 additions and 66 deletions

View File

@@ -25,7 +25,7 @@ namespace epics { namespace pvData {
virtual int get(int offset, int length, BooleanArrayData *data) ;
virtual int put(int offset,int length,BooleanArray from,
int fromOffset);
virtual void shareData(bool value[],int capacity,int length);
virtual void shareData(BooleanArray value,int capacity,int length);
// from Serializable
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) ;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher);
@@ -108,8 +108,7 @@ namespace epics { namespace pvData {
return len;
}
void BasePVBooleanArray::shareData(
bool shareValue[],int capacity,int length)
void BasePVBooleanArray::shareData(BooleanArray shareValue,int capacity,int length)
{
delete[] value;
value = shareValue;

View File

@@ -25,7 +25,7 @@ namespace epics { namespace pvData {
virtual int get(int offset, int length, ByteArrayData *data) ;
virtual int put(int offset,int length,ByteArray from,
int fromOffset);
virtual void shareData(epicsInt8 value[],int capacity,int length);
virtual void shareData(ByteArray value,int capacity,int length);
// from Serializable
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) ;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher);
@@ -108,8 +108,7 @@ namespace epics { namespace pvData {
return len;
}
void BasePVByteArray::shareData(
epicsInt8 shareValue[],int capacity,int length)
void BasePVByteArray::shareData(ByteArray shareValue,int capacity,int length)
{
delete[] value;
value = shareValue;

View File

@@ -16,7 +16,6 @@ static Convert* convert = 0;
static String trueString("true");
static String falseString("false");
static String logicError("Logic error. Should never get here.");
static String notImplemented("not implemented");
static String illegalScalarType("Illegal ScalarType");
static bool convertEquals(PVField *a,PVField *b);
@@ -58,7 +57,7 @@ static void convertArray(StringBuilder buffer,
static void convertStructureArray(StringBuilder buffer,
PVStructureArray * pvdata,int indentLevel);
static int copyArrayDataReference(PVScalarArray *from,PVArray *to);
static int CopyNumericArray(PVScalarArray *from,
static int copyNumericArray(PVScalarArray *from,
int offset, PVScalarArray *to, int toOffset, int len);
static std::vector<String> split(String commaSeparatedList);
@@ -155,8 +154,8 @@ void Convert::fromString(PVScalar *pvScalar, String from)
}
case pvLong : {
PVLong *pv = (PVLong*)pvScalar;
long int ival;
sscanf(from.c_str(),"%ld",&ival);
epicsInt64 ival;
sscanf(from.c_str(),"%lld",&ival);
epicsInt64 value = ival;
pv->put(value);
break;
@@ -383,7 +382,7 @@ int Convert::copyScalarArray(PVScalarArray *from, int offset,
int ncopy = 0;
if(ScalarTypeFunc::isNumeric(fromElementType)
&& ScalarTypeFunc::isNumeric(toElementType)) {
return CopyNumericArray(from,offset,to,toOffset,length);
return copyNumericArray(from,offset,to,toOffset,length);
} else if(toElementType==pvBoolean && fromElementType==pvBoolean) {
PVBooleanArray *pvfrom = (PVBooleanArray*)from;
PVBooleanArray *pvto = (PVBooleanArray*)to;
@@ -990,8 +989,8 @@ void Convert::fromLong(PVScalar *pv, epicsInt64 from)
case pvString: {
PVString *value = (PVString *)pv;
char buffer[20];
long int ival = from;
sprintf(buffer,"%ld",ival);
epicsInt64 ival = from;
sprintf(buffer,"%lld",ival);
String xxx(buffer);
value->put(xxx);
return;
@@ -1035,7 +1034,7 @@ void Convert::fromFloat(PVScalar* pv, float from)
PVString *value = (PVString *)pv;
char buffer[20];
double dval = from;
sprintf(buffer,"%e",dval);
sprintf(buffer,"%g",dval);
String xxx(buffer);
value->put(xxx);
return;
@@ -1079,7 +1078,7 @@ void Convert::fromDouble(PVScalar *pv, double from)
PVString *value = (PVString *)pv;
char buffer[20];
double dval = from;
sprintf(buffer,"%e",dval);
sprintf(buffer,"%g",dval);
String xxx(buffer);
value->put(xxx);
return;
@@ -2756,10 +2755,6 @@ int convertToDoubleArray(PVScalarArray * pv, int offset, int len,double to[], in
throw std::logic_error(message);
}
static String removeWhiteSpace(String string) {
return string;
}
int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[], int fromOffset)
{
ScalarType elemType = pv->getScalarArray()->getElementType();
@@ -2769,7 +2764,7 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
PVBooleanArray *pvdata = (PVBooleanArray*) pv;
bool data[1];
while (len > 0) {
String fromString = removeWhiteSpace(from[fromOffset]);
String fromString = from[fromOffset];
data[0] = (fromString.compare("true")==0) ? true : false;
if (pvdata->put(offset, 1, data, 0) == 0)
return ntransfered;
@@ -2784,7 +2779,7 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
PVByteArray *pvdata = (PVByteArray*) pv;
epicsInt8 data[1];
while (len > 0) {
String fromString = removeWhiteSpace(from[fromOffset]);
String fromString = from[fromOffset];
int ival;
sscanf(fromString.c_str(),"%d",&ival);
data[0] = ival;
@@ -2801,7 +2796,7 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
PVShortArray *pvdata = (PVShortArray*) pv;
epicsInt16 data[1];
while (len > 0) {
String fromString = removeWhiteSpace(from[fromOffset]);
String fromString = from[fromOffset];
int ival;
sscanf(fromString.c_str(),"%d",&ival);
data[0] = ival;
@@ -2818,7 +2813,7 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
PVIntArray *pvdata = (PVIntArray*) pv;
epicsInt32 data[1];
while (len > 0) {
String fromString = removeWhiteSpace(from[fromOffset]);
String fromString = from[fromOffset];
int ival;
sscanf(fromString.c_str(),"%d",&ival);
data[0] = ival;
@@ -2835,9 +2830,9 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
PVLongArray *pvdata = (PVLongArray*) pv;
epicsInt64 data[1];
while (len > 0) {
String fromString = removeWhiteSpace(from[fromOffset]);
long int ival;
sscanf(fromString.c_str(),"%ld",&ival);
String fromString = from[fromOffset];
epicsInt64 ival;
sscanf(fromString.c_str(),"%lld",&ival);
data[0] = ival;
if (pvdata->put(offset, 1, data, 0) == 0)
return ntransfered;
@@ -2852,7 +2847,7 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
PVFloatArray *pvdata = (PVFloatArray*) pv;
float data[1];
while (len > 0) {
String fromString = removeWhiteSpace(from[fromOffset]);
String fromString = from[fromOffset];
float fval;
sscanf(fromString.c_str(),"%f",&fval);
data[0] = fval;
@@ -2869,7 +2864,7 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
PVDoubleArray *pvdata = (PVDoubleArray*) pv;
double data[1];
while (len > 0) {
String fromString = removeWhiteSpace(from[fromOffset]);
String fromString = from[fromOffset];
double fval;
sscanf(fromString.c_str(),"%lf",&fval);
data[0] = fval;
@@ -2975,8 +2970,8 @@ int convertToStringArray(PVScalarArray * pv, int offset, int len,String to[], in
for (int i = 0; i < num; i++) {
if (pvdata->get(offset + i, 1, &data) == 1) {
LongArray dataArray = data.data;
long int ival = dataArray[data.offset];
sprintf(cr,"%ld",ival);
epicsInt64 ival = dataArray[data.offset];
sprintf(cr,"%lld",ival);
to[toOffset + i] = String(cr);
} else {
to[toOffset + i] = "bad pv";
@@ -2992,7 +2987,7 @@ int convertToStringArray(PVScalarArray * pv, int offset, int len,String to[], in
if (pvdata->get(offset + i, 1, &data) == 1) {
FloatArray dataArray = data.data;
float fval = dataArray[data.offset];
sprintf(cr,"%e",fval);
sprintf(cr,"%g",fval);
to[toOffset + i] = String(cr);
} else {
to[toOffset + i] = "bad pv";
@@ -3008,7 +3003,7 @@ int convertToStringArray(PVScalarArray * pv, int offset, int len,String to[], in
if (pvdata->get(offset + i, 1, &data) == 1) {
DoubleArray dataArray = data.data;
double fval = dataArray[data.offset];
sprintf(cr,"%e",fval);
sprintf(cr,"%g",fval);
to[toOffset + i] = String(cr);
} else {
to[toOffset + i] = "bad pv";
@@ -3094,7 +3089,7 @@ void convertToString(StringBuilder buffer,PVField * pv,int indentLevel)
case pvLong: {
PVLong *data = (PVLong*)pv;
char xxx[30];
sprintf(xxx,"%ld",(long int)data->get());
sprintf(xxx,"%lld",(epicsInt64)data->get());
*buffer += xxx;
}
return;
@@ -3234,9 +3229,9 @@ void convertArray(StringBuilder buffer,PVScalarArray * pv,int indentLevel)
if(i!=0) *buffer += ',';
int num = pvdata->get(i,1,&data);
if(num==1) {
long int val = data.data[data.offset];
epicsInt64 val = data.data[data.offset];
char buf[16];
sprintf(buf,"%ld",val);
sprintf(buf,"%lld",val);
*buffer += buf;
} else {
*buffer += "???? ";
@@ -3255,7 +3250,7 @@ void convertArray(StringBuilder buffer,PVScalarArray * pv,int indentLevel)
if(num==1) {
float val = data.data[data.offset];
char buf[16];
sprintf(buf,"%f",val);
sprintf(buf,"%g",val);
*buffer += buf;
} else {
*buffer += "???? ";
@@ -3274,7 +3269,7 @@ void convertArray(StringBuilder buffer,PVScalarArray * pv,int indentLevel)
if(num==1) {
double val = data.data[data.offset];
char buf[16];
sprintf(buf,"%lf",val);
sprintf(buf,"%lg",val);
*buffer += buf;
} else {
*buffer += "???? ";
@@ -3312,19 +3307,253 @@ void convertArray(StringBuilder buffer,PVScalarArray * pv,int indentLevel)
}
}
void convertStructureArray(StringBuilder buffer,PVStructureArray * pvdata,int indentLevel)
void convertStructureArray(StringBuilder buffer,
PVStructureArray * pvdata,int indentLevel)
{
throw std::logic_error(notImplemented);
StructureArrayData data = StructureArrayData();
int length = pvdata->getLength();
pvdata->get(0, length, &data);
*buffer += "[";
for (int i = 0; i < length; i++) {
if (i != 0) {
*buffer += ",";
}
convert->newLine(buffer, indentLevel + 1);
PVStructure *pvStructure = data.data[i];
if (pvStructure == 0) {
*buffer += "null";
} else {
pvStructure->toString(buffer,indentLevel+1);
}
}
convert->newLine(buffer, indentLevel);
*buffer += "]";
}
int copyArrayDataReference(PVScalarArray *from,PVArray *to)
{
throw std::logic_error(notImplemented);
ScalarType scalarType = from->getScalarArray()->getElementType();
switch (scalarType) {
case pvBoolean: {
PVBooleanArray *pvfrom = (PVBooleanArray*) from;
PVBooleanArray *pvto = (PVBooleanArray*) to;
BooleanArrayData booleanArrayData = BooleanArrayData();
pvfrom->get(0, pvfrom->getLength(), &booleanArrayData);
BooleanArray booleanArray = booleanArrayData.data;
pvto->shareData(booleanArray,from->getCapacity(),from->getLength());
break;
}
case pvByte: {
PVByteArray *pvfrom = (PVByteArray*) from;
PVByteArray *pvto = (PVByteArray*) to;
ByteArrayData byteArrayData = ByteArrayData();
pvfrom->get(0, pvfrom->getLength(), &byteArrayData);
ByteArray byteArray = byteArrayData.data;
pvto->shareData(byteArray,from->getCapacity(),from->getLength());
break;
}
case pvShort: {
PVShortArray *pvfrom = (PVShortArray*) from;
PVShortArray *pvto = (PVShortArray*) to;
ShortArrayData shortArrayData = ShortArrayData();
pvfrom->get(0, pvfrom->getLength(), &shortArrayData);
ShortArray shortArray = shortArrayData.data;
pvto->shareData(shortArray,from->getCapacity(),from->getLength());
break;
}
case pvInt: {
PVIntArray *pvfrom = (PVIntArray*) from;
PVIntArray *pvto = (PVIntArray*) to;
IntArrayData intArrayData = IntArrayData();
pvfrom->get(0, pvfrom->getLength(), &intArrayData);
IntArray intArray = intArrayData.data;
pvto->shareData(intArray,from->getCapacity(),from->getLength());
break;
}
case pvLong: {
PVLongArray *pvfrom = (PVLongArray*) from;
PVLongArray *pvto = (PVLongArray*) to;
LongArrayData longArrayData = LongArrayData();
pvfrom->get(0, pvfrom->getLength(), &longArrayData);
LongArray longArray = longArrayData.data;
pvto->shareData(longArray,from->getCapacity(),from->getLength());
break;
}
case pvFloat: {
PVFloatArray *pvfrom = (PVFloatArray*) from;
PVFloatArray *pvto = (PVFloatArray*) to;
FloatArrayData longArrayData = FloatArrayData();
pvfrom->get(0, pvfrom->getLength(), &longArrayData);
FloatArray longArray = longArrayData.data;
pvto->shareData(longArray,from->getCapacity(),from->getLength());
break;
}
case pvDouble: {
PVDoubleArray *pvfrom = (PVDoubleArray*) from;
PVDoubleArray *pvto = (PVDoubleArray*) to;
DoubleArrayData doubleArrayData = DoubleArrayData();
pvfrom->get(0, pvfrom->getLength(), &doubleArrayData);
DoubleArray doubleArray = doubleArrayData.data;
pvto->shareData(doubleArray,from->getCapacity(),from->getLength());
break;
}
case pvString: {
PVStringArray *pvfrom = (PVStringArray*) from;
PVStringArray *pvto = (PVStringArray*) to;
StringArrayData stringArrayData = StringArrayData();
pvfrom->get(0, pvfrom->getLength(), &stringArrayData);
StringArray stringArray = stringArrayData.data;
pvto->shareData(stringArray,from->getCapacity(),from->getLength());
break;
}
}
to->setImmutable();
return from->getLength();
}
int CopyNumericArray(PVScalarArray *from, int offset, PVScalarArray *to, int toOffset, int len)
int copyNumericArray(PVScalarArray *from, int offset, PVScalarArray *to, int toOffset, int len)
{
throw std::logic_error(notImplemented);
ScalarType fromElementType = from->getScalarArray()->getElementType();
int ncopy = 0;
switch (fromElementType) {
case pvBoolean:
throw std::logic_error(String("PVBooleanArray is not a numeric array"));
case pvByte: {
PVByteArray *pvfrom = (PVByteArray*) from;
while (len > 0) {
int num = 0;
ByteArrayData byteArrayData = ByteArrayData();
num = pvfrom->get(offset, len, &byteArrayData);
ByteArray data = byteArrayData.data;
int dataOffset = byteArrayData.offset;
if (num <= 0) break;
while (num > 0) {
int n = convert->fromByteArray(
to, toOffset, num, data, dataOffset);
if (n <= 0) break;
len -= n;
num -= n;
ncopy += n;
offset += n;
toOffset += n;
}
}
break;
}
case pvShort: {
PVShortArray *pvfrom = (PVShortArray*) from;
while (len > 0) {
int num = 0;
ShortArrayData shortArrayData = ShortArrayData();
num = pvfrom->get(offset, len, &shortArrayData);
ShortArray data = shortArrayData.data;
int dataOffset = shortArrayData.offset;
if (num <= 0) break;
while (num > 0) {
int n = convert->fromShortArray(
to, toOffset, num, data, dataOffset);
if (n <= 0) break;
len -= n;
num -= n;
ncopy += n;
offset += n;
toOffset += n;
}
}
break;
}
case pvInt: {
PVIntArray *pvfrom = (PVIntArray*) from;
while (len > 0) {
int num = 0;
IntArrayData shortArrayData = IntArrayData();
num = pvfrom->get(offset, len, &shortArrayData);
IntArray data = shortArrayData.data;
int dataOffset = shortArrayData.offset;
if (num <= 0) break;
while (num > 0) {
int n = convert->fromIntArray(
to, toOffset, num, data, dataOffset);
if (n <= 0) break;
len -= n;
num -= n;
ncopy += n;
offset += n;
toOffset += n;
}
}
break;
}
case pvLong: {
PVLongArray *pvfrom = (PVLongArray*) from;
while (len > 0) {
int num = 0;
LongArrayData longArrayData = LongArrayData();
num = pvfrom->get(offset, len, &longArrayData);
LongArray data = longArrayData.data;
int dataOffset = longArrayData.offset;
if (num <= 0) break;
while (num > 0) {
int n = convert->fromLongArray(
to, toOffset, num, data, dataOffset);
if (n <= 0) break;
len -= n;
num -= n;
ncopy += n;
offset += n;
toOffset += n;
}
}
break;
}
case pvFloat: {
PVFloatArray *pvfrom = (PVFloatArray*) from;
while (len > 0) {
int num = 0;
FloatArrayData floatArrayData = FloatArrayData();
num = pvfrom->get(offset, len, &floatArrayData);
FloatArray data = floatArrayData.data;
int dataOffset = floatArrayData.offset;
if (num <= 0) break;
while (num > 0) {
int n = convert->fromFloatArray(
to, toOffset, num, data, dataOffset);
if (n <= 0) break;
len -= n;
num -= n;
ncopy += n;
offset += n;
toOffset += n;
}
}
break;
}
case pvDouble: {
PVDoubleArray *pvfrom = (PVDoubleArray*) from;
while (len > 0) {
int num = 0;
DoubleArrayData doubleArrayData = DoubleArrayData();
num = pvfrom->get(offset, len, &doubleArrayData);
DoubleArray data = doubleArrayData.data;
int dataOffset = doubleArrayData.offset;
if (num <= 0) break;
while (num > 0) {
int n = convert->fromDoubleArray(
to, toOffset, num, data, dataOffset);
if (n <= 0) break;
len -= n;
num -= n;
ncopy += n;
offset += n;
toOffset += n;
}
}
break;
}
case pvString:
throw std::logic_error(String("PVStringArray is not a numeric array"));
}
return ncopy;
}
class ConvertExt : public Convert {

View File

@@ -19,9 +19,9 @@ namespace epics { namespace pvData {
void fromString(PVScalar *pv, String from);
int fromString(PVScalarArray *pv, String from);
int fromStringArray(PVScalarArray *pv, int offset, int length,
String from[], int fromOffset);
StringArray from, int fromOffset);
int toStringArray(PVScalarArray *pv, int offset, int length,
String to[], int toOffset);
StringArray to, int toOffset);
bool isCopyCompatible(FieldConstPtr from, FieldConstPtr to);
void copy(PVField *from,PVField *to);
bool isCopyScalarCompatible(
@@ -51,29 +51,29 @@ namespace epics { namespace pvData {
void fromFloat(PVScalar* pv, float from);
void fromDouble(PVScalar *pv, double from);
int toByteArray(PVScalarArray *pv, int offset, int length,
epicsInt8 to[], int toOffset);
ByteArray to, int toOffset);
int toShortArray(PVScalarArray *pv, int offset, int length,
epicsInt16 to[], int toOffset);
ShortArray to, int toOffset);
int toIntArray(PVScalarArray *pv, int offset, int length,
epicsInt32 to[], int toOffset);
IntArray to, int toOffset);
int toLongArray(PVScalarArray *pv, int offset, int length,
epicsInt64 to[], int toOffset);
LongArray to, int toOffset);
int toFloatArray(PVScalarArray *pv, int offset, int length,
float to[], int toOffset);
FloatArray to, int toOffset);
int toDoubleArray(PVScalarArray *pv, int offset, int length,
double to[], int toOffset);
DoubleArray to, int toOffset);
int fromByteArray(PVScalarArray *pv, int offset, int length,
epicsInt8 from[], int fromOffset);
ByteArray from, int fromOffset);
int fromShortArray(PVScalarArray *pv, int offset, int length,
epicsInt16 from[], int fromOffset);
ShortArray from, int fromOffset);
int fromIntArray(PVScalarArray *pv, int offset, int length,
epicsInt32 from[], int fromOffset);
IntArray from, int fromOffset);
int fromLongArray(PVScalarArray *pv, int offset, int length,
epicsInt64 from[], int fromOffset);
LongArray from, int fromOffset);
int fromFloatArray(PVScalarArray *pv, int offset, int length,
float from[], int fromOffset);
FloatArray from, int fromOffset);
int fromDoubleArray(PVScalarArray *pv, int offset, int length,
double from[], int fromOffset);
DoubleArray from, int fromOffset);
void newLine(StringBuilder buf, int indentLevel);
};

View File

@@ -160,8 +160,7 @@ namespace epics { namespace pvData {
StructureArrayData *data) = 0;
virtual int put(int offset,int length,
PVStructurePtrArray from, int fromOffset) = 0;
virtual void shareData(
PVStructurePtrArray value,int capacity,int length) = 0;
virtual void shareData( PVStructurePtrArray value,int capacity,int length) = 0;
virtual void serialize(ByteBuffer *pbuffer,
SerializableControl *pflusher) = 0 ;
virtual void deserialize(ByteBuffer *buffer,
@@ -330,7 +329,7 @@ namespace epics { namespace pvData {
virtual void toString(StringBuilder buf,int indentLevel) = 0 ;
virtual int get(int offset, int length, BooleanArrayData *data) = 0;
virtual int put(int offset,int length, BooleanArray from, int fromOffset) = 0;
virtual void shareData(bool value[],int capacity,int length) = 0;
virtual void shareData(BooleanArray value,int capacity,int length) = 0;
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) = 0;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher) = 0;
protected:
@@ -353,7 +352,7 @@ namespace epics { namespace pvData {
virtual void toString(StringBuilder buf,int indentLevel) = 0;
virtual int get(int offset, int length, ByteArrayData *data) = 0;
virtual int put(int offset,int length, ByteArray from, int fromOffset) = 0;
virtual void shareData(epicsInt8 value[],int capacity,int length) = 0;
virtual void shareData(ByteArray value,int capacity,int length) = 0;
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) = 0;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher) = 0;
protected:
@@ -376,7 +375,7 @@ namespace epics { namespace pvData {
virtual void toString(StringBuilder buf,int indentLevel) = 0;
virtual int get(int offset, int length, ShortArrayData *data) = 0;
virtual int put(int offset,int length, ShortArray from, int fromOffset) = 0;
virtual void shareData(epicsInt16 value[],int capacity,int length) = 0;
virtual void shareData(ShortArray value,int capacity,int length) = 0;
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) = 0;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher) = 0;
protected:
@@ -398,7 +397,7 @@ namespace epics { namespace pvData {
virtual void toString(StringBuilder buf,int indentLevel) = 0;
virtual int get(int offset, int length, IntArrayData *data) = 0;
virtual int put(int offset,int length, IntArray from, int fromOffset)= 0;
virtual void shareData(epicsInt32 value[],int capacity,int length)= 0;
virtual void shareData(IntArray value,int capacity,int length)= 0;
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) = 0;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher)= 0;
protected:
@@ -421,7 +420,7 @@ namespace epics { namespace pvData {
virtual void toString(StringBuilder buf,int indentLevel) = 0;
virtual int get(int offset, int length, LongArrayData *data) = 0;
virtual int put(int offset,int length, LongArray from, int fromOffset)= 0;
virtual void shareData(epicsInt64 value[],int capacity,int length)= 0;
virtual void shareData(LongArray value,int capacity,int length)= 0;
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) = 0;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher)= 0;
protected:
@@ -444,7 +443,7 @@ namespace epics { namespace pvData {
virtual void toString(StringBuilder buf,int indentLevel) = 0;
virtual int get(int offset, int length, FloatArrayData *data) = 0;
virtual int put(int offset,int length, FloatArray from, int fromOffset)= 0;
virtual void shareData(float value[],int capacity,int length)= 0;
virtual void shareData(FloatArray value,int capacity,int length)= 0;
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) = 0;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher)= 0;
protected:
@@ -469,7 +468,7 @@ namespace epics { namespace pvData {
virtual void toString(StringBuilder buf,int indentLevel) = 0;
virtual int get(int offset, int length, DoubleArrayData *data) = 0;
virtual int put(int offset,int length, DoubleArray from, int fromOffset) = 0;
virtual void shareData(double value[],int capacity,int length) = 0;
virtual void shareData(DoubleArray value,int capacity,int length) = 0;
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) = 0;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher) = 0;
protected:
@@ -492,7 +491,7 @@ namespace epics { namespace pvData {
virtual void toString(StringBuilder buf,int indentLevel) = 0;
virtual int get(int offset, int length, StringArrayData *data) = 0;
virtual int put(int offset,int length, StringArray from, int fromOffset)= 0;
virtual void shareData(String value[],int capacity,int length)= 0;
virtual void shareData(StringArray value,int capacity,int length)= 0;
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) = 0;
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher)= 0;
protected: