13 #define epicsExportSharedSymbols 18 namespace epics {
namespace pvData {
64 throw std::logic_error(
"Invalid Field type in comparison");
95 for (
size_t i = 0;
i < nflds;
i++)
96 if (*(af[
i].
get()) != *(bf[
i].
get()))
101 return std::equal( an.begin(), an.end(), bn.begin() );
122 for (
size_t i = 0;
i < nflds;
i++)
123 if (*(af[
i].
get()) != *(bf[
i].
get()))
128 return std::equal( an.begin(), an.end(), bn.begin() );
152 return left->
get()==right->
get();
159 return std::equal(lhs.begin(), lhs.end(), rhs.begin());
167 if(lht != right->
getScalar()->getScalarType())
170 #define OP(ENUM, TYPE) case ENUM: return compareScalar(static_cast<const PVScalarValue<TYPE>*>(left), static_cast<const PVScalarValue<TYPE>*>(right)) 184 const PVString *a=
static_cast<const PVString*
>(left), *b=static_cast<const PVString*>(right);
185 return a->
get()==b->get();
188 throw std::logic_error(
"PVScalar with invalid scalar type!");
201 #define OP(ENUM, TYPE) case ENUM: return compareArray(static_cast<const PVValueArray<TYPE>*>(left), static_cast<const PVValueArray<TYPE>*>(right)) 216 throw std::logic_error(
"PVScalarArray with invalid element type!");
229 for(
size_t i=0, nfld=ls->getNumberFields();
i<nfld;
i++) {
244 if(ld.
size()!=rd.size())
249 for(lit=ld.
begin(), lend=ld.
end(), rit=rd.begin();
254 if (!(*lit) || !(*rit))
259 else if (**lit != **rit)
274 const PVField::const_shared_pointer& lval = left->
get();
276 return right->
get().get() == 0;
278 return *(lval.get()) == *(right->
get().get());
303 if(ld.
size()!=rd.size())
308 for(lit=ld.
begin(), lend=ld.
end(), rit=rd.begin();
313 if (!(*lit) || !(*rit))
318 else if (**lit != **rit)
334 if(lht != right.
getField()->getType())
338 case scalar:
return compareField(static_cast<const PVScalar*>(&left), static_cast<const PVScalar*>(&right));
339 case scalarArray:
return compareField(static_cast<const PVScalarArray*>(&left), static_cast<const PVScalarArray*>(&right));
340 case structure:
return compareField(static_cast<const PVStructure*>(&left), static_cast<const PVStructure*>(&right));
341 case structureArray:
return compareField(static_cast<const PVStructureArray*>(&left), static_cast<const PVStructureArray*>(&right));
342 case union_:
return compareField(static_cast<const PVUnion*>(&left), static_cast<const PVUnion*>(&right));
343 case unionArray:
return compareField(static_cast<const PVUnionArray*>(&left), static_cast<const PVUnionArray*>(&right));
345 throw std::logic_error(
"PVField with invalid type!");
const PVFieldPtrArray & getPVFields() const
This class implements introspection object for Scalar.
virtual const_svector view() const OVERRIDE FINAL
Fetch a read-only view of the current array data.
PVScalar is the base class for each scalar field.
This class implements introspection object for a union.
Data class for a unionArray.
std::size_t getNumberFields() const
int32 getSelectedIndex() const
StructureArrayConstPtr getStructureArray() const
const UnionConstPtr & getUnion() const
const FieldConstPtr & getField() const
const StructureConstPtr & getStructure() const
TODO only here because of the Lockable.
std::size_t getNumberFields() const
std::tr1::shared_ptr< const Structure > StructureConstPtr
FieldConstPtrArray const & getFields() const
ScalarType getElementType() const
PVField is the base class for each PVData field.
virtual std::string getID() const OVERRIDE FINAL
storage_t::arg_type get() const
This class implements introspection object for field.
const ScalarConstPtr getScalar() const
PVString is special case, since it implements SerializableArray.
virtual std::string getID() const OVERRIDE FINAL
std::tr1::shared_ptr< const Union > UnionConstPtr
virtual std::size_t getLength() const =0
This class implements introspection object for a structure.
template class for all extensions of PVArray.
bool compare(const Field &a, const Field &b)
Base class for a scalarArray.
StringArray const & getFieldNames() const
meta::decorate_const< const PVStructurePtr >::type * const_iterator
PVUnion has a single subfield.
std::vector< FieldConstPtr > FieldConstPtrArray
const ScalarArrayConstPtr getScalarArray() const
This class implements introspection object for BoundedString.
This class implements introspection object for a unionArray.
std::vector< PVFieldPtr > PVFieldPtrArray
Data interface for a structure,.
size_t size() const
Number of elements visible through this vector.
This class implements introspection object for scalar array.
This class implements introspection object for a structureArray.
Data class for a structureArray.
bool operator==(const PVField &left, const PVField &right)
UnionConstPtr getUnion() const
Class that holds the data for each possible scalar type.
std::vector< std::string > StringArray
virtual const_svector view() const OVERRIDE FINAL
Fetch a read-only view of the current array data.
std::size_t getMaximumLength() const
const StructureConstPtr & getStructure() const
FieldConstPtrArray const & getFields() const
virtual const_svector view() const OVERRIDE
Fetch a read-only view of the current array data.
ScalarType getScalarType() const
UnionArrayConstPtr getUnionArray() const
static const int32 UNDEFINED_INDEX
StringArray const & getFieldNames() const