/usr/include/vtkDICOMVR.h is in libvtk-dicom-dev 0.7.10-1+b2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143  | /*=========================================================================
  Program: DICOM for VTK
  Copyright (c) 2012-2015 David Gobbi
  All rights reserved.
  See Copyright.txt or http://dgobbi.github.io/bsd3.txt for details.
     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.
=========================================================================*/
#ifndef vtkDICOMVR_h
#define vtkDICOMVR_h
#include <vtkSystemIncludes.h>
#include "vtkDICOMModule.h" // For export macro
//! VRs (Value Representations)
class VTKDICOM_EXPORT vtkDICOMVR
{
public:
  //! The VR enum constants.
  /*!
   *  Sorting the constants numerically will sort the VRs alphabetically.
   */
  enum EnumType
  {
    XX = 0x00, //!< Null (No Value)
    AE = 0x01, //!< Application Entity
    AS = 0x02, //!< Age String
    AT = 0x03, //!< Attribute Tag
    CS = 0x04, //!< Code String
    DA = 0x05, //!< Date
    DS = 0x06, //!< Decimal String
    DT = 0x07, //!< Date Time
    FD = 0x08, //!< Floating Point Double
    FL = 0x09, //!< Floating Point Single
    IS = 0x0a, //!< Integer String
    LO = 0x0b, //!< Long String
    LT = 0x0c, //!< Long Text
    OB = 0x0d, //!< Other Byte
    OD = 0x0e, //!< Other Double
    OF = 0x0f, //!< Other Float
    OL = 0x10, //!< Other Long
    OW = 0x11, //!< Other Word
    PN = 0x12, //!< Personal Name
    SH = 0x13, //!< Short String
    SL = 0x14, //!< Signed Long
    SQ = 0x15, //!< Sequence of Items
    SS = 0x16, //!< Signed Short
    ST = 0x17, //!< Short Text
    TM = 0x18, //!< Time
    UC = 0x19, //!< Unlimited Characters
    UI = 0x1a, //!< Unique Identifier
    UL = 0x1b, //!< Unsigned Long
    UN = 0x1c, //!< Unknown
    UR = 0x1d, //!< URI or URL
    US = 0x1e, //!< Unsigned Short
    UT = 0x1f, //!< Unlimited Text
    OX = 0x20, //!< Either OB or OW (for dict entries, not data elements)
    XS = 0x21  //!< Either SS or US (for dict entries, not data elements)
  };
  //@{
  //! Construct an empty, invalid VR.
  vtkDICOMVR() : Key(0) {}
  //! Construct a VR from a VR enum constant.
  vtkDICOMVR(EnumType vr) : Key(static_cast<unsigned char>(vr)) {}
  //! Attempt to construct a VR from a two-byte string.
  vtkDICOMVR(const char *vr) : Key(VRTable[static_cast<unsigned char>(vr[0])]
                                   [static_cast<unsigned char>(vr[1])]) {}
  //! Attempt to construct a VR from a two unsigned bytes.
  vtkDICOMVR(const unsigned char vr[2]) : Key(VRTable[vr[0]][vr[1]]) {}
  //@}
  //@{
  //! Check validity of this VR.
  bool IsValid() const { return (this->Key != 0); }
  //! Get the data type for this VR.
  int GetType() const { return TypeTable[this->Key]; }
  //! Get the two-character text for this VR.
  const char *GetText() const { return TextTable[this->Key]; }
  //@}
  //@{
  //! The VRs OB, OD, OF, OL, OW, SQ, UC, UN, UR, UT require a 32-bit VL.
  bool HasLongVL() const {
    return (((1ull << this->Key) & 0xb223e001u) != 0); }
  //! The VRs SH, LO, PN, ST, LT, UC, and UT use SpecificCharacterSet.
  bool HasSpecificCharacterSet() const {
    return (((1ull << this->Key) & 0x828c1800u) != 0); }
  //! This is true for all VRs whose value is stored as text.
  bool HasTextValue() const {
    return (((1ull << this->Key) & 0xa78c1cf6u) != 0); }
  //! This is true for for all VRs that store numbers.
  /*!
   *  The VRs included are IS, DS, US, UL, SS, SL, FL, FD.  The VRs
   *  OB, OW, OF, OL, and OD are not included.
   */
  bool HasNumericValue() const {
    return (((1ull << this->Key) & 0x48500740u) != 0); }
  //! The VRs ST, LT, and UT carry only one value.
  /*!
   * Specifically, this means that a backslash is not interpreted as a
   * value separator in these VRs. UR is not included, because backslash
   * is an illegal character in UR.
   */
  bool HasSingleValue() const {
    return (((1ull << this->Key) & 0x80801000u) != 0); }
  //@}
  //@{
  bool operator==(vtkDICOMVR a) const { return (this->Key == a.Key); }
  bool operator!=(vtkDICOMVR a) const { return (this->Key != a.Key); }
  bool operator<=(vtkDICOMVR a) const { return (this->Key <= a.Key); }
  bool operator>=(vtkDICOMVR a) const { return (this->Key >= a.Key); }
  bool operator<(vtkDICOMVR a) const { return (this->Key < a.Key); }
  bool operator>(vtkDICOMVR a) const { return (this->Key > a.Key); }
  //@}
private:
  unsigned char Key;
  static const unsigned char *VRTable[256];
  static const unsigned char TypeTable[34];
  static const char TextTable[34][4];
};
VTKDICOM_EXPORT ostream& operator<<(ostream& o, const vtkDICOMVR& a);
#endif /* vtkDICOMVR_h */
// VTK-HeaderTest-Exclude: vtkDICOMVR.h
 |