mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-14 13:30:48 +03:00
0033370: Foundation Classes - Moving into STL and Boost functionality
NCollection containers update: - NCollection_Array1 - updated functionality - NCollection_Array2 - NCollection_Array1 as a wrapper for 2array - NCollection_Vector -> NCollection_DynamicArray was renamed and reworked. TCollection: - Use static empty string to avoid allocations on empty string NCollection allocators update: - NCollection_Allocator - allocator that used Standard::Allocate - NCollection_OccAllocator - allocator-wrapper that used OCC BaseAllocator objects - NCollection_IncAllocator - rework to increase performance Standard: - Rework functionality to use different allocation libs - Implement basic of new way to wrap allocations tools - Define 4 ways to allocation (defines in configure stage) Additional changes: - Hash function uses std::hash functionality - size_t as a hash value - New HashUtils with Murmur and FVN hash algo for x32 and x64 - Deprecated _0.cxx and .gxx DE classes reorganized - Create own utility for std memory - Update Standard_Transient to be more platform-independent Math TK changes: - math_Vector -> match_BaseVector<> - Buffer decreased to cash 32 elements instead of 512
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
#include <TopTools_ShapeMapHasher.hxx>
|
||||
#include <TopoDS_Shape.hxx>
|
||||
#include <NCollection_DefineAlloc.hxx>
|
||||
#include <NCollection_StdAllocator.hxx>
|
||||
#include <NCollection_OccAllocator.hxx>
|
||||
#include <IMeshData_ParametersListArrayAdaptor.hxx>
|
||||
#include <TColStd_MapIteratorOfPackedMapOfInteger.hxx>
|
||||
#include <NCollection_EBTree.hxx>
|
||||
@@ -108,10 +108,10 @@ namespace IMeshData
|
||||
|
||||
namespace Model
|
||||
{
|
||||
typedef std::deque<gp_Pnt, NCollection_StdAllocator<gp_Pnt> > SequenceOfPnt;
|
||||
typedef std::deque<gp_Pnt2d, NCollection_StdAllocator<gp_Pnt2d> > SequenceOfPnt2d;
|
||||
typedef std::deque<Standard_Real, NCollection_StdAllocator<Standard_Real> > SequenceOfReal;
|
||||
typedef std::deque<Standard_Integer, NCollection_StdAllocator<Standard_Integer> > SequenceOfInteger;
|
||||
typedef std::deque<gp_Pnt, NCollection_OccAllocator<gp_Pnt> > SequenceOfPnt;
|
||||
typedef std::deque<gp_Pnt2d, NCollection_OccAllocator<gp_Pnt2d> > SequenceOfPnt2d;
|
||||
typedef std::deque<Standard_Real, NCollection_OccAllocator<Standard_Real> > SequenceOfReal;
|
||||
typedef std::deque<Standard_Integer, NCollection_OccAllocator<Standard_Integer> > SequenceOfInteger;
|
||||
}
|
||||
|
||||
// Lists
|
||||
@@ -125,40 +125,20 @@ namespace IMeshData
|
||||
typedef NCollection_CellFilter<BRepMesh_CircleInspector> CircleCellFilter;
|
||||
typedef NCollection_CellFilter<BRepMesh_VertexInspector> VertexCellFilter;
|
||||
|
||||
// Data Maps
|
||||
template<typename Type>
|
||||
struct WeakEqual
|
||||
{
|
||||
static Standard_Boolean IsEqual(const Type* theFirst,
|
||||
const Type* theSecond)
|
||||
{
|
||||
return (theFirst == theSecond);
|
||||
}
|
||||
typedef NCollection_Shared<NCollection_DataMap<TopoDS_Shape, Standard_Integer,TopTools_ShapeMapHasher> > DMapOfShapeInteger;
|
||||
typedef NCollection_Shared<NCollection_DataMap<IFacePtr, ListOfInteger> > DMapOfIFacePtrsListOfInteger;
|
||||
typedef NCollection_Shared<NCollection_Map<IEdgePtr> > MapOfIEdgePtr;
|
||||
typedef NCollection_Shared<NCollection_Map<IFacePtr> > MapOfIFacePtr;
|
||||
typedef NCollection_Shared<NCollection_Map<BRepMesh_OrientedEdge> > MapOfOrientedEdges;
|
||||
typedef NCollection_Shared<NCollection_Map<Standard_Real> > MapOfReal;
|
||||
typedef NCollection_Shared<NCollection_IndexedDataMap<IFacePtr, ListOfIPCurves> > IDMapOfIFacePtrsListOfIPCurves;
|
||||
typedef NCollection_Shared<NCollection_DataMap<IFacePtr, Handle(MapOfIEdgePtr)> > DMapOfIFacePtrsMapOfIEdgePtrs;
|
||||
typedef NCollection_Shared<NCollection_IndexedDataMap<BRepMesh_Edge, BRepMesh_PairOfIndex> > IDMapOfLink;
|
||||
typedef NCollection_Shared<NCollection_DataMap<Standard_Integer, ListOfInteger> > DMapOfIntegerListOfInteger;
|
||||
typedef NCollection_Shared<NCollection_DataMap<Standard_Integer, Standard_Boolean> > MapOfIntegerInteger;
|
||||
typedef NCollection_Shared<NCollection_IndexedMap<Standard_Real> > IMapOfReal;
|
||||
|
||||
//! Computes a hash code for the given pointer, in the range [1, theUpperBound]
|
||||
//! @param thePointer the pointer which hash code is to be computed
|
||||
//! @param theUpperBound the upper bound of the range a computing hash code must be within
|
||||
//! @return a computed hash code, in the range [1, theUpperBound]
|
||||
static Standard_Integer HashCode (const Type* const thePointer, Standard_Integer theUpperBound)
|
||||
{
|
||||
return ::HashCode (thePointer, theUpperBound);
|
||||
}
|
||||
};
|
||||
|
||||
typedef NCollection_Shared<NCollection_DataMap<TopoDS_Shape, Standard_Integer, TopTools_ShapeMapHasher> > DMapOfShapeInteger;
|
||||
typedef NCollection_Shared<NCollection_DataMap<IFacePtr, ListOfInteger, WeakEqual<IMeshData_Face> > > DMapOfIFacePtrsListOfInteger;
|
||||
typedef NCollection_Shared<NCollection_Map<IEdgePtr, WeakEqual<IMeshData_Edge> > > MapOfIEdgePtr;
|
||||
typedef NCollection_Shared<NCollection_Map<IFacePtr, WeakEqual<IMeshData_Face> > > MapOfIFacePtr;
|
||||
typedef NCollection_Shared<NCollection_Map<BRepMesh_OrientedEdge> > MapOfOrientedEdges;
|
||||
typedef NCollection_Shared<NCollection_Map<Standard_Real> > MapOfReal;
|
||||
typedef NCollection_Shared<NCollection_IndexedDataMap<IFacePtr, ListOfIPCurves, WeakEqual<IMeshData_Face> > > IDMapOfIFacePtrsListOfIPCurves;
|
||||
typedef NCollection_Shared<NCollection_DataMap<IFacePtr, Handle(MapOfIEdgePtr), WeakEqual<IMeshData_Face> > > DMapOfIFacePtrsMapOfIEdgePtrs;
|
||||
typedef NCollection_Shared<NCollection_IndexedDataMap<BRepMesh_Edge, BRepMesh_PairOfIndex> > IDMapOfLink;
|
||||
typedef NCollection_Shared<NCollection_DataMap<Standard_Integer, ListOfInteger> > DMapOfIntegerListOfInteger;
|
||||
typedef NCollection_Shared<NCollection_DataMap<Standard_Integer, Standard_Integer> > MapOfIntegerInteger;
|
||||
typedef NCollection_Shared<NCollection_IndexedMap<Standard_Real> > IMapOfReal;
|
||||
|
||||
typedef NCollection_Shared<NCollection_Array1<Standard_Integer> > Array1OfInteger;
|
||||
typedef NCollection_Shared<NCollection_Array1<Standard_Integer> > Array1OfInteger;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user