File: dsrdncsr.cc

package info (click to toggle)
dcmtk 3.6.9-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 95,648 kB
  • sloc: ansic: 426,874; cpp: 318,177; makefile: 6,401; sh: 4,341; yacc: 1,026; xml: 482; lex: 321; perl: 277
file content (98 lines) | stat: -rw-r--r-- 2,519 bytes parent folder | download | duplicates (5)
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
/*
 *
 *  Copyright (C) 2016-2017, 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: DSRDocumentTreeNodeCursor
 *
 */


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

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


DSRDocumentTreeNodeCursor::DSRDocumentTreeNodeCursor()
  : DSRTreeNodeCursor<DSRDocumentTreeNode>()
{
}


DSRDocumentTreeNodeCursor::DSRDocumentTreeNodeCursor(const DSRDocumentTreeNodeCursor &cursor)
  : DSRTreeNodeCursor<DSRDocumentTreeNode>(cursor)
{
}


DSRDocumentTreeNodeCursor::DSRDocumentTreeNodeCursor(const DSRTreeNodeCursor<DSRDocumentTreeNode> &cursor)
  : DSRTreeNodeCursor<DSRDocumentTreeNode>(cursor)
{
}


DSRDocumentTreeNodeCursor::DSRDocumentTreeNodeCursor(DSRDocumentTreeNode *node,
                                                     const DSRPositionCounter *position)
  : DSRTreeNodeCursor<DSRDocumentTreeNode>(node, position)
{
}


DSRDocumentTreeNodeCursor::~DSRDocumentTreeNodeCursor()
{
}


DSRDocumentTreeNodeCursor &DSRDocumentTreeNodeCursor::operator=(const DSRDocumentTreeNodeCursor &cursor)
{
    DSRTreeNodeCursor<DSRDocumentTreeNode>::operator=(cursor);
    return *this;
}


DSRDocumentTreeNodeCursor &DSRDocumentTreeNodeCursor::operator=(DSRDocumentTreeNode *node)
{
    DSRTreeNodeCursor<DSRDocumentTreeNode>::operator=(node);
    return *this;
}


size_t DSRDocumentTreeNodeCursor::gotoMatchingNode(const DSRDocumentTreeNodeFilter &filter,
                                                   const OFBool searchIntoSub)
{
    size_t nodeID = 0;
    const DSRDocumentTreeNode *node;
    /* iterate over all nodes */
    do {
        node = getNode();
        /* and check whether it matches */
        if (filter.matches(node))
            nodeID = node->getNodeID();
    } while ((nodeID == 0) && iterate(searchIntoSub));
    return nodeID;
}


size_t DSRDocumentTreeNodeCursor::gotoNextMatchingNode(const DSRDocumentTreeNodeFilter &filter,
                                                       const OFBool searchIntoSub)
{
    /* first, goto "next" node */
    size_t nodeID = iterate(searchIntoSub);
    if (nodeID > 0)
        nodeID = gotoMatchingNode(filter, searchIntoSub);
    return nodeID;
}