本文整理汇总了C++中PVStringArrayPtr类的典型用法代码示例。如果您正苦于以下问题:C++ PVStringArrayPtr类的具体用法?C++ PVStringArrayPtr怎么用?C++ PVStringArrayPtr使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PVStringArrayPtr类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: test_labels
void test_labels()
{
testDiag("test_labels");
NTTableBuilderPtr builder = NTTable::createBuilder();
testOk(builder.get() != 0, "Got builder");
PVStructurePtr pvStructure = builder->
addColumn("column0", pvDouble)->
addColumn("column1", pvString)->
addColumn("column2", pvInt)->
createPVStructure();
testOk1(pvStructure.get() != 0);
if (!pvStructure)
return;
testOk1(NTTable::isCompatible(pvStructure)==true);
std::cout << *pvStructure << std::endl;
PVStringArrayPtr labels = pvStructure->getSubField<PVStringArray>("labels");
testOk1(labels.get() != 0);
testOk1(labels->getLength() == 3);
PVStringArray::const_svector l(labels->view());
testOk1(l[0] == "column0");
testOk1(l[1] == "column1");
testOk1(l[2] == "column2");
}
示例2: testGet
void testGet(bool debug,GatherV3DataPtr gather)
{
String builder;
NTTablePtr nttable = gather->getNTTable();
bool result = gather->get();
if(!result) printf("get failed\n%s\n",gather->getMessage().c_str());
if(debug) {
builder.clear();
nttable->getPVStructure()->toString(&builder);
printf("nttable\n%s\n",builder.c_str());
}
PVDoubleArrayPtr values = gather->getDoubleValue();
PVIntArrayPtr severitys = gather->getAlarmSeverity();
PVBooleanArrayPtr isConnecteds = gather->getIsConnected();
PVStringArrayPtr channelNames = gather->getChannelName();
if(debug) {
builder.clear();
values->toString(&builder);
printf("value: %s\n",builder.c_str());
builder.clear();
severitys->toString(&builder);
printf("severity: %s\n",builder.c_str());
builder.clear();
isConnecteds->toString(&builder);
printf("isConnected: %s\n",builder.c_str());
builder.clear();
channelNames->toString(&builder);
printf("channelName: %s\n",builder.c_str());
}
}
示例3: _getLabels
static PyObject * _getLabels(PyObject *willBeNull, PyObject *args)
{
PyObject *pcapsule = 0;
if(!PyArg_ParseTuple(args,"O:nttablePy",
&pcapsule))
{
PyErr_SetString(PyExc_SyntaxError,
"Bad argument. Expected (pvt)");
return NULL;
}
void *pvoid = PyCapsule_GetPointer(pcapsule,"nttablePvt");
if(pvoid==0) {
PyErr_SetString(PyExc_SyntaxError,
"first arg must be return from _init");
return NULL;
}
NTTablePvt *pvt = static_cast<NTTablePvt *>(pvoid);
PVStringArrayPtr pvLabel = pvt->nttable->getLabels();
shared_vector<const string> data(pvLabel->view());
int num = data.size();
PyObject *result = PyTuple_New(num);
for(int i=0; i<num; i++) {
PyObject *elem = Py_BuildValue("s",data[i].c_str());
PyTuple_SetItem(result, i, elem);
}
return result;
}
示例4: lock
PVStringArrayPtr PVDatabase::getRecordNames()
{
lock();
try {
PVStringArrayPtr xxx;
if(isDestroyed) {
unlock();
return xxx;
}
PVStringArrayPtr pvStringArray = static_pointer_cast<PVStringArray>
(getPVDataCreate()->createPVScalarArray(pvString));
size_t len = recordMap.size();
shared_vector<string> names(len);
PVRecordMap::iterator iter;
size_t i = 0;
for(iter = recordMap.begin(); iter!=recordMap.end(); ++iter) {
names[i++] = (*iter).first;
}
shared_vector<const string> temp(freeze(names));
pvStringArray->replace(temp);
unlock();
return pvStringArray;
} catch(...) {
unlock();
throw;
}
}
示例5: main
int main(int argc,char *argv[])
{
PVDatabasePtr master = PVDatabase::getMaster();
PVRecordPtr pvRecord;
bool result = false;
string recordName;
recordName = "exampleServer";
pvRecord = ExampleServer::create(recordName);
result = master->addRecord(pvRecord);
if(!result) cout<< "record " << recordName << " not added" << endl;
recordName = "traceRecordPGRPC";
pvRecord = TraceRecord::create(recordName);
result = master->addRecord(pvRecord);
if(!result) cout<< "record " << recordName << " not added" << endl;
ContextLocal::shared_pointer contextLocal = ContextLocal::create();
contextLocal->start();
PVStringArrayPtr pvNames = master->getRecordNames();
shared_vector<const string> names = pvNames->view();
for(size_t i=0; i<names.size(); ++i) cout << names[i] << endl;
contextLocal->waitForExit();
return 0;
}
示例6: setValue
static void setValue(PVUnionPtr const &pvUnion, double value)
{
UnionConstPtr u = pvUnion->getUnion();
FieldConstPtr field = u->getField(0);
Type type = field->getType();
if(type==scalar) {
ScalarConstPtr scalar = static_pointer_cast<const Scalar>(field);
ScalarType scalarType = scalar->getScalarType();
if(scalarType==pvDouble) {
PVDoublePtr pvValue = static_pointer_cast<PVDouble>(
pvDataCreate->createPVScalar(pvDouble));
pvValue->put(value);
pvUnion->set(0,pvValue);
return;
}
if(scalarType==pvString) {
PVStringPtr pvValue = static_pointer_cast<PVString>(
pvDataCreate->createPVScalar(pvString));
stringstream ss;
ss << "value" << value;
pvValue->put(ss.str());
pvUnion->set(0,pvValue);
return;
}
throw std::runtime_error("only pvDouble and pvString are supported");
}
if(type==scalarArray) {
ScalarArrayConstPtr scalarArray = static_pointer_cast<const ScalarArray>(field);
ScalarType scalarType = scalarArray->getElementType();
if(scalarType==pvDouble) {
size_t num = 5;
PVDoubleArrayPtr pvValue = static_pointer_cast<PVDoubleArray>(
pvDataCreate->createPVScalarArray(pvDouble));
shared_vector<double> data(num);
for(size_t i=0; i<num; ++i) data[i] = value +i;
pvValue->replace(freeze(data));
pvUnion->set(0,pvValue);
return;
}
if(scalarType==pvString) {
size_t num = 5;
PVStringArrayPtr pvValue = static_pointer_cast<PVStringArray>(
pvDataCreate->createPVScalarArray(pvString));
shared_vector<string> data(num);
for(size_t i=0; i<num; ++i) {
stringstream ss;
ss << "value" << value << i;
data[i] = ss.str();
}
pvValue->replace(freeze(data));
pvUnion->set(0,pvValue);
return;
}
throw std::runtime_error("only pvDouble and pvString are supported");
}
throw std::runtime_error("only scalar and scalarArray fields are supported");
}
示例7: checkValue
void PvaClientPutData::putStringArray(shared_vector<const std::string> const & value)
{
checkValue();
PVStringArrayPtr pv = pvStructure->getSubField<PVStringArray>("value");
if(!pv) {
throw std::runtime_error(messagePrefix + notStringArray);
}
pv->replace(value);
}
示例8: channelList
ChannelFind::shared_pointer ChannelProviderLocal::channelList(
ChannelListRequester::shared_pointer const & channelListRequester)
{
PVStringArrayPtr records;
{
Lock guard(mutex);
records = pvDatabase->getRecordNames();
}
channelListRequester->channelListResult(Status::Ok, channelFinder, records->view(), false);
return channelFinder;
}
示例9: attach
bool PVEnumerated::attach(PVFieldPtr const & pvField)
{
if(pvField->getField()->getType()!=structure) return false;
PVStructurePtr pvStructure = static_pointer_cast<PVStructure>(pvField);
pvIndex = pvStructure->getSubField<PVInt>("index");
if(pvIndex.get()==NULL) return false;
PVStringArrayPtr pvStringArray = pvStructure->getSubField<PVStringArray>("choices");
if(pvStringArray.get()==NULL) {
pvIndex.reset();
return false;
}
pvChoices = pvStringArray;
return true;
}
示例10: process
void RecordListRecord::process()
{
PVStringArrayPtr pvNames = PVDatabase::getMaster()->getRecordNames();
name->replace(pvNames->view());
string message("");
if(database->get().compare("master")!=0) {
message += " can only access master ";
}
string regEx = regularExpression->get();
if(regEx.compare("")!=0 && regEx.compare(".*")!=0) {
message += " regularExpression not implemented ";
}
status->put(message);
}
示例11: guard
PVStringArrayPtr PVDatabase::getRecordNames()
{
epicsGuard<epics::pvData::Mutex> guard(mutex);
PVStringArrayPtr xxx;
PVStringArrayPtr pvStringArray = static_pointer_cast<PVStringArray>
(getPVDataCreate()->createPVScalarArray(pvString));
size_t len = recordMap.size();
shared_vector<string> names(len);
PVRecordMap::iterator iter;
size_t i = 0;
for(iter = recordMap.begin(); iter!=recordMap.end(); ++iter) {
names[i++] = (*iter).first;
}
shared_vector<const string> temp(freeze(names));
pvStringArray->replace(temp);
return pvStringArray;
}
示例12: test
void test()
{
RPCClientPtr channelRPC =
RPCClientPtr(RPCClient::create(channelName));
bool result = channelRPC->connect(1.0);
if(!result) {
cout<< "connect failed\n";
return;
}
NTNameValueBuilderPtr builder = NTNameValue::createBuilder();
NTNameValuePtr ntnamevalue = builder ->
value(pvString) ->
add("function",fieldCreate->createScalar(pvString)) ->
create();
PVStructurePtr pv = ntnamevalue->getPVStructure();
PVStringPtr pvFunction = pv->getSubField<PVString>("function");
PVStringArrayPtr pvNames = pv->getSubField<PVStringArray>("name");
PVStringArrayPtr pvValues = pv->getSubField<PVStringArray>("value");
size_t n = 2;
shared_vector<string> name(n);
shared_vector<string> value(n);
name[0] = string("configname");
name[1] = string("servicename");
value[0] = string("test");
value[1] = string("masar");
pvNames->replace(freeze(name));
pvValues->replace(freeze(value));
pvFunction->put("retrieveSnapshot");
try {
cout << *ntnamevalue->getPVStructure() << endl;
PVStructurePtr pvResponse = channelRPC->request(ntnamevalue->getPVStructure());
cout << *pvResponse << endl;
} catch (std::exception &e)
{
cout << e.what() << endl;
return;
}
channelRPC->destroy();
}
示例13: switch
//.........这里部分代码省略.........
for(int i=0; i<num; i++) {
int value = data[i];
PyObject *elem = Py_BuildValue("i",value);
PyTuple_SetItem(result, i, elem);
}
return result;
}
case pvUShort: {
PVUShortArrayPtr pvArray = static_pointer_cast<PVUShortArray>(pvScalarArray);
shared_vector<const uint16> data(pvArray->view());
int num = data.size();
PyObject *result = PyTuple_New(num);
for(int i=0; i<num; i++) {
int value = data[i];
PyObject *elem = Py_BuildValue("i",value);
PyTuple_SetItem(result, i, elem);
}
return result;
}
case pvInt: {
PVIntArrayPtr pvArray = static_pointer_cast<PVIntArray>(pvScalarArray);
shared_vector<const int32> data(pvArray->view());
int num = data.size();
PyObject *result = PyTuple_New(num);
for(int i=0; i<num; i++) {
PyObject *elem = Py_BuildValue("i",data[i]);
PyTuple_SetItem(result, i, elem);
}
return result;
}
case pvUInt: {
PVUIntArrayPtr pvArray = static_pointer_cast<PVUIntArray>(pvScalarArray);
shared_vector<const uint32> data(pvArray->view());
int num = data.size();
PyObject *result = PyTuple_New(num);
for(int i=0; i<num; i++) {
PyObject *elem = Py_BuildValue("i",data[i]);
PyTuple_SetItem(result, i, elem);
}
return result;
}
case pvLong: {
PVLongArrayPtr pvArray = static_pointer_cast<PVLongArray>(pvScalarArray);
shared_vector<const int64> data(pvArray->view());
int num = data.size();
PyObject *result = PyTuple_New(num);
for(int i=0; i<num; i++) {
PyObject *elem = Py_BuildValue("k",data[i]);
PyTuple_SetItem(result, i, elem);
}
return result;
}
case pvULong: {
PVULongArrayPtr pvArray = static_pointer_cast<PVULongArray>(pvScalarArray);
shared_vector<const uint64> data(pvArray->view());
int num = data.size();
PyObject *result = PyTuple_New(num);
for(int i=0; i<num; i++) {
PyObject *elem = Py_BuildValue("k",data[i]);
PyTuple_SetItem(result, i, elem);
}
return result;
}
case pvFloat: {
PVFloatArrayPtr pvArray = static_pointer_cast<PVFloatArray>(pvScalarArray);
shared_vector<const float> data(pvArray->view());
int num = data.size();
PyObject *result = PyTuple_New(num);
for(int i=0; i<num; i++) {
PyObject *elem = Py_BuildValue("f",data[i]);
PyTuple_SetItem(result, i, elem);
}
return result;
}
case pvDouble: {
PVDoubleArrayPtr pvArray = static_pointer_cast<PVDoubleArray>(pvScalarArray);
shared_vector<const double> data(pvArray->view());
int num = data.size();
PyObject *result = PyTuple_New(num);
for(int i=0; i<num; i++) {
PyObject *elem = Py_BuildValue("d",data[i]);
PyTuple_SetItem(result, i, elem);
}
return result;
}
case pvString: {
PVStringArrayPtr pvArray = static_pointer_cast<PVStringArray>(pvScalarArray);
shared_vector<const string> data(pvArray->view());
int num = data.size();
PyObject *result = PyTuple_New(num);
for(int i=0; i<num; i++) {
PyObject *elem = Py_BuildValue("s",data[i].c_str());
PyTuple_SetItem(result, i, elem);
}
return result;
}
}
Py_INCREF(Py_None);
return Py_None;
}
示例14: test
static void test()
{
NTMultiChannelBuilderPtr builder = NTMultiChannel::createBuilder();
testOk(builder.get() != 0, "Got builder");
NTMultiChannelPtr multiChannel = builder->
addDescriptor()->
addAlarm()->
addTimeStamp()->
addSeverity() ->
add("extra1",fieldCreate->createScalar(pvString)) ->
add("extra2",fieldCreate->createScalarArray(pvString)) ->
create();
testOk1(multiChannel.get() != 0);
PVStructurePtr pvStructure = multiChannel->getPVStructure();
testOk1(pvStructure.get()!=NULL);
testOk1(NTMultiChannel::is_a(pvStructure->getStructure()));
size_t nchan = 3;
shared_vector<string> names(nchan);
names[0] = "channel 0";
names[1] = "channel 1";
names[2] = "channel 2";
shared_vector<const string> channelNames(freeze(names));
PVStringArrayPtr pvChannelName = multiChannel->getChannelName();
pvChannelName->replace(channelNames);
if(debug) {cout << *pvStructure << endl;}
UnionConstPtr unionPtr =
fieldCreate->createFieldBuilder()->
add("doubleValue", pvDouble)->
add("intValue", pvInt)->
createUnion();
multiChannel = builder->
value(unionPtr) ->
addDescriptor()->
addAlarm()->
addTimeStamp()->
addSeverity() ->
addIsConnected() ->
create();
testOk1(multiChannel.get() != 0);
pvStructure = multiChannel->getPVStructure();
if(debug) {cout << *pvStructure << endl;}
pvChannelName = multiChannel->getChannelName();
pvChannelName->replace(channelNames);
PVUnionArrayPtr pvValue = multiChannel->getValue();
shared_vector<PVUnionPtr> unions(nchan);
unions[0] = pvDataCreate->createPVUnion(unionPtr);
unions[1] = pvDataCreate->createPVUnion(unionPtr);
unions[2] = pvDataCreate->createPVUnion(unionPtr);
unions[0]->select("doubleValue");
unions[1]->select("intValue");
unions[2]->select("intValue");
PVDoublePtr pvDouble = unions[0]->get<PVDouble>();
pvDouble->put(1.235);
PVIntPtr pvInt = unions[1]->get<PVInt>();
pvInt->put(5);
pvInt = unions[2]->get<PVInt>();
pvInt->put(7);
pvValue->replace(freeze(unions));
shared_vector<int32> severities(nchan);
severities[0] = 0;
severities[1] = 1;
severities[2] = 2;
PVIntArrayPtr pvSeverity = multiChannel->getSeverity();
pvSeverity->replace(freeze(severities));
if(debug) {cout << *pvStructure << endl;}
PVBooleanArrayPtr pvIsConnected = multiChannel->getIsConnected();
shared_vector<const epics::pvData::boolean> isConnected = pvIsConnected->view();
multiChannel = builder->
value(unionPtr) ->
addDescriptor()->
addAlarm()->
addTimeStamp()->
addSeverity() ->
addStatus() ->
addMessage() ->
addSecondsPastEpoch() ->
addNanoseconds() ->
addUserTag() ->
addIsConnected() ->
create();
testOk1(multiChannel.get() != 0);
pvStructure = multiChannel->getPVStructure();
if(debug) {cout << *pvStructure << endl;}
testOk1(NTMultiChannel::isCompatible(pvStructure)==true);
PVStructurePtr pvTimeStamp = multiChannel->getTimeStamp();
testOk1(pvTimeStamp.get() !=0);
PVStructurePtr pvAlarm = multiChannel->getAlarm();
testOk1(pvAlarm.get() !=0);
pvValue = multiChannel->getValue();
testOk1(pvValue.get() !=0);
pvChannelName = multiChannel->getChannelName();
testOk1(pvChannelName.get() !=0);
pvIsConnected = multiChannel->getIsConnected();
testOk1(pvIsConnected.get() !=0);
pvSeverity = multiChannel->getSeverity();
testOk1(pvSeverity.get() !=0);
PVIntArrayPtr pvStatus = multiChannel->getStatus();
testOk1(pvStatus.get() !=0);
//.........这里部分代码省略.........
示例15: test_ntnameValue
void test_ntnameValue()
{
testDiag("test_ntnameValue");
NTNameValueBuilderPtr builder = NTNameValue::createBuilder();
testOk(builder.get() != 0, "Got builder");
NTNameValuePtr ntNameValue = builder->
value(pvInt)->
addDescriptor()->
addAlarm()->
addTimeStamp()->
add("extra1",fieldCreate->createScalar(pvString)) ->
add("extra2",fieldCreate->createScalarArray(pvString)) ->
create();
testOk1(ntNameValue.get() != 0);
testOk1(NTNameValue::is_a(ntNameValue->getPVStructure()));
testOk1(NTNameValue::isCompatible(ntNameValue->getPVStructure()));
testOk1(ntNameValue->getPVStructure().get() != 0);
testOk1(ntNameValue->getDescriptor().get() != 0);
testOk1(ntNameValue->getAlarm().get() != 0);
testOk1(ntNameValue->getTimeStamp().get() != 0);
testOk1(ntNameValue->getName().get() != 0);
testOk1(ntNameValue->getValue().get() != 0);
//
// example how to set name
//
PVStringArray::svector newName;
newName.push_back("name1");
newName.push_back("name2");
newName.push_back("name3");
PVStringArrayPtr pvNameField = ntNameValue->getName();
pvNameField->replace(freeze(newName));
//
// example how to get name
//
PVStringArray::const_svector name(pvNameField->view());
testOk1(name.size() == 3);
testOk1(name[0] == "name1");
testOk1(name[1] == "name2");
testOk1(name[2] == "name3");
//
// example how to set value
//
PVIntArray::svector newValue;
newValue.push_back(1);
newValue.push_back(2);
newValue.push_back(8);
PVIntArrayPtr pvValueField = ntNameValue->getValue<PVIntArray>();
pvValueField->replace(freeze(newValue));
//
// example how to get column value
//
PVIntArray::const_svector value(pvValueField->view());
testOk1(value.size() == 3);
testOk1(value[0] == 1);
testOk1(value[1] == 2);
testOk1(value[2] == 8);
//
// timeStamp ops
//
PVTimeStamp pvTimeStamp;
if (ntNameValue->attachTimeStamp(pvTimeStamp))
{
testPass("timeStamp attach");
// example how to set current time
TimeStamp ts;
ts.getCurrent();
pvTimeStamp.set(ts);
// example how to get EPICS time
TimeStamp ts2;
pvTimeStamp.get(ts2);
testOk1(ts2.getEpicsSecondsPastEpoch() != 0);
}
else
testFail("timeStamp attach fail");
//
// alarm ops
//
PVAlarm pvAlarm;
if (ntNameValue->attachAlarm(pvAlarm))
{
testPass("alarm attach");
// example how to set an alarm
Alarm alarm;
//.........这里部分代码省略.........