#ifndef __SELLA_NMS_WRAPPER_ALGORITHM__
#define __SELLA_NMS_WRAPPER_ALGORITHM__

#include "defaults.h"

#ifdef HAVE_STLPORT
	#include <algorithm>
	namespace sella_nms { using namespace stlport; };
#else
	#ifdef __GNUC__
		#if __GNUC__ < 3
			#include <algorithm>
		#else
			#include <algorithm>
			#if __GNUC__ == 3 && __GNUC_MINOR__ == 0 // gcc 3.0
				namespace sella_nms { using std::algorithm; }
			#else // gcc 3.1+
				namespace sella_nms { using namespace std; }
			#endif
		#endif
	#elif defined __INTEL_COMPILER
		#include <algorithm>
		namespace sella_nms {
			using std::iter_swap;
			using std::for_each;
			using std::find;
			using std::find_if;
			using std::adjacent_find;
			using std::count;
			using std::count_if;
			using std::search;
			using std::search_n;
			using std::swap_ranges;
			using std::transform;
			using std::replace;
			using std::replace_if;
			using std::replace_copy;
			using std::replace_copy_if;
			using std::generate;
			using std::generate_n;
			using std::remove;
			using std::remove_if;
			using std::remove_copy;
			using std::remove_copy_if;
			using std::unique;
			using std::unique_copy;
			using std::reverse;
			using std::reverse_copy;
			using std::rotate;
			using std::rotate_copy;
			using std::random_shuffle;
			using std::partition;
			using std::stable_partition;
			using std::sort;
			using std::stable_sort;
			using std::partial_sort;
			using std::partial_sort_copy;
			using std::nth_element;
			using std::lower_bound;
			using std::upper_bound;
			using std::equal_range;
			using std::binary_search;
			using std::merge;
			using std::inplace_merge;
			using std::includes;
			using std::set_union;
			using std::set_intersection;
			using std::set_difference;
			using std::set_symmetric_difference;
			using std::min_element;
			using std::max_element;
			using std::next_permutation;
			using std::prev_permutation;
			using std::find_first_of;
			using std::find_end;
			using std::push_heap;
			using std::pop_heap;
			using std::make_heap;
			using std::sort_heap;
		}
	#else // other compiler
		#include <algorithm>
		namespace sella_nms { using namespace std; }
	#endif
#endif

#endif
