00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
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 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