summaryrefslogtreecommitdiff
path: root/src/mongo/util/stringutils.cpp
diff options
context:
space:
mode:
authorMark Benvenuto <mark.benvenuto@mongodb.com>2015-06-20 00:22:50 -0400
committerMark Benvenuto <mark.benvenuto@mongodb.com>2015-06-20 10:56:02 -0400
commit9c2ed42daa8fbbef4a919c21ec564e2db55e8d60 (patch)
tree3814f79c10d7b490948d8cb7b112ac1dd41ceff1 /src/mongo/util/stringutils.cpp
parent01965cf52bce6976637ecb8f4a622aeb05ab256a (diff)
downloadmongo-9c2ed42daa8fbbef4a919c21ec564e2db55e8d60.tar.gz
SERVER-18579: Clang-Format - reformat code, no comment reflow
Diffstat (limited to 'src/mongo/util/stringutils.cpp')
-rw-r--r--src/mongo/util/stringutils.cpp238
1 files changed, 121 insertions, 117 deletions
diff --git a/src/mongo/util/stringutils.cpp b/src/mongo/util/stringutils.cpp
index e8a4750032d..471a620e381 100644
--- a/src/mongo/util/stringutils.cpp
+++ b/src/mongo/util/stringutils.cpp
@@ -33,148 +33,152 @@
namespace mongo {
- using std::string;
- using std::vector;
-
- void splitStringDelim( const string& str , vector<string>* res , char delim ) {
- if ( str.empty() )
- return;
-
- size_t beg = 0;
- size_t pos = str.find( delim );
- while ( pos != string::npos ) {
- res->push_back( str.substr( beg, pos - beg) );
- beg = ++pos;
- pos = str.find( delim, beg );
- }
- res->push_back( str.substr( beg ) );
+using std::string;
+using std::vector;
+
+void splitStringDelim(const string& str, vector<string>* res, char delim) {
+ if (str.empty())
+ return;
+
+ size_t beg = 0;
+ size_t pos = str.find(delim);
+ while (pos != string::npos) {
+ res->push_back(str.substr(beg, pos - beg));
+ beg = ++pos;
+ pos = str.find(delim, beg);
}
-
- void joinStringDelim( const vector<string>& strs , string* res , char delim ) {
- for ( vector<string>::const_iterator it = strs.begin(); it != strs.end(); ++it ) {
- if ( it !=strs.begin() ) res->push_back( delim );
- res->append( *it );
- }
+ res->push_back(str.substr(beg));
+}
+
+void joinStringDelim(const vector<string>& strs, string* res, char delim) {
+ for (vector<string>::const_iterator it = strs.begin(); it != strs.end(); ++it) {
+ if (it != strs.begin())
+ res->push_back(delim);
+ res->append(*it);
}
+}
- LexNumCmp::LexNumCmp( bool lexOnly ) :
- _lexOnly( lexOnly ) {
- }
+LexNumCmp::LexNumCmp(bool lexOnly) : _lexOnly(lexOnly) {}
- int LexNumCmp::cmp( StringData sd1, StringData sd2, bool lexOnly ) {
- bool startWord = true;
+int LexNumCmp::cmp(StringData sd1, StringData sd2, bool lexOnly) {
+ bool startWord = true;
- size_t s1 = 0;
- size_t s2 = 0;
+ size_t s1 = 0;
+ size_t s2 = 0;
- while( s1 < sd1.size() && s2 < sd2.size() ) {
- bool d1 = ( sd1[s1] == '.' );
- bool d2 = ( sd2[s2] == '.' );
- if ( d1 && !d2 )
- return -1;
- if ( d2 && !d1 )
- return 1;
- if ( d1 && d2 ) {
- ++s1; ++s2;
- startWord = true;
- continue;
- }
+ while (s1 < sd1.size() && s2 < sd2.size()) {
+ bool d1 = (sd1[s1] == '.');
+ bool d2 = (sd2[s2] == '.');
+ if (d1 && !d2)
+ return -1;
+ if (d2 && !d1)
+ return 1;
+ if (d1 && d2) {
+ ++s1;
+ ++s2;
+ startWord = true;
+ continue;
+ }
- bool p1 = ( sd1[s1] == (char)255 );
- bool p2 = ( sd2[s2] == (char)255 );
+ bool p1 = (sd1[s1] == (char)255);
+ bool p2 = (sd2[s2] == (char)255);
- if ( p1 && !p2 )
- return 1;
- if ( p2 && !p1 )
- return -1;
+ if (p1 && !p2)
+ return 1;
+ if (p2 && !p1)
+ return -1;
- if ( !lexOnly ) {
- bool n1 = isdigit( sd1[s1] );
- bool n2 = isdigit( sd2[s2] );
-
- if ( n1 && n2 ) {
- // get rid of leading 0s
- if ( startWord ) {
- while ( s1 < sd1.size() && sd1[s1] == '0' ) s1++;
- while ( s2 < sd2.size() && sd2[s2] == '0' ) s2++;
- }
-
- size_t e1 = s1;
- size_t e2 = s2;
-
- while ( e1 < sd1.size() && isdigit( sd1[e1] ) ) e1++;
- while ( e2 < sd2.size() && isdigit( sd2[e2] ) ) e2++;
-
- size_t len1 = e1-s1;
- size_t len2 = e2-s2;
-
- int result;
- // if one is longer than the other, return
- if ( len1 > len2 ) {
- return 1;
- }
- else if ( len2 > len1 ) {
- return -1;
- }
- // if the lengths are equal, just strcmp
- else {
- result = strncmp( sd1.rawData() + s1,
- sd2.rawData() + s2,
- len1 );
- if ( result )
- return ( result > 0) ? 1 : -1;
- }
-
- // otherwise, the numbers are equal
- s1 = e1;
- s2 = e2;
- startWord = false;
- continue;
+ if (!lexOnly) {
+ bool n1 = isdigit(sd1[s1]);
+ bool n2 = isdigit(sd2[s2]);
+
+ if (n1 && n2) {
+ // get rid of leading 0s
+ if (startWord) {
+ while (s1 < sd1.size() && sd1[s1] == '0')
+ s1++;
+ while (s2 < sd2.size() && sd2[s2] == '0')
+ s2++;
}
- if ( n1 )
- return 1;
+ size_t e1 = s1;
+ size_t e2 = s2;
+
+ while (e1 < sd1.size() && isdigit(sd1[e1]))
+ e1++;
+ while (e2 < sd2.size() && isdigit(sd2[e2]))
+ e2++;
- if ( n2 )
+ size_t len1 = e1 - s1;
+ size_t len2 = e2 - s2;
+
+ int result;
+ // if one is longer than the other, return
+ if (len1 > len2) {
+ return 1;
+ } else if (len2 > len1) {
return -1;
+ }
+ // if the lengths are equal, just strcmp
+ else {
+ result = strncmp(sd1.rawData() + s1, sd2.rawData() + s2, len1);
+ if (result)
+ return (result > 0) ? 1 : -1;
+ }
+
+ // otherwise, the numbers are equal
+ s1 = e1;
+ s2 = e2;
+ startWord = false;
+ continue;
}
- if ( sd1[s1] > sd2[s2] )
+ if (n1)
return 1;
- if ( sd2[s2] > sd1[s1] )
+ if (n2)
return -1;
-
- s1++; s2++;
- startWord = false;
}
- if ( s1 < sd1.size() && sd1[s1] )
+ if (sd1[s1] > sd2[s2])
return 1;
- if ( s2 < sd2.size() && sd2[s2] )
+
+ if (sd2[s2] > sd1[s1])
return -1;
- return 0;
- }
- int LexNumCmp::cmp( StringData s1, StringData s2 ) const {
- return cmp( s1, s2, _lexOnly );
- }
- bool LexNumCmp::operator()( StringData s1, StringData s2 ) const {
- return cmp( s1, s2 ) < 0;
+ s1++;
+ s2++;
+ startWord = false;
}
- int versionCmp(const StringData rhs, const StringData lhs) {
- if (rhs == lhs) return 0;
-
- // handle "1.2.3-" and "1.2.3-pre"
- if (rhs.size() < lhs.size()) {
- if (strncmp(rhs.rawData(), lhs.rawData(), rhs.size()) == 0 && lhs[rhs.size()] == '-') return +1;
- }
- else if (rhs.size() > lhs.size()) {
- if (strncmp(rhs.rawData(), lhs.rawData(), lhs.size()) == 0 && rhs[lhs.size()] == '-') return -1;
- }
+ if (s1 < sd1.size() && sd1[s1])
+ return 1;
+ if (s2 < sd2.size() && sd2[s2])
+ return -1;
+ return 0;
+}
+
+int LexNumCmp::cmp(StringData s1, StringData s2) const {
+ return cmp(s1, s2, _lexOnly);
+}
+bool LexNumCmp::operator()(StringData s1, StringData s2) const {
+ return cmp(s1, s2) < 0;
+}
+
+int versionCmp(const StringData rhs, const StringData lhs) {
+ if (rhs == lhs)
+ return 0;
- return LexNumCmp::cmp(rhs, lhs, false);
+ // handle "1.2.3-" and "1.2.3-pre"
+ if (rhs.size() < lhs.size()) {
+ if (strncmp(rhs.rawData(), lhs.rawData(), rhs.size()) == 0 && lhs[rhs.size()] == '-')
+ return +1;
+ } else if (rhs.size() > lhs.size()) {
+ if (strncmp(rhs.rawData(), lhs.rawData(), lhs.size()) == 0 && rhs[lhs.size()] == '-')
+ return -1;
}
-} // namespace mongo
+ return LexNumCmp::cmp(rhs, lhs, false);
+}
+
+} // namespace mongo