Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:05:15

0001 // Created on: 1993-08-06
0002 // Created by: Martine LANGLOIS
0003 // Copyright (c) 1993-1999 Matra Datavision
0004 // Copyright (c) 1999-2014 OPEN CASCADE SAS
0005 //
0006 // This file is part of Open CASCADE Technology software library.
0007 //
0008 // This library is free software; you can redistribute it and/or modify it under
0009 // the terms of the GNU Lesser General Public License version 2.1 as published
0010 // by the Free Software Foundation, with special exception defined in the file
0011 // OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
0012 // distribution for complete text of the license and disclaimer of any warranty.
0013 //
0014 // Alternatively, this file may be used under the terms of Open CASCADE
0015 // commercial license or contractual agreement.
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 //! Stores a pair of Points from step
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       // Combine two int values into a single hash value.
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 // _StepToTopoDS_PointPair_HeaderFile