clang porting

This commit is contained in:
Matej Sekoranja
2014-08-13 09:36:37 +02:00
parent da0f65c2d3
commit 57e33c8f7d
14 changed files with 242 additions and 174 deletions

View File

@@ -180,7 +180,7 @@ private:
string fieldName = request.substr(0,period);
StructureConstPtr subField = fieldCreate->createStructure();
subField = createSubFieldRequest(subField,request.substr(period+1));
if(subField==NULL) return subField;
if(!subField) return subField;
parent = fieldCreate->appendField(parent,fieldName,subField);
return parent;
}
@@ -201,7 +201,7 @@ private:
StructureConstPtr subField = fieldCreate->createStructure();
string subRequest = request.substr(openBrace+1,closeBrace-openBrace-1);
subField = createFieldRequest(subField,subRequest);
if(subField==NULL) return subField;
if(!subField) return subField;
parent = fieldCreate->appendField(parent,fieldName,subField);
return parent;
}
@@ -228,7 +228,7 @@ private:
if(request[nextChar]=='.') {
StructureConstPtr subField = fieldCreate->createStructure();
subField = createSubFieldRequest(subField,request.substr(nextChar+1));
if(subField==NULL) return StructureConstPtr();
if(!subField) return StructureConstPtr();
if(subField->getNumberFields()!=1) {
message = request + " logic error createSubFieldRequest openBracket subField";
return StructureConstPtr();
@@ -250,7 +250,7 @@ private:
StructureConstPtr subField = fieldCreate->createStructure();
string subRequest = request.substr(openBrace+1,closeBrace-openBrace-1);
subField = createFieldRequest(subField,subRequest);
if(subField==NULL) return subField;
if(!subField) return subField;
size_t numSub = subField->getNumberFields();
StringArray fieldNames(numSub + 1);
FieldConstPtrArray fields(numSub+1);
@@ -285,7 +285,7 @@ private:
FieldConstPtrArray fields;
StructureConstPtr subField = fieldCreate->createStructure();
subField = createSubFieldRequest(subField,request.substr(0,end));
if(subField==NULL) return subField;
if(!subField) return subField;
fieldNames.push_back(subField->getFieldNames()[0]);
fields.push_back(subField->getFields()[0]);
if(end!=length) {
@@ -298,7 +298,7 @@ private:
}
StructureConstPtr nextSubField = fieldCreate->createStructure();
nextSubField = createFieldRequest(nextSubField,request.substr(end+1));
if(nextSubField==NULL) return nextSubField;
if(!nextSubField) return nextSubField;
size_t numFields = nextSubField->getNumberFields();
StringArray subNames = nextSubField->getFieldNames();
FieldConstPtrArray subFields = nextSubField->getFields();
@@ -348,7 +348,7 @@ private:
return;
}
PVStructurePtr pvOptions = pvParent->getSubField<PVStructure>("_options");
if(pvOptions==NULL) throw std::logic_error("initSubFieldOptions pvOptions NULL");
if(!pvOptions) throw std::logic_error("initSubFieldOptions pvOptions NULL");
size_t closeBracket = findMatchingBracket(request,openBracket);
initRequestOptions(pvOptions,request.substr(openBracket+1,closeBracket-openBracket-1));
size_t nextChar = closeBracket+1;
@@ -433,7 +433,7 @@ public:
}
StructureConstPtr structure = createRequestOptions(
request.substr(openBracket+1,closeBracket-openBracket-1));
if(structure==NULL)
if(!structure)
{
return PVStructurePtr();
}
@@ -449,7 +449,7 @@ public:
}
StructureConstPtr structure = fieldCreate->createStructure();
structure = createFieldRequest(structure,request.substr(openBrace+1,closeBrace-openBrace-1));
if(structure==NULL)
if(!structure)
{
return PVStructurePtr();
}
@@ -465,7 +465,7 @@ public:
}
StructureConstPtr structure = fieldCreate->createStructure();
structure = createFieldRequest(structure,request.substr(openBrace+1,closeBrace-openBrace-1));
if(structure==NULL)
if(!structure)
{
return PVStructurePtr();
}
@@ -481,7 +481,7 @@ public:
}
StructureConstPtr structure = fieldCreate->createStructure();
structure = createFieldRequest(structure,request.substr(openBrace+1,closeBrace-openBrace-1));
if(structure==NULL)
if(!structure)
{
return PVStructurePtr();
}
@@ -502,7 +502,7 @@ public:
if(pvSub->getStructure()->getNumberFields()==1) {
pvSub = static_pointer_cast<PVStructure>(pvSub->getPVFields()[0]);
}
if(pvSub!=NULL) initFieldOptions(pvSub,request.substr(openParam+1,closeParam-openParam-1));
if(pvSub) initFieldOptions(pvSub,request.substr(openParam+1,closeParam-openParam-1));
}
if (offsetPutField != string::npos) {
size_t openParam = request.find('(', offsetPutField);
@@ -511,7 +511,7 @@ public:
if(pvSub->getStructure()->getNumberFields()==1) {
pvSub = static_pointer_cast<PVStructure>(pvSub->getPVFields()[0]);
}
if(pvSub!=NULL) initFieldOptions(pvSub,request.substr(openParam+1,closeParam-openParam-1));
if(pvSub) initFieldOptions(pvSub,request.substr(openParam+1,closeParam-openParam-1));
}
if (offsetGetField != string::npos) {
size_t openParam = request.find('(', offsetGetField);
@@ -520,7 +520,7 @@ public:
if(pvSub->getStructure()->getNumberFields()==1) {
pvSub = static_pointer_cast<PVStructure>(pvSub->getPVFields()[0]);
}
if(pvSub!=NULL) initFieldOptions(pvSub,request.substr(openParam+1,closeParam-openParam-1));
if(pvSub) initFieldOptions(pvSub,request.substr(openParam+1,closeParam-openParam-1));
}
return pvStructure;
}

View File

@@ -68,9 +68,9 @@ PVCopyPtr PVCopy::create(
if(structureName.size()>0) {
if(pvRequest->getStructure()->getNumberFields()>0) {
pvStructure = pvRequest->getStructureField(structureName);
if(pvStructure.get()==NULL) return NULLPVCopy;
if(!pvStructure) return NULLPVCopy;
}
} else if(pvStructure->getSubField("field")!=NULL) {
} else if(pvStructure->getSubField("field")) {
pvStructure = pvRequest->getStructureField("field");
}
PVCopyPtr pvCopy = PVCopyPtr(new PVCopy(pvMaster));
@@ -118,7 +118,7 @@ StructureConstPtr PVCopy::getStructure()
PVStructurePtr PVCopy::createPVStructure()
{
if(cacheInitStructure.get()!=NULL) {
if(cacheInitStructure) {
PVStructurePtr save = cacheInitStructure;
cacheInitStructure.reset();
return save;
@@ -174,7 +174,7 @@ size_t PVCopy::getCopyOffset(PVFieldPtr const &masterPVField)
}
CopyStructureNodePtr node = static_pointer_cast<CopyStructureNode>(headNode);
CopyMasterNodePtr masterNode = getCopyOffset(node,masterPVField);
if(masterNode.get()!=NULL) return masterNode->structureOffset;
if(masterNode) return masterNode->structureOffset;
return string::npos;
}
@@ -190,7 +190,7 @@ size_t PVCopy::getCopyOffset(
CopyStructureNodePtr node = static_pointer_cast<CopyStructureNode>(headNode);
masterNode = getCopyOffset(node,masterPVField);
}
if(masterNode.get()==NULL) return string::npos;
if(!masterNode) return string::npos;
size_t diff = masterPVField->getFieldOffset()
- masterPVStructure->getFieldOffset();
return masterNode->structureOffset + diff;
@@ -205,7 +205,7 @@ PVFieldPtr PVCopy::getMasterPVField(size_t structureOffset)
CopyStructureNodePtr node = static_pointer_cast<CopyStructureNode>(headNode);
masterNode = getMasterNode(node,structureOffset);
}
if(masterNode.get()==NULL) {
if(!masterNode) {
throw std::invalid_argument(
"PVCopy::getMasterPVField: setstructureOffset not valid");
}
@@ -299,7 +299,7 @@ void PVCopy::dump(string *builder,CopyNodePtr const &node,int indentLevel)
ss << " nfields " << node->nfields;
*builder += ss.str();
PVStructurePtr options = node->options;
if(options.get()!=NULL) {
if(options) {
getConvert()->newLine(builder,indentLevel +1);
// TODO !!! ugly
@@ -338,7 +338,7 @@ bool PVCopy::init(epics::pvData::PVStructurePtr const &pvRequest)
if(len==string::npos) entireMaster = true;
if(len==0) entireMaster = true;
PVStructurePtr pvOptions;
if(len==1 && pvRequest->getSubField("_options")!=NULL) {
if(len==1 && pvRequest->getSubField("_options")) {
pvOptions = pvRequest->getStructureField("_options");
}
if(entireMaster) {
@@ -353,7 +353,7 @@ bool PVCopy::init(epics::pvData::PVStructurePtr const &pvRequest)
return true;
}
structure = createStructure(pvMasterStructure,pvRequest);
if(structure==NULL) return false;
if(!structure) return false;
cacheInitStructure = createPVStructure();
headNode = createStructureNodes(
pvMaster,
@@ -387,7 +387,7 @@ StructureConstPtr PVCopy::createStructure(
for(size_t i=0; i<length; ++i) {
string const &fieldName = fromRequestFieldNames[i];
PVFieldPtr pvMasterField = pvMaster->getSubField(fieldName);
if(pvMasterField==NULL) continue;
if(!pvMasterField) continue;
FieldConstPtr field = pvMasterField->getField();
if(field->getType()==epics::pvData::structure) {
PVStructurePtr pvRequestStructure = static_pointer_cast<PVStructure>(
@@ -423,7 +423,7 @@ CopyNodePtr PVCopy::createStructureNodes(
PVFieldPtrArray const & copyPVFields = pvFromCopy->getPVFields();
PVStructurePtr pvOptions;
PVFieldPtr pvField = pvFromRequest->getSubField("_options");
if(pvField!=NULL) pvOptions = static_pointer_cast<PVStructure>(pvField);
if(pvField) pvOptions = static_pointer_cast<PVStructure>(pvField);
size_t number = copyPVFields.size();
CopyNodePtrArrayPtr nodes(new CopyNodePtrArray());
nodes->reserve(number);
@@ -435,7 +435,7 @@ CopyNodePtr PVCopy::createStructureNodes(
pvFromRequest->getSubField(fieldName));
PVStructurePtr pvSubFieldOptions;
PVFieldPtr pvField = requestPVStructure->getSubField("_options");
if(pvField!=NULL) pvSubFieldOptions = static_pointer_cast<PVStructure>(pvField);
if(pvField) pvSubFieldOptions = static_pointer_cast<PVStructure>(pvField);
PVFieldPtr pvMasterField;
PVFieldPtrArray const & pvMasterFields = pvMasterStructure->getPVFields();
for(size_t j=0; i<pvMasterFields.size(); j++ ) {
@@ -445,7 +445,7 @@ CopyNodePtr PVCopy::createStructureNodes(
}
}
size_t numberRequest = requestPVStructure->getPVFields().size();
if(pvSubFieldOptions!=NULL) numberRequest--;
if(pvSubFieldOptions) numberRequest--;
if(numberRequest>0) {
nodes->push_back(createStructureNodes(
static_pointer_cast<PVStructure>(pvMasterField),
@@ -621,7 +621,7 @@ CopyMasterNodePtr PVCopy::getCopyOffset(
static_pointer_cast<CopyStructureNode>(node);
CopyMasterNodePtr masterNode =
getCopyOffset(subNode,masterPVField);
if(masterNode.get()!=NULL) return masterNode;
if(masterNode) return masterNode;
}
}
return NULLCopyMasterNode;

View File

@@ -17,6 +17,7 @@
#include <string>
#include <cstdio>
#include <stdexcept>
#include <sstream>
#define epicsExportSharedSymbols
#include <pv/lock.h>
@@ -720,8 +721,11 @@ FieldBuilderPtr FieldBuilder::addArray(string const & name, FieldConstPtr const
case scalar:
fields.push_back(fieldCreate->createScalarArray(static_pointer_cast<const Scalar>(element)->getScalarType()));
break;
// scalarArray?
default:
throw std::invalid_argument("unsupported array element type:" + element->getType());
std::ostringstream msg("unsupported array element type: ");
msg << element->getType();
throw std::invalid_argument(msg.str());
}
fieldNames.push_back(name);
@@ -747,7 +751,11 @@ FieldConstPtr FieldBuilder::createFieldInternal(Type type)
fieldCreate->createUnion(fieldNames, fields);
}
else
throw std::invalid_argument("unsupported type: " + type);
{
std::ostringstream msg("unsupported type: ");
msg << type;
throw std::invalid_argument(msg.str());
}
}
@@ -834,7 +842,10 @@ ScalarArrayConstPtr FieldCreate::createFixedScalarArray(ScalarType elementType,
if(elementType<0 || elementType>MAX_SCALAR_TYPE)
throw std::invalid_argument("Can't construct ScalarArray from invalid ScalarType");
return ScalarArrayConstPtr(new FixedScalarArray(elementType, size), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<ScalarArray> s(new FixedScalarArray(elementType, size), Field::Deleter());
ScalarArrayConstPtr sa = s;
return sa;
}
ScalarArrayConstPtr FieldCreate::createBoundedScalarArray(ScalarType elementType, size_t size) const
@@ -842,7 +853,10 @@ ScalarArrayConstPtr FieldCreate::createBoundedScalarArray(ScalarType elementType
if(elementType<0 || elementType>MAX_SCALAR_TYPE)
throw std::invalid_argument("Can't construct ScalarArray from invalid ScalarType");
return ScalarArrayConstPtr(new BoundedScalarArray(elementType, size), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<ScalarArray> s(new BoundedScalarArray(elementType, size), Field::Deleter());
ScalarArrayConstPtr sa = s;
return sa;
}
StructureConstPtr FieldCreate::createStructure () const
@@ -855,8 +869,9 @@ StructureConstPtr FieldCreate::createStructure () const
StructureConstPtr FieldCreate::createStructure (
StringArray const & fieldNames,FieldConstPtrArray const & fields) const
{
StructureConstPtr structure(
new Structure(fieldNames,fields), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<Structure> sp(new Structure(fieldNames,fields), Field::Deleter());
StructureConstPtr structure = sp;
return structure;
}
@@ -865,24 +880,27 @@ StructureConstPtr FieldCreate::createStructure (
StringArray const & fieldNames,
FieldConstPtrArray const & fields) const
{
StructureConstPtr structure(
new Structure(fieldNames,fields,id), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<Structure> sp(new Structure(fieldNames,fields,id), Field::Deleter());
StructureConstPtr structure = sp;
return structure;
}
StructureArrayConstPtr FieldCreate::createStructureArray(
StructureConstPtr const & structure) const
{
StructureArrayConstPtr structureArray(
new StructureArray(structure), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<StructureArray> sp(new StructureArray(structure), Field::Deleter());
StructureArrayConstPtr structureArray = sp;
return structureArray;
}
UnionConstPtr FieldCreate::createUnion (
StringArray const & fieldNames,FieldConstPtrArray const & fields) const
{
UnionConstPtr punion(
new Union(fieldNames,fields), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<Union> sp(new Union(fieldNames,fields), Field::Deleter());
UnionConstPtr punion = sp;
return punion;
}
@@ -891,8 +909,9 @@ UnionConstPtr FieldCreate::createUnion (
StringArray const & fieldNames,
FieldConstPtrArray const & fields) const
{
UnionConstPtr punion(
new Union(fieldNames,fields,id), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<Union> sp(new Union(fieldNames,fields,id), Field::Deleter());
UnionConstPtr punion = sp;
return punion;
}
@@ -904,8 +923,9 @@ UnionConstPtr FieldCreate::createVariantUnion () const
UnionArrayConstPtr FieldCreate::createUnionArray(
UnionConstPtr const & punion) const
{
UnionArrayConstPtr unionArray(
new UnionArray(punion), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<UnionArray> sp(new UnionArray(punion), Field::Deleter());
UnionArrayConstPtr unionArray = sp;
return unionArray;
}
@@ -1047,13 +1067,23 @@ FieldConstPtr FieldCreate::deserialize(ByteBuffer* buffer, DeserializableControl
if (isVariable)
return scalarArrays[scalarType];
else if (isFixed)
return FieldConstPtr(
{
// TODO use std::make_shared
std::tr1::shared_ptr<Field> sp(
new FixedScalarArray(static_cast<epics::pvData::ScalarType>(scalarType), size),
Field::Deleter());
FieldConstPtr p = sp;
return p;
}
else
return FieldConstPtr(
{
// TODO use std::make_shared
std::tr1::shared_ptr<Field> sp(
new BoundedScalarArray(static_cast<epics::pvData::ScalarType>(scalarType), size),
Field::Deleter());
FieldConstPtr p = sp;
return p;
}
}
else if (typeCode == 0x80)
{
@@ -1063,7 +1093,10 @@ FieldConstPtr FieldCreate::deserialize(ByteBuffer* buffer, DeserializableControl
// Type type = Type.structureArray;
StructureConstPtr elementStructure = std::tr1::static_pointer_cast<const Structure>(control->cachedDeserialize(buffer));
return FieldConstPtr(new StructureArray(elementStructure), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<Field> sp(new StructureArray(elementStructure), Field::Deleter());
FieldConstPtr p = sp;
return p;
}
else if (typeCode == 0x81)
{
@@ -1073,7 +1106,10 @@ FieldConstPtr FieldCreate::deserialize(ByteBuffer* buffer, DeserializableControl
// Type type = Type.unionArray;
UnionConstPtr elementUnion = std::tr1::static_pointer_cast<const Union>(control->cachedDeserialize(buffer));
return FieldConstPtr(new UnionArray(elementUnion), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<Field> sp(new UnionArray(elementUnion), Field::Deleter());
FieldConstPtr p = sp;
return p;
}
else if (typeCode == 0x82)
{
@@ -1105,11 +1141,24 @@ FieldCreate::FieldCreate()
{
for (int i = 0; i <= MAX_SCALAR_TYPE; i++)
{
scalars.push_back(ScalarConstPtr(new Scalar(static_cast<ScalarType>(i)), Field::Deleter()));
scalarArrays.push_back(ScalarArrayConstPtr(new ScalarArray(static_cast<ScalarType>(i)), Field::Deleter()));
// TODO use std::make_shared
std::tr1::shared_ptr<Scalar> sp(new Scalar(static_cast<ScalarType>(i)), Field::Deleter());
ScalarConstPtr p = sp;
scalars.push_back(p);
// TODO use std::make_shared
std::tr1::shared_ptr<ScalarArray> spa(new ScalarArray(static_cast<ScalarType>(i)), Field::Deleter());
ScalarArrayConstPtr pa = spa;
scalarArrays.push_back(spa);
}
variantUnion = UnionConstPtr(new Union(), Field::Deleter());
variantUnionArray = UnionArrayConstPtr(new UnionArray(variantUnion), Field::Deleter());
// TODO use std::make_shared
std::tr1::shared_ptr<Union> su(new Union(), Field::Deleter());
variantUnion = su;
// TODO use std::make_shared
std::tr1::shared_ptr<UnionArray> sua(new UnionArray(variantUnion), Field::Deleter());
variantUnionArray = sua;
}
FieldCreatePtr getFieldCreate() {

View File

@@ -693,7 +693,7 @@ PVStructurePtr PVDataCreate::createPVStructure(
PVStructurePtr PVDataCreate::createPVStructure(PVStructurePtr const & structToClone)
{
FieldConstPtrArray field;
if(structToClone==0) {
if(!structToClone) {
// is this correct?!
FieldConstPtrArray fields(0);
StringArray fieldNames(0);

View File

@@ -54,14 +54,14 @@ void Executor::run()
{
Lock xx(mutex);
while(true) {
while(head.get()==NULL) {
while(!head.get()) {
xx.unlock();
moreWork.wait();
xx.lock();
}
CommandPtr command = head;
head = command->next;
if(command.get()==NULL) continue;
if(!command.get()) continue;
if(command.get()==shutdown.get()) break;
xx.unlock();
try {
@@ -82,13 +82,13 @@ void Executor::execute(CommandPtr const & command)
{
Lock xx(mutex);
command->next.reset();
if(head.get()==NULL) {
if(!head.get()) {
head = command;
moreWork.signal();
return;
}
CommandPtr tail = head;
while(tail->next!=NULL) tail = tail->next;
while(tail->next) tail = tail->next;
tail->next = command;
}

View File

@@ -17,7 +17,7 @@
using std::string;
// need to use "long long" when sizeof(int)==sizeof(long)
#if (ULONG_MAX == 0xfffffffful) || defined(_WIN32) || defined(__rtems__)
#if (ULONG_MAX == 0xfffffffful) || defined(_WIN32) || defined(__rtems__) || defined(__APPLE__)
#define NEED_LONGLONG
#endif

View File

@@ -65,9 +65,10 @@ namespace epics { namespace pvData {
};
class epicsShareClass SerializableArray : virtual public Serializable {
class epicsShareClass SerializableArray : public virtual Serializable {
public:
virtual ~SerializableArray(){}
using Serializable::serialize;
virtual void serialize(ByteBuffer *buffer,
SerializableControl *flusher, std::size_t offset, std::size_t count) const = 0;
};

View File

@@ -44,6 +44,23 @@
# undef SHARED_FROM_TR1
#endif
#if defined(__clang__)
# undef SHARED_FROM_BOOST
# undef SHARED_FROM_TR1
// import std classes into std::tr1
namespace std {
namespace tr1 {
using std::shared_ptr;
using std::weak_ptr;
using std::static_pointer_cast;
using std::dynamic_pointer_cast;
using std::const_pointer_cast;
using std::enable_shared_from_this;
}
}
#endif
// go and get it
#if defined(SHARED_FROM_TR1)

View File

@@ -23,7 +23,7 @@ MonitorPluginManagerPtr MonitorPluginManager::get()
static MonitorPluginManagerPtr pluginManager;
static Mutex mutex;
Lock xx(mutex);
if(pluginManager==NULL) {
if(!pluginManager) {
pluginManager = MonitorPluginManagerPtr(new MonitorPluginManager());
}
return pluginManager;

View File

@@ -507,6 +507,7 @@ public:
*/
virtual void setCapacity(std::size_t capacity) = 0;
using PVField::dumpValue;
virtual std::ostream& dumpValue(std::ostream& o, std::size_t index) const = 0;
protected:

View File

@@ -29,7 +29,7 @@ void testCreateRequest() {
if(debug) { cout << "request " << request <<endl;}
PVStructurePtr pvRequest = createRequest->createRequest(request);
if(debug) { cout<< createRequest->getMessage() << endl;}
testOk1(pvRequest!=NULL);
testOk1(pvRequest.get()!=0);
if(debug) { cout << *pvRequest << endl;}
testOk1(pvRequest->getStructure()->getNumberFields()==0);
testPass("request %s",request.c_str());
@@ -37,11 +37,11 @@ void testCreateRequest() {
request = "record[a=b,x=y]field(a) putField(a),getField(a)";
pvRequest = createRequest->createRequest(request);
if(pvRequest==NULL) {
if(!pvRequest) {
cout << createRequest->getMessage() << endl;
}
if(debug) { cout << "request " << request <<endl;}
testOk1(pvRequest!=NULL);
testOk1(pvRequest.get()!=0);
if(debug) { cout << *pvRequest << endl;}
PVStringPtr pvString = pvRequest->getSubField<PVString>("record._options.a");
string sval = pvString->get();
@@ -49,18 +49,18 @@ void testCreateRequest() {
pvString = pvRequest->getSubField<PVString>("record._options.x");
sval = pvString->get();
testOk(sval.compare("y")==0,"record.x = y");
testOk1(pvRequest->getSubField("field.a")!=NULL);
testOk1(pvRequest->getSubField("putField.a")!=NULL);
testOk1(pvRequest->getSubField("getField.a")!=NULL);
testOk1(pvRequest->getSubField("field.a").get()!=0);
testOk1(pvRequest->getSubField("putField.a").get()!=0);
testOk1(pvRequest->getSubField("getField.a").get()!=0);
testPass("request %s",request.c_str());
request = "field(a.b[x=y])";
pvRequest = createRequest->createRequest(request);
if(pvRequest==NULL) {
if(!pvRequest) {
cout << createRequest->getMessage() << endl;
}
if(debug) { cout << "request " << request <<endl;}
testOk1(pvRequest!=NULL);
testOk1(pvRequest.get()!=0);
if(debug) { cout << *pvRequest << endl;}
pvString = pvRequest->getSubField<PVString>("field.a.b._options.x");
sval = pvString->get();
@@ -70,35 +70,35 @@ void testCreateRequest() {
request = "field(a.b{c.d})";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << "request " << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest->getSubField("field.a.b.c.d")!=NULL);
testOk1(pvRequest.get()!=0);
testOk1(pvRequest->getSubField("field.a.b.c.d").get()!=0);
if(debug) { cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
request = "field(a.b[x=y]{c.d})";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << "request " << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest.get()!=0);
pvString = pvRequest->getSubField<PVString>("field.a.b._options.x");
sval = pvString->get();
testOk(sval.compare("y")==0,"field.a.b._options.x = y");
testOk1(pvRequest->getSubField("field.a.b.c.d")!=NULL);
testOk1(pvRequest->getSubField("field.a.b.c.d").get()!=0);
if(debug) { cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
request = "field(a.b[x=y]{c.d[x=y]})";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << "request " << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest.get()!=0);
pvString = pvRequest->getSubField<PVString>("field.a.b._options.x");
sval = pvString->get();
testOk(sval.compare("y")==0,"field.a.b._options.x = y");
@@ -111,10 +111,10 @@ void testCreateRequest() {
request = "record[a=b,c=d] field(a.a[a=b]{a.a[a=b]},b.a[a=b]{a,b})";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << "request " << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest.get()!=0);
pvString = pvRequest->getSubField<PVString>("field.a.a._options.a");
sval = pvString->get();
testOk(sval.compare("b")==0,"field.a.a._options.a = b");
@@ -124,8 +124,8 @@ void testCreateRequest() {
pvString = pvRequest->getSubField<PVString>("field.b.a._options.a");
sval = pvString->get();
testOk(sval.compare("b")==0,"field.b.a._options.a = b");
testOk1(pvRequest->getSubField("field.b.a.a")!=NULL);
testOk1(pvRequest->getSubField("field.b.a.b")!=NULL);
testOk1(pvRequest->getSubField("field.b.a.a").get()!=0);
testOk1(pvRequest->getSubField("field.b.a.b").get()!=0);
if(debug) { cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
@@ -133,73 +133,73 @@ void testCreateRequest() {
request = "alarm,timeStamp,power.value";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << endl << string("request") <<endl << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << "reason " << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest->getSubField("field.alarm")!=NULL);
testOk1(pvRequest->getSubField("field.timeStamp")!=NULL);
testOk1(pvRequest->getSubField("field.power.value")!=NULL);
testOk1(pvRequest.get()!=0);
testOk1(pvRequest->getSubField("field.alarm").get()!=0);
testOk1(pvRequest->getSubField("field.timeStamp").get()!=0);
testOk1(pvRequest->getSubField("field.power.value").get()!=0);
if(debug) { cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
request = "record[process=true]field(alarm,timeStamp,power.value)";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << endl << string("request") <<endl << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << "reason " << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest.get()!=0);
pvString = pvRequest->getSubField<PVString>("record.process");
sval = pvString->get();
testOk(sval.compare("true")==0,"record.process = true");
testOk1(pvRequest->getSubField("field.alarm")!=NULL);
testOk1(pvRequest->getSubField("field.timeStamp")!=NULL);
testOk1(pvRequest->getSubField("field.power.value")!=NULL);
testOk1(pvRequest->getSubField("field.alarm").get()!=0);
testOk1(pvRequest->getSubField("field.timeStamp").get()!=0);
testOk1(pvRequest->getSubField("field.power.value").get()!=0);
if(debug) {cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
request = "record[process=true]field(alarm,timeStamp[algorithm=onChange,causeMonitor=false],power{value,alarm})";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << string("request") <<endl << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << "reason " << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest.get()!=0);
pvString = pvRequest->getSubField<PVString>("record.process");
sval = pvString->get();
testOk(sval.compare("true")==0,"record.process = true");
testOk1(pvRequest->getSubField("field.alarm")!=NULL);
testOk1(pvRequest->getSubField("field.timeStamp")!=NULL);
testOk1(pvRequest->getSubField("field.alarm").get()!=0);
testOk1(pvRequest->getSubField("field.timeStamp").get()!=0);
pvString = pvRequest->getSubField<PVString>("field.timeStamp._options.algorithm");
sval = pvString->get();
testOk(sval.compare("onChange")==0,"field.timeStamp._options.algorithm = onChange");
pvString = pvRequest->getSubField<PVString>("field.timeStamp._options.causeMonitor");
sval = pvString->get();
testOk(sval.compare("false")==0,"field.timeStamp._options.causeMonitor = false");
testOk1(pvRequest->getSubField("field.power.value")!=NULL);
testOk1(pvRequest->getSubField("field.power.alarm")!=NULL);
testOk1(pvRequest->getSubField("field.power.value").get()!=0);
testOk1(pvRequest->getSubField("field.power.alarm").get()!=0);
if(debug) {cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
request = "record[int=2,float=3.14159]field(alarm,timeStamp[shareData=true],power.value)";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << string("request") <<endl << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << "reason " << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest.get()!=0);
pvString = pvRequest->getSubField<PVString>("record.int");
sval = pvString->get();
testOk(sval.compare("2")==0,"record.int = 2");
pvString = pvRequest->getSubField<PVString>("record.float");
sval = pvString->get();
testOk(sval.compare("3.14159")==0,"record.float = 3.14159");
testOk1(pvRequest->getSubField("field.alarm")!=NULL);
testOk1(pvRequest->getSubField("field.alarm").get()!=0);
pvString = pvRequest->getSubField<PVString>("field.timeStamp._options.shareData");
sval = pvString->get();
testOk(sval.compare("true")==0,"field.timeStamp._options.shareData = true");
testOk1(pvRequest->getSubField("field.power.value")!=NULL);
testOk1(pvRequest->getSubField("field.power.value").get()!=0);
if(debug) {cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
@@ -209,19 +209,19 @@ void testCreateRequest() {
+ "current{value,alarm},voltage{value,alarm})";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << string("request") <<endl << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << "reason " << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest->getSubField("putField.power.value")!=NULL);
testOk1(pvRequest->getSubField("getField.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.timeStamp")!=NULL);
testOk1(pvRequest->getSubField("getField.power.value")!=NULL);
testOk1(pvRequest->getSubField("getField.power.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.current.value")!=NULL);
testOk1(pvRequest->getSubField("getField.current.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.voltage.value")!=NULL);
testOk1(pvRequest->getSubField("getField.voltage.alarm")!=NULL);
testOk1(pvRequest.get()!=0);
testOk1(pvRequest->getSubField("putField.power.value").get()!=0);
testOk1(pvRequest->getSubField("getField.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.timeStamp").get()!=0);
testOk1(pvRequest->getSubField("getField.power.value").get()!=0);
testOk1(pvRequest->getSubField("getField.power.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.current.value").get()!=0);
testOk1(pvRequest->getSubField("getField.current.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.voltage.value").get()!=0);
testOk1(pvRequest->getSubField("getField.voltage.alarm").get()!=0);
if(debug) {cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
@@ -231,18 +231,18 @@ void testCreateRequest() {
+ "})";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << string("request") <<endl << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << "reason " << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest->getSubField("field.alarm")!=NULL);
testOk1(pvRequest->getSubField("field.timeStamp")!=NULL);
testOk1(pvRequest->getSubField("field.supply.0.voltage.value")!=NULL);
testOk1(pvRequest->getSubField("field.supply.0.current.value")!=NULL);
testOk1(pvRequest->getSubField("field.supply.0.power.value")!=NULL);
testOk1(pvRequest->getSubField("field.supply.1.voltage.value")!=NULL);
testOk1(pvRequest->getSubField("field.supply.1.current.value")!=NULL);
testOk1(pvRequest->getSubField("field.supply.1.power.value")!=NULL);
testOk1(pvRequest.get()!=0);
testOk1(pvRequest->getSubField("field.alarm").get()!=0);
testOk1(pvRequest->getSubField("field.timeStamp").get()!=0);
testOk1(pvRequest->getSubField("field.supply.0.voltage.value").get()!=0);
testOk1(pvRequest->getSubField("field.supply.0.current.value").get()!=0);
testOk1(pvRequest->getSubField("field.supply.0.power.value").get()!=0);
testOk1(pvRequest->getSubField("field.supply.1.voltage.value").get()!=0);
testOk1(pvRequest->getSubField("field.supply.1.current.value").get()!=0);
testOk1(pvRequest->getSubField("field.supply.1.power.value").get()!=0);
if(debug) {cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
@@ -255,43 +255,43 @@ void testCreateRequest() {
+ ")";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << string("request") <<endl << request <<endl;}
if(pvRequest==NULL) {
if(!pvRequest) {
cout << "reason " << createRequest->getMessage() << endl;
}
testOk1(pvRequest!=NULL);
testOk1(pvRequest->getSubField("putField.power.value")!=NULL);
testOk1(pvRequest->getSubField("getField.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.timeStamp")!=NULL);
testOk1(pvRequest->getSubField("getField.power.value")!=NULL);
testOk1(pvRequest->getSubField("getField.power.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.current.value")!=NULL);
testOk1(pvRequest->getSubField("getField.current.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.voltage.value")!=NULL);
testOk1(pvRequest->getSubField("getField.voltage.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.ps0.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.ps0.timeStamp")!=NULL);
testOk1(pvRequest->getSubField("getField.ps0.power.value")!=NULL);
testOk1(pvRequest->getSubField("getField.ps0.power.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.ps0.current.value")!=NULL);
testOk1(pvRequest->getSubField("getField.ps0.current.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.ps0.voltage.value")!=NULL);
testOk1(pvRequest->getSubField("getField.ps0.voltage.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.ps1.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.ps1.timeStamp")!=NULL);
testOk1(pvRequest->getSubField("getField.ps1.power.value")!=NULL);
testOk1(pvRequest->getSubField("getField.ps1.power.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.ps1.current.value")!=NULL);
testOk1(pvRequest->getSubField("getField.ps1.current.alarm")!=NULL);
testOk1(pvRequest->getSubField("getField.ps1.voltage.value")!=NULL);
testOk1(pvRequest->getSubField("getField.ps1.voltage.alarm")!=NULL);
testOk1(pvRequest.get()!=0);
testOk1(pvRequest->getSubField("putField.power.value").get()!=0);
testOk1(pvRequest->getSubField("getField.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.timeStamp").get()!=0);
testOk1(pvRequest->getSubField("getField.power.value").get()!=0);
testOk1(pvRequest->getSubField("getField.power.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.current.value").get()!=0);
testOk1(pvRequest->getSubField("getField.current.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.voltage.value").get()!=0);
testOk1(pvRequest->getSubField("getField.voltage.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.ps0.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.ps0.timeStamp").get()!=0);
testOk1(pvRequest->getSubField("getField.ps0.power.value").get()!=0);
testOk1(pvRequest->getSubField("getField.ps0.power.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.ps0.current.value").get()!=0);
testOk1(pvRequest->getSubField("getField.ps0.current.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.ps0.voltage.value").get()!=0);
testOk1(pvRequest->getSubField("getField.ps0.voltage.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.ps1.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.ps1.timeStamp").get()!=0);
testOk1(pvRequest->getSubField("getField.ps1.power.value").get()!=0);
testOk1(pvRequest->getSubField("getField.ps1.power.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.ps1.current.value").get()!=0);
testOk1(pvRequest->getSubField("getField.ps1.current.alarm").get()!=0);
testOk1(pvRequest->getSubField("getField.ps1.voltage.value").get()!=0);
testOk1(pvRequest->getSubField("getField.ps1.voltage.alarm").get()!=0);
if(debug) {cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
request = "a{b{c{d}}}";
pvRequest = createRequest->createRequest(request);
if(debug) { cout << string("request") <<endl << request <<endl;}
testOk1(pvRequest!=NULL);
testOk1(pvRequest->getSubField("field.a.b.c.d")!=NULL);
testOk1(pvRequest.get()!=0);
testOk1(pvRequest->getSubField("field.a.b.c.d").get()!=0);
if(debug) {cout << *pvRequest << endl;}
testPass("request %s",request.c_str());
@@ -305,7 +305,7 @@ void testCreateRequest() {
if(debug) { cout << endl << "Error Expected for next call!!" << endl;}
if(debug) { cout << string("request") <<endl << request <<endl;}
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get()==NULL);
assert(!pvRequest);
if(debug) {cout << "reason " << createRequest->getMessage() << endl;}
testPass("request %s",request.c_str());
@@ -313,7 +313,7 @@ void testCreateRequest() {
if(debug) { cout << string("request") <<endl << request <<endl;}
if(debug) { cout << endl << "Error Expected for next call!!" << endl;}
pvRequest = createRequest->createRequest(request);
assert(pvRequest.get()==NULL);
assert(!pvRequest);
if(debug) { cout << "reason " << createRequest->getMessage() << endl;}
testPass("request %s",request.c_str());
}

View File

@@ -60,7 +60,7 @@ void test_structure()
StructureConstPtr s2 = fb->add("s", s)->
addArray("sArray", s)->
createStructure();
testOk1(s2 != 0);
testOk1(s2.get()!=0);
testOk1(Structure::DEFAULT_ID == s2->getID());
testOk1(2 == s2->getFields().size());

View File

@@ -197,45 +197,45 @@ static void testPVScalarWithProperties(
}
PVLongPtr seconds = pvStructure->getLongField(
string("timeStamp.secondsPastEpoch"));
testOk1(seconds!=0);
testOk1(seconds.get()!=0);
seconds->put(123456789);
PVIntPtr nano = pvStructure->getIntField(string("timeStamp.nanoSeconds"));
testOk1(nano!=0);
testOk1(nano.get()!=0);
nano->put(1000000);
PVIntPtr severity = pvStructure->getIntField(string("alarm.severity"));
testOk1(severity!=0);
testOk1(severity.get()!=0);
severity->put(2);
PVStringPtr message = pvStructure->getStringField(string("alarm.message"));
testOk1(message!=0);
testOk1(message.get()!=0);
message->put(string("messageForAlarm"));
if(hasDisplayControl) {
PVStringPtr desc = pvStructure->getStringField(
string("display.description"));
testOk1(desc!=0);
testOk1(desc.get()!=0);
desc->put(string("this is a description"));
PVStringPtr format = pvStructure->getStringField(
string("display.format"));
testOk1(format!=0);
testOk1(format.get()!=0);
format->put(string("f10.2"));
PVStringPtr units = pvStructure->getStringField(
string("display.units"));
testOk1(units!=0);
testOk1(units.get()!=0);
units->put(string("SomeUnits"));
PVDoublePtr limit = pvStructure->getDoubleField(
string("display.limitLow"));
testOk1(limit!=0);
testOk1(limit.get()!=0);
limit->put(0.0);
limit = pvStructure->getDoubleField(
string("display.limitHigh"));
testOk1(limit!=0);
testOk1(limit.get()!=0);
limit->put(10.0);
limit = pvStructure->getDoubleField(
string("control.limitLow"));
testOk1(limit!=0);
testOk1(limit.get()!=0);
limit->put(1.0);
limit = pvStructure->getDoubleField(
string("control.limitHigh"));
testOk1(limit!=0);
testOk1(limit.get()!=0);
limit->put(9.0);
}
if(hasValueAlarm) {
@@ -255,15 +255,15 @@ static void testPVScalarWithProperties(
convert->fromDouble(pvtemp,9.0);
severity = pvStructure->getIntField(
string("valueAlarm.lowAlarmSeverity"));
testOk1(severity!=0);
testOk1(severity.get()!=0);
severity->put(2);
severity = pvStructure->getIntField(
string("valueAlarm.highAlarmSeverity"));
testOk1(severity!=0);
testOk1(severity.get()!=0);
severity->put(2);
PVBooleanPtr active = pvStructure->getBooleanField(
string("valueAlarm.active"));
testOk1(active!=0);
testOk1(active.get()!=0);
active->put(true);
}
if(hasBooleanAlarm) {
@@ -273,15 +273,15 @@ static void testPVScalarWithProperties(
pvBoolean->put(true);
severity = pvStructure->getIntField(
string("valueAlarm.falseSeverity"));
testOk1(severity!=0);
testOk1(severity.get()!=0);
severity->put(0);
severity = pvStructure->getIntField(
string("valueAlarm.trueSeverity"));
testOk1(severity!=0);
testOk1(severity.get()!=0);
severity->put(2);
severity = pvStructure->getIntField(
string("valueAlarm.changeStateSeverity"));
testOk1(severity!=0);
testOk1(severity.get()!=0);
severity->put(1);
}
if(debug)
@@ -345,7 +345,7 @@ static void testScalarArrayCommon(string /*fieldName*/,ScalarType stype)
if(debug)
std::cout << *pvStructure << std::endl;
PVFieldPtr pvField = pvStructure->getSubField("alarm.status");
testOk1(pvField!=NULL);
testOk1(pvField.get()!=0);
}
static void testScalarArray()

View File

@@ -108,7 +108,7 @@ static void testBasic()
{
typename PVT::const_svector avoid;
arr1->PVScalarArray::getAs<typename PVT::value_type>(avoid);
arr1->PVScalarArray::template getAs<typename PVT::value_type>(avoid);
testOk1(avoid.data()==cdata.data());
testOk1(avoid.data()==arr1->view().data());
}
@@ -133,7 +133,7 @@ static void testBasic()
testOk1(cdata.size()==arr1->getLength());
PVIntArray::const_svector idata;
arr1->PVScalarArray::getAs<int32>(idata);
arr1->PVScalarArray::template getAs<int32>(idata);
testOk1(idata.at(1)==10);
@@ -143,7 +143,7 @@ static void testBasic()
idata = freeze(wdata);
arr1->PVScalarArray::putFrom<int32>(idata);
arr1->PVScalarArray::template putFrom<int32>(idata);
testOk1(castUnsafe<PVIntArray::value_type>(arr1->view()[1])==42);
}