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 
9 namespace 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  }
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: object.hpp:44
Definition: advanced_ownership.hpp:5
jsize GetStringLength(JNIEnv &env, jstring &string)
Definition: functions.hpp:377
jstring & NewString(JNIEnv &env, const char16_t *chars, jsize len)
Definition: functions.hpp:364
Definition: unique.hpp:38
Definition: make.hpp:5
std::vector< T > MakeAnything(ThingToMake< std::vector< T >>, JNIEnv &env, const Array< T > &array)
Definition: array.hpp:114
void GetStringRegion(JNIEnv &env, jstring &string, jsize start, jsize len, char16_t *buf)
Definition: functions.hpp:423
void NullCheck(JNIEnv &env, T *ptr, const char *message=nullptr)
Definition: npe.hpp:13