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 22994 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 23001 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 23000 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 22998 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 22999 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 23044 of file exprtk.hpp.

23045 {
23046 if ((end <= begin) || in_interval(begin) || in_interval(end))
23047 {
23048 return false;
23049 }
23050
23051 interval_map_[end] = std::make_pair(begin, end);
23052
23053 return true;
23054 }
bool in_interval(const interval_point_t point, interval_t &interval) const
Definition exprtk.hpp:23013

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 23056 of file exprtk.hpp.

23057 {
23058 return add_interval(interval.first, interval.second);
23059 }
bool add_interval(const interval_point_t begin, const interval_point_t end)
Definition exprtk.hpp:23044

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 23038 of file exprtk.hpp.

23039 {
23040 interval_t interval;
23041 return in_interval(point,interval);
23042 }
std::pair< interval_point_t, interval_point_t > interval_t
Definition exprtk.hpp:22999

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 23013 of file exprtk.hpp.

23014 {
23015 interval_map_citr_t itr = RangePolicy::end_inclusive() ?
23016 interval_map_.lower_bound(point):
23017 interval_map_.upper_bound(point);
23018
23019 for (; itr != interval_map_.end(); ++itr)
23020 {
23021 const interval_point_t& begin = itr->second.first;
23022 const interval_point_t& end = itr->second.second;
23023
23024 if (RangePolicy::is_within(point, begin, end))
23025 {
23026 interval = interval_t(begin,end);
23027 return true;
23028 }
23029 else if (RangePolicy::is_greater(point, end))
23030 {
23031 break;
23032 }
23033 }
23034
23035 return false;
23036 }
interval_map_t::const_iterator interval_map_citr_t
Definition exprtk.hpp:23001

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 23008 of file exprtk.hpp.

23009 {
23010 interval_map_.clear();
23011 }

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 23003 of file exprtk.hpp.

23004 {
23005 return interval_map_.size();
23006 }

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: