|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r56021 - in sandbox/itl: boost/itl boost/itl/detail boost/itl/type_traits boost/itl_xt boost/validate/gentor boost/validate/laws libs/itl/doc libs/itl/example/overlap_counter_ libs/itl/test libs/itl/test/test_casual_ libs/validate/example/labat_collector_ libs/validate/example/labat_itl_morphic_ libs/validate/example/labat_itl_order_ libs/validate/example/labat_itl_set_ libs/validate/example/labat_polygon_ libs/validate/example/labat_signed_quantifier_ libs/validate/example/labat_single_ libs/validate/example/labat_unsigned_quantifier_ libs/validate/example/labat_val_relations_ libs/validate/src/gentor
From: afojgo_at_[hidden]
Date: 2009-09-04 17:27:42
Author: jofaber
Date: 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
New Revision: 56021
URL: http://svn.boost.org/trac/boost/changeset/56021
Log:
Boostifying. Replaced tabs. Corrections in docs. Stable {msvc-9.0r+d, gcc-3.4.4, inspected}
Removed:
sandbox/itl/boost/itl/interval_map_algo.hpp
Text files modified:
sandbox/itl/boost/itl/detail/interval_subset_comparer.hpp | 92 ++++----
sandbox/itl/boost/itl/detail/subset_comparer.hpp | 100 ++++----
sandbox/itl/boost/itl/functions.hpp | 12
sandbox/itl/boost/itl/interval.hpp | 4
sandbox/itl/boost/itl/interval_base_map.hpp | 106 ++++----
sandbox/itl/boost/itl/interval_base_set.hpp | 30 +-
sandbox/itl/boost/itl/interval_set.hpp | 14
sandbox/itl/boost/itl/interval_set_algo.hpp | 66 +++---
sandbox/itl/boost/itl/map.hpp | 130 ++++++------
sandbox/itl/boost/itl/map_algo.hpp | 70 +++---
sandbox/itl/boost/itl/predicates.hpp | 2
sandbox/itl/boost/itl/separate_interval_set.hpp | 10
sandbox/itl/boost/itl/set.hpp | 28 +-
sandbox/itl/boost/itl/type_traits/is_concept_equivalent.hpp | 14
sandbox/itl/boost/itl/type_traits/is_element_container.hpp | 20
sandbox/itl/boost/itl/type_traits/is_interval_container.hpp | 30 +-
sandbox/itl/boost/itl_xt/itvgentor.hpp | 2
sandbox/itl/boost/itl_xt/list.hpp | 18
sandbox/itl/boost/validate/gentor/gentorprofile.hpp | 2
sandbox/itl/boost/validate/gentor/randomgentor.hpp | 36 +-
sandbox/itl/boost/validate/laws/minor_set_laws.hpp | 144 ++++++------
sandbox/itl/libs/itl/doc/concepts.qbk | 51 ++++
sandbox/itl/libs/itl/doc/examples.qbk | 28 +
sandbox/itl/libs/itl/doc/functions.qbk | 12
sandbox/itl/libs/itl/doc/functions_addition.qbk | 24 ++
sandbox/itl/libs/itl/doc/functions_equivs_orderings.qbk | 4
sandbox/itl/libs/itl/doc/functions_erasure.qbk | 9
sandbox/itl/libs/itl/doc/functions_insertion.qbk | 2
sandbox/itl/libs/itl/doc/functions_intersection.qbk | 26 ++
sandbox/itl/libs/itl/doc/functions_streaming.qbk | 9
sandbox/itl/libs/itl/doc/functions_subtraction.qbk | 19 +
sandbox/itl/libs/itl/doc/functions_symmetric_difference.qbk | 10
sandbox/itl/libs/itl/doc/interface.qbk | 9
sandbox/itl/libs/itl/doc/introduction.qbk | 8
sandbox/itl/libs/itl/doc/semantics.qbk | 4
sandbox/itl/libs/itl/example/overlap_counter_/overlap_counter.cpp | 28 +-
sandbox/itl/libs/itl/test/test_casual_/test_casual.cpp | 86 ++++----
sandbox/itl/libs/itl/test/test_interval_map_mixed.hpp | 426 ++++++++++++++++++++--------------------
sandbox/itl/libs/itl/test/test_interval_map_shared.hpp | 109 +++++----
sandbox/itl/libs/itl/test/test_itl_map.hpp | 72 +++---
sandbox/itl/libs/itl/test/test_value_maker.hpp | 2
sandbox/itl/libs/validate/example/labat_collector_/labat_collector.cpp | 2
sandbox/itl/libs/validate/example/labat_itl_morphic_/labat_itl_morphic.cpp | 2
sandbox/itl/libs/validate/example/labat_itl_order_/labat_itl_order.cpp | 2
sandbox/itl/libs/validate/example/labat_itl_set_/labat_itl_set.cpp | 2
sandbox/itl/libs/validate/example/labat_polygon_/labat_polygon.cpp | 102 ++++----
sandbox/itl/libs/validate/example/labat_polygon_/point_gentor.hpp | 32 +-
sandbox/itl/libs/validate/example/labat_polygon_/polygon_gentor.hpp | 24 +-
sandbox/itl/libs/validate/example/labat_polygon_/polygon_laws.hpp | 66 +++---
sandbox/itl/libs/validate/example/labat_signed_quantifier_/labat_signed_quantifier.cpp | 2
sandbox/itl/libs/validate/example/labat_single_/labat_single.cpp | 30 +-
sandbox/itl/libs/validate/example/labat_unsigned_quantifier_/labat_unsigned_quantifier.cpp | 2
sandbox/itl/libs/validate/example/labat_val_relations_/labat_val_relations.cpp | 2
sandbox/itl/libs/validate/src/gentor/gentorprofile.cpp | 4
54 files changed, 1154 insertions(+), 986 deletions(-)
Modified: sandbox/itl/boost/itl/detail/interval_subset_comparer.hpp
==============================================================================
--- sandbox/itl/boost/itl/detail/interval_subset_comparer.hpp (original)
+++ sandbox/itl/boost/itl/detail/interval_subset_comparer.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -27,52 +27,52 @@
template<class LeftT, class RightT>
struct settic_codomain_compare
{
- static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
- {
- return inclusion_compare( LeftT::codomain_value(left_),
- RightT::codomain_value(right_));
- }
+ static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
+ {
+ return inclusion_compare( LeftT::codomain_value(left_),
+ RightT::codomain_value(right_));
+ }
};
template<class LeftT, class RightT>
struct atomic_codomain_compare
{
- static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
- {
- if(LeftT::codomain_value(left_) == RightT::codomain_value(right_))
- return inclusion::equal;
- else
- return inclusion::unrelated;
- }
+ static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
+ {
+ if(LeftT::codomain_value(left_) == RightT::codomain_value(right_))
+ return inclusion::equal;
+ else
+ return inclusion::unrelated;
+ }
};
template<class LeftT, class RightT>
struct empty_codomain_compare
{
- static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
- {
- return inclusion::equal;
- }
+ static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
+ {
+ return inclusion::equal;
+ }
};
template<class LeftT, class RightT>
struct map_codomain_compare
{
- static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
- {
- using namespace boost::mpl;
- typedef typename LeftT::codomain_type LeftCodomainT;
- typedef typename RightT::codomain_type RightCodomainT;
-
- return
- if_<
- bool_<is_concept_equivalent<is_set,LeftCodomainT,
- RightCodomainT>::value>,
- settic_codomain_compare<LeftT,RightT>,
- atomic_codomain_compare<LeftT,RightT>
- >
- ::type::apply(left_, right_);
- }
+ static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
+ {
+ using namespace boost::mpl;
+ typedef typename LeftT::codomain_type LeftCodomainT;
+ typedef typename RightT::codomain_type RightCodomainT;
+
+ return
+ if_<
+ bool_<is_concept_equivalent<is_set,LeftCodomainT,
+ RightCodomainT>::value>,
+ settic_codomain_compare<LeftT,RightT>,
+ atomic_codomain_compare<LeftT,RightT>
+ >
+ ::type::apply(left_, right_);
+ }
};
@@ -113,13 +113,13 @@
int co_compare(LeftIterT& left, RightIterT& right)
{
- using namespace boost::mpl;
+ using namespace boost::mpl;
- return
- if_<
+ return
+ if_<
bool_<is_concept_equivalent<is_interval_map,LeftT,RightT>::value>,
- map_codomain_compare<LeftT,RightT>,
- empty_codomain_compare<LeftT,RightT>
+ map_codomain_compare<LeftT,RightT>,
+ empty_codomain_compare<LeftT,RightT>
>
::type::apply(left,right);
}
@@ -212,8 +212,8 @@
// left and right have intervals with nonempty intersection:
if(compare_codomain())
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
// examine left borders only. Right borders are checked in proceed
if(LeftT::key_value(left).lower_less(RightT::key_value(right)))
@@ -256,15 +256,15 @@
//else ..) [...
// [..
if(compare_codomain() && !LeftT::key_value(left).is_disjoint(RightT::key_value(right)) )
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
}
else
{ // left: ..)[.. left could be subset
// right:.......)
if(compare_codomain() && !LeftT::key_value(left).is_disjoint(RightT::key_value(right)) )
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
}
return proceed(left, right);
@@ -291,14 +291,14 @@
//else [....)
// ..) [..
if(compare_codomain() && !LeftT::key_value(left).is_disjoint(RightT::key_value(right)) )
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
}
else
{
if(compare_codomain() && !LeftT::key_value(left).is_disjoint(RightT::key_value(right)) )
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
}
return proceed(left, right);
Modified: sandbox/itl/boost/itl/detail/subset_comparer.hpp
==============================================================================
--- sandbox/itl/boost/itl/detail/subset_comparer.hpp (original)
+++ sandbox/itl/boost/itl/detail/subset_comparer.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -26,52 +26,52 @@
template<class LeftT, class RightT>
struct settic_codomain_compare
{
- static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
- {
- return inclusion_compare( LeftT::codomain_value(left_),
- RightT::codomain_value(right_));
- }
+ static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
+ {
+ return inclusion_compare( LeftT::codomain_value(left_),
+ RightT::codomain_value(right_));
+ }
};
template<class LeftT, class RightT>
struct atomic_codomain_compare
{
- static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
- {
- if(LeftT::codomain_value(left_) == RightT::codomain_value(right_))
- return inclusion::equal;
- else
- return inclusion::unrelated;
- }
+ static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
+ {
+ if(LeftT::codomain_value(left_) == RightT::codomain_value(right_))
+ return inclusion::equal;
+ else
+ return inclusion::unrelated;
+ }
};
template<class LeftT, class RightT>
struct empty_codomain_compare
{
- static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
- {
- return inclusion::equal;
- }
+ static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
+ {
+ return inclusion::equal;
+ }
};
template<class LeftT, class RightT>
struct map_codomain_compare
{
- static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
- {
- using namespace boost::mpl;
- typedef typename LeftT::codomain_type LeftCodomainT;
- typedef typename RightT::codomain_type RightCodomainT;
-
- return
- if_<
- bool_<is_concept_equivalent<is_set,LeftCodomainT,
- RightCodomainT>::value>,
- settic_codomain_compare<LeftT,RightT>,
- atomic_codomain_compare<LeftT,RightT>
- >
- ::type::apply(left_, right_);
- }
+ static int apply(typename LeftT::const_iterator& left_, typename RightT::const_iterator& right_)
+ {
+ using namespace boost::mpl;
+ typedef typename LeftT::codomain_type LeftCodomainT;
+ typedef typename RightT::codomain_type RightCodomainT;
+
+ return
+ if_<
+ bool_<is_concept_equivalent<is_set,LeftCodomainT,
+ RightCodomainT>::value>,
+ settic_codomain_compare<LeftT,RightT>,
+ atomic_codomain_compare<LeftT,RightT>
+ >
+ ::type::apply(left_, right_);
+ }
};
@@ -112,15 +112,15 @@
int co_compare(LeftIterT& left, RightIterT& right)
{
- using namespace boost::mpl;
- typedef typename LeftT::codomain_type LeftCodomainT;
- typedef typename RightT::codomain_type RightCodomainT;
+ using namespace boost::mpl;
+ typedef typename LeftT::codomain_type LeftCodomainT;
+ typedef typename RightT::codomain_type RightCodomainT;
- return
- if_<
+ return
+ if_<
bool_<is_concept_equivalent<is_element_map,LeftT,RightT>::value>,
- map_codomain_compare<LeftT,RightT>,
- empty_codomain_compare<LeftT,RightT>
+ map_codomain_compare<LeftT,RightT>,
+ empty_codomain_compare<LeftT,RightT>
>
::type::apply(left,right);
}
@@ -151,7 +151,7 @@
{
LeftIterT joint_ = _left.lower_bound(RightT::key_value(right));
if( joint_ == _left.end()
- || typename LeftT::domain_compare()(RightT::key_value(right), LeftT::key_value(joint_)))
+ || typename LeftT::domain_compare()(RightT::key_value(right), LeftT::key_value(joint_)))
{
_result = unrelated;
return stop;
@@ -170,7 +170,7 @@
{
RightIterT joint_ = _right.lower_bound(LeftT::key_value(left));
if( joint_ == _right.end()
- || typename LeftT::domain_compare()(LeftT::key_value(left), RightT::key_value(joint_)))
+ || typename LeftT::domain_compare()(LeftT::key_value(left), RightT::key_value(joint_)))
{
_result = unrelated;
return stop;
@@ -182,11 +182,11 @@
// left =key= right
if(compare_codomain())
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
- ++left;
- ++right;
+ ++left;
+ ++right;
return nextboth;
}
@@ -234,12 +234,12 @@
template<class LeftT, class RightT>
int subset_compare(const LeftT& left, const RightT& right)
{
- return subset_compare
- (
- left, right,
- left.begin(), left.end(),
- right.begin(), right.end()
- );
+ return subset_compare
+ (
+ left, right,
+ left.begin(), left.end(),
+ right.begin(), right.end()
+ );
}
Modified: sandbox/itl/boost/itl/functions.hpp
==============================================================================
--- sandbox/itl/boost/itl/functions.hpp (original)
+++ sandbox/itl/boost/itl/functions.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -57,8 +57,8 @@
inclusion_compare(const LeftT& left, const RightT& right)
{
return Interval_Set::subset_compare(left, right,
- left.begin(), left.end(),
- right.begin(), right.end());
+ left.begin(), left.end(),
+ right.begin(), right.end());
}
template<class LeftT, class RightT>
@@ -67,8 +67,8 @@
inclusion_compare(const LeftT& left, const RightT& right)
{
return Set::subset_compare(left, right,
- left.begin(), left.end(),
- right.begin(), right.end());
+ left.begin(), left.end(),
+ right.begin(), right.end());
}
//------------------------------------------------------------------------------
@@ -379,8 +379,8 @@
bool>::type
intersects(const LeftT& left, const RightT& right)
{
- if(is_total<LeftT>::value || is_total<RightT>::value)
- return true;
+ if(is_total<LeftT>::value || is_total<RightT>::value)
+ return true;
LeftT intersection;
Modified: sandbox/itl/boost/itl/interval.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval.hpp (original)
+++ sandbox/itl/boost/itl/interval.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -1071,8 +1071,8 @@
template<class DomainT>
struct value_size<itl::interval<DomainT> >
{
- static std::size_t value_size::apply(const itl::interval<DomainT>& value)
- { return 2; }
+ static std::size_t value_size::apply(const itl::interval<DomainT>& value)
+ { return 2; }
};
Modified: sandbox/itl/boost/itl/interval_base_map.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_base_map.hpp (original)
+++ sandbox/itl/boost/itl/interval_base_map.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -203,30 +203,30 @@
/** Does the map contain the interval \c sub_interval ? */
bool contains(const interval_type& sub_interval)const
- {
- if(Traits::is_total || sub_interval.empty())
- return true;
-
- std::pair<const_iterator, const_iterator> exterior = equal_range(sub_interval);
- if(exterior.first == exterior.second)
- return false;
-
- const_iterator last_overlap = prior(exterior.second);
-
- return
- hull(exterior.first->KEY_VALUE, last_overlap->KEY_VALUE).contains(sub_interval)
- && Interval_Set::is_dense(*this, exterior.first, last_overlap);
- }
+ {
+ if(Traits::is_total || sub_interval.empty())
+ return true;
+
+ std::pair<const_iterator, const_iterator> exterior = equal_range(sub_interval);
+ if(exterior.first == exterior.second)
+ return false;
+
+ const_iterator last_overlap = prior(exterior.second);
+
+ return
+ hull(exterior.first->KEY_VALUE, last_overlap->KEY_VALUE).contains(sub_interval)
+ && Interval_Set::is_dense(*this, exterior.first, last_overlap);
+ }
/** Does the map contain the key key set \c sub_set ? */
- template<class SetType>
+ template<class SetType>
bool contains(const interval_base_set<SetType,DomainT,Compare,Interval,Alloc>& sub_set)const
- {
- if(Traits::is_total || sub_set.empty())
- return true;
+ {
+ if(Traits::is_total || sub_set.empty())
+ return true;
return Interval_Set::is_contained_in(sub_set, *this);
- }
+ }
/** Does the map contain the <tt>key_value_pair = (key,value)</tt>? */
bool contains(const element_type& key_value_pair)const
@@ -240,17 +240,17 @@
bool contains(const segment_type& interval_value_pair)const;
/** Does <tt>*this</tt> container contain <tt>sub</tt>? */
- template<class MapType>
+ template<class MapType>
bool contains(const interval_base_map<MapType,DomainT,CodomainT,Traits,
- Compare,Combine,Section,Interval,Alloc>& sub)const
+ Compare,Combine,Section,Interval,Alloc>& sub)const
{
- return sub.contained_in(*this);
- }
+ return sub.contained_in(*this);
+ }
/** <tt>*this</tt> is subset of <tt>super</tt>? */
- template<class MapType>
+ template<class MapType>
bool contained_in(const interval_base_map<MapType,DomainT,CodomainT,Traits,
- Compare,Combine,Section,Interval,Alloc>& super)const
+ Compare,Combine,Section,Interval,Alloc>& super)const
{
return Interval_Set::is_contained_in(*this, super);
}
@@ -510,7 +510,7 @@
{
typedef IntervalSet<DomainT,Compare,Interval,Alloc> sectant_type;
if(sectant.empty())
- return;
+ return;
typename sectant_type::const_iterator common_lwb;
typename sectant_type::const_iterator common_upb;
@@ -545,36 +545,36 @@
Complexity: logarithmic. */
bool intersects(const domain_type& key)const
{
- return contains(key);
- }
+ return contains(key);
+ }
/** Returns \c true, if \c inter_val intersects with \c *this map.
Complexity: Logarithmic in iterative size. */
bool intersects(const interval_type& inter_val)const
{
- if(Traits::is_total)
- return true;
- std::pair<const_iterator,const_iterator> overlap = equal_range(inter_val);
- return overlap.first == overlap.second;
- }
+ if(Traits::is_total)
+ return true;
+ std::pair<const_iterator,const_iterator> overlap = equal_range(inter_val);
+ return overlap.first == overlap.second;
+ }
/** Returns \c true, if \c key_value_pair is found in \c *this map.
Complexity: logarithmic. */
bool intersects(const element_type& key_value_pair)const
{
- return intersects(segment_type(interval_type(key_value_pair.key), key_value_pair.data));
+ return intersects(segment_type(interval_type(key_value_pair.key), key_value_pair.data));
}
/** Returns \c true, if \c interval_value_pair intersects with \c *this map:
Complexity: Linear in iterative_size. */
bool intersects(const segment_type& interval_value_pair)const
{
- if(traits::is_total)
- return true;
+ if(traits::is_total)
+ return true;
- type intersection;
- add_intersection(intersection, interval_value_pair);
- return !intersection.empty();
+ type intersection;
+ add_intersection(intersection, interval_value_pair);
+ return !intersection.empty();
}
@@ -703,7 +703,7 @@
template<typename LeftIterT, typename RightIterT>
static bool key_less(LeftIterT left_, RightIterT right_)
- { return key_compare()((*left_).first, (*right_).first); }
+ { return key_compare()((*left_).first, (*right_).first); }
static value_type make_domain_element(const domain_type& dom_val, const codomain_type& codom_val)
{ return value_type(interval_type(dom_val), codom_val); }
@@ -802,18 +802,18 @@
if(sub_interval.empty())
return true;
- std::pair<const_iterator, const_iterator> exterior = equal_range(sub_interval);
- if(exterior.first == exterior.second)
- return false;
-
- const_iterator last_overlap = prior(exterior.second);
-
- if(!(sub_segment.CONT_VALUE == exterior.first->CONT_VALUE) )
- return false;
-
- return
- hull(exterior.first->KEY_VALUE, last_overlap->KEY_VALUE).contains(sub_interval)
- && Interval_Set::is_joinable(*this, exterior.first, last_overlap);
+ std::pair<const_iterator, const_iterator> exterior = equal_range(sub_interval);
+ if(exterior.first == exterior.second)
+ return false;
+
+ const_iterator last_overlap = prior(exterior.second);
+
+ if(!(sub_segment.CONT_VALUE == exterior.first->CONT_VALUE) )
+ return false;
+
+ return
+ hull(exterior.first->KEY_VALUE, last_overlap->KEY_VALUE).contains(sub_interval)
+ && Interval_Set::is_joinable(*this, exterior.first, last_overlap);
}
@@ -972,7 +972,7 @@
::interval_type& sectant_interval)const
{
if(sectant_interval.empty())
- return;
+ return;
typename ImplMapT::const_iterator first_ = _map.lower_bound(sectant_interval);
typename ImplMapT::const_iterator end_ = _map.upper_bound(sectant_interval);
Modified: sandbox/itl/boost/itl/interval_base_set.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_base_set.hpp (original)
+++ sandbox/itl/boost/itl/interval_base_set.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -153,20 +153,20 @@
/** Does the container contain the interval \c sub_interval ? */
bool contains(const segment_type& sub_interval)const
- {
- if(sub_interval.empty())
- return true;
-
- std::pair<const_iterator, const_iterator> exterior = equal_range(sub_interval);
- if(exterior.first == exterior.second)
- return false;
-
- const_iterator last_overlap = prior(exterior.second);
-
- return
- hull(*(exterior.first), *last_overlap).contains(sub_interval)
- && Interval_Set::is_joinable(*this, exterior.first, last_overlap);
- }
+ {
+ if(sub_interval.empty())
+ return true;
+
+ std::pair<const_iterator, const_iterator> exterior = equal_range(sub_interval);
+ if(exterior.first == exterior.second)
+ return false;
+
+ const_iterator last_overlap = prior(exterior.second);
+
+ return
+ hull(*(exterior.first), *last_overlap).contains(sub_interval)
+ && Interval_Set::is_joinable(*this, exterior.first, last_overlap);
+ }
/** Does the container contain the subcontainer \c sub ? */
@@ -442,7 +442,7 @@
iterator prior(iterator it_)
{ return it_ == this->_set.begin() ? this->_set.end() : --it_; }
- const_iterator prior(const_iterator it_)const
+ const_iterator prior(const_iterator it_)const
{ return it_ == this->_set.begin() ? this->_set.end() : --it_; }
iterator gap_insert(iterator prior_, const interval_type& inter_val)
Deleted: sandbox/itl/boost/itl/interval_map_algo.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_map_algo.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
+++ (empty file)
@@ -1,17 +0,0 @@
-/*-----------------------------------------------------------------------------+
-Copyright (c) 2008-2009: Joachim Faulhaber
-+------------------------------------------------------------------------------+
- Distributed under the Boost Software License, Version 1.0.
- (See accompanying file LICENCE.txt or copy at
- http://www.boost.org/LICENSE_1_0.txt)
-+-----------------------------------------------------------------------------*/
-#ifndef __itl_interval_map_algo_JOFA_081026_H__
-#define __itl_interval_map_algo_JOFA_081026_H__
-
-#include <boost/itl/detail/notate.hpp>
-#include <boost/itl/type_traits/neutron.hpp>
-
-//CL complete
-
-#endif
-
Modified: sandbox/itl/boost/itl/interval_set.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_set.hpp (original)
+++ sandbox/itl/boost/itl/interval_set.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -99,8 +99,8 @@
explicit interval_set
(const interval_base_set<SubType,DomainT,Compare,Interval,Alloc>& src)
{
- assign(src);
- }
+ assign(src);
+ }
/// Constructor for a single element
explicit interval_set(const domain_type& value): base_type()
@@ -108,17 +108,17 @@
/// Constructor for a single interval
explicit interval_set(const interval_type& itv): base_type()
{
- add(itv);
- }
+ add(itv);
+ }
/// Assignment operator
template<class SubType>
interval_set& operator =
(const interval_base_set<SubType,DomainT,Compare,Interval,Alloc>& src)
{
- assign(src);
- return *this;
- }
+ assign(src);
+ return *this;
+ }
/// Assignment from a base interval_set.
Modified: sandbox/itl/boost/itl/interval_set_algo.hpp
==============================================================================
--- sandbox/itl/boost/itl/interval_set_algo.hpp (original)
+++ sandbox/itl/boost/itl/interval_set_algo.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -150,51 +150,51 @@
template<class IntervalContainerT>
bool is_joinable(const IntervalContainerT& container,
- typename IntervalContainerT::const_iterator first,
- typename IntervalContainerT::const_iterator past)
+ typename IntervalContainerT::const_iterator first,
+ typename IntervalContainerT::const_iterator past)
{
- if(first == container.end())
- return true;
+ if(first == container.end())
+ return true;
- typename IntervalContainerT::const_iterator it_ = first, next_ = first;
- ++next_;
+ typename IntervalContainerT::const_iterator it_ = first, next_ = first;
+ ++next_;
- if(is_interval_map<IntervalContainerT>::value)
- {
- const typename IntervalContainerT::codomain_type& co_value
- = IntervalContainerT::codomain_value(first);
- while(it_ != past)
- {
- if(IntervalContainerT::codomain_value(next_) != co_value)
- return false;
- if(!IntervalContainerT::key_value(it_++).touches(IntervalContainerT::key_value(next_++)))
- return false;
- }
- }
- else
- while(next_ != container.end() && it_ != past)
- if(!IntervalContainerT::key_value(it_++).touches(IntervalContainerT::key_value(next_++)))
- return false;
+ if(is_interval_map<IntervalContainerT>::value)
+ {
+ const typename IntervalContainerT::codomain_type& co_value
+ = IntervalContainerT::codomain_value(first);
+ while(it_ != past)
+ {
+ if(IntervalContainerT::codomain_value(next_) != co_value)
+ return false;
+ if(!IntervalContainerT::key_value(it_++).touches(IntervalContainerT::key_value(next_++)))
+ return false;
+ }
+ }
+ else
+ while(next_ != container.end() && it_ != past)
+ if(!IntervalContainerT::key_value(it_++).touches(IntervalContainerT::key_value(next_++)))
+ return false;
- return true;
+ return true;
}
template<class IntervalContainerT>
bool is_dense(const IntervalContainerT& container,
- typename IntervalContainerT::const_iterator first,
- typename IntervalContainerT::const_iterator past)
+ typename IntervalContainerT::const_iterator first,
+ typename IntervalContainerT::const_iterator past)
{
- if(first == container.end())
- return true;
+ if(first == container.end())
+ return true;
- typename IntervalContainerT::const_iterator it_ = first, next_ = first;
- ++next_;
+ typename IntervalContainerT::const_iterator it_ = first, next_ = first;
+ ++next_;
- while(next_ != container.end() && it_ != past)
- if(!IntervalContainerT::key_value(it_++).touches(IntervalContainerT::key_value(next_++)))
- return false;
+ while(next_ != container.end() && it_ != past)
+ if(!IntervalContainerT::key_value(it_++).touches(IntervalContainerT::key_value(next_++)))
+ return false;
- return true;
+ return true;
}
} // namespace Interval_Set
Modified: sandbox/itl/boost/itl/map.hpp
==============================================================================
--- sandbox/itl/boost/itl/map.hpp (original)
+++ sandbox/itl/boost/itl/map.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -177,10 +177,10 @@
/** Checks if a key-value pair is in the map */
bool contains(const element_type& key_value_pair)const
- {
- const_iterator found_ = find(key_value_pair.first);
- return found_ != end() && found_->second == key_value_pair.second;
- }
+ {
+ const_iterator found_ = find(key_value_pair.first);
+ return found_ != end() && found_->second == key_value_pair.second;
+ }
/** Is <tt>*this</tt> contained in <tt>super</tt>? */
bool contained_in(const map& super)const
@@ -274,16 +274,16 @@
/** The intersection of map \c sectant with \c *this map is added to \c section. */
void add_intersection(map& section, const map& sectant)const;
- /** Returns true, if there is an intersection of \c key and \c *this map.
- Functions \c intersects and \c contains are identical on key value arguments
- of type \c domain_type. Complexity: Logarithmic in container size. */
- bool intersects(const domain_type& key)const;
-
- /** Returns true, if there is an intersection of \key_value_pair and \c *this map.
- If the key is found, the content of \c key_value_pair has to have an intersection
- with the content of the data value in the map.
- Complexity: Logarithmic in container size. */
- bool intersects(const element_type& key_value_pair)const;
+ /** Returns true, if there is an intersection of \c key and \c *this map.
+ Functions \c intersects and \c contains are identical on key value arguments
+ of type \c domain_type. Complexity: Logarithmic in container size. */
+ bool intersects(const domain_type& key)const;
+
+ /** Returns true, if there is an intersection of \key_value_pair and \c *this map.
+ If the key is found, the content of \c key_value_pair has to have an intersection
+ with the content of the data value in the map.
+ Complexity: Logarithmic in container size. */
+ bool intersects(const element_type& key_value_pair)const;
//==========================================================================
//= Symmetric difference
@@ -353,13 +353,13 @@
template<class Predicate>
map& assign_if(const map& src, const Predicate&);
- /** Copy the key values of the map to \c domain_set. Complexity: Linear. */
- void domain(set_type& domain_set)const
- {
- typename set_type::iterator prior_ = domain_set.end();
- const_FORALL_THIS(it_)
- prior_ = domain_set.insert(prior_, it_->KEY_VALUE);
- }
+ /** Copy the key values of the map to \c domain_set. Complexity: Linear. */
+ void domain(set_type& domain_set)const
+ {
+ typename set_type::iterator prior_ = domain_set.end();
+ const_FORALL_THIS(it_)
+ prior_ = domain_set.insert(prior_, it_->KEY_VALUE);
+ }
private:
template<class Combiner>
@@ -558,21 +558,21 @@
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
inline bool map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>
- ::intersects(const domain_type& key)const
+ ::intersects(const domain_type& key)const
{
- return traits::is_total || contains(key);
+ return traits::is_total || contains(key);
}
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
inline bool map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>
::intersects(const element_type& key_value_pair)const
{
- if(traits::is_total)
- return true;
+ if(traits::is_total)
+ return true;
- type intersection;
- add_intersection(intersection, key_value_pair);
- return !intersection.empty();
+ type intersection;
+ add_intersection(intersection, key_value_pair);
+ return !intersection.empty();
}
@@ -881,7 +881,7 @@
{
typedef itl::map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> object_type;
if(Traits::is_total)
- return object += operand;
+ return object += operand;
else
{
object_type section;
@@ -935,75 +935,75 @@
//------------------------------------------------------------------------------
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
bool intersects(const map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& object,
- const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::domain_type& key)
+ const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::domain_type& key)
{
- return object.intersects(key);
+ return object.intersects(key);
}
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
bool intersects(
- const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::domain_type& key,
+ const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::domain_type& key,
const map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& object)
{
- return object.intersects(key);
+ return object.intersects(key);
}
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
bool intersects(const map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& object,
- const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::element_type& key_value_pair)
+ const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::element_type& key_value_pair)
{
- return object.intersects(key_value_pair);
+ return object.intersects(key_value_pair);
}
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
bool intersects(
- const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::element_type& key_value_pair,
+ const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::element_type& key_value_pair,
const map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& object)
{
- return object.intersects(key_value_pair);
+ return object.intersects(key_value_pair);
}
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
bool intersects(const map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& left,
- const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::set_type& right)
+ const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::set_type& right)
{
- typedef map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> MapT;
- if(is_total<MapT>::value)
- return true;
-
- if(left.iterative_size() < right.iterative_size())
- return Map::key_intersects(right, left);
- else
- return Map::key_intersects(left, right);
+ typedef map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> MapT;
+ if(is_total<MapT>::value)
+ return true;
+
+ if(left.iterative_size() < right.iterative_size())
+ return Map::key_intersects(right, left);
+ else
+ return Map::key_intersects(left, right);
}
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
bool intersects(
- const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::set_type& left,
+ const typename map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>::set_type& left,
const map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& right)
{
- typedef map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> MapT;
- if(is_total<MapT>::value)
- return true;
-
- if(left.iterative_size() < right.iterative_size())
- return Map::key_intersects(right, left);
- else
- return Map::key_intersects(left, right);
+ typedef map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> MapT;
+ if(is_total<MapT>::value)
+ return true;
+
+ if(left.iterative_size() < right.iterative_size())
+ return Map::key_intersects(right, left);
+ else
+ return Map::key_intersects(left, right);
}
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
bool intersects(const map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& left,
- const map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& right)
+ const map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc>& right)
{
- typedef map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> MapT;
- if(is_total<MapT>::value)
- return true;
-
- if(left.iterative_size() < right.iterative_size())
- return Map::intersects(right, left);
- else
- return Map::intersects(left, right);
+ typedef map<DomainT,CodomainT,Traits,Compare,Combine,Section,Alloc> MapT;
+ if(is_total<MapT>::value)
+ return true;
+
+ if(left.iterative_size() < right.iterative_size())
+ return Map::intersects(right, left);
+ else
+ return Map::intersects(left, right);
}
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc,
@@ -1013,7 +1013,7 @@
>, bool>
is_disjoint(const LeftT& left, const RightT& right)
{
- return !intersects(left, right);
+ return !intersects(left, right);
}
Modified: sandbox/itl/boost/itl/map_algo.hpp
==============================================================================
--- sandbox/itl/boost/itl/map_algo.hpp (original)
+++ sandbox/itl/boost/itl/map_algo.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -47,7 +47,7 @@
template<class MapType>
bool contained_in(const typename MapType::set_type& sub, const MapType& super)
{
- typedef typename MapType::set_type SetType;
+ typedef typename MapType::set_type SetType;
if(sub.empty()) return true;
if(super.empty()) return false;
@@ -61,7 +61,7 @@
return false;
typename SetType::const_iterator sub_ = sub.begin();
- typename MapType::const_iterator super_;
+ typename MapType::const_iterator super_;
while(sub_ != sub.end())
{
super_ = super.find(*sub_++);
@@ -75,33 +75,33 @@
template <class MapType>
bool intersects(const MapType& left, const MapType& right)
{
- typename MapType::const_iterator right_common_lower_;
- typename MapType::const_iterator right_common_upper_;
- if(!Set::common_range(right_common_lower_, right_common_upper_, right, left))
- return false;
-
- typename MapType::const_iterator right_ = right_common_lower_;
- while(right_ != right_common_upper_)
- if(left.intersects(*right_++))
- return true;
+ typename MapType::const_iterator right_common_lower_;
+ typename MapType::const_iterator right_common_upper_;
+ if(!Set::common_range(right_common_lower_, right_common_upper_, right, left))
+ return false;
+
+ typename MapType::const_iterator right_ = right_common_lower_;
+ while(right_ != right_common_upper_)
+ if(left.intersects(*right_++))
+ return true;
- return false;
+ return false;
}
template <class ObjectT, class CoObjectT>
bool key_intersects(const ObjectT& left, const CoObjectT& right)
{
- typename CoObjectT::const_iterator right_common_lower_;
- typename CoObjectT::const_iterator right_common_upper_;
- if(!Set::common_range(right_common_lower_, right_common_upper_, right, left))
- return false;
-
- typename CoObjectT::const_iterator right_ = right_common_lower_;
- while(right_ != right_common_upper_)
- if(left.intersects(CoObjectT::key_value(right_++)))
- return true;
+ typename CoObjectT::const_iterator right_common_lower_;
+ typename CoObjectT::const_iterator right_common_upper_;
+ if(!Set::common_range(right_common_lower_, right_common_upper_, right, left))
+ return false;
- return false;
+ typename CoObjectT::const_iterator right_ = right_common_lower_;
+ while(right_ != right_common_upper_)
+ if(left.intersects(CoObjectT::key_value(right_++)))
+ return true;
+
+ return false;
}
//----------------------------------------------------------------------
@@ -222,10 +222,10 @@
int co_compare(LeftIterT& left, RightIterT& right)
{
- using namespace boost::mpl;
+ using namespace boost::mpl;
- return
- if_<
+ return
+ if_<
bool_<is_concept_equivalent<is_interval_map,LeftT,RightT>::value>,
map_codomain_compare<LeftT,RightT>,
empty_codomain_compare<LeftT,RightT>
@@ -321,8 +321,8 @@
// left and right have intervals with nonempty intersection:
if(compare_codomain())
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
// examine left borders only. Right borders are checked in proceed
if(LeftT::key_value(left).lower_less(RightT::key_value(right)))
@@ -365,15 +365,15 @@
//else ..) [...
// [..
if(compare_codomain() && !LeftT::key_value(left).is_disjoint(RightT::key_value(right)) )
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
}
else
{ // left: ..)[.. left could be subset
// right:.......)
if(compare_codomain() && !LeftT::key_value(left).is_disjoint(RightT::key_value(right)) )
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
}
return proceed(left, right);
@@ -400,14 +400,14 @@
//else [....)
// ..) [..
if(compare_codomain() && !LeftT::key_value(left).is_disjoint(RightT::key_value(right)) )
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
}
else
{
if(compare_codomain() && !LeftT::key_value(left).is_disjoint(RightT::key_value(right)) )
- if(unrelated == restrict_result(co_compare(left,right)))
- return stop;
+ if(unrelated == restrict_result(co_compare(left,right)))
+ return stop;
}
return proceed(left, right);
Modified: sandbox/itl/boost/itl/predicates.hpp
==============================================================================
--- sandbox/itl/boost/itl/predicates.hpp (original)
+++ sandbox/itl/boost/itl/predicates.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -70,7 +70,7 @@
}
};
- //-----------------------------------------------------------------------------
+ //-----------------------------------------------------------------------------
template<>
inline std::string unary_template_to_string<itl::std_equal>::apply()
Modified: sandbox/itl/boost/itl/separate_interval_set.hpp
==============================================================================
--- sandbox/itl/boost/itl/separate_interval_set.hpp (original)
+++ sandbox/itl/boost/itl/separate_interval_set.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -99,8 +99,8 @@
separate_interval_set
(const interval_base_set<SubType,DomainT,Compare,Interval,Alloc>& src)
{
- assign(src);
- }
+ assign(src);
+ }
/// Constructor for a single element
explicit separate_interval_set(const domain_type& elem): base_type() { add(elem); }
@@ -112,9 +112,9 @@
separate_interval_set& operator =
(const interval_base_set<SubType,DomainT,Compare,Interval,Alloc>& src)
{
- assign(src);
- return *this;
- }
+ assign(src);
+ return *this;
+ }
/// Assignment from a base interval_set.
template<class SubType>
Modified: sandbox/itl/boost/itl/set.hpp
==============================================================================
--- sandbox/itl/boost/itl/set.hpp (original)
+++ sandbox/itl/boost/itl/set.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -183,10 +183,10 @@
to \c section. */
void add_intersection(set& section, const set& sectant)const;
- /** Returns true, if there is an intersection of \c element and \c *this set.
- Functions \c intersects and \c contains are identical on arguments
- of type \c element_type. Complexity: Logarithmic in container size. */
- bool intersects(const element_type& element)const { return contains(element); }
+ /** Returns true, if there is an intersection of \c element and \c *this set.
+ Functions \c intersects and \c contains are identical on arguments
+ of type \c element_type. Complexity: Logarithmic in container size. */
+ bool intersects(const element_type& element)const { return contains(element); }
/** If \c *this set contains \c element it is erased, otherwise it is added. */
set& flip(const element_type& element);
@@ -536,27 +536,27 @@
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
bool intersects(const itl::set<DomainT,Compare,Alloc>& object,
- const typename itl::set<DomainT,Compare,Alloc>::element_type& element)
+ const typename itl::set<DomainT,Compare,Alloc>::element_type& element)
{
- return object.intersects(element);
+ return object.intersects(element);
}
template <class DomainT, class CodomainT, class Traits, ITL_COMPARE Compare, ITL_COMBINE Combine, ITL_SECTION Section, ITL_ALLOC Alloc>
bool intersects(
- const typename itl::set<DomainT,Compare,Alloc>::element_type& element,
+ const typename itl::set<DomainT,Compare,Alloc>::element_type& element,
const itl::set<DomainT,Compare,Alloc>& object)
{
- return object.intersects(element);
+ return object.intersects(element);
}
template <typename DomainT, ITL_COMPARE Compare, ITL_ALLOC Alloc>
bool intersects(const itl::set<DomainT,Compare,Alloc>& left,
- const itl::set<DomainT,Compare,Alloc>& right)
+ const itl::set<DomainT,Compare,Alloc>& right)
{
- if(left.iterative_size() < right.iterative_size())
- return Set::intersects(right, left);
- else
- return Set::intersects(left, right);
+ if(left.iterative_size() < right.iterative_size())
+ return Set::intersects(right, left);
+ else
+ return Set::intersects(left, right);
}
template <typename DomainT, ITL_COMPARE Compare, ITL_ALLOC Alloc,
@@ -566,7 +566,7 @@
>, bool>
is_disjoint(const LeftT& left, const RightT& right)
{
- return !intersects(left,right);
+ return !intersects(left,right);
}
Modified: sandbox/itl/boost/itl/type_traits/is_concept_equivalent.hpp
==============================================================================
--- sandbox/itl/boost/itl/type_traits/is_concept_equivalent.hpp (original)
+++ sandbox/itl/boost/itl/type_traits/is_concept_equivalent.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -13,13 +13,13 @@
namespace boost{ namespace itl
{
- template<template<class>class IsConcept, class LeftT, class RightT>
- struct is_concept_equivalent
- {
- typedef is_concept_equivalent<IsConcept, LeftT, RightT> type;
- static const bool value =
- mpl::and_<IsConcept<LeftT>, IsConcept<RightT> >::value;
- };
+ template<template<class>class IsConcept, class LeftT, class RightT>
+ struct is_concept_equivalent
+ {
+ typedef is_concept_equivalent<IsConcept, LeftT, RightT> type;
+ static const bool value =
+ mpl::and_<IsConcept<LeftT>, IsConcept<RightT> >::value;
+ };
}} // namespace boost itl
Modified: sandbox/itl/boost/itl/type_traits/is_element_container.hpp
==============================================================================
--- sandbox/itl/boost/itl/type_traits/is_element_container.hpp (original)
+++ sandbox/itl/boost/itl/type_traits/is_element_container.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -17,20 +17,20 @@
namespace boost{ namespace itl
{
template <class Type>
- struct is_element_container
+ struct is_element_container
{
typedef is_element_container<Type> type;
- static const bool value =
- mpl::and_<is_set<Type>, mpl::not_<is_interval_container<Type> > >::value;
+ static const bool value =
+ mpl::and_<is_set<Type>, mpl::not_<is_interval_container<Type> > >::value;
};
- template<class Type>
- struct is_element_map
- {
- typedef is_element_map<Type> type;
- static const bool value =
- mpl::and_<is_map<Type>, mpl::not_<is_interval_container<Type> > >::value;
- };
+ template<class Type>
+ struct is_element_map
+ {
+ typedef is_element_map<Type> type;
+ static const bool value =
+ mpl::and_<is_map<Type>, mpl::not_<is_interval_container<Type> > >::value;
+ };
}} // namespace boost itl
Modified: sandbox/itl/boost/itl/type_traits/is_interval_container.hpp
==============================================================================
--- sandbox/itl/boost/itl/type_traits/is_interval_container.hpp (original)
+++ sandbox/itl/boost/itl/type_traits/is_interval_container.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -16,21 +16,21 @@
static const bool value = false;
};
- template<class Type>
- struct is_interval_map
- {
- typedef is_interval_map<Type> type;
- static const bool value =
- is_interval_container<Type>::value && is_map<Type>::value;
- };
-
- template<class Type>
- struct is_interval_set
- {
- typedef is_interval_set<Type> type;
- static const bool value =
- is_interval_container<Type>::value && !is_interval_map<Type>::value;
- };
+ template<class Type>
+ struct is_interval_map
+ {
+ typedef is_interval_map<Type> type;
+ static const bool value =
+ is_interval_container<Type>::value && is_map<Type>::value;
+ };
+
+ template<class Type>
+ struct is_interval_set
+ {
+ typedef is_interval_set<Type> type;
+ static const bool value =
+ is_interval_container<Type>::value && !is_interval_map<Type>::value;
+ };
}} // namespace boost itl
Modified: sandbox/itl/boost/itl_xt/itvgentor.hpp
==============================================================================
--- sandbox/itl/boost/itl_xt/itvgentor.hpp (original)
+++ sandbox/itl/boost/itl_xt/itvgentor.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -47,7 +47,7 @@
public:
virtual void some(ItvTV& x);
- void setRange(const itl::interval<ItvDomTV>& range)
+ void setRange(const itl::interval<ItvDomTV>& range)
{ m_valueRange = range; }
void setValueRange(ItvDomTV low, ItvDomTV up)
Modified: sandbox/itl/boost/itl_xt/list.hpp
==============================================================================
--- sandbox/itl/boost/itl_xt/list.hpp (original)
+++ sandbox/itl/boost/itl_xt/list.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -138,7 +138,7 @@
sublist in the list \c super */
bool contained_in(const list& super)const { return is_subsequence(super); }
- size_t iterative_size()const{ return size(); }
+ size_t iterative_size()const{ return size(); }
//JODO concept InplaceAddable
/// Add a list \c tail to this list.
@@ -424,7 +424,7 @@
if(it == end()) return std::string("");
else
{
- std::string y = "{"+to_string<DataT>::apply(*it);
+ std::string y = "{"+to_string<DataT>::apply(*it);
it++;
while(it != end())
{
@@ -432,17 +432,17 @@
y += to_string<DataT>::apply(*it);
it++;
}
- y += "}";
+ y += "}";
return y;
}
}
- template <class Type>
- struct type_to_string<itl::list<Type> >
- {
- static std::string apply()
- { return "list<"+ type_to_string<Type>::apply() +">"; }
- };
+ template <class Type>
+ struct type_to_string<itl::list<Type> >
+ {
+ static std::string apply()
+ { return "list<"+ type_to_string<Type>::apply() +">"; }
+ };
}} // namespace itl boost
Modified: sandbox/itl/boost/validate/gentor/gentorprofile.hpp
==============================================================================
--- sandbox/itl/boost/validate/gentor/gentorprofile.hpp (original)
+++ sandbox/itl/boost/validate/gentor/gentorprofile.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -137,7 +137,7 @@
void set_std_profile(int unit, int factor) { return m_profile.set_std_profile(unit, factor); }
void set_polygon_profile(int max_polygon_set_size, int max_polygon_size, int min_coord, int max_coord)
- { return m_profile.set_polygon_profile(max_polygon_set_size, max_polygon_size, min_coord, max_coord); }
+ { return m_profile.set_polygon_profile(max_polygon_set_size, max_polygon_size, min_coord, max_coord); }
private:
Modified: sandbox/itl/boost/validate/gentor/randomgentor.hpp
==============================================================================
--- sandbox/itl/boost/validate/gentor/randomgentor.hpp (original)
+++ sandbox/itl/boost/validate/gentor/randomgentor.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -40,9 +40,9 @@
template <> class RandomGentor<double> : public NumberGentorT<double> {};
// -------------------------------------------------------------------------
- template <class DomainT>
- class RandomGentor<itl::interval<DomainT> > :
- public ItvGentorT<DomainT> {};
+ template <class DomainT>
+ class RandomGentor<itl::interval<DomainT> > :
+ public ItvGentorT<DomainT> {};
#ifdef LAW_BASED_TEST_BOOST_POLYGON
// -------------------------------------------------------------------------
@@ -179,7 +179,7 @@
template <>
- struct Calibrater<itl::interval<int>, RandomGentor>
+ struct Calibrater<itl::interval<int>, RandomGentor>
{
static void apply(RandomGentor<itl::interval<int> >& gentor)
{
@@ -190,11 +190,11 @@
#ifdef LAW_BASED_TEST_BOOST_POLYGON
- //--------------------------------------------------------------------------
- // boost::polygon
- //--------------------------------------------------------------------------
+ //--------------------------------------------------------------------------
+ // boost::polygon
+ //--------------------------------------------------------------------------
template <>
- struct Calibrater<itl::point<int>, RandomGentor>
+ struct Calibrater<itl::point<int>, RandomGentor>
{
static void apply(RandomGentor<itl::point<int> >& gentor)
{
@@ -204,39 +204,39 @@
};
template <>
- struct Calibrater<itl::list<point<int> >, RandomGentor>
+ struct Calibrater<itl::list<point<int> >, RandomGentor>
{
static void apply(RandomGentor<itl::list<point<int> > >& gentor)
{
gentor.setRangeOfSampleSize(GentorProfileSgl::it()->range_codomain_ContainerSize());
- point_gentor<int>* pointGentor = new point_gentor<int>;
+ point_gentor<int>* pointGentor = new point_gentor<int>;
pointGentor->setRange(GentorProfileSgl::it()->range_int());
gentor.setDomainGentor(pointGentor);
- gentor.setUnique(true);
+ gentor.setUnique(true);
}
};
template <>
- struct Calibrater<itl::list<list<point<int> > >, RandomGentor>
+ struct Calibrater<itl::list<list<point<int> > >, RandomGentor>
{
static void apply(RandomGentor<itl::list<list<point<int> > > >& gentor)
{
- point_gentor<int>* pointGentor = new point_gentor<int>;
+ point_gentor<int>* pointGentor = new point_gentor<int>;
pointGentor->setRange(GentorProfileSgl::it()->range_int());
- polygon_gentor<list<point<int> > >* polyGentor = new polygon_gentor<list<point<int> > >;
+ polygon_gentor<list<point<int> > >* polyGentor = new polygon_gentor<list<point<int> > >;
polyGentor->setDomainGentor(pointGentor);
polyGentor->setRangeOfSampleSize(GentorProfileSgl::it()->range_codomain_ContainerSize());
- polyGentor->setUnique(true);
+ polyGentor->setUnique(true);
gentor.setDomainGentor(polyGentor);
gentor.setRangeOfSampleSize(GentorProfileSgl::it()->range_ContainerSize());
}
};
- //--------------------------------------------------------------------------
- // nogylop::tsoob
- //--------------------------------------------------------------------------
+ //--------------------------------------------------------------------------
+ // nogylop::tsoob
+ //--------------------------------------------------------------------------
#endif // LAW_BASED_TEST_BOOST_POLYGON
template <>
Modified: sandbox/itl/boost/validate/laws/minor_set_laws.hpp
==============================================================================
--- sandbox/itl/boost/validate/laws/minor_set_laws.hpp (original)
+++ sandbox/itl/boost/validate/laws/minor_set_laws.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -39,56 +39,56 @@
bool holds()
{
- // is_total<T> || intersects(a, b) == !(a & b).empty()
+ // is_total<T> || intersects(a, b) == !(a & b).empty()
// --- left hand side ------------------------
bool a_intersects_b
- = intersects(this->template getInputValue<operand_a>(),
- this->template getInputValue<operand_b>());
+ = intersects(this->template getInputValue<operand_a>(),
+ this->template getInputValue<operand_b>());
// --- right hand side ------------------------
- Type a_sec_b = this->template getInputValue<operand_a>();
- a_sec_b &= this->template getInputValue<operand_b>();
+ Type a_sec_b = this->template getInputValue<operand_a>();
+ a_sec_b &= this->template getInputValue<operand_b>();
- bool a_sec_b_non_empty = !a_sec_b.empty();
+ bool a_sec_b_non_empty = !a_sec_b.empty();
this->template setOutputValue<lhs_result>(a_intersects_b);
this->template setOutputValue<rhs_result>(a_sec_b_non_empty);
- if(is_total<Type>::value)
- // For a total map y, y.empty() does not mean that y is empty
- // it means that y is a null vector. In this sense total maps
- // always intersect with themselves and with key sets.
- return a_intersects_b == true;
- else
- return a_intersects_b == a_sec_b_non_empty;
- }
+ if(is_total<Type>::value)
+ // For a total map y, y.empty() does not mean that y is empty
+ // it means that y is a null vector. In this sense total maps
+ // always intersect with themselves and with key sets.
+ return a_intersects_b == true;
+ else
+ return a_intersects_b == a_sec_b_non_empty;
+ }
bool debug_holds()
- {
- // intersects(a, b) == !(a & b).empty() : Definition of intersects predicate
+ {
+ // intersects(a, b) == !(a & b).empty() : Definition of intersects predicate
// --- left hand side ------------------------
- Type value_a = this->template getInputValue<operand_a>();
- Type value_b = this->template getInputValue<operand_b>();
- cout << "a = " << value_a << endl;
- cout << "b = " << value_b << endl;
- cout << "a&b = " << (value_a & value_b) << endl;
+ Type value_a = this->template getInputValue<operand_a>();
+ Type value_b = this->template getInputValue<operand_b>();
+ cout << "a = " << value_a << endl;
+ cout << "b = " << value_b << endl;
+ cout << "a&b = " << (value_a & value_b) << endl;
bool a_intersects_b
- = intersects(this->template getInputValue<operand_a>(),
- this->template getInputValue<operand_b>());
+ = intersects(this->template getInputValue<operand_a>(),
+ this->template getInputValue<operand_b>());
// --- right hand side ------------------------
- Type a_sec_b = this->template getInputValue<operand_a>();
- a_sec_b &= this->template getInputValue<operand_b>();
+ Type a_sec_b = this->template getInputValue<operand_a>();
+ a_sec_b &= this->template getInputValue<operand_b>();
- bool a_sec_b_non_empty = !a_sec_b.empty();
+ bool a_sec_b_non_empty = !a_sec_b.empty();
this->template setOutputValue<lhs_result>(a_intersects_b);
this->template setOutputValue<rhs_result>(a_sec_b_non_empty);
- if(is_total<Type>::value)
- return a_intersects_b == true;
- else
- return a_intersects_b == a_sec_b_non_empty;
- }
+ if(is_total<Type>::value)
+ return a_intersects_b == true;
+ else
+ return a_intersects_b == a_sec_b_non_empty;
+ }
size_t size()const
{
@@ -119,29 +119,29 @@
bool holds()
{
- // a.contains(a & b)
- Type value_a = this->template getInputValue<operand_a>();
- CoType value_b = this->template getInputValue<operand_b>();
- return value_a.contains(value_a & value_b);
- }
+ // a.contains(a & b)
+ Type value_a = this->template getInputValue<operand_a>();
+ CoType value_b = this->template getInputValue<operand_b>();
+ return value_a.contains(value_a & value_b);
+ }
bool debug_holds()
- {
- // a.contains(a & b)
- Type value_a = this->template getInputValue<operand_a>();
- CoType value_b = this->template getInputValue<operand_b>();
- Type a_sec_b = value_a & value_b;
- bool result = value_a.contains(value_a & value_b);
+ {
+ // a.contains(a & b)
+ Type value_a = this->template getInputValue<operand_a>();
+ CoType value_b = this->template getInputValue<operand_b>();
+ Type a_sec_b = value_a & value_b;
+ bool result = value_a.contains(value_a & value_b);
// -------------------------------------------
- cout << "a = " << value_a << endl;
- cout << "b = " << value_b << endl;
- cout << "a&b = " << a_sec_b << endl;
- cout << "a.contains(a&b) = " << result << endl;
+ cout << "a = " << value_a << endl;
+ cout << "b = " << value_b << endl;
+ cout << "a&b = " << a_sec_b << endl;
+ cout << "a.contains(a&b) = " << result << endl;
// -------------------------------------------
- value_a.contains(a_sec_b);
+ value_a.contains(a_sec_b);
- return result;
- }
+ return result;
+ }
size_t size()const
{
@@ -174,31 +174,31 @@
bool holds()
{
// (a + i).contains(i)
- Type value_a = this->template getInputValue<operand_a>();
- CoType value_i = this->template getInputValue<operand_b>();
- return (value_a + value_i).contains(value_i);
- }
+ Type value_a = this->template getInputValue<operand_a>();
+ CoType value_i = this->template getInputValue<operand_b>();
+ return (value_a + value_i).contains(value_i);
+ }
bool debug_holds()
- {
- return holds();
- /*
- // a.contains(a & b)
- Type value_a = this->template getInputValue<operand_a>();
- CoType value_b = this->template getInputValue<operand_b>();
- Type a_sec_b = value_a & value_b;
- bool result = value_a.contains(value_a & value_b);
- // -------------------------------------------
- cout << "a = " << value_a << endl;
- cout << "b = " << value_b << endl;
- cout << "a&b = " << a_sec_b << endl;
- cout << "a.contains(a&b) = " << result << endl;
- // -------------------------------------------
- value_a.contains(a_sec_b);
-
- return result;
- */
- }
+ {
+ return holds();
+ /*
+ // a.contains(a & b)
+ Type value_a = this->template getInputValue<operand_a>();
+ CoType value_b = this->template getInputValue<operand_b>();
+ Type a_sec_b = value_a & value_b;
+ bool result = value_a.contains(value_a & value_b);
+ // -------------------------------------------
+ cout << "a = " << value_a << endl;
+ cout << "b = " << value_b << endl;
+ cout << "a&b = " << a_sec_b << endl;
+ cout << "a.contains(a&b) = " << result << endl;
+ // -------------------------------------------
+ value_a.contains(a_sec_b);
+
+ return result;
+ */
+ }
size_t size()const
{
Modified: sandbox/itl/libs/itl/doc/concepts.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/concepts.qbk (original)
+++ sandbox/itl/libs/itl/doc/concepts.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -8,6 +8,49 @@
[section Concepts]
+[section Naming]
+
+The *itl* is about sets and maps and a useful
+implementation of sets and maps usings intervals.
+In the documentation of the *itl* the different
+set and map types are grouped in various ways.
+In order to distinguish those groups we use
+a naming convention.
+
+Names of concepts start with a capital letter.
+So `Set` and `Map` stand for the concepts of
+a set and a map as defined in the *itl*.
+When we talk about `Sets` and `Maps` though,
+most of the time we do not not talk about the
+concepts themselves but the set of types
+that implement those concepts in the *itl*.
+The main groups ['*itl containers*] can be
+devided in are summarized in the next table:
+
+[table
+[[] [] [] ]
+[[] [`Set`] [`Map`] ]
+[[element container] [__itl_set__] [__itl_map__]]
+[[interval container][__itv_set__, __sep_itv_set__, __spl_itv_set__][__itv_map__, __spl_itv_map__]]
+]
+
+* Containers __itl_set__, __itv_set__, __sep_itv_set__, __spl_itv_set__
+ are models of concept `Set`.
+* Containers __itl_map__, __itv_map__, __spl_itv_map__
+ are models of concept `Map`.
+* Containers that are ['*implemented*] using elements or element value pairs
+ are called ['*element containers*].
+* Containers that are ['*implemented*] using intervals or interval value pairs
+ (also called segments) are called ['*interval containers*].
+* When we talk about `Sets` or `Maps` we abstract from the way they are implemented.
+* When we talk about /element containers/ or /interval containers/
+ we refer to the way they are implemented.
+* The *itl's* element containers
+ are always denoted qualified as __itl_set__ of __itl_map__
+ to avoid confusion with `std::set` and `std::map`.
+
+[endsect][/ Naming]
+
[section Aspects]
There are two major ['*aspects*] or ['*views*] of itl containers. The first and predominant
@@ -104,11 +147,11 @@
[[empty map ] [] [`Map::Map()`] ]
[[subset relation] [] [`bool Map::contained_in(const Map& s2)const`] ]
[[equality ] [] [`bool is_element_equal(const Map& s1, const Map& s2)`]]
-[[set union] [inplace][`Map& operator += (Map& s1, const Map& s2)`] ]
+[[map union] [inplace][`Map& operator += (Map& s1, const Map& s2)`] ]
[[] [] [`Map operator + (const Map& s1, const Map& s2)`]]
-[[set difference] [inplace][`Map& operator -= (Map& s1, const Map& s2)`] ]
+[[map difference] [inplace][`Map& operator -= (Map& s1, const Map& s2)`] ]
[[] [] [`Map operator - (const Map& s1, const Map& s2)`]]
-[[set intersection][inplace][`Map& operator &= (Map& s1, const Map& s2)`] ]
+[[map intersection][inplace][`Map& operator &= (Map& s1, const Map& s2)`] ]
[[] [] [`Map operator & (const Map& s1, const Map& s2)`]]
]
@@ -128,7 +171,7 @@
[section Addability, Subtractability and Aggregate on Overlap]
While ['*addition*] and ['*subtraction*] on `Sets`
-are implemented as ['*set union*] and ['*set difference],
+are implemented as ['*set union*] and ['*set difference*],
for `Maps` we want to implement ['*aggregation*] on
the associated values for the case of collision (of key elements)
or overlap (of key intervals), which has been refered to as
Modified: sandbox/itl/libs/itl/doc/examples.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/examples.qbk (original)
+++ sandbox/itl/libs/itl/doc/examples.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -64,12 +64,10 @@
As time goes by, groups of people join the party and leave later in the evening.
So we add a time interval and a name set to the __itv_map__ for the attendance
of each group of people, that come together and leave together.
-
On every overlap of intervals, the corresponding name sets are accumulated. At
the points of overlap the intervals are split. The accumulation of content
is done via an operator += that has to be implemented
for the content parameter of the __itv_map__.
-
Finally the interval_map contains the history of attendance and all points in
time, where the group of party guests changed.
@@ -77,7 +75,6 @@
['*aggregate on overlap (aggrovering)*]:
On insertion a value associated to the interval is aggregated with those
values in the interval_map that overlap with the inserted value.
-
There are two behavioral aspects to ['*aggrovering*]: a ['*decompositional
behavior*] and an ['*accumulative behavior*].
@@ -89,12 +86,29 @@
an insertion for the associated values.
The aggregation function is += by default. Different aggregations can
-be used, if desired. In the example the history of the tallest party guest's
-height is calculated using [classref boost::itl::inplace_max inplace_max]
-as aggregation function.
+be used, if desired.
+
[example_boost_party]
-[endsect]
+
+[caution
+
+We are introducing __itv_maps__ using an
+['interval map ['*of sets of strings*]],
+because of it's didactical advantages. The party example is
+used to give an immediate and depictive access to the basic ideas of
+interval maps and /aggregate on overlap/.
+For real world applications, an interval_map of sets is
+not necessarily recommended.
+It has the same efficiency problems as
+a `std::map` of `std::sets`.
+There is a big realm though of using
+interval_maps with numerical and other
+efficient codomain types.
+]
+
+[endsect] [/ Party]
+
[section Interval]
Modified: sandbox/itl/libs/itl/doc/functions.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/functions.qbk (original)
+++ sandbox/itl/libs/itl/doc/functions.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -25,7 +25,6 @@
refer to this section that describes the polymorphic function families of the itl
in detail.
-[/ JODO placeholders again]
[h5 Placeholders]
For a concise representation the same __eiS_phs__ will be used that have been
@@ -34,11 +33,10 @@
[h5 More specific function documentation]
This section covers the most important polymorphical and namespace global
-functions of the *itl*. More specific functions are may be looked up
+functions of the *itl*. More specific functions can be looked up
in the doxygen generated
[link interval_template_library_reference reference documentation].
-[/ JODO introducing overload tables. ==========================================]
[section Overload tables]
Many of the *itl's* functions are overloaded for
@@ -87,7 +85,6 @@
[endsect][/ Overload tables]
-[/ JODO Si Mj and segmentational fineness. ====================================]
[section Segmentational Fineness]
For overloading tables on infix operators, we need to
@@ -105,7 +102,7 @@
The indices *i* of *Si* and *Mi* represent a property
called ['*segmentational fineness*] or short ['*fineness*],
-which is a ['*type trait] on interval containers.
+which is a ['*type trait*] on interval containers.
[table
[[]]
@@ -180,7 +177,6 @@
[endsect][/ Segmentational Fineness]
-[/ JODO introducing key types. ================================================]
[section Key Types]
In an *stl* map `map<K,D>` the first parameter type of the map
@@ -201,8 +197,8 @@
[[__s: __itl_set__ ][ ][ interval map ]]
]
-__biLSubtraction__, __biLerasure__, __biLintersection__,
-which is a generalized find
+__biLSubtraction__, __biLerasure__, __biLintersection__
+[/ , which is a generalized find ]
and __biLcontainedness__ predicates
can be used with those kinds of key types.
For instance, the overload table for intersection
Modified: sandbox/itl/libs/itl/doc/functions_addition.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/functions_addition.qbk (original)
+++ sandbox/itl/libs/itl/doc/functions_addition.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -23,10 +23,30 @@
Functions and operators that implement ['*Addition*] on *itl* objects
are given in the table above.
-
-[note `operator |=` and `operator |` are implemented just as `operator +=` and `operator +`.
+`operator |=` and `operator |` are identical to `operator +=` and `operator +`.
This is a redundancy that has been introduced deliberately, because
a /set union/ semantics is often attached `operators |=` and `|`.
+
+[table
+[[] [Description of Addition]]
+[[`Sets`][Addition on Sets implements ['*set union*]]]
+[[`Maps`][Addition on Maps implements a ['*map union*] function similar to /set union/.
+ If, on insertion of an element value pair `(k,v)` it's key `k` is in the map
+ already, the addition function is propagated to the associated value.
+ This functionality has been introduced as /aggregate on collision/
+ for element maps and /aggregate on overlap/ for interval maps.
+
+ Find more on
+ [link boost_itl.concepts.addability__subtractability_and_aggregate_on_overlap ['addability of maps]]
+ and related
+ [link boost_itl.semantics.maps ['semantical issues]]
+ following the links.
+
+ Examples, demonstrating Addition on interval containers are
+ [link boost_itl.examples.overlap_counter ['overlap counter]],
+ [link boost_itl.examples.party ['party]] and
+ [link boost_itl.examples.partys_height_average ['party's height average.]]
+ ]]
]
[endsect][/ Synopsis]
Modified: sandbox/itl/libs/itl/doc/functions_equivs_orderings.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/functions_equivs_orderings.qbk (original)
+++ sandbox/itl/libs/itl/doc/functions_equivs_orderings.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -42,7 +42,7 @@
the equality of template parameter `Compare`.
Equality and compare operators are defined for all *itl*
-objects but there are no overload between different types.
+objects but there are no overloads between different types.
Containers of different segmentation are different,
even if their elements are the same:
@@ -104,7 +104,7 @@
two maps are sequential element equal except for value
pairs whose associated values are neutral elements.
-[*Complexity] is linear is the `iterative_size` of the
+[*Complexity] is linear in the `iterative_size` of the
larger container to compare.
[endsect]
Modified: sandbox/itl/libs/itl/doc/functions_erasure.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/functions_erasure.qbk (original)
+++ sandbox/itl/libs/itl/doc/functions_erasure.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -22,15 +22,16 @@
[h5 Erasure]
-[/ JODO Does not apply to iterator based erasure]
The effects of ['*erasure*] implemented by `erase` and ['*subtraction*]
implemented by `subtract` and `operator -=` are identical for all Set-types of
the *itl*.
For Map-types, `erase` provides the *stl* semantics of erasure in
-contrast to `add` and `operator +=`, that implement a generalized subtraction,
-that performs inverse aggregations if key values collode or key intervals overlap.
+contrast to `subtract` and `operator -=`, that implement a generalized subtraction,
+that performs inverse aggregations if key values collide or key intervals overlap.
+Using iterators it is possible to erase objects or ranges of
+objects the iterator is pointing at from itl Sets and Maps.
[endsect][/ Synopsis Erasure]
@@ -71,7 +72,7 @@
element containers: interval containers:
erase | e b s m erase | e i b p S M
- ---+-------- ---+------------
+------+-------- ------+------------
s | s s S | S S S
m | m m m m M | M M M M M M
``
Modified: sandbox/itl/libs/itl/doc/functions_insertion.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/functions_insertion.qbk (original)
+++ sandbox/itl/libs/itl/doc/functions_insertion.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -27,7 +27,7 @@
For Map-types, `insert` provides the *stl* semantics of insertion in
contrast to `add` and `operator +=`, that implement a generalized addition,
-that performs aggregations if key values collode or key intervals overlap.
+that performs aggregations if key values collide or key intervals overlap.
`insert` on Maps does not alter a maps content at the points, where
the keys of the object to inserted overlap or collide with keys that
are already in the map.
Modified: sandbox/itl/libs/itl/doc/functions_intersection.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/functions_intersection.qbk (original)
+++ sandbox/itl/libs/itl/doc/functions_intersection.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -22,6 +22,32 @@
Functions and operators that implement ['*intersection*] on *itl* objects
are given in the table above.
+
+[table
+[[] [Description of Intersection]]
+[[`Sets`][Intersection on Sets implements ['*set intersection*]]]
+[[`Maps`][Intersection on Maps implements a ['*map intersection*] function similar to /set intersection/.
+ If, on intersection, an element value pair `(k,v)` it's key `k` is in the map
+ already, the intersection function is propagated to the associated value,
+ if it exists for the Map's codomain_type.
+
+ If the codomain_type has no intersection operation, associated
+ values are combined using addition. For partial map types this
+ results in an addition on the intersection of the domains of
+ the intersected sets. For total maps intersection and
+ addition are identical in this case.
+
+ See also
+ [link boost_itl.semantics.quantifiers__maps_of_numbers.intersection_on_quantifiers ['intersection on Maps of numbers]].
+
+ A Map can be intersected with key types: an element
+ (an interval for interval_maps) and and a Set. This
+ results in the selection of a submap, and can be
+ defined as a generalized selection function on Maps.
+ ]]
+]
+
+
[endsect][/ Synopsis Intersection]
Modified: sandbox/itl/libs/itl/doc/functions_streaming.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/functions_streaming.qbk (original)
+++ sandbox/itl/libs/itl/doc/functions_streaming.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -12,10 +12,17 @@
[table
[[['*Streaming, conversion*]] [interval][__ch_itv_sets__][__ch_itv_maps__][itl::set][itl::map] ]
-[[`std::basic_ostream operator << (...)`] [1] [1] [1] [1] [1] ]
+[[`std::basic_ostream operator << (basic_ostream&, const T&)`] [1] [1] [1] [1] [1] ]
[[`std::string T::as_string()`] [1] [1] [1] [1] [1] ]
]
+[table
+[[['*Streaming, conversion*]] [Desctription] ]
+[[`std::basic_ostream operator << (basic_ostream&, const T&)`]
+ [Serializes the argument of type T to an output stream] ]
+[[`std::string T::as_string()`] [Returns a string representation of the object of type `T`]]
+]
+
[endsect][/ Streaming, conversion]
Modified: sandbox/itl/libs/itl/doc/functions_subtraction.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/functions_subtraction.qbk (original)
+++ sandbox/itl/libs/itl/doc/functions_subtraction.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -22,6 +22,25 @@
Functions and operators that implement ['*Subtraction*] on *itl* objects
are given in the table above.
+[table
+[[] [Description of Subtraction]]
+[[`Sets`][Subtraction on Sets implements ['*set difference*]]]
+[[`Maps`][Subtraction on Maps implements a ['*map difference*] function similar to /set difference/.
+ If, on subtraction of an element value pair `(k,v)` it's key `k` is in the map
+ already, the subtraction function is propagated to the associated value.
+ On the associated value an aggregation is performed, that reverses
+ the effect of the corresponding addition function.
+
+ Find more on
+ [link boost_itl.concepts.addability__subtractability_and_aggregate_on_overlap ['subtractability of maps]]
+ and related
+ [link boost_itl.semantics.maps ['semantical issues]]
+ following the links.
+
+ ]]
+]
+
+
[endsect][/ Synopsis]
Modified: sandbox/itl/libs/itl/doc/functions_symmetric_difference.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/functions_symmetric_difference.qbk (original)
+++ sandbox/itl/libs/itl/doc/functions_symmetric_difference.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -22,6 +22,16 @@
Functions and operators that implement ['*symmetric difference*] on *itl* objects
are given in the table above.
+[table
+[[] [Description of symmetric difference]]
+[[`Sets`][`operator ^` implements ['*set symmetric difference*]]]
+[[`Maps`][`operator ^` implements a ['*map symmetric difference*]
+ function similar to /set symmetric difference/.
+ All pairs that are common to both arguments are removed. All others unified.
+ ]]
+]
+
+
[endsect][/ Synopsis Symmetric difference]
[section Member functions][/ Symmetric difference]
Modified: sandbox/itl/libs/itl/doc/interface.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/interface.qbk (original)
+++ sandbox/itl/libs/itl/doc/interface.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -123,10 +123,6 @@
std::set<string, german_compare<string> > words; // 2nd parameter is a type
``
-[/ This choice has been made, because template parameters have to be
-instantiated with different types inside itl class templates. This problem
-is described in detail in section JODO.]
-
[endsect][/ Class templates]
[section Required Concepts]
@@ -436,7 +432,7 @@
[[__biLConsCopyDest__] [ ] [ ] [ ] [ ] [ ] [ ] [ ]]
[[`T::T()`] [1] [1] [1] [1] [1] [1] [1]]
[[`T::T(const P&)`] [A] [__eiS] [__bpM] [1] [1] [1] [1]]
-[/ JODO [`T::T(...)`] [3] [ ] [ ] [3] [3] [3] [3]]
+[/ FYI [`T::T(...)`] [3] [ ] [ ] [3] [3] [3] [3]]
[[`T& T::operator=(const P&)`] [A] [__S] [__M] [1] [1] [1] [1]]
[[`void T::swap(T&)`] [ ] [1] [1] [1] [1] [1] [1]]
@@ -522,7 +518,8 @@
[[`pair<J,J> T::equal_range(const key_value&)`][ ] [2] [2] [2] [2] [2] [2]]
[[__biLStreaming__] [interval][__ch_itv_sets__][__ch_itv_maps__][itl::set][itl::map][std::set][std::map]]
-[[`std::basic_ostream operator << (...)`] [1] [1] [1] [1] [1] [1] [1]]
+[[`std::basic_ostream operator << (basic_ostream&, const T&)`]
+ [1] [1] [1] [1] [1] [1] [1]]
[[`std::string T::as_string()`] [1] [1] [1] [1] [1] [ ] [ ]]
]
Modified: sandbox/itl/libs/itl/doc/introduction.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/introduction.qbk (original)
+++ sandbox/itl/libs/itl/doc/introduction.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -8,6 +8,14 @@
[section Introduction]
+[note [* This is not an official boost library]
+
+The /Interval Template Library/ is currently submitted
+for a formal review on the boost developer's list.
+Depending on the review's result the library might or
+might not become a boost library.
+]
+
Intervals are almost ubiquitous in software development. Yet they are
very easily coded into user defined classes by a pair of numbers
so they are only /implicitly/ used most of the time. The meaning of
Modified: sandbox/itl/libs/itl/doc/semantics.qbk
==============================================================================
--- sandbox/itl/libs/itl/doc/semantics.qbk (original)
+++ sandbox/itl/libs/itl/doc/semantics.qbk 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -157,7 +157,7 @@
Commutativity<S,&,== >: S a,b; a&b == b&a
``
-[/ JODO
+[/ FYI
Neutrality has *not* been validated to avoid
additional requirements on the sets template
parameters.]
@@ -298,7 +298,7 @@
values.
This is less magical as it might seem at first glance.
-If for instance, if we instantiate an __itv_map__ to
+If, for instance, we instantiate an __itv_map__ to
collect and concatenate
`std::strings` associated to intervals,
Modified: sandbox/itl/libs/itl/example/overlap_counter_/overlap_counter.cpp
==============================================================================
--- sandbox/itl/libs/itl/example/overlap_counter_/overlap_counter.cpp (original)
+++ sandbox/itl/libs/itl/example/overlap_counter_/overlap_counter.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -33,44 +33,46 @@
using namespace boost::itl;
-/* A interval_map<int, int> is a map<Interval<int>, int> that maps intervals
- to int values. On overlap of intervals it sums up the associated int
- values. */
-typedef interval_map<int, int> OverlapCounterTD;
+/* The most simple example of an interval_map is an overlap counter.
+ If intervals are added that are associated with the value 1,
+ all overlaps of added intervals are counted as a result in the
+ associated values.
+*/
+typedef interval_map<int, int> OverlapCounterT;
-void print_overlaps(const OverlapCounterTD& counter)
+void print_overlaps(const OverlapCounterT& counter)
{
- for(OverlapCounterTD::const_iterator it = counter.begin(); it != counter.end(); it++)
+ for(OverlapCounterT::const_iterator it = counter.begin(); it != counter.end(); it++)
{
- interval<int> itv = (*it).first;
+ interval<int> itv = (*it).first;
int overlaps_count = (*it).second;
if(overlaps_count == 1)
- cout << "in interval " << itv.as_string() << " intervals do not overlap" << endl;
+ cout << "in interval " << itv << " intervals do not overlap" << endl;
else
- cout << "in interval " << itv.as_string() << ": "<< overlaps_count << " intervals overlap" << endl;
+ cout << "in interval " << itv << ": "<< overlaps_count << " intervals overlap" << endl;
}
}
void overlap_counter()
{
- OverlapCounterTD overlap_counter;
+ OverlapCounterT overlap_counter;
interval<int> itv;
itv = interval<int>::rightopen(4,8);
cout << "-- adding " << itv.as_string() << " -----------------------------------------" << endl;
- overlap_counter += make_pair(itv, 1);
+ overlap_counter += make_pair(interval<int>::rightopen(4,8), 1);
print_overlaps(overlap_counter);
cout << "-----------------------------------------------------------" << endl;
itv = interval<int>::rightopen(6,9);
cout << "-- adding " << itv.as_string() << " -----------------------------------------" << endl;
- overlap_counter += make_pair(itv, 1);
+ overlap_counter += make_pair(interval<int>::rightopen(6,9), 1);
print_overlaps(overlap_counter);
cout << "-----------------------------------------------------------" << endl;
itv = interval<int>::rightopen(1,9);
cout << "-- adding " << itv.as_string() << " -----------------------------------------" << endl;
- overlap_counter += make_pair(itv, 1);
+ overlap_counter += make_pair(interval<int>::rightopen(1,9), 1);
print_overlaps(overlap_counter);
cout << "-----------------------------------------------------------" << endl;
Modified: sandbox/itl/libs/itl/test/test_casual_/test_casual.cpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_casual_/test_casual.cpp (original)
+++ sandbox/itl/libs/itl/test/test_casual_/test_casual.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -45,51 +45,51 @@
const bool test = is_same<SplitIntervalSetT::key_type, SplitIntervalSetT::interval_type>::value;
BOOST_CHECK_EQUAL(test, true);
- SplitIntervalSetT spliss;
- spliss.add(I_D(1,3)).add(I_D(3,4)).add(I_D(4,6)).add(I_D(6,8));
- spliss.contains(I_D(2,5));
+ SplitIntervalSetT spliss;
+ spliss.add(I_D(1,3)).add(I_D(3,4)).add(I_D(4,6)).add(I_D(6,8));
+ spliss.contains(I_D(2,5));
BOOST_CHECK_EQUAL(spliss.contains(I_D(2,7)), true);
-
- ItlMapT map_a(make_pair(1,1));
- ItlSetT set_a(1);
- map_a.add(make_pair(2,1));
- set_a.add(2);
- bool its = Map::intersects(map_a, map_a);
-
- erase(map_a, set_a);
- BOOST_CHECK_EQUAL(erase(map_a, set_a), ItlMapT());
- BOOST_CHECK_EQUAL(erase(map_a, map_a), ItlMapT());
-
- itl::map<int,int,total_absorber> tomp_a, tomp_b, tomp_c;
- tomp_a.add(make_pair(1,1)).add(make_pair(2,1));
-
- BOOST_CHECK_EQUAL((tomp_a & tomp_b).empty(), false);
- BOOST_CHECK_EQUAL((tomp_b & tomp_c).empty(), true);
-
- interval_map<int, interval_set<int> > maose, maose2;
- interval_set<int> inse;
- inse.add(I_I(1,4));
-
- maose.add(make_pair(I_I(1,4), inse));
- maose2 = maose;
- maose2.add(make_pair(I_I(5,6), inse));
-
-
- BOOST_CHECK_EQUAL(maose2.contains(maose), true);
-
- itl::set<int> eleset_a, eleset_a2, eleset_b, eleset_c;
- //eleset_a.add(1).add(2).add(5).add(8).add(11);
- eleset_a.add(8).add(11);
- eleset_a2 = eleset_a;
- eleset_b.add(8).add(2).add(11);
- eleset_c.add(9);
-
- //BOOST_CHECK_EQUAL(Set::inclusion_compare(eleset_a, eleset_a2), inclusion::equal);
- //BOOST_CHECK_EQUAL(Set::inclusion_compare(eleset_a, eleset_b), inclusion::superset);
- //BOOST_CHECK_EQUAL(Set::inclusion_compare(eleset_b, eleset_a), inclusion::subset);
+
+ ItlMapT map_a(make_pair(1,1));
+ ItlSetT set_a(1);
+ map_a.add(make_pair(2,1));
+ set_a.add(2);
+ bool its = Map::intersects(map_a, map_a);
+
+ erase(map_a, set_a);
+ BOOST_CHECK_EQUAL(erase(map_a, set_a), ItlMapT());
+ BOOST_CHECK_EQUAL(erase(map_a, map_a), ItlMapT());
+
+ itl::map<int,int,total_absorber> tomp_a, tomp_b, tomp_c;
+ tomp_a.add(make_pair(1,1)).add(make_pair(2,1));
+
+ BOOST_CHECK_EQUAL((tomp_a & tomp_b).empty(), false);
+ BOOST_CHECK_EQUAL((tomp_b & tomp_c).empty(), true);
+
+ interval_map<int, interval_set<int> > maose, maose2;
+ interval_set<int> inse;
+ inse.add(I_I(1,4));
+
+ maose.add(make_pair(I_I(1,4), inse));
+ maose2 = maose;
+ maose2.add(make_pair(I_I(5,6), inse));
+
+
+ BOOST_CHECK_EQUAL(maose2.contains(maose), true);
+
+ itl::set<int> eleset_a, eleset_a2, eleset_b, eleset_c;
+ //eleset_a.add(1).add(2).add(5).add(8).add(11);
+ eleset_a.add(8).add(11);
+ eleset_a2 = eleset_a;
+ eleset_b.add(8).add(2).add(11);
+ eleset_c.add(9);
+
+ //BOOST_CHECK_EQUAL(Set::inclusion_compare(eleset_a, eleset_a2), inclusion::equal);
+ //BOOST_CHECK_EQUAL(Set::inclusion_compare(eleset_a, eleset_b), inclusion::superset);
+ //BOOST_CHECK_EQUAL(Set::inclusion_compare(eleset_b, eleset_a), inclusion::subset);
- inclusion_compare(eleset_a, eleset_c);
- BOOST_CHECK_EQUAL(inclusion_compare(eleset_a, eleset_c), inclusion::unrelated);
+ inclusion_compare(eleset_a, eleset_c);
+ BOOST_CHECK_EQUAL(inclusion_compare(eleset_a, eleset_c), inclusion::unrelated);
}
Modified: sandbox/itl/libs/itl/test/test_interval_map_mixed.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_interval_map_mixed.hpp (original)
+++ sandbox/itl/libs/itl/test/test_interval_map_mixed.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -204,243 +204,243 @@
template <class T, class U, class Trt>
void partial_interval_map_mixed_inclusion_compare_4_bicremental_types()
{
- typedef interval_map<T,U,Trt> IntervalMapT;
- //--------------------------------------------------------------------------
- // equalities
- // { 0 1 2 3 4 5 8 9 }
- // {[0,2)[2,3](3,6) (7,9]}
- // ->2 ->1 ->1 ->2
- split_interval_map<T,U,Trt> split_map;
- interval_map<T,U,Trt> join_map;
- split_interval_set<T> split_set;
- separate_interval_set<T> sep_set;
- interval_set<T> join_set;
-
- split_map.add(IDv(0,2,2)).add(IIv(2,3,1)).add(CDv(3,6,1)).add(CIv(7,9,2));
- join_map = split_map;
- split_map.domain(split_set);
- split_map.domain(sep_set);
- split_map.domain(join_set);
-
- BOOST_CHECK_EQUAL( split_map.iterative_size(), 4 );
- BOOST_CHECK_EQUAL( join_map.iterative_size(), 3 );
- BOOST_CHECK_EQUAL( split_set.iterative_size(), 4 );
- BOOST_CHECK_EQUAL( sep_set.iterative_size(), 4 );
- BOOST_CHECK_EQUAL( join_set.iterative_size(), 2 );
-
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_map), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(join_map, split_map), inclusion::equal );
-
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, split_set), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, sep_set ), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_set ), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(join_map , split_set), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(join_map , sep_set ), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(join_map , join_set ), inclusion::equal );
-
- BOOST_CHECK_EQUAL( inclusion_compare(split_set, split_map), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(sep_set , split_map), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(join_set , split_map), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(split_set, join_map ), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(sep_set , join_map ), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(join_set , join_map ), inclusion::equal );
-
- //--------------------------------------------------------------------------
- // inclusions
- // { 0 1 2 3 4 5 8 9 }
- // {[0, 2)[2, 3](3, 6) (7, 9]}
- // ->2 ->1 ->1 ->2
- // {[0, 2) [3,3](3, 6) (7, 9]}
- // ->2 ->1 ->1 ->2
+ typedef interval_map<T,U,Trt> IntervalMapT;
+ //--------------------------------------------------------------------------
+ // equalities
+ // { 0 1 2 3 4 5 8 9 }
+ // {[0,2)[2,3](3,6) (7,9]}
+ // ->2 ->1 ->1 ->2
+ split_interval_map<T,U,Trt> split_map;
+ interval_map<T,U,Trt> join_map;
+ split_interval_set<T> split_set;
+ separate_interval_set<T> sep_set;
+ interval_set<T> join_set;
+
+ split_map.add(IDv(0,2,2)).add(IIv(2,3,1)).add(CDv(3,6,1)).add(CIv(7,9,2));
+ join_map = split_map;
+ split_map.domain(split_set);
+ split_map.domain(sep_set);
+ split_map.domain(join_set);
+
+ BOOST_CHECK_EQUAL( split_map.iterative_size(), 4 );
+ BOOST_CHECK_EQUAL( join_map.iterative_size(), 3 );
+ BOOST_CHECK_EQUAL( split_set.iterative_size(), 4 );
+ BOOST_CHECK_EQUAL( sep_set.iterative_size(), 4 );
+ BOOST_CHECK_EQUAL( join_set.iterative_size(), 2 );
+
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_map), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(join_map, split_map), inclusion::equal );
+
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, split_set), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, sep_set ), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_set ), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(join_map , split_set), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(join_map , sep_set ), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(join_map , join_set ), inclusion::equal );
+
+ BOOST_CHECK_EQUAL( inclusion_compare(split_set, split_map), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(sep_set , split_map), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(join_set , split_map), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_set, join_map ), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(sep_set , join_map ), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(join_set , join_map ), inclusion::equal );
+
+ //--------------------------------------------------------------------------
+ // inclusions
+ // { 0 1 2 3 4 5 8 9 }
+ // {[0, 2)[2, 3](3, 6) (7, 9]}
+ // ->2 ->1 ->1 ->2
+ // {[0, 2) [3,3](3, 6) (7, 9]}
+ // ->2 ->1 ->1 ->2
split_interval_map<T,U,Trt> split_sub_map1 = split_map;
- split_sub_map1.erase(MK_v(2));
- BOOST_CHECK_EQUAL( split_sub_map1.contains(MK_v(2)), false );
+ split_sub_map1.erase(MK_v(2));
+ BOOST_CHECK_EQUAL( split_sub_map1.contains(MK_v(2)), false );
- interval_map<T,U,Trt> join_sub_map2;
- join_sub_map2 = split_map;
- join_sub_map2.erase(MK_v(1));
- BOOST_CHECK_EQUAL( join_sub_map2.contains(MK_v(1)), false );
-
- split_interval_set<T> split_sub_set1;
- separate_interval_set<T> sep_sub_set1;
- interval_set<T> join_sub_set1;
-
- split_sub_map1.domain(split_sub_set1);
- split_sub_map1.domain(sep_sub_set1);
- split_sub_map1.domain(join_sub_set1);
-
- BOOST_CHECK_EQUAL( inclusion_compare(split_sub_map1, split_map), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare( join_sub_map2, split_map), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(split_sub_map1, join_map), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare( join_sub_map2, join_map), inclusion::subset );
-
- BOOST_CHECK_EQUAL( inclusion_compare(split_sub_set1, split_map), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare( sep_sub_set1, split_map), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare( join_sub_set1, split_map), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(split_sub_set1, join_map), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare( sep_sub_set1, join_map), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare( join_sub_set1, join_map), inclusion::subset );
-
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, split_sub_map1), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_sub_map2), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare( join_map, split_sub_map1), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare( join_map, join_sub_map2), inclusion::superset );
-
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, split_sub_set1), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, sep_sub_set1), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_sub_set1), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare( join_map, split_sub_set1), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare( join_map, sep_sub_set1), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare( join_map, join_sub_set1), inclusion::superset );
+ interval_map<T,U,Trt> join_sub_map2;
+ join_sub_map2 = split_map;
+ join_sub_map2.erase(MK_v(1));
+ BOOST_CHECK_EQUAL( join_sub_map2.contains(MK_v(1)), false );
+
+ split_interval_set<T> split_sub_set1;
+ separate_interval_set<T> sep_sub_set1;
+ interval_set<T> join_sub_set1;
+
+ split_sub_map1.domain(split_sub_set1);
+ split_sub_map1.domain(sep_sub_set1);
+ split_sub_map1.domain(join_sub_set1);
+
+ BOOST_CHECK_EQUAL( inclusion_compare(split_sub_map1, split_map), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_sub_map2, split_map), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_sub_map1, join_map), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_sub_map2, join_map), inclusion::subset );
+
+ BOOST_CHECK_EQUAL( inclusion_compare(split_sub_set1, split_map), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare( sep_sub_set1, split_map), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_sub_set1, split_map), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_sub_set1, join_map), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare( sep_sub_set1, join_map), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_sub_set1, join_map), inclusion::subset );
+
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, split_sub_map1), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_sub_map2), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_map, split_sub_map1), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_map, join_sub_map2), inclusion::superset );
+
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, split_sub_set1), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, sep_sub_set1), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_sub_set1), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_map, split_sub_set1), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_map, sep_sub_set1), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_map, join_sub_set1), inclusion::superset );
split_interval_map<T,U,Trt> split_unrel_map11 = split_sub_map1;
- split_unrel_map11.set(CIv(7,9,1));
- BOOST_CHECK_EQUAL( split_unrel_map11(MK_v(8)), MK_u(1) );
+ split_unrel_map11.set(CIv(7,9,1));
+ BOOST_CHECK_EQUAL( split_unrel_map11(MK_v(8)), MK_u(1) );
interval_map<T,U,Trt> join_unrel_map21 = join_sub_map2;
- join_unrel_map21.set(K_v(0,1));
- BOOST_CHECK_EQUAL( join_unrel_map21(MK_v(0)), MK_u(1) );
+ join_unrel_map21.set(K_v(0,1));
+ BOOST_CHECK_EQUAL( join_unrel_map21(MK_v(0)), MK_u(1) );
- BOOST_CHECK_EQUAL( inclusion_compare(split_unrel_map11, split_map), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare( join_unrel_map21, split_map), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare(split_unrel_map11, join_map), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare( join_unrel_map21, join_map), inclusion::unrelated );
-
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, split_unrel_map11), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_unrel_map21), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare( join_map, split_unrel_map11), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare( join_map, join_unrel_map21), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_unrel_map11, split_map), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_unrel_map21, split_map), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_unrel_map11, join_map), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_unrel_map21, join_map), inclusion::unrelated );
+
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, split_unrel_map11), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(split_map, join_unrel_map21), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_map, split_unrel_map11), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare( join_map, join_unrel_map21), inclusion::unrelated );
split_interval_map<T,U,Trt> split_unrel_map1 = split_sub_map1;
- split_unrel_map1.add(IDv(11,12,1));
- BOOST_CHECK_EQUAL( split_unrel_map1(MK_v(11)), MK_u(1) );
+ split_unrel_map1.add(IDv(11,12,1));
+ BOOST_CHECK_EQUAL( split_unrel_map1(MK_v(11)), MK_u(1) );
interval_map<T,U,Trt> join_unrel_map2 = join_sub_map2;
- join_unrel_map2.add(K_v(6,1));
- BOOST_CHECK_EQUAL( join_unrel_map2(MK_v(6)), MK_u(1) );
+ join_unrel_map2.add(K_v(6,1));
+ BOOST_CHECK_EQUAL( join_unrel_map2(MK_v(6)), MK_u(1) );
}
template <class T, class U, class Trt>
void partial_interval_map_mixed_contains_4_bicremental_types()
{
- typedef interval_map<T,U,Trt> IntervalMapT;
- //--------------------------------------------------------------------------
- // { 0 1 2 3 4 5 8 9 }
- // {[0,2)[2,3](3,6) (7,9]}
- // ->2 ->1 ->1 ->2
- split_interval_map<T,U,Trt> split_map;
- interval_map<T,U,Trt> join_map;
- split_interval_set<T> split_set;
- separate_interval_set<T> sep_set;
- interval_set<T> join_set;
-
- split_map.add(IDv(0,2,2)).add(IIv(2,3,1)).add(CDv(3,6,1)).add(CIv(7,9,2));
- join_map = split_map;
- split_map.domain(split_set);
- split_map.domain(sep_set);
- split_map.domain(join_set);
-
- BOOST_CHECK_EQUAL( split_map.iterative_size(), 4 );
- BOOST_CHECK_EQUAL( join_map.iterative_size(), 3 );
- BOOST_CHECK_EQUAL( split_set.iterative_size(), 4 );
- BOOST_CHECK_EQUAL( sep_set.iterative_size(), 4 );
- BOOST_CHECK_EQUAL( join_set.iterative_size(), 2 );
-
- // Key types
- BOOST_CHECK_EQUAL( split_map.contains(MK_v(0)), true );
- BOOST_CHECK_EQUAL( split_map.contains(MK_v(5)), true );
- BOOST_CHECK_EQUAL( split_map.contains(MK_v(9)), true );
-
- BOOST_CHECK_EQUAL( split_map.contains(I_D(2,3)), true );
- BOOST_CHECK_EQUAL( split_map.contains(I_D(0,6)), true );
- BOOST_CHECK_EQUAL( split_map.contains(I_D(0,7)), false );
- BOOST_CHECK_EQUAL( join_map.contains(I_D(2,3)), true );
- BOOST_CHECK_EQUAL( join_map.contains(I_D(0,6)), true );
- BOOST_CHECK_EQUAL( join_map.contains(I_D(0,7)), false );
-
- // Map types
- BOOST_CHECK_EQUAL( join_map.contains(K_v(1,2)), true );
- BOOST_CHECK_EQUAL( join_map.contains(K_v(5,1)), true );
- BOOST_CHECK_EQUAL( join_map.contains(K_v(9,2)), true );
-
- BOOST_CHECK_EQUAL( split_map.contains(IDv(2,6,1)), true );
- BOOST_CHECK_EQUAL( split_map.contains(IDv(1,6,1)), false );
- BOOST_CHECK_EQUAL( split_map.contains(IIv(8,9,2)), true );
- BOOST_CHECK_EQUAL( split_map.contains(IIv(8,9,3)), false );
- BOOST_CHECK_EQUAL( join_map.contains(IDv(2,6,1)), true );
- BOOST_CHECK_EQUAL( join_map.contains(IDv(1,6,1)), false );
- BOOST_CHECK_EQUAL( join_map.contains(IIv(8,9,2)), true );
- BOOST_CHECK_EQUAL( join_map.contains(IIv(8,9,3)), false );
-
- BOOST_CHECK_EQUAL( split_map.contains(join_map), true );
- BOOST_CHECK_EQUAL( join_map.contains(split_map), true );
- BOOST_CHECK_EQUAL( split_map.contained_in(join_map), true );
- BOOST_CHECK_EQUAL( join_map.contained_in(split_map), true );
-
- //--------------------------------------------------------------------------
- // inclusions
- // { 0 1 2 3 4 5 8 9 }
- // {[0, 2)[2, 3](3, 6) (7, 9]}
- // ->2 ->1 ->1 ->2
- // {[0, 2) [3,3](3, 6) (7, 9]}
- // ->2 ->1 ->1 ->2
+ typedef interval_map<T,U,Trt> IntervalMapT;
+ //--------------------------------------------------------------------------
+ // { 0 1 2 3 4 5 8 9 }
+ // {[0,2)[2,3](3,6) (7,9]}
+ // ->2 ->1 ->1 ->2
+ split_interval_map<T,U,Trt> split_map;
+ interval_map<T,U,Trt> join_map;
+ split_interval_set<T> split_set;
+ separate_interval_set<T> sep_set;
+ interval_set<T> join_set;
+
+ split_map.add(IDv(0,2,2)).add(IIv(2,3,1)).add(CDv(3,6,1)).add(CIv(7,9,2));
+ join_map = split_map;
+ split_map.domain(split_set);
+ split_map.domain(sep_set);
+ split_map.domain(join_set);
+
+ BOOST_CHECK_EQUAL( split_map.iterative_size(), 4 );
+ BOOST_CHECK_EQUAL( join_map.iterative_size(), 3 );
+ BOOST_CHECK_EQUAL( split_set.iterative_size(), 4 );
+ BOOST_CHECK_EQUAL( sep_set.iterative_size(), 4 );
+ BOOST_CHECK_EQUAL( join_set.iterative_size(), 2 );
+
+ // Key types
+ BOOST_CHECK_EQUAL( split_map.contains(MK_v(0)), true );
+ BOOST_CHECK_EQUAL( split_map.contains(MK_v(5)), true );
+ BOOST_CHECK_EQUAL( split_map.contains(MK_v(9)), true );
+
+ BOOST_CHECK_EQUAL( split_map.contains(I_D(2,3)), true );
+ BOOST_CHECK_EQUAL( split_map.contains(I_D(0,6)), true );
+ BOOST_CHECK_EQUAL( split_map.contains(I_D(0,7)), false );
+ BOOST_CHECK_EQUAL( join_map.contains(I_D(2,3)), true );
+ BOOST_CHECK_EQUAL( join_map.contains(I_D(0,6)), true );
+ BOOST_CHECK_EQUAL( join_map.contains(I_D(0,7)), false );
+
+ // Map types
+ BOOST_CHECK_EQUAL( join_map.contains(K_v(1,2)), true );
+ BOOST_CHECK_EQUAL( join_map.contains(K_v(5,1)), true );
+ BOOST_CHECK_EQUAL( join_map.contains(K_v(9,2)), true );
+
+ BOOST_CHECK_EQUAL( split_map.contains(IDv(2,6,1)), true );
+ BOOST_CHECK_EQUAL( split_map.contains(IDv(1,6,1)), false );
+ BOOST_CHECK_EQUAL( split_map.contains(IIv(8,9,2)), true );
+ BOOST_CHECK_EQUAL( split_map.contains(IIv(8,9,3)), false );
+ BOOST_CHECK_EQUAL( join_map.contains(IDv(2,6,1)), true );
+ BOOST_CHECK_EQUAL( join_map.contains(IDv(1,6,1)), false );
+ BOOST_CHECK_EQUAL( join_map.contains(IIv(8,9,2)), true );
+ BOOST_CHECK_EQUAL( join_map.contains(IIv(8,9,3)), false );
+
+ BOOST_CHECK_EQUAL( split_map.contains(join_map), true );
+ BOOST_CHECK_EQUAL( join_map.contains(split_map), true );
+ BOOST_CHECK_EQUAL( split_map.contained_in(join_map), true );
+ BOOST_CHECK_EQUAL( join_map.contained_in(split_map), true );
+
+ //--------------------------------------------------------------------------
+ // inclusions
+ // { 0 1 2 3 4 5 8 9 }
+ // {[0, 2)[2, 3](3, 6) (7, 9]}
+ // ->2 ->1 ->1 ->2
+ // {[0, 2) [3,3](3, 6) (7, 9]}
+ // ->2 ->1 ->1 ->2
split_interval_map<T,U,Trt> split_sub_map1 = split_map;
- split_sub_map1.erase(MK_v(2));
- BOOST_CHECK_EQUAL( split_sub_map1.contains(MK_v(2)), false );
+ split_sub_map1.erase(MK_v(2));
+ BOOST_CHECK_EQUAL( split_sub_map1.contains(MK_v(2)), false );
- interval_map<T,U,Trt> join_sub_map2;
- join_sub_map2 = split_map;
- join_sub_map2.erase(MK_v(1));
- BOOST_CHECK_EQUAL( join_sub_map2.contains(MK_v(1)), false );
-
- split_interval_set<T> split_sub_set1;
- separate_interval_set<T> sep_sub_set1;
- interval_set<T> join_sub_set1;
-
- split_sub_map1.domain(split_sub_set1);
- split_sub_map1.domain(sep_sub_set1);
- split_sub_map1.domain(join_sub_set1);
-
- BOOST_CHECK_EQUAL( split_sub_map1.contained_in(split_map), true );
- BOOST_CHECK_EQUAL( join_sub_map2.contained_in(split_map), true );
- BOOST_CHECK_EQUAL( split_sub_map1.contained_in(join_map ), true );
- BOOST_CHECK_EQUAL( join_sub_map2.contained_in(join_map ), true );
-
- BOOST_CHECK_EQUAL( split_map.contains(split_sub_map1), true );
- BOOST_CHECK_EQUAL( split_map.contains( join_sub_map2), true );
- BOOST_CHECK_EQUAL( join_map.contains(split_sub_map1), true );
- BOOST_CHECK_EQUAL( join_map.contains( join_sub_map2), true );
-
- BOOST_CHECK_EQUAL( split_map.contains(split_sub_set1), true );
- BOOST_CHECK_EQUAL( split_map.contains( sep_sub_set1), true );
- BOOST_CHECK_EQUAL( split_map.contains( join_sub_set1), true );
- BOOST_CHECK_EQUAL( join_map.contains(split_sub_set1), true );
- BOOST_CHECK_EQUAL( join_map.contains( sep_sub_set1), true );
- BOOST_CHECK_EQUAL( join_map.contains( join_sub_set1), true );
+ interval_map<T,U,Trt> join_sub_map2;
+ join_sub_map2 = split_map;
+ join_sub_map2.erase(MK_v(1));
+ BOOST_CHECK_EQUAL( join_sub_map2.contains(MK_v(1)), false );
+
+ split_interval_set<T> split_sub_set1;
+ separate_interval_set<T> sep_sub_set1;
+ interval_set<T> join_sub_set1;
+
+ split_sub_map1.domain(split_sub_set1);
+ split_sub_map1.domain(sep_sub_set1);
+ split_sub_map1.domain(join_sub_set1);
+
+ BOOST_CHECK_EQUAL( split_sub_map1.contained_in(split_map), true );
+ BOOST_CHECK_EQUAL( join_sub_map2.contained_in(split_map), true );
+ BOOST_CHECK_EQUAL( split_sub_map1.contained_in(join_map ), true );
+ BOOST_CHECK_EQUAL( join_sub_map2.contained_in(join_map ), true );
+
+ BOOST_CHECK_EQUAL( split_map.contains(split_sub_map1), true );
+ BOOST_CHECK_EQUAL( split_map.contains( join_sub_map2), true );
+ BOOST_CHECK_EQUAL( join_map.contains(split_sub_map1), true );
+ BOOST_CHECK_EQUAL( join_map.contains( join_sub_map2), true );
+
+ BOOST_CHECK_EQUAL( split_map.contains(split_sub_set1), true );
+ BOOST_CHECK_EQUAL( split_map.contains( sep_sub_set1), true );
+ BOOST_CHECK_EQUAL( split_map.contains( join_sub_set1), true );
+ BOOST_CHECK_EQUAL( join_map.contains(split_sub_set1), true );
+ BOOST_CHECK_EQUAL( join_map.contains( sep_sub_set1), true );
+ BOOST_CHECK_EQUAL( join_map.contains( join_sub_set1), true );
split_interval_map<T,U,Trt> split_unrel_map11 = split_sub_map1;
- split_unrel_map11.set(CIv(7,9,1));
- BOOST_CHECK_EQUAL( split_unrel_map11(MK_v(8)), MK_u(1) );
+ split_unrel_map11.set(CIv(7,9,1));
+ BOOST_CHECK_EQUAL( split_unrel_map11(MK_v(8)), MK_u(1) );
interval_map<T,U,Trt> join_unrel_map21 = join_sub_map2;
- join_unrel_map21.set(K_v(0,1));
- BOOST_CHECK_EQUAL( join_unrel_map21(MK_v(0)), MK_u(1) );
+ join_unrel_map21.set(K_v(0,1));
+ BOOST_CHECK_EQUAL( join_unrel_map21(MK_v(0)), MK_u(1) );
- BOOST_CHECK_EQUAL( split_unrel_map11.contains(split_map), false );
- BOOST_CHECK_EQUAL( join_unrel_map21.contains(split_map), false );
- BOOST_CHECK_EQUAL( split_unrel_map11.contains( join_map), false );
- BOOST_CHECK_EQUAL( join_unrel_map21.contains( join_map), false );
-
- BOOST_CHECK_EQUAL( split_unrel_map11.contained_in(split_map), false );
- BOOST_CHECK_EQUAL( join_unrel_map21.contained_in(split_map), false );
- BOOST_CHECK_EQUAL( split_unrel_map11.contained_in( join_map), false );
- BOOST_CHECK_EQUAL( join_unrel_map21.contained_in( join_map), false );
-
- BOOST_CHECK_EQUAL( split_map.contains(split_unrel_map11), false );
- BOOST_CHECK_EQUAL( split_map.contains( join_unrel_map21), false );
- BOOST_CHECK_EQUAL( join_map.contains(split_unrel_map11), false );
- BOOST_CHECK_EQUAL( join_map.contains( join_unrel_map21), false );
+ BOOST_CHECK_EQUAL( split_unrel_map11.contains(split_map), false );
+ BOOST_CHECK_EQUAL( join_unrel_map21.contains(split_map), false );
+ BOOST_CHECK_EQUAL( split_unrel_map11.contains( join_map), false );
+ BOOST_CHECK_EQUAL( join_unrel_map21.contains( join_map), false );
+
+ BOOST_CHECK_EQUAL( split_unrel_map11.contained_in(split_map), false );
+ BOOST_CHECK_EQUAL( join_unrel_map21.contained_in(split_map), false );
+ BOOST_CHECK_EQUAL( split_unrel_map11.contained_in( join_map), false );
+ BOOST_CHECK_EQUAL( join_unrel_map21.contained_in( join_map), false );
+
+ BOOST_CHECK_EQUAL( split_map.contains(split_unrel_map11), false );
+ BOOST_CHECK_EQUAL( split_map.contains( join_unrel_map21), false );
+ BOOST_CHECK_EQUAL( join_map.contains(split_unrel_map11), false );
+ BOOST_CHECK_EQUAL( join_map.contains( join_unrel_map21), false );
}
Modified: sandbox/itl/libs/itl/test/test_interval_map_shared.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_interval_map_shared.hpp (original)
+++ sandbox/itl/libs/itl/test/test_interval_map_shared.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -422,13 +422,23 @@
void interval_map_contains_4_bicremental_types()
{
typedef IntervalMap<T,U> IntervalMapT;
+ typedef typename IntervalMapT::set_type IntervalSetT;
IntervalMapT itv_map; itv_map.add(K_v(3,1));
+ BOOST_CHECK_EQUAL( itv_map.contains(MK_v(3)), true );
BOOST_CHECK_EQUAL( itv_map.contains(K_v(3,1)), true );
BOOST_CHECK_EQUAL( IntervalMapT().add(K_v(3,1)).contains(K_v(3,1)), true );
+ BOOST_CHECK_EQUAL( IntervalMapT().add(K_v(3,1)).contains(MK_v(3)), true );
BOOST_CHECK_EQUAL( IntervalMapT().insert(K_v(3,1)).contains(K_v(3,1)), true );
itv_map.clear();
BOOST_CHECK_EQUAL( (itv_map += IIv(3,7,1)).contains(IIv(3,7,1)), true );
+ BOOST_CHECK_EQUAL( itv_map.contains(IIv(3,7,2)), false );
+ BOOST_CHECK_EQUAL( itv_map.contains(I_I(3,7)), true );
+ BOOST_CHECK_EQUAL( itv_map.contains(I_I(4,6)), true );
+ BOOST_CHECK_EQUAL( (itv_map += CIv(7,9,1)).contains(IIv(3,9,1)), true );
+ BOOST_CHECK_EQUAL( itv_map.contains(I_I(4,8)), true );
+ BOOST_CHECK_EQUAL( (itv_map += IIv(11,12,1)).contains(IIv(3,12,1)), false );
+ BOOST_CHECK_EQUAL( itv_map.contains(I_I(4,11)), false );
IntervalMapT itv_map0 = itv_map;
@@ -437,6 +447,9 @@
itv_map2.add(K_v(9,1)).add(K_v(11,1));
itv_map += itv_map2;
BOOST_CHECK_EQUAL( itv_map.contains(itv_map2), true );
+ IntervalSetT itv_set2;
+ itv_map2.domain(itv_set2);
+ BOOST_CHECK_EQUAL( itv_map.contains(itv_set2), true );
}
template <template<class T, class U,
@@ -451,29 +464,29 @@
void interval_map_contains_key_objects_4_bicremental_types()
{
typedef IntervalMap<T,U> IntervalMapT;
- typedef typename IntervalMapT::set_type IntervalSetT;
+ typedef typename IntervalMapT::set_type IntervalSetT;
IntervalMapT itv_map;
- itv_map.add(IDv(1,3,1));
+ itv_map.add(IDv(1,3,1));
BOOST_CHECK_EQUAL( itv_map.contains(MK_v(0)), false );
BOOST_CHECK_EQUAL( itv_map.contains(MK_v(2)), true );
BOOST_CHECK_EQUAL( itv_map.contains(MK_v(3)), false );
- itv_map.add(IDv(3,6,2));
+ itv_map.add(IDv(3,6,2));
BOOST_CHECK_EQUAL( itv_map.contains(I_I(0,0)), false );
BOOST_CHECK_EQUAL( itv_map.contains(I_I(2,4)), true );
BOOST_CHECK_EQUAL( itv_map.contains(I_I(6,6)), false );
- itv_map.add(IDv(8,9,2));
+ itv_map.add(IDv(8,9,2));
- IntervalSetT itv_set;
- itv_set.add(C_I(1,2)).add(C_D(2,6)).add(I_I(8,8));
+ IntervalSetT itv_set;
+ itv_set.add(C_I(1,2)).add(C_D(2,6)).add(I_I(8,8));
BOOST_CHECK_EQUAL( itv_map.contains(itv_set), true );
- itv_set.add(I_I(1,4));
+ itv_set.add(I_I(1,4));
BOOST_CHECK_EQUAL( itv_map.contains(itv_set), true );
- itv_set.add(I_I(1,4));
+ itv_set.add(I_I(1,4));
BOOST_CHECK_EQUAL( itv_map.contains(itv_set), true );
- itv_set.add(I_I(7,7));
+ itv_set.add(I_I(7,7));
BOOST_CHECK_EQUAL( itv_map.contains(itv_set), false );
}
@@ -1108,61 +1121,61 @@
void interval_map_inclusion_compare_4_bicremental_types()
{
typedef IntervalMap<T,U,Trt> IntervalMapT;
- typedef typename IntervalMap<T,U,Trt>::set_type IntervalSetT;
+ typedef typename IntervalMap<T,U,Trt>::set_type IntervalSetT;
typedef itl::map<T,U,Trt> MapT;
typedef itl::set<T> SetT;
IntervalMapT itv_map_sub_a, itv_map_a, itv_map_a2, itv_map_super_a,
- itv_map_b, itv_map_c;
+ itv_map_b, itv_map_c;
itv_map_sub_a.add(IDv(2,4,1)).add(IIv(6,7,3));
itv_map_a = itv_map_sub_a;
- itv_map_a.add(IIv(9,9,1));
- itv_map_a2 = itv_map_a;
- itv_map_c = itv_map_sub_a;
- itv_map_c.erase(MK_v(7)).add(IIv(11,11,2));
- itv_map_b = itv_map_a;
- itv_map_b.set(IIv(6,7,2));
-
-
- BOOST_CHECK_EQUAL( inclusion_compare(IntervalMapT(), IntervalMapT()), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_a), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_a2), inclusion::equal );
-
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, IntervalMapT()), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_sub_a), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(IntervalMapT(), itv_map_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_sub_a, itv_map_a), inclusion::subset );
+ itv_map_a.add(IIv(9,9,1));
+ itv_map_a2 = itv_map_a;
+ itv_map_c = itv_map_sub_a;
+ itv_map_c.erase(MK_v(7)).add(IIv(11,11,2));
+ itv_map_b = itv_map_a;
+ itv_map_b.set(IIv(6,7,2));
+
+
+ BOOST_CHECK_EQUAL( inclusion_compare(IntervalMapT(), IntervalMapT()), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_a), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_a2), inclusion::equal );
+
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, IntervalMapT()), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_sub_a), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(IntervalMapT(), itv_map_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_sub_a, itv_map_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_b), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_c), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_b), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, itv_map_c), inclusion::unrelated );
IntervalSetT set_sub_a, set_a, set_a2, set_b, set_c;
- itv_map_a.domain(set_a);
- itv_map_a2.domain(set_a2);
- itv_map_sub_a.domain(set_sub_a);
+ itv_map_a.domain(set_a);
+ itv_map_a2.domain(set_a2);
+ itv_map_sub_a.domain(set_sub_a);
- BOOST_CHECK_EQUAL( inclusion_compare(IntervalMapT(), IntervalSetT()), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(IntervalSetT(), IntervalMapT()), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(IntervalSetT(), IntervalSetT()), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(IntervalMapT(), IntervalSetT()), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(IntervalSetT(), IntervalMapT()), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(IntervalSetT(), IntervalSetT()), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, set_a), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, itv_map_a), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, set_a2), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, set_a), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, itv_map_a), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, set_a2), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, IntervalSetT()), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, set_sub_a), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, IntervalSetT()), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_a, set_sub_a), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(IntervalSetT(), itv_map_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_sub_a, itv_map_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(IntervalSetT(), itv_map_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_sub_a, itv_map_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, IntervalSetT()), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, set_sub_a), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, IntervalSetT()), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, set_sub_a), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(IntervalSetT(), set_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_sub_a, set_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(IntervalSetT(), set_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_sub_a, set_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, itv_map_c), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare(itv_map_c, set_a), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, itv_map_c), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(itv_map_c, set_a), inclusion::unrelated );
}
Modified: sandbox/itl/libs/itl/test/test_itl_map.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_itl_map.hpp (original)
+++ sandbox/itl/libs/itl/test/test_itl_map.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -59,14 +59,14 @@
typedef itl::set<T> SetT;
IntervalMapT itv_map_sub_a, itv_map_a, itv_map_super_a,
- itv_map_b, itv_map_c;
+ itv_map_b, itv_map_c;
itv_map_sub_a.add(IDv(2,4,1)).add(IIv(6,7,3));
itv_map_a = itv_map_sub_a;
- itv_map_a.add(IIv(9,9,1));
- itv_map_c = itv_map_sub_a;
- itv_map_c.erase(MK_v(7)).add(IIv(11,11,2));
- itv_map_b = itv_map_a;
- itv_map_b.set(IIv(6,7,2));
+ itv_map_a.add(IIv(9,9,1));
+ itv_map_c = itv_map_sub_a;
+ itv_map_c.erase(MK_v(7)).add(IIv(11,11,2));
+ itv_map_b = itv_map_a;
+ itv_map_b.set(IIv(6,7,2));
MapT map_sub_a, map_a, map_a2, map_b, map_c;
Interval::atomize(map_a, itv_map_a);
@@ -74,46 +74,46 @@
Interval::atomize(map_c, itv_map_c);
Interval::atomize(map_sub_a, itv_map_sub_a);
- map_a2 = map_a;
- BOOST_CHECK_EQUAL( inclusion_compare(MapT(), MapT()), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_a), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_a2), inclusion::equal );
-
- BOOST_CHECK_EQUAL( inclusion_compare(map_a, MapT()), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_sub_a), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(MapT(), map_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(map_sub_a, map_a), inclusion::subset );
+ map_a2 = map_a;
+ BOOST_CHECK_EQUAL( inclusion_compare(MapT(), MapT()), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_a), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_a2), inclusion::equal );
+
+ BOOST_CHECK_EQUAL( inclusion_compare(map_a, MapT()), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_sub_a), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(MapT(), map_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_sub_a, map_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_b), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_c), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_b), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_a, map_c), inclusion::unrelated );
SetT set_sub_a, set_a, set_a2, set_b, set_c;
- map_a.domain(set_a);
- map_a2.domain(set_a2);
- map_sub_a.domain(set_sub_a);
+ map_a.domain(set_a);
+ map_a2.domain(set_a2);
+ map_sub_a.domain(set_sub_a);
- BOOST_CHECK_EQUAL( inclusion_compare(MapT(), SetT()), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(SetT(), MapT()), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(SetT(), SetT()), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(MapT(), SetT()), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(SetT(), MapT()), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(SetT(), SetT()), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(map_a, set_a), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, map_a), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, set_a2), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_a, set_a), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, map_a), inclusion::equal );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, set_a2), inclusion::equal );
- BOOST_CHECK_EQUAL( inclusion_compare(map_a, SetT()), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(map_a, set_sub_a), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_a, SetT()), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_a, set_sub_a), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(SetT(), map_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_sub_a, map_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(SetT(), map_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_sub_a, map_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, SetT()), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, set_sub_a), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, SetT()), inclusion::superset );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, set_sub_a), inclusion::superset );
- BOOST_CHECK_EQUAL( inclusion_compare(SetT(), set_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_sub_a, set_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(SetT(), set_a), inclusion::subset );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_sub_a, set_a), inclusion::subset );
- BOOST_CHECK_EQUAL( inclusion_compare(set_a, map_c), inclusion::unrelated );
- BOOST_CHECK_EQUAL( inclusion_compare(map_c, set_a), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(set_a, map_c), inclusion::unrelated );
+ BOOST_CHECK_EQUAL( inclusion_compare(map_c, set_a), inclusion::unrelated );
}
Modified: sandbox/itl/libs/itl/test/test_value_maker.hpp
==============================================================================
--- sandbox/itl/libs/itl/test/test_value_maker.hpp (original)
+++ sandbox/itl/libs/itl/test/test_value_maker.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -13,7 +13,7 @@
namespace boost{ namespace itl
{
-/*JODO completion like that:
+/*FYI completion like that:
std::string make(int n)
{
std::string value = neutron<std::string>::value();
Modified: sandbox/itl/libs/validate/example/labat_collector_/labat_collector.cpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_collector_/labat_collector.cpp (original)
+++ sandbox/itl/libs/validate/example/labat_collector_/labat_collector.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -24,8 +24,8 @@
">> Output will be generated in a few seconds\n"
">> terminate by typing <CTRL>C\n"
">> ------------------------------------------------------ <<\n";
+ GentorProfileSgl::it()->set_std_profile(6,1);
GentorProfileSgl::it()->report_profile();
-
validater.validate();
};
Modified: sandbox/itl/libs/validate/example/labat_itl_morphic_/labat_itl_morphic.cpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_itl_morphic_/labat_itl_morphic.cpp (original)
+++ sandbox/itl/libs/validate/example/labat_itl_morphic_/labat_itl_morphic.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -25,6 +25,8 @@
">> Output will be generated in a few seconds\n"
">> terminate by typing <CTRL>C\n"
">> ------------------------------------------------------ <<\n";
+ GentorProfileSgl::it()->set_std_profile(16,1);
+ GentorProfileSgl::it()->report_profile();
validater.validate();
};
Modified: sandbox/itl/libs/validate/example/labat_itl_order_/labat_itl_order.cpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_itl_order_/labat_itl_order.cpp (original)
+++ sandbox/itl/libs/validate/example/labat_itl_order_/labat_itl_order.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -36,6 +36,8 @@
">> Output will be generated in a few seconds\n"
">> terminate by typing <CTRL>C\n"
">> ------------------------------------------------------ <<\n";
+ GentorProfileSgl::it()->set_std_profile(16,1);
+ GentorProfileSgl::it()->report_profile();
validater.validate();
};
Modified: sandbox/itl/libs/validate/example/labat_itl_set_/labat_itl_set.cpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_itl_set_/labat_itl_set.cpp (original)
+++ sandbox/itl/libs/validate/example/labat_itl_set_/labat_itl_set.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -25,6 +25,8 @@
">> Output will be generated in a few seconds\n"
">> terminate by typing <CTRL>C\n"
">> ------------------------------------------------------ <<\n";
+ GentorProfileSgl::it()->set_std_profile(16,1);
+ GentorProfileSgl::it()->report_profile();
validater.validate();
};
Modified: sandbox/itl/libs/validate/example/labat_polygon_/labat_polygon.cpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_polygon_/labat_polygon.cpp (original)
+++ sandbox/itl/libs/validate/example/labat_polygon_/labat_polygon.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -73,14 +73,14 @@
for(int i = 0; i < 100; ++i)
{
if(i%10==0)
- std::cout << ".";
+ std::cout << ".";
test_polygon_set<CPolygonSet>();
}
long long c2 = clock();
for(int i = 0; i < 100; ++i)
{
if(i%10==0)
- std::cout << ".";
+ std::cout << ".";
test_polygon_set<gtl::polygon_set_data<int> >();
}
long long c3 = clock();
@@ -98,38 +98,38 @@
// This function tests the generator for polygon sets.
void test_polyset_gen()
{
- typedef itl::list<point<int> > PolygonT;
- typedef itl::list<PolygonT> PolygonSetT;
+ typedef itl::list<point<int> > PolygonT;
+ typedef itl::list<PolygonT> PolygonSetT;
- point_gentor<int> pointgen;
- pointgen.setRange(interval<int>::rightopen(-99, 100));
+ point_gentor<int> pointgen;
+ pointgen.setRange(interval<int>::rightopen(-99, 100));
- PolygonT some_poly;
- polygon_gentor<PolygonT> polygen;
- polygen.setDomainGentor(&pointgen);
- polygen.setRangeOfSampleSize(interval<int>::rightopen(1, 5));
-
- PolygonSetT some_polyset;
- polygon_set_gentor<PolygonSetT> polysetgen;
- polysetgen.setDomainGentor(&polygen);
- polysetgen.setRangeOfSampleSize(interval<int>::rightopen(1, 3));
-
- for(int idx=0; idx<10; idx++)
- {
- polysetgen.some(some_polyset);
- cout << "[";
- for(PolygonSetT::iterator its_ = some_polyset.begin();
- its_ != some_polyset.end(); ++its_)
- {
- PolygonT& some_poly_ = *its_;
- cout << "{";
- for(PolygonT::iterator it_ = some_poly_.begin();
- it_ != some_poly_.end(); ++it_)
- cout << "(" << it_->x << "," << it_->y << ")";
- cout << "}\n";
- }
- cout << "]\n";
- }
+ PolygonT some_poly;
+ polygon_gentor<PolygonT> polygen;
+ polygen.setDomainGentor(&pointgen);
+ polygen.setRangeOfSampleSize(interval<int>::rightopen(1, 5));
+
+ PolygonSetT some_polyset;
+ polygon_set_gentor<PolygonSetT> polysetgen;
+ polysetgen.setDomainGentor(&polygen);
+ polysetgen.setRangeOfSampleSize(interval<int>::rightopen(1, 3));
+
+ for(int idx=0; idx<10; idx++)
+ {
+ polysetgen.some(some_polyset);
+ cout << "[";
+ for(PolygonSetT::iterator its_ = some_polyset.begin();
+ its_ != some_polyset.end(); ++its_)
+ {
+ PolygonT& some_poly_ = *its_;
+ cout << "{";
+ for(PolygonT::iterator it_ = some_poly_.begin();
+ it_ != some_poly_.end(); ++it_)
+ cout << "(" << it_->x << "," << it_->y << ")";
+ cout << "}\n";
+ }
+ cout << "]\n";
+ }
}
@@ -138,25 +138,25 @@
void test_LawValidater()
{
- //typedef PolygonCommutativity
- // < CPolygonSet > TestLawT;
- //LawValidater<TestLawT, RandomGentor> test_law;
-
- typedef PolygonSymmetricDifference
- < CPolygonSet > TestLawT;
- LawValidater<TestLawT, RandomGentor> test_law;
+ //typedef PolygonCommutativity
+ // < CPolygonSet > TestLawT;
+ //LawValidater<TestLawT, RandomGentor> test_law;
+
+ typedef PolygonSymmetricDifference
+ < CPolygonSet > TestLawT;
+ LawValidater<TestLawT, RandomGentor> test_law;
//-----------------------------------------------------------------------------
- // Set the test automatons parameters:
- // Size of polygon sets is in [0 .. |set| ]
- // Size of polygon sets is in [0 .. |poly|]
- // Coordinates in [min .. max)
- // |set|,|poly|, min, max
- GentorProfileSgl::it()->set_polygon_profile(1, 3, 0, 10);
- int test_count = 10000;
+ // Set the test automatons parameters:
+ // Size of polygon sets is in [0 .. |set| ]
+ // Size of polygon sets is in [0 .. |poly|]
+ // Coordinates in [min .. max)
+ // |set|,|poly|, min, max
+ GentorProfileSgl::it()->set_polygon_profile(1, 3, 0, 10);
+ int test_count = 10000;
ptime start, stop;
- test_law.set_trials_count(test_count);
+ test_law.set_trials_count(test_count);
std::cout << "Start\n";
start = ptime(microsec_clock::local_time());
@@ -169,10 +169,10 @@
int main()
{
- //test_polyset_gen();
- //polygon_test();
- //test_polygon_set<CPolygonSet>();
- test_LawValidater();
+ //test_polyset_gen();
+ //polygon_test();
+ //test_polygon_set<CPolygonSet>();
+ test_LawValidater();
}
Modified: sandbox/itl/libs/validate/example/labat_polygon_/point_gentor.hpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_polygon_/point_gentor.hpp (original)
+++ sandbox/itl/libs/validate/example/labat_polygon_/point_gentor.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -23,31 +23,31 @@
template<class DomainT>
struct point
{
- //CL typedef DomainT coordinate_type;
+ //CL typedef DomainT coordinate_type;
- std::string as_string()const
- {
- return std::string(
- "(" + to_string<DomainT>::apply(x) + "," +
- to_string<DomainT>::apply(y) + ")"
- );
- }
+ std::string as_string()const
+ {
+ return std::string(
+ "(" + to_string<DomainT>::apply(x) + "," +
+ to_string<DomainT>::apply(y) + ")"
+ );
+ }
- DomainT x;
- DomainT y;
+ DomainT x;
+ DomainT y;
};
template<class DomainT>
bool operator == (const point<DomainT>& left, const point<DomainT>& right)
{
- return left.x == right.x && left.y == right.y;
+ return left.x == right.x && left.y == right.y;
}
template <class Type>
struct type_to_string<itl::point<Type> >
{
- static std::string apply()
- { return "point<"+ type_to_string<Type>::apply() +">"; }
+ static std::string apply()
+ { return "point<"+ type_to_string<Type>::apply() +">"; }
};
template <class DomainT, class PointT = point<DomainT> >
@@ -56,7 +56,7 @@
public:
virtual void some(PointT& x);
- void setRange(const itl::interval<DomainT>& range)
+ void setRange(const itl::interval<DomainT>& range)
{ m_valueRange = range; }
void setValueRange(DomainT low, DomainT up)
@@ -76,8 +76,8 @@
template <class DomainT, class PointT>
void point_gentor<DomainT, PointT>::some(PointT& value)
{
- value.x = m_DomainTGentor(m_valueRange);
- value.y = m_DomainTGentor(m_valueRange);
+ value.x = m_DomainTGentor(m_valueRange);
+ value.y = m_DomainTGentor(m_valueRange);
};
}} // namespace itl boost
Modified: sandbox/itl/libs/validate/example/labat_polygon_/polygon_gentor.hpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_polygon_/polygon_gentor.hpp (original)
+++ sandbox/itl/libs/validate/example/labat_polygon_/polygon_gentor.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -56,11 +56,11 @@
DomainTD key, first;
- if(m_sampleSize == 0)
- return;
+ if(m_sampleSize == 0)
+ return;
- m_domainGentor->some(first);
- x.push_back(first);
+ m_domainGentor->some(first);
+ x.push_back(first);
for(int i=1; i<m_sampleSize; i++)
{
@@ -77,8 +77,8 @@
m_sample.push_back(key);
}
- if(m_sampleSize > 1 && !(*x.rbegin() == first))
- x.push_back(first);
+ if(m_sampleSize > 1 && !(*x.rbegin() == first))
+ x.push_back(first);
}
@@ -150,11 +150,11 @@
DomainTD key, first;
- if(m_sampleSize == 0)
- return;
+ if(m_sampleSize == 0)
+ return;
- m_domainGentor->some(first);
- x.push_back(first);
+ m_domainGentor->some(first);
+ x.push_back(first);
for(int i=1; i<m_sampleSize; i++)
{
@@ -172,8 +172,8 @@
m_sample.push_back(key);
}
- if(m_sampleSize > 1)
- x.push_back(first);
+ if(m_sampleSize > 1)
+ x.push_back(first);
}
Modified: sandbox/itl/libs/validate/example/labat_polygon_/polygon_laws.hpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_polygon_/polygon_laws.hpp (original)
+++ sandbox/itl/libs/validate/example/labat_polygon_/polygon_laws.hpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -49,16 +49,16 @@
bool holds()
{
- using namespace boost::polygon;
- using namespace boost::polygon::operators;
+ using namespace boost::polygon;
+ using namespace boost::polygon::operators;
Type value_a = this->template getInputValue<operand_a>();
Type value_b = this->template getInputValue<operand_b>();
- Type left = value_a;
- boost::polygon::operators::operator+=(left, value_b);
- Type right = value_b;
- boost::polygon::operators::operator+=(right, value_a);
+ Type left = value_a;
+ boost::polygon::operators::operator+=(left, value_b);
+ Type right = value_b;
+ boost::polygon::operators::operator+=(right, value_a);
this->template setOutputValue<lhs_result>(left);
this->template setOutputValue<rhs_result>(right);
@@ -68,13 +68,13 @@
bool debug_holds()
{
- // If law violations are found, this function is called
- // for the smallest violated law instance.
- // You may replace the call of
- // holds();
- // by your own code that is providing additional debugging
- // information.
- return holds();
+ // If law violations are found, this function is called
+ // for the smallest violated law instance.
+ // You may replace the call of
+ // holds();
+ // by your own code that is providing additional debugging
+ // information.
+ return holds();
}
};
@@ -83,9 +83,9 @@
template <typename Type> //Type can be more than one parameter for mixed laws with different types
class PolygonSymmetricDifference
: public Law<PolygonSymmetricDifference<Type>,
- // Input type list Result type list
- // Types of the variables Tpyes of the righthand and the lefthand side.
- // in a law Can be more, if you want to see interim results.
+ // Input type list Result type list
+ // Types of the variables Tpyes of the righthand and the lefthand side.
+ // in a law Can be more, if you want to see interim results.
LOKI_TYPELIST_2(Type,Type), LOKI_TYPELIST_2(Type,Type)>
{
// (a+b) - (a&b) == (a-b) + (b-a)
@@ -93,7 +93,7 @@
//Output = (sum_lhs, sum_rhs)
public:
- // These are descriptive informations to create readable output.
+ // These are descriptive informations to create readable output.
std::string name()const { return "Polygon Symmetric Difference"; }
std::string formula()const { return "(a+b) - (a&b) == (a-b) + (b-a)"; }
@@ -104,24 +104,24 @@
public:
- // Define a size measure for the laws input variables. According to
- // this size the smallest law instances are collected if violations occur.
+ // Define a size measure for the laws input variables. According to
+ // this size the smallest law instances are collected if violations occur.
size_t size()const
{
return value_size<Type>::apply(this->template getInputValue<operand_a>())+
value_size<Type>::apply(this->template getInputValue<operand_b>());
}
- // This function has to be coded to test the validity of a law instance.
+ // This function has to be coded to test the validity of a law instance.
bool holds()
{
- using namespace boost::polygon;
- using namespace boost::polygon::operators;
+ using namespace boost::polygon;
+ using namespace boost::polygon::operators;
- // There are predifined constants operand_a, _b, ..., lhs_reult, rhs_result in the base class.
- //std::cout << this->template getInputValue<operand_a>().as_string() << std::endl;
+ // There are predifined constants operand_a, _b, ..., lhs_reult, rhs_result in the base class.
+ //std::cout << this->template getInputValue<operand_a>().as_string() << std::endl;
- // --- left hand side ------------------------
+ // --- left hand side ------------------------
Type a_plus_b = this->template getInputValue<operand_a>();
boost::polygon::operators::operator+=(a_plus_b, this->template getInputValue<operand_b>());
@@ -141,7 +141,7 @@
Type rhs = a_minus_b;
boost::polygon::operators::operator+=(rhs, b_minus_a);
- // Set the output variables of this law instance.
+ // Set the output variables of this law instance.
this->template setOutputValue<lhs_result>(lhs);
this->template setOutputValue<rhs_result>(rhs);
@@ -150,13 +150,13 @@
bool debug_holds()
{
- // If law violations are found, this function is called
- // for the smallest violated law instance.
- // You may replace the call of
- // holds();
- // by your own code that is providing additional debugging
- // information.
- return holds();
+ // If law violations are found, this function is called
+ // for the smallest violated law instance.
+ // You may replace the call of
+ // holds();
+ // by your own code that is providing additional debugging
+ // information.
+ return holds();
}
};
Modified: sandbox/itl/libs/validate/example/labat_signed_quantifier_/labat_signed_quantifier.cpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_signed_quantifier_/labat_signed_quantifier.cpp (original)
+++ sandbox/itl/libs/validate/example/labat_signed_quantifier_/labat_signed_quantifier.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -25,6 +25,8 @@
">> Output will be generated in a few seconds\n"
">> terminate by typing <CTRL>C\n"
">> ------------------------------------------------------ <<\n";
+ GentorProfileSgl::it()->set_std_profile(16,1);
+ GentorProfileSgl::it()->report_profile();
validater.validate();
};
Modified: sandbox/itl/libs/validate/example/labat_single_/labat_single.cpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_single_/labat_single.cpp (original)
+++ sandbox/itl/libs/validate/example/labat_single_/labat_single.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -69,21 +69,21 @@
// <itl::interval_map<int, int> > TestLawT;
//LawValidater<TestLawT, RandomGentor> test_law;
- //typedef IntersectsDefined
- // <itl::interval_map<int, int, total_absorber> > TestLawT;
- //LawValidater<TestLawT, RandomGentor> test_law;
-
- //typedef Interinclusion
- // <interval_map<int,int>, interval_set<int> > TestLawT;
- //LawValidater<TestLawT, RandomGentor> test_law;
-
- //typedef Interinclusion
- // <interval_map<int, itl::set<int> >, interval_map<int, itl::set<int> > > TestLawT;
- //LawValidater<TestLawT, RandomGentor> test_law;
-
- typedef AddendInclusion
- <interval_set<int>, itl::interval<int> > TestLawT;
- LawValidater<TestLawT, RandomGentor> test_law;
+ //typedef IntersectsDefined
+ // <itl::interval_map<int, int, total_absorber> > TestLawT;
+ //LawValidater<TestLawT, RandomGentor> test_law;
+
+ //typedef Interinclusion
+ // <interval_map<int,int>, interval_set<int> > TestLawT;
+ //LawValidater<TestLawT, RandomGentor> test_law;
+
+ //typedef Interinclusion
+ // <interval_map<int, itl::set<int> >, interval_map<int, itl::set<int> > > TestLawT;
+ //LawValidater<TestLawT, RandomGentor> test_law;
+
+ typedef AddendInclusion
+ <interval_set<int>, itl::interval<int> > TestLawT;
+ LawValidater<TestLawT, RandomGentor> test_law;
//-----------------------------------------------------------------------------
int test_count = 20000;
Modified: sandbox/itl/libs/validate/example/labat_unsigned_quantifier_/labat_unsigned_quantifier.cpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_unsigned_quantifier_/labat_unsigned_quantifier.cpp (original)
+++ sandbox/itl/libs/validate/example/labat_unsigned_quantifier_/labat_unsigned_quantifier.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -26,6 +26,8 @@
">> Output will be generated in a few seconds\n"
">> terminate by typing <CTRL>C\n"
">> ------------------------------------------------------ <<\n";
+ GentorProfileSgl::it()->set_std_profile(16,1);
+ GentorProfileSgl::it()->report_profile();
validater.validate();
};
Modified: sandbox/itl/libs/validate/example/labat_val_relations_/labat_val_relations.cpp
==============================================================================
--- sandbox/itl/libs/validate/example/labat_val_relations_/labat_val_relations.cpp (original)
+++ sandbox/itl/libs/validate/example/labat_val_relations_/labat_val_relations.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -24,6 +24,8 @@
">> Output will be generated in a few seconds\n"
">> terminate by typing <CTRL>C\n"
">> ------------------------------------------------------ <<\n";
+ GentorProfileSgl::it()->set_std_profile(20,1);
+ GentorProfileSgl::it()->report_profile();
validater.validate();
};
Modified: sandbox/itl/libs/validate/src/gentor/gentorprofile.cpp
==============================================================================
--- sandbox/itl/libs/validate/src/gentor/gentorprofile.cpp (original)
+++ sandbox/itl/libs/validate/src/gentor/gentorprofile.cpp 2009-09-04 17:27:37 EDT (Fri, 04 Sep 2009)
@@ -110,8 +110,8 @@
void GentorProfile::set_polygon_profile(int max_polygon_set_size, int max_polygon_size, int min_coord, int max_coord)
{
- int factor = 1;
- int unit = max_polygon_set_size+1;
+ int factor = 1;
+ int unit = max_polygon_set_size+1;
int value = unit*factor;
_unit = unit;
_scaling = factor;
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk