0023947: Eliminate trivial compiler warnings in MSVC++ with warning level 4
[occt.git] / src / TDataStd / TDataStd_ChildNodeIterator.cxx
CommitLineData
b311480e 1// Created on: 2000-01-26
2// Created by: Denis PASCAL
3// Copyright (c) 2000-2012 OPEN CASCADE SAS
4//
5// The content of this file is subject to the Open CASCADE Technology Public
6// License Version 6.5 (the "License"). You may not use the content of this file
7// except in compliance with the License. Please obtain a copy of the License
8// at http://www.opencascade.org and read it completely before using this file.
9//
10// The Initial Developer of the Original Code is Open CASCADE S.A.S., having its
11// main offices at: 1, place des Freres Montgolfier, 78280 Guyancourt, France.
12//
13// The Original Code and all software distributed under the License is
14// distributed on an "AS IS" basis, without warranty of any kind, and the
15// Initial Developer hereby disclaims all such warranties, including without
16// limitation, any warranties of merchantability, fitness for a particular
17// purpose or non-infringement. Please see the License for the specific terms
18// and conditions governing the rights and limitations under the License.
19
7fd59977 20
21
22#include <TDataStd_ChildNodeIterator.ixx>
23
24#define ChildNodeIterator_UpToBrother \
25{ \
26 while (!myNode.IsNull() && (myNode->Depth() > myFirstLevel) && myNode->myNext == NULL) \
27 myNode = myNode->myFather; \
28 if (!myNode.IsNull() && (myNode->Depth() > myFirstLevel) && myNode->myFather != NULL) \
29 myNode = myNode->myNext; \
30 else \
31 myNode = NULL; \
32}
33
34//=======================================================================
35//function : TDataStd_ChildNodeIterator
36//purpose :
37//=======================================================================
38
39TDataStd_ChildNodeIterator::TDataStd_ChildNodeIterator()
40 : myFirstLevel(0)
41{}
42
43//=======================================================================
44//function : TDataStd_ChildNodeIterator
45//purpose :
46//=======================================================================
47
48TDataStd_ChildNodeIterator::TDataStd_ChildNodeIterator (const Handle(TDataStd_TreeNode)& aTreeNode,
49 const Standard_Boolean allLevels)
50: myNode(aTreeNode->myFirst),
51 myFirstLevel(allLevels ? aTreeNode->Depth() : -1)
52{}
53
54//=======================================================================
55//function : Initialize
56//purpose :
57//=======================================================================
58
59void TDataStd_ChildNodeIterator::Initialize(const Handle(TDataStd_TreeNode)& aTreeNode,
60 const Standard_Boolean allLevels)
61{
62 myNode = aTreeNode->myFirst;
63 myFirstLevel = allLevels ? aTreeNode->Depth() : -1;
64}
65
66//=======================================================================
67//function : Next
68//purpose :
69//=======================================================================
70
71void TDataStd_ChildNodeIterator::Next()
72{
73 if (myFirstLevel == -1) {
74 myNode = myNode->myNext;
75 }
76 else {
77 if (myNode->myFirst != NULL) myNode = myNode->myFirst;
78 else ChildNodeIterator_UpToBrother;
79 }
80}
81
82//=======================================================================
83//function : NextBrother
84//purpose :
85//=======================================================================
86
87void TDataStd_ChildNodeIterator::NextBrother()
88{
89 if (myNode->myNext != NULL) myNode = myNode->myNext;
90 else ChildNodeIterator_UpToBrother;
91}