This file is indexed.

/usr/include/dcmtk/dcmsr/dsrctpl.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
/*
 *
 *  Copyright (C) 2015-2016, J. Riesmeier, Oldenburg, Germany
 *  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: dcmsr
 *
 *  Author: Joerg Riesmeier
 *
 *  Purpose:
 *    classes: DSRTemplateCommon
 *
 */


#ifndef DSRCTPL_H
#define DSRCTPL_H

#include "dcmtk/config/osconfig.h"   /* make sure OS specific configuration is included first */

#include "dcmtk/dcmsr/dsrtypes.h"
#include "dcmtk/dcmsr/dsrdoctn.h"
#include "dcmtk/dcmsr/dsrdncsr.h"


/*-----------------------*
 *  forward declaration  *
 *-----------------------*/

class DSRDocumentSubTree;


/*---------------------*
 *  class declaration  *
 *---------------------*/

/** Class managing common information on an SR template.
 *  This class is used as a base class only.
 */
class DCMTK_DCMSR_EXPORT DSRTemplateCommon
{

  public:

    /** clear non-static member variables
     */
    virtual void clear();

    /** check whether template identification is set
     ** @return OFTrue if set, OFFalse otherwise
     */
    virtual OFBool hasTemplateIdentification() const;

    /** check whether template identification is valid
     ** @param  check  check internally stored values for conformance with VR and VM
     *                 if enabled
     ** @return OFTrue if valid, OFFalse otherwise
     */
    virtual OFBool isTemplateIdentificationValid(const OFBool check = OFTrue) const;

    /** check whether template is extensible
     ** @return OFTrue if extensible, OFFalse otherwise
     */
    virtual OFBool isExtensible() const
    {
        return ExtensibleMode;
    }

    /** compare template identification with given values
     ** @param  templateIdentifier  template identifier to compare with
     *  @param  mappingResource     mapping resource that defines the template
     *  @param  mappingResourceUID  uniquely identifies the mapping resource (optional).
     *                              Not used for comparison if the value is empty.
     ** @result OFTrue if template identification is identical, OFFalse otherwise
     */
    virtual OFBool compareTemplateIdentication(const OFString &templateIdentifier,
                                               const OFString &mappingResource,
                                               const OFString &mappingResourceUID = "") const;

    /** get template identifier
     ** @return identifier of the template
     */
    inline const OFString &getTemplateIdentifier() const
    {
        return TemplateIdentifier;
    }

    /** get mapping resource
     ** @return mapping resource that defines the template
     */
    inline const OFString &getMappingResource() const
    {
        return MappingResource;
    }

    /** get optional mapping resource UID
     ** @return unique identifier of the mapping resource (might be empty)
     */
    inline const OFString &getMappingResourceUID() const
    {
        return MappingResourceUID;
    }

    /** change mode specifying whether the template is extensible or non-extensible
     ** @param  mode  set template type to extensible if OFTrue (default)
     */
    virtual void setExtensible(const OFBool mode = OFTrue)
    {
        ExtensibleMode = mode;
    }


  protected:

    /** constructor
     ** @param  templateIdentifier  identifier of the template
     *  @param  mappingResource     mapping resource that defines the template
     *  @param  mappingResourceUID  uniquely identifies the mapping resource (optional)
     */
    DSRTemplateCommon(const OFString &templateIdentifier,
                      const OFString &mappingResource,
                      const OFString &mappingResourceUID = "");

    /** destructor
     */
    virtual ~DSRTemplateCommon();

    /** clear all entries in the list of node IDs, i.e.\ set them to their initial value,
     *  which is 0
     */
    void clearEntriesInNodeList();

    /** reserve a certain number of entries in the list of node IDs.  Using this method
     *  can help to avoid unwanted memory allocations and copying of list entries.
     ** @param  count       number of entries to be reserved (for later use)
     *  @param  initialize  initialize all entries with a value of 0 if OFTrue, just
     *                      reserve but do not create them otherwise (default)
     */
    void reserveEntriesInNodeList(const size_t count,
                                  const OFBool initialize = OFFalse);

    /** store given entry at a certain position in the list of node IDs
     ** @param  pos     index of the list entry to use for storage (starting from 0)
     *  @param  nodeID  ID of the node that should be stored at the given position
     */
    void storeEntryInNodeList(const size_t pos,
                              const size_t nodeID);

    /** get a particular entry from the list of node IDs
     ** @param  pos  index of the list entry to retrieve (starting from 0)
     ** @return node ID that is stored at the given position, 0 if not found or set
     */
    size_t getEntryFromNodeList(const size_t pos) const;

    /** set given cursor to a specific node
     ** @param  cursor  reference to document tree node cursor that is used to start
     *                  searching the node from and that is set afterwards
     *  @param  pos     index of the list entry that stores the ID of the node
     ** @return ID of the new current node within the tree if successful, 0 otherwise
     */
    size_t gotoEntryFromNodeList(DSRDocumentTreeNodeCursor &cursor,
                                 const size_t pos) const;

    /** set internal cursor of a given document tree to a specific node
     ** @param  tree  pointer to document tree where nodes and cursor are stored
     *  @param  pos   index of the list entry that stores the ID of the node
     ** @return ID of the new current node within the tree if successful, 0 otherwise
     */
    size_t gotoEntryFromNodeList(DSRDocumentSubTree *tree,
                                 const size_t pos);

    /** set internal cursor of a given document tree to a particular node.
     *  The node is determined from the list of node IDs, starting from the entry
     *  specified by the parameter 'lastPos'.  The reverse search stops if either an
     *  entry with a non-zero value (valid node ID) is found or the first list entry
     *  is reached.  This approach in particular supports handling of template tables
     *  where the order of content items is significant.
     ** @param  tree      pointer to document tree where nodes and cursor are stored
     *  @param  lastPos   index of the last node list entry to start searching from
     *  @param  firstPos  optional index of the node list entry to stop searching
     ** @return ID of the new current node within the tree if successful, 0 otherwise
     */
    size_t gotoLastEntryFromNodeList(DSRDocumentSubTree *tree,
                                     const size_t lastPos,
                                     const size_t firstPos = 0);


  private:

    /// template identifier (VR=CS, mandatory)
    const OFString TemplateIdentifier;
    /// mapping resource (VR=CS, mandatory)
    const OFString MappingResource;
    /// mapping resource UID (VR=UI, optional)
    const OFString MappingResourceUID;
    /// mode indicating whether template is extensible (default: false)
    OFBool ExtensibleMode;

    /// list of node IDs used to remember certain positions in the template
    OFVector<size_t> NodeList;

 // --- declaration of default constructor and assignment operator
 // --- (the assignment operator is defined implicitly)

    DSRTemplateCommon();
    DSRTemplateCommon &operator=(const DSRTemplateCommon &);
};


#endif