Add SkString.contains()
Review URL: https://codereview.appspot.com/6130046
git-svn-id: http://skia.googlecode.com/svn/trunk@3781 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/core/SkString.h b/include/core/SkString.h
index 3fa367b..3dd89a5 100644
--- a/include/core/SkString.h
+++ b/include/core/SkString.h
@@ -15,9 +15,18 @@
/* Some helper functions for C strings
*/
-bool SkStrStartsWith(const char string[], const char prefix[]);
+static bool SkStrStartsWith(const char string[], const char prefix[]) {
+ SkASSERT(string);
+ SkASSERT(prefix);
+ return !strncmp(string, prefix, strlen(prefix));
+}
bool SkStrEndsWith(const char string[], const char suffix[]);
int SkStrStartsWithOneOf(const char string[], const char prefixes[]);
+static bool SkStrContains(const char string[], const char substring[]) {
+ SkASSERT(string);
+ SkASSERT(substring);
+ return (NULL != strstr(string, substring));
+}
#define SkStrAppendS32_MaxSize 11
char* SkStrAppendS32(char buffer[], int32_t);
@@ -81,6 +90,9 @@
bool endsWith(const char suffix[]) const {
return SkStrEndsWith(fRec->data(), suffix);
}
+ bool contains(const char substring[]) const {
+ return SkStrContains(fRec->data(), substring);
+ }
friend bool operator==(const SkString& a, const SkString& b) {
return a.equals(b);
diff --git a/src/core/SkString.cpp b/src/core/SkString.cpp
index 4658ff8..0e0318b 100644
--- a/src/core/SkString.cpp
+++ b/src/core/SkString.cpp
@@ -36,12 +36,6 @@
///////////////////////////////////////////////////////////////////////////////
-bool SkStrStartsWith(const char string[], const char prefix[]) {
- SkASSERT(string);
- SkASSERT(prefix);
- return !strncmp(string, prefix, strlen(prefix));
-}
-
bool SkStrEndsWith(const char string[], const char suffix[]) {
SkASSERT(string);
SkASSERT(suffix);
diff --git a/tests/StringTest.cpp b/tests/StringTest.cpp
index 52a038d..ebf7006 100644
--- a/tests/StringTest.cpp
+++ b/tests/StringTest.cpp
@@ -56,6 +56,19 @@
REPORTER_ASSERT(reporter, a.equals("hello"));
REPORTER_ASSERT(reporter, !a.equals("help"));
+ REPORTER_ASSERT(reporter, a.startsWith("hell"));
+ REPORTER_ASSERT(reporter, !a.startsWith( "ell"));
+ REPORTER_ASSERT(reporter, a.startsWith(""));
+ REPORTER_ASSERT(reporter, a.endsWith("llo"));
+ REPORTER_ASSERT(reporter, !a.endsWith("ll" ));
+ REPORTER_ASSERT(reporter, a.endsWith(""));
+ REPORTER_ASSERT(reporter, a.contains("he"));
+ REPORTER_ASSERT(reporter, a.contains("ll"));
+ REPORTER_ASSERT(reporter, a.contains("lo"));
+ REPORTER_ASSERT(reporter, a.contains("hello"));
+ REPORTER_ASSERT(reporter, !a.contains("hellohello"));
+ REPORTER_ASSERT(reporter, a.contains(""));
+
SkString e(a);
SkString f("hello");
SkString g("helloz", 5);