attrtype.h

Go to the documentation of this file.
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 /* ************************** Tag Attributes ************************* */
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 /* ************************ String Attributes ************************ */
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 /* ********************* Numeric Binary Attributes ********************* */
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() {} // only because buggy g++ 2.7.0 freaks
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() {} // only because buggy g++ 2.7.0 freaks
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() {} // only because buggy g++ 2.7.0 freaks
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() {} // only because buggy g++ 2.7.0 freaks
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() {} // only because buggy g++ 2.7.0 freaks
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() {} // only because buggy g++ 2.7.0 freaks
00360 };
00361 
00362 /* ********************* Floating Point Binary Attributes ********************* */
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() {} // only because buggy g++ 2.7.0 freaks
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() {} // only because buggy g++ 2.7.0 freaks
00398 };
00399 
00400 /* ********************* Other Non-PixelData Attributes ********************* */
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 //class OtherFloatSmallAttribute : public OtherFloatSmallAttributeBase {
00429 //public:
00430 //      OtherFloatSmallAttribute(Tag t) : OtherFloatSmallAttributeBase(t) {}
00431 //      virtual ~OtherFloatSmallAttribute() {}
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 /* ********************* Unknown VR Attributes ********************* */
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 /* __Header_attrtype__ */

Generated on Thu Sep 17 10:10:28 2009 for dicom3tools by  doxygen 1.4.6