MySQL 5.6.14 Source Code Document
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
jtie_tconv_ptrbybb.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_ptrbybb.hpp
20  */
21 
22 #ifndef jtie_tconv_ptrbybb_hpp
23 #define jtie_tconv_ptrbybb_hpp
24 
25 #include <jni.h>
26 
27 #include "jtie_tconv.hpp"
28 
29 // ---------------------------------------------------------------------------
30 // Java ByteBuffer <-> C array/pointer type conversions
31 // ---------------------------------------------------------------------------
32 
33 // root type for ByteBuffer argument/result mappings
34 struct _jtie_j_n_ByteBuffer : _jobject {
35  // no need for a class name member as for user-defined classes
36  //static const char * const java_internal_class_name;
37 };
39 
40 // subtype for ByteBuffer mappings with a required/allocated buffer size
41 template< jlong N >
43  static const jlong capacity = N;
44 };
45 
46 // wrapper type for BoundedByteBuffer mappings for template specialization
47 template< typename J >
49 
65 #define JTIE_DEFINE_BYTEBUFFER_PTR_TYPE_MAPPING( C, T ) \
66  typedef ttrait< jobject, C *, jtie_j_n_ByteBuffer \
67  > ttrait_##T##_0p_bb; \
68  typedef ttrait< jobject, const C *, jtie_j_n_ByteBuffer \
69  > ttrait_##T##_0cp_bb; \
70  typedef ttrait< jobject, C * const, jtie_j_n_ByteBuffer \
71  > ttrait_##T##_0pc_bb; \
72  typedef ttrait< jobject, const C * const, jtie_j_n_ByteBuffer \
73  > ttrait_##T##_0cpc_bb;
74 
75 JTIE_DEFINE_BYTEBUFFER_PTR_TYPE_MAPPING(void, void)
76 
77 
92 #define JTIE_DEFINE_BYTEBUFFER_PTR_LENGTH1_TYPE_MAPPING( C, T ) \
93  typedef ttrait< jobject, C *, _jtie_j_n_ByteBufferMapper< _jtie_j_n_BoundedByteBuffer< sizeof(C) > > * \
94  > ttrait_##T##_1p_bb; \
95  typedef ttrait< jobject, const C *, _jtie_j_n_ByteBufferMapper< _jtie_j_n_BoundedByteBuffer< sizeof(C) > > * \
96  > ttrait_##T##_1cp_bb; \
97  typedef ttrait< jobject, C * const, _jtie_j_n_ByteBufferMapper< _jtie_j_n_BoundedByteBuffer< sizeof(C) > > * \
98  > ttrait_##T##_1pc_bb; \
99  typedef ttrait< jobject, const C * const, _jtie_j_n_ByteBufferMapper< _jtie_j_n_BoundedByteBuffer< sizeof(C) > > * \
100  > ttrait_##T##_1cpc_bb;
101 
102 // XXX cleanup (or remove corresponding unit test cases)
103 #if 1
104 // aliases for: <[const-]void>_<[const-]pointer>_<ByteBuffer<size=1>>
109 #endif
110 
111 // ---------------------------------------------------------------------------
112 
113 #endif // jtie_tconv_ptrbybb_hpp