MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
jtie_tconv_ptrbyval.hpp
1 /*
2  Copyright 2010 Sun Microsystems, Inc.
3  All rights reserved. Use is subject to license terms.
4 
5  This program is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published by
7  the Free Software Foundation; version 2 of the License.
8 
9  This program is distributed in the hope that it will be useful,
10  but WITHOUT ANY WARRANTY; without even the implied warranty of
11  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  GNU General Public License for more details.
13 
14  You should have received a copy of the GNU General Public License
15  along with this program; if not, write to the Free Software
16  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18 /*
19  * jtie_tconv_ptrbyval.hpp
20  */
21 
22 #ifndef jtie_tconv_ptrbyval_hpp
23 #define jtie_tconv_ptrbyval_hpp
24 
25 #include <jni.h>
26 
27 #include "jtie_tconv.hpp"
28 
29 // ---------------------------------------------------------------------------
30 // Java array <-> C array/pointer type conversions
31 // ---------------------------------------------------------------------------
32 
33 // type deriving from <jtype>Array for mappings with a required/allocated size
34 template< typename J, jsize N >
36  typedef J JA_t;
37  static const jsize length = N;
38 };
39 
40 // wrapper type for BoundedArray mappings for template specialization
41 template< typename J >
42 struct _jtie_j_ArrayMapper : J {
43 };
44 
61 #define JTIE_DEFINE_ARRAY_PTR_TYPE_MAPPING( J, C, T ) \
62  typedef ttrait< J *, C * \
63  > ttrait_##T##_0p_a; \
64  typedef ttrait< J *, const C * \
65  > ttrait_##T##_0cp_a; \
66  typedef ttrait< J *, C * const \
67  > ttrait_##T##_0pc_a; \
68  typedef ttrait< J *, const C * const \
69  > ttrait_##T##_0cpc_a;
70 
87 #define JTIE_DEFINE_ARRAY_PTR_LENGTH1_TYPE_MAPPING( J, C, T ) \
88  typedef ttrait< J *, C *, _jtie_j_ArrayMapper< _jtie_j_BoundedArray< J, 1 > > * \
89  > ttrait_##T##_1p_a; \
90  typedef ttrait< J *, const C *, _jtie_j_ArrayMapper< _jtie_j_BoundedArray< J, 1 > > * \
91  > ttrait_##T##_1cp_a; \
92  typedef ttrait< J *, C * const, _jtie_j_ArrayMapper< _jtie_j_BoundedArray< J, 1 > > * \
93  > ttrait_##T##_1pc_a; \
94  typedef ttrait< J *, const C * const, _jtie_j_ArrayMapper< _jtie_j_BoundedArray< J, 1 > > * \
95  > ttrait_##T##_1cpc_a;
96 
97 // ---------------------------------------------------------------------------
98 
99 #endif // jtie_tconv_ptrbyval_hpp