Nativehelper: Export header-only version of helpers

Export a version of the nativehelper helpers that doesn't have
a dependency on the libnativehelper library. Instead, provide an
inline function for null throw.

Test: m
Change-Id: Idfab8809873d54db824c8bc089f003265fe5a9b9
diff --git a/include/nativehelper/ScopedStringChars.h b/include/nativehelper/ScopedStringChars.h
index 688291d..59c405c 100644
--- a/include/nativehelper/ScopedStringChars.h
+++ b/include/nativehelper/ScopedStringChars.h
@@ -18,55 +18,6 @@
 #define SCOPED_STRING_CHARS_H_included
 
 #include "JNIHelp.h"
-
-// A smart pointer that provides access to a jchar* given a JNI jstring.
-// Unlike GetStringChars, we throw NullPointerException rather than abort if
-// passed a null jstring, and get will return NULL.
-// This makes the correct idiom very simple:
-//
-//   ScopedStringChars name(env, java_name);
-//   if (name.get() == NULL) {
-//     return NULL;
-//   }
-class ScopedStringChars {
- public:
-  ScopedStringChars(JNIEnv* env, jstring s) : env_(env), string_(s), size_(0) {
-    if (s == NULL) {
-      chars_ = NULL;
-      jniThrowNullPointerException(env, NULL);
-    } else {
-      chars_ = env->GetStringChars(string_, NULL);
-      if (chars_ != NULL) {
-        size_ = env->GetStringLength(string_);
-      }
-    }
-  }
-
-  ~ScopedStringChars() {
-    if (chars_ != NULL) {
-      env_->ReleaseStringChars(string_, chars_);
-    }
-  }
-
-  const jchar* get() const {
-    return chars_;
-  }
-
-  size_t size() const {
-    return size_;
-  }
-
-  const jchar& operator[](size_t n) const {
-    return chars_[n];
-  }
-
- private:
-  JNIEnv* const env_;
-  const jstring string_;
-  const jchar* chars_;
-  size_t size_;
-
-  DISALLOW_COPY_AND_ASSIGN(ScopedStringChars);
-};
+#include <nativehelper/scoped_string_chars.h>
 
 #endif  // SCOPED_STRING_CHARS_H_included