blob: d9ea8143ac2fc84da119d102d397fbf39e9bcbef (
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
49
50
51
52
53
54
55
56
57
58
59
|
// file : odb/oracle/details/conversion.hxx
// copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC
// license : GNU GPL v2; see accompanying LICENSE file
#ifndef ODB_ORACLE_DETAILS_CONVERSION_HXX
#define ODB_ORACLE_DETAILS_CONVERSION_HXX
#include <odb/oracle/traits.hxx>
#include <odb/details/meta/answer.hxx>
namespace odb
{
// @@ Revise this.
//
namespace details {}
namespace oracle
{
namespace details
{
using namespace odb::details;
// Detect whether conversion is specified in type_traits.
//
template <typename T>
meta::yes
conversion_p_test (typename type_traits<T>::conversion*);
template <typename T>
meta::no
conversion_p_test (...);
template <typename T>
struct conversion_p
{
static const bool value =
sizeof (conversion_p_test<T> (0)) == sizeof (meta::yes);
};
template <typename T, bool = conversion_p<T>::value>
struct conversion;
template <typename T>
struct conversion<T, true>
{
static const char* to () {return type_traits<T>::conversion::to ();}
};
template <typename T>
struct conversion<T, false>
{
static const char* to () {return 0;}
};
}
}
}
#endif // ODB_ORACLE_DETAILS_CONVERSION_HXX
|