14 #ifndef GDCMDATAELEMENT_H
15 #define GDCMDATAELEMENT_H
36 class SequenceOfItems;
37 class SequenceOfFragments;
61 DataElement(
const Tag& t =
Tag(0),
const VL& vl = 0,
const VR &vr = VR::INVALID):TagField(t),ValueLengthField(vl),VRField(vr),ValueField(0) {}
74 const VL&
GetVL()
const {
return ValueLengthField; }
79 void SetVL(
const VL &vl) { ValueLengthField = vl; }
80 void SetVLToUndefined();
84 VR const &
GetVR()
const {
return VRField; }
103 bool IsEmpty()
const {
return ValueField == 0 || (GetByteValue() && GetByteValue()->IsEmpty()); }
106 void Empty() { ValueField = 0; ValueLengthField = 0; }
112 VRField = VR::INVALID;
114 ValueLengthField = 0;
151 return ValueLengthField.IsUndefined();
164 return GetTag() < de.
GetTag();
203 template <
typename TDE>
205 return static_cast<const TDE*
>(
this)->GetLength();
208 template <
typename TDE,
typename TSwap>
209 std::istream &
Read(std::istream &is) {
210 return static_cast<TDE*
>(
this)->
template Read<TSwap>(is);
213 template <
typename TDE,
typename TSwap>
214 std::istream &
ReadOrSkip(std::istream &is, std::set<Tag>
const &skiptags) {
216 return static_cast<TDE*
>(
this)->
template Read<TSwap>(is);
219 template <
typename TDE,
typename TSwap>
220 std::istream &
ReadPreValue(std::istream &is, std::set<Tag>
const &skiptags) {
222 return static_cast<TDE*
>(
this)->
template ReadPreValue<TSwap>(is);
224 template <
typename TDE,
typename TSwap>
225 std::istream &
ReadValue(std::istream &is, std::set<Tag>
const &skiptags) {
227 return static_cast<TDE*
>(
this)->
template ReadValue<TSwap>(is);
229 template <
typename TDE,
typename TSwap>
232 return static_cast<TDE*
>(
this)->
template ReadValueWithLength<TSwap>(is, length);
235 template <
typename TDE,
typename TSwap>
237 return static_cast<TDE*
>(
this)->
template ReadWithLength<TSwap>(is,length);
240 template <
typename TDE,
typename TSwap>
241 const std::ostream &
Write(std::ostream &os)
const {
242 return static_cast<const TDE*
>(
this)->
template Write<TSwap>(os);
255 void SetValueFieldLength(
VL vl,
bool readvalues );
272 return ! ( lhs == rhs );
277 #endif //GDCMDATAELEMENT_H
void SetVR(VR const &vr)
Definition: gdcmDataElement.h:88
void SetValue(Value const &vl)
Definition: gdcmDataElement.h:97
bool IsEmpty() const
Check if Data Element is empty.
Definition: gdcmDataElement.h:103
void SetTag(const Tag &t)
Definition: gdcmDataElement.h:71
std::istream & ReadWithLength(std::istream &is, VL &length)
Definition: gdcmDataElement.h:236
void SetByteValue(const char *array, VL length)
Definition: gdcmDataElement.h:123
std::istream & ReadValue(std::istream &is, std::set< Tag > const &skiptags)
Definition: gdcmDataElement.h:225
DataElement(const DataElement &_val)
Definition: gdcmDataElement.h:154
Class to represent the value of a Data Element.
Definition: gdcmValue.h:31
const VL & GetVL() const
Get VL.
Definition: gdcmDataElement.h:74
#define GDCM_EXPORT
Definition: gdcmWin32.h:34
DataElement(const Tag &t=Tag(0), const VL &vl=0, const VR &vr=VR::INVALID)
Definition: gdcmDataElement.h:61
Value Length.
Definition: gdcmVL.h:29
Class to represent a Sequence Of Fragments.
Definition: gdcmSequenceOfFragments.h:31
VL ValueLengthField
Definition: gdcmDataElement.h:248
bool operator<(const DataElement &de) const
Definition: gdcmDataElement.h:162
const ByteValue * GetByteValue() const
Definition: gdcmDataElement.h:130
void SetVL(const VL &vl)
Definition: gdcmDataElement.h:79
VR VRField
Definition: gdcmDataElement.h:251
DataElement & operator=(const DataElement &de)
Definition: gdcmDataElement.h:166
const std::ostream & Write(std::ostream &os) const
Definition: gdcmDataElement.h:241
Class to represent a Data Element either Implicit or Explicit.
Definition: gdcmDataElement.h:58
Class to represent binary value (array of bytes)
Definition: gdcmByteValue.h:35
Value & GetValue()
Definition: gdcmDataElement.h:95
bool operator==(const DataElement &de) const
Definition: gdcmDataElement.h:175
std::istream & ReadPreValue(std::istream &is, std::set< Tag > const &skiptags)
Definition: gdcmDataElement.h:220
VR const & GetVR() const
Definition: gdcmDataElement.h:84
std::istream & Read(std::istream &is)
Definition: gdcmDataElement.h:209
Value const & GetValue() const
Set/Get Value (bytes array, SQ of items, SQ of fragments):
Definition: gdcmDataElement.h:94
void Clear()
Clear Data Element (make Value empty and invalidate Tag & VR)
Definition: gdcmDataElement.h:109
Class for Smart Pointer.
Definition: gdcmObject.h:26
VL & GetVL()
Definition: gdcmDataElement.h:75
bool IsUndefinedLength() const
return if Value Length if of undefined length
Definition: gdcmDataElement.h:150
virtual VL GetLength() const =0
Tag & GetTag()
Definition: gdcmDataElement.h:68
const Tag & GetTag() const
Get Tag.
Definition: gdcmDataElement.h:67
ValuePtr ValueField
Definition: gdcmDataElement.h:253
std::istream & ReadOrSkip(std::istream &is, std::set< Tag > const &skiptags)
Definition: gdcmDataElement.h:214
bool operator!=(const DataElement &lhs, const DataElement &rhs)
Definition: gdcmDataElement.h:270
virtual void Print(std::ostream &) const
Definition: gdcmObject.h:87
Class to represent a DICOM Data Element (Attribute) Tag (Group, Element). Basically an uint32_t which...
Definition: gdcmTag.h:38
VL GetLength() const
Definition: gdcmDataElement.h:204
Tag TagField
Definition: gdcmDataElement.h:246
VR class This is adapted from DICOM standard The biggest difference is the INVALID VR and the composi...
Definition: gdcmVR.h:54
void Empty()
Make Data Element empty (no Value)
Definition: gdcmDataElement.h:106
std::ostream & operator<<(std::ostream &os, const DataElement &val)
Definition: gdcmDataElement.h:258
std::istream & ReadValueWithLength(std::istream &is, VL &length, std::set< Tag > const &skiptags)
Definition: gdcmDataElement.h:230
SmartPointer< Value > ValuePtr
Definition: gdcmDataElement.h:252