merge branch release/4.0
This commit is contained in:
+17
-31
@@ -55,7 +55,13 @@ static inline bool operator!=(const BoundedString& a, const BoundedString& b)
|
||||
{return !(a==b);}
|
||||
|
||||
|
||||
|
||||
class Convert;
|
||||
typedef std::tr1::shared_ptr<Convert> ConvertPtr;
|
||||
|
||||
/**
|
||||
* @brief Conversion and Copy facility for pvData.
|
||||
*
|
||||
* Convert between numeric types, convert any field to a string,
|
||||
* or convert from a string to a scalar field.
|
||||
* <p>Numeric conversions are between scalar numeric types or between arrays of
|
||||
@@ -74,16 +80,12 @@ static inline bool operator!=(const BoundedString& a, const BoundedString& b)
|
||||
* A scalar field is a numeric field or pvBoolean or pvString.</p>
|
||||
* <p>All from methods put data into a PVField, e.g. from means where the PVField gets it's data.</p>
|
||||
*/
|
||||
|
||||
class Convert;
|
||||
typedef std::tr1::shared_ptr<Convert> ConvertPtr;
|
||||
|
||||
class epicsShareClass Convert {
|
||||
public:
|
||||
static ConvertPtr getConvert();
|
||||
/**
|
||||
* Get the full fieldName for the pvField.
|
||||
* @param builder The builder that will have the result.
|
||||
* @param buf The string that will have the result.
|
||||
* @param pvField The pvField.
|
||||
*/
|
||||
void getFullName(std::string *buf,PVFieldPtr const & pvField)
|
||||
@@ -94,8 +96,8 @@ public:
|
||||
/**
|
||||
* Do fields have the same definition.
|
||||
*
|
||||
* @param First field
|
||||
* @param Second field
|
||||
* @param a First field
|
||||
* @param b Second field
|
||||
* @return (false, true) if the fields (are not, are) the same.
|
||||
*/
|
||||
inline bool equals(PVFieldPtr const &a,PVFieldPtr const &b)
|
||||
@@ -106,8 +108,8 @@ public:
|
||||
/**
|
||||
* Do fields have the same definition.
|
||||
*
|
||||
* @param First field
|
||||
* @param Second field
|
||||
* @param a First field
|
||||
* @param b Second field
|
||||
* @return (false, true) if the fields (are not, are) the same.
|
||||
*/
|
||||
inline bool equals(PVField &a,PVField &b)
|
||||
@@ -117,42 +119,26 @@ public:
|
||||
|
||||
/**
|
||||
* Convert a PVField to a string.
|
||||
* @param buf buffer for the result
|
||||
* @param pv a PVField to convert to a string.
|
||||
* If a PVField is a structure or array be prepared for a very long string.
|
||||
* @param indentLevel indentation level
|
||||
*/
|
||||
inline void getString(std::string *buf,PVFieldPtr const & pvField,int indentLevel)
|
||||
{getString(buf, pvField.get(), indentLevel);}
|
||||
/**
|
||||
* Convert a PVField to a string.
|
||||
* param buf buffer for the result
|
||||
* @param pv The PVField to convert to a string.
|
||||
* If the PVField is a structure or array be prepared for a very long string.
|
||||
* @param buf string that will hold pvField converted to a string,
|
||||
* @param pvField The PVField to convert to a string.
|
||||
*/
|
||||
inline void getString(std::string * buf,PVFieldPtr const & pvField)
|
||||
{getString(buf, pvField.get(), 0);}
|
||||
/**
|
||||
* Convert a PVField to a string.
|
||||
* @param buf buffer for the result
|
||||
* @param pv a PVField to convert to a string.
|
||||
* If a PVField is a structure or array be prepared for a very long string.
|
||||
* @param buf string that will hold pvField converted to a string,
|
||||
* @param pvField The PVField to convert to a string.
|
||||
* @param indentLevel indentation level
|
||||
*/
|
||||
void getString(std::string * buf,PVField const * pvField,int indentLevel);
|
||||
/**
|
||||
* Convert a PVField to a string.
|
||||
* param buf buffer for the result
|
||||
* @param pv The PVField to convert to a string.
|
||||
* If the PVField is a structure or array be prepared for a very long string.
|
||||
*/
|
||||
inline void getString(std::string * buf,PVField const * pvField)
|
||||
{getString(buf, pvField, 0);}
|
||||
/**
|
||||
* Convert from an array of std::string to a PVScalar
|
||||
* Convert from an array of std::string to a PVStructure
|
||||
* @param pv The PV.
|
||||
* @param from The array of std::string value to convert and put into a PV.
|
||||
* @param fromStartIndex The first element if the array of strings.
|
||||
* @return The total number of fields that have been changed.
|
||||
* @throws std::logic_error if the array of std::string does not have a valid values.
|
||||
*/
|
||||
std::size_t fromString(
|
||||
|
||||
+64
-29
@@ -122,7 +122,8 @@ class PVDataCreate;
|
||||
typedef std::tr1::shared_ptr<PVDataCreate> PVDataCreatePtr;
|
||||
|
||||
/**
|
||||
* This class is implemented by code that calls setPostHander
|
||||
* @brief This class is implemented by code that calls setPostHander
|
||||
*
|
||||
*/
|
||||
class epicsShareClass PostHandler
|
||||
{
|
||||
@@ -139,7 +140,8 @@ public:
|
||||
};
|
||||
|
||||
/**
|
||||
* PVField is the base class for each PVData field.
|
||||
* @brief PVField is the base class for each PVData field.
|
||||
*
|
||||
* Each PVData field has an interface that extends PVField.
|
||||
*/
|
||||
class epicsShareClass PVField
|
||||
@@ -256,7 +258,8 @@ private:
|
||||
epicsShareExtern std::ostream& operator<<(std::ostream& o, const PVField& f);
|
||||
|
||||
/**
|
||||
* PVScalar is the base class for each scalar field.
|
||||
* @brief PVScalar is the base class for each scalar field.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass PVScalar : public PVField {
|
||||
// friend our child class(s) so that it
|
||||
@@ -322,7 +325,8 @@ protected:
|
||||
};
|
||||
|
||||
/**
|
||||
* Class that holds the data for each posssible scalar type.
|
||||
* @brief Class that holds the data for each posssible scalar type.
|
||||
*
|
||||
*/
|
||||
template<typename T>
|
||||
class epicsShareClass PVScalarValue : public PVScalar {
|
||||
@@ -437,7 +441,8 @@ typedef std::tr1::shared_ptr<PVFloat> PVFloatPtr;
|
||||
typedef std::tr1::shared_ptr<PVDouble> PVDoublePtr;
|
||||
|
||||
/**
|
||||
* PVString is special case, since it implements SerializableArray
|
||||
* @brief PVString is special case, since it implements SerializableArray
|
||||
*
|
||||
*/
|
||||
class epicsShareClass PVString : public PVScalarValue<std::string>, SerializableArray {
|
||||
public:
|
||||
@@ -453,7 +458,11 @@ typedef std::tr1::shared_ptr<PVString> PVStringPtr;
|
||||
|
||||
|
||||
/**
|
||||
* PVArray is the base class for all array types, i.e. the scalarArray types and structureArray.
|
||||
* @brief PVArray is the base class for all array types.
|
||||
*
|
||||
* The array types are unionArray, strucrtureArray and scalarArray.
|
||||
* There is a scalarArray type for each scalarType.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass PVArray : public PVField, public SerializableArray {
|
||||
public:
|
||||
@@ -520,9 +529,9 @@ private:
|
||||
|
||||
epicsShareExtern std::ostream& operator<<(format::array_at_internal const& manip, const PVArray& array);
|
||||
|
||||
|
||||
/**
|
||||
* Base class for a scalarArray.
|
||||
* @brief Base class for a scalarArray.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass PVScalarArray : public PVArray {
|
||||
public:
|
||||
@@ -604,6 +613,10 @@ private:
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* @brief Data interface for a structure,
|
||||
*
|
||||
*/
|
||||
class epicsShareClass PVStructure : public PVField, public BitSetSerializable
|
||||
{
|
||||
public:
|
||||
@@ -665,84 +678,84 @@ public:
|
||||
|
||||
/**
|
||||
* Get a boolean field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVBooleanPtr getBooleanField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a byte field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVBytePtr getByteField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a short field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVShortPtr getShortField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a int field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVIntPtr getIntField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a long field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVLongPtr getLongField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get an unsigned byte field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVUBytePtr getUByteField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get an unsigned short field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVUShortPtr getUShortField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get an unsigned int field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVUIntPtr getUIntField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get an unsigned long field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVULongPtr getULongField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a float field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVFloatPtr getFloatField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a double field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVDoublePtr getDoubleField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a string field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
@@ -750,21 +763,21 @@ public:
|
||||
|
||||
/**
|
||||
* Get a structure field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVStructurePtr getStructureField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a union field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVUnionPtr getUnionField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a scalarArray field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @param elementType The element type.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
@@ -773,14 +786,14 @@ public:
|
||||
std::string const &fieldName,ScalarType elementType) ;
|
||||
/**
|
||||
* Get a structureArray field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
PVStructureArrayPtr getStructureArrayField(std::string const &fieldName) ;
|
||||
/**
|
||||
* Get a unionArray field with the specified name.
|
||||
* No longer needed. Use templete version of getSubField
|
||||
* @deprecated No longer needed. Use templete version of getSubField
|
||||
* @param fieldName The name of the field to get.
|
||||
* @return Pointer to the field of null if a field with that name and type does not exist.
|
||||
*/
|
||||
@@ -857,7 +870,10 @@ private:
|
||||
|
||||
|
||||
/**
|
||||
* PVUnion has a single subfield which has a type specified by a union introspection interface.
|
||||
* @brief PVUnion has a single subfield.
|
||||
*
|
||||
* The type for the subfield is specified by a union introspection interface.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass PVUnion : public PVField
|
||||
{
|
||||
@@ -1064,6 +1080,13 @@ namespace detail {
|
||||
};
|
||||
} // namespace detail
|
||||
|
||||
/**
|
||||
* @brief template class for all extensions of PVArray.
|
||||
*
|
||||
* The direct extensions are pvBooleanArray, pvByteArray, ..., pvStringArray.
|
||||
* There are specializations for PVStringArray, PVStructureArray, and PVUnionArray.
|
||||
*
|
||||
*/
|
||||
template<typename T>
|
||||
class epicsShareClass PVValueArray : public detail::PVVectorStorage<T,PVScalarArray> {
|
||||
typedef detail::PVVectorStorage<T,PVScalarArray> base_t;
|
||||
@@ -1085,6 +1108,9 @@ public:
|
||||
*/
|
||||
virtual ~PVValueArray() {}
|
||||
|
||||
/**
|
||||
* Get introspection interface.
|
||||
*/
|
||||
virtual ArrayConstPtr getArray() const
|
||||
{
|
||||
return std::tr1::static_pointer_cast<const Array>(this->getField());
|
||||
@@ -1129,7 +1155,8 @@ protected:
|
||||
|
||||
|
||||
/**
|
||||
* Data class for a structureArray
|
||||
* @brief Data class for a structureArray
|
||||
*
|
||||
*/
|
||||
template<>
|
||||
class epicsShareClass PVValueArray<PVStructurePtr> : public detail::PVVectorStorage<PVStructurePtr,PVArray>
|
||||
@@ -1225,7 +1252,8 @@ private:
|
||||
|
||||
|
||||
/**
|
||||
* Data class for a unionArray
|
||||
* @brief Data class for a unionArray
|
||||
*
|
||||
*/
|
||||
template<>
|
||||
class epicsShareClass PVValueArray<PVUnionPtr> : public detail::PVVectorStorage<PVUnionPtr,PVArray>
|
||||
@@ -1359,7 +1387,8 @@ typedef PVValueArray<std::string> PVStringArray;
|
||||
typedef std::tr1::shared_ptr<PVStringArray> PVStringArrayPtr;
|
||||
|
||||
/**
|
||||
* This is a singlton class for creating data instances.
|
||||
* @brief This is a singlton class for creating data instances.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass PVDataCreate {
|
||||
public:
|
||||
@@ -1537,3 +1566,9 @@ epicsShareExtern PVDataCreatePtr getPVDataCreate();
|
||||
|
||||
}}
|
||||
#endif /* PVDATA_H */
|
||||
|
||||
/** @page Overview Documentation
|
||||
*
|
||||
* <a href = "pvDataCPP.html">pvData.html</a>
|
||||
*
|
||||
*/
|
||||
|
||||
+46
-25
@@ -163,7 +163,8 @@ enum Type {
|
||||
};
|
||||
|
||||
/**
|
||||
* Convenience functions for Type.
|
||||
* @brief Convenience functions for Type.
|
||||
*
|
||||
*/
|
||||
namespace TypeFunc {
|
||||
/**
|
||||
@@ -234,7 +235,8 @@ enum ScalarType {
|
||||
#define MAX_SCALAR_TYPE pvString
|
||||
|
||||
/**
|
||||
* Convenience functions for ScalarType.
|
||||
* @brief Convenience functions for ScalarType.
|
||||
*
|
||||
*/
|
||||
namespace ScalarTypeFunc {
|
||||
/**
|
||||
@@ -283,7 +285,8 @@ epicsShareExtern std::ostream& operator<<(std::ostream& o, const ScalarType& sca
|
||||
|
||||
|
||||
/**
|
||||
* This class implements introspection object for field.
|
||||
* @brief This class implements introspection object for field.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass Field :
|
||||
virtual public Serializable,
|
||||
@@ -335,7 +338,8 @@ epicsShareExtern std::ostream& operator<<(std::ostream& o, const Field& field);
|
||||
|
||||
|
||||
/**
|
||||
* This class implements introspection object for Scalar.
|
||||
* @brief This class implements introspection object for Scalar.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass Scalar : public Field{
|
||||
public:
|
||||
@@ -372,7 +376,8 @@ private:
|
||||
};
|
||||
|
||||
/**
|
||||
* This class implements introspection object for BoundedString.
|
||||
* @brief This class implements introspection object for BoundedString.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass BoundedString : public Scalar{
|
||||
public:
|
||||
@@ -398,7 +403,8 @@ private:
|
||||
};
|
||||
|
||||
/**
|
||||
* This class implements introspection object for Array.
|
||||
* @brief This class implements introspection object for Array.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass Array : public Field{
|
||||
public:
|
||||
@@ -433,14 +439,9 @@ protected:
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This class implements introspection object for scalar array.
|
||||
* @brief This class implements introspection object for scalar array.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass ScalarArray : public Array{
|
||||
public:
|
||||
@@ -484,7 +485,8 @@ private:
|
||||
|
||||
|
||||
/**
|
||||
* This class implements introspection object for bounded scalar array.
|
||||
* @brief This class implements introspection object for bounded scalar array.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass BoundedScalarArray : public ScalarArray{
|
||||
public:
|
||||
@@ -518,7 +520,8 @@ private:
|
||||
};
|
||||
|
||||
/**
|
||||
* This class implements introspection object for bounded scalar array.
|
||||
* @brief This class implements introspection object for bounded scalar array.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass FixedScalarArray : public ScalarArray{
|
||||
public:
|
||||
@@ -551,12 +554,9 @@ private:
|
||||
friend class FieldCreate;
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* This class implements introspection object for a structureArray
|
||||
* @brief This class implements introspection object for a structureArray
|
||||
*
|
||||
*/
|
||||
class epicsShareClass StructureArray : public Array{
|
||||
public:
|
||||
@@ -597,7 +597,8 @@ private:
|
||||
};
|
||||
|
||||
/**
|
||||
* This class implements introspection object for a unionArray
|
||||
* @brief This class implements introspection object for a unionArray
|
||||
*
|
||||
*/
|
||||
class epicsShareClass UnionArray : public Array{
|
||||
public:
|
||||
@@ -638,7 +639,8 @@ private:
|
||||
};
|
||||
|
||||
/**
|
||||
* This class implements introspection object for a structure.
|
||||
* @brief This class implements introspection object for a structure.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass Structure : public Field {
|
||||
public:
|
||||
@@ -719,7 +721,8 @@ private:
|
||||
};
|
||||
|
||||
/**
|
||||
* This class implements introspection object for a union.
|
||||
* @brief This class implements introspection object for a union.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass Union : public Field {
|
||||
public:
|
||||
@@ -817,7 +820,8 @@ class FieldBuilder;
|
||||
typedef std::tr1::shared_ptr<FieldBuilder> FieldBuilderPtr;
|
||||
|
||||
/**
|
||||
* Interface for in-line creating of introspection interfaces.
|
||||
* @brief Interface for in-line creating of introspection interfaces.
|
||||
*
|
||||
* One instance can be used to create multiple {@code Field} instances.
|
||||
* An instance of this object must not be used concurrently (an object has a state).
|
||||
* @author mse
|
||||
@@ -981,7 +985,8 @@ private:
|
||||
};
|
||||
|
||||
/**
|
||||
* This is a singleton class for creating introspection interfaces.
|
||||
* @brief This is a singleton class for creating introspection interfaces.
|
||||
*
|
||||
*/
|
||||
class epicsShareClass FieldCreate {
|
||||
public:
|
||||
@@ -1179,14 +1184,26 @@ OP(pvDouble, double)
|
||||
OP(pvString, std::string)
|
||||
#undef OP
|
||||
|
||||
/**
|
||||
* @brief Hash a Scalar
|
||||
*
|
||||
*/
|
||||
struct ScalarHashFunction {
|
||||
size_t operator() (const Scalar& scalar) const { return scalar.getScalarType(); }
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Hash a ScalarArray
|
||||
*
|
||||
*/
|
||||
struct ScalarArrayHashFunction {
|
||||
size_t operator() (const ScalarArray& scalarArray) const { return 0x10 | scalarArray.getElementType(); }
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Hash a Structure
|
||||
*
|
||||
*/
|
||||
struct StructureHashFunction {
|
||||
size_t operator() (const Structure& /*structure*/) const { return 0; }
|
||||
// TODO hash
|
||||
@@ -1194,6 +1211,10 @@ struct StructureHashFunction {
|
||||
// return PRIME * Arrays.hashCode(fieldNames) + Arrays.hashCode(fields);
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Hash a StructureArray
|
||||
*
|
||||
*/
|
||||
struct StructureArrayHashFunction {
|
||||
size_t operator() (const StructureArray& structureArray) const { StructureHashFunction shf; return (0x10 | shf(*(structureArray.getStructure()))); }
|
||||
};
|
||||
|
||||
@@ -25,7 +25,8 @@ class StandardField;
|
||||
typedef std::tr1::shared_ptr<StandardField> StandardFieldPtr;
|
||||
|
||||
/**
|
||||
* Standard Fields is a class or creating or sharing Field objects for standard fields.
|
||||
* @brief Standard Fields is a class or creating or sharing Field objects for standard fields.
|
||||
*
|
||||
* For each type of standard object two methods are defined:s
|
||||
* one with no properties and with properties
|
||||
* The property field is a comma separated string of property names of the following:
|
||||
|
||||
@@ -25,7 +25,8 @@ class StandardPVField;
|
||||
typedef std::tr1::shared_ptr<StandardPVField> StandardPVFieldPtr;
|
||||
|
||||
/**
|
||||
* StandardPVField is a class or creating standard data fields.
|
||||
* @brief StandardPVField is a class or creating standard data fields.
|
||||
*
|
||||
* Like class StandardField it has two forms of the methods which create a fields:
|
||||
* one without properties and one with properties.
|
||||
* The properties are some combination of alarm, timeStamp, control, display, and valueAlarm.
|
||||
|
||||
Reference in New Issue
Block a user