This file is indexed.

/usr/include/dcmtk/dcmiod/modcommoninstanceref.h is in libdcmtk-dev 3.6.2-3build3.

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
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
/*
 *
 *  Copyright (C) 2015-2017, Open Connections GmbH
 *  All rights reserved.  See COPYRIGHT file for details.
 *
 *  This software and supporting documentation are maintained by
 *
 *    OFFIS e.V.
 *    R&D Division Health
 *    Escherweg 2
 *    D-26121 Oldenburg, Germany
 *
 *
 *  Module: dcmiod
 *
 *  Author: Michael Onken
 *
 *  Purpose: Class for managing the Common Instance Reference Module
 *
 */

#ifndef MODCOMMONINSTANCEREF_H
#define MODCOMMONINSTANCEREF_H

#include "dcmtk/config/osconfig.h"
#include "dcmtk/ofstd/ofmem.h"
#include "dcmtk/ofstd/ofvector.h"
#include "dcmtk/dcmdata/dctk.h"
#include "dcmtk/dcmiod/iodrules.h"
#include "dcmtk/dcmiod/modbase.h"
#include "dcmtk/dcmiod/iodmacro.h"
#include "dcmtk/dcmiod/iodreferences.h"


/** Class representing the Common Instance Reference Module:
 *
 * Referenced Series Sequence: (SQ, VM 1-n, Type 1C)
 * > Series Instance UID: (UI, 1, 1)
 * > Referenced Instance Sequence: (SQ, 1-n, 1)
 * >> SOP Instance Reference Macro
 * Studies Containing Other Referenced Instances Sequence: (SQ, 1-n, 1C)
 * > Study Instance UID (UI, 1, 1)
 * > Series and Instance Reference Macro
 *
 * Thus the Common Instance Reference Module lists references to other SOP
 * instances and divides them between those instances that are in the same
 * study, and those that are inside another study.
 */
class DCMTK_DCMIOD_EXPORT IODCommonInstanceReferenceModule : public IODModule
{

public:

  // Forward declaration (class defined later in this file)
  class StudiesOtherInstancesItem;

  /** Constructor
   *  @param  item The item to be used for data storage. If NULL, the
   *          class creates an empty data container.
   *  @param  rules The rule set for this class. If NULL, the class creates
   *          one from scratch and adds its values.
   */
  IODCommonInstanceReferenceModule(OFshared_ptr<DcmItem> item,
                                   OFshared_ptr<IODRules> rules);

  /** Constructor
   */
  IODCommonInstanceReferenceModule();

  /** Clears all data belonging to this module (rules are kept)
   */
  virtual void clearData();

  /** Destructor
   */
  virtual ~IODCommonInstanceReferenceModule();

  /** Add references
   *  @param  references The references to be added
   *  @param  studyInstanceUID The Study Instance UID of "this" object instance.
   *          It's used to decide whether the provided instances (with their
   *          own Study Instance UIDs) will go into the Referenced Series Sequence
   *          or into the Studies Containing Other Referenced Instances Sequence.
   *          If it is left empty, then the method tries to find "this" instances
   *          Study Instance UID in the internal item container which may be shared
   *          with other modules and thus may already provide the Study Instance
   *          UID (e.g. via General Study Module).
   *  @param  clearOldData Delete any old references if OFTrue, otherwise keep them
   *  @result EC_Normal if successful, error otherwise
   */
  virtual size_t addReferences(const IODReferences& references,
                               const OFString& studyInstanceUID = "",
                               const OFBool clearOldData = OFTrue);

  /** Read data of this module from given source item
   *  @param  source The item to read from
   *  @param  clearOldData If OFTrue, old data is cleared before reading, otherwise
   *          it is overwriten/amended.
   *  @result EC_Normal if successful, error otherwise
   */
  virtual OFCondition read(DcmItem& source,
                           const OFBool clearOldData = OFTrue);

  /** Write data of this module into given destination item
   *  @param  destination The item to write to
   *  @result EC_Normal if successful, error otherwise
   */
  virtual OFCondition write(DcmItem& destination);

  /** Resets rules to their original values
   */
  virtual void resetRules();

  /** Get name of module ("CommonInstanceReferenceModule")
   *  @return Name of the module ("CommonInstanceReferenceModule")
   */
  virtual OFString getName() const;

  /** Return reference to list of Referenced Series items
   *  @return Reference to list of Reference Series Items
   */
  OFVector<IODSeriesAndInstanceReferenceMacro::ReferencedSeriesItem*>& getReferencedSeriesItems();

  /** Return reference to content of Studies Containing Other Referenced Instances Sequence
   *  @return Reference to content of Studies Containing Other Referenced Instances Sequence
   */
  OFVector<StudiesOtherInstancesItem*>& getStudiesContainingOtherReferences();

protected:

  virtual OFCondition addSeriesReference(
    OFVector<IODSeriesAndInstanceReferenceMacro::ReferencedSeriesItem*>& container,
    const IODReference& ref);

private:

  void freeMemory();

  /// Vector with all items of the Referenced Series Sequence
  OFVector<IODSeriesAndInstanceReferenceMacro::ReferencedSeriesItem*> m_ReferenceSeriesItems;

  /// Name of this component ("CommonInstanceReferenceModule")
  static const OFString m_ComponentName;

  /// Items of Studies Containing Other Referenced Instances Sequence
  OFVector<StudiesOtherInstancesItem*> m_StudiesContainingOtherReferencedInstancesSequence;
};


/** Class representing items from the Studies Containing Other Referenced Instances Sequence,
 *  as used within the Common Instance Reference Module
 *
 * Studies Containing Other Referenced Instances Sequence: (SQ, 1-n, 1C)
 * > Study Instance UID (UI, 1, 1)
 * > Series and Instance Reference Macro
 *
 */
class DCMTK_DCMIOD_EXPORT IODCommonInstanceReferenceModule::StudiesOtherInstancesItem : public IODComponent
{

public:

  /** Constructor
   *  @param  item The item to be used for data storage. If NULL, the
   *          class creates an empty data container.
   *  @param  rules The rule set for this class. If NULL, the class creates
   *          one from scratch and adds its values.
   *  @param  parent The parent of the IOD component (NULL if none or unknown)
   */
  StudiesOtherInstancesItem(OFshared_ptr<DcmItem> item,
                            OFshared_ptr<IODRules> rules,
                            IODComponent* parent = NULL);

  /** Constructor
   *  @param  parent The parent component of this module, might be NULL
   */
  StudiesOtherInstancesItem(IODComponent* parent = NULL);

  /** Destructor
   */
  virtual ~StudiesOtherInstancesItem();

  /** Clear (removes) all attributes handled by the modules of this component.
   *  Rules are not reset.
   */
  virtual void clearData();

  /** Read data from source item into this module
   *  @param  source The item to read from
   *  @param  clearOldData If OFTrue, old data is cleared first, otherwise it is
   *          overwritten/amended
   *  @result EC_Normal if successful, error otherwise
   */
  virtual OFCondition read(DcmItem& source,
                           const OFBool clearOldData = OFTrue);

  /** Write this module's data into given destination item
   *  @param  destination Item to write to
   *  @result EC_Normal if successful, error otherwise
   */
  virtual OFCondition write(DcmItem& destination);

  /** Resets rules to their original values
   */
  virtual void resetRules();

  /** Get name of module ("StudiesContainingOtherReferencedInstancesSequence")
   *  @return Name of the module ("StudiesContainingOtherReferencedInstancesSequence")
   */
  virtual OFString getName() const;

  /** Get Study Instance UID
   *  @param  value Reference to variable in which the value should be stored
   *  @param  pos Index of the value to get (0..vm-1), -1 for all components
   *  @return EC_Normal if successful, an error code otherwise
   */
  virtual OFCondition getStudyInstanceUID(OFString &value,
                                          const signed long pos = 0) const;

  /** Set Study Instance UID
   *  @param  value Value to be set (single value only) or "" for no value
   *  @param  checkValue Check 'value' for conformance with VR (PN) and VM (1) if enabled
   *  @return EC_Normal if successful, an error code otherwise
   */
  virtual OFCondition setStudyInstanceUID(const OFString& value,
                                          const OFBool checkValue = OFTrue);


  /** Get Series And Instance Reference Macro
  *  @return Reference to the Series And Instance Reference Macro structure
  */
  virtual IODSeriesAndInstanceReferenceMacro& getReferencedSeriesAndInstanceReferences();

private:

  /// The name of this component ("StudiesContainingOtherReferencedInstancesSequence")
  static const OFString m_ComponentName;

  /// The Series and Instance Reference Macro used in this item
  IODSeriesAndInstanceReferenceMacro m_ReferencedSeriesAndInstance;
};


#endif // MODCOMMONINSTANCEREF_H