refactor introspection interfaces. replace epicsTypes by pvData types.
This commit is contained in:
@@ -42,12 +42,39 @@ PVFieldPvt::~PVFieldPvt()
|
||||
}
|
||||
|
||||
|
||||
static volatile int64 totalConstruct = 0;
|
||||
static volatile int64 totalDestruct = 0;
|
||||
static Mutex *globalMutex = 0;
|
||||
|
||||
void PVField::init()
|
||||
{
|
||||
globalMutex = new Mutex();
|
||||
}
|
||||
|
||||
int64 PVField::getTotalConstruct()
|
||||
{
|
||||
Lock xx(globalMutex);
|
||||
return totalConstruct;
|
||||
}
|
||||
|
||||
int64 PVField::getTotalDestruct()
|
||||
{
|
||||
Lock xx(globalMutex);
|
||||
return totalDestruct;
|
||||
}
|
||||
|
||||
|
||||
PVField::PVField(PVStructure *parent,FieldConstPtr field)
|
||||
: pImpl(new PVFieldPvt(parent,field))
|
||||
{}
|
||||
{
|
||||
Lock xx(globalMutex);
|
||||
totalConstruct++;
|
||||
}
|
||||
|
||||
PVField::~PVField()
|
||||
{
|
||||
Lock xx(globalMutex);
|
||||
totalDestruct++;
|
||||
delete pImpl;
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <epicsTypes.h>
|
||||
#include "pvData.h"
|
||||
#include "factory.h"
|
||||
#include "AbstractPVScalarArray.h"
|
||||
|
||||
@@ -18,8 +18,8 @@ namespace epics { namespace pvData {
|
||||
public:
|
||||
BasePVByte(PVStructure *parent,ScalarConstPtr scalar);
|
||||
virtual ~BasePVByte();
|
||||
virtual epicsInt8 get();
|
||||
virtual void put(epicsInt8 val);
|
||||
virtual int8 get();
|
||||
virtual void put(int8 val);
|
||||
virtual void serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher) ;
|
||||
virtual void deserialize(ByteBuffer *pbuffer,
|
||||
@@ -29,7 +29,7 @@ namespace epics { namespace pvData {
|
||||
virtual bool operator==(PVField *pv) ;
|
||||
virtual bool operator!=(PVField *pv) ;
|
||||
private:
|
||||
epicsInt8 value;
|
||||
int8 value;
|
||||
};
|
||||
|
||||
BasePVByte::BasePVByte(PVStructure *parent,ScalarConstPtr scalar)
|
||||
@@ -38,9 +38,9 @@ namespace epics { namespace pvData {
|
||||
|
||||
BasePVByte::~BasePVByte() {}
|
||||
|
||||
epicsInt8 BasePVByte::get() { return value;}
|
||||
int8 BasePVByte::get() { return value;}
|
||||
|
||||
void BasePVByte::put(epicsInt8 val){value = val;}
|
||||
void BasePVByte::put(int8 val){value = val;}
|
||||
|
||||
void BasePVByte::serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher)
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <epicsTypes.h>
|
||||
#include "pvData.h"
|
||||
#include "factory.h"
|
||||
#include "AbstractPVScalarArray.h"
|
||||
@@ -36,12 +35,12 @@ namespace epics { namespace pvData {
|
||||
virtual bool operator==(PVField *pv) ;
|
||||
virtual bool operator!=(PVField *pv) ;
|
||||
private:
|
||||
epicsInt8 *value;
|
||||
int8 *value;
|
||||
};
|
||||
|
||||
BasePVByteArray::BasePVByteArray(PVStructure *parent,
|
||||
ScalarArrayConstPtr scalarArray)
|
||||
: PVByteArray(parent,scalarArray),value(new epicsInt8[0])
|
||||
: PVByteArray(parent,scalarArray),value(new int8[0])
|
||||
{ }
|
||||
|
||||
BasePVByteArray::~BasePVByteArray()
|
||||
@@ -59,7 +58,7 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
int length = PVArray::getLength();
|
||||
if(length>capacity) length = capacity;
|
||||
epicsInt8 *newValue = new epicsInt8[capacity];
|
||||
int8 *newValue = new int8[capacity];
|
||||
for(int i=0; i<length; i++) newValue[i] = value[i];
|
||||
delete[]value;
|
||||
value = newValue;
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <epicsTypes.h>
|
||||
#include "pvData.h"
|
||||
#include "factory.h"
|
||||
#include "AbstractPVScalarArray.h"
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <epicsTypes.h>
|
||||
#include "pvData.h"
|
||||
#include "factory.h"
|
||||
#include "AbstractPVScalarArray.h"
|
||||
|
||||
@@ -18,8 +18,8 @@ namespace epics { namespace pvData {
|
||||
public:
|
||||
BasePVInt(PVStructure *parent,ScalarConstPtr scalar);
|
||||
virtual ~BasePVInt();
|
||||
virtual epicsInt32 get();
|
||||
virtual void put(epicsInt32 val);
|
||||
virtual int32 get();
|
||||
virtual void put(int32 val);
|
||||
virtual void serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher) ;
|
||||
virtual void deserialize(ByteBuffer *pbuffer,
|
||||
@@ -29,7 +29,7 @@ namespace epics { namespace pvData {
|
||||
virtual bool operator==(PVField *pv) ;
|
||||
virtual bool operator!=(PVField *pv) ;
|
||||
private:
|
||||
epicsInt32 value;
|
||||
int32 value;
|
||||
};
|
||||
|
||||
BasePVInt::BasePVInt(PVStructure *parent,ScalarConstPtr scalar)
|
||||
@@ -38,9 +38,9 @@ namespace epics { namespace pvData {
|
||||
|
||||
BasePVInt::~BasePVInt() {}
|
||||
|
||||
epicsInt32 BasePVInt::get() { return value;}
|
||||
int32 BasePVInt::get() { return value;}
|
||||
|
||||
void BasePVInt::put(epicsInt32 val){value = val;}
|
||||
void BasePVInt::put(int32 val){value = val;}
|
||||
|
||||
void BasePVInt::serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher)
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <epicsTypes.h>
|
||||
#include "pvData.h"
|
||||
#include "factory.h"
|
||||
#include "AbstractPVScalarArray.h"
|
||||
@@ -25,7 +24,7 @@ namespace epics { namespace pvData {
|
||||
virtual int get(int offset, int length, IntArrayData *data) ;
|
||||
virtual int put(int offset,int length,IntArray from,
|
||||
int fromOffset);
|
||||
virtual void shareData(epicsInt32 value[],int capacity,int length);
|
||||
virtual void shareData(int32 value[],int capacity,int length);
|
||||
// from Serializable
|
||||
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) ;
|
||||
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher);
|
||||
@@ -36,12 +35,12 @@ namespace epics { namespace pvData {
|
||||
virtual bool operator==(PVField *pv) ;
|
||||
virtual bool operator!=(PVField *pv) ;
|
||||
private:
|
||||
epicsInt32 *value;
|
||||
int32 *value;
|
||||
};
|
||||
|
||||
BasePVIntArray::BasePVIntArray(PVStructure *parent,
|
||||
ScalarArrayConstPtr scalarArray)
|
||||
: PVIntArray(parent,scalarArray),value(new epicsInt32[0])
|
||||
: PVIntArray(parent,scalarArray),value(new int32[0])
|
||||
{ }
|
||||
|
||||
BasePVIntArray::~BasePVIntArray()
|
||||
@@ -59,7 +58,7 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
int length = PVArray::getLength();
|
||||
if(length>capacity) length = capacity;
|
||||
epicsInt32 *newValue = new epicsInt32[capacity];
|
||||
int32 *newValue = new int32[capacity];
|
||||
for(int i=0; i<length; i++) newValue[i] = value[i];
|
||||
delete[]value;
|
||||
value = newValue;
|
||||
@@ -109,7 +108,7 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
|
||||
void BasePVIntArray::shareData(
|
||||
epicsInt32 shareValue[],int capacity,int length)
|
||||
int32 shareValue[],int capacity,int length)
|
||||
{
|
||||
delete[] value;
|
||||
value = shareValue;
|
||||
|
||||
@@ -18,8 +18,8 @@ namespace epics { namespace pvData {
|
||||
public:
|
||||
BasePVLong(PVStructure *parent,ScalarConstPtr scalar);
|
||||
virtual ~BasePVLong();
|
||||
virtual epicsInt64 get();
|
||||
virtual void put(epicsInt64 val);
|
||||
virtual int64 get();
|
||||
virtual void put(int64 val);
|
||||
virtual void serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher) ;
|
||||
virtual void deserialize(ByteBuffer *pbuffer,
|
||||
@@ -29,7 +29,7 @@ namespace epics { namespace pvData {
|
||||
virtual bool operator==(PVField *pv) ;
|
||||
virtual bool operator!=(PVField *pv) ;
|
||||
private:
|
||||
epicsInt64 value;
|
||||
int64 value;
|
||||
};
|
||||
|
||||
BasePVLong::BasePVLong(PVStructure *parent,ScalarConstPtr scalar)
|
||||
@@ -38,9 +38,9 @@ namespace epics { namespace pvData {
|
||||
|
||||
BasePVLong::~BasePVLong() {}
|
||||
|
||||
epicsInt64 BasePVLong::get() { return value;}
|
||||
int64 BasePVLong::get() { return value;}
|
||||
|
||||
void BasePVLong::put(epicsInt64 val){value = val;}
|
||||
void BasePVLong::put(int64 val){value = val;}
|
||||
|
||||
void BasePVLong::serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher)
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <epicsTypes.h>
|
||||
#include "pvData.h"
|
||||
#include "factory.h"
|
||||
#include "AbstractPVScalarArray.h"
|
||||
@@ -25,7 +24,7 @@ namespace epics { namespace pvData {
|
||||
virtual int get(int offset, int length, LongArrayData *data) ;
|
||||
virtual int put(int offset,int length,LongArray from,
|
||||
int fromOffset);
|
||||
virtual void shareData(epicsInt64 value[],int capacity,int length);
|
||||
virtual void shareData(int64 value[],int capacity,int length);
|
||||
// from Serializable
|
||||
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) ;
|
||||
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher);
|
||||
@@ -36,12 +35,12 @@ namespace epics { namespace pvData {
|
||||
virtual bool operator==(PVField *pv) ;
|
||||
virtual bool operator!=(PVField *pv) ;
|
||||
private:
|
||||
epicsInt64 *value;
|
||||
int64 *value;
|
||||
};
|
||||
|
||||
BasePVLongArray::BasePVLongArray(PVStructure *parent,
|
||||
ScalarArrayConstPtr scalarArray)
|
||||
: PVLongArray(parent,scalarArray),value(new epicsInt64[0])
|
||||
: PVLongArray(parent,scalarArray),value(new int64[0])
|
||||
{ }
|
||||
|
||||
BasePVLongArray::~BasePVLongArray()
|
||||
@@ -59,7 +58,7 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
int length = PVArray::getLength();
|
||||
if(length>capacity) length = capacity;
|
||||
epicsInt64 *newValue = new epicsInt64[capacity];
|
||||
int64 *newValue = new int64[capacity];
|
||||
for(int i=0; i<length; i++) newValue[i] = value[i];
|
||||
delete[]value;
|
||||
value = newValue;
|
||||
@@ -109,7 +108,7 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
|
||||
void BasePVLongArray::shareData(
|
||||
epicsInt64 shareValue[],int capacity,int length)
|
||||
int64 shareValue[],int capacity,int length)
|
||||
{
|
||||
delete[] value;
|
||||
value = shareValue;
|
||||
|
||||
@@ -18,8 +18,8 @@ namespace epics { namespace pvData {
|
||||
public:
|
||||
BasePVShort(PVStructure *parent,ScalarConstPtr scalar);
|
||||
virtual ~BasePVShort();
|
||||
virtual epicsInt16 get();
|
||||
virtual void put(epicsInt16 val);
|
||||
virtual int16 get();
|
||||
virtual void put(int16 val);
|
||||
virtual void serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher) ;
|
||||
virtual void deserialize(ByteBuffer *pbuffer,
|
||||
@@ -29,7 +29,7 @@ namespace epics { namespace pvData {
|
||||
virtual bool operator==(PVField *pv) ;
|
||||
virtual bool operator!=(PVField *pv) ;
|
||||
private:
|
||||
epicsInt16 value;
|
||||
int16 value;
|
||||
};
|
||||
|
||||
BasePVShort::BasePVShort(PVStructure *parent,ScalarConstPtr scalar)
|
||||
@@ -38,9 +38,9 @@ namespace epics { namespace pvData {
|
||||
|
||||
BasePVShort::~BasePVShort() {}
|
||||
|
||||
epicsInt16 BasePVShort::get() { return value;}
|
||||
int16 BasePVShort::get() { return value;}
|
||||
|
||||
void BasePVShort::put(epicsInt16 val){value = val;}
|
||||
void BasePVShort::put(int16 val){value = val;}
|
||||
|
||||
void BasePVShort::serialize(ByteBuffer *pbuffer,
|
||||
SerializableControl *pflusher)
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <epicsTypes.h>
|
||||
#include "pvData.h"
|
||||
#include "factory.h"
|
||||
#include "AbstractPVScalarArray.h"
|
||||
@@ -25,7 +24,7 @@ namespace epics { namespace pvData {
|
||||
virtual int get(int offset, int length, ShortArrayData *data) ;
|
||||
virtual int put(int offset,int length,ShortArray from,
|
||||
int fromOffset);
|
||||
virtual void shareData(epicsInt16 value[],int capacity,int length);
|
||||
virtual void shareData(int16 value[],int capacity,int length);
|
||||
// from Serializable
|
||||
virtual void serialize(ByteBuffer *pbuffer,SerializableControl *pflusher) ;
|
||||
virtual void deserialize(ByteBuffer *pbuffer,DeserializableControl *pflusher);
|
||||
@@ -36,12 +35,12 @@ namespace epics { namespace pvData {
|
||||
virtual bool operator==(PVField *pv) ;
|
||||
virtual bool operator!=(PVField *pv) ;
|
||||
private:
|
||||
epicsInt16 *value;
|
||||
int16 *value;
|
||||
};
|
||||
|
||||
BasePVShortArray::BasePVShortArray(PVStructure *parent,
|
||||
ScalarArrayConstPtr scalarArray)
|
||||
: PVShortArray(parent,scalarArray),value(new epicsInt16[0])
|
||||
: PVShortArray(parent,scalarArray),value(new int16[0])
|
||||
{ }
|
||||
|
||||
BasePVShortArray::~BasePVShortArray()
|
||||
@@ -59,7 +58,7 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
int length = PVArray::getLength();
|
||||
if(length>capacity) length = capacity;
|
||||
epicsInt16 *newValue = new epicsInt16[capacity];
|
||||
int16 *newValue = new int16[capacity];
|
||||
for(int i=0; i<length; i++) newValue[i] = value[i];
|
||||
delete[]value;
|
||||
value = newValue;
|
||||
@@ -109,7 +108,7 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
|
||||
void BasePVShortArray::shareData(
|
||||
epicsInt16 shareValue[],int capacity,int length)
|
||||
int16 shareValue[],int capacity,int length)
|
||||
{
|
||||
delete[] value;
|
||||
value = shareValue;
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <epicsTypes.h>
|
||||
#include "pvData.h"
|
||||
#include "factory.h"
|
||||
#include "AbstractPVScalarArray.h"
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <stdexcept>
|
||||
#include <epicsTypes.h>
|
||||
#include "lock.h"
|
||||
#include "pvIntrospect.h"
|
||||
#include "pvData.h"
|
||||
@@ -21,21 +20,21 @@ static String illegalScalarType("Illegal ScalarType");
|
||||
|
||||
static bool convertEquals(PVField *a,PVField *b);
|
||||
static int convertFromByteArray(PVScalarArray *pv, int offset,
|
||||
int len,epicsInt8 from[], int fromOffset);
|
||||
int len,int8 from[], int fromOffset);
|
||||
static int convertToByteArray(PVScalarArray *pv, int offset,
|
||||
int len,epicsInt8 to[], int toOffset);
|
||||
int len,int8 to[], int toOffset);
|
||||
static int convertFromShortArray(PVScalarArray *pv, int offset,
|
||||
int len,epicsInt16 from[], int fromOffset);
|
||||
int len,int16 from[], int fromOffset);
|
||||
static int convertToShortArray(PVScalarArray *pv, int offset,
|
||||
int len,epicsInt16 to[], int toOffset);
|
||||
int len,int16 to[], int toOffset);
|
||||
static int convertFromIntArray(PVScalarArray *pv, int offset,
|
||||
int len,epicsInt32 from[], int fromOffset);
|
||||
int len,int32 from[], int fromOffset);
|
||||
static int convertToIntArray(PVScalarArray *pv, int offset,
|
||||
int len,epicsInt32 to[], int toOffset);
|
||||
int len,int32 to[], int toOffset);
|
||||
static int convertFromLongArray(PVScalarArray *pv, int offset,
|
||||
int len,epicsInt64 from[], int fromOffset);
|
||||
int len,int64 from[], int fromOffset);
|
||||
static int convertToLongArray(PVScalarArray * pv, int offset,
|
||||
int len,epicsInt64 to[], int toOffset);
|
||||
int len,int64 to[], int toOffset);
|
||||
static int convertFromFloatArray(PVScalarArray *pv, int offset,
|
||||
int len,float from[], int fromOffset);
|
||||
static int convertToFloatArray(PVScalarArray * pv, int offset,
|
||||
@@ -133,7 +132,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
|
||||
PVByte *pv = (PVByte*)pvScalar;
|
||||
int ival;
|
||||
sscanf(from.c_str(),"%d",&ival);
|
||||
epicsInt8 value = ival;
|
||||
int8 value = ival;
|
||||
pv->put(value);
|
||||
break;
|
||||
}
|
||||
@@ -141,7 +140,7 @@ void Convert::fromString(PVScalar *pvScalar, String from)
|
||||
PVShort *pv = (PVShort*)pvScalar;
|
||||
int ival;
|
||||
sscanf(from.c_str(),"%d",&ival);
|
||||
epicsInt16 value = ival;
|
||||
int16 value = ival;
|
||||
pv->put(value);
|
||||
break;
|
||||
}
|
||||
@@ -149,15 +148,15 @@ void Convert::fromString(PVScalar *pvScalar, String from)
|
||||
PVInt *pv = (PVInt*)pvScalar;
|
||||
int ival;
|
||||
sscanf(from.c_str(),"%d",&ival);
|
||||
epicsInt32 value = ival;
|
||||
int32 value = ival;
|
||||
pv->put(value);
|
||||
break;
|
||||
}
|
||||
case pvLong : {
|
||||
PVLong *pv = (PVLong*)pvScalar;
|
||||
epicsInt64 ival;
|
||||
int64 ival;
|
||||
sscanf(from.c_str(),"%lld",&ival);
|
||||
epicsInt64 value = ival;
|
||||
int64 value = ival;
|
||||
pv->put(value);
|
||||
break;
|
||||
}
|
||||
@@ -305,7 +304,7 @@ void Convert::copyScalar(PVScalar *from, PVScalar *to)
|
||||
}
|
||||
case pvByte : {
|
||||
PVByte *data = (PVByte*)from;
|
||||
epicsInt8 value = data->get();
|
||||
int8 value = data->get();
|
||||
convert->fromByte(to,value);
|
||||
break;
|
||||
}
|
||||
@@ -602,7 +601,7 @@ void Convert::copyStructureArray(
|
||||
to->postPut();
|
||||
}
|
||||
|
||||
epicsInt8 Convert::toByte(PVScalar * pv)
|
||||
int8 Convert::toByte(PVScalar * pv)
|
||||
{
|
||||
ScalarConstPtr scalar = pv->getScalar();
|
||||
ScalarType scalarType = scalar->getScalarType();
|
||||
@@ -639,7 +638,7 @@ epicsInt8 Convert::toByte(PVScalar * pv)
|
||||
throw std::logic_error(logicError);
|
||||
}
|
||||
|
||||
epicsInt16 Convert::toShort(PVScalar * pv)
|
||||
int16 Convert::toShort(PVScalar * pv)
|
||||
{
|
||||
ScalarConstPtr scalar = pv->getScalar();
|
||||
ScalarType scalarType = scalar->getScalarType();
|
||||
@@ -676,7 +675,7 @@ epicsInt16 Convert::toShort(PVScalar * pv)
|
||||
throw std::logic_error(logicError);
|
||||
}
|
||||
|
||||
epicsInt32 Convert::toInt(PVScalar * pv)
|
||||
int32 Convert::toInt(PVScalar * pv)
|
||||
{
|
||||
ScalarConstPtr scalar = pv->getScalar();
|
||||
ScalarType scalarType = scalar->getScalarType();
|
||||
@@ -713,7 +712,7 @@ epicsInt32 Convert::toInt(PVScalar * pv)
|
||||
throw std::logic_error(logicError);
|
||||
}
|
||||
|
||||
epicsInt64 Convert::toLong(PVScalar * pv)
|
||||
int64 Convert::toLong(PVScalar * pv)
|
||||
{
|
||||
ScalarConstPtr scalar = pv->getScalar();
|
||||
ScalarType scalarType = scalar->getScalarType();
|
||||
@@ -824,7 +823,7 @@ double Convert::toDouble(PVScalar * pv)
|
||||
throw std::logic_error(logicError);
|
||||
}
|
||||
|
||||
void Convert::fromByte(PVScalar *pv,epicsInt8 from)
|
||||
void Convert::fromByte(PVScalar *pv,int8 from)
|
||||
{
|
||||
ScalarConstPtr scalar = pv->getScalar();
|
||||
ScalarType scalarType = scalar->getScalarType();
|
||||
@@ -868,7 +867,7 @@ void Convert::fromByte(PVScalar *pv,epicsInt8 from)
|
||||
throw std::logic_error(logicError);
|
||||
}
|
||||
|
||||
void Convert::fromShort(PVScalar *pv,epicsInt16 from)
|
||||
void Convert::fromShort(PVScalar *pv,int16 from)
|
||||
{
|
||||
ScalarConstPtr scalar = pv->getScalar();
|
||||
ScalarType scalarType = scalar->getScalarType();
|
||||
@@ -912,7 +911,7 @@ void Convert::fromShort(PVScalar *pv,epicsInt16 from)
|
||||
throw std::logic_error(logicError);
|
||||
}
|
||||
|
||||
void Convert::fromInt(PVScalar *pv, epicsInt32 from)
|
||||
void Convert::fromInt(PVScalar *pv, int32 from)
|
||||
{
|
||||
ScalarConstPtr scalar = pv->getScalar();
|
||||
ScalarType scalarType = scalar->getScalarType();
|
||||
@@ -956,7 +955,7 @@ void Convert::fromInt(PVScalar *pv, epicsInt32 from)
|
||||
throw std::logic_error(logicError);
|
||||
}
|
||||
|
||||
void Convert::fromLong(PVScalar *pv, epicsInt64 from)
|
||||
void Convert::fromLong(PVScalar *pv, int64 from)
|
||||
{
|
||||
ScalarConstPtr scalar = pv->getScalar();
|
||||
ScalarType scalarType = scalar->getScalarType();
|
||||
@@ -990,7 +989,7 @@ void Convert::fromLong(PVScalar *pv, epicsInt64 from)
|
||||
case pvString: {
|
||||
PVString *value = (PVString *)pv;
|
||||
char buffer[20];
|
||||
epicsInt64 ival = from;
|
||||
int64 ival = from;
|
||||
sprintf(buffer,"%lld",ival);
|
||||
String xxx(buffer);
|
||||
value->put(xxx);
|
||||
@@ -1089,25 +1088,25 @@ void Convert::fromDouble(PVScalar *pv, double from)
|
||||
}
|
||||
|
||||
int Convert::toByteArray(PVScalarArray * pv, int offset, int length,
|
||||
epicsInt8 to[], int toOffset)
|
||||
int8 to[], int toOffset)
|
||||
{
|
||||
return convertToByteArray(pv, offset, length, to, toOffset);
|
||||
}
|
||||
|
||||
int Convert::toShortArray(PVScalarArray * pv, int offset, int length,
|
||||
epicsInt16 to[], int toOffset)
|
||||
int16 to[], int toOffset)
|
||||
{
|
||||
return convertToShortArray(pv, offset, length, to, toOffset);
|
||||
}
|
||||
|
||||
int Convert::toIntArray(PVScalarArray * pv, int offset, int length,
|
||||
epicsInt32 to[], int toOffset)
|
||||
int32 to[], int toOffset)
|
||||
{
|
||||
return convertToIntArray(pv, offset, length, to, toOffset);
|
||||
}
|
||||
|
||||
int Convert::toLongArray(PVScalarArray * pv, int offset, int length,
|
||||
epicsInt64 to[], int toOffset)
|
||||
int64 to[], int toOffset)
|
||||
{
|
||||
return convertToLongArray(pv, offset, length, to, toOffset);
|
||||
}
|
||||
@@ -1125,25 +1124,25 @@ int Convert::toDoubleArray(PVScalarArray * pv, int offset, int length,
|
||||
}
|
||||
|
||||
int Convert::fromByteArray(PVScalarArray *pv, int offset, int length,
|
||||
epicsInt8 from[], int fromOffset)
|
||||
int8 from[], int fromOffset)
|
||||
{
|
||||
return convertFromByteArray(pv, offset, length, from, fromOffset);
|
||||
}
|
||||
|
||||
int Convert::fromShortArray(PVScalarArray *pv, int offset, int length,
|
||||
epicsInt16 from[], int fromOffset)
|
||||
int16 from[], int fromOffset)
|
||||
{
|
||||
return convertFromShortArray(pv, offset, length, from, fromOffset);
|
||||
}
|
||||
|
||||
int Convert::fromIntArray(PVScalarArray *pv, int offset, int length,
|
||||
epicsInt32 from[], int fromOffset)
|
||||
int32 from[], int fromOffset)
|
||||
{
|
||||
return convertFromIntArray(pv, offset, length, from, fromOffset);
|
||||
}
|
||||
|
||||
int Convert::fromLongArray(PVScalarArray *pv, int offset, int length,
|
||||
epicsInt64 from[], int fromOffset)
|
||||
int64 from[], int fromOffset)
|
||||
{
|
||||
return convertFromLongArray(pv, offset, length, from, fromOffset);
|
||||
}
|
||||
@@ -1182,29 +1181,29 @@ static bool scalarEquals(PVScalar *a,PVScalar *b)
|
||||
case pvByte: {
|
||||
PVByte *pa = (PVByte *)a;
|
||||
PVByte *pb = (PVByte *)b;
|
||||
epicsInt8 avalue = pa->get();
|
||||
epicsInt8 bvalue = pb->get();
|
||||
int8 avalue = pa->get();
|
||||
int8 bvalue = pb->get();
|
||||
return ((avalue==bvalue) ? true : false);
|
||||
}
|
||||
case pvShort: {
|
||||
PVShort *pa = (PVShort *)a;
|
||||
PVShort *pb = (PVShort *)b;
|
||||
epicsInt16 avalue = pa->get();
|
||||
epicsInt16 bvalue = pb->get();
|
||||
int16 avalue = pa->get();
|
||||
int16 bvalue = pb->get();
|
||||
return ((avalue==bvalue) ? true : false);
|
||||
}
|
||||
case pvInt: {
|
||||
PVInt *pa = (PVInt *)a;
|
||||
PVInt *pb = (PVInt *)b;
|
||||
epicsInt32 avalue = pa->get();
|
||||
epicsInt32 bvalue = pb->get();
|
||||
int32 avalue = pa->get();
|
||||
int32 bvalue = pb->get();
|
||||
return ((avalue==bvalue) ? true : false);
|
||||
}
|
||||
case pvLong: {
|
||||
PVLong *pa = (PVLong *)a;
|
||||
PVLong *pb = (PVLong *)b;
|
||||
epicsInt64 avalue = pa->get();
|
||||
epicsInt64 bvalue = pb->get();
|
||||
int64 avalue = pa->get();
|
||||
int64 bvalue = pb->get();
|
||||
return ((avalue==bvalue) ? true : false);
|
||||
}
|
||||
case pvFloat: {
|
||||
@@ -1420,7 +1419,7 @@ bool convertEquals(PVField *a,PVField *b)
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
|
||||
int convertFromByteArray(PVScalarArray *pv, int offset, int len,epicsInt8 from[], int fromOffset)
|
||||
int convertFromByteArray(PVScalarArray *pv, int offset, int len,int8 from[], int fromOffset)
|
||||
{
|
||||
ScalarType elemType = pv->getScalarArray()->getElementType();
|
||||
int ntransfered = 0;
|
||||
@@ -1444,9 +1443,9 @@ int convertFromByteArray(PVScalarArray *pv, int offset, int len,epicsInt8 from[]
|
||||
}
|
||||
case pvShort: {
|
||||
PVShortArray *pvdata = (PVShortArray*) pv;
|
||||
epicsInt16 data[1];
|
||||
int16 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt16) from[fromOffset];
|
||||
data[0] = (int16) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -1458,9 +1457,9 @@ int convertFromByteArray(PVScalarArray *pv, int offset, int len,epicsInt8 from[]
|
||||
}
|
||||
case pvInt: {
|
||||
PVIntArray *pvdata = (PVIntArray*) pv;
|
||||
epicsInt32 data[1];
|
||||
int32 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt32) from[fromOffset];
|
||||
data[0] = (int32) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -1472,9 +1471,9 @@ int convertFromByteArray(PVScalarArray *pv, int offset, int len,epicsInt8 from[]
|
||||
}
|
||||
case pvLong: {
|
||||
PVLongArray *pvdata = (PVLongArray*) pv;
|
||||
epicsInt64 data[1];
|
||||
int64 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt64) from[fromOffset];
|
||||
data[0] = (int64) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -1521,7 +1520,7 @@ int convertFromByteArray(PVScalarArray *pv, int offset, int len,epicsInt8 from[]
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
|
||||
int convertToByteArray(PVScalarArray * pv, int offset, int len,epicsInt8 to[], int toOffset)
|
||||
int convertToByteArray(PVScalarArray * pv, int offset, int len,int8 to[], int toOffset)
|
||||
{
|
||||
ScalarType elemType = pv->getScalarArray()->getElementType();
|
||||
int ntransfered = 0;
|
||||
@@ -1556,7 +1555,7 @@ int convertToByteArray(PVScalarArray * pv, int offset, int len,epicsInt8 to[], i
|
||||
ShortArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1573,7 +1572,7 @@ int convertToByteArray(PVScalarArray * pv, int offset, int len,epicsInt8 to[], i
|
||||
IntArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1591,7 +1590,7 @@ int convertToByteArray(PVScalarArray * pv, int offset, int len,epicsInt8 to[], i
|
||||
LongArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1608,7 +1607,7 @@ int convertToByteArray(PVScalarArray * pv, int offset, int len,epicsInt8 to[], i
|
||||
FloatArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1626,7 +1625,7 @@ int convertToByteArray(PVScalarArray * pv, int offset, int len,epicsInt8 to[], i
|
||||
DoubleArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1643,7 +1642,7 @@ int convertToByteArray(PVScalarArray * pv, int offset, int len,epicsInt8 to[], i
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
|
||||
int convertFromShortArray(PVScalarArray *pv, int offset, int len,epicsInt16 from[], int fromOffset)
|
||||
int convertFromShortArray(PVScalarArray *pv, int offset, int len,int16 from[], int fromOffset)
|
||||
{
|
||||
ScalarType elemType = pv->getScalarArray()->getElementType();
|
||||
int ntransfered = 0;
|
||||
@@ -1654,9 +1653,9 @@ int convertFromShortArray(PVScalarArray *pv, int offset, int len,epicsInt16 from
|
||||
}
|
||||
case pvByte: {
|
||||
PVByteArray *pvdata = (PVByteArray*) pv;
|
||||
epicsInt8 data[1];
|
||||
int8 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt8) from[fromOffset];
|
||||
data[0] = (int8) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -1681,9 +1680,9 @@ int convertFromShortArray(PVScalarArray *pv, int offset, int len,epicsInt16 from
|
||||
}
|
||||
case pvInt: {
|
||||
PVIntArray *pvdata = (PVIntArray*) pv;
|
||||
epicsInt32 data[1];
|
||||
int32 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt32) from[fromOffset];
|
||||
data[0] = (int32) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -1695,9 +1694,9 @@ int convertFromShortArray(PVScalarArray *pv, int offset, int len,epicsInt16 from
|
||||
}
|
||||
case pvLong: {
|
||||
PVLongArray *pvdata = (PVLongArray*) pv;
|
||||
epicsInt64 data[1];
|
||||
int64 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt64) from[fromOffset];
|
||||
data[0] = (int64) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -1744,7 +1743,7 @@ int convertFromShortArray(PVScalarArray *pv, int offset, int len,epicsInt16 from
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
|
||||
int convertToShortArray(PVScalarArray * pv, int offset, int len,epicsInt16 to[], int toOffset)
|
||||
int convertToShortArray(PVScalarArray * pv, int offset, int len,int16 to[], int toOffset)
|
||||
{
|
||||
ScalarType elemType = pv->getScalarArray()->getElementType();
|
||||
int ntransfered = 0;
|
||||
@@ -1779,7 +1778,7 @@ int convertToShortArray(PVScalarArray * pv, int offset, int len,epicsInt16 to[],
|
||||
ShortArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1796,7 +1795,7 @@ int convertToShortArray(PVScalarArray * pv, int offset, int len,epicsInt16 to[],
|
||||
IntArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1814,7 +1813,7 @@ int convertToShortArray(PVScalarArray * pv, int offset, int len,epicsInt16 to[],
|
||||
LongArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1831,7 +1830,7 @@ int convertToShortArray(PVScalarArray * pv, int offset, int len,epicsInt16 to[],
|
||||
FloatArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1849,7 +1848,7 @@ int convertToShortArray(PVScalarArray * pv, int offset, int len,epicsInt16 to[],
|
||||
DoubleArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -1866,7 +1865,7 @@ int convertToShortArray(PVScalarArray * pv, int offset, int len,epicsInt16 to[],
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
|
||||
int convertFromIntArray(PVScalarArray *pv, int offset, int len,epicsInt32 from[], int fromOffset)
|
||||
int convertFromIntArray(PVScalarArray *pv, int offset, int len,int32 from[], int fromOffset)
|
||||
{
|
||||
ScalarType elemType = pv->getScalarArray()->getElementType();
|
||||
int ntransfered = 0;
|
||||
@@ -1877,9 +1876,9 @@ int convertFromIntArray(PVScalarArray *pv, int offset, int len,epicsInt32 from[]
|
||||
}
|
||||
case pvByte: {
|
||||
PVByteArray *pvdata = (PVByteArray*) pv;
|
||||
epicsInt8 data[1];
|
||||
int8 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt8) from[fromOffset];
|
||||
data[0] = (int8) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -1891,9 +1890,9 @@ int convertFromIntArray(PVScalarArray *pv, int offset, int len,epicsInt32 from[]
|
||||
}
|
||||
case pvShort: {
|
||||
PVShortArray *pvdata = (PVShortArray*) pv;
|
||||
epicsInt16 data[1];
|
||||
int16 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt16) from[fromOffset];
|
||||
data[0] = (int16) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -1918,9 +1917,9 @@ int convertFromIntArray(PVScalarArray *pv, int offset, int len,epicsInt32 from[]
|
||||
}
|
||||
case pvLong: {
|
||||
PVLongArray *pvdata = (PVLongArray*) pv;
|
||||
epicsInt64 data[1];
|
||||
int64 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt64) from[fromOffset];
|
||||
data[0] = (int64) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -1967,7 +1966,7 @@ int convertFromIntArray(PVScalarArray *pv, int offset, int len,epicsInt32 from[]
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
|
||||
int convertToIntArray(PVScalarArray * pv, int offset, int len,epicsInt32 to[], int toOffset)
|
||||
int convertToIntArray(PVScalarArray * pv, int offset, int len,int32 to[], int toOffset)
|
||||
{
|
||||
ScalarType elemType = pv->getScalarArray()->getElementType();
|
||||
int ntransfered = 0;
|
||||
@@ -2002,7 +2001,7 @@ int convertToIntArray(PVScalarArray * pv, int offset, int len,epicsInt32 to[], i
|
||||
ShortArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2019,7 +2018,7 @@ int convertToIntArray(PVScalarArray * pv, int offset, int len,epicsInt32 to[], i
|
||||
IntArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2037,7 +2036,7 @@ int convertToIntArray(PVScalarArray * pv, int offset, int len,epicsInt32 to[], i
|
||||
LongArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2054,7 +2053,7 @@ int convertToIntArray(PVScalarArray * pv, int offset, int len,epicsInt32 to[], i
|
||||
FloatArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2072,7 +2071,7 @@ int convertToIntArray(PVScalarArray * pv, int offset, int len,epicsInt32 to[], i
|
||||
DoubleArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2089,7 +2088,7 @@ int convertToIntArray(PVScalarArray * pv, int offset, int len,epicsInt32 to[], i
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
|
||||
int convertFromLongArray(PVScalarArray *pv, int offset, int len,epicsInt64 from[], int fromOffset)
|
||||
int convertFromLongArray(PVScalarArray *pv, int offset, int len,int64 from[], int fromOffset)
|
||||
{
|
||||
ScalarType elemType = pv->getScalarArray()->getElementType();
|
||||
int ntransfered = 0;
|
||||
@@ -2100,9 +2099,9 @@ int convertFromLongArray(PVScalarArray *pv, int offset, int len,epicsInt64 from[
|
||||
}
|
||||
case pvByte: {
|
||||
PVByteArray *pvdata = (PVByteArray*) pv;
|
||||
epicsInt8 data[1];
|
||||
int8 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt8) from[fromOffset];
|
||||
data[0] = (int8) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2114,9 +2113,9 @@ int convertFromLongArray(PVScalarArray *pv, int offset, int len,epicsInt64 from[
|
||||
}
|
||||
case pvShort: {
|
||||
PVShortArray *pvdata = (PVShortArray*) pv;
|
||||
epicsInt16 data[1];
|
||||
int16 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt16) from[fromOffset];
|
||||
data[0] = (int16) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2128,9 +2127,9 @@ int convertFromLongArray(PVScalarArray *pv, int offset, int len,epicsInt64 from[
|
||||
}
|
||||
case pvInt: {
|
||||
PVIntArray *pvdata = (PVIntArray*) pv;
|
||||
epicsInt32 data[1];
|
||||
int32 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt32) from[fromOffset];
|
||||
data[0] = (int32) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2190,7 +2189,7 @@ int convertFromLongArray(PVScalarArray *pv, int offset, int len,epicsInt64 from[
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
|
||||
int convertToLongArray(PVScalarArray * pv, int offset, int len,epicsInt64 to[], int toOffset)
|
||||
int convertToLongArray(PVScalarArray * pv, int offset, int len,int64 to[], int toOffset)
|
||||
{
|
||||
ScalarType elemType = pv->getScalarArray()->getElementType();
|
||||
int ntransfered = 0;
|
||||
@@ -2225,7 +2224,7 @@ int convertToLongArray(PVScalarArray * pv, int offset, int len,epicsInt64 to[],
|
||||
ShortArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2242,7 +2241,7 @@ int convertToLongArray(PVScalarArray * pv, int offset, int len,epicsInt64 to[],
|
||||
IntArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2260,7 +2259,7 @@ int convertToLongArray(PVScalarArray * pv, int offset, int len,epicsInt64 to[],
|
||||
LongArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2277,7 +2276,7 @@ int convertToLongArray(PVScalarArray * pv, int offset, int len,epicsInt64 to[],
|
||||
FloatArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2295,7 +2294,7 @@ int convertToLongArray(PVScalarArray * pv, int offset, int len,epicsInt64 to[],
|
||||
DoubleArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2323,9 +2322,9 @@ int convertFromFloatArray(PVScalarArray *pv, int offset, int len,float from[], i
|
||||
}
|
||||
case pvByte: {
|
||||
PVByteArray *pvdata = (PVByteArray*) pv;
|
||||
epicsInt8 data[1];
|
||||
int8 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt8) from[fromOffset];
|
||||
data[0] = (int8) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2337,9 +2336,9 @@ int convertFromFloatArray(PVScalarArray *pv, int offset, int len,float from[], i
|
||||
}
|
||||
case pvShort: {
|
||||
PVShortArray *pvdata = (PVShortArray*) pv;
|
||||
epicsInt16 data[1];
|
||||
int16 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt16) from[fromOffset];
|
||||
data[0] = (int16) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2351,9 +2350,9 @@ int convertFromFloatArray(PVScalarArray *pv, int offset, int len,float from[], i
|
||||
}
|
||||
case pvInt: {
|
||||
PVIntArray *pvdata = (PVIntArray*) pv;
|
||||
epicsInt32 data[1];
|
||||
int32 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt32) from[fromOffset];
|
||||
data[0] = (int32) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2365,9 +2364,9 @@ int convertFromFloatArray(PVScalarArray *pv, int offset, int len,float from[], i
|
||||
}
|
||||
case pvLong: {
|
||||
PVLongArray *pvdata = (PVLongArray*) pv;
|
||||
epicsInt64 data[1];
|
||||
int64 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt64) from[fromOffset];
|
||||
data[0] = (int64) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2448,7 +2447,7 @@ int convertToFloatArray(PVScalarArray * pv, int offset, int len,float to[], int
|
||||
ShortArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2465,7 +2464,7 @@ int convertToFloatArray(PVScalarArray * pv, int offset, int len,float to[], int
|
||||
IntArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2483,7 +2482,7 @@ int convertToFloatArray(PVScalarArray * pv, int offset, int len,float to[], int
|
||||
LongArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2500,7 +2499,7 @@ int convertToFloatArray(PVScalarArray * pv, int offset, int len,float to[], int
|
||||
FloatArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2518,7 +2517,7 @@ int convertToFloatArray(PVScalarArray * pv, int offset, int len,float to[], int
|
||||
DoubleArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2546,9 +2545,9 @@ int convertFromDoubleArray(PVScalarArray *pv, int offset, int len,double from[],
|
||||
}
|
||||
case pvByte: {
|
||||
PVByteArray *pvdata = (PVByteArray*) pv;
|
||||
epicsInt8 data[1];
|
||||
int8 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt8) from[fromOffset];
|
||||
data[0] = (int8) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2560,9 +2559,9 @@ int convertFromDoubleArray(PVScalarArray *pv, int offset, int len,double from[],
|
||||
}
|
||||
case pvShort: {
|
||||
PVShortArray *pvdata = (PVShortArray*) pv;
|
||||
epicsInt16 data[1];
|
||||
int16 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt16) from[fromOffset];
|
||||
data[0] = (int16) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2574,9 +2573,9 @@ int convertFromDoubleArray(PVScalarArray *pv, int offset, int len,double from[],
|
||||
}
|
||||
case pvInt: {
|
||||
PVIntArray *pvdata = (PVIntArray*) pv;
|
||||
epicsInt32 data[1];
|
||||
int32 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt32) from[fromOffset];
|
||||
data[0] = (int32) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2588,9 +2587,9 @@ int convertFromDoubleArray(PVScalarArray *pv, int offset, int len,double from[],
|
||||
}
|
||||
case pvLong: {
|
||||
PVLongArray *pvdata = (PVLongArray*) pv;
|
||||
epicsInt64 data[1];
|
||||
int64 data[1];
|
||||
while (len > 0) {
|
||||
data[0] = (epicsInt64) from[fromOffset];
|
||||
data[0] = (int64) from[fromOffset];
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
return ntransfered;
|
||||
--len;
|
||||
@@ -2671,7 +2670,7 @@ int convertToDoubleArray(PVScalarArray * pv, int offset, int len,double to[], in
|
||||
ShortArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2688,7 +2687,7 @@ int convertToDoubleArray(PVScalarArray * pv, int offset, int len,double to[], in
|
||||
IntArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2706,7 +2705,7 @@ int convertToDoubleArray(PVScalarArray * pv, int offset, int len,double to[], in
|
||||
LongArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2723,7 +2722,7 @@ int convertToDoubleArray(PVScalarArray * pv, int offset, int len,double to[], in
|
||||
FloatArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2741,7 +2740,7 @@ int convertToDoubleArray(PVScalarArray * pv, int offset, int len,double to[], in
|
||||
DoubleArray dataArray = data.data;
|
||||
int dataOffset = data.offset;
|
||||
for (int i = 0; i < num; i++)
|
||||
to[i + toOffset] = (epicsInt8) dataArray[i + dataOffset];
|
||||
to[i + toOffset] = (int8) dataArray[i + dataOffset];
|
||||
len -= num;
|
||||
offset += num;
|
||||
toOffset += num;
|
||||
@@ -2780,7 +2779,7 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
|
||||
}
|
||||
case pvByte: {
|
||||
PVByteArray *pvdata = (PVByteArray*) pv;
|
||||
epicsInt8 data[1];
|
||||
int8 data[1];
|
||||
while (len > 0) {
|
||||
String fromString = from[fromOffset];
|
||||
int ival;
|
||||
@@ -2797,7 +2796,7 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
|
||||
}
|
||||
case pvShort: {
|
||||
PVShortArray *pvdata = (PVShortArray*) pv;
|
||||
epicsInt16 data[1];
|
||||
int16 data[1];
|
||||
while (len > 0) {
|
||||
String fromString = from[fromOffset];
|
||||
int ival;
|
||||
@@ -2814,7 +2813,7 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
|
||||
}
|
||||
case pvInt: {
|
||||
PVIntArray *pvdata = (PVIntArray*) pv;
|
||||
epicsInt32 data[1];
|
||||
int32 data[1];
|
||||
while (len > 0) {
|
||||
String fromString = from[fromOffset];
|
||||
int ival;
|
||||
@@ -2831,10 +2830,10 @@ int convertFromStringArray(PVScalarArray *pv, int offset, int len,String from[],
|
||||
}
|
||||
case pvLong: {
|
||||
PVLongArray *pvdata = (PVLongArray*) pv;
|
||||
epicsInt64 data[1];
|
||||
int64 data[1];
|
||||
while (len > 0) {
|
||||
String fromString = from[fromOffset];
|
||||
epicsInt64 ival;
|
||||
int64 ival;
|
||||
sscanf(fromString.c_str(),"%lld",&ival);
|
||||
data[0] = ival;
|
||||
if (pvdata->put(offset, 1, data, 0) == 0)
|
||||
@@ -2973,7 +2972,7 @@ 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;
|
||||
epicsInt64 ival = dataArray[data.offset];
|
||||
int64 ival = dataArray[data.offset];
|
||||
sprintf(cr,"%lld",ival);
|
||||
to[toOffset + i] = String(cr);
|
||||
} else {
|
||||
@@ -3092,7 +3091,7 @@ void convertToString(StringBuilder buffer,PVField * pv,int indentLevel)
|
||||
case pvLong: {
|
||||
PVLong *data = (PVLong*)pv;
|
||||
char xxx[30];
|
||||
sprintf(xxx,"%lld",(epicsInt64)data->get());
|
||||
sprintf(xxx,"%lld",(int64)data->get());
|
||||
*buffer += xxx;
|
||||
}
|
||||
return;
|
||||
@@ -3233,7 +3232,7 @@ void convertArray(StringBuilder buffer,PVScalarArray * pv,int indentLevel)
|
||||
if(i!=0) *buffer += ',';
|
||||
int num = pvdata->get(i,1,&data);
|
||||
if(num==1) {
|
||||
epicsInt64 val = data.data[data.offset];
|
||||
int64 val = data.data[data.offset];
|
||||
char buf[16];
|
||||
sprintf(buf,"%lld",val);
|
||||
*buffer += buf;
|
||||
|
||||
@@ -16,133 +16,132 @@ namespace epics { namespace pvData {
|
||||
for(int i=0; i<indentLevel; i++) *buffer += " ";
|
||||
}
|
||||
|
||||
Field::~Field(){}
|
||||
|
||||
class BaseField : public Field {
|
||||
public:
|
||||
BaseField(String fieldName,Type type);
|
||||
virtual ~BaseField();
|
||||
virtual void decReferenceCount() const;
|
||||
virtual void incReferenceCount() const {referenceCount++;}
|
||||
virtual int getReferenceCount() const {return referenceCount;}
|
||||
virtual String getFieldName() const {return fieldName;}
|
||||
virtual Type getType() const {return type;}
|
||||
virtual void toString(StringBuilder buf) const {return toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
class FieldPvt {
|
||||
public :
|
||||
FieldPvt(String fieldName,Type type);
|
||||
String fieldName;
|
||||
Type type;
|
||||
mutable volatile int referenceCount;
|
||||
};
|
||||
|
||||
BaseField::BaseField(String fieldName,Type type)
|
||||
:fieldName(fieldName),type(type), referenceCount(0){}
|
||||
FieldPvt::FieldPvt(String fieldName,Type type)
|
||||
: fieldName(fieldName),type(type),referenceCount(0) { }
|
||||
|
||||
BaseField::~BaseField() {
|
||||
// note that c++ automatically calls destructor for fieldName
|
||||
if(debugLevel==highDebug) printf("~BaseField %s\n",fieldName.c_str());
|
||||
static volatile int totalReferenceCount = 0;
|
||||
static volatile int64 totalConstruct = 0;
|
||||
static volatile int64 totalDestruct = 0;
|
||||
static Mutex *globalMutex;
|
||||
|
||||
int Field::getTotalReferenceCount()
|
||||
{
|
||||
Lock xx(globalMutex);
|
||||
return totalReferenceCount;
|
||||
}
|
||||
|
||||
void BaseField::decReferenceCount() const {
|
||||
if(referenceCount<=0) {
|
||||
int64 Field::getTotalConstruct()
|
||||
{
|
||||
Lock xx(globalMutex);
|
||||
return totalConstruct;
|
||||
}
|
||||
|
||||
int64 Field::getTotalDestruct()
|
||||
{
|
||||
Lock xx(globalMutex);
|
||||
return totalDestruct;
|
||||
}
|
||||
|
||||
Field::Field(String fieldName,Type type)
|
||||
: pImpl(new FieldPvt(fieldName,type))
|
||||
{
|
||||
Lock xx(globalMutex);
|
||||
totalConstruct++;
|
||||
}
|
||||
|
||||
Field::~Field() {
|
||||
Lock xx(globalMutex);
|
||||
totalDestruct++;
|
||||
// note that compiler automatically calls destructor for fieldName
|
||||
delete pImpl;
|
||||
if(debugLevel==highDebug) printf("~Field %s\n",pImpl->fieldName.c_str());
|
||||
}
|
||||
|
||||
int Field::getReferenceCount() const {
|
||||
Lock xx(globalMutex);
|
||||
return pImpl->referenceCount;
|
||||
}
|
||||
String Field::getFieldName() const {return pImpl->fieldName;}
|
||||
Type Field::getType() const {return pImpl->type;}
|
||||
|
||||
void Field::incReferenceCount() const {
|
||||
Lock xx(globalMutex);
|
||||
pImpl->referenceCount++;
|
||||
totalReferenceCount++;
|
||||
}
|
||||
|
||||
void Field::decReferenceCount() const {
|
||||
Lock xx(globalMutex);
|
||||
if(pImpl->referenceCount<=0) {
|
||||
String message("logicError field ");
|
||||
message += fieldName;
|
||||
message += pImpl->fieldName;
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
referenceCount--;
|
||||
if(referenceCount==0) delete this;
|
||||
pImpl->referenceCount--;
|
||||
totalReferenceCount--;
|
||||
if(pImpl->referenceCount==0) delete this;
|
||||
}
|
||||
|
||||
|
||||
void BaseField::toString(StringBuilder buffer,int indentLevel) const{
|
||||
void Field::toString(StringBuilder buffer,int indentLevel) const{
|
||||
*buffer += " ";
|
||||
*buffer += fieldName.c_str();
|
||||
*buffer += pImpl->fieldName.c_str();
|
||||
}
|
||||
|
||||
Scalar::Scalar(String fieldName,ScalarType scalarType)
|
||||
: Field(fieldName,scalar),scalarType(scalarType){}
|
||||
|
||||
Scalar::~Scalar(){}
|
||||
|
||||
class BaseScalar: private BaseField,public Scalar {
|
||||
public:
|
||||
BaseScalar(String fieldName,ScalarType scalarType);
|
||||
virtual ~BaseScalar();
|
||||
virtual void incReferenceCount() const {BaseField::incReferenceCount();}
|
||||
virtual void decReferenceCount() const {BaseField::decReferenceCount();}
|
||||
virtual int getReferenceCount() const {return BaseField::getReferenceCount();}
|
||||
virtual String getFieldName() const{ return BaseField::getFieldName(); }
|
||||
virtual Type getType() const{return BaseField::getType();}
|
||||
virtual ScalarType getScalarType() const { return scalarType;}
|
||||
virtual void toString(StringBuilder buf) const {toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
ScalarType scalarType;
|
||||
};
|
||||
|
||||
BaseScalar::BaseScalar(String fieldName,ScalarType scalarType)
|
||||
: BaseField(fieldName,scalar),scalarType(scalarType){}
|
||||
BaseScalar::~BaseScalar() {}
|
||||
|
||||
|
||||
void BaseScalar::toString(StringBuilder buffer,int indentLevel) const{
|
||||
void Scalar::toString(StringBuilder buffer,int indentLevel) const{
|
||||
ScalarTypeFunc::toString(buffer,scalarType);
|
||||
BaseField::toString(buffer,indentLevel);
|
||||
Field::toString(buffer,indentLevel);
|
||||
}
|
||||
|
||||
ScalarArray::~ScalarArray(){}
|
||||
|
||||
class BaseScalarArray: private BaseField,public ScalarArray {
|
||||
public:
|
||||
BaseScalarArray(String fieldName,ScalarType elementType);
|
||||
virtual ~BaseScalarArray();
|
||||
virtual void incReferenceCount() const {BaseField::incReferenceCount();}
|
||||
virtual void decReferenceCount() const {BaseField::decReferenceCount();}
|
||||
virtual int getReferenceCount() const {return BaseField::getReferenceCount();}
|
||||
virtual String getFieldName() const{ return BaseField::getFieldName(); }
|
||||
virtual Type getType() const{return BaseField::getType();}
|
||||
virtual ScalarType getElementType() const { return elementType;}
|
||||
virtual void toString(StringBuilder buf) const {toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
ScalarType elementType;
|
||||
};
|
||||
|
||||
BaseScalarArray::BaseScalarArray
|
||||
ScalarArray::ScalarArray
|
||||
(String fieldName,ScalarType elementType)
|
||||
: BaseField(fieldName,scalarArray),elementType(elementType){}
|
||||
BaseScalarArray::~BaseScalarArray() {}
|
||||
: Field(fieldName,scalarArray),elementType(elementType){}
|
||||
ScalarArray::~ScalarArray() {}
|
||||
|
||||
|
||||
void BaseScalarArray::toString(StringBuilder buffer,int indentLevel) const{
|
||||
void ScalarArray::toString(StringBuilder buffer,int indentLevel) const{
|
||||
String temp = String();
|
||||
ScalarTypeFunc::toString(&temp,elementType);
|
||||
temp += "Array";
|
||||
*buffer += temp;
|
||||
BaseField::toString(buffer,indentLevel);
|
||||
Field::toString(buffer,indentLevel);
|
||||
}
|
||||
|
||||
Structure::~Structure(){}
|
||||
StructureArray::StructureArray(String fieldName,StructureConstPtr structure)
|
||||
: Field(fieldName,structureArray),pstructure(structure)
|
||||
{
|
||||
pstructure->incReferenceCount();
|
||||
}
|
||||
|
||||
class BaseStructure: private BaseField,public Structure {
|
||||
public:
|
||||
BaseStructure(String fieldName, int numberFields,FieldConstPtrArray fields);
|
||||
virtual ~BaseStructure();
|
||||
virtual void incReferenceCount() const {BaseField::incReferenceCount();}
|
||||
virtual void decReferenceCount() const {BaseField::decReferenceCount();}
|
||||
virtual int getReferenceCount() const {return BaseField::getReferenceCount();}
|
||||
virtual String getFieldName() const{ return BaseField::getFieldName(); }
|
||||
virtual Type getType() const{return BaseField::getType();}
|
||||
virtual int const getNumberFields() const {return numberFields;}
|
||||
virtual FieldConstPtr getField(String fieldName) const;
|
||||
virtual int getFieldIndex(String fieldName) const;
|
||||
virtual FieldConstPtrArray getFields() const { return fields;}
|
||||
virtual void toString(StringBuilder buf) const {toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
int numberFields;
|
||||
FieldConstPtrArray fields;
|
||||
};
|
||||
StructureArray::~StructureArray() {
|
||||
if(debugLevel==highDebug) printf("~StructureArray\n");
|
||||
pstructure->decReferenceCount();
|
||||
}
|
||||
|
||||
BaseStructure::BaseStructure (String fieldName,
|
||||
void StructureArray::toString(StringBuilder buffer,int indentLevel) const {
|
||||
*buffer += " structureArray ";
|
||||
Field::toString(buffer,indentLevel);
|
||||
newLine(buffer,indentLevel + 1);
|
||||
pstructure->toString(buffer,indentLevel + 1);
|
||||
}
|
||||
|
||||
|
||||
Structure::Structure (String fieldName,
|
||||
int numberFields, FieldConstPtrArray infields)
|
||||
: BaseField(fieldName,structure),
|
||||
: Field(fieldName,structure),
|
||||
numberFields(numberFields),
|
||||
fields(new FieldConstPtr[numberFields])
|
||||
{
|
||||
@@ -165,9 +164,10 @@ namespace epics { namespace pvData {
|
||||
fields[i]->incReferenceCount();
|
||||
}
|
||||
}
|
||||
BaseStructure::~BaseStructure() {
|
||||
|
||||
Structure::~Structure() {
|
||||
if(debugLevel==highDebug)
|
||||
printf("~BaseStructure %s\n",BaseField::getFieldName().c_str());
|
||||
printf("~Structure %s\n",Field::getFieldName().c_str());
|
||||
for(int i=0; i<numberFields; i++) {
|
||||
FieldConstPtr pfield = fields[i];
|
||||
pfield->decReferenceCount();
|
||||
@@ -175,7 +175,7 @@ namespace epics { namespace pvData {
|
||||
delete[] fields;
|
||||
}
|
||||
|
||||
FieldConstPtr BaseStructure::getField(String fieldName) const {
|
||||
FieldConstPtr Structure::getField(String fieldName) const {
|
||||
for(int i=0; i<numberFields; i++) {
|
||||
FieldConstPtr pfield = fields[i];
|
||||
int result = fieldName.compare(pfield->getFieldName());
|
||||
@@ -184,7 +184,7 @@ namespace epics { namespace pvData {
|
||||
return 0;
|
||||
}
|
||||
|
||||
int BaseStructure::getFieldIndex(String fieldName) const {
|
||||
int Structure::getFieldIndex(String fieldName) const {
|
||||
for(int i=0; i<numberFields; i++) {
|
||||
FieldConstPtr pfield = fields[i];
|
||||
int result = fieldName.compare(pfield->getFieldName());
|
||||
@@ -193,9 +193,9 @@ namespace epics { namespace pvData {
|
||||
return -1;
|
||||
}
|
||||
|
||||
void BaseStructure::toString(StringBuilder buffer,int indentLevel) const{
|
||||
void Structure::toString(StringBuilder buffer,int indentLevel) const{
|
||||
*buffer += "structure";
|
||||
BaseField::toString(buffer,indentLevel);
|
||||
Field::toString(buffer,indentLevel);
|
||||
newLine(buffer,indentLevel+1);
|
||||
for(int i=0; i<numberFields; i++) {
|
||||
FieldConstPtr pfield = fields[i];
|
||||
@@ -204,73 +204,33 @@ namespace epics { namespace pvData {
|
||||
}
|
||||
}
|
||||
|
||||
StructureArray::~StructureArray(){}
|
||||
|
||||
class BaseStructureArray: private BaseField,public StructureArray {
|
||||
public:
|
||||
BaseStructureArray(String fieldName,StructureConstPtr structure);
|
||||
virtual ~BaseStructureArray();
|
||||
virtual void incReferenceCount() const {BaseField::incReferenceCount();}
|
||||
virtual void decReferenceCount() const {BaseField::decReferenceCount();}
|
||||
virtual int getReferenceCount() const {return BaseField::getReferenceCount();}
|
||||
virtual String getFieldName() const{
|
||||
return BaseField::getFieldName();
|
||||
}
|
||||
virtual Type getType() const{return BaseField::getType();}
|
||||
virtual StructureConstPtr getStructure() const { return pstructure; }
|
||||
virtual void toString(StringBuilder buf) const {toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
StructureConstPtr pstructure;
|
||||
};
|
||||
|
||||
BaseStructureArray::BaseStructureArray(String fieldName,StructureConstPtr structure)
|
||||
: BaseField(fieldName,structureArray),pstructure(structure)
|
||||
{
|
||||
pstructure->incReferenceCount();
|
||||
}
|
||||
|
||||
BaseStructureArray::~BaseStructureArray() {
|
||||
if(debugLevel==highDebug) printf("~BaseStructureArray\n");
|
||||
pstructure->decReferenceCount();
|
||||
}
|
||||
|
||||
|
||||
void BaseStructureArray::toString(StringBuilder buffer,int indentLevel) const {
|
||||
*buffer += " structureArray ";
|
||||
BaseField::toString(buffer,indentLevel);
|
||||
newLine(buffer,indentLevel + 1);
|
||||
pstructure->toString(buffer,indentLevel + 1);
|
||||
}
|
||||
|
||||
FieldCreate::FieldCreate(){};
|
||||
|
||||
ScalarConstPtr FieldCreate::createScalar(String fieldName,
|
||||
ScalarType scalarType) const
|
||||
{
|
||||
BaseScalar *baseScalar = new BaseScalar(fieldName,scalarType);
|
||||
return baseScalar;
|
||||
Scalar *scalar = new Scalar(fieldName,scalarType);
|
||||
return scalar;
|
||||
}
|
||||
|
||||
ScalarArrayConstPtr FieldCreate::createScalarArray(
|
||||
String fieldName,ScalarType elementType) const
|
||||
{
|
||||
BaseScalarArray *baseScalarArray = new BaseScalarArray(fieldName,elementType);
|
||||
return baseScalarArray;
|
||||
ScalarArray *scalarArray = new ScalarArray(fieldName,elementType);
|
||||
return scalarArray;
|
||||
}
|
||||
StructureConstPtr FieldCreate::createStructure (
|
||||
String fieldName,int numberFields,
|
||||
FieldConstPtr fields[]) const
|
||||
{
|
||||
BaseStructure *baseStructure = new BaseStructure(
|
||||
Structure *structure = new Structure(
|
||||
fieldName,numberFields,fields);
|
||||
return baseStructure;
|
||||
return structure;
|
||||
}
|
||||
StructureArrayConstPtr FieldCreate::createStructureArray(
|
||||
String fieldName,StructureConstPtr structure) const
|
||||
{
|
||||
BaseStructureArray *baseStructureArray = new BaseStructureArray(fieldName,structure);
|
||||
return baseStructureArray;
|
||||
StructureArray *structureArray = new StructureArray(fieldName,structure);
|
||||
return structureArray;
|
||||
}
|
||||
|
||||
FieldConstPtr FieldCreate::create(String fieldName,
|
||||
@@ -300,20 +260,19 @@ namespace epics { namespace pvData {
|
||||
throw std::logic_error(message);
|
||||
}
|
||||
|
||||
static FieldCreate* instance = 0;
|
||||
static FieldCreate* fieldCreate = 0;
|
||||
|
||||
|
||||
class FieldCreateExt : public FieldCreate {
|
||||
public:
|
||||
FieldCreateExt(): FieldCreate(){};
|
||||
};
|
||||
FieldCreate::FieldCreate()
|
||||
{
|
||||
globalMutex = new Mutex();
|
||||
}
|
||||
|
||||
FieldCreate * getFieldCreate() {
|
||||
static Mutex mutex = Mutex();
|
||||
Lock xx(&mutex);
|
||||
|
||||
if(instance==0) instance = new FieldCreateExt();
|
||||
return instance;
|
||||
if(fieldCreate==0) fieldCreate = new FieldCreate();
|
||||
return fieldCreate;
|
||||
}
|
||||
|
||||
}}
|
||||
|
||||
@@ -38,7 +38,9 @@ static Convert* convert = 0;
|
||||
static FieldCreate * fieldCreate = 0;
|
||||
static PVDataCreate* pvDataCreate = 0;
|
||||
|
||||
PVDataCreate::PVDataCreate(){}
|
||||
PVDataCreate::PVDataCreate(){
|
||||
PVField::init();
|
||||
}
|
||||
|
||||
PVField *PVDataCreate::createPVField(PVStructure *parent,
|
||||
FieldConstPtr field)
|
||||
@@ -222,18 +224,12 @@ PVStructure *PVDataCreate::createPVStructure(PVStructure *parent,
|
||||
return pvStructure;
|
||||
}
|
||||
|
||||
|
||||
class PVDataCreateExt : public PVDataCreate {
|
||||
public:
|
||||
PVDataCreateExt(): PVDataCreate(){}
|
||||
};
|
||||
|
||||
PVDataCreate * getPVDataCreate() {
|
||||
static Mutex mutex = Mutex();
|
||||
Lock xx(&mutex);
|
||||
|
||||
if(pvDataCreate==0){
|
||||
pvDataCreate = new PVDataCreateExt();
|
||||
pvDataCreate = new PVDataCreate();
|
||||
convert = getConvert();
|
||||
fieldCreate = getFieldCreate();
|
||||
}
|
||||
|
||||
@@ -178,22 +178,6 @@ static void createEnumeratedAlarm() {
|
||||
enumeratedAlarmField = fieldCreate->createStructure(String("valueAlarm"),numFields,fields);
|
||||
}
|
||||
|
||||
static void createPreAllocated() {
|
||||
createAlarm();
|
||||
createTimeStamp();
|
||||
createDisplay();
|
||||
createControl();
|
||||
createBooleanAlarm();
|
||||
createByteAlarm();
|
||||
createShortAlarm();
|
||||
createIntAlarm();
|
||||
createLongAlarm();
|
||||
createFloatAlarm();
|
||||
createDoubleAlarm();
|
||||
createEnumeratedAlarm();
|
||||
}
|
||||
|
||||
|
||||
static StructureConstPtr createProperties(String fieldName,FieldConstPtr field,String properties) {
|
||||
bool gotAlarm = false;
|
||||
bool gotTimeStamp = false;
|
||||
@@ -265,10 +249,6 @@ static StructureConstPtr createProperties(String fieldName,FieldConstPtr field,S
|
||||
}
|
||||
|
||||
|
||||
StandardField::StandardField(){}
|
||||
|
||||
StandardField::~StandardField(){}
|
||||
|
||||
ScalarConstPtr StandardField::scalar(String fieldName,ScalarType type)
|
||||
{
|
||||
return fieldCreate->createScalar(fieldName,type);
|
||||
@@ -452,21 +432,47 @@ StructureConstPtr StandardField::enumeratedAlarm()
|
||||
return enumeratedAlarmField;
|
||||
}
|
||||
|
||||
void StandardField::init()
|
||||
{
|
||||
createAlarm();
|
||||
alarmField->incReferenceCount();
|
||||
createTimeStamp();
|
||||
timeStampField->incReferenceCount();
|
||||
createDisplay();
|
||||
displayField->incReferenceCount();
|
||||
createControl();
|
||||
controlField->incReferenceCount();
|
||||
createBooleanAlarm();
|
||||
booleanAlarmField->incReferenceCount();
|
||||
createByteAlarm();
|
||||
byteAlarmField->incReferenceCount();
|
||||
createShortAlarm();
|
||||
shortAlarmField->incReferenceCount();
|
||||
createIntAlarm();
|
||||
intAlarmField->incReferenceCount();
|
||||
createLongAlarm();
|
||||
longAlarmField->incReferenceCount();
|
||||
createFloatAlarm();
|
||||
floatAlarmField->incReferenceCount();
|
||||
createDoubleAlarm();
|
||||
doubleAlarmField->incReferenceCount();
|
||||
createEnumeratedAlarm();
|
||||
enumeratedAlarmField->incReferenceCount();
|
||||
}
|
||||
|
||||
|
||||
class StandardFieldExt : public StandardField {
|
||||
public:
|
||||
StandardFieldExt(): StandardField(){};
|
||||
};
|
||||
StandardField::StandardField(){init();}
|
||||
|
||||
StandardField::~StandardField(){}
|
||||
|
||||
|
||||
StandardField * getStandardField() {
|
||||
static Mutex mutex = Mutex();
|
||||
Lock xx(&mutex);
|
||||
|
||||
if(standardField==0) {
|
||||
standardField = new StandardFieldExt();
|
||||
standardField = new StandardField();
|
||||
fieldCreate = getFieldCreate();
|
||||
createPreAllocated();
|
||||
}
|
||||
return standardField;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
#include <epicsTypes.h>
|
||||
|
||||
#include "pvIntrospect.h"
|
||||
|
||||
|
||||
@@ -38,16 +38,16 @@ namespace epics { namespace pvData {
|
||||
StructureArrayConstPtr from, StructureArrayConstPtr to);
|
||||
void copyStructureArray(
|
||||
PVStructureArray *from, PVStructureArray *to);
|
||||
epicsInt8 toByte(PVScalar *pv);
|
||||
epicsInt16 toShort(PVScalar *pv);
|
||||
epicsInt32 toInt(PVScalar *pv);
|
||||
epicsInt64 toLong(PVScalar *pv);
|
||||
int8 toByte(PVScalar *pv);
|
||||
int16 toShort(PVScalar *pv);
|
||||
int32 toInt(PVScalar *pv);
|
||||
int64 toLong(PVScalar *pv);
|
||||
float toFloat(PVScalar *pv);
|
||||
double toDouble(PVScalar *pv);
|
||||
void fromByte(PVScalar *pv,epicsInt8 from);
|
||||
void fromShort(PVScalar *pv,epicsInt16 from);
|
||||
void fromInt(PVScalar *pv, epicsInt32 from);
|
||||
void fromLong(PVScalar *pv, epicsInt64 from);
|
||||
void fromByte(PVScalar *pv,int8 from);
|
||||
void fromShort(PVScalar *pv,int16 from);
|
||||
void fromInt(PVScalar *pv, int32 from);
|
||||
void fromLong(PVScalar *pv, int64 from);
|
||||
void fromFloat(PVScalar* pv, float from);
|
||||
void fromDouble(PVScalar *pv, double from);
|
||||
int toByteArray(PVScalarArray *pv, int offset, int length,
|
||||
|
||||
@@ -65,6 +65,8 @@ namespace epics { namespace pvData {
|
||||
class PVField : public Requester, public Serializable ,private NoDefaultMethods{
|
||||
public:
|
||||
virtual ~PVField();
|
||||
static int64 getTotalConstruct();
|
||||
static int64 getTotalDestruct();
|
||||
String getRequesterName() ;
|
||||
virtual void message(String message,MessageType messageType) ;
|
||||
virtual void setRequester(Requester *prequester);
|
||||
@@ -91,6 +93,8 @@ namespace epics { namespace pvData {
|
||||
class PVFieldPvt *pImpl;
|
||||
static void computeOffset(PVField *pvField);
|
||||
static void computeOffset(PVField *pvField,int offset);
|
||||
static void init();
|
||||
friend class PVDataCreate;
|
||||
};
|
||||
|
||||
class PVScalar : public PVField {
|
||||
@@ -239,8 +243,8 @@ namespace epics { namespace pvData {
|
||||
class PVByte : public PVScalar {
|
||||
public:
|
||||
virtual ~PVByte();
|
||||
virtual epicsInt8 get() = 0;
|
||||
virtual void put(epicsInt8 value) = 0;
|
||||
virtual int8 get() = 0;
|
||||
virtual void put(int8 value) = 0;
|
||||
protected:
|
||||
PVByte(PVStructure *parent,ScalarConstPtr scalar)
|
||||
: PVScalar(parent,scalar) {}
|
||||
@@ -250,8 +254,8 @@ namespace epics { namespace pvData {
|
||||
class PVShort : public PVScalar {
|
||||
public:
|
||||
virtual ~PVShort();
|
||||
virtual epicsInt16 get() = 0;
|
||||
virtual void put(epicsInt16 value) = 0;
|
||||
virtual int16 get() = 0;
|
||||
virtual void put(int16 value) = 0;
|
||||
protected:
|
||||
PVShort(PVStructure *parent,ScalarConstPtr scalar)
|
||||
: PVScalar(parent,scalar) {}
|
||||
@@ -261,8 +265,8 @@ namespace epics { namespace pvData {
|
||||
class PVInt : public PVScalar{
|
||||
public:
|
||||
virtual ~PVInt();
|
||||
virtual epicsInt32 get() = 0;
|
||||
virtual void put(epicsInt32 value) = 0;
|
||||
virtual int32 get() = 0;
|
||||
virtual void put(int32 value) = 0;
|
||||
protected:
|
||||
PVInt(PVStructure *parent,ScalarConstPtr scalar)
|
||||
: PVScalar(parent,scalar) {}
|
||||
@@ -272,8 +276,8 @@ namespace epics { namespace pvData {
|
||||
class PVLong : public PVScalar {
|
||||
public:
|
||||
virtual ~PVLong();
|
||||
virtual epicsInt64 get() = 0;
|
||||
virtual void put(epicsInt64 value) = 0;
|
||||
virtual int64 get() = 0;
|
||||
virtual void put(int64 value) = 0;
|
||||
protected:
|
||||
PVLong(PVStructure *parent,ScalarConstPtr scalar)
|
||||
: PVScalar(parent,scalar) {}
|
||||
@@ -338,7 +342,7 @@ namespace epics { namespace pvData {
|
||||
};
|
||||
|
||||
|
||||
typedef epicsInt8 * ByteArray;
|
||||
typedef int8 * ByteArray;
|
||||
class ByteArrayData {
|
||||
public:
|
||||
ByteArray data;
|
||||
@@ -362,7 +366,7 @@ namespace epics { namespace pvData {
|
||||
};
|
||||
|
||||
|
||||
typedef epicsInt16 * ShortArray;
|
||||
typedef int16 * ShortArray;
|
||||
class ShortArrayData {
|
||||
public:
|
||||
ShortArray data;
|
||||
@@ -385,7 +389,7 @@ namespace epics { namespace pvData {
|
||||
private:
|
||||
};
|
||||
|
||||
typedef epicsInt32 * IntArray;
|
||||
typedef int32 * IntArray;
|
||||
class IntArrayData {
|
||||
public:
|
||||
IntArray data;
|
||||
@@ -409,7 +413,7 @@ namespace epics { namespace pvData {
|
||||
};
|
||||
|
||||
|
||||
typedef epicsInt64 * LongArray;
|
||||
typedef int64 * LongArray;
|
||||
class LongArrayData {
|
||||
public:
|
||||
LongArray data;
|
||||
@@ -533,6 +537,7 @@ namespace epics { namespace pvData {
|
||||
String fieldName,PVStructure *structToClone);
|
||||
protected:
|
||||
PVDataCreate();
|
||||
friend PVDataCreate * getPVDataCreate();
|
||||
};
|
||||
|
||||
extern PVDataCreate * getPVDataCreate();
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
/* pvIntrospect.h */
|
||||
#include <string>
|
||||
#include <stdexcept>
|
||||
#include <epicsTypes.h>
|
||||
#ifndef PVINTROSPECT_H
|
||||
#define PVINTROSPECT_H
|
||||
#include "noDefaultMethods.h"
|
||||
namespace epics { namespace pvData {
|
||||
|
||||
typedef signed char int8;
|
||||
typedef short int16;
|
||||
typedef int int32;
|
||||
typedef long long int64;
|
||||
|
||||
class Field;
|
||||
class Scalar;
|
||||
class ScalarArray;
|
||||
@@ -58,48 +63,73 @@ namespace epics { namespace pvData {
|
||||
class Field : private NoDefaultMethods {
|
||||
public:
|
||||
virtual ~Field();
|
||||
virtual int getReferenceCount() const = 0;
|
||||
virtual String getFieldName() const = 0;
|
||||
virtual Type getType() const = 0;
|
||||
virtual void toString(StringBuilder buf) const = 0;
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const = 0;
|
||||
Field(String fieldName,Type type);
|
||||
static int getTotalReferenceCount();
|
||||
static int64 getTotalConstruct();
|
||||
static int64 getTotalDestruct();
|
||||
int getReferenceCount() const;
|
||||
String getFieldName() const;
|
||||
Type getType() const;
|
||||
virtual void toString(StringBuilder buf) const{toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
virtual void incReferenceCount() const = 0;
|
||||
virtual void decReferenceCount() const = 0;
|
||||
friend class BaseStructure;
|
||||
friend class BaseStructureArray;
|
||||
class FieldPvt *pImpl;
|
||||
void incReferenceCount() const;
|
||||
void decReferenceCount() const;
|
||||
friend class StructureArray;
|
||||
friend class Structure;
|
||||
friend class PVFieldPvt;
|
||||
friend class StandardField;
|
||||
};
|
||||
|
||||
|
||||
class Scalar : public Field{
|
||||
public:
|
||||
Scalar(String fieldName,ScalarType scalarType);
|
||||
virtual ~Scalar();
|
||||
virtual ScalarType getScalarType() const = 0;
|
||||
ScalarType getScalarType() const {return scalarType;}
|
||||
virtual void toString(StringBuilder buf) const{toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
ScalarType scalarType;
|
||||
};
|
||||
|
||||
class ScalarArray : public Field{
|
||||
public:
|
||||
ScalarArray(String fieldName,ScalarType scalarType);
|
||||
virtual ~ScalarArray();
|
||||
virtual ScalarType getElementType() const = 0;
|
||||
};
|
||||
|
||||
|
||||
class Structure : public Field {
|
||||
public:
|
||||
virtual ~Structure();
|
||||
virtual int const getNumberFields() const = 0;
|
||||
virtual FieldConstPtr getField(String fieldName) const = 0;
|
||||
virtual int getFieldIndex(String fieldName) const = 0;
|
||||
virtual FieldConstPtrArray getFields() const = 0;
|
||||
ScalarType getElementType() const {return elementType;}
|
||||
virtual void toString(StringBuilder buf) const{toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
ScalarType elementType;
|
||||
};
|
||||
|
||||
class StructureArray : public Field{
|
||||
public:
|
||||
StructureArray(String fieldName,StructureConstPtr structure);
|
||||
virtual ~StructureArray();
|
||||
virtual StructureConstPtr getStructure() const = 0;
|
||||
StructureConstPtr getStructure() const {return pstructure;}
|
||||
virtual void toString(StringBuilder buf) const{toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
StructureConstPtr pstructure;
|
||||
};
|
||||
|
||||
class Structure : public Field {
|
||||
public:
|
||||
Structure(String fieldName, int numberFields,FieldConstPtrArray fields);
|
||||
virtual ~Structure();
|
||||
int getNumberFields() const {return numberFields;}
|
||||
FieldConstPtr getField(String fieldName) const;
|
||||
int getFieldIndex(String fieldName) const;
|
||||
FieldConstPtrArray getFields() const {return fields;}
|
||||
virtual void toString(StringBuilder buf) const{toString(buf,0);}
|
||||
virtual void toString(StringBuilder buf,int indentLevel) const;
|
||||
private:
|
||||
int numberFields;
|
||||
FieldConstPtrArray fields;
|
||||
};
|
||||
|
||||
class FieldCreate {
|
||||
public:
|
||||
@@ -111,8 +141,9 @@ namespace epics { namespace pvData {
|
||||
int numberFields,FieldConstPtrArray fields) const;
|
||||
StructureArrayConstPtr createStructureArray(String fieldName,
|
||||
StructureConstPtr structure) const;
|
||||
protected:
|
||||
private:
|
||||
FieldCreate();
|
||||
friend FieldCreate * getFieldCreate();
|
||||
};
|
||||
|
||||
extern FieldCreate * getFieldCreate();
|
||||
|
||||
@@ -53,6 +53,8 @@ namespace epics { namespace pvData {
|
||||
StructureConstPtr floatAlarm();
|
||||
StructureConstPtr doubleAlarm();
|
||||
StructureConstPtr enumeratedAlarm();
|
||||
private:
|
||||
void init();
|
||||
};
|
||||
|
||||
extern StandardField * getStandardField();
|
||||
|
||||
@@ -2,6 +2,10 @@ TOP=../..
|
||||
|
||||
include $(TOP)/configure/CONFIG
|
||||
|
||||
PROD_HOST += testIntTypes
|
||||
testIntTypes_SRCS += testIntTypes.cpp
|
||||
testIntTypes_LIBS += pvFactory Com
|
||||
|
||||
PROD_HOST += testIntrospect
|
||||
testIntrospect_SRCS += testIntrospect.cpp
|
||||
testIntrospect_LIBS += pvFactory Com
|
||||
|
||||
65
pvDataApp/pvTest/testIntTypes.cpp
Normal file
65
pvDataApp/pvTest/testIntTypes.cpp
Normal file
@@ -0,0 +1,65 @@
|
||||
/* testIntrospect.cpp */
|
||||
/* Author: Marty Kraimer Date: 2010.09 */
|
||||
|
||||
#include <cstddef>
|
||||
#include <cstdlib>
|
||||
#include <cstddef>
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
|
||||
#include <epicsAssert.h>
|
||||
|
||||
#include "requester.h"
|
||||
#include "pvIntrospect.h"
|
||||
|
||||
using namespace epics::pvData;
|
||||
|
||||
int main(int argc,char *argv[])
|
||||
{
|
||||
char *fileName = 0;
|
||||
if(argc>1) fileName = argv[1];
|
||||
FILE * fd = stdout;
|
||||
if(fileName!=0 && fileName[0]!=0) {
|
||||
fd = fopen(fileName,"w+");
|
||||
}
|
||||
assert(sizeof(int8)==1);
|
||||
assert(sizeof(int16)==2);
|
||||
assert(sizeof(int32)==4);
|
||||
assert(sizeof(int64)==8);
|
||||
|
||||
int intValue;
|
||||
int8 byteInt;
|
||||
intValue = 0x7f;
|
||||
byteInt = intValue;
|
||||
fprintf(fd,"int8 max %d",(int)byteInt);
|
||||
intValue = 0x80;
|
||||
byteInt = intValue;
|
||||
fprintf(fd," min %d\n",(int)byteInt);
|
||||
|
||||
int16 shortInt;
|
||||
intValue = 0x7fff;
|
||||
shortInt = intValue;
|
||||
fprintf(fd,"int8 max %hd",shortInt);
|
||||
intValue = 0x8000;
|
||||
shortInt = intValue;
|
||||
fprintf(fd," min %hd\n",shortInt);
|
||||
|
||||
int32 intInt;
|
||||
intValue = 0x7fffffff;
|
||||
intInt = intValue;
|
||||
fprintf(fd,"int8 max %d",intInt);
|
||||
intValue = 0x80000000;
|
||||
intInt = intValue;
|
||||
fprintf(fd," min %d\n",intInt);
|
||||
|
||||
int64 longInt = 0x7fffffff;
|
||||
longInt <<= 32;
|
||||
longInt |= 0xffffffff;
|
||||
fprintf(fd,"int8 max %lld",longInt);
|
||||
longInt = intValue = 0x80000000;;
|
||||
longInt <<= 32;
|
||||
fprintf(fd," min %lld\n",longInt);
|
||||
|
||||
return(0);
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
/* testSimpleStructure.cpp */
|
||||
/* testIntrospect.cpp */
|
||||
/* Author: Marty Kraimer Date: 2010.09 */
|
||||
|
||||
#include <cstddef>
|
||||
@@ -11,31 +11,36 @@
|
||||
|
||||
#include "requester.h"
|
||||
#include "pvIntrospect.h"
|
||||
#include "pvData.h"
|
||||
#include "standardField.h"
|
||||
|
||||
using namespace epics::pvData;
|
||||
|
||||
static FieldCreate * fieldCreate = 0;
|
||||
static PVDataCreate * pvDataCreate = 0;
|
||||
static StandardField *standardField = 0;
|
||||
static String builder("");
|
||||
|
||||
static void testScalarCommon(FILE * fd,String fieldName,ScalarType stype,
|
||||
bool isInteger,bool isNumeric,bool isPrimitive)
|
||||
{
|
||||
ScalarConstPtr boolean = standardField->scalar(fieldName,stype);
|
||||
Type type = boolean->getType();
|
||||
ScalarConstPtr pscalar = standardField->scalar(fieldName,stype);
|
||||
Type type = pscalar->getType();
|
||||
assert(type==scalar);
|
||||
builder.clear();
|
||||
TypeFunc::toString(&builder,type);
|
||||
assert(builder.compare("scalar")==0);
|
||||
ScalarType scalarType = boolean->getScalarType();
|
||||
ScalarType scalarType = pscalar->getScalarType();
|
||||
assert(scalarType==stype);
|
||||
assert(ScalarTypeFunc::isInteger(scalarType)==isInteger);
|
||||
assert(ScalarTypeFunc::isNumeric(scalarType)==isNumeric);
|
||||
assert(ScalarTypeFunc::isPrimitive(scalarType)==isPrimitive);
|
||||
builder.clear();
|
||||
boolean->toString(&builder);
|
||||
pscalar->toString(&builder);
|
||||
fprintf(fd,"%s\n",builder.c_str());
|
||||
// create tempory PVField so that memory can be released
|
||||
PVField *pvField = pvDataCreate->createPVField(0,pscalar);
|
||||
delete pvField;
|
||||
}
|
||||
|
||||
static void testScalar(FILE * fd) {
|
||||
@@ -53,20 +58,23 @@ static void testScalar(FILE * fd) {
|
||||
static void testScalarArrayCommon(FILE * fd,String fieldName,ScalarType stype,
|
||||
bool isInteger,bool isNumeric,bool isPrimitive)
|
||||
{
|
||||
ScalarArrayConstPtr boolean = standardField->scalarArray(fieldName,stype);
|
||||
Type type = boolean->getType();
|
||||
ScalarArrayConstPtr pscalar = standardField->scalarArray(fieldName,stype);
|
||||
Type type = pscalar->getType();
|
||||
assert(type==scalarArray);
|
||||
builder.clear();
|
||||
TypeFunc::toString(&builder,type);
|
||||
assert(builder.compare("scalarArray")==0);
|
||||
ScalarType scalarType = boolean->getElementType();
|
||||
ScalarType scalarType = pscalar->getElementType();
|
||||
assert(scalarType==stype);
|
||||
assert(ScalarTypeFunc::isInteger(scalarType)==isInteger);
|
||||
assert(ScalarTypeFunc::isNumeric(scalarType)==isNumeric);
|
||||
assert(ScalarTypeFunc::isPrimitive(scalarType)==isPrimitive);
|
||||
builder.clear();
|
||||
boolean->toString(&builder);
|
||||
pscalar->toString(&builder);
|
||||
fprintf(fd,"%s\n",builder.c_str());
|
||||
// create tempory PVField so that memory can be released
|
||||
PVField *pvField = pvDataCreate->createPVField(0,pscalar);
|
||||
delete pvField;
|
||||
}
|
||||
|
||||
static void testScalarArray(FILE * fd) {
|
||||
@@ -88,6 +96,9 @@ static void testSimpleStructure(FILE * fd) {
|
||||
builder.clear();
|
||||
ptop->toString(&builder);
|
||||
fprintf(fd,"%s\n",builder.c_str());
|
||||
// create tempory PVField so that memory can be released
|
||||
PVField *pvField = pvDataCreate->createPVField(0,ptop);
|
||||
delete pvField;
|
||||
}
|
||||
|
||||
static StructureConstPtr createPowerSupply() {
|
||||
@@ -111,10 +122,14 @@ static void testStructureArray(FILE * fd) {
|
||||
builder.clear();
|
||||
top->toString(&builder);
|
||||
fprintf(fd,"%s\n",builder.c_str());
|
||||
// create tempory PVField so that memory can be released
|
||||
PVField *pvField = pvDataCreate->createPVField(0,top);
|
||||
delete pvField;
|
||||
}
|
||||
|
||||
int main(int argc,char *argv[])
|
||||
{
|
||||
int initialTotalReferences,finalTotalReferences;
|
||||
char *fileName = 0;
|
||||
if(argc>1) fileName = argv[1];
|
||||
FILE * fd = stdout;
|
||||
@@ -122,11 +137,36 @@ int main(int argc,char *argv[])
|
||||
fd = fopen(fileName,"w+");
|
||||
}
|
||||
fieldCreate = getFieldCreate();
|
||||
pvDataCreate = getPVDataCreate();
|
||||
standardField = getStandardField();
|
||||
initialTotalReferences = Field::getTotalReferenceCount();
|
||||
testScalar(fd);
|
||||
finalTotalReferences = Field::getTotalReferenceCount();
|
||||
assert(initialTotalReferences==finalTotalReferences);
|
||||
initialTotalReferences = Field::getTotalReferenceCount();
|
||||
testScalarArray(fd);
|
||||
finalTotalReferences = Field::getTotalReferenceCount();
|
||||
assert(initialTotalReferences==finalTotalReferences);
|
||||
initialTotalReferences = Field::getTotalReferenceCount();
|
||||
testSimpleStructure(fd);
|
||||
finalTotalReferences = Field::getTotalReferenceCount();
|
||||
assert(initialTotalReferences==finalTotalReferences);
|
||||
initialTotalReferences = Field::getTotalReferenceCount();
|
||||
testStructureArray(fd);
|
||||
finalTotalReferences = Field::getTotalReferenceCount();
|
||||
assert(initialTotalReferences==finalTotalReferences);
|
||||
initialTotalReferences = Field::getTotalReferenceCount();
|
||||
long long totalConstruct = Field::getTotalConstruct();
|
||||
long long totalDestruct = Field::getTotalDestruct();
|
||||
int totalReference = Field::getTotalReferenceCount();
|
||||
fprintf(fd,"Field: totalConstruct %lli totalDestruct %lli totalReferenceCount %i\n",
|
||||
totalConstruct,totalDestruct,totalReference);
|
||||
assert(totalConstruct==(totalDestruct+totalReference));
|
||||
totalConstruct = PVField::getTotalConstruct();
|
||||
totalDestruct = PVField::getTotalDestruct();
|
||||
fprintf(fd,"PVField: totalConstruct %lli totalDestruct %lli\n",
|
||||
totalConstruct,totalDestruct);
|
||||
assert(totalConstruct==totalDestruct);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#include <string>
|
||||
#include <cstdio>
|
||||
|
||||
#include <epicsAssert.h>
|
||||
|
||||
#include "requester.h"
|
||||
#include "pvIntrospect.h"
|
||||
#include "pvData.h"
|
||||
@@ -23,21 +25,41 @@ static String buffer("");
|
||||
|
||||
|
||||
void testSimpleStructure(FILE * fd) {
|
||||
int initialTotalReferences,finalTotalReferences;
|
||||
fprintf(fd,"\ntestSimpleStructure\n");
|
||||
String properties("alarm,timeStamp,display,control,valueAlarm");
|
||||
initialTotalReferences = Field::getTotalReferenceCount();
|
||||
PVStructure *ptop = standardPVField->scalar(
|
||||
0,String(""),pvDouble,properties);
|
||||
buffer.clear();
|
||||
ptop->toString(&buffer);
|
||||
fprintf(fd,"%s\n",buffer.c_str());
|
||||
finalTotalReferences = Field::getTotalReferenceCount();
|
||||
printf("before delete initialTotalReferences %d finalTotalReferences %d\n",
|
||||
initialTotalReferences,finalTotalReferences);
|
||||
delete ptop;
|
||||
finalTotalReferences = Field::getTotalReferenceCount();
|
||||
printf("after initialTotalReferences %d finalTotalReferences %d\n",
|
||||
initialTotalReferences,finalTotalReferences);
|
||||
assert(initialTotalReferences==finalTotalReferences);
|
||||
}
|
||||
|
||||
void testPowerSupply(FILE * fd) {
|
||||
int initialTotalReferences,finalTotalReferences;
|
||||
fprintf(fd,"\ntestPowerSupply\n");
|
||||
initialTotalReferences = Field::getTotalReferenceCount();
|
||||
PVStructure *ptop = standardPVField->powerSupply(0);
|
||||
buffer.clear();
|
||||
ptop->toString(&buffer);
|
||||
fprintf(fd,"%s\n",buffer.c_str());
|
||||
finalTotalReferences = Field::getTotalReferenceCount();
|
||||
printf("before delete initialTotalReferences %d finalTotalReferences %d\n",
|
||||
initialTotalReferences,finalTotalReferences);
|
||||
delete ptop;
|
||||
finalTotalReferences = Field::getTotalReferenceCount();
|
||||
printf("after initialTotalReferences %d finalTotalReferences %d\n",
|
||||
initialTotalReferences,finalTotalReferences);
|
||||
assert(initialTotalReferences==finalTotalReferences);
|
||||
}
|
||||
|
||||
int main(int argc,char *argv[])
|
||||
@@ -54,6 +76,17 @@ int main(int argc,char *argv[])
|
||||
standardPVField = getStandardPVField();
|
||||
testSimpleStructure(fd);
|
||||
testPowerSupply(fd);
|
||||
long long totalConstruct = Field::getTotalConstruct();
|
||||
long long totalDestruct = Field::getTotalDestruct();
|
||||
int totalReference = Field::getTotalReferenceCount();
|
||||
printf("Field: totalConstruct %lli totalDestruct %lli totalReferenceCount %i\n",
|
||||
totalConstruct,totalDestruct,totalReference);
|
||||
assert(totalConstruct==(totalDestruct+totalReference));
|
||||
totalConstruct = PVField::getTotalConstruct();
|
||||
totalDestruct = PVField::getTotalDestruct();
|
||||
printf("PVField: totalConstruct %lli totalDestruct %lli\n",
|
||||
totalConstruct,totalDestruct);
|
||||
assert(totalConstruct==totalDestruct);
|
||||
return(0);
|
||||
}
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ void testByte() {
|
||||
printf("\ntestByte\n");
|
||||
PVScalar *pvScalar = getStandardPVField()->scalarValue(0,pvByte);
|
||||
PVByte *pvValue = (PVByte *)pvScalar;
|
||||
epicsInt8 value = 2;
|
||||
int8 value = 2;
|
||||
pvValue->put(value);
|
||||
int getValue = pvValue->get();
|
||||
printf("put %d get %d\n",value,getValue);
|
||||
@@ -108,7 +108,7 @@ void testShort() {
|
||||
printf("\ntestShort\n");
|
||||
PVScalar *pvScalar = getStandardPVField()->scalarValue(0,pvShort);
|
||||
PVShort *pvValue = (PVShort *)pvScalar;
|
||||
epicsInt16 value = 2;
|
||||
int16 value = 2;
|
||||
pvValue->put(value);
|
||||
int getValue = pvValue->get();
|
||||
printf("put %d get %d\n",value,getValue);
|
||||
@@ -148,7 +148,7 @@ void testInt() {
|
||||
printf("\ntestInt\n");
|
||||
PVScalar *pvScalar = getStandardPVField()->scalarValue(0,pvInt);
|
||||
PVInt *pvValue = (PVInt *)pvScalar;
|
||||
epicsInt32 value = 2;
|
||||
int32 value = 2;
|
||||
pvValue->put(value);
|
||||
int getValue = pvValue->get();
|
||||
printf("put %d get %d\n",value,getValue);
|
||||
@@ -188,9 +188,9 @@ void testLong() {
|
||||
printf("\ntestLong\n");
|
||||
PVScalar *pvScalar = getStandardPVField()->scalarValue(0,pvLong);
|
||||
PVLong *pvValue = (PVLong *)pvScalar;
|
||||
epicsInt64 value = 2;
|
||||
int64 value = 2;
|
||||
pvValue->put(value);
|
||||
epicsInt64 getValue = pvValue->get();
|
||||
int64 getValue = pvValue->get();
|
||||
printf("put %ld get %ld\n",(long int)value,(long int)getValue);
|
||||
if(value!=getValue) {
|
||||
fprintf(stderr,"ERROR getValue put %ld get %ld\n",(long int)value,(long int)getValue);
|
||||
|
||||
@@ -26,7 +26,7 @@ void testBooleanArray() {
|
||||
PVBooleanArray *pvValue = (PVBooleanArray *)pvScalarArray;
|
||||
int length = 5;
|
||||
bool *value = new bool[length];
|
||||
for(int i=0; i<length; i++) value[i] = epicsTrue;
|
||||
for(int i=0; i<length; i++) value[i] = true;
|
||||
pvValue->put(0,length,value,0);
|
||||
BooleanArrayData data = BooleanArrayData();
|
||||
pvValue->get(0,length,&data);
|
||||
@@ -34,8 +34,8 @@ void testBooleanArray() {
|
||||
printf("(orig,get):");
|
||||
for(int i=0; i< length; i++) {
|
||||
printf("(%s,%s) ",
|
||||
((value[i]==epicsTrue) ? "true" : "false"),
|
||||
((getValue[i]==epicsTrue) ? "true" : "false"));
|
||||
((value[i]==true) ? "true" : "false"),
|
||||
((getValue[i]==true) ? "true" : "false"));
|
||||
}
|
||||
printf("\n");
|
||||
FieldConstPtr field = pvValue->getField();
|
||||
@@ -55,12 +55,12 @@ void testByteArray() {
|
||||
getStandardPVField()->scalarArrayValue(0,pvByte);
|
||||
PVByteArray *pvValue = (PVByteArray *)pvScalarArray;
|
||||
int length = 5;
|
||||
epicsInt8 *value = new epicsInt8[length];
|
||||
int8 *value = new int8[length];
|
||||
for(int i=0; i<length; i++) value[i] = i;
|
||||
pvValue->put(0,length,value,0);
|
||||
ByteArrayData data = ByteArrayData();
|
||||
pvValue->get(0,length,&data);
|
||||
epicsInt8 * getValue = data.data;
|
||||
int8 * getValue = data.data;
|
||||
printf("(orig,get):");
|
||||
for(int i=0; i< length; i++) {
|
||||
printf("(%d,%d) ",(int)value[i],(int)getValue[i]);
|
||||
@@ -83,12 +83,12 @@ void testShortArray() {
|
||||
getStandardPVField()->scalarArrayValue(0,pvShort);
|
||||
PVShortArray *pvValue = (PVShortArray *)pvScalarArray;
|
||||
int length = 5;
|
||||
epicsInt16 *value = new epicsInt16[length];
|
||||
int16 *value = new int16[length];
|
||||
for(int i=0; i<length; i++) value[i] = i;
|
||||
pvValue->put(0,length,value,0);
|
||||
ShortArrayData data = ShortArrayData();
|
||||
pvValue->get(0,length,&data);
|
||||
epicsInt16 * getValue = data.data;
|
||||
int16 * getValue = data.data;
|
||||
printf("(orig,get):");
|
||||
for(int i=0; i< length; i++) {
|
||||
printf("(%d,%d) ",(int)value[i],(int)getValue[i]);
|
||||
@@ -111,12 +111,12 @@ void testIntArray() {
|
||||
getStandardPVField()->scalarArrayValue(0,pvInt);
|
||||
PVIntArray *pvValue = (PVIntArray *)pvScalarArray;
|
||||
int length = 5;
|
||||
epicsInt32 *value = new epicsInt32[length];
|
||||
int32 *value = new int32[length];
|
||||
for(int i=0; i<length; i++) value[i] = i;
|
||||
pvValue->put(0,length,value,0);
|
||||
IntArrayData data = IntArrayData();
|
||||
pvValue->get(0,length,&data);
|
||||
epicsInt32 * getValue = data.data;
|
||||
int32 * getValue = data.data;
|
||||
printf("(orig,get):");
|
||||
for(int i=0; i< length; i++) {
|
||||
printf("(%d,%d) ",value[i],getValue[i]);
|
||||
@@ -140,12 +140,12 @@ void testLongArray() {
|
||||
getStandardPVField()->scalarArrayValue(0,pvLong);
|
||||
PVLongArray *pvValue = (PVLongArray *)pvScalarArray;
|
||||
int length = 5;
|
||||
epicsInt64 *value = new epicsInt64[length];
|
||||
int64 *value = new int64[length];
|
||||
for(int i=0; i<length; i++) value[i] = i;
|
||||
pvValue->put(0,length,value,0);
|
||||
LongArrayData data = LongArrayData();
|
||||
pvValue->get(0,length,&data);
|
||||
epicsInt64 * getValue = data.data;
|
||||
int64 * getValue = data.data;
|
||||
printf("(orig,get):");
|
||||
for(int i=0; i< length; i++) {
|
||||
printf("(%ld,%ld) ",(long int)value[i],(long int)getValue[i]);
|
||||
|
||||
5
test/testAll.pl
Executable file
5
test/testAll.pl
Executable file
@@ -0,0 +1,5 @@
|
||||
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
|
||||
if $running_under_some_shell; # testIntTypes.pl
|
||||
$EPICS_HOST_ARCH = "linux-x86";
|
||||
system ("./testIntTypes.pl");
|
||||
system ("./testIntrospect.pl");
|
||||
4
test/testIntTypes
Normal file
4
test/testIntTypes
Normal file
@@ -0,0 +1,4 @@
|
||||
int8 max 127 min -128
|
||||
int8 max 32767 min -32768
|
||||
int8 max 2147483647 min -2147483648
|
||||
int8 max 9223372036854775807 min -9223372036854775808
|
||||
12
test/testIntTypes.pl
Executable file
12
test/testIntTypes.pl
Executable file
@@ -0,0 +1,12 @@
|
||||
eval 'exec perl -S $0 ${1+"$@"}' # -*- Mode: perl -*-
|
||||
if $running_under_some_shell; # testIntTypes.pl
|
||||
$EPICS_HOST_ARCH = "linux-x86";
|
||||
system ("rm testIntTypes");
|
||||
system ("rm testIntTypesDiff");
|
||||
system ("../bin/${EPICS_HOST_ARCH}/testIntTypes testIntTypes");
|
||||
system ("diff testIntTypes testIntTypesGold >> testIntTypesDiff");
|
||||
if(-z "testIntTypesDiff") {
|
||||
print "testIntTypes OK\n";
|
||||
} else {
|
||||
print "testIntTypes Failed\n";
|
||||
}
|
||||
0
test/testIntTypesDiff
Normal file
0
test/testIntTypesDiff
Normal file
4
test/testIntTypesGold
Normal file
4
test/testIntTypesGold
Normal file
@@ -0,0 +1,4 @@
|
||||
int8 max 127 min -128
|
||||
int8 max 32767 min -32768
|
||||
int8 max 2147483647 min -2147483648
|
||||
int8 max 9223372036854775807 min -9223372036854775808
|
||||
@@ -77,3 +77,5 @@ structure value
|
||||
structure timeStamp
|
||||
long secondsPastEpoch
|
||||
int nanoSeconds
|
||||
Field: totalConstruct 156 totalDestruct 63 totalReferenceCount 93
|
||||
PVField: totalConstruct 55 totalDestruct 55
|
||||
|
||||
@@ -77,3 +77,5 @@ structure value
|
||||
structure timeStamp
|
||||
long secondsPastEpoch
|
||||
int nanoSeconds
|
||||
Field: totalConstruct 156 totalDestruct 63 totalReferenceCount 93
|
||||
PVField: totalConstruct 55 totalDestruct 55
|
||||
|
||||
Reference in New Issue
Block a user