|
Teuchos Package Browser (Single Doxygen Collection) Version of the Day
|
00001 // @HEADER 00002 // *********************************************************************** 00003 // 00004 // Teuchos: Common Tools Package 00005 // Copyright (2004) Sandia Corporation 00006 // 00007 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive 00008 // license for use of this work by or on behalf of the U.S. Government. 00009 // 00010 // This library is free software; you can redistribute it and/or modify 00011 // it under the terms of the GNU Lesser General Public License as 00012 // published by the Free Software Foundation; either version 2.1 of the 00013 // License, or (at your option) any later version. 00014 // 00015 // This library is distributed in the hope that it will be useful, but 00016 // WITHOUT ANY WARRANTY; without even the implied warranty of 00017 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 // Lesser General Public License for more details. 00019 // 00020 // You should have received a copy of the GNU Lesser General Public 00021 // License along with this library; if not, write to the Free Software 00022 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 00023 // USA 00024 // Questions? Contact Michael A. Heroux (maherou@sandia.gov) 00025 // 00026 // *********************************************************************** 00027 // @HEADER 00028 00029 #ifndef TEUCHOS_STRUTILS_H 00030 #define TEUCHOS_STRUTILS_H 00031 00036 #include "Teuchos_ConfigDefs.hpp" 00037 00038 #include "Teuchos_Utils.hpp" 00039 #include "Teuchos_Array.hpp" 00040 00041 namespace Teuchos 00042 { 00047 class TEUCHOS_LIB_DLL_EXPORT StrUtils 00048 { 00049 public: 00051 static Array<std::string> readFile(std::istream& is, char comment); 00052 00055 static Array<std::string> splitIntoLines(const std::string& input); 00056 00058 static Array<Array<std::string> > tokenizeFile(std::istream& is, char comment); 00059 00061 static bool readLine(std::istream& is, std::string& line); 00062 00063 static Array<std::string> stringTokenizer(const std::string& str); 00064 00065 static Array<std::string> getTokensPlusWhitespace(const std::string& str); 00066 00067 static std::string reassembleFromTokens(const Array<std::string>& tokens, int iStart=0); 00068 00069 static void splitList(const std::string& bigstring, Array<std::string>& elements); 00070 00071 static int findNextWhitespace(const std::string& str, int offset); 00072 00073 static int findNextNonWhitespace(const std::string& str, int offset); 00074 00075 00076 static std::string varSubstitute(const std::string& rawLine, 00077 const std::string& varName, 00078 const std::string& varValue); 00079 00080 static std::string varTableSubstitute(const std::string& rawLine, 00081 const Array<std::string>& varNames, 00082 const Array<std::string>& varValues); 00083 00084 static std::string envSubstitute(const std::string& line); 00085 00088 static std::string before(const std::string& str, const std::string& sub); 00089 00092 static std::string before(const std::string& str, char sub); 00093 00096 static std::string after(const std::string& str, const std::string& sub); 00097 00100 static int find(const std::string& str, const std::string& sub); 00101 00103 static bool isWhite(const std::string& str); 00104 00106 static std::string fixUnprintableCharacters(const std::string& str); 00107 00109 static bool isNonWhite(const std::string& str) {return !isWhite(str);} 00110 00116 static std::string between(const std::string& str, const std::string& begin, 00117 const std::string& end, std::string& front, std::string& back); 00118 00122 static std::string subString(const std::string& str, int begin, int end); 00123 00124 static std::string readFromStream(std::istream& is); 00125 00127 static std::string allCaps(const std::string& str); 00128 00130 static double atof(const std::string& str); 00131 00133 static int atoi(const std::string& str); 00134 00136 static std::ostream& printLines( 00137 std::ostream &os 00138 ,const std::string &linePrefix 00139 ,const std::string &lines 00140 ); 00141 00142 }; 00143 00144 } 00145 00146 #endif
1.7.4