//------------------------------------------------------------------------------------------------- inline int_t File::write( ctchar_t *a_format, ... ) const { xTEST_PTR(a_format); va_list args; xVA_START(args, a_format); int_t iRv = xTVFPRINTF(get(), a_format, args); xTEST_LESS(- 1, iRv); xVA_END(args); return iRv; }
//------------------------------------------------------------------------------------------------- inline void_t Process::create( std::ctstring_t &a_filePath, ctchar_t *a_params, ... ) { xTEST_EQ(a_filePath.empty(), false); xTEST_EQ(File::isExists(a_filePath), true); xTEST_PTR(a_params); std::tstring_t cmdLine; va_list args; xVA_START(args, a_params); cmdLine = String::formatV(a_params, args); xVA_END(args); // xTRACEV(xT("cmdLine: %s"), cmdLine.c_str()); _create_impl(a_filePath, cmdLine); }
//------------------------------------------------------------------------------------------------- size_t Profiler::restart( cptr_ctchar_t a_comment, ... ) { size_t uiRV = 0; // format comment std::tstring_t sRv; if ( !_log.filePath().empty() ) { va_list args; xVA_START(args, a_comment); sRv = FormatC::strV(a_comment, args); xVA_END(args); } // stop, start uiRV = stop(xT("%s"), sRv.c_str()); start(); return uiRV; }
//------------------------------------------------------------------------------------------------- size_t Profiler::stop( cptr_ctchar_t a_comment, ... ) { xTEST_EQ(_isStarted, true); // stop, get duration { _stop = std::clock(); xTEST_DIFF(static_cast<clock_t>( - 1 ), _stop); _duration = _stop - _start; xTEST_LESS_EQ(static_cast<clock_t>( 0 ), _duration); } cdouble_t durationMsec1 = (static_cast<double>( _duration ) / static_cast<double>( CLOCKS_PER_SEC )) * 1000.0; // 1 sec = 1000 msec std::size_t durationMsec2 = Utils::roundIntT<std::size_t>( durationMsec1 ); // write to log if ( !_log.filePath().empty() ) { std::tstring_t sRv; std::ctstring_t durationTime = DateTime(durationMsec2).format(xT("%H:%M:%S")); va_list args; xVA_START(args, a_comment); sRv = FormatC::strV(a_comment, args); xVA_END(args); _log.write(xT("%s: %s"), durationTime.c_str(), sRv.c_str()); } _isStarted = false; return durationMsec2; }