19 #include "libmesh/coupling_matrix.h" 
   26   const std::size_t max_size = std::numeric_limits<std::size_t>::max();
 
   28   rc_type::iterator start_range = this->
_ranges.begin();
 
   30   rc_type::const_iterator     other_range = other.
_ranges.begin();
 
   31   const rc_type::const_iterator other_end = other.
_ranges.end();
 
   33   for (; other_range != other_end; ++other_range)
 
   35       std::size_t other_range_start = other_range->first;
 
   36       std::size_t other_range_end = other_range->second;
 
   44       rc_type::iterator lb =
 
   45         std::upper_bound (start_range, this->
_ranges.end(),
 
   46                           std::make_pair(other_range_start, max_size));
 
   62       const std::size_t lastloc  = lb->second;
 
   63       libmesh_assert_less_equal(lb->first, lastloc);
 
   64       libmesh_assert_less_equal(lb->first, other_range_start);
 
   68         CouplingMatrix::rc_type::const_iterator 
next = lb;
 
   73             libmesh_assert_greater(
next->first, lastloc+1);
 
   78       CouplingMatrix::rc_type::iterator 
next = lb;
 
   83       if (other_range_start <= lastloc)
 
   84         lb->second = other_range_end;
 
   89         start_range = lb = this->
_ranges.insert
 
   90           (next, std::make_pair(other_range_start, other_range_end));
 
   98       for (
const std::size_t nextloc =
 
  100              std::numeric_limits<std::size_t>::max() : 
next->first;
 
  101            nextloc <= lb->second; ++
next)
 
  105           libmesh_assert_greater(nextloc, lastloc+1);
 
  107           lb->second = std::max(lb->second, 
next->second);
 
  110       CouplingMatrix::rc_type::iterator oldnext = lb;
 
  119   for (; other_range != other_end; ++other_range)
 
  120     this->
_ranges.push_back(*other_range);