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());