// stringutils.h /* Copyright 2010 10gen Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #pragma once namespace mongo { // see also mongoutils/str.h - perhaps move these there? // see also text.h void splitStringDelim( const string& str , vector* res , char delim ); void joinStringDelim( const vector& strs , string* res , char delim ); inline string tolowerString( const string& input ) { string::size_type sz = input.size(); boost::scoped_array line(new char[sz+1]); char * copy = line.get(); for ( string::size_type i=0; i len2 ) { return 1; } else if ( len2 > len1 ) { return -1; } // if the lengths are equal, just strcmp else if ( (result = strncmp(s1, s2, len1)) != 0 ) { return result; } // otherwise, the numbers are equal s1 = e1; s2 = e2; startWord = false; continue; } if ( n1 ) return 1; if ( n2 ) return -1; if ( *s1 > *s2 ) return 1; if ( *s2 > *s1 ) return -1; s1++; s2++; startWord = false; } if ( *s1 ) return 1; if ( *s2 ) return -1; return 0; } } // namespace mongo