58 template<
class TConfigure>
118 : mObjectsBegin(ObjectsBegin), mObjectsEnd(ObjectsEnd)
120 auto mNumPoints = std::distance(mObjectsBegin, mObjectsEnd);
128 : mObjectsBegin(ObjectsBegin), mObjectsEnd(ObjectsEnd)
141 delta[
i] = mMaxPoint[
i] - mMinPoint[
i];
150 mInvCellSize[
i] = 1.00 / mCellSize[
i];
186 virtual std::string
Info()
const
188 return "BinsObjectStatic : ";
201 rOStream <<
" Container Size: ";
203 rOStream <<
"[" << mN[
i] <<
"]";
204 rOStream << std::endl;
206 rOStream <<
" Cell Size: ";
208 rOStream <<
"[" << mCellSize[
i] <<
"]";
209 rOStream << std::endl;
211 rOStream <<
" Total Object Storaged: " << mObjectList.size() << std::endl;
217 rout <<
" Container Size: ";
219 rout <<
"[" << this->mN[
i] <<
"]";
226 rout <<
" BinsBox: Min [";
227 mMinPoint.Print(rout);
229 mMaxPoint.Print(rout);
231 mCellSize.Print(rout);
232 rout <<
"]" << std::endl;
299 TConfigure::CalculateBoundingBox(*mObjectsBegin,mMinPoint,mMaxPoint);
303 int number_of_threads = omp_get_max_threads();
305 int number_of_threads = 1;
308 std::vector<unsigned int> node_partition;
309 CreatePartition(number_of_threads, size, node_partition);
311 std::vector<PointType> Max(number_of_threads);
312 std::vector<PointType> Min(number_of_threads);
314 for(
int k=0;
k<number_of_threads;
k++ )
325 #pragma omp parallel for private(High, Low)
326 for(
int k=0;
k<number_of_threads;
k++)
331 for (
IteratorType i_object = i_begin ; i_object != i_end ; i_object++ )
333 TConfigure::CalculateBoundingBox(*i_object, Low, High);
337 Max[
k][
i] = (Max[
k][
i] < High[
i]) ? High[
i] : Max[
k][
i];
338 Min[
k][
i] = (Min[
k][
i] > Low[
i]) ? Low[
i] : Min[
k][
i];
343 for(
int k=0;
k<number_of_threads;
k++)
347 mMaxPoint[
i] = (mMaxPoint[
i] < Max[
k][
i]) ? Max[
k][
i] : mMaxPoint[
i];
348 mMinPoint[
i] = (mMinPoint[
i] > Min[
k][
i]) ? Min[
k][
i] : mMinPoint[
i];
372 std::size_t average_number_of_cells =
static_cast<std::size_t
>(std::pow(
static_cast<double>(ApproximatedSize), 1.00 /
Dimension));
374 std::array<double, 3> lengths;
375 double average_length = 0.00;
378 lengths[
i] = mMaxPoint[
i] - mMinPoint[
i];
379 average_length += lengths[
i];
381 average_length *= 1.00 / 3.00;
383 if (average_length < std::numeric_limits<double>::epsilon()) {
391 mN[
i] =
static_cast<std::size_t
>(lengths[
i] / average_length * (
double)average_number_of_cells) + 1;
394 mCellSize[
i] = lengths[
i] / mN[
i];
396 mCellSize[
i] = average_length;
399 mInvCellSize[
i] = 1.00 / mCellSize[
i];
419 mObjectsAccess.resize(
Size+1,0);
422 for(
IteratorType i_object = mObjectsBegin ; i_object != mObjectsEnd ; i_object++)
424 TConfigure::CalculateBoundingBox(*i_object,Low,High);
432 for(
IndexIterator cell = mObjectsAccess.begin()+1 ; cell != mObjectsAccess.end() ; cell++)
435 mObjectList.resize(mObjectsAccess[
Size]);
441 for(
IteratorType i_object = mObjectsBegin ; i_object != mObjectsEnd ; i_object++)
443 TConfigure::CalculateBoundingBox(*i_object,Low,High);
451 for(
IndexIterator Iter = mObjectsAccess.end()-1; Iter != mObjectsAccess.begin(); Iter--)
453 mObjectsAccess[0] = 0;
468 MinCell[0] =
static_cast<CoordinateType>(Box.
Axis[0].Min) * mCellSize[0] + mMinPoint[0];
469 MaxCell[0] = MinCell[0] + mCellSize[0];
471 for(
IndexType I = Box.
Axis[0].Begin() ; I <= Box.
Axis[0].End() ; I += Box.
Axis[0].Block, MinCell[0]+=mCellSize[0], MaxCell[0]+=mCellSize[0] )
472 if(TConfigure::IntersectionBox(
object,MinCell,MaxCell))
473 mObjectsAccess[I+1]++;
488 MaxBox[
i] = MinBox[
i] + mCellSize[
i];
491 MinCell[1] = MinBox[1];
492 MaxCell[1] = MaxBox[1];
493 for(
IndexType II = Box.
Axis[1].Begin() ; II <= Box.
Axis[1].End() ; II += Box.
Axis[1].Block, MinCell[1]+=mCellSize[1], MaxCell[1]+=mCellSize[1] )
495 MinCell[0] = MinBox[0];
496 MaxCell[0] = MaxBox[0];
497 for(
IndexType I = II + Box.
Axis[0].Begin() ; I <= II + Box.
Axis[0].End() ; I += Box.
Axis[0].Block, MinCell[0]+=mCellSize[0], MaxCell[0]+=mCellSize[0] )
498 if(TConfigure::IntersectionBox(
object,MinCell,MaxCell))
499 mObjectsAccess[I+1]++;
515 MaxBox[
i] = MinBox[
i] + mCellSize[
i];
518 MinCell[2] = MinBox[2];
519 MaxCell[2] = MaxBox[2];
520 for(
IndexType III = Box.
Axis[2].Begin() ; III <= Box.
Axis[2].End() ; III += Box.
Axis[2].Block, MinCell[2]+=mCellSize[2], MaxCell[2]+=mCellSize[2] )
522 MinCell[1] = MinBox[1];
523 MaxCell[1] = MaxBox[1];
524 for(
IndexType II = III + Box.
Axis[1].Begin() ; II <= III + Box.
Axis[1].End() ; II += Box.
Axis[1].Block, MinCell[1]+=mCellSize[1], MaxCell[1]+=mCellSize[1] )
526 MinCell[0] = MinBox[0];
527 MaxCell[0] = MaxBox[0];
528 for(
IndexType I = II + Box.
Axis[0].Begin() ; I <= II + Box.
Axis[0].End() ; I += Box.
Axis[0].Block, MinCell[0]+=mCellSize[0], MaxCell[0]+=mCellSize[0] )
529 if(TConfigure::IntersectionBox(
object,MinCell,MaxCell))
530 mObjectsAccess[I+1]++;
543 TConfigure::CalculateBoundingBox(ThisObject, Low, High);
545 SearchInBoxLocal(ThisObject, Result, NumberOfResults, MaxNumberOfResults, Box );
546 return NumberOfResults;
557 TConfigure::CalculateBoundingBox(ThisObject, Low, High);
560 return Result.size();
590 for(
LocalIteratorType iter = RowBegin ; iter != RowEnd && NumberOfResults < MaxNumberOfResults ; iter++)
592 if(TConfigure::Intersection(ThisObject,*iter))
594 if( std::find(Result-NumberOfResults, Result, *iter) == Result )
610 SearchObjectRow(ThisObject,mObjectList.begin()+mObjectsAccess[Box.
Axis[0].Begin()],mObjectList.begin()+mObjectsAccess[Box.
Axis[0].End()+1],Result,NumberOfResults,MaxNumberOfResults);
618 SearchObjectRow(ThisObject,mObjectList.begin()+mObjectsAccess[I+Box.
Axis[0].Begin()],mObjectList.begin()+mObjectsAccess[I+Box.
Axis[0].End()+1],Result,NumberOfResults,MaxNumberOfResults);
627 SearchObjectRow(ThisObject,mObjectList.begin()+mObjectsAccess[I+Box.
Axis[0].Begin()],mObjectList.begin()+mObjectsAccess[I+Box.
Axis[0].End()+1],Result,NumberOfResults,MaxNumberOfResults);
641 MaxBox[
i] = MinBox[
i] + mCellSize[
i];
644 MinCell[2] = MinBox[2];
645 MaxCell[2] = MaxBox[2];
646 for(
IndexType III = Box.
Axis[2].Begin() ; III <= Box.
Axis[2].End() ; III += Box.
Axis[2].Block, MinCell[2]+=mCellSize[2], MaxCell[2]+=mCellSize[2] )
648 MinCell[1] = MinBox[1];
649 MaxCell[1] = MaxBox[1];
650 for(
IndexType II = III + Box.
Axis[1].Begin() ; II <= III + Box.
Axis[1].End() ; II += Box.
Axis[1].Block, MinCell[1]+=mCellSize[1], MaxCell[1]+=mCellSize[1] )
652 MinCell[0] = MinBox[0];
653 MaxCell[0] = MaxBox[0];
654 objects_begin = mObjectsAccess[II + Box.
Axis[0].Begin()];
655 for(
IndexType I = II + Box.
Axis[0].Begin() ; I <= II + Box.
Axis[0].End() ; I += Box.
Axis[0].Block, MinCell[0]+=mCellSize[0], MaxCell[0]+=mCellSize[0] )
657 if(TConfigure::IntersectionBox(ThisObject,MinCell,MaxCell))
659 objects_begin = mObjectsAccess[I];
663 MinCell[0] = MaxBox_-mCellSize[0];
664 MaxCell[0] = MaxBox_;
665 objects_end = mObjectsAccess[II+Box.
Axis[0].End()+1];
666 for(
IndexType I = II + Box.
Axis[0].End() ; I >= II + Box.
Axis[0].Begin() ; I -= Box.
Axis[0].Block, MinCell[0]-=mCellSize[0], MaxCell[0]-=mCellSize[0] )
668 if(TConfigure::IntersectionBox(ThisObject,MinCell,MaxCell))
670 objects_end = mObjectsAccess[I+1];
674 SearchObjectRow(ThisObject,mObjectList.begin()+objects_begin,mObjectList.begin()+objects_end,Result,NumberOfResults,MaxNumberOfResults);
687 if(TConfigure::Intersection(ThisObject,*iter))
688 if( std::find(Results.begin(), Results.end(), *iter) == Results.end() )
689 Results.push_back(*iter);
699 SearchObjectRow(ThisObject,mObjectList.begin()+mObjectsAccess[Box.
Axis[0].Begin()],mObjectList.begin()+mObjectsAccess[Box.
Axis[0].End()+1],Results);
707 SearchObjectRow(ThisObject,mObjectList.begin()+mObjectsAccess[I+Box.
Axis[0].Begin()],mObjectList.begin()+mObjectsAccess[I+Box.
Axis[0].End()+1],Results);
716 SearchObjectRow(ThisObject,mObjectList.begin()+mObjectsAccess[I+Box.
Axis[0].Begin()],mObjectList.begin()+mObjectsAccess[I+Box.
Axis[0].End()+1],Results);
741 MinCell[0] =
static_cast<CoordinateType>(Box.
Axis[0].Min) * mCellSize[0] + mMinPoint[0];
742 MaxCell[0] = MinCell[0] + mCellSize[0];
743 for(
IndexType I = Box.
Axis[0].Begin() ; I <= Box.
Axis[0].End() ; I += Box.
Axis[0].Block, MinCell[0]+=mCellSize[0], MaxCell[0]+=mCellSize[0] )
744 if(TConfigure::IntersectionBox(
object,MinCell,MaxCell))
745 mObjectList[mObjectsAccess[I]++] =
object;
758 MaxBox[
i] = MinBox[
i] + mCellSize[
i];
761 MinCell[1] = MinBox[1];
762 MaxCell[1] = MaxBox[1];
763 for(
IndexType II = Box.
Axis[1].Begin() ; II <= Box.
Axis[1].End() ; II += Box.
Axis[1].Block, MinCell[1]+=mCellSize[1], MaxCell[1]+=mCellSize[1] )
765 MinCell[0] = MinBox[0];
766 MaxCell[0] = MaxBox[0];
767 for(
IndexType I = II + Box.
Axis[0].Begin() ; I <= II + Box.
Axis[0].End() ; I += Box.
Axis[0].Block, MinCell[0]+=mCellSize[0], MaxCell[0]+=mCellSize[0] )
768 if(TConfigure::IntersectionBox(
object,MinCell,MaxCell))
769 mObjectList[mObjectsAccess[I]++] =
object;
783 MaxBox[
i] = MinBox[
i] + mCellSize[
i];
786 MinCell[2] = MinBox[2];
787 MaxCell[2] = MaxBox[2];
788 for(
IndexType III = Box.
Axis[2].Begin() ; III <= Box.
Axis[2].End() ; III += Box.
Axis[2].Block, MinCell[2]+=mCellSize[2], MaxCell[2]+=mCellSize[2] )
790 MinCell[1] = MinBox[1];
791 MaxCell[1] = MaxBox[1];
792 for(
IndexType II = III + Box.
Axis[1].Begin() ; II <= III + Box.
Axis[1].End() ; II += Box.
Axis[1].Block, MinCell[1]+=mCellSize[1], MaxCell[1]+=mCellSize[1] )
794 MinCell[0] = MinBox[0];
795 MaxCell[0] = MaxBox[0];
796 for(
IndexType I = II + Box.
Axis[0].Begin() ; I <= II + Box.
Axis[0].End() ; I += Box.
Axis[0].Block, MinCell[0]+=mCellSize[0], MaxCell[0]+=mCellSize[0] )
797 if(TConfigure::IntersectionBox(
object,MinCell,MaxCell))
798 mObjectList[mObjectsAccess[I]++] =
object;
809 CoordinateType d_index = (ThisCoord - mMinPoint[ThisDimension]) * mInvCellSize[ThisDimension];
811 return (index > mN[ThisDimension]-1) ? mN[ThisDimension]-1 : index;
876 inline void CreatePartition(
unsigned int number_of_threads,
const int number_of_rows, std::vector<unsigned int>& partitions)
878 partitions.resize(number_of_threads+1);
879 int partition_size = number_of_rows / number_of_threads;
881 partitions[number_of_threads] = number_of_rows;
882 for(
unsigned int i = 1;
i<number_of_threads;
i++)
883 partitions[
i] = partitions[
i-1] + partition_size ;
926 template<
class TConfigure>
934 template<
class TConfigure>
939 rOStream << std::endl;
Short class definition.
Definition: bins_static_objects.h:60
TreeNodeType::CoordinateType CoordinateType
Definition: bins_static_objects.h:77
void FillObject(SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 2 > &Box, const PointerType &object)
Definition: bins_static_objects.h:750
void SearchInBoxLocal(PointerType &ThisObject, ResultContainerType &Results, SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 1 > &Box)
Definition: bins_static_objects.h:696
void FillObject(SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 1 > &Box, const PointerType &object)
Definition: bins_static_objects.h:737
void CountObject(SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 2 > &Box, PointerType object)
Definition: bins_static_objects.h:480
void PrintBox(std::ostream &rout)
Print Limits Points of the Container.
Definition: bins_static_objects.h:224
void GenerateBins()
Definition: bins_static_objects.h:407
BinsObjectStatic(IteratorType const &ObjectsBegin, IteratorType const &ObjectsEnd)
Constructor de bins a bounding box.
Definition: bins_static_objects.h:117
Tvector< SizeType, Dimension > SizeArray
Definition: bins_static_objects.h:82
virtual void PrintData(std::ostream &rOStream) const
Print object's data.
Definition: bins_static_objects.h:198
IndexType CalculatePosition(CoordinateType const &ThisCoord, SizeType &ThisDimension)
Definition: bins_static_objects.h:807
Tvector< CoordinateType, Dimension > CoordinateArray
Definition: bins_static_objects.h:81
void CalculateBoundingBox()
Computa los boxes de cada uno de los elementos del model part.
Definition: bins_static_objects.h:295
TreeNodeType::IteratorIteratorType IteratorIteratorType
Definition: bins_static_objects.h:85
PointType & GetMaxPoint()
Get the Max Point object.
Definition: bins_static_objects.h:267
virtual std::string Info() const
Turn back information as a string.
Definition: bins_static_objects.h:186
SizeType SearchObjects(PointerType &ThisObject, ResultContainerType &Result)
Definition: bins_static_objects.h:553
TreeNodeType::SearchStructureType SearchStructureType
Definition: bins_static_objects.h:86
BinsObjectStatic()
Default constructor.
Definition: bins_static_objects.h:114
TConfigure Configure
Definition: bins_static_objects.h:67
TreeNodeType::SizeType SizeType
Definition: bins_static_objects.h:78
LocalContainerType::iterator LocalIteratorType
Definition: bins_static_objects.h:92
void SearchInBoxLocal(PointerType &ThisObject, ResultIteratorType &Result, SizeType &NumberOfResults, const SizeType &MaxNumberOfResults, SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 3 > &Box)
Definition: bins_static_objects.h:622
SizeArray & GetDivisions()
Get the Divisions object.
Definition: bins_static_objects.h:240
PointType & GetMinPoint()
Get the Min Point object.
Definition: bins_static_objects.h:258
Tvector< IndexType, Dimension > CalculateCell(const PointType &ThisPoint)
Definition: bins_static_objects.h:724
void FillObject(SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 3 > &Box, const PointerType &object)
Definition: bins_static_objects.h:775
void SearchObjectRow(PointerType &ThisObject, LocalIteratorType RowBegin, LocalIteratorType RowEnd, ResultIteratorType &Result, SizeType &NumberOfResults, const SizeType &MaxNumberOfResults)
Definition: bins_static_objects.h:588
CoordinateArray & GetCellSize()
Get the Cell Size object.
Definition: bins_static_objects.h:249
virtual ~BinsObjectStatic()
Destructor.
Definition: bins_static_objects.h:158
void SearchObjectRow(PointerType &ThisObject, LocalIteratorType RowBegin, LocalIteratorType RowEnd, ResultContainerType &Results)
Definition: bins_static_objects.h:683
TConfigure::IteratorType IteratorType
Definition: bins_static_objects.h:71
void PrintSize(std::ostream &rout)
Print Size of Container.
Definition: bins_static_objects.h:215
TConfigure::ResultIteratorType ResultIteratorType
Definition: bins_static_objects.h:73
std::vector< IndexType > IndexContainer
Definition: bins_static_objects.h:98
void CalculateCellSize(std::size_t ApproximatedSize)
Calculates the cell size of the bins.
Definition: bins_static_objects.h:370
BinsObjectStatic(IteratorType const &ObjectsBegin, IteratorType const &ObjectsEnd, const SizeType Nx, const SizeType Ny, const SizeType Nz)
Definition: bins_static_objects.h:127
void SearchInBoxLocal(PointerType &ThisObject, ResultIteratorType &Result, SizeType &NumberOfResults, const SizeType &MaxNumberOfResults, SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 2 > &Box)
Definition: bins_static_objects.h:614
KRATOS_CLASS_POINTER_DEFINITION(BinsObjectStatic)
Pointer definition of BinsObjectStatic.
virtual void PrintInfo(std::ostream &rOStream) const
Print information about this object.
Definition: bins_static_objects.h:192
TConfigure::IteratorContactType IteratorContactType
Definition: bins_static_objects.h:96
TConfigure::PointerType PointerType
Definition: bins_static_objects.h:69
@ Dimension
Definition: bins_static_objects.h:65
TConfigure::ContainerContactType ContainerContactType
Contact Pair.
Definition: bins_static_objects.h:95
void SearchInBoxLocal(PointerType &ThisObject, ResultIteratorType &Result, SizeType &NumberOfResults, const SizeType &MaxNumberOfResults, SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 1 > &Box)
Definition: bins_static_objects.h:607
std::vector< IteratorType > IteratorVector
Definition: bins_static_objects.h:102
TreeNodeType::IndexType IndexType
Definition: bins_static_objects.h:79
void SearchInBoxLocal(PointerType &ThisObject, ResultContainerType &Results, SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 3 > &Box)
Definition: bins_static_objects.h:711
TreeNode< Dimension, PointType, PointerType, IteratorType, typename TConfigure::DistanceIteratorType > TreeNodeType
Definition: bins_static_objects.h:75
void SearchInBoxLocal_(PointerType &ThisObject, ResultIteratorType &Result, SizeType &NumberOfResults, const SizeType &MaxNumberOfResults, SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 3 > &Box)
Definition: bins_static_objects.h:631
TConfigure::ResultContainerType ResultContainerType
Definition: bins_static_objects.h:72
void SearchInBoxLocal(PointerType &ThisObject, ResultContainerType &Results, SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 2 > &Box)
Definition: bins_static_objects.h:703
Tvector< IndexType, Dimension > IndexArray
Definition: bins_static_objects.h:83
IteratorVector::iterator IteratorIterator
Definition: bins_static_objects.h:103
void CountObject(SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 3 > &Box, PointerType object)
Definition: bins_static_objects.h:507
SizeType SearchObjects(PointerType &ThisObject, ResultIteratorType &Result, const SizeType &MaxNumberOfResults)
Definition: bins_static_objects.h:538
std::vector< PointerType > LocalContainerType
Definition: bins_static_objects.h:91
IndexContainer::iterator IndexIterator
Definition: bins_static_objects.h:99
TConfigure::PointType PointType
Definition: bins_static_objects.h:68
TConfigure::ContainerType ContainerType
Definition: bins_static_objects.h:70
void CountObject(SearchStructure< IndexType, SizeType, CoordinateType, IteratorType, IteratorIteratorType, 1 > &Box, PointerType object)
Definition: bins_static_objects.h:464
IteratorVector::const_iterator IteratorConstIterator
Definition: bins_static_objects.h:104
Point class.
Definition: point.h:59
Definition: search_structure.h:309
void Set(IndexVector const &IndexCell, SizeVector const &_MaxSize, IteratorIteratorType const &IteratorBegin)
Definition: search_structure.h:363
SubBinAxis< IndexType, SizeType > Axis[3]
Definition: search_structure.h:326
Short class definition.
Definition: tree.h:61
typename std::vector< IteratorType >::iterator IteratorIteratorType
Define IteratorIteratorType as an iterator type for a vector of IteratorType.
Definition: tree.h:94
double CoordinateType
Define CoordinateType as double.
Definition: tree.h:76
std::size_t IndexType
Define IndexType as std::size_t.
Definition: tree.h:73
std::size_t SizeType
Define SizeType as std::size_t.
Definition: tree.h:70
TSpaceType::IndexType Size(TSpaceType &dummy, typename TSpaceType::VectorType const &rV)
Definition: add_strategies_to_python.cpp:111
std::size_t PointerDistance(TPointerType const &PointerBegin, TPointerType const &PointerEnd)
Definition: search_structure.h:91
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::istream & operator>>(std::istream &rIStream, LinearMasterSlaveConstraint &rThis)
input stream function
TABLE_NUMBER_ANGULAR_VELOCITY TABLE_NUMBER_MOMENT I33 BEAM_INERTIA_ROT_UNIT_LENGHT_Y KRATOS_DEFINE_APPLICATION_VARIABLE(DEM_APPLICATION, double, BEAM_INERTIA_ROT_UNIT_LENGHT_Z) typedef std double
Definition: DEM_application_variables.h:182
std::ostream & operator<<(std::ostream &rOStream, const LinearMasterSlaveConstraint &rThis)
output stream function
Definition: linear_master_slave_constraint.h:432
int k
Definition: quadrature.py:595
integer i
Definition: TensorModule.f:17
double precision, dimension(3, 3), public delta
Definition: TensorModule.f:16
Configure::ResultIteratorType ResultIteratorType
Definition: transfer_utility.h:252
Configure::IteratorType IteratorType
Definition: transfer_utility.h:249
Configure::PointType PointType
Definition: transfer_utility.h:245
Configure::ResultContainerType ResultContainerType
Definition: transfer_utility.h:250
Configure::ContainerType ContainerType
Definition: transfer_utility.h:247