00001 #ifndef __Header_attrtype__
00002 #define __Header_attrtype__
00003
00004 #include "attrtypb.h"
00005
00006 #ifndef LARGESTOTHERDATATOKEEPINMEMORY
00007 #define LARGESTOTHERDATATOKEEPINMEMORY 524288
00008 #endif
00009
00010
00011
00012 class AttributeTagAttribute : public TagAttribute {
00013 public:
00014 AttributeTagAttribute(Tag t) : TagAttribute(t) {}
00015 AttributeTagAttribute(Tag t,Tag v)
00016 : TagAttribute(t)
00017 { addValue(v); }
00018 const char * getVR() const { return "AT"; }
00019 };
00020
00021
00022
00023 class ApplicationEntityAttribute : public NonNumericStringAttribute {
00024 public:
00025 ApplicationEntityAttribute(Tag t) : NonNumericStringAttribute(t) {}
00026 ApplicationEntityAttribute(Tag t,const char *v)
00027 : NonNumericStringAttribute(t,v) {}
00028 const char * getVR() const { return "AE"; }
00029 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00030 };
00031
00032 class AgeStringAttribute : public NonNumericStringAttribute {
00033 public:
00034 AgeStringAttribute(Tag t) : NonNumericStringAttribute(t) {}
00035 AgeStringAttribute(Tag t,const char *v)
00036 : NonNumericStringAttribute(t,v) {}
00037
00038 const char * getVR() const { return "AS"; }
00039 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00040 };
00041
00042 class CodeStringAttribute : public NonNumericStringAttribute {
00043 public:
00044 CodeStringAttribute(Tag t) : NonNumericStringAttribute(t) {}
00045
00046 CodeStringAttribute(Tag t,const char *v)
00047 : NonNumericStringAttribute(t,v) {}
00048 CodeStringAttribute(Tag t,const char *v1,const char *v2)
00049 : NonNumericStringAttribute(t)
00050 {
00051 addValue(v1); addValue(v2);
00052 }
00053 CodeStringAttribute(Tag t,const char *v1,const char *v2,const char *v3)
00054 : NonNumericStringAttribute(t)
00055 {
00056 addValue(v1); addValue(v2); addValue(v3);
00057 }
00058
00059 const char * getVR() const { return "CS"; }
00060 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00061 };
00062
00063 class CodeStringFileComponentAttribute : public CodeStringFileComponentAttributeBase {
00064 public:
00065 CodeStringFileComponentAttribute(Tag t) : CodeStringFileComponentAttributeBase(t) {}
00066
00067 CodeStringFileComponentAttribute(Tag t,const char *v)
00068 : CodeStringFileComponentAttributeBase(t,v) {}
00069
00070 const char * getVR() const { return "CS"; }
00071 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00072 };
00073
00074 class DateStringAttribute : public NonNumericStringAttribute {
00075 public:
00076 DateStringAttribute(Tag t) : NonNumericStringAttribute(t) {}
00077
00078 DateStringAttribute(Tag t,const char *v)
00079 : NonNumericStringAttribute(t,v) {}
00080
00081 DateStringAttribute(Tag t,Date const & date);
00082
00083 DateStringAttribute(Tag t,DateTime const & datetime);
00084
00085 const char * getVR() const { return "DA"; }
00086 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00087 };
00088
00089 class DateTimeStringAttribute : public NonNumericStringAttribute {
00090 public:
00091 DateTimeStringAttribute(Tag t) : NonNumericStringAttribute(t) {}
00092
00093 DateTimeStringAttribute(Tag t,const char *v)
00094 : NonNumericStringAttribute(t,v) {}
00095
00096 DateTimeStringAttribute(Tag t,Date const & date,Time const & time);
00097
00098 const char * getVR() const { return "DT"; }
00099 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00100 };
00101
00102 class DecimalStringAttribute : public NumericStringAttribute {
00103 public:
00104 DecimalStringAttribute(Tag t) : NumericStringAttribute(t) {}
00105
00106 DecimalStringAttribute(Tag t,const char *v)
00107 : NumericStringAttribute(t,v) {}
00108 DecimalStringAttribute(Tag t,Uint16 v)
00109 : NumericStringAttribute(t,v) {}
00110 DecimalStringAttribute(Tag t,Uint32 v)
00111 : NumericStringAttribute(t,v) {}
00112 DecimalStringAttribute(Tag t,Int16 v)
00113 : NumericStringAttribute(t,v) {}
00114 DecimalStringAttribute(Tag t,Int32 v)
00115 : NumericStringAttribute(t,v) {}
00116 DecimalStringAttribute(Tag t,Float32 v)
00117 : NumericStringAttribute(t,v) {}
00118 DecimalStringAttribute(Tag t,Float64 v)
00119 : NumericStringAttribute(t,v) {}
00120
00121 DecimalStringAttribute(Tag t,Float64 v1,Float64 v2)
00122 : NumericStringAttribute(t)
00123 { addValue(v1); addValue(v2); }
00124 DecimalStringAttribute(Tag t,Float64 v1,Float64 v2,Float64 v3)
00125 : NumericStringAttribute(t)
00126 { addValue(v1); addValue(v2); addValue(v3); }
00127 DecimalStringAttribute(Tag t,
00128 Float64 v1,Float64 v2,Float64 v3,
00129 Float64 v4,Float64 v5,Float64 v6)
00130 : NumericStringAttribute(t)
00131 {
00132 addValue(v1); addValue(v2); addValue(v3);
00133 addValue(v4); addValue(v5); addValue(v6);
00134 }
00135
00136 const char * getVR() const { return "DS"; }
00137 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00138 };
00139
00140 class IntegerStringAttribute : public NumericStringAttribute {
00141 public:
00142 IntegerStringAttribute(Tag t) : NumericStringAttribute(t) {}
00143
00144 IntegerStringAttribute(Tag t,const char *v)
00145 : NumericStringAttribute(t,v) {}
00146 IntegerStringAttribute(Tag t,Uint16 v)
00147 : NumericStringAttribute(t,v) {}
00148 IntegerStringAttribute(Tag t,Uint32 v)
00149 : NumericStringAttribute(t,v) {}
00150 IntegerStringAttribute(Tag t,Int16 v)
00151 : NumericStringAttribute(t,v) {}
00152 IntegerStringAttribute(Tag t,Int32 v)
00153 : NumericStringAttribute(t,v) {}
00154
00155 const char * getVR() const { return "IS"; }
00156 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00157 };
00158
00159 class LongStringAttribute : public NonNumericStringAttribute {
00160 public:
00161 LongStringAttribute(Tag t) : NonNumericStringAttribute(t) {}
00162
00163 LongStringAttribute(Tag t,const char *v)
00164 : NonNumericStringAttribute(t,v) {}
00165 LongStringAttribute(Tag t,Uint16 v)
00166 : NonNumericStringAttribute(t,v) {}
00167 LongStringAttribute(Tag t,Uint32 v)
00168 : NonNumericStringAttribute(t,v) {}
00169 LongStringAttribute(Tag t,Int16 v)
00170 : NonNumericStringAttribute(t,v) {}
00171 LongStringAttribute(Tag t,Int32 v)
00172 : NonNumericStringAttribute(t,v) {}
00173 LongStringAttribute(Tag t,Float32 v)
00174 : NonNumericStringAttribute(t,v) {}
00175 LongStringAttribute(Tag t,Float64 v)
00176 : NonNumericStringAttribute(t,v) {}
00177
00178 const char * getVR() const { return "LO"; }
00179 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00180 };
00181
00182 class LongTextAttribute : public LongTextAttributeBase {
00183 public:
00184 LongTextAttribute(Tag t) : LongTextAttributeBase(t) {}
00185 LongTextAttribute(Tag t,const char *v)
00186 : LongTextAttributeBase(t,v) {}
00187 const char * getVR() const { return "LT"; }
00188 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00189 };
00190
00191 class PersonNameAttribute : public NonNumericStringAttribute {
00192 public:
00193 PersonNameAttribute(Tag t) : NonNumericStringAttribute(t) {}
00194 PersonNameAttribute(Tag t,const char *v)
00195 : NonNumericStringAttribute(t,v) {}
00196 const char * getVR() const { return "PN"; }
00197 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00198 };
00199
00200 class ShortStringAttribute : public NonNumericStringAttribute {
00201 public:
00202 ShortStringAttribute(Tag t) : NonNumericStringAttribute(t) {}
00203
00204 ShortStringAttribute(Tag t,const char *v)
00205 : NonNumericStringAttribute(t,v) {}
00206 ShortStringAttribute(Tag t,Uint16 v)
00207 : NonNumericStringAttribute(t,v) {}
00208 ShortStringAttribute(Tag t,Uint32 v)
00209 : NonNumericStringAttribute(t,v) {}
00210 ShortStringAttribute(Tag t,Int16 v)
00211 : NonNumericStringAttribute(t,v) {}
00212 ShortStringAttribute(Tag t,Int32 v)
00213 : NonNumericStringAttribute(t,v) {}
00214 ShortStringAttribute(Tag t,Float32 v)
00215 : NonNumericStringAttribute(t,v) {}
00216 ShortStringAttribute(Tag t,Float64 v)
00217 : NonNumericStringAttribute(t,v) {}
00218
00219 const char * getVR() const { return "SH"; }
00220 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00221 };
00222
00223 class ShortTextAttribute : public TextAttribute {
00224 public:
00225 ShortTextAttribute(Tag t) : TextAttribute(t) {}
00226 ShortTextAttribute(Tag t,const char *v)
00227 : TextAttribute(t,v) {}
00228 const char * getVR() const { return "ST"; }
00229 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00230 };
00231
00232 class TimeStringAttribute : public NonNumericStringAttribute {
00233 public:
00234 TimeStringAttribute(Tag t) : NonNumericStringAttribute(t) {}
00235
00236 TimeStringAttribute(Tag t,const char *v)
00237 : NonNumericStringAttribute(t,v) {}
00238
00239 TimeStringAttribute(Tag t,Time const & time);
00240
00241 TimeStringAttribute(Tag t,DateTime const & datetime);
00242
00243 const char * getVR() const { return "TM"; }
00244 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00245 };
00246
00247 class UIStringAttribute : public NonNumericStringAttribute {
00248 public:
00249 UIStringAttribute(Tag t) : NonNumericStringAttribute(t) {}
00250 UIStringAttribute(Tag t,const char *v)
00251 : NonNumericStringAttribute(t,v) {}
00252
00253 const char * getVR() const { return "UI"; }
00254 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const;
00255
00256 BinaryOutputStream& writeData(BinaryOutputStream& stream)
00257 {
00258 writePaddedValues(stream,0);
00259 }
00260
00261 TextOutputStream& writeData(TextOutputStream& stream)
00262 {
00263 writePaddedValues(stream,0);
00264 return stream;
00265 }
00266
00267 TextOutputStream& write(TextOutputStream& stream,ElementDictionary *dict=0,bool verbose=false)
00268 {
00269 writePadded(stream,0,dict,verbose);
00270 return stream;
00271 }
00272
00273 BinaryOutputStream& write(BinaryOutputStream& stream)
00274 {
00275 writePadded(stream,0);
00276 return stream;
00277 }
00278
00279 DicomOutputStream& write(DicomOutputStream& stream)
00280 {
00281 writePadded(stream,0);
00282 return stream;
00283 }
00284 };
00285
00286 class UnlimitedTextAttribute : public LongTextAttributeBase {
00287 public:
00288 UnlimitedTextAttribute(Tag t) : LongTextAttributeBase(t) {}
00289 UnlimitedTextAttribute(Tag t,const char *v)
00290 : LongTextAttributeBase(t,v) {}
00291 const char * getVR() const { return "UT"; }
00292 bool validateVR(TextOutputStream& stream,ElementDictionary *dict) const { return true; }
00293 };
00294
00295
00296
00297 class UnsignedShortAttribute : public NumericBinaryAttribute<Uint16,2> {
00298 public:
00299 UnsignedShortAttribute(Tag t) : NumericBinaryAttribute<Uint16,2>(t) {}
00300 UnsignedShortAttribute(Tag t,Uint16 v)
00301 : NumericBinaryAttribute<Uint16,2>(t)
00302 { addValue(v); }
00303 UnsignedShortAttribute(Tag t,Uint16 v1,Uint16 v2,Uint16 v3)
00304 : NumericBinaryAttribute<Uint16,2>(t)
00305 { addValue(v1); addValue(v2); addValue(v3); }
00306 const char * getVR() const { return "US"; }
00307 ~UnsignedShortAttribute() {}
00308 };
00309
00310 class UnsignedLongAttribute : public NumericBinaryAttribute<Uint32,4> {
00311 public:
00312 UnsignedLongAttribute(Tag t) : NumericBinaryAttribute<Uint32,4>(t) {}
00313 UnsignedLongAttribute(Tag t,Uint32 v)
00314 : NumericBinaryAttribute<Uint32,4>(t)
00315 { addValue(v); }
00316 const char * getVR() const { return "UL"; }
00317 ~UnsignedLongAttribute() {}
00318 };
00319
00320 class SignedShortAttribute : public NumericBinaryAttribute<Int16,2> {
00321 public:
00322 SignedShortAttribute(Tag t) : NumericBinaryAttribute<Int16,2>(t) {}
00323 SignedShortAttribute(Tag t,Int16 v)
00324 : NumericBinaryAttribute<Int16,2>(t)
00325 { addValue(v); }
00326 const char * getVR() const { return "SS"; }
00327 ~SignedShortAttribute() {}
00328 };
00329
00330 class SignedLongAttribute : public NumericBinaryAttribute<Int32,4> {
00331 public:
00332 SignedLongAttribute(Tag t) : NumericBinaryAttribute<Int32,4>(t) {}
00333 SignedLongAttribute(Tag t,Int32 v)
00334 : NumericBinaryAttribute<Int32,4>(t)
00335 { addValue(v); }
00336 const char * getVR() const { return "SL"; }
00337 ~SignedLongAttribute() {}
00338 };
00339
00340 class UnspecifiedShortAttribute : public NumericBinaryAttribute<Uint16,2> {
00341 public:
00342 UnspecifiedShortAttribute(Tag t)
00343 : NumericBinaryAttribute<Uint16,2>(t) {}
00344 UnspecifiedShortAttribute(Tag t,Uint16 v)
00345 : NumericBinaryAttribute<Uint16,2>(t)
00346 { addValue(v); }
00347 const char * getVR() const { return "XS"; }
00348 ~UnspecifiedShortAttribute() {}
00349 };
00350
00351 class UnspecifiedLongAttribute : public NumericBinaryAttribute<Uint32,4> {
00352 public:
00353 UnspecifiedLongAttribute(Tag t)
00354 : NumericBinaryAttribute<Uint32,4>(t) {}
00355 UnspecifiedLongAttribute(Tag t,Uint32 v)
00356 : NumericBinaryAttribute<Uint32,4>(t)
00357 { addValue(v); }
00358 const char * getVR() const { return "XL"; }
00359 ~UnspecifiedLongAttribute() {}
00360 };
00361
00362
00363
00364 class FloatSingleAttribute : public FloatBinaryAttribute<4> {
00365 public:
00366 FloatSingleAttribute(Tag t)
00367 : FloatBinaryAttribute<4>(t) {}
00368 FloatSingleAttribute(Tag t,Float32 v)
00369 : FloatBinaryAttribute<4>(t)
00370 { addValue(v); }
00371 const char * getVR() const { return "FL"; }
00372 ~FloatSingleAttribute() {}
00373 };
00374
00375 class FloatDoubleAttribute : public FloatBinaryAttribute<8> {
00376 public:
00377 FloatDoubleAttribute(Tag t)
00378 : FloatBinaryAttribute<8>(t) {}
00379 FloatDoubleAttribute(Tag t,Float64 v)
00380 : FloatBinaryAttribute<8>(t)
00381 { addValue(v); }
00382 FloatDoubleAttribute(Tag t,Float64 v1,Float64 v2)
00383 : FloatBinaryAttribute<8>(t)
00384 { addValue(v1); addValue(v2); }
00385 FloatDoubleAttribute(Tag t,Float64 v1,Float64 v2,Float64 v3)
00386 : FloatBinaryAttribute<8>(t)
00387 { addValue(v1); addValue(v2); addValue(v3); }
00388 FloatDoubleAttribute(Tag t,
00389 Float64 v1,Float64 v2,Float64 v3,
00390 Float64 v4,Float64 v5,Float64 v6)
00391 : FloatBinaryAttribute<8>(t)
00392 {
00393 addValue(v1); addValue(v2); addValue(v3);
00394 addValue(v4); addValue(v5); addValue(v6);
00395 }
00396 const char * getVR() const { return "FD"; }
00397 ~FloatDoubleAttribute() {}
00398 };
00399
00400
00401
00402 class OtherByteSmallNonPixelAttribute : public OtherByteSmallNonPixelAttributeBase {
00403 public:
00404 OtherByteSmallNonPixelAttribute(Tag t) : OtherByteSmallNonPixelAttributeBase(t) {}
00405 virtual ~OtherByteSmallNonPixelAttribute() {}
00406 };
00407
00408 class OtherWordSmallNonPixelAttribute : public OtherWordSmallNonPixelAttributeBase {
00409 public:
00410 OtherWordSmallNonPixelAttribute(Tag t) : OtherWordSmallNonPixelAttributeBase(t) {}
00411 virtual ~OtherWordSmallNonPixelAttribute() {}
00412 };
00413
00414 class OtherByteLargeNonPixelAttribute : public OtherByteLargeNonPixelAttributeBase {
00415 public:
00416 OtherByteLargeNonPixelAttribute(Tag t,BinaryInputStream &stream,OurStreamPos pos)
00417 : OtherByteLargeNonPixelAttributeBase(t,stream,pos) {}
00418 virtual ~OtherByteLargeNonPixelAttribute() {}
00419 };
00420
00421 class OtherWordLargeNonPixelAttribute : public OtherWordLargeNonPixelAttributeBase {
00422 public:
00423 OtherWordLargeNonPixelAttribute(Tag t,BinaryInputStream &stream,OurStreamPos pos)
00424 : OtherWordLargeNonPixelAttributeBase(t,stream,pos) {}
00425 virtual ~OtherWordLargeNonPixelAttribute() {}
00426 };
00427
00428
00429
00430
00431
00432
00433
00434 class OtherFloatLargeAttribute : public OtherFloatLargeAttributeBase {
00435 public:
00436 OtherFloatLargeAttribute(Tag t,BinaryInputStream &stream,OurStreamPos pos)
00437 : OtherFloatLargeAttributeBase(t,stream,pos) {}
00438 virtual ~OtherFloatLargeAttribute() {}
00439 };
00440
00441
00442
00443 class UnknownSmallAttribute : public UnknownSmallAttributeBase {
00444 public:
00445 UnknownSmallAttribute(Tag t) : UnknownSmallAttributeBase(t) {}
00446 virtual ~UnknownSmallAttribute() {}
00447 };
00448
00449 class UnknownLargeAttribute : public UnknownLargeAttributeBase {
00450 public:
00451 UnknownLargeAttribute(Tag t,BinaryInputStream &stream,OurStreamPos pos)
00452 : UnknownLargeAttributeBase(t,stream,pos) {}
00453 virtual ~UnknownLargeAttribute() {}
00454 };
00455
00456 #endif