summaryrefslogtreecommitdiff
path: root/build/Bonmin/include/coin/CoinDistance.hpp
blob: acaa90882c8b8795d18d8544f9b6c1e4ea3774bc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/* $Id: CoinDistance.hpp 1372 2011-01-03 23:31:00Z lou $ */
// Copyright (C) 2000, International Business Machines
// Corporation and others.  All Rights Reserved.
// This code is licensed under the terms of the Eclipse Public License (EPL).

#ifndef CoinDistance_H
#define CoinDistance_H

#include <iterator>

//-------------------------------------------------------------------
//
// Attempt to provide an std::distance function
// that will work on multiple platforms
//
//-------------------------------------------------------------------

/** CoinDistance

This is the Coin implementation of the std::function that is 
designed to work on multiple platforms.
*/
template <class ForwardIterator, class Distance>
void coinDistance(ForwardIterator first, ForwardIterator last,
		  Distance& n)
{
#if defined(__SUNPRO_CC)
   n = 0;
   std::distance(first,last,n);
#else
   n = std::distance(first,last);
#endif
}

template <class ForwardIterator>
size_t coinDistance(ForwardIterator first, ForwardIterator last)
{
   size_t retVal;
#if defined(__SUNPRO_CC)
   retVal = 0;
   std::distance(first,last,retVal);
#else
   retVal = std::distance(first,last);
#endif
  return retVal;
}

#endif