From 5c1954c84384a5965c9d718bc43ca1fb96ad946b Mon Sep 17 00:00:00 2001 From: Lioncash Date: Mon, 30 Jan 2023 13:24:53 -0500 Subject: [PATCH] AndroidCommon: Make use of std::string_view where applicable Several of these can take a string_view rather than needing to specifically use std::string. --- .../Android/jni/AndroidCommon/AndroidCommon.cpp | 16 ++++++++-------- .../Android/jni/AndroidCommon/AndroidCommon.h | 17 +++++++++-------- 2 files changed, 17 insertions(+), 16 deletions(-) diff --git a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp index 204c495d5d..00526cc0be 100644 --- a/Source/Android/jni/AndroidCommon/AndroidCommon.cpp +++ b/Source/Android/jni/AndroidCommon/AndroidCommon.cpp @@ -25,7 +25,7 @@ std::string GetJString(JNIEnv* env, jstring jstr) return converted_string; } -jstring ToJString(JNIEnv* env, const std::string& str) +jstring ToJString(JNIEnv* env, std::string_view str) { const std::u16string converted_string = UTF8ToUTF16(str); return env->NewString(reinterpret_cast(converted_string.data()), @@ -53,7 +53,7 @@ jobjectArray VectorToJStringArray(JNIEnv* env, const std::vector& v return VectorToJObjectArray(env, vector, IDCache::GetStringClass(), ToJString); } -bool IsPathAndroidContent(const std::string& uri) +bool IsPathAndroidContent(std::string_view uri) { return uri.starts_with("content://"); } @@ -97,7 +97,7 @@ std::string OpenModeToAndroid(std::ios_base::openmode mode) return result; } -int OpenAndroidContent(const std::string& uri, const std::string& mode) +int OpenAndroidContent(std::string_view uri, std::string_view mode) { JNIEnv* env = IDCache::GetEnvForThread(); @@ -113,7 +113,7 @@ int OpenAndroidContent(const std::string& uri, const std::string& mode) return result; } -bool DeleteAndroidContent(const std::string& uri) +bool DeleteAndroidContent(std::string_view uri) { JNIEnv* env = IDCache::GetEnvForThread(); @@ -127,7 +127,7 @@ bool DeleteAndroidContent(const std::string& uri) return static_cast(result); } -jlong GetAndroidContentSizeAndIsDirectory(const std::string& uri) +jlong GetAndroidContentSizeAndIsDirectory(std::string_view uri) { JNIEnv* env = IDCache::GetEnvForThread(); @@ -141,7 +141,7 @@ jlong GetAndroidContentSizeAndIsDirectory(const std::string& uri) return result; } -std::string GetAndroidContentDisplayName(const std::string& uri) +std::string GetAndroidContentDisplayName(std::string_view uri) { JNIEnv* env = IDCache::GetEnvForThread(); @@ -162,7 +162,7 @@ std::string GetAndroidContentDisplayName(const std::string& uri) return result; } -std::vector GetAndroidContentChildNames(const std::string& uri) +std::vector GetAndroidContentChildNames(std::string_view uri) { JNIEnv* env = IDCache::GetEnvForThread(); @@ -179,7 +179,7 @@ std::vector GetAndroidContentChildNames(const std::string& uri) return result; } -std::vector DoFileSearchAndroidContent(const std::string& directory, +std::vector DoFileSearchAndroidContent(std::string_view directory, const std::vector& extensions, bool recursive) { diff --git a/Source/Android/jni/AndroidCommon/AndroidCommon.h b/Source/Android/jni/AndroidCommon/AndroidCommon.h index bb300efc9f..733d2882f6 100644 --- a/Source/Android/jni/AndroidCommon/AndroidCommon.h +++ b/Source/Android/jni/AndroidCommon/AndroidCommon.h @@ -5,12 +5,13 @@ #include #include +#include #include #include std::string GetJString(JNIEnv* env, jstring jstr); -jstring ToJString(JNIEnv* env, const std::string& str); +jstring ToJString(JNIEnv* env, std::string_view str); std::vector JStringArrayToVector(JNIEnv* env, jobjectArray array); jobjectArray VectorToJStringArray(JNIEnv* env, const std::vector& vector); @@ -29,30 +30,30 @@ jobjectArray VectorToJObjectArray(JNIEnv* env, const std::vector& vector, jcl } // Returns true if the given path should be opened as Android content instead of a normal file. -bool IsPathAndroidContent(const std::string& uri); +bool IsPathAndroidContent(std::string_view uri); // Turns a C/C++ style mode (e.g. "rb") into one which can be used with OpenAndroidContent. std::string OpenModeToAndroid(std::string mode); std::string OpenModeToAndroid(std::ios_base::openmode mode); // Opens a given file and returns a file descriptor. -int OpenAndroidContent(const std::string& uri, const std::string& mode); +int OpenAndroidContent(std::string_view uri, std::string_view mode); // Deletes a given file. -bool DeleteAndroidContent(const std::string& uri); +bool DeleteAndroidContent(std::string_view uri); // Returns -1 if not found, -2 if directory, file size otherwise. -jlong GetAndroidContentSizeAndIsDirectory(const std::string& uri); +jlong GetAndroidContentSizeAndIsDirectory(std::string_view uri); // An unmangled URI (one which the C++ code has not appended anything to) can't be relied on // to contain a file name at all. If a file name is desired, this function is the most reliable // way to get it, but the display name is not guaranteed to always actually be like a file name. // An empty string will be returned for files which do not exist. -std::string GetAndroidContentDisplayName(const std::string& uri); +std::string GetAndroidContentDisplayName(std::string_view uri); // Returns the display names of all children of a directory, non-recursively. -std::vector GetAndroidContentChildNames(const std::string& uri); +std::vector GetAndroidContentChildNames(std::string_view uri); -std::vector DoFileSearchAndroidContent(const std::string& directory, +std::vector DoFileSearchAndroidContent(std::string_view directory, const std::vector& extensions, bool recursive);