/usr/include/dcmtk/dcmsr/dsrxmlc.h is in libdcmtk-dev 3.6.1~20150924-5.
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 | /*
*
* Copyright (C) 2003-2014, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmsr
*
* Author: Joerg Riesmeier
*
* Purpose:
* classes: DSRXMLCursor
*
*/
#ifndef DSRXMLC_H
#define DSRXMLC_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/ofstd/oftypes.h" /* for definition of OFBool */
#define INCLUDE_CSTDLIB
#define INCLUDE_CSTDDEF
#include "dcmtk/ofstd/ofstdinc.h"
#include "dcmtk/dcmsr/dsdefine.h"
#ifdef WITH_LIBXML
#include <libxml/parser.h>
#endif
/*--------------------*
* type definitions *
*--------------------*/
#ifndef WITH_LIBXML
// define pointer type if 'libxml' absent
typedef void (*xmlNodePtr);
#endif
/*-----------------------*
* forward declaration *
*-----------------------*/
class DSRXMLDocument;
/*---------------------*
* class declaration *
*---------------------*/
/** Class for XML document cursors.
* This class encapsulates the access to the 'libxml' node pointer and,
* therefore, allows to replace the XML library with little effort (if
* required).
*/
class DCMTK_DCMSR_EXPORT DSRXMLCursor
{
// allow DSRXMLDocument to access private member variable 'Node' directly
friend class DSRXMLDocument;
public:
/** default constructor
*/
DSRXMLCursor();
/** copy constructor
** @param cursor cursor object to be copied
*/
DSRXMLCursor(const DSRXMLCursor &cursor);
/** destructor
*/
virtual ~DSRXMLCursor();
/** assignment operator
** @param cursor cursor object to be copied
** @return reference to this cursor object after 'cursor' has been copied
*/
DSRXMLCursor &operator=(const DSRXMLCursor &cursor);
/** check whether cursor is valid.
* Valid means that the cursor points to a valid XML node.
** @return OFTrue if valid, OFFalse otherwise
*/
inline OFBool valid() const
{
return (Node != NULL);
}
/** set cursor to next XML node (same level).
* Blank (empty or whitespace only) nodes are ignored/skipped.
** @return reference to this cursor object (might be invalid)
*/
DSRXMLCursor &gotoNext();
/** set cursor to first XML child node (next lower level).
* Blank (empty or whitespace only) nodes are ignored/skipped.
** @return reference to this cursor object (might be invalid)
*/
DSRXMLCursor &gotoChild();
/** get cursor pointing to next XML node (same level).
* This cursor object is not modified.
** @return copy of the requested cursor object (might be invalid)
*/
DSRXMLCursor getNext() const;
/** get cursor pointing to first XML child node (next lower level).
* This cursor object is not modified.
** @return copy of the requested cursor object (might be invalid)
*/
DSRXMLCursor getChild() const;
private:
/// pointer to the associated 'libxml' node
xmlNodePtr Node;
};
#endif
|