zjf
2023-03-06 392b76515f40376b6d36f40a114850ef63650384
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
/////////////////////////////////////////////////////////////////////////////// 
// Copyright (C) 2002-2016, Open Design Alliance (the "Alliance"). 
// All rights reserved. 
// 
// This software and its documentation and related materials are owned by 
// the Alliance. The software may only be incorporated into application 
// programs owned by members of the Alliance, subject to a signed 
// Membership Agreement and Supplemental Software License Agreement with the
// Alliance. The structure and organization of this software are the valuable  
// trade secrets of the Alliance and its suppliers. The software is also 
// protected by copyright law and international treaty provisions. Application  
// programs incorporating this software must include the following statement 
// with their copyright notices:
//   
//   This application incorporates Teigha(R) software pursuant to a license 
//   agreement with Open Design Alliance.
//   Teigha(R) Copyright (C) 2002-2016 by Open Design Alliance. 
//   All rights reserved.
//
// By use of this software, its documentation or related materials, you 
// acknowledge and accept the above terms.
///////////////////////////////////////////////////////////////////////////////
 
 
 
#ifndef _INC_DDBRTRAVERSER_3F82DF7201C5_INCLUDED
#define _INC_DDBRTRAVERSER_3F82DF7201C5_INCLUDED
 
#include "Br/BrExport.h"
#include "Br/BrEnums.h"
#include "RxObject.h"
 
#include "TD_PackPush.h"
#include "SharedPtr.h"
#include "DbSubentId.h"
 
/** \details
    This class is the interface class for BREP traversers.
    
    \sa
    TD_Br
    
    <group OdBr_Classes>
*/
class ODBR_TOOLKIT_EXPORT OdBrTraverser
{
public:
  /** \details
    Returns true if and only if the full topological adjacency list has been traversed with the next() function.
  */
  bool done() const;
 
  /** \details
    Sets this Traverser object to reference the next object in the topological adjacency list.
 
    \remarks
    Adjacency lists are circular, ordered lists.
    
    Returns odbrOK if successful, or an appropriate error code if not.
  */
  OdBrErrorStatus next();
 
  /** \details
      Sets this Traverser object to reference the object that it would normally return first.
  */
  OdBrErrorStatus restart();
 
  virtual ~OdBrTraverser();
 
  /** \details
    Returns true if and only if the specified Traverser object is equivalent to this Traverser object.
    
    \remarks
    Two OdBrTraverser objects are equivalent if and only if they non-null, have the
    same topological adjacency list owner, and have the same list position.
    
    \param pOtherTraverser [in]  Pointer to any OdBrTraverser object.
  */
  bool isEqualTo(const OdBrTraverser* pOtherTraverser) const;
 
  /** \details
    Returns true if and only if this Traverser object is empty. 
  */
  bool isNull() const;
 
 
  // Validation
  OdBrErrorStatus setValidationLevel(const BrValidationLevel& level = *(BrValidationLevel*)NULL);
 
  OdBrErrorStatus getValidationLevel(BrValidationLevel& level) const;
 
protected:
  OdRxObjectPtr m_pImp;
  OdSharedPtr<OdDbStubPtrArray> m_pFSubentPath;
  bool m_bIsValidate; //The enum has only 2 values.
 
  OdBrTraverser();
 
  OdBrTraverser(const OdBrTraverser& source);
 
  friend class OdBrTraverserInternals;
};
 
#include "TD_PackPop.h"
 
#endif /* _INC_DDBRTRAVERSER_3F82DF7201C5_INCLUDED */