1*635a8641SAndroid Build Coastguard Worker // Copyright 2013 The Chromium Authors. All rights reserved. 2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be 3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file. 4*635a8641SAndroid Build Coastguard Worker 5*635a8641SAndroid Build Coastguard Worker #ifndef BASE_STRINGS_STRINGPRINTF_H_ 6*635a8641SAndroid Build Coastguard Worker #define BASE_STRINGS_STRINGPRINTF_H_ 7*635a8641SAndroid Build Coastguard Worker 8*635a8641SAndroid Build Coastguard Worker #include <stdarg.h> // va_list 9*635a8641SAndroid Build Coastguard Worker 10*635a8641SAndroid Build Coastguard Worker #include <string> 11*635a8641SAndroid Build Coastguard Worker 12*635a8641SAndroid Build Coastguard Worker #include "base/base_export.h" 13*635a8641SAndroid Build Coastguard Worker #include "base/compiler_specific.h" 14*635a8641SAndroid Build Coastguard Worker #include "build/build_config.h" 15*635a8641SAndroid Build Coastguard Worker 16*635a8641SAndroid Build Coastguard Worker namespace base { 17*635a8641SAndroid Build Coastguard Worker 18*635a8641SAndroid Build Coastguard Worker // Return a C++ string given printf-like input. 19*635a8641SAndroid Build Coastguard Worker BASE_EXPORT std::string StringPrintf(_Printf_format_string_ const char* format, 20*635a8641SAndroid Build Coastguard Worker ...) 21*635a8641SAndroid Build Coastguard Worker PRINTF_FORMAT(1, 2) WARN_UNUSED_RESULT; 22*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN) 23*635a8641SAndroid Build Coastguard Worker BASE_EXPORT std::wstring StringPrintf( 24*635a8641SAndroid Build Coastguard Worker _Printf_format_string_ const wchar_t* format, 25*635a8641SAndroid Build Coastguard Worker ...) WPRINTF_FORMAT(1, 2) WARN_UNUSED_RESULT; 26*635a8641SAndroid Build Coastguard Worker #endif 27*635a8641SAndroid Build Coastguard Worker 28*635a8641SAndroid Build Coastguard Worker // Return a C++ string given vprintf-like input. 29*635a8641SAndroid Build Coastguard Worker BASE_EXPORT std::string StringPrintV(const char* format, va_list ap) 30*635a8641SAndroid Build Coastguard Worker PRINTF_FORMAT(1, 0) WARN_UNUSED_RESULT; 31*635a8641SAndroid Build Coastguard Worker 32*635a8641SAndroid Build Coastguard Worker // Store result into a supplied string and return it. 33*635a8641SAndroid Build Coastguard Worker BASE_EXPORT const std::string& SStringPrintf( 34*635a8641SAndroid Build Coastguard Worker std::string* dst, 35*635a8641SAndroid Build Coastguard Worker _Printf_format_string_ const char* format, 36*635a8641SAndroid Build Coastguard Worker ...) PRINTF_FORMAT(2, 3); 37*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN) 38*635a8641SAndroid Build Coastguard Worker BASE_EXPORT const std::wstring& SStringPrintf( 39*635a8641SAndroid Build Coastguard Worker std::wstring* dst, 40*635a8641SAndroid Build Coastguard Worker _Printf_format_string_ const wchar_t* format, 41*635a8641SAndroid Build Coastguard Worker ...) WPRINTF_FORMAT(2, 3); 42*635a8641SAndroid Build Coastguard Worker #endif 43*635a8641SAndroid Build Coastguard Worker 44*635a8641SAndroid Build Coastguard Worker // Append result to a supplied string. 45*635a8641SAndroid Build Coastguard Worker BASE_EXPORT void StringAppendF(std::string* dst, 46*635a8641SAndroid Build Coastguard Worker _Printf_format_string_ const char* format, 47*635a8641SAndroid Build Coastguard Worker ...) PRINTF_FORMAT(2, 3); 48*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN) 49*635a8641SAndroid Build Coastguard Worker BASE_EXPORT void StringAppendF(std::wstring* dst, 50*635a8641SAndroid Build Coastguard Worker _Printf_format_string_ const wchar_t* format, 51*635a8641SAndroid Build Coastguard Worker ...) WPRINTF_FORMAT(2, 3); 52*635a8641SAndroid Build Coastguard Worker #endif 53*635a8641SAndroid Build Coastguard Worker 54*635a8641SAndroid Build Coastguard Worker // Lower-level routine that takes a va_list and appends to a specified 55*635a8641SAndroid Build Coastguard Worker // string. All other routines are just convenience wrappers around it. 56*635a8641SAndroid Build Coastguard Worker BASE_EXPORT void StringAppendV(std::string* dst, const char* format, va_list ap) 57*635a8641SAndroid Build Coastguard Worker PRINTF_FORMAT(2, 0); 58*635a8641SAndroid Build Coastguard Worker #if defined(OS_WIN) 59*635a8641SAndroid Build Coastguard Worker BASE_EXPORT void StringAppendV(std::wstring* dst, 60*635a8641SAndroid Build Coastguard Worker const wchar_t* format, va_list ap) 61*635a8641SAndroid Build Coastguard Worker WPRINTF_FORMAT(2, 0); 62*635a8641SAndroid Build Coastguard Worker #endif 63*635a8641SAndroid Build Coastguard Worker 64*635a8641SAndroid Build Coastguard Worker } // namespace base 65*635a8641SAndroid Build Coastguard Worker 66*635a8641SAndroid Build Coastguard Worker #endif // BASE_STRINGS_STRINGPRINTF_H_ 67