1 // @HEADER 2 // *********************************************************************** 3 // 4 // Tpetra: Templated Linear Algebra Services Package 5 // Copyright (2008) Sandia Corporation 6 // 7 // Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation, 8 // the U.S. Government retains certain rights in this software. 9 // 10 // Redistribution and use in source and binary forms, with or without 11 // modification, are permitted provided that the following conditions are 12 // met: 13 // 14 // 1. Redistributions of source code must retain the above copyright 15 // notice, this list of conditions and the following disclaimer. 16 // 17 // 2. Redistributions in binary form must reproduce the above copyright 18 // notice, this list of conditions and the following disclaimer in the 19 // documentation and/or other materials provided with the distribution. 20 // 21 // 3. Neither the name of the Corporation nor the names of the 22 // contributors may be used to endorse or promote products derived from 23 // this software without specific prior written permission. 24 // 25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY 26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE 29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 36 // 37 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 38 // 39 // ************************************************************************ 40 // @HEADER 41 42 #ifndef __Teuchos_MatrixMarket_split_hpp 43 #define __Teuchos_MatrixMarket_split_hpp 44 45 #include <string> 46 #include <vector> 47 48 49 namespace Teuchos { 50 namespace MatrixMarket { 51 namespace details { 52 53 //! Trim whitespace from both sides of the given string. 54 std::string 55 trim (const std::string& in); 56 57 //! Return lowercase version of the given string. 58 std::string 59 lowercase (const std::string& in); 60 61 //! Trim whitespace from both sides, and make lowercase. 62 std::string 63 trim_and_lowercase (const std::string& in); 64 65 /// \brief Split the given string using the given set of delimiters. 66 /// 67 /// Split the string \c str, optionally starting at position \c 68 /// start, into zero or more tokens separated by one or more of the 69 /// given delimiter characters in \c delimiters. 70 /// 71 /// \param str [in] String to split into tokens 72 /// \param delimiters [in] Array of one or more delimiter character(s) 73 /// \param start [in] Position in \c str where the search should begin. 74 /// Defaults to zero. 75 /// 76 /// \return Vector of zero or more tokens, none of which contain any 77 /// of the delimiter character(s) 78 std::vector<std::string> 79 split (const std::string& str, 80 const std::string& delimiters, 81 const size_t start=0); 82 83 } // namespace details 84 } // namespace MatrixMarket 85 } // namespace Teuchos 86 87 #endif // __Teuchos_MatrixMarket_split_hpp 88