added "add(name,field)" to each bulder; added is_compatible to each NT(code is not complete)
This commit is contained in:
@ -87,6 +87,8 @@ StructureConstPtr NTMultiChannelBuilder::createStructure()
|
||||
{
|
||||
StandardFieldPtr standardField = getStandardField();
|
||||
size_t nfields = 3;
|
||||
size_t extraCount = extraFieldNames.size();
|
||||
nfields += extraCount;
|
||||
if(descriptor) ++nfields;
|
||||
if(alarm) ++nfields;
|
||||
if(timeStamp) ++nfields;
|
||||
@ -145,6 +147,11 @@ StructureConstPtr NTMultiChannelBuilder::createStructure()
|
||||
names[ind] = "userTag";
|
||||
fields[ind++] = fieldCreate->createScalarArray(pvInt);
|
||||
}
|
||||
for (size_t i = 0; i< extraCount; i++) {
|
||||
names[ind] = extraFieldNames[i];
|
||||
fields[ind++] = extraFields[i];
|
||||
}
|
||||
|
||||
StructureConstPtr st = fieldCreate->createStructure(NTMultiChannel::URI,names,fields);
|
||||
reset();
|
||||
return st;
|
||||
@ -168,6 +175,8 @@ NTMultiChannelBuilder::NTMultiChannelBuilder()
|
||||
void NTMultiChannelBuilder::reset()
|
||||
{
|
||||
valueUnion.reset();
|
||||
extraFieldNames.clear();
|
||||
extraFields.clear();
|
||||
value = false;
|
||||
descriptor = false;
|
||||
alarm = false;
|
||||
@ -180,9 +189,16 @@ void NTMultiChannelBuilder::reset()
|
||||
userTag = false;
|
||||
}
|
||||
|
||||
|
||||
NTMultiChannelBuilder::shared_pointer NTMultiChannelBuilder::add(string const & name, FieldConstPtr const & field)
|
||||
{
|
||||
extraFields.push_back(field); extraFieldNames.push_back(name);
|
||||
return shared_from_this();
|
||||
}
|
||||
|
||||
const std::string NTMultiChannel::URI("uri:ev4:nt/2012/pwd:NTMultiChannel");
|
||||
}
|
||||
|
||||
const std::string NTMultiChannel::URI("uri:ev4:nt/2014/pwd:NTMultiChannel");
|
||||
|
||||
NTMultiChannel::shared_pointer NTMultiChannel::narrow(PVStructurePtr const & structure)
|
||||
{
|
||||
@ -202,6 +218,13 @@ bool NTMultiChannel::is_a(StructureConstPtr const &structure)
|
||||
return structure->getID() == URI;
|
||||
}
|
||||
|
||||
bool NTMultiChannel::is_compatible(PVStructurePtr const &pvStructure)
|
||||
{
|
||||
PVUnionArrayPtr pvValue = pvStructure->getSubField<PVUnionArray>("value");
|
||||
if(!pvValue) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
NTMultiChannelBuilderPtr NTMultiChannel::createBuilder()
|
||||
{
|
||||
return NTMultiChannelBuilderPtr(new detail::NTMultiChannelBuilder());
|
||||
|
@ -38,6 +38,7 @@ namespace detail {
|
||||
POINTER_DEFINITIONS(NTMultiChannelBuilder);
|
||||
/**
|
||||
* specify the union for the value field.
|
||||
* If this is not called then a variantUnion is the default.
|
||||
* @return this instance of a {@code NTMultiChannelBuilder}.
|
||||
*/
|
||||
shared_pointer addValue(epics::pvData::UnionConstPtr valuePtr);
|
||||
@ -104,6 +105,13 @@ namespace detail {
|
||||
* @return a new instance of a {@code NTMultiChannel}
|
||||
*/
|
||||
NTMultiChannelPtr create();
|
||||
/**
|
||||
* Add extra {@code Field} to the type.
|
||||
* @param name name of the field.
|
||||
* @param field a field to add.
|
||||
* @return this instance of a {@code NTMultiChannelBuilder}.
|
||||
*/
|
||||
shared_pointer add(std::string const & name, epics::pvData::FieldConstPtr const & field);
|
||||
private:
|
||||
NTMultiChannelBuilder();
|
||||
|
||||
@ -121,6 +129,10 @@ namespace detail {
|
||||
bool nanoseconds;
|
||||
bool userTag;
|
||||
|
||||
// NOTE: this preserves order, however it does not handle duplicates
|
||||
epics::pvData::StringArray extraFieldNames;
|
||||
epics::pvData::FieldConstPtrArray extraFields;
|
||||
|
||||
friend class ::epics::nt::NTMultiChannel;
|
||||
};
|
||||
|
||||
@ -151,14 +163,22 @@ public:
|
||||
* @return NTMultiChannel instance.
|
||||
*/
|
||||
static shared_pointer narrow_unsafe(epics::pvData::PVStructurePtr const & structure);
|
||||
|
||||
/**
|
||||
* Is the pvStructure an NTMultiChannel.
|
||||
* Is the Structure an NTMultiChannel.
|
||||
* This method structure->getID() and checks if it is the same as the URI.
|
||||
* @param structure The structure to test.
|
||||
* @return (false,true) if (is not, is) an NTMultiChannel.
|
||||
*/
|
||||
static bool is_a(
|
||||
epics::pvData::StructureConstPtr const &structure);
|
||||
/**
|
||||
* Is the pvStructure compatible with NTMultiChannel.
|
||||
* This method introspects the fields to see if they are compatible.
|
||||
* @param pvStructure The pvStructure to test.
|
||||
* @return (false,true) if (is not, is) an NTMultiChannel.
|
||||
*/
|
||||
static bool is_compatible(
|
||||
epics::pvData::PVStructurePtr const &pvStructure);
|
||||
/**
|
||||
* Create a NTMultiChannelBuilder instance
|
||||
* @return builder instance.
|
||||
|
@ -108,7 +108,7 @@ NTNameValueBuilder::shared_pointer NTNameValueBuilder::add(string const & name,
|
||||
|
||||
}
|
||||
|
||||
const std::string NTNameValue::URI("uri:ev4:nt/2012/pwd:NTNameValue");
|
||||
const std::string NTNameValue::URI("uri:ev4:nt/2014/pwd:NTNameValue");
|
||||
|
||||
NTNameValue::shared_pointer NTNameValue::narrow(PVStructurePtr const & structure)
|
||||
{
|
||||
@ -128,6 +128,15 @@ bool NTNameValue::is_a(StructureConstPtr const & structure)
|
||||
return structure->getID() == URI;
|
||||
}
|
||||
|
||||
bool NTNameValue::is_compatible(PVStructurePtr const & pvStructure)
|
||||
{
|
||||
PVStringArrayPtr pvNames = pvStructure->getSubField<PVStringArray>("names");
|
||||
if(!pvNames) return false;
|
||||
PVFieldPtr pvValues = pvStructure->getSubField("values");
|
||||
if(!pvValues) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
NTNameValueBuilderPtr NTNameValue::createBuilder()
|
||||
{
|
||||
return NTNameValueBuilderPtr(new detail::NTNameValueBuilder());
|
||||
|
@ -140,7 +140,14 @@ public:
|
||||
* @return (false,true) if (is not, is) an NTNameValue.
|
||||
*/
|
||||
static bool is_a(epics::pvData::StructureConstPtr const & structure);
|
||||
|
||||
/**
|
||||
* Is the pvStructure compatible with NTNameValue..
|
||||
* This method introspects the fields to see if they are compatible.
|
||||
* @param pvStructure The pvStructure to test.
|
||||
* @return (false,true) if (is not, is) an NTMultiChannel.
|
||||
*/
|
||||
static bool is_compatible(
|
||||
epics::pvData::PVStructurePtr const &pvStructure);
|
||||
/**
|
||||
* Create a NTNameValue builder instance.
|
||||
* @return builder instance.
|
||||
|
@ -16,7 +16,7 @@ namespace epics { namespace nt {
|
||||
|
||||
namespace detail {
|
||||
|
||||
const std::string ntAttrStr("uri:ev4:nt/2012/pwd:NTAttribute");
|
||||
const std::string ntAttrStr("uri:ev4:nt/2014/pwd:NTAttribute");
|
||||
|
||||
static FieldCreatePtr fieldCreate = getFieldCreate();
|
||||
static PVDataCreatePtr pvDataCreate = getPVDataCreate();
|
||||
@ -41,6 +41,7 @@ StructureConstPtr NTNDArrayBuilder::createStructure()
|
||||
static epics::pvData::StructureConstPtr attributeStruc;
|
||||
|
||||
static Mutex mutex;
|
||||
|
||||
Lock xx(mutex);
|
||||
|
||||
size_t index = 0;
|
||||
@ -116,6 +117,11 @@ StructureConstPtr NTNDArrayBuilder::createStructure()
|
||||
if (display)
|
||||
fb->add("display", standardField->display());
|
||||
|
||||
size_t extraCount = extraFieldNames.size();
|
||||
for (size_t i = 0; i< extraCount; i++)
|
||||
fb->add(extraFieldNames[i], extraFields[i]);
|
||||
|
||||
|
||||
ntndarrayStruc[index] = fb->createStructure();
|
||||
}
|
||||
|
||||
@ -167,12 +173,21 @@ void NTNDArrayBuilder::reset()
|
||||
timeStamp = false;
|
||||
alarm = false;
|
||||
display = false;
|
||||
extraFieldNames.clear();
|
||||
extraFields.clear();
|
||||
}
|
||||
|
||||
NTNDArrayBuilder::shared_pointer NTNDArrayBuilder::add(string const & name, FieldConstPtr const & field)
|
||||
{
|
||||
extraFields.push_back(field); extraFieldNames.push_back(name);
|
||||
return shared_from_this();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
const std::string NTNDArray::URI("uri:ev4:nt/2012/pwd:NTNDArray");
|
||||
const std::string ntAttrStr("uri:ev4:nt/2012/pwd:NTAttribute");
|
||||
const std::string NTNDArray::URI("uri:ev4:nt/2014/pwd:NTNDArray");
|
||||
const std::string ntAttrStr("uri:ev4:nt/2014/pwd:NTAttribute");
|
||||
|
||||
static FieldCreatePtr fieldCreate = getFieldCreate();
|
||||
static PVDataCreatePtr pvDataCreate = getPVDataCreate();
|
||||
@ -195,6 +210,12 @@ bool NTNDArray::is_a(StructureConstPtr const & structure)
|
||||
return structure->getID() == URI;
|
||||
}
|
||||
|
||||
bool NTNDArray::is_compatible(PVStructurePtr const & pvStructure)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
NTNDArrayBuilderPtr NTNDArray::createBuilder()
|
||||
{
|
||||
return NTNDArrayBuilderPtr(new detail::NTNDArrayBuilder());
|
||||
|
@ -75,6 +75,13 @@ namespace detail {
|
||||
* @return a new instance of a {@code NTNDArray}
|
||||
*/
|
||||
NTNDArrayPtr create();
|
||||
/**
|
||||
* Add extra {@code Field} to the type.
|
||||
* @param name name of the field.
|
||||
* @param field a field to add.
|
||||
* @return this instance of a {@code NTArrayBuilder}.
|
||||
*/
|
||||
shared_pointer add(std::string const & name, epics::pvData::FieldConstPtr const & field);
|
||||
|
||||
private:
|
||||
NTNDArrayBuilder();
|
||||
@ -86,6 +93,10 @@ namespace detail {
|
||||
bool alarm;
|
||||
bool display;
|
||||
|
||||
// NOTE: this preserves order, however it does not handle duplicates
|
||||
epics::pvData::StringArray extraFieldNames;
|
||||
epics::pvData::FieldConstPtrArray extraFields;
|
||||
|
||||
friend class ::epics::nt::NTNDArray;
|
||||
};
|
||||
|
||||
@ -126,7 +137,14 @@ public:
|
||||
* @return (false,true) if (is not, is) an NTNDArray.
|
||||
*/
|
||||
static bool is_a(epics::pvData::StructureConstPtr const & structure);
|
||||
|
||||
/**
|
||||
* Is the pvStructure compatible with NTNDArray..
|
||||
* This method introspects the fields to see if they are compatible.
|
||||
* @param pvStructure The pvStructure to test.
|
||||
* @return (false,true) if (is not, is) an NTMultiChannel.
|
||||
*/
|
||||
static bool is_compatible(
|
||||
epics::pvData::PVStructurePtr const &pvStructure);
|
||||
/**
|
||||
* Create a NTNDArrayBuilder instance
|
||||
* @return builder instance.
|
||||
@ -237,6 +255,7 @@ public:
|
||||
private:
|
||||
NTNDArray(epics::pvData::PVStructurePtr const & pvStructure);
|
||||
epics::pvData::PVStructurePtr pvNTNDArray;
|
||||
|
||||
friend class detail::NTNDArrayBuilder;
|
||||
};
|
||||
|
||||
|
@ -51,6 +51,11 @@ StructureConstPtr NTScalarBuilder::createStructure()
|
||||
if (control)
|
||||
builder->add("control", ntField->createControl());
|
||||
|
||||
size_t extraCount = extraFieldNames.size();
|
||||
for (size_t i = 0; i< extraCount; i++)
|
||||
builder->add(extraFieldNames[i], extraFields[i]);
|
||||
|
||||
|
||||
StructureConstPtr s = builder->createStructure();
|
||||
|
||||
reset();
|
||||
@ -112,9 +117,16 @@ void NTScalarBuilder::reset()
|
||||
control = false;
|
||||
}
|
||||
|
||||
NTScalarBuilder::shared_pointer NTScalarBuilder::add(string const & name, FieldConstPtr const & field)
|
||||
{
|
||||
extraFields.push_back(field); extraFieldNames.push_back(name);
|
||||
return shared_from_this();
|
||||
}
|
||||
|
||||
const std::string NTScalar::URI("uri:ev4:nt/2012/pwd:NTScalar");
|
||||
|
||||
}
|
||||
|
||||
const std::string NTScalar::URI("uri:ev4:nt/2014/pwd:NTScalar");
|
||||
|
||||
NTScalar::shared_pointer NTScalar::narrow(PVStructurePtr const & structure)
|
||||
{
|
||||
@ -134,6 +146,13 @@ bool NTScalar::is_a(StructureConstPtr const & structure)
|
||||
return structure->getID() == URI;
|
||||
}
|
||||
|
||||
bool NTScalar::is_compatible(PVStructurePtr const & pvStructure)
|
||||
{
|
||||
PVScalarPtr pvValue = pvStructure->getSubField<PVScalar>("value");
|
||||
if(!pvValue) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
NTScalarBuilderPtr NTScalar::createBuilder()
|
||||
{
|
||||
return NTScalarBuilderPtr(new detail::NTScalarBuilder());
|
||||
|
@ -87,6 +87,13 @@ namespace detail {
|
||||
* @return a new instance of a {@code NTScalar}
|
||||
*/
|
||||
NTScalarPtr create();
|
||||
/**
|
||||
* Add extra {@code Field} to the type.
|
||||
* @param name name of the field.
|
||||
* @param field a field to add.
|
||||
* @return this instance of a {@code NTScalarBuilder}.
|
||||
*/
|
||||
shared_pointer add(std::string const & name, epics::pvData::FieldConstPtr const & field);
|
||||
|
||||
private:
|
||||
NTScalarBuilder();
|
||||
@ -102,6 +109,10 @@ namespace detail {
|
||||
bool display;
|
||||
bool control;
|
||||
|
||||
// NOTE: this preserves order, however it does not handle duplicates
|
||||
epics::pvData::StringArray extraFieldNames;
|
||||
epics::pvData::FieldConstPtrArray extraFields;
|
||||
|
||||
friend class ::epics::nt::NTScalar;
|
||||
};
|
||||
|
||||
@ -144,7 +155,14 @@ public:
|
||||
* @return (false,true) if (is not, is) an NTScalar.
|
||||
*/
|
||||
static bool is_a(epics::pvData::StructureConstPtr const & structure);
|
||||
|
||||
/**
|
||||
* Is the pvStructure compatible with NTScalar.
|
||||
* This method introspects the fields to see if they are compatible.
|
||||
* @param pvStructure The pvStructure to test.
|
||||
* @return (false,true) if (is not, is) an NTMultiChannel.
|
||||
*/
|
||||
static bool is_compatible(
|
||||
epics::pvData::PVStructurePtr const &pvStructure);
|
||||
/**
|
||||
* Create a NTScalar builder instance.
|
||||
* @return builder instance.
|
||||
@ -244,6 +262,7 @@ private:
|
||||
NTScalar(epics::pvData::PVStructurePtr const & pvStructure);
|
||||
epics::pvData::PVStructurePtr pvNTScalar;
|
||||
epics::pvData::PVFieldPtr pvValue;
|
||||
|
||||
friend class detail::NTScalarBuilder;
|
||||
};
|
||||
|
||||
|
@ -51,6 +51,11 @@ StructureConstPtr NTScalarArrayBuilder::createStructure()
|
||||
if (control)
|
||||
builder->add("control", ntField->createControl());
|
||||
|
||||
size_t extraCount = extraFieldNames.size();
|
||||
for (size_t i = 0; i< extraCount; i++)
|
||||
builder->add(extraFieldNames[i], extraFields[i]);
|
||||
|
||||
|
||||
StructureConstPtr s = builder->createStructure();
|
||||
|
||||
reset();
|
||||
@ -112,9 +117,16 @@ void NTScalarArrayBuilder::reset()
|
||||
control = false;
|
||||
}
|
||||
|
||||
NTScalarArrayBuilder::shared_pointer NTScalarArrayBuilder::add(string const & name, FieldConstPtr const & field)
|
||||
{
|
||||
extraFields.push_back(field); extraFieldNames.push_back(name);
|
||||
return shared_from_this();
|
||||
}
|
||||
|
||||
const std::string NTScalarArray::URI("uri:ev4:nt/2012/pwd:NTScalarArray");
|
||||
|
||||
}
|
||||
|
||||
const std::string NTScalarArray::URI("uri:ev4:nt/2014/pwd:NTScalarArray");
|
||||
|
||||
NTScalarArray::shared_pointer NTScalarArray::narrow(PVStructurePtr const & structure)
|
||||
{
|
||||
@ -134,6 +146,14 @@ bool NTScalarArray::is_a(StructureConstPtr const & structure)
|
||||
return structure->getID() == URI;
|
||||
}
|
||||
|
||||
bool NTScalarArray::is_compatible(PVStructurePtr const & pvStructure)
|
||||
{
|
||||
PVScalarArrayPtr pvValue = pvStructure->getSubField<PVScalarArray>("value");
|
||||
if(!pvValue) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
NTScalarArrayBuilderPtr NTScalarArray::createBuilder()
|
||||
{
|
||||
return NTScalarArrayBuilderPtr(new detail::NTScalarArrayBuilder());
|
||||
|
@ -87,6 +87,13 @@ namespace detail {
|
||||
* @return a new instance of a {@code NTScalarArray}
|
||||
*/
|
||||
NTScalarArrayPtr create();
|
||||
/**
|
||||
* Add extra {@code Field} to the type.
|
||||
* @param name name of the field.
|
||||
* @param field a field to add.
|
||||
* @return this instance of a {@code NTScalarArrayBuilder}.
|
||||
*/
|
||||
shared_pointer add(std::string const & name, epics::pvData::FieldConstPtr const & field);
|
||||
|
||||
private:
|
||||
NTScalarArrayBuilder();
|
||||
@ -102,6 +109,10 @@ namespace detail {
|
||||
bool display;
|
||||
bool control;
|
||||
|
||||
// NOTE: this preserves order, however it does not handle duplicates
|
||||
epics::pvData::StringArray extraFieldNames;
|
||||
epics::pvData::FieldConstPtrArray extraFields;
|
||||
|
||||
friend class ::epics::nt::NTScalarArray;
|
||||
};
|
||||
|
||||
@ -145,6 +156,14 @@ public:
|
||||
* @return (false,true) if (is not, is) an NTScalarArray.
|
||||
*/
|
||||
static bool is_a(epics::pvData::StructureConstPtr const & structure);
|
||||
/**
|
||||
* Is the pvStructure compatible with NTScalarArray..
|
||||
* This method introspects the fields to see if they are compatible.
|
||||
* @param pvStructure The pvStructure to test.
|
||||
* @return (false,true) if (is not, is) an NTMultiChannel.
|
||||
*/
|
||||
static bool is_compatible(
|
||||
epics::pvData::PVStructurePtr const &pvStructure);
|
||||
|
||||
/**
|
||||
* Create a NTScalarArray builder instance.
|
||||
@ -245,6 +264,7 @@ private:
|
||||
NTScalarArray(epics::pvData::PVStructurePtr const & pvStructure);
|
||||
epics::pvData::PVStructurePtr pvNTScalarArray;
|
||||
epics::pvData::PVFieldPtr pvValue;
|
||||
|
||||
friend class detail::NTScalarArrayBuilder;
|
||||
};
|
||||
|
||||
|
@ -58,6 +58,11 @@ StructureConstPtr NTTableBuilder::createStructure()
|
||||
|
||||
StructureConstPtr s = builder->createStructure();
|
||||
|
||||
size_t extraCount = extraFieldNames.size();
|
||||
for (size_t i = 0; i< extraCount; i++)
|
||||
builder->add(extraFieldNames[i], extraFields[i]);
|
||||
|
||||
|
||||
reset();
|
||||
return s;
|
||||
}
|
||||
@ -111,9 +116,16 @@ void NTTableBuilder::reset()
|
||||
timeStamp = false;
|
||||
}
|
||||
|
||||
NTTableBuilder::shared_pointer NTTableBuilder::add(string const & name, FieldConstPtr const & field)
|
||||
{
|
||||
extraFields.push_back(field); extraFieldNames.push_back(name);
|
||||
return shared_from_this();
|
||||
}
|
||||
|
||||
const std::string NTTable::URI("uri:ev4:nt/2012/pwd:NTTable");
|
||||
|
||||
}
|
||||
|
||||
const std::string NTTable::URI("uri:ev4:nt/2014/pwd:NTTable");
|
||||
|
||||
NTTable::shared_pointer NTTable::narrow(PVStructurePtr const & structure)
|
||||
{
|
||||
@ -133,6 +145,11 @@ bool NTTable::is_a(StructureConstPtr const & structure)
|
||||
return structure->getID() == URI;
|
||||
}
|
||||
|
||||
bool NTTable::is_compatible(PVStructurePtr const & pvStructure)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
NTTableBuilderPtr NTTable::createBuilder()
|
||||
{
|
||||
return NTTableBuilderPtr(new detail::NTTableBuilder());
|
||||
|
@ -77,6 +77,13 @@ namespace detail {
|
||||
* @return a new instance of a {@code NTTable}
|
||||
*/
|
||||
NTTablePtr create();
|
||||
/**
|
||||
* Add extra {@code Field} to the type.
|
||||
* @param name name of the field.
|
||||
* @param field a field to add.
|
||||
* @return this instance of a {@code NTTableBuilder}.
|
||||
*/
|
||||
shared_pointer add(std::string const & name, epics::pvData::FieldConstPtr const & field);
|
||||
|
||||
private:
|
||||
NTTableBuilder();
|
||||
@ -90,6 +97,10 @@ namespace detail {
|
||||
bool alarm;
|
||||
bool timeStamp;
|
||||
|
||||
// NOTE: this preserves order, however it does not handle duplicates
|
||||
epics::pvData::StringArray extraFieldNames;
|
||||
epics::pvData::FieldConstPtrArray extraFields;
|
||||
|
||||
friend class ::epics::nt::NTTable;
|
||||
};
|
||||
|
||||
@ -132,7 +143,14 @@ public:
|
||||
* @return (false,true) if (is not, is) an NTTable.
|
||||
*/
|
||||
static bool is_a(epics::pvData::StructureConstPtr const & structure);
|
||||
|
||||
/**
|
||||
* Is the pvStructure compatible with NTTable.
|
||||
* This method introspects the fields to see if they are compatible.
|
||||
* @param pvStructure The pvStructure to test.
|
||||
* @return (false,true) if (is not, is) an NTMultiChannel.
|
||||
*/
|
||||
static bool is_compatible(
|
||||
epics::pvData::PVStructurePtr const &pvStructure);
|
||||
/**
|
||||
* Create a NTTable builder instance.
|
||||
* @return builder instance.
|
||||
|
@ -49,6 +49,8 @@ static void test()
|
||||
addAlarm()->
|
||||
addTimeStamp()->
|
||||
addSeverity() ->
|
||||
add("extra1",fieldCreate->createScalar(pvString)) ->
|
||||
add("extra2",fieldCreate->createScalarArray(pvString)) ->
|
||||
create();
|
||||
testOk1(multiChannel.get() != 0);
|
||||
|
||||
@ -120,6 +122,7 @@ static void test()
|
||||
testOk1(multiChannel.get() != 0);
|
||||
pvStructure = multiChannel->getPVStructure();
|
||||
if(debug) {cout << *pvStructure << endl;}
|
||||
testOk1(NTMultiChannel::is_compatible(pvStructure)==true);
|
||||
PVStructurePtr pvTimeStamp = multiChannel->getTimeStamp();
|
||||
testOk1(pvTimeStamp.get() !=0);
|
||||
PVStructurePtr pvAlarm = multiChannel->getAlarm();
|
||||
@ -180,7 +183,7 @@ void test_narrow()
|
||||
|
||||
MAIN(testCreateRequest)
|
||||
{
|
||||
testPlan(24);
|
||||
testPlan(25);
|
||||
test();
|
||||
test_narrow();
|
||||
return testDone();
|
||||
|
@ -13,6 +13,8 @@ using namespace epics::nt;
|
||||
using namespace epics::pvData;
|
||||
using std::tr1::dynamic_pointer_cast;
|
||||
|
||||
static FieldCreatePtr fieldCreate = getFieldCreate();
|
||||
|
||||
void test_builder()
|
||||
{
|
||||
testDiag("test_builder");
|
||||
@ -25,6 +27,8 @@ void test_builder()
|
||||
addDescriptor()->
|
||||
addAlarm()->
|
||||
addTimeStamp()->
|
||||
add("extra1",fieldCreate->createScalar(pvString)) ->
|
||||
add("extra2",fieldCreate->createScalarArray(pvString)) ->
|
||||
createStructure();
|
||||
testOk1(structure.get() != 0);
|
||||
if (!structure)
|
||||
@ -32,7 +36,7 @@ void test_builder()
|
||||
|
||||
testOk1(NTNameValue::is_a(structure));
|
||||
testOk1(structure->getID() == NTNameValue::URI);
|
||||
testOk1(structure->getNumberFields() == 5);
|
||||
testOk1(structure->getNumberFields() == 7);
|
||||
testOk1(structure->getField("names").get() != 0);
|
||||
testOk1(structure->getField("values").get() != 0);
|
||||
testOk1(structure->getField("descriptor").get() != 0);
|
||||
@ -51,6 +55,8 @@ void test_builder()
|
||||
addDescriptor()->
|
||||
addAlarm()->
|
||||
addTimeStamp()->
|
||||
add("extra1",fieldCreate->createScalar(pvString)) ->
|
||||
add("extra2",fieldCreate->createScalarArray(pvString)) ->
|
||||
createStructure();
|
||||
testFail("no value type set");
|
||||
} catch (std::runtime_error &) {
|
||||
@ -70,6 +76,8 @@ void test_ntnameValue()
|
||||
addDescriptor()->
|
||||
addAlarm()->
|
||||
addTimeStamp()->
|
||||
add("extra1",fieldCreate->createScalar(pvString)) ->
|
||||
add("extra2",fieldCreate->createScalarArray(pvString)) ->
|
||||
create();
|
||||
testOk1(ntNameValue.get() != 0);
|
||||
|
||||
@ -197,6 +205,7 @@ void test_narrow()
|
||||
if (!pvStructure)
|
||||
return;
|
||||
|
||||
testOk1(NTNameValue::is_compatible(pvStructure)==true);
|
||||
NTNameValuePtr ptr = NTNameValue::narrow(pvStructure);
|
||||
testOk(ptr.get() != 0, "narrow OK");
|
||||
|
||||
@ -236,7 +245,7 @@ void test_extra()
|
||||
|
||||
|
||||
MAIN(testNTNameValue) {
|
||||
testPlan(47);
|
||||
testPlan(48);
|
||||
test_builder();
|
||||
test_ntnameValue();
|
||||
test_narrow();
|
||||
|
@ -12,6 +12,7 @@
|
||||
using namespace epics::nt;
|
||||
using namespace epics::pvData;
|
||||
using std::tr1::dynamic_pointer_cast;
|
||||
static FieldCreatePtr fieldCreate = getFieldCreate();
|
||||
|
||||
void test_builder()
|
||||
{
|
||||
@ -25,6 +26,8 @@ void test_builder()
|
||||
addTimeStamp()->
|
||||
addAlarm()->
|
||||
addDisplay()->
|
||||
add("extra1",fieldCreate->createScalar(pvString)) ->
|
||||
add("extra2",fieldCreate->createScalarArray(pvString)) ->
|
||||
createStructure();
|
||||
testOk1(structure.get() != 0);
|
||||
if (!structure)
|
||||
@ -73,6 +76,7 @@ void test_narrow()
|
||||
if (!pvStructure)
|
||||
return;
|
||||
|
||||
testOk1(NTNDArray::is_compatible(pvStructure)==true);
|
||||
NTNDArrayPtr ptr = NTNDArray::narrow(pvStructure);
|
||||
testOk(ptr.get() != 0, "narrow OK");
|
||||
|
||||
@ -81,7 +85,7 @@ void test_narrow()
|
||||
}
|
||||
|
||||
MAIN(testNTNDArray) {
|
||||
testPlan(22);
|
||||
testPlan(23);
|
||||
test_builder();
|
||||
test_narrow();
|
||||
return testDone();
|
||||
|
@ -13,6 +13,8 @@ using namespace epics::nt;
|
||||
using namespace epics::pvData;
|
||||
using std::tr1::dynamic_pointer_cast;
|
||||
|
||||
static FieldCreatePtr fieldCreate = getFieldCreate();
|
||||
|
||||
void test_builder()
|
||||
{
|
||||
testDiag("test_builder");
|
||||
@ -27,6 +29,8 @@ void test_builder()
|
||||
addTimeStamp()->
|
||||
addDisplay()->
|
||||
addControl()->
|
||||
add("extra1",fieldCreate->createScalar(pvString)) ->
|
||||
add("extra2",fieldCreate->createScalarArray(pvString)) ->
|
||||
createStructure();
|
||||
testOk1(structure.get() != 0);
|
||||
if (!structure)
|
||||
@ -34,7 +38,7 @@ void test_builder()
|
||||
|
||||
testOk1(NTScalarArray::is_a(structure));
|
||||
testOk1(structure->getID() == NTScalarArray::URI);
|
||||
testOk1(structure->getNumberFields() == 6);
|
||||
testOk1(structure->getNumberFields() == 8);
|
||||
testOk1(structure->getField("value").get() != 0);
|
||||
testOk1(structure->getField("descriptor").get() != 0);
|
||||
testOk1(structure->getField("alarm").get() != 0);
|
||||
@ -222,6 +226,7 @@ void test_narrow()
|
||||
if (!pvStructure)
|
||||
return;
|
||||
|
||||
testOk1(NTScalarArray::is_compatible(pvStructure)==true);
|
||||
NTScalarArrayPtr ptr = NTScalarArray::narrow(pvStructure);
|
||||
testOk(ptr.get() != 0, "narrow OK");
|
||||
|
||||
@ -230,7 +235,7 @@ void test_narrow()
|
||||
}
|
||||
|
||||
MAIN(testNTScalarArray) {
|
||||
testPlan(37);
|
||||
testPlan(38);
|
||||
test_builder();
|
||||
test_ntscalarArray();
|
||||
test_narrow();
|
||||
|
@ -13,6 +13,7 @@ using namespace epics::nt;
|
||||
using namespace epics::pvData;
|
||||
using std::tr1::dynamic_pointer_cast;
|
||||
|
||||
static FieldCreatePtr fieldCreate = getFieldCreate();
|
||||
void test_builder()
|
||||
{
|
||||
testDiag("test_builder");
|
||||
@ -27,6 +28,8 @@ void test_builder()
|
||||
addTimeStamp()->
|
||||
addDisplay()->
|
||||
addControl()->
|
||||
add("extra1",fieldCreate->createScalar(pvString)) ->
|
||||
add("extra2",fieldCreate->createScalarArray(pvString)) ->
|
||||
createStructure();
|
||||
testOk1(structure.get() != 0);
|
||||
if (!structure)
|
||||
@ -34,7 +37,7 @@ void test_builder()
|
||||
|
||||
testOk1(NTScalar::is_a(structure));
|
||||
testOk1(structure->getID() == NTScalar::URI);
|
||||
testOk1(structure->getNumberFields() == 6);
|
||||
testOk1(structure->getNumberFields() == 8);
|
||||
testOk1(structure->getField("value").get() != 0);
|
||||
testOk1(structure->getField("descriptor").get() != 0);
|
||||
testOk1(structure->getField("alarm").get() != 0);
|
||||
@ -211,6 +214,7 @@ void test_narrow()
|
||||
if (!pvStructure)
|
||||
return;
|
||||
|
||||
testOk1(NTScalar::is_compatible(pvStructure)==true);
|
||||
NTScalarPtr ptr = NTScalar::narrow(pvStructure);
|
||||
testOk(ptr.get() != 0, "narrow OK");
|
||||
|
||||
@ -219,7 +223,7 @@ void test_narrow()
|
||||
}
|
||||
|
||||
MAIN(testNTScalar) {
|
||||
testPlan(34);
|
||||
testPlan(35);
|
||||
test_builder();
|
||||
test_ntscalar();
|
||||
test_narrow();
|
||||
|
@ -12,6 +12,7 @@
|
||||
using namespace epics::nt;
|
||||
using namespace epics::pvData;
|
||||
using std::tr1::dynamic_pointer_cast;
|
||||
static FieldCreatePtr fieldCreate = getFieldCreate();
|
||||
|
||||
void test_builder()
|
||||
{
|
||||
@ -27,6 +28,8 @@ void test_builder()
|
||||
addDescriptor()->
|
||||
addAlarm()->
|
||||
addTimeStamp()->
|
||||
add("extra1",fieldCreate->createScalar(pvString)) ->
|
||||
add("extra2",fieldCreate->createScalarArray(pvString)) ->
|
||||
createStructure();
|
||||
testOk1(structure.get() != 0);
|
||||
if (!structure)
|
||||
@ -84,6 +87,7 @@ void test_labels()
|
||||
if (!pvStructure)
|
||||
return;
|
||||
|
||||
testOk1(NTTable::is_compatible(pvStructure)==true);
|
||||
std::cout << *pvStructure << std::endl;
|
||||
|
||||
PVStringArrayPtr labels = pvStructure->getSubField<PVStringArray>("labels");
|
||||
@ -230,7 +234,7 @@ void test_narrow()
|
||||
}
|
||||
|
||||
MAIN(testNTTable) {
|
||||
testPlan(45);
|
||||
testPlan(46);
|
||||
test_builder();
|
||||
test_labels();
|
||||
test_nttable();
|
||||
|
Reference in New Issue
Block a user