1/*
2 Copyright 2008 Intel Corporation
3
4 Use, modification and distribution are subject to the Boost Software License,
5 Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6 http://www.boost.org/LICENSE_1_0.txt).
7*/
8#ifndef BOOST_POLYGON_RECTANGLE_TRAITS_HPP
9#define BOOST_POLYGON_RECTANGLE_TRAITS_HPP
10
11#include "isotropy.hpp"
12
13namespace boost { namespace polygon{
14
15 template <typename T, typename enable = gtl_yes>
16 struct rectangle_traits {};
17 template <typename T>
18 struct rectangle_traits<T, gtl_no> {};
19
20 template <typename T>
21 struct rectangle_traits<T, typename gtl_same_type<typename T::interval_type, typename T::interval_type>::type> {
22 typedef typename T::coordinate_type coordinate_type;
23 typedef typename T::interval_type interval_type;
24 static inline interval_type get(const T& rectangle, orientation_2d orient) {
25 return rectangle.get(orient); }
26 };
27
28 template <typename T>
29 struct rectangle_mutable_traits {
30 template <typename T2>
31 static inline void set(T& rectangle, orientation_2d orient, const T2& interval) {
32 rectangle.set(orient, interval); }
33 template <typename T2, typename T3>
34 static inline T construct(const T2& interval_horizontal,
35 const T3& interval_vertical) {
36 return T(interval_horizontal, interval_vertical); }
37 };
38}
39}
40#endif
41

source code of boost/boost/polygon/rectangle_traits.hpp