lime
Lime is a C++ library implementing Open Whisper System Signal protocol
string.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <jni/object.hpp>
4#include <jni/array.hpp>
5#include <jni/make.hpp>
6#include <jni/npe.hpp>
8
9namespace jni
10 {
12
13 inline std::u16string MakeAnything(ThingToMake<std::u16string>, JNIEnv& env, const String& string)
14 {
15 NullCheck(env, string.get());
16 std::u16string result(jni::GetStringLength(env, *string), char16_t());
17 jni::GetStringRegion(env, *string, 0, result);
18 return result;
19 }
20
21 inline std::string MakeAnything(ThingToMake<std::string>, JNIEnv& env, const String& string)
22 {
23 return convertUTF16ToUTF8(Make<std::u16string>(env, string));
24 }
25
26 inline Local<String> MakeAnything(ThingToMake<String>, JNIEnv& env, const std::u16string& string)
27 {
28 return Local<String>(env, &NewString(env, string));
29 }
30
31 inline Local<String> MakeAnything(ThingToMake<String>, JNIEnv& env, const std::string& string)
32 {
33 return Make<String>(env, convertUTF8ToUTF16(string));
34 }
35 }
Definition: object.hpp:45
Definition: unique.hpp:39
Definition: advanced_ownership.hpp:6
std::vector< T > MakeAnything(ThingToMake< std::vector< T > >, JNIEnv &env, const Array< T > &array)
Definition: array.hpp:114
jstring & NewString(JNIEnv &env, const char16_t *chars, jsize len)
Definition: functions.hpp:364
jsize GetStringLength(JNIEnv &env, jstring &string)
Definition: functions.hpp:377
void NullCheck(JNIEnv &env, T *ptr, const char *message=nullptr)
Definition: npe.hpp:13
void GetStringRegion(JNIEnv &env, jstring &string, jsize start, jsize len, char16_t *buf)
Definition: functions.hpp:423
std::string convertUTF16ToUTF8(const std::u16string &string)
Definition: string_conversion.hpp:17
std::u16string convertUTF8ToUTF16(const std::string &string)
Definition: string_conversion.hpp:12
Definition: make.hpp:5