C++ Mathematical Expression Toolkit (ExprTk) release
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Attributes | List of all members
exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy > Class Template Reference

Public Types

typedef IntervalPointType interval_point_t
 
typedef std::pair< interval_point_t, interval_point_tinterval_t
 
typedef std::map< interval_point_t, interval_tinterval_map_t
 
typedef interval_map_t::const_iterator interval_map_citr_t
 

Public Member Functions

std::size_t size () const
 
void reset ()
 
bool in_interval (const interval_point_t point, interval_t &interval) const
 
bool in_interval (const interval_point_t point) const
 
bool add_interval (const interval_point_t begin, const interval_point_t end)
 
bool add_interval (const interval_t interval)
 

Private Attributes

interval_map_t interval_map_
 

Detailed Description

template<typename T>
template<typename IntervalPointType, typename RangePolicy = halfopen_range_policy<IntervalPointType>>
class exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >

Definition at line 22707 of file exprtk.hpp.

Member Typedef Documentation

◆ interval_map_citr_t

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
typedef interval_map_t::const_iterator exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::interval_map_citr_t

Definition at line 22714 of file exprtk.hpp.

◆ interval_map_t

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
typedef std::map<interval_point_t, interval_t> exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::interval_map_t

Definition at line 22713 of file exprtk.hpp.

◆ interval_point_t

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
typedef IntervalPointType exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::interval_point_t

Definition at line 22711 of file exprtk.hpp.

◆ interval_t

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
typedef std::pair<interval_point_t, interval_point_t> exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::interval_t

Definition at line 22712 of file exprtk.hpp.

Member Function Documentation

◆ add_interval() [1/2]

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
bool exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::add_interval ( const interval_point_t  begin,
const interval_point_t  end 
)
inline

Definition at line 22757 of file exprtk.hpp.

22758 {
22759 if ((end <= begin) || in_interval(begin) || in_interval(end))
22760 {
22761 return false;
22762 }
22763
22764 interval_map_[end] = std::make_pair(begin, end);
22765
22766 return true;
22767 }
bool in_interval(const interval_point_t point, interval_t &interval) const
Definition exprtk.hpp:22726

References exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::in_interval(), and exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::interval_map_.

Referenced by exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::add_interval(), and exprtk::parser< T >::lodge_immutable_symbol().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ add_interval() [2/2]

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
bool exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::add_interval ( const interval_t  interval)
inline

Definition at line 22769 of file exprtk.hpp.

22770 {
22771 return add_interval(interval.first, interval.second);
22772 }
bool add_interval(const interval_point_t begin, const interval_point_t end)
Definition exprtk.hpp:22757

References exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::add_interval().

Here is the call graph for this function:

◆ in_interval() [1/2]

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
bool exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::in_interval ( const interval_point_t  point) const
inline

Definition at line 22751 of file exprtk.hpp.

22752 {
22753 interval_t interval;
22754 return in_interval(point,interval);
22755 }
std::pair< interval_point_t, interval_point_t > interval_t
Definition exprtk.hpp:22712

References exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::in_interval().

Here is the call graph for this function:

◆ in_interval() [2/2]

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
bool exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::in_interval ( const interval_point_t  point,
interval_t interval 
) const
inline

Definition at line 22726 of file exprtk.hpp.

22727 {
22728 interval_map_citr_t itr = RangePolicy::end_inclusive() ?
22729 interval_map_.lower_bound(point):
22730 interval_map_.upper_bound(point);
22731
22732 for (; itr != interval_map_.end(); ++itr)
22733 {
22734 const interval_point_t& begin = itr->second.first;
22735 const interval_point_t& end = itr->second.second;
22736
22737 if (RangePolicy::is_within(point, begin, end))
22738 {
22739 interval = interval_t(begin,end);
22740 return true;
22741 }
22742 else if (RangePolicy::is_greater(point, end))
22743 {
22744 break;
22745 }
22746 }
22747
22748 return false;
22749 }
interval_map_t::const_iterator interval_map_citr_t
Definition exprtk.hpp:22714

References exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::interval_map_.

Referenced by exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::add_interval(), exprtk::parser< T >::expression_generator< Type >::assign_immutable_symbol(), and exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::in_interval().

Here is the caller graph for this function:

◆ reset()

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
void exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::reset ( )
inline

Definition at line 22721 of file exprtk.hpp.

22722 {
22723 interval_map_.clear();
22724 }

References exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::interval_map_.

Referenced by exprtk::parser< T >::compile().

Here is the caller graph for this function:

◆ size()

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
std::size_t exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::size ( ) const
inline

Definition at line 22716 of file exprtk.hpp.

22717 {
22718 return interval_map_.size();
22719 }

References exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::interval_map_.

Member Data Documentation

◆ interval_map_

template<typename T >
template<typename IntervalPointType , typename RangePolicy = halfopen_range_policy<IntervalPointType>>
interval_map_t exprtk::parser< T >::interval_container_t< IntervalPointType, RangePolicy >::interval_map_
private

The documentation for this class was generated from the following file: