rangetree_concepts.h

Back to Range tree

pastel/geometry/rangetree/

// Description: Concepts for the range tree

#ifndef PASTELGEOMETRY_RANGETREE_CONCEPTS_H
#define PASTELGEOMETRY_RANGETREE_CONCEPTS_H

#include "pastel/geometry/rangetree/rangetree.h"
#include "pastel/sys/real/real_concept.h"
#include "pastel/sys/algebra/less_concept.h"

namespace Pastel
{

    namespace RangeTree_Concepts
    {

        class MultiLess
        {
        public:
            //! Returns whether left <_i right.
            /*!
           Each <_i is a strict weak order; binding i 
           to a specific value provides a strict weak order,
           i.e., a model of the Less concept.
           */
            bool operator()(
                const UserDefinedType& left,
                const UserDefinedType& right,
                integer i) const;
        };

        class Settings
        {
        public:
            //! The type of the points.
            using Point = UserDefinedType;

            //! The type by which to sort points.
            /*!
           The type is a model of the MultiLess
           concept.
           */ 
            using MultiLess = UserDefinedType;
        };

        template <typename Settings>
        class Customization
        {
        };

    }

}

#endif