File indexing completed on 2026-09-28 09:19:34
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014 #ifndef _BRepGraph_CopyRemap_HeaderFile
0015 #define _BRepGraph_CopyRemap_HeaderFile
0016
0017 #include <BRepGraph_ItemId.hxx>
0018 #include <BRepGraph_ItemUID.hxx>
0019 #include <NCollection_FlatDataMap.hxx>
0020 #include <Standard_DefineAlloc.hxx>
0021
0022 #include <cstdint>
0023
0024 class BRepGraph;
0025
0026
0027
0028
0029
0030
0031 class BRepGraph_CopyRemap
0032 {
0033 public:
0034 DEFINE_STANDARD_ALLOC
0035
0036
0037 enum class Mode : std::uint8_t
0038 {
0039 Copy = 0,
0040 Compact = 1
0041 };
0042
0043
0044 enum class MappingKind : std::uint8_t
0045 {
0046 Explicit = 0,
0047 Identity = 1
0048 };
0049
0050 using ItemMap = NCollection_FlatDataMap<BRepGraph_ItemId, BRepGraph_ItemId>;
0051
0052 BRepGraph_CopyRemap(const BRepGraph& theSourceGraph,
0053 BRepGraph& theTargetGraph,
0054 const ItemMap& theItemRemap,
0055 const Mode theMode) noexcept;
0056
0057
0058
0059 BRepGraph_CopyRemap(const BRepGraph& theSourceGraph,
0060 BRepGraph& theTargetGraph,
0061 MappingKind theMappingKind,
0062 Mode theMode) noexcept;
0063
0064
0065 [[nodiscard]] Mode CopyMode() const noexcept { return myMode; }
0066
0067
0068 [[nodiscard]] bool IsCompact() const noexcept { return myMode == Mode::Compact; }
0069
0070
0071 [[nodiscard]] const BRepGraph& SourceGraph() const noexcept { return *mySourceGraph; }
0072
0073
0074 [[nodiscard]] BRepGraph& TargetGraph() const noexcept { return *myTargetGraph; }
0075
0076
0077 [[nodiscard]] const BRepGraph& TargetGraphConst() const noexcept { return *myTargetGraph; }
0078
0079
0080 [[nodiscard]] const ItemMap& Items() const noexcept { return *myItemRemap; }
0081
0082
0083 [[nodiscard]] Standard_EXPORT BRepGraph_ItemId
0084 TargetItem(const BRepGraph_ItemId theSourceItem) const;
0085
0086
0087 [[nodiscard]] Standard_EXPORT BRepGraph_ItemId
0088 TargetItemOrInvalid(const BRepGraph_ItemId theSourceItem) const;
0089
0090
0091 [[nodiscard]] Standard_EXPORT bool HasTargetItem(const BRepGraph_ItemId theSourceItem) const;
0092
0093
0094 [[nodiscard]] Standard_EXPORT BRepGraph_ItemUID
0095 SourceUID(const BRepGraph_ItemId theSourceItem) const;
0096
0097
0098 [[nodiscard]] Standard_EXPORT BRepGraph_ItemUID
0099 TargetUID(const BRepGraph_ItemId theTargetItem) const;
0100
0101
0102 [[nodiscard]] Standard_EXPORT BRepGraph_ItemUID
0103 TargetUIDFromSource(const BRepGraph_ItemId theSourceItem) const;
0104
0105 private:
0106 const BRepGraph* mySourceGraph = nullptr;
0107 BRepGraph* myTargetGraph = nullptr;
0108 const ItemMap* myItemRemap = nullptr;
0109 Mode myMode = Mode::Copy;
0110 MappingKind myMappingKind = MappingKind::Explicit;
0111 };
0112
0113 #endif