Advertisement
Guest User

Untitled

a guest
Mar 28th, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.43 KB | None | 0 0
  1. #include <jni.h>
  2. #include <string>
  3. #include <vector>
  4.  
  5. long fib(long n)
  6. {
  7. if (n < 3)
  8. return 1;
  9. return fib(n-1) + fib(n-2);
  10. }
  11.  
  12. std::string toUpper(std::string str)
  13. {
  14. std::string result = str;
  15.  
  16. for(char &c : result)
  17. {
  18. if (c >= 'a' && c <= 'z')
  19. c = c - 'a' + 'A';
  20. }
  21.  
  22. return result;
  23. }
  24.  
  25.  
  26. extern "C"
  27. {
  28. JNIEXPORT jstring JNICALL
  29. Java_com_example_adam_lab3_MainActivity_stringFromJNI(
  30. JNIEnv *env,
  31. jobject /* this */) {
  32. std::string hello = "Hello from C++";
  33. return env->NewStringUTF(hello.c_str());
  34. };
  35.  
  36. JNIEXPORT jlong JNICALL Java_com_example_adam_lab3_MainActivity_fib
  37. (JNIEnv *env, jclass jc, jlong n)
  38. {
  39. return fib(n);
  40. };
  41.  
  42. JNIEXPORT jstring JNICALL Java_com_example_adam_lab3_MainActivity_toUpper
  43. (JNIEnv *env, jclass jc, jstring jStr)
  44. {
  45. if(!jStr)
  46. return env->NewStringUTF("");
  47.  
  48. std::vector<char> charsCode;
  49. const jchar *chars = env->GetStringChars(jStr, NULL);
  50. jsize len = env->GetStringLength(jStr);
  51. jsize i;
  52.  
  53. for( i=0;i<len; i++){
  54. int code = (int)chars[i];
  55. charsCode.push_back( code );
  56. }
  57. env->ReleaseStringChars(jStr, chars);
  58.  
  59. return env->NewStringUTF(toUpper(std::string(charsCode.begin(), charsCode.end())).c_str());
  60. };
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement