Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Functions
SkSL::String Namespace Reference

Functions

std::string printf (const char *fmt,...) SK_PRINTF_LIKE(1
 
std::string void appendf (std::string *str, const char *fmt,...) SK_PRINTF_LIKE(2
 
std::string void void vappendf (std::string *str, const char *fmt, va_list va) SK_PRINTF_LIKE(2
 
std::string void void auto Separator ()
 

Function Documentation

◆ appendf()

void SkSL::String::appendf ( std::string *  str,
const char *  fmt,
  ... 
)

Definition at line 92 of file SkSLString.cpp.

92 {
93 va_list args;
94 va_start(args, fmt);
95 vappendf(str, fmt, args);
96 va_end(args);
97}
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
std::string void void vappendf(std::string *str, const char *fmt, va_list va) SK_PRINTF_LIKE(2
static SkString fmt(SkColor4f c)
Definition p3.cpp:43

◆ printf()

std::string SkSL::String::printf ( const char *  fmt,
  ... 
)

Definition at line 83 of file SkSLString.cpp.

83 {
84 va_list args;
85 va_start(args, fmt);
86 std::string result;
88 va_end(args);
89 return result;
90}
GAsyncResult * result

◆ Separator()

std::string void void auto SkSL::String::Separator ( )
inline

Definition at line 30 of file SkSLString.h.

30 {
31 // This returns a lambda which emits "" the first time it is called, and ", " every subsequent
32 // time it is called.
33 struct Output {
34 const std::string fSpace, fComma;
35 };
36 static const SkNoDestructor<Output> kOutput(Output{{}, {", "}});
37
38 return [firstSeparator = true]() mutable -> const std::string& {
39 if (firstSeparator) {
40 firstSeparator = false;
41 return kOutput->fSpace;
42 } else {
43 return kOutput->fComma;
44 }
45 };
46}
Output
Definition SkSLBench.cpp:61

◆ vappendf()

void SkSL::String::vappendf ( std::string *  str,
const char *  fmt,
va_list  va 
)

Definition at line 99 of file SkSLString.cpp.

99 {
100 #define BUFFER_SIZE 256
101 char buffer[BUFFER_SIZE];
102 va_list reuse;
103 va_copy(reuse, args);
104 size_t size = vsnprintf(buffer, BUFFER_SIZE, fmt, args);
105 if (BUFFER_SIZE >= size + 1) {
106 str->append(buffer, size);
107 } else {
108 auto newBuffer = std::unique_ptr<char[]>(new char[size + 1]);
109 vsnprintf(newBuffer.get(), size + 1, fmt, reuse);
110 str->append(newBuffer.get(), size);
111 }
112 va_end(reuse);
113}
#define BUFFER_SIZE
static const uint8_t buffer[]