diff --git a/src/copy/createRequest.cpp b/src/copy/createRequest.cpp index 567d7f6..37b1c5f 100644 --- a/src/copy/createRequest.cpp +++ b/src/copy/createRequest.cpp @@ -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("_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(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(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(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; } diff --git a/src/copy/pvCopy.cpp b/src/copy/pvCopy.cpp index 64092d8..9c36913 100644 --- a/src/copy/pvCopy.cpp +++ b/src/copy/pvCopy.cpp @@ -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(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(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(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; igetSubField(fieldName); - if(pvMasterField==NULL) continue; + if(!pvMasterField) continue; FieldConstPtr field = pvMasterField->getField(); if(field->getType()==epics::pvData::structure) { PVStructurePtr pvRequestStructure = static_pointer_cast( @@ -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(pvField); + if(pvField) pvOptions = static_pointer_cast(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(pvField); + if(pvField) pvSubFieldOptions = static_pointer_cast(pvField); PVFieldPtr pvMasterField; PVFieldPtrArray const & pvMasterFields = pvMasterStructure->getPVFields(); for(size_t j=0; igetPVFields().size(); - if(pvSubFieldOptions!=NULL) numberRequest--; + if(pvSubFieldOptions) numberRequest--; if(numberRequest>0) { nodes->push_back(createStructureNodes( static_pointer_cast(pvMasterField), @@ -621,7 +621,7 @@ CopyMasterNodePtr PVCopy::getCopyOffset( static_pointer_cast(node); CopyMasterNodePtr masterNode = getCopyOffset(subNode,masterPVField); - if(masterNode.get()!=NULL) return masterNode; + if(masterNode) return masterNode; } } return NULLCopyMasterNode; diff --git a/src/factory/FieldCreateFactory.cpp b/src/factory/FieldCreateFactory.cpp index 3aa4216..36e9971 100644 --- a/src/factory/FieldCreateFactory.cpp +++ b/src/factory/FieldCreateFactory.cpp @@ -17,6 +17,7 @@ #include #include #include +#include #define epicsExportSharedSymbols #include @@ -720,8 +721,11 @@ FieldBuilderPtr FieldBuilder::addArray(string const & name, FieldConstPtr const case scalar: fields.push_back(fieldCreate->createScalarArray(static_pointer_cast(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 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 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 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 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 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 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 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 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 sp( new FixedScalarArray(static_cast(scalarType), size), Field::Deleter()); + FieldConstPtr p = sp; + return p; + } else - return FieldConstPtr( + { + // TODO use std::make_shared + std::tr1::shared_ptr sp( new BoundedScalarArray(static_cast(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(control->cachedDeserialize(buffer)); - return FieldConstPtr(new StructureArray(elementStructure), Field::Deleter()); + // TODO use std::make_shared + std::tr1::shared_ptr 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(control->cachedDeserialize(buffer)); - return FieldConstPtr(new UnionArray(elementUnion), Field::Deleter()); + // TODO use std::make_shared + std::tr1::shared_ptr 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(i)), Field::Deleter())); - scalarArrays.push_back(ScalarArrayConstPtr(new ScalarArray(static_cast(i)), Field::Deleter())); + // TODO use std::make_shared + std::tr1::shared_ptr sp(new Scalar(static_cast(i)), Field::Deleter()); + ScalarConstPtr p = sp; + scalars.push_back(p); + + // TODO use std::make_shared + std::tr1::shared_ptr spa(new ScalarArray(static_cast(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 su(new Union(), Field::Deleter()); + variantUnion = su; + + // TODO use std::make_shared + std::tr1::shared_ptr sua(new UnionArray(variantUnion), Field::Deleter()); + variantUnionArray = sua; } FieldCreatePtr getFieldCreate() { diff --git a/src/factory/PVDataCreateFactory.cpp b/src/factory/PVDataCreateFactory.cpp index aa0262f..97f3800 100644 --- a/src/factory/PVDataCreateFactory.cpp +++ b/src/factory/PVDataCreateFactory.cpp @@ -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); diff --git a/src/misc/executor.cpp b/src/misc/executor.cpp index 3dbf207..d41f16e 100644 --- a/src/misc/executor.cpp +++ b/src/misc/executor.cpp @@ -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; } diff --git a/src/misc/parseToPOD.cpp b/src/misc/parseToPOD.cpp index 26f391a..8180a6f 100644 --- a/src/misc/parseToPOD.cpp +++ b/src/misc/parseToPOD.cpp @@ -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 diff --git a/src/misc/serialize.h b/src/misc/serialize.h index 0965e13..0f3401e 100644 --- a/src/misc/serialize.h +++ b/src/misc/serialize.h @@ -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; }; diff --git a/src/misc/sharedPtr.h b/src/misc/sharedPtr.h index c46c251..b3928c7 100644 --- a/src/misc/sharedPtr.h +++ b/src/misc/sharedPtr.h @@ -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) diff --git a/src/monitor/monitorPlugin.cpp b/src/monitor/monitorPlugin.cpp index 098e50d..d2fd725 100644 --- a/src/monitor/monitorPlugin.cpp +++ b/src/monitor/monitorPlugin.cpp @@ -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; diff --git a/src/pv/pvData.h b/src/pv/pvData.h index e2e1219..43e0600 100644 --- a/src/pv/pvData.h +++ b/src/pv/pvData.h @@ -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: diff --git a/testApp/copy/testCreateRequest.cpp b/testApp/copy/testCreateRequest.cpp index fd0e178..9f341d4 100644 --- a/testApp/copy/testCreateRequest.cpp +++ b/testApp/copy/testCreateRequest.cpp @@ -29,7 +29,7 @@ void testCreateRequest() { if(debug) { cout << "request " << request <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 <getSubField("record._options.a"); string sval = pvString->get(); @@ -49,18 +49,18 @@ void testCreateRequest() { pvString = pvRequest->getSubField("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 <getSubField("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 <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 <getMessage() << endl; } - testOk1(pvRequest!=NULL); + testOk1(pvRequest.get()!=0); pvString = pvRequest->getSubField("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 <getMessage() << endl; } - testOk1(pvRequest!=NULL); + testOk1(pvRequest.get()!=0); pvString = pvRequest->getSubField("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 <getMessage() << endl; } - testOk1(pvRequest!=NULL); + testOk1(pvRequest.get()!=0); pvString = pvRequest->getSubField("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("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") <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") <getMessage() << endl; } - testOk1(pvRequest!=NULL); + testOk1(pvRequest.get()!=0); pvString = pvRequest->getSubField("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") <getMessage() << endl; } - testOk1(pvRequest!=NULL); + testOk1(pvRequest.get()!=0); pvString = pvRequest->getSubField("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("field.timeStamp._options.algorithm"); sval = pvString->get(); testOk(sval.compare("onChange")==0,"field.timeStamp._options.algorithm = onChange"); pvString = pvRequest->getSubField("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") <getMessage() << endl; } - testOk1(pvRequest!=NULL); + testOk1(pvRequest.get()!=0); pvString = pvRequest->getSubField("record.int"); sval = pvString->get(); testOk(sval.compare("2")==0,"record.int = 2"); pvString = pvRequest->getSubField("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("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") <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") <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") <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") <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") <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") <createRequest(request); - assert(pvRequest.get()==NULL); + assert(!pvRequest); if(debug) { cout << "reason " << createRequest->getMessage() << endl;} testPass("request %s",request.c_str()); } diff --git a/testApp/pv/testFieldBuilder.cpp b/testApp/pv/testFieldBuilder.cpp index 5451704..1afa980 100644 --- a/testApp/pv/testFieldBuilder.cpp +++ b/testApp/pv/testFieldBuilder.cpp @@ -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()); diff --git a/testApp/pv/testPVData.cpp b/testApp/pv/testPVData.cpp index 60fcfc4..fbd9c92 100644 --- a/testApp/pv/testPVData.cpp +++ b/testApp/pv/testPVData.cpp @@ -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() diff --git a/testApp/pv/testPVScalarArray.cpp b/testApp/pv/testPVScalarArray.cpp index 44f21b2..084266e 100644 --- a/testApp/pv/testPVScalarArray.cpp +++ b/testApp/pv/testPVScalarArray.cpp @@ -108,7 +108,7 @@ static void testBasic() { typename PVT::const_svector avoid; - arr1->PVScalarArray::getAs(avoid); + arr1->PVScalarArray::template getAs(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(idata); + arr1->PVScalarArray::template getAs(idata); testOk1(idata.at(1)==10); @@ -143,7 +143,7 @@ static void testBasic() idata = freeze(wdata); - arr1->PVScalarArray::putFrom(idata); + arr1->PVScalarArray::template putFrom(idata); testOk1(castUnsafe(arr1->view()[1])==42); }