/usr/include/dlib/is_kind.h is in libdlib-dev 18.18-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | // Copyright (C) 2007 Davis E. King (davis@dlib.net)
// License: Boost Software License See LICENSE.txt for the full license.
#ifndef DLIB_IS_KINd_H_
#define DLIB_IS_KINd_H_
#include <vector>
namespace dlib
{
/*!
This file contains a set of templates that enable you to determine if
a given type implements an abstract interface defined in one of the
dlib *_abstract.h files.
!*/
// ----------------------------------------------------------------------------------------
struct default_is_kind_value { static const bool value = false; };
// ----------------------------------------------------------------------------------------
template <typename T>
struct is_graph : public default_is_kind_value
{
/*!
- if (T is an implementation of graph/graph_kernel_abstract.h) then
- is_graph<T>::value == true
- else
- is_graph<T>::value == false
!*/
};
// ----------------------------------------------------------------------------------------
template <typename T>
struct is_directed_graph : public default_is_kind_value
{
/*!
- if (T is an implementation of directed_graph/directed_graph_kernel_abstract.h) then
- is_directed_graph<T>::value == true
- else
- is_directed_graph<T>::value == false
!*/
};
// ----------------------------------------------------------------------------------------
template <typename T, typename helper = void>
struct is_matrix : public default_is_kind_value
{
/*!
- if (T is some kind of matrix expression from the matrix/matrix_exp_abstract.h component) then
- is_matrix<T>::value == true
- else
- is_matrix<T>::value == false
!*/
// Don't set the helper to anything. Just let it be void.
ASSERT_ARE_SAME_TYPE(helper,void);
};
// ----------------------------------------------------------------------------------------
template <typename T>
struct is_array2d : public default_is_kind_value
{
/*!
- if (T is an implementation of array2d/array2d_kernel_abstract.h) then
- is_array2d<T>::value == true
- else
- is_array2d<T>::value == false
!*/
};
// ----------------------------------------------------------------------------------------
template <typename T>
struct is_array : public default_is_kind_value
{
/*!
- if (T is an implementation of array/array_kernel_abstract.h) then
- is_array<T>::value == true
- else
- is_array<T>::value == false
!*/
};
// ----------------------------------------------------------------------------------------
template <typename T>
struct is_std_vector : public default_is_kind_value
{
/*!
- if (T is an implementation of the standard C++ std::vector object) then
- is_std_vector<T>::value == true
- else
- is_std_vector<T>::value == false
!*/
};
// ----------------------------------------------------------------------------------------
template <typename T>
struct is_pair : public default_is_kind_value
{
/*!
- if (T is a std::pair object) then
- is_std_vector<T>::value == true
- else
- is_std_vector<T>::value == false
!*/
};
// ----------------------------------------------------------------------------------------
template <typename T>
struct is_rand : public default_is_kind_value
{
/*!
- if (T is an implementation of rand/rand_kernel_abstract.h) then
- is_rand<T>::value == true
- else
- is_rand<T>::value == false
!*/
};
// ----------------------------------------------------------------------------------------
template <typename T>
struct is_config_reader : public default_is_kind_value
{
/*!
- if (T is an implementation of config_reader/config_reader_kernel_abstract.h) then
- is_config_reader<T>::value == true
- else
- is_config_reader<T>::value == false
!*/
};
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
// Implementation details
// ----------------------------------------------------------------------------------------
// ----------------------------------------------------------------------------------------
template <typename T, typename alloc>
struct is_std_vector<std::vector<T,alloc> > { const static bool value = true; };
template <typename T> struct is_std_vector<T&> { const static bool value = is_std_vector<T>::value; };
template <typename T> struct is_std_vector<const T&>{ const static bool value = is_std_vector<T>::value; };
template <typename T> struct is_std_vector<const T> { const static bool value = is_std_vector<T>::value; };
// ----------------------------------------------------------------------------------------
template <typename T, typename U>
struct is_pair<std::pair<T,U> > { const static bool value = true; };
// ----------------------------------------------------------------------------------------
}
#endif // DLIB_IS_KINd_H_
|