00001 #pragma ident "$Id: FormatUtils.hpp 2938 2011-10-23 19:39:11Z yanweignss $"
00002
00008 #ifndef GPSTK_FORMATUTILS_HPP
00009 #define GPSTK_FORMATUTILS_HPP
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #include <vector>
00034 #include <string>
00035 #include "Any.hpp"
00036
00037 namespace gpstk
00038 {
00111 class FormatUtils
00112 {
00113 public:
00114 static std::string format(const std::string& fmt, const Any& value);
00115 static std::string format(const std::string& fmt, const Any& value1, const Any& value2);
00116 static std::string format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3);
00117 static std::string format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
00118 static std::string format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
00119 static std::string format(const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
00120
00121
00122 static void format(std::string& result, const std::string& fmt, const Any& value);
00123 static void format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2);
00124 static void format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3);
00125 static void format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4);
00126 static void format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5);
00127 static void format(std::string& result, const std::string& fmt, const Any& value1, const Any& value2, const Any& value3, const Any& value4, const Any& value5, const Any& value6);
00128
00129 static void format(std::string& result, const std::string& fmt, const std::vector<Any>& values);
00130
00131 protected:
00132 FormatUtils(){}
00133
00134 static void parseFlags(std::ostream& str, std::string::const_iterator& itFmt, const std::string::const_iterator& endFmt);
00135 static void parseWidth(std::ostream& str, std::string::const_iterator& itFmt, const std::string::const_iterator& endFmt);
00136 static void parsePrec(std::ostream& str, std::string::const_iterator& itFmt, const std::string::const_iterator& endFmt);
00137 static char parseMod(std::string::const_iterator& itFmt, const std::string::const_iterator& endFmt);
00138 static std::size_t parseIndex(std::string::const_iterator& itFmt, const std::string::const_iterator& endFmt);
00139 static void prepareFormat(std::ostream& str, char type);
00140
00141 static void writeAnyInt(std::ostream& str, const Any& any);
00142
00143 static void formatOne(std::string& result, std::string::const_iterator& itFmt, const std::string::const_iterator& endFmt, std::vector<Any>::const_iterator& itVal);
00144 };
00145
00146
00147 }
00148
00149
00150 #endif //GPSTK_FORMATUTILS_HPP
00151