Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-28 09:19:37

0001 // Copyright (c) 2026 OPEN CASCADE SAS
0002 //
0003 // This file is part of Open CASCADE Technology software library.
0004 //
0005 // This library is free software; you can redistribute it and/or modify it under
0006 // the terms of the GNU Lesser General Public License version 2.1 as published
0007 // by the Free Software Foundation, with special exception defined in the file
0008 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0009 // distribution for complete text of the license and disclaimer of any warranty.
0010 //
0011 // Alternatively, this file may be used under the terms of Open CASCADE
0012 // commercial license or contractual agreement.
0013 
0014 #ifndef _BRepGraphInc_Relations_HeaderFile
0015 #define _BRepGraphInc_Relations_HeaderFile
0016 
0017 #include <BRepGraph_NodeId.hxx>
0018 #include <BRepGraph_RefId.hxx>
0019 #include <NCollection_LinearVector.hxx>
0020 
0021 //! @brief Centralized topology relation representations for BRepGraph incidence storage.
0022 //!
0023 //! Relation structs hold ordered child-use lists and incoming incidence indexes
0024 //! outside definition records. Definitions stay focused on intrinsic geometry
0025 //! and flags; reusable child/parent edges live in reference records or coedge
0026 //! use records.
0027 namespace BRepGraphInc
0028 {
0029 
0030 //! @brief Topology relations for face definitions.
0031 struct FaceRelations
0032 {
0033   NCollection_LinearVector<BRepGraph_WireRefId> WireRefIds; //!< Wire references owned by this face
0034   NCollection_LinearVector<BRepGraph_FaceRefId>
0035     ParentFaceRefIds; //!< Upstream face references (compound hierarchy)
0036 };
0037 
0038 //! @brief Topology relations for wire definitions.
0039 struct WireRelations
0040 {
0041   NCollection_LinearVector<BRepGraph_CoEdgeId>  CoEdgeIds; //!< Coedge identifiers in this wire
0042   NCollection_LinearVector<BRepGraph_WireRefId> ParentWireRefIds; //!< Upstream wire references
0043 };
0044 
0045 //! @brief Topology relations for edge definitions.
0046 struct EdgeRelations
0047 {
0048   NCollection_LinearVector<BRepGraph_CoEdgeId> CoEdgeIds; //!< Coedge identifiers using this edge
0049 };
0050 
0051 //! @brief Topology relations for shell definitions.
0052 struct ShellRelations
0053 {
0054   NCollection_LinearVector<BRepGraph_FaceRefId>  FaceRefIds; //!< Face references in this shell
0055   NCollection_LinearVector<BRepGraph_ShellRefId> ParentShellRefIds; //!< Upstream shell references
0056 };
0057 
0058 //! @brief Topology relations for solid definitions.
0059 struct SolidRelations
0060 {
0061   NCollection_LinearVector<BRepGraph_ShellRefId> ShellRefIds; //!< Shell references in this solid
0062   NCollection_LinearVector<BRepGraph_SolidRefId> ParentSolidRefIds; //!< Upstream solid references
0063 };
0064 
0065 //! @brief Topology relations for compound definitions.
0066 struct CompoundRelations
0067 {
0068   NCollection_LinearVector<BRepGraph_ChildRefId> ChildRefIds; //!< Child references in this compound
0069 };
0070 
0071 //! @brief Topology relations for compsolid definitions.
0072 struct CompSolidRelations
0073 {
0074   NCollection_LinearVector<BRepGraph_SolidRefId>
0075     SolidRefIds; //!< Solid references in this compsolid
0076 };
0077 
0078 //! @brief Topology relations for vertex definitions.
0079 struct VertexRelations
0080 {
0081   NCollection_LinearVector<BRepGraph_EdgeId> EdgeIds; //!< Edge identifiers sharing this vertex
0082 };
0083 
0084 //! @brief Topology relations for product definitions.
0085 struct ProductRelations
0086 {
0087   NCollection_LinearVector<BRepGraph_OccurrenceRefId>
0088     OccurrenceRefIds; //!< Occurrence references under this product
0089 };
0090 
0091 //! @brief Topology relations for occurrence definitions.
0092 struct OccurrenceRelations
0093 {
0094   NCollection_LinearVector<BRepGraph_OccurrenceRefId>
0095     ParentOccurrenceRefIds; //!< Upstream occurrence references
0096 };
0097 
0098 } // namespace BRepGraphInc
0099 
0100 #endif // _BRepGraphInc_Relations_HeaderFile