diff --git a/documentation/mainpage.h b/documentation/mainpage.h index 21c4ffe..2d60153 100644 --- a/documentation/mainpage.h +++ b/documentation/mainpage.h @@ -4,6 +4,7 @@ @mainpage pvDataCPP documentation - [Download](https://sourceforge.net/projects/epics-pvdata/files/) +- @htmlonly API components @endhtmlonly - @ref release_notes The epics::pvData namespace. diff --git a/documentation/release_notes.h b/documentation/release_notes.h index 9d6367c..940eb8b 100644 --- a/documentation/release_notes.h +++ b/documentation/release_notes.h @@ -5,20 +5,22 @@ Release 7.0 (XYZ 2017) ====================== -- Add pv/pvdVersion.h which is included by pv/pvIntrospect.h -- Remove monitor.h. Migrated to the pvAccessCPP module. -- Remove destroyable.h. Migrated to the pvAccessCPP module. -- Previously deprecated monitorPlugin.h is removed. -- Remove pv/messageQueue.h and epics::pvData::MessageQueue +- Removals + - Remove requester.h, monitor.h, and destroyable.h.. Migrated to the pvAccessCPP module. + - Previously deprecated monitorPlugin.h is removed. + - Remove pv/messageQueue.h and epics::pvData::MessageQueue - Deprecate the following utility classes, to be removed in 8.0. - epics::pvData::Queue - epics::pvData::Executor - epics::pvData::TimeFunction -- Add epics::pvData::createRequest() function. Alternative to CreateRequest class which throws on error. -- epics::pvData::FieldBuilder allow Structure defintion to be changed/appended -- Add epics::pvData::ValueBuilder like FieldBuilder also sets initial values. - - Can also be constructed using an existing PVStructure to allow "editing". -- Add debugPtr.h wrapper with reference tracking to assist in troubleshooting shared_ptr related ref. loops. +- Additions + - Add pv/pvdVersion.h which is included by pv/pvIntrospect.h + - Add epics::pvData::createRequest() function. Alternative to epics::pvData::CreateRequest class which throws on error. + - epics::pvData::FieldBuilder allow Structure defintion to be changed/appended + - Add epics::pvData::ValueBuilder like FieldBuilder also sets initial values. + - Can also be constructed using an existing PVStructure to allow "editing". + - Add debugPtr.h wrapper with reference tracking to assist in troubleshooting shared_ptr related ref. loops. + - Add @ref pvjson utilities Release 6.0 (Aug. 2016) ======================= diff --git a/src/pv/pvData.h b/src/pv/pvData.h index 05df98b..e75c99b 100644 --- a/src/pv/pvData.h +++ b/src/pv/pvData.h @@ -67,6 +67,11 @@ typedef class std::ios std::ios_base; namespace epics { namespace pvData { +/** @defgroup pvcontainer Value containers + * + * The core of the pvDataCPP library are the typed, structured, data containers. + */ + class PostHandler; class PVField; @@ -175,6 +180,8 @@ public: * @brief PVField is the base class for each PVData field. * * Each PVData field has an interface that extends PVField. + * + * @ingroup pvcontainer */ class epicsShareClass PVField : virtual public Serializable, @@ -294,6 +301,7 @@ epicsShareExtern std::ostream& operator<<(std::ostream& o, const PVField& f); /** * @brief PVScalar is the base class for each scalar field. * + * @ingroup pvcontainer */ class epicsShareClass PVScalar : public PVField { // friend our child class(s) so that it @@ -390,6 +398,7 @@ struct ScalarStorageOps { /** * @brief Class that holds the data for each possible scalar type. * + * @ingroup pvcontainer */ template class epicsShareClass PVScalarValue : public PVScalar { @@ -516,7 +525,7 @@ std::ostream& PVScalarValue::dumpValue(std::ostream& o) const return o << std::boolalpha << static_cast(get()); } -/** +/* * typedefs for the various possible scalar types. */ typedef PVScalarValue PVBoolean; @@ -545,6 +554,7 @@ typedef std::tr1::shared_ptr PVDoublePtr; /** * @brief PVString is special case, since it implements SerializableArray * + * @ingroup pvcontainer */ class epicsShareClass PVString : public PVScalarValue, SerializableArray { public: @@ -571,6 +581,7 @@ typedef std::tr1::shared_ptr PVStringPtr; * The array types are unionArray, strucrtureArray and scalarArray. * There is a scalarArray type for each scalarType. * + * @ingroup pvcontainer */ class epicsShareClass PVArray : public PVField, public SerializableArray { public: @@ -640,6 +651,7 @@ epicsShareExtern std::ostream& operator<<(format::array_at_internal const& manip /** * @brief Base class for a scalarArray. * + * @ingroup pvcontainer */ class epicsShareClass PVScalarArray : public PVArray { public: @@ -736,6 +748,7 @@ private: /** * @brief Data interface for a structure, * + * @ingroup pvcontainer */ class epicsShareClass PVStructure : public PVField, public BitSetSerializable { @@ -962,6 +975,7 @@ std::tr1::shared_ptr PVStructure::getSubFieldT(std::size_t fieldOffset) con * * The type for the subfield is specified by a union introspection interface. * + * @ingroup pvcontainer */ class epicsShareClass PVUnion : public PVField { @@ -1113,6 +1127,7 @@ namespace detail { void operator()(T*){vec.reset();} }; + //! Common code for PV*Array template class PVVectorStorage : public Base { @@ -1182,6 +1197,7 @@ namespace detail { * The direct extensions are pvBooleanArray, pvByteArray, ..., pvStringArray. * There are specializations for PVStringArray, PVStructureArray, and PVUnionArray. * + * @ingroup pvcontainer */ template class epicsShareClass PVValueArray : public detail::PVVectorStorage { @@ -1269,6 +1285,7 @@ protected: /** * @brief Data class for a structureArray * + * @ingroup pvcontainer */ template<> class epicsShareClass PVValueArray : public detail::PVVectorStorage @@ -1366,6 +1383,7 @@ private: /** * @brief Data class for a unionArray * + * @ingroup pvcontainer */ template<> class epicsShareClass PVValueArray : public detail::PVVectorStorage @@ -1671,6 +1689,8 @@ private: /** * Get the single class that implements PVDataCreate * @return The PVDataCreate factory. + * + * @ingroup pvcontainer */ epicsShareExtern PVDataCreatePtr getPVDataCreate(); diff --git a/testApp/pv/testValueBuilder.cpp b/testApp/pv/testValueBuilder.cpp index d1b2d8f..0ae0a01 100644 --- a/testApp/pv/testValueBuilder.cpp +++ b/testApp/pv/testValueBuilder.cpp @@ -101,7 +101,6 @@ void testAppend() testDiag("testAppend()"); pvd::PVStructurePtr base(pvd::createRequest("field(foo)record[bar=5]")); - std::cerr<getSubField("field.foo")); testOk1(!base->getSubField("field.other")); @@ -120,7 +119,6 @@ void testAppend() .endNested() .endNested() .buildPVStructure()); - std::cerr<getField().get()!=mod->getField().get()); testOk1(base->getField()!=mod->getField());