added userTag
This commit is contained in:
@@ -77,6 +77,12 @@ NTMultiChannelBuilder::shared_pointer NTMultiChannelBuilder::addNanoseconds()
|
||||
return shared_from_this();
|
||||
}
|
||||
|
||||
NTMultiChannelBuilder::shared_pointer NTMultiChannelBuilder::addUserTag()
|
||||
{
|
||||
userTag = true;
|
||||
return shared_from_this();
|
||||
}
|
||||
|
||||
StructureConstPtr NTMultiChannelBuilder::createStructure()
|
||||
{
|
||||
StandardFieldPtr standardField = getStandardField();
|
||||
@@ -89,6 +95,7 @@ StructureConstPtr NTMultiChannelBuilder::createStructure()
|
||||
if(message) ++nfields;
|
||||
if(secondsPastEpoch) ++nfields;
|
||||
if(nanoseconds) ++nfields;
|
||||
if(userTag) ++nfields;
|
||||
FieldConstPtrArray fields(nfields);
|
||||
StringArray names(nfields);
|
||||
size_t ind = 0;
|
||||
@@ -132,6 +139,10 @@ StructureConstPtr NTMultiChannelBuilder::createStructure()
|
||||
names[ind] = "nanoseconds";
|
||||
fields[ind++] = fieldCreate->createScalarArray(pvInt);
|
||||
}
|
||||
if(userTag) {
|
||||
names[ind] = "userTag";
|
||||
fields[ind++] = fieldCreate->createScalarArray(pvInt);
|
||||
}
|
||||
StructureConstPtr st = fieldCreate->createStructure(NTMultiChannel::URI,names,fields);
|
||||
reset();
|
||||
return st;
|
||||
|
||||
@@ -81,6 +81,11 @@ namespace detail {
|
||||
* @return this instance of a {@code NTMultiChannelBuilder}.
|
||||
*/
|
||||
shared_pointer addNanoseconds();
|
||||
/**
|
||||
* Add userTag array to the NTMultiChannel.
|
||||
* @return this instance of a {@code NTMultiChannelBuilder}.
|
||||
*/
|
||||
shared_pointer addUserTag();
|
||||
/**
|
||||
* Create a {@code Structure} that represents NTMultiChannel.
|
||||
* This resets this instance state and allows new instance to be created.
|
||||
@@ -114,6 +119,7 @@ namespace detail {
|
||||
bool message;
|
||||
bool secondsPastEpoch;
|
||||
bool nanoseconds;
|
||||
bool userTag;
|
||||
|
||||
friend class ::epics::nt::NTMultiChannel;
|
||||
};
|
||||
@@ -199,15 +205,20 @@ public:
|
||||
*/
|
||||
epics::pvData::PVStringArrayPtr getMessage() {return pvMessage;}
|
||||
/**
|
||||
* Get the SecondsPastEpoch of each channel.
|
||||
* Get the secondsPastEpoch of each channel.
|
||||
* @return PVLongArrayPtr which may be null.
|
||||
*/
|
||||
epics::pvData::PVLongArrayPtr getSecondsPastEpoch() {return pvSecondsPastEpoch;}
|
||||
/**
|
||||
* Get the SecondsPastEpoch of each channel.
|
||||
* Get the nanoseconds of each channel.
|
||||
* @return PVIntArrayPtr which may be null.
|
||||
*/
|
||||
epics::pvData::PVIntArrayPtr getNanoseconds() {return pvNanoseconds;}
|
||||
/**
|
||||
* Get the userTag of each channel.
|
||||
* @return PVIntArrayPtr which may be null.
|
||||
*/
|
||||
epics::pvData::PVIntArrayPtr getUserTag() {return pvUserTag;}
|
||||
/**
|
||||
* Get the descriptor.
|
||||
* @return PVStringPtr which may be null.
|
||||
@@ -225,6 +236,7 @@ private:
|
||||
epics::pvData::PVStringArrayPtr pvMessage;
|
||||
epics::pvData::PVLongArrayPtr pvSecondsPastEpoch;
|
||||
epics::pvData::PVIntArrayPtr pvNanoseconds;
|
||||
epics::pvData::PVIntArrayPtr pvUserTag;
|
||||
epics::pvData::PVStringPtr pvDescriptor;
|
||||
friend class detail::NTMultiChannelBuilder;
|
||||
};
|
||||
|
||||
@@ -113,6 +113,7 @@ static void test()
|
||||
addMessage() ->
|
||||
addSecondsPastEpoch() ->
|
||||
addNanoseconds() ->
|
||||
addUserTag() ->
|
||||
create();
|
||||
testOk1(multiChannel.get() != 0);
|
||||
pvStructure = multiChannel->getPVStructure();
|
||||
|
||||
Reference in New Issue
Block a user