diff options
author | Lajos Molnar <lajos@google.com> | 2014-08-06 11:32:00 -0700 |
---|---|---|
committer | Lajos Molnar <lajos@google.com> | 2014-08-07 14:23:27 -0700 |
commit | 8accee4f0e94f19866d260be6eecd6c219eb4982 (patch) | |
tree | 99ef44526b372dc6020f995cd78f3b9e3b1ffe58 | |
parent | 3659445a8b71afba9927b9d0d8ac41782278bde5 (diff) | |
download | frameworks_av-8accee4f0e94f19866d260be6eecd6c219eb4982.zip frameworks_av-8accee4f0e94f19866d260be6eecd6c219eb4982.tar.gz frameworks_av-8accee4f0e94f19866d260be6eecd6c219eb4982.tar.bz2 |
stagefright: add AString parceling, and equal/compareIgnoreCase
Bug: 11990470
Change-Id: If43ada5d2e768931f4409e499eaa268edade0500
-rw-r--r-- | include/media/stagefright/foundation/AString.h | 7 | ||||
-rw-r--r-- | media/libstagefright/foundation/AString.cpp | 24 |
2 files changed, 31 insertions, 0 deletions
diff --git a/include/media/stagefright/foundation/AString.h b/include/media/stagefright/foundation/AString.h index 4be3c6d..7c98699 100644 --- a/include/media/stagefright/foundation/AString.h +++ b/include/media/stagefright/foundation/AString.h @@ -18,11 +18,13 @@ #define A_STRING_H_ +#include <utils/Errors.h> #include <sys/types.h> namespace android { struct String8; +struct Parcel; struct AString { AString(); @@ -77,7 +79,9 @@ struct AString { bool operator>(const AString &other) const; int compare(const AString &other) const; + int compareIgnoreCase(const AString &other) const; + bool equalsIgnoreCase(const AString &other) const; bool startsWith(const char *prefix) const; bool endsWith(const char *suffix) const; bool startsWithIgnoreCase(const char *prefix) const; @@ -85,6 +89,9 @@ struct AString { void tolower(); + static AString FromParcel(const Parcel &parcel); + status_t writeToParcel(Parcel *parcel) const; + private: static const char *kEmptyString; diff --git a/media/libstagefright/foundation/AString.cpp b/media/libstagefright/foundation/AString.cpp index 894f65c..1befef4 100644 --- a/media/libstagefright/foundation/AString.cpp +++ b/media/libstagefright/foundation/AString.cpp @@ -20,6 +20,7 @@ #include <stdlib.h> #include <string.h> +#include <binder/Parcel.h> #include <utils/String8.h> #include "ADebug.h" #include "AString.h" @@ -306,6 +307,14 @@ int AString::compare(const AString &other) const { return strcmp(mData, other.mData); } +int AString::compareIgnoreCase(const AString &other) const { + return strcasecmp(mData, other.mData); +} + +bool AString::equalsIgnoreCase(const AString &other) const { + return compareIgnoreCase(other) == 0; +} + void AString::tolower() { makeMutable(); @@ -342,6 +351,21 @@ bool AString::endsWithIgnoreCase(const char *suffix) const { return !strcasecmp(mData + mSize - suffixLen, suffix); } +// static +AString AString::FromParcel(const Parcel &parcel) { + size_t size = static_cast<size_t>(parcel.readInt32()); + return AString(static_cast<const char *>(parcel.readInplace(size)), size); +} + +status_t AString::writeToParcel(Parcel *parcel) const { + CHECK_LE(mSize, INT32_MAX); + status_t err = parcel->writeInt32(mSize); + if (err == OK) { + err = parcel->write(mData, mSize); + } + return err; +} + AString StringPrintf(const char *format, ...) { va_list ap; va_start(ap, format); |