diff --git a/include/boost/wave/util/cpp_macromap_predef.hpp b/include/boost/wave/util/cpp_macromap_predef.hpp index 02c74a3..c7af7b5 100644 --- a/include/boost/wave/util/cpp_macromap_predef.hpp +++ b/include/boost/wave/util/cpp_macromap_predef.hpp @@ -15,6 +15,7 @@ #include #include +#include #include #include @@ -47,14 +48,14 @@ namespace util { typedef BOOST_WAVE_STRINGTYPE string_type; public: - // list of static predefined macros + // list of static predefined macros struct static_macros { char const *name; boost::wave::token_id token_id; char const *value; }; - // list of dynamic predefined macros + // list of dynamic predefined macros struct dynamic_macros { char const *name; boost::wave::token_id token_id; @@ -68,27 +69,31 @@ namespace util { string_type version_; // __SPIRIT_PP_VERSION__/__WAVE_VERSION__ string_type versionstr_; // __SPIRIT_PP_VERSION_STR__/__WAVE_VERSION_STR__ + static string_type strconv(std::string const & ss) + { + return string_type(ss.c_str()); + } + protected: void reset_datestr() { - static const char *const monthnames[] = { + static const char *const monthnames[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; - // for some systems sprintf, time_t etc. is in namespace std + // for some systems sprintf, time_t etc. is in namespace std using namespace std; - time_t tt = time(0); - struct tm *tb = 0; + time_t tt = time(0); + struct tm *tb = 0; if (tt != (time_t)-1) { - char buffer[sizeof("\"Oct 11 1347\"")+1]; - tb = localtime (&tt); - sprintf (buffer, "\"%s %2d %4d\"", - monthnames[tb->tm_mon], tb->tm_mday, tb->tm_year + 1900); - datestr_ = buffer; + datestr_ = strconv((boost::format("\"%s %2d %4d\"") + % monthnames[tb->tm_mon] + % tb->tm_mday + % (tb->tm_year + 1900)).str()); } else { datestr_ = "\"??? ?? ????\""; @@ -97,19 +102,18 @@ namespace util { void reset_timestr() { - // for some systems sprintf, time_t etc. is in namespace std + // for some systems sprintf, time_t etc. is in namespace std using namespace std; - time_t tt = time(0); - struct tm *tb = 0; + time_t tt = time(0); + struct tm *tb = 0; if (tt != (time_t)-1) { - char buffer[sizeof("\"12:34:56\"")+1]; - tb = localtime (&tt); - sprintf (buffer, "\"%02d:%02d:%02d\"", tb->tm_hour, - tb->tm_min, tb->tm_sec); - timestr_ = buffer; + timestr_ = strconv((boost::format("\"%02d:%02d:%02d\"") + % tb->tm_hour + % tb->tm_min + % tb->tm_sec).str()); } else { timestr_ = "\"??:??:??\""; @@ -118,14 +122,12 @@ namespace util { void reset_version() { - char buffer[sizeof("0x00000000")+1]; - - // for some systems sprintf, time_t etc. is in namespace std + // for some systems sprintf, time_t etc. is in namespace std using namespace std; - // calculate the number of days since Dec 13 2001 - // (the day the Wave project was started) - tm first_day; + // calculate the number of days since Dec 13 2001 + // (the day the Wave project was started) + tm first_day; using namespace std; // for some systems memset is in namespace std memset (&first_day, 0, sizeof(tm)); @@ -133,61 +135,57 @@ namespace util { first_day.tm_mday = 13; // 13 first_day.tm_year = 101; // 2001 - long seconds = long(difftime(compilation_time_.get_time(), mktime(&first_day))); + long seconds = long(difftime(compilation_time_.get_time(), mktime(&first_day))); - sprintf(buffer, "0x%02d%1d%1d%04ld", BOOST_WAVE_VERSION_MAJOR, - BOOST_WAVE_VERSION_MINOR, BOOST_WAVE_VERSION_SUBMINOR, - seconds/(3600*24)); - version_ = buffer; + version_ = strconv((boost::format("0x%02d%1d%1d%04ld") + % BOOST_WAVE_VERSION_MAJOR + % BOOST_WAVE_VERSION_MINOR + % BOOST_WAVE_VERSION_SUBMINOR + % (seconds/(3600*24))).str()); } void reset_versionstr() { - char buffer[sizeof("\"00.00.00.0000 \"")+sizeof(BOOST_PLATFORM)+sizeof(BOOST_COMPILER)+4]; - - // for some systems sprintf, time_t etc. is in namespace std + // for some systems sprintf, time_t etc. is in namespace std using namespace std; - // calculate the number of days since Dec 13 2001 - // (the day the Wave project was started) - tm first_day; + // calculate the number of days since Dec 13 2001 + // (the day the Wave project was started) + tm first_day; memset (&first_day, 0, sizeof(tm)); first_day.tm_mon = 11; // Dec first_day.tm_mday = 13; // 13 first_day.tm_year = 101; // 2001 - long seconds = long(difftime(compilation_time_.get_time(), mktime(&first_day))); + long seconds = long(difftime(compilation_time_.get_time(), mktime(&first_day))); - sprintf(buffer, "\"%d.%d.%d.%ld [%s/%s]\"", BOOST_WAVE_VERSION_MAJOR, - BOOST_WAVE_VERSION_MINOR, BOOST_WAVE_VERSION_SUBMINOR, - seconds/(3600*24), BOOST_PLATFORM, BOOST_COMPILER); - versionstr_ = buffer; + versionstr_ = strconv((boost::format("\"%d.%d.%d.%ld [%s/%s]\"") + % BOOST_WAVE_VERSION_MAJOR + % BOOST_WAVE_VERSION_MINOR + % BOOST_WAVE_VERSION_SUBMINOR + % (seconds/(3600*24)) + % BOOST_PLATFORM + % BOOST_COMPILER).str()); } - // dynamic predefined macros + // dynamic predefined macros string_type get_date() const { return datestr_; } // __DATE__ string_type get_time() const { return timestr_; } // __TIME__ - // __SPIRIT_PP__/__WAVE__ + // __SPIRIT_PP__/__WAVE__ string_type get_version() const { - char buffer[sizeof("0x0000")+1]; - - using namespace std; // for some systems sprintf is in namespace std - sprintf(buffer, "0x%02d%1d%1d", BOOST_WAVE_VERSION_MAJOR, - BOOST_WAVE_VERSION_MINOR, BOOST_WAVE_VERSION_SUBMINOR); - return buffer; + return strconv((boost::format("0x%02d%1d%1d") + % BOOST_WAVE_VERSION_MAJOR + % BOOST_WAVE_VERSION_MINOR + % BOOST_WAVE_VERSION_SUBMINOR).str()); } - // __WAVE_CONFIG__ + // __WAVE_CONFIG__ string_type get_config() const { - char buffer[sizeof("0x00000000")+1]; - - using namespace std; // for some systems sprintf is in namespace std - sprintf(buffer, "0x%08x", BOOST_WAVE_CONFIG); - return buffer; + return strconv((boost::format("0x%08x") % BOOST_WAVE_CONFIG).str()); } public: @@ -205,13 +203,13 @@ namespace util { reset_timestr(); } - // __SPIRIT_PP_VERSION__/__WAVE_VERSION__ + // __SPIRIT_PP_VERSION__/__WAVE_VERSION__ string_type get_fullversion() const { return version_; } - // __SPIRIT_PP_VERSION_STR__/__WAVE_VERSION_STR__ + // __SPIRIT_PP_VERSION_STR__/__WAVE_VERSION_STR__ string_type get_versionstr() const { return versionstr_; } - // C++ mode + // C++ mode static_macros const& static_data_cpp(std::size_t i) const { static static_macros data[] = { @@ -224,7 +222,7 @@ namespace util { } #if BOOST_WAVE_SUPPORT_CPP0X != 0 - // C++11 mode + // C++11 mode static_macros const& static_data_cpp0x(std::size_t i) const { static static_macros data[] = { @@ -241,7 +239,7 @@ namespace util { #endif #if BOOST_WAVE_SUPPORT_CPP2A != 0 - // C++20 mode + // C++20 mode static_macros const& static_data_cpp2a(std::size_t i) const { static static_macros data[] = { @@ -258,7 +256,7 @@ namespace util { #endif #if BOOST_WAVE_SUPPORT_VARIADICS_PLACEMARKERS != 0 - // C99 mode + // C99 mode static_macros const& static_data_c99(std::size_t i) const { static static_macros data[] = { diff --git a/include/boost/wave/util/flex_string.hpp b/include/boost/wave/util/flex_string.hpp index dede5ec..30db5d8 100644 --- a/include/boost/wave/util/flex_string.hpp +++ b/include/boost/wave/util/flex_string.hpp @@ -101,7 +101,6 @@ class StoragePolicy #include #include -#include #include #include #include diff --git a/samples/emit_custom_line_directives/emit_custom_line_directives.hpp b/samples/emit_custom_line_directives/emit_custom_line_directives.hpp index 2284a3c..4cc99c5 100644 --- a/samples/emit_custom_line_directives/emit_custom_line_directives.hpp +++ b/samples/emit_custom_line_directives/emit_custom_line_directives.hpp @@ -63,9 +63,9 @@ public: emit_line_directive(ContextT const& ctx, ContainerT &pending, typename ContextT::token_type const& act_token) { - // emit a #line directive showing the relative filename instead - typename ContextT::position_type pos = act_token.get_position(); - unsigned int column = 1; + // emit a #line directive showing the relative filename instead + typename ContextT::position_type pos = act_token.get_position(); + unsigned int column = 1; typedef typename ContextT::token_type result_type; using namespace boost::wave; @@ -76,21 +76,16 @@ public: pos.set_column(++column); // account for '#' pending.push_back(result_type(T_SPACE, " ", pos)); - // 21 is the max required size for a 64 bit integer represented as a - // string - char buffer[22]; - - using namespace std; // for some systems sprintf is in namespace std - sprintf (buffer, "%d", pos.get_line()); + std::string buffer = std::to_string(pos.get_line()); pos.set_column(++column); // account for ' ' - pending.push_back(result_type(T_INTLIT, buffer, pos)); - pos.set_column(column += (unsigned int)strlen(buffer)); // account for + pending.push_back(result_type(T_INTLIT, buffer.c_str(), pos)); + pos.set_column(column += buffer.size()); // account for pending.push_back(result_type(T_SPACE, " ", pos)); pos.set_column(++column); // account for ' ' - std::string file("\""); - boost::filesystem::path filename( + std::string file("\""); + boost::filesystem::path filename( boost::wave::util::create_path(ctx.get_current_relative_filename().c_str())); using boost::wave::util::impl::escape_lit; diff --git a/tool/stop_watch.hpp b/tool/stop_watch.hpp index b13f80d..06886e8 100644 --- a/tool/stop_watch.hpp +++ b/tool/stop_watch.hpp @@ -12,6 +12,7 @@ #include #include +#include /////////////////////////////////////////////////////////////////////////////// // @@ -24,28 +25,27 @@ public: boost::timer::cpu_times times = elapsed(); double current = static_cast(times.user + times.system) / 1.e9; - char time_buffer[sizeof("1234:56:78.90 abcd.") + 1]; - - using namespace std; if (current >= 3600) { // show hours - sprintf (time_buffer, "%d:%02d:%02d.%03d hrs.", - (int)(current) / 3600, ((int)(current) % 3600) / 60, - ((int)(current) % 3600) % 60, - (int)(current * 1000) % 1000); + return (boost::format("%d:%02d:%02d.%03d hrs.") + % ((int)(current) / 3600) + % (((int)(current) % 3600) / 60) + % (((int)(current) % 3600) % 60) + % ((int)(current * 1000) % 1000)).str(); } else if (current >= 60) { // show minutes - sprintf (time_buffer, "%d:%02d.%03d min.", - (int)(current) / 60, (int)(current) % 60, - (int)(current * 1000) % 1000); + return (boost::format("%d:%02d.%03d min.") + % ((int)(current) / 60) + % ((int)(current) % 60) + % ((int)(current * 1000) % 1000)).str(); } else { // show seconds - sprintf(time_buffer, "%d.%03d sec.", (int)current, - (int)(current * 1000) % 1000); + return (boost::format("%d.%03d sec.") + % (int)current + % ((int)(current * 1000) % 1000)).str(); } - return time_buffer; } };