File indexing completed on 2025-01-18 10:05:15
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017 #ifndef _StepToTopoDS_PointPair_HeaderFile
0018 #define _StepToTopoDS_PointPair_HeaderFile
0019
0020 #include <Standard.hxx>
0021 #include <Standard_DefineAlloc.hxx>
0022 #include <Standard_Handle.hxx>
0023
0024 class StepGeom_CartesianPoint;
0025
0026
0027 class StepToTopoDS_PointPair
0028 {
0029 public:
0030
0031 DEFINE_STANDARD_ALLOC
0032
0033
0034 Standard_EXPORT StepToTopoDS_PointPair(const Handle(StepGeom_CartesianPoint)& P1, const Handle(StepGeom_CartesianPoint)& P2);
0035
0036 const Handle(StepGeom_CartesianPoint)& GetPoint1() const
0037 {
0038 return myP1;
0039 }
0040
0041 const Handle(StepGeom_CartesianPoint)& GetPoint2() const
0042 {
0043 return myP2;
0044 }
0045
0046 bool operator==(const StepToTopoDS_PointPair& thePointPair) const
0047 {
0048 return (((myP1 == thePointPair.myP1) && (myP2 == thePointPair.myP2)) ||
0049 ((myP1 == thePointPair.myP2) && (myP2 == thePointPair.myP1)));
0050 }
0051
0052 protected:
0053
0054
0055
0056
0057
0058 private:
0059
0060
0061
0062 Handle(StepGeom_CartesianPoint) myP1;
0063 Handle(StepGeom_CartesianPoint) myP2;
0064
0065
0066 };
0067
0068 namespace std
0069 {
0070 template <>
0071 struct hash<StepToTopoDS_PointPair>
0072 {
0073 size_t operator()(const StepToTopoDS_PointPair& thePointPair) const noexcept
0074 {
0075
0076 size_t aCombination[2];
0077 aCombination[0] = std::hash<Handle(StepGeom_CartesianPoint)>{}(thePointPair.GetPoint1());
0078 aCombination[1] = std::hash<Handle(StepGeom_CartesianPoint)>{}(thePointPair.GetPoint2());
0079 if (aCombination[0] > aCombination[1])
0080 {
0081 std::swap(aCombination[0], aCombination[1]);
0082 }
0083 return opencascade::hashBytes(aCombination, sizeof(aCombination));
0084 }
0085 };
0086 }
0087
0088
0089
0090
0091
0092
0093 #endif