refactor introspection interfaces. replace epicsTypes by pvData types.

This commit is contained in:
Marty Kraimer
2010-11-02 07:53:03 -04:00
parent 304a9c60d0
commit f259c4451d
35 changed files with 620 additions and 433 deletions

View File

@@ -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;
}