bl.append(os.str());
}
-void Formatter::dump_format(const char *name, const char *fmt, ...)
+void Formatter::dump_format(std::string_view name, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
va_end(ap);
}
-void Formatter::dump_format_ns(const char *name, const char *ns, const char *fmt, ...)
+void Formatter::dump_format_ns(std::string_view name, const char *ns, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
}
-void Formatter::dump_format_unquoted(const char *name, const char *fmt, ...)
+void Formatter::dump_format_unquoted(std::string_view name, const char *fmt, ...)
{
va_list ap;
va_start(ap, fmt);
m_ss << '\"' << json_stream_escaper(s) << '\"';
}
-void JSONFormatter::print_name(const char *name)
+void JSONFormatter::print_name(std::string_view name)
{
finish_pending_string();
if (m_stack.empty())
++entry.size;
}
-void JSONFormatter::open_section(const char *name, const char *ns, bool is_array)
+void JSONFormatter::open_section(std::string_view name, const char *ns, bool is_array)
{
if (handle_open_section(name, ns, is_array)) {
return;
m_stack.push_back(n);
}
-void JSONFormatter::open_array_section(const char *name)
+void JSONFormatter::open_array_section(std::string_view name)
{
open_section(name, nullptr, true);
}
-void JSONFormatter::open_array_section_in_ns(const char *name, const char *ns)
+void JSONFormatter::open_array_section_in_ns(std::string_view name, const char *ns)
{
open_section(name, ns, true);
}
-void JSONFormatter::open_object_section(const char *name)
+void JSONFormatter::open_object_section(std::string_view name)
{
open_section(name, nullptr, false);
}
-void JSONFormatter::open_object_section_in_ns(const char *name, const char *ns)
+void JSONFormatter::open_object_section_in_ns(std::string_view name, const char *ns)
{
open_section(name, ns, false);
}
}
template <class T>
-void JSONFormatter::add_value(const char *name, T val)
+void JSONFormatter::add_value(std::string_view name, T val)
{
std::stringstream ss;
ss.precision(std::numeric_limits<T>::max_digits10);
add_value(name, ss.str(), false);
}
-void JSONFormatter::add_value(const char *name, std::string_view val, bool quoted)
+void JSONFormatter::add_value(std::string_view name, std::string_view val, bool quoted)
{
if (handle_value(name, val, quoted)) {
return;
}
}
-void JSONFormatter::dump_unsigned(const char *name, uint64_t u)
+void JSONFormatter::dump_unsigned(std::string_view name, uint64_t u)
{
add_value(name, u);
}
-void JSONFormatter::dump_int(const char *name, int64_t s)
+void JSONFormatter::dump_int(std::string_view name, int64_t s)
{
add_value(name, s);
}
-void JSONFormatter::dump_float(const char *name, double d)
+void JSONFormatter::dump_float(std::string_view name, double d)
{
add_value(name, d);
}
-void JSONFormatter::dump_string(const char *name, std::string_view s)
+void JSONFormatter::dump_string(std::string_view name, std::string_view s)
{
add_value(name, s, true);
}
-std::ostream& JSONFormatter::dump_stream(const char *name)
+std::ostream& JSONFormatter::dump_stream(std::string_view name)
{
finish_pending_string();
m_pending_name = name;
return m_pending_string;
}
-void JSONFormatter::dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap)
+void JSONFormatter::dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap)
{
char buf[LARGE_SIZE];
vsnprintf(buf, LARGE_SIZE, fmt, ap);
}
}
-void XMLFormatter::open_object_section(const char *name)
+void XMLFormatter::open_object_section(std::string_view name)
{
open_section_in_ns(name, NULL, NULL);
}
-void XMLFormatter::open_object_section_with_attrs(const char *name, const FormatterAttrs& attrs)
+void XMLFormatter::open_object_section_with_attrs(std::string_view name, const FormatterAttrs& attrs)
{
open_section_in_ns(name, NULL, &attrs);
}
-void XMLFormatter::open_object_section_in_ns(const char *name, const char *ns)
+void XMLFormatter::open_object_section_in_ns(std::string_view name, const char *ns)
{
open_section_in_ns(name, ns, NULL);
}
-void XMLFormatter::open_array_section(const char *name)
+void XMLFormatter::open_array_section(std::string_view name)
{
open_section_in_ns(name, NULL, NULL);
}
-void XMLFormatter::open_array_section_with_attrs(const char *name, const FormatterAttrs& attrs)
+void XMLFormatter::open_array_section_with_attrs(std::string_view name, const FormatterAttrs& attrs)
{
open_section_in_ns(name, NULL, &attrs);
}
-void XMLFormatter::open_array_section_in_ns(const char *name, const char *ns)
+void XMLFormatter::open_array_section_in_ns(std::string_view name, const char *ns)
{
open_section_in_ns(name, ns, NULL);
}
}
template <class T>
-void XMLFormatter::add_value(const char *name, T val)
+void XMLFormatter::add_value(std::string_view name, T val)
{
std::string e(name);
std::transform(e.begin(), e.end(), e.begin(),
m_ss << "\n";
}
-void XMLFormatter::dump_unsigned(const char *name, uint64_t u)
+void XMLFormatter::dump_unsigned(std::string_view name, uint64_t u)
{
add_value(name, u);
}
-void XMLFormatter::dump_int(const char *name, int64_t s)
+void XMLFormatter::dump_int(std::string_view name, int64_t s)
{
add_value(name, s);
}
-void XMLFormatter::dump_float(const char *name, double d)
+void XMLFormatter::dump_float(std::string_view name, double d)
{
add_value(name, d);
}
-void XMLFormatter::dump_string(const char *name, std::string_view s)
+void XMLFormatter::dump_string(std::string_view name, std::string_view s)
{
std::string e(name);
std::transform(e.begin(), e.end(), e.begin(),
m_ss << "\n";
}
-void XMLFormatter::dump_string_with_attrs(const char *name, std::string_view s, const FormatterAttrs& attrs)
+void XMLFormatter::dump_string_with_attrs(std::string_view name, std::string_view s, const FormatterAttrs& attrs)
{
std::string e(name);
std::transform(e.begin(), e.end(), e.begin(),
m_ss << "\n";
}
-std::ostream& XMLFormatter::dump_stream(const char *name)
+std::ostream& XMLFormatter::dump_stream(std::string_view name)
{
print_spaces();
m_pending_string_name = name;
return m_pending_string;
}
-void XMLFormatter::dump_format_va(const char* name, const char *ns, bool quoted, const char *fmt, va_list ap)
+void XMLFormatter::dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap)
{
char buf[LARGE_SIZE];
size_t len = vsnprintf(buf, LARGE_SIZE, fmt, ap);
attrs_str = attrs_ss.str();
}
-void XMLFormatter::open_section_in_ns(const char *name, const char *ns, const FormatterAttrs *attrs)
+void XMLFormatter::open_section_in_ns(std::string_view name, const char *ns, const FormatterAttrs *attrs)
{
print_spaces();
std::string attrs_str;
}
if (m_pretty)
m_ss << "\n";
- m_sections.push_back(name);
+ m_sections.push_back(std::string(name));
}
void XMLFormatter::finish_pending_string()
m_section_open = 0;
}
-void TableFormatter::open_object_section(const char *name)
+void TableFormatter::open_object_section(std::string_view name)
{
open_section_in_ns(name, NULL, NULL);
}
-void TableFormatter::open_object_section_with_attrs(const char *name, const FormatterAttrs& attrs)
+void TableFormatter::open_object_section_with_attrs(std::string_view name, const FormatterAttrs& attrs)
{
open_section_in_ns(name, NULL, NULL);
}
-void TableFormatter::open_object_section_in_ns(const char *name, const char *ns)
+void TableFormatter::open_object_section_in_ns(std::string_view name, const char *ns)
{
open_section_in_ns(name, NULL, NULL);
}
-void TableFormatter::open_array_section(const char *name)
+void TableFormatter::open_array_section(std::string_view name)
{
open_section_in_ns(name, NULL, NULL);
}
-void TableFormatter::open_array_section_with_attrs(const char *name, const FormatterAttrs& attrs)
+void TableFormatter::open_array_section_with_attrs(std::string_view name, const FormatterAttrs& attrs)
{
open_section_in_ns(name, NULL, NULL);
}
-void TableFormatter::open_array_section_in_ns(const char *name, const char *ns)
+void TableFormatter::open_array_section_in_ns(std::string_view name, const char *ns)
{
open_section_in_ns(name, NULL, NULL);
}
-void TableFormatter::open_section_in_ns(const char *name, const char *ns, const FormatterAttrs *attrs)
+void TableFormatter::open_section_in_ns(std::string_view name, const char *ns, const FormatterAttrs *attrs)
{
- m_section.push_back(name);
+ m_section.push_back(std::string(name));
m_section_open++;
}
}
}
-size_t TableFormatter::m_vec_index(const char *name)
+size_t TableFormatter::m_vec_index(std::string_view name)
{
std::string key(name);
return i;
}
-std::string TableFormatter::get_section_name(const char* name)
+std::string TableFormatter::get_section_name(std::string_view name)
{
- std::string t_name = name;
+ std::string t_name{name};
for (size_t i = 0; i < m_section.size(); i++) {
t_name.insert(0, ":");
t_name.insert(0, m_section[i]);
}
template <class T>
-void TableFormatter::add_value(const char *name, T val) {
+void TableFormatter::add_value(std::string_view name, T val) {
finish_pending_string();
size_t i = m_vec_index(name);
m_ss.precision(std::numeric_limits<double>::max_digits10);
m_ss.str("");
}
-void TableFormatter::dump_unsigned(const char *name, uint64_t u)
+void TableFormatter::dump_unsigned(std::string_view name, uint64_t u)
{
add_value(name, u);
}
-void TableFormatter::dump_int(const char *name, int64_t s)
+void TableFormatter::dump_int(std::string_view name, int64_t s)
{
add_value(name, s);
}
-void TableFormatter::dump_float(const char *name, double d)
+void TableFormatter::dump_float(std::string_view name, double d)
{
add_value(name, d);
}
-void TableFormatter::dump_string(const char *name, std::string_view s)
+void TableFormatter::dump_string(std::string_view name, std::string_view s)
{
finish_pending_string();
size_t i = m_vec_index(name);
m_ss.str("");
}
-void TableFormatter::dump_string_with_attrs(const char *name, std::string_view s, const FormatterAttrs& attrs)
+void TableFormatter::dump_string_with_attrs(std::string_view name, std::string_view s, const FormatterAttrs& attrs)
{
finish_pending_string();
size_t i = m_vec_index(name);
m_ss.str("");
}
-void TableFormatter::dump_format_va(const char* name, const char *ns, bool quoted, const char *fmt, va_list ap)
+void TableFormatter::dump_format_va(std::string_view name,
+ const char *ns, bool quoted,
+ const char *fmt, va_list ap)
{
finish_pending_string();
char buf[LARGE_SIZE];
m_ss.str("");
}
-std::ostream& TableFormatter::dump_stream(const char *name)
+std::ostream& TableFormatter::dump_stream(std::string_view name)
{
finish_pending_string();
// we don't support this
Formatter& formatter;
public:
- ObjectSection(Formatter& f, const char *name) : formatter(f) {
+ ObjectSection(Formatter& f, std::string_view name) : formatter(f) {
formatter.open_object_section(name);
}
- ObjectSection(Formatter& f, const char *name, const char *ns) : formatter(f) {
+ ObjectSection(Formatter& f, std::string_view name, const char *ns) : formatter(f) {
formatter.open_object_section_in_ns(name, ns);
}
~ObjectSection() {
Formatter& formatter;
public:
- ArraySection(Formatter& f, const char *name) : formatter(f) {
+ ArraySection(Formatter& f, std::string_view name) : formatter(f) {
formatter.open_array_section(name);
}
- ArraySection(Formatter& f, const char *name, const char *ns) : formatter(f) {
+ ArraySection(Formatter& f, std::string_view name, const char *ns) : formatter(f) {
formatter.open_array_section_in_ns(name, ns);
}
~ArraySection() {
virtual void output_header() = 0;
virtual void output_footer() = 0;
- virtual void open_array_section(const char *name) = 0;
- virtual void open_array_section_in_ns(const char *name, const char *ns) = 0;
- virtual void open_object_section(const char *name) = 0;
- virtual void open_object_section_in_ns(const char *name, const char *ns) = 0;
+ virtual void open_array_section(std::string_view name) = 0;
+ virtual void open_array_section_in_ns(std::string_view name, const char *ns) = 0;
+ virtual void open_object_section(std::string_view name) = 0;
+ virtual void open_object_section_in_ns(std::string_view name, const char *ns) = 0;
virtual void close_section() = 0;
- virtual void dump_unsigned(const char *name, uint64_t u) = 0;
- virtual void dump_int(const char *name, int64_t s) = 0;
- virtual void dump_float(const char *name, double d) = 0;
- virtual void dump_string(const char *name, std::string_view s) = 0;
- virtual void dump_bool(const char *name, bool b)
+ virtual void dump_unsigned(std::string_view name, uint64_t u) = 0;
+ virtual void dump_int(std::string_view name, int64_t s) = 0;
+ virtual void dump_float(std::string_view name, double d) = 0;
+ virtual void dump_string(std::string_view name, std::string_view s) = 0;
+ virtual void dump_bool(std::string_view name, bool b)
{
dump_format_unquoted(name, "%s", (b ? "true" : "false"));
}
template<typename T>
- void dump_object(const char *name, const T& foo) {
+ void dump_object(std::string_view name, const T& foo) {
open_object_section(name);
foo.dump(this);
close_section();
}
- virtual std::ostream& dump_stream(const char *name) = 0;
- virtual void dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap) = 0;
- virtual void dump_format(const char *name, const char *fmt, ...);
- virtual void dump_format_ns(const char *name, const char *ns, const char *fmt, ...);
- virtual void dump_format_unquoted(const char *name, const char *fmt, ...);
+ virtual std::ostream& dump_stream(std::string_view name) = 0;
+ virtual void dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap) = 0;
+ virtual void dump_format(std::string_view name, const char *fmt, ...);
+ virtual void dump_format_ns(std::string_view name, const char *ns, const char *fmt, ...);
+ virtual void dump_format_unquoted(std::string_view name, const char *fmt, ...);
virtual int get_len() const = 0;
virtual void write_raw_data(const char *data) = 0;
/* with attrs */
- virtual void open_array_section_with_attrs(const char *name, const FormatterAttrs& attrs)
+ virtual void open_array_section_with_attrs(std::string_view name, const FormatterAttrs& attrs)
{
open_array_section(name);
}
- virtual void open_object_section_with_attrs(const char *name, const FormatterAttrs& attrs)
+ virtual void open_object_section_with_attrs(std::string_view name, const FormatterAttrs& attrs)
{
open_object_section(name);
}
- virtual void dump_string_with_attrs(const char *name, std::string_view s, const FormatterAttrs& attrs)
+ virtual void dump_string_with_attrs(std::string_view name, std::string_view s, const FormatterAttrs& attrs)
{
dump_string(name, s);
}
void flush(std::ostream& os) override;
using Formatter::flush; // don't hide Formatter::flush(bufferlist &bl)
void reset() override;
- void open_array_section(const char *name) override;
- void open_array_section_in_ns(const char *name, const char *ns) override;
- void open_object_section(const char *name) override;
- void open_object_section_in_ns(const char *name, const char *ns) override;
+ void open_array_section(std::string_view name) override;
+ void open_array_section_in_ns(std::string_view name, const char *ns) override;
+ void open_object_section(std::string_view name) override;
+ void open_object_section_in_ns(std::string_view name, const char *ns) override;
void close_section() override;
- void dump_unsigned(const char *name, uint64_t u) override;
- void dump_int(const char *name, int64_t s) override;
- void dump_float(const char *name, double d) override;
- void dump_string(const char *name, std::string_view s) override;
- std::ostream& dump_stream(const char *name) override;
- void dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
+ void dump_unsigned(std::string_view name, uint64_t u) override;
+ void dump_int(std::string_view name, int64_t s) override;
+ void dump_float(std::string_view name, double d) override;
+ void dump_string(std::string_view name, std::string_view s) override;
+ std::ostream& dump_stream(std::string_view name) override;
+ void dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
int get_len() const override;
void write_raw_data(const char *data) override;
protected:
- virtual bool handle_value(const char *name, std::string_view s, bool quoted) {
+ virtual bool handle_value(std::string_view name, std::string_view s, bool quoted) {
return false; /* is handling done? */
}
- virtual bool handle_open_section(const char *name, const char *ns, bool is_array) {
+ virtual bool handle_open_section(std::string_view name, const char *ns, bool is_array) {
return false; /* is handling done? */
}
};
bool m_pretty;
- void open_section(const char *name, const char *ns, bool is_array);
+ void open_section(std::string_view name, const char *ns, bool is_array);
void print_quoted_string(std::string_view s);
- void print_name(const char *name);
+ void print_name(std::string_view name);
void print_comma(json_formatter_stack_entry_d& entry);
void finish_pending_string();
template <class T>
- void add_value(const char *name, T val);
- void add_value(const char *name, std::string_view val, bool quoted);
+ void add_value(std::string_view name, T val);
+ void add_value(std::string_view name, std::string_view val, bool quoted);
copyable_sstream m_ss;
copyable_sstream m_pending_string;
};
template <class T>
- void add_value(const char *name, T val);
+ void add_value(std::string_view name, T val);
class XMLFormatter : public Formatter {
public:
void flush(std::ostream& os) override;
using Formatter::flush; // don't hide Formatter::flush(bufferlist &bl)
void reset() override;
- void open_array_section(const char *name) override;
- void open_array_section_in_ns(const char *name, const char *ns) override;
- void open_object_section(const char *name) override;
- void open_object_section_in_ns(const char *name, const char *ns) override;
+ void open_array_section(std::string_view name) override;
+ void open_array_section_in_ns(std::string_view name, const char *ns) override;
+ void open_object_section(std::string_view name) override;
+ void open_object_section_in_ns(std::string_view name, const char *ns) override;
void close_section() override;
- void dump_unsigned(const char *name, uint64_t u) override;
- void dump_int(const char *name, int64_t s) override;
- void dump_float(const char *name, double d) override;
- void dump_string(const char *name, std::string_view s) override;
- std::ostream& dump_stream(const char *name) override;
- void dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
+ void dump_unsigned(std::string_view name, uint64_t u) override;
+ void dump_int(std::string_view name, int64_t s) override;
+ void dump_float(std::string_view name, double d) override;
+ void dump_string(std::string_view name, std::string_view s) override;
+ std::ostream& dump_stream(std::string_view name) override;
+ void dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
int get_len() const override;
void write_raw_data(const char *data) override;
/* with attrs */
- void open_array_section_with_attrs(const char *name, const FormatterAttrs& attrs) override;
- void open_object_section_with_attrs(const char *name, const FormatterAttrs& attrs) override;
- void dump_string_with_attrs(const char *name, std::string_view s, const FormatterAttrs& attrs) override;
+ void open_array_section_with_attrs(std::string_view name, const FormatterAttrs& attrs) override;
+ void open_object_section_with_attrs(std::string_view name, const FormatterAttrs& attrs) override;
+ void dump_string_with_attrs(std::string_view name, std::string_view s, const FormatterAttrs& attrs) override;
protected:
- void open_section_in_ns(const char *name, const char *ns, const FormatterAttrs *attrs);
+ void open_section_in_ns(std::string_view name, const char *ns, const FormatterAttrs *attrs);
void finish_pending_string();
void print_spaces();
void get_attrs_str(const FormatterAttrs *attrs, std::string& attrs_str);
bool m_line_break_enabled = false;
private:
template <class T>
- void add_value(const char *name, T val);
+ void add_value(std::string_view name, T val);
};
class TableFormatter : public Formatter {
void flush(std::ostream& os) override;
using Formatter::flush; // don't hide Formatter::flush(bufferlist &bl)
void reset() override;
- void open_array_section(const char *name) override;
- void open_array_section_in_ns(const char *name, const char *ns) override;
- void open_object_section(const char *name) override;
- void open_object_section_in_ns(const char *name, const char *ns) override;
+ void open_array_section(std::string_view name) override;
+ void open_array_section_in_ns(std::string_view name, const char *ns) override;
+ void open_object_section(std::string_view name) override;
+ void open_object_section_in_ns(std::string_view name, const char *ns) override;
- void open_array_section_with_attrs(const char *name, const FormatterAttrs& attrs) override;
- void open_object_section_with_attrs(const char *name, const FormatterAttrs& attrs) override;
+ void open_array_section_with_attrs(std::string_view name, const FormatterAttrs& attrs) override;
+ void open_object_section_with_attrs(std::string_view name, const FormatterAttrs& attrs) override;
void close_section() override;
- void dump_unsigned(const char *name, uint64_t u) override;
- void dump_int(const char *name, int64_t s) override;
- void dump_float(const char *name, double d) override;
- void dump_string(const char *name, std::string_view s) override;
- void dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
- void dump_string_with_attrs(const char *name, std::string_view s, const FormatterAttrs& attrs) override;
- std::ostream& dump_stream(const char *name) override;
+ void dump_unsigned(std::string_view name, uint64_t u) override;
+ void dump_int(std::string_view name, int64_t s) override;
+ void dump_float(std::string_view name, double d) override;
+ void dump_string(std::string_view name, std::string_view s) override;
+ void dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
+ void dump_string_with_attrs(std::string_view name, std::string_view s, const FormatterAttrs& attrs) override;
+ std::ostream& dump_stream(std::string_view name) override;
int get_len() const override;
void write_raw_data(const char *data) override;
private:
template <class T>
- void add_value(const char *name, T val);
- void open_section_in_ns(const char *name, const char *ns, const FormatterAttrs *attrs);
+ void add_value(std::string_view name, T val);
+ void open_section_in_ns(std::string_view name, const char *ns, const FormatterAttrs *attrs);
std::vector< std::vector<std::pair<std::string, std::string> > > m_vec;
std::stringstream m_ss;
- size_t m_vec_index(const char* name);
- std::string get_section_name(const char* name);
+ size_t m_vec_index(std::string_view name);
+ std::string get_section_name(std::string_view name);
void finish_pending_string();
std::string m_pending_name;
bool m_keyval;
}
template <typename T>
-void HTMLFormatter::dump_template(const char *name, T arg)
+void HTMLFormatter::dump_template(std::string_view name, T arg)
{
print_spaces();
m_ss << "<li>" << name << ": " << arg << "</li>";
m_ss << "\n";
}
-void HTMLFormatter::dump_unsigned(const char *name, uint64_t u)
+void HTMLFormatter::dump_unsigned(std::string_view name, uint64_t u)
{
dump_template(name, u);
}
-void HTMLFormatter::dump_int(const char *name, int64_t u)
+void HTMLFormatter::dump_int(std::string_view name, int64_t u)
{
dump_template(name, u);
}
-void HTMLFormatter::dump_float(const char *name, double d)
+void HTMLFormatter::dump_float(std::string_view name, double d)
{
dump_template(name, d);
}
-void HTMLFormatter::dump_string(const char *name, std::string_view s)
+void HTMLFormatter::dump_string(std::string_view name, std::string_view s)
{
dump_template(name, xml_stream_escaper(s));
}
-void HTMLFormatter::dump_string_with_attrs(const char *name, std::string_view s, const FormatterAttrs& attrs)
+void HTMLFormatter::dump_string_with_attrs(std::string_view name, std::string_view s, const FormatterAttrs& attrs)
{
std::string e(name);
std::string attrs_str;
m_ss << "\n";
}
-std::ostream& HTMLFormatter::dump_stream(const char *name)
+std::ostream& HTMLFormatter::dump_stream(std::string_view name)
{
print_spaces();
m_pending_string_name = "li";
return m_pending_string;
}
-void HTMLFormatter::dump_format_va(const char* name, const char *ns, bool quoted, const char *fmt, va_list ap)
+void HTMLFormatter::dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap)
{
char buf[LARGE_SIZE];
size_t len = vsnprintf(buf, LARGE_SIZE, fmt, ap);
void set_status(int status, const char* status_name) override;
void output_header() override;
- void dump_unsigned(const char *name, uint64_t u) override;
- void dump_int(const char *name, int64_t u) override;
- void dump_float(const char *name, double d) override;
- void dump_string(const char *name, std::string_view s) override;
- std::ostream& dump_stream(const char *name) override;
- void dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
+ void dump_unsigned(std::string_view name, uint64_t u) override;
+ void dump_int(std::string_view name, int64_t u) override;
+ void dump_float(std::string_view name, double d) override;
+ void dump_string(std::string_view name, std::string_view s) override;
+ std::ostream& dump_stream(std::string_view name) override;
+ void dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
/* with attrs */
- void dump_string_with_attrs(const char *name, std::string_view s, const FormatterAttrs& attrs) override;
+ void dump_string_with_attrs(std::string_view name, std::string_view s, const FormatterAttrs& attrs) override;
private:
- template <typename T> void dump_template(const char *name, T arg);
+ template <typename T> void dump_template(std::string_view name, T arg);
int m_status;
const char* m_status_name;
}
}
-bool JSONFormattable::handle_value(const char *name, std::string_view s, bool quoted) {
+bool JSONFormattable::handle_value(std::string_view name, std::string_view s, bool quoted) {
JSONFormattable *new_val;
if (cur_enc->is_array()) {
cur_enc->arr.push_back(JSONFormattable());
new_val = &cur_enc->arr.back();
} else {
cur_enc->set_type(JSONFormattable::FMT_OBJ);
- new_val = &cur_enc->obj[name];
+ new_val = &cur_enc->obj[string{name}];
}
new_val->set_type(JSONFormattable::FMT_VALUE);
new_val->value.set(s, quoted);
return false;
}
-bool JSONFormattable::handle_open_section(const char *name, const char *ns, bool section_is_array) {
+
+bool JSONFormattable::handle_open_section(std::string_view name,
+ const char *ns,
+ bool section_is_array) {
if (cur_enc->is_array()) {
cur_enc->arr.push_back(JSONFormattable());
cur_enc = &cur_enc->arr.back();
/* only open a new section if already nested,
* otherwise root is the container
*/
- cur_enc = &cur_enc->obj[name];
+ cur_enc = &cur_enc->obj[string{name}];
}
enc_stack.push_back(cur_enc);
JSONFormattable *cur_enc;
protected:
- bool handle_value(const char *name, std::string_view s, bool quoted) override;
- bool handle_open_section(const char *name, const char *ns, bool section_is_array) override;
+ bool handle_value(std::string_view name, std::string_view s, bool quoted) override;
+ bool handle_open_section(std::string_view name, const char *ns, bool section_is_array) override;
bool handle_close_section() override;
public:
using arg_desc_t = std::map<std::string_view, std::string_view>;
// Snarf up all the key=val,key=val pairs, put 'em in a dict.
-template<class String>
-arg_desc_t cmddesc_get_args(const String& cmddesc)
+arg_desc_t cmddesc_get_args(const string_view cmddesc)
{
arg_desc_t arg_desc;
for_each_substr(cmddesc, ",", [&](auto kv) {
#define LARGE_SIZE 1024
-void PyFormatter::open_array_section(const char *name)
+void PyFormatter::open_array_section(std::string_view name)
{
PyObject *list = PyList_New(0);
dump_pyobject(name, list);
cursor = list;
}
-void PyFormatter::open_object_section(const char *name)
+void PyFormatter::open_object_section(std::string_view name)
{
PyObject *dict = PyDict_New();
dump_pyobject(name, dict);
cursor = dict;
}
-void PyFormatter::dump_unsigned(const char *name, uint64_t u)
+void PyFormatter::dump_unsigned(std::string_view name, uint64_t u)
{
PyObject *p = PyLong_FromUnsignedLong(u);
ceph_assert(p);
dump_pyobject(name, p);
}
-void PyFormatter::dump_int(const char *name, int64_t u)
+void PyFormatter::dump_int(std::string_view name, int64_t u)
{
PyObject *p = PyLong_FromLongLong(u);
ceph_assert(p);
dump_pyobject(name, p);
}
-void PyFormatter::dump_float(const char *name, double d)
+void PyFormatter::dump_float(std::string_view name, double d)
{
dump_pyobject(name, PyFloat_FromDouble(d));
}
-void PyFormatter::dump_string(const char *name, std::string_view s)
+void PyFormatter::dump_string(std::string_view name, std::string_view s)
{
dump_pyobject(name, PyUnicode_FromString(s.data()));
}
-void PyFormatter::dump_bool(const char *name, bool b)
+void PyFormatter::dump_bool(std::string_view name, bool b)
{
if (b) {
Py_INCREF(Py_True);
}
}
-std::ostream& PyFormatter::dump_stream(const char *name)
+std::ostream& PyFormatter::dump_stream(std::string_view name)
{
// Give the caller an ostream, construct a PyString,
// and remember the association between the two. On flush,
return ps->stream;
}
-void PyFormatter::dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap)
+void PyFormatter::dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap)
{
char buf[LARGE_SIZE];
vsnprintf(buf, LARGE_SIZE, fmt, ap);
/**
* Steals reference to `p`
*/
-void PyFormatter::dump_pyobject(const char *name, PyObject *p)
+void PyFormatter::dump_pyobject(std::string_view name, PyObject *p)
{
if (PyList_Check(cursor)) {
PyList_Append(cursor, p);
Py_DECREF(p);
} else if (PyDict_Check(cursor)) {
- PyObject *key = PyUnicode_FromString(name);
+ PyObject *key = PyUnicode_DecodeUTF8(name.data(), name.size(), nullptr);
PyDict_SetItem(cursor, key, p);
Py_DECREF(key);
Py_DECREF(p);
}
// Obscure, don't care.
- void open_array_section_in_ns(const char *name, const char *ns) override
+ void open_array_section_in_ns(std::string_view name, const char *ns) override
{ceph_abort();}
- void open_object_section_in_ns(const char *name, const char *ns) override
+ void open_object_section_in_ns(std::string_view name, const char *ns) override
{ceph_abort();}
void reset() override
void output_footer() override {};
void enable_line_break() override {};
- void open_array_section(const char *name) override;
- void open_object_section(const char *name) override;
+ void open_array_section(std::string_view name) override;
+ void open_object_section(std::string_view name) override;
void close_section() override
{
ceph_assert(cursor != root);
cursor = stack.top();
stack.pop();
}
- void dump_bool(const char *name, bool b) override;
- void dump_unsigned(const char *name, uint64_t u) override;
- void dump_int(const char *name, int64_t u) override;
- void dump_float(const char *name, double d) override;
- void dump_string(const char *name, std::string_view s) override;
- std::ostream& dump_stream(const char *name) override;
- void dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
+ void dump_bool(std::string_view name, bool b) override;
+ void dump_unsigned(std::string_view name, uint64_t u) override;
+ void dump_int(std::string_view name, int64_t u) override;
+ void dump_float(std::string_view name, double d) override;
+ void dump_string(std::string_view name, std::string_view s) override;
+ std::ostream& dump_stream(std::string_view name) override;
+ void dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
void flush(std::ostream& os) override
{
PyObject *cursor;
std::stack<PyObject *> stack;
- void dump_pyobject(const char *name, PyObject *p);
+ void dump_pyobject(std::string_view name, PyObject *p);
class PendingStream {
public:
min_stack_level = 0;
}
-void RGWFormatter_Plain::open_array_section(const char *name)
+void RGWFormatter_Plain::open_array_section(std::string_view name)
{
struct plain_stack_entry new_entry;
new_entry.is_array = true;
stack.push_back(new_entry);
}
-void RGWFormatter_Plain::open_array_section_in_ns(const char *name, const char *ns)
+void RGWFormatter_Plain::open_array_section_in_ns(std::string_view name, const char *ns)
{
ostringstream oss;
oss << name << " " << ns;
open_array_section(oss.str().c_str());
}
-void RGWFormatter_Plain::open_object_section(const char *name)
+void RGWFormatter_Plain::open_object_section(std::string_view name)
{
struct plain_stack_entry new_entry;
new_entry.is_array = false;
stack.push_back(new_entry);
}
-void RGWFormatter_Plain::open_object_section_in_ns(const char *name,
+void RGWFormatter_Plain::open_object_section_in_ns(std::string_view name,
const char *ns)
{
ostringstream oss;
stack.pop_back();
}
-void RGWFormatter_Plain::dump_unsigned(const char *name, uint64_t u)
+void RGWFormatter_Plain::dump_unsigned(std::string_view name, uint64_t u)
{
dump_value_int(name, "%" PRIu64, u);
}
-void RGWFormatter_Plain::dump_int(const char *name, int64_t u)
+void RGWFormatter_Plain::dump_int(std::string_view name, int64_t u)
{
dump_value_int(name, "%" PRId64, u);
}
-void RGWFormatter_Plain::dump_float(const char *name, double d)
+void RGWFormatter_Plain::dump_float(std::string_view name, double d)
{
dump_value_int(name, "%f", d);
}
-void RGWFormatter_Plain::dump_string(const char *name, std::string_view s)
+void RGWFormatter_Plain::dump_string(std::string_view name, std::string_view s)
{
dump_format(name, "%s", s.data());
}
-std::ostream& RGWFormatter_Plain::dump_stream(const char *name)
+std::ostream& RGWFormatter_Plain::dump_stream(std::string_view name)
{
// TODO: implement this!
ceph_abort();
}
-void RGWFormatter_Plain::dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap)
+void RGWFormatter_Plain::dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap)
{
char buf[LARGE_SIZE];
free(p);
}
-void RGWFormatter_Plain::dump_value_int(const char *name, const char *fmt, ...)
+void RGWFormatter_Plain::dump_value_int(std::string_view name, const char *fmt, ...)
{
char buf[LARGE_SIZE];
va_list ap;
void flush(ostream& os) override;
void reset() override;
- void open_array_section(const char *name) override;
- void open_array_section_in_ns(const char *name, const char *ns) override;
- void open_object_section(const char *name) override;
- void open_object_section_in_ns(const char *name, const char *ns) override;
+ void open_array_section(std::string_view name) override;
+ void open_array_section_in_ns(std::string_view name, const char *ns) override;
+ void open_object_section(std::string_view name) override;
+ void open_object_section_in_ns(std::string_view name, const char *ns) override;
void close_section() override;
- void dump_unsigned(const char *name, uint64_t u) override;
- void dump_int(const char *name, int64_t u) override;
- void dump_float(const char *name, double d) override;
- void dump_string(const char *name, std::string_view s) override;
- std::ostream& dump_stream(const char *name) override;
- void dump_format_va(const char *name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
+ void dump_unsigned(std::string_view name, uint64_t u) override;
+ void dump_int(std::string_view name, int64_t u) override;
+ void dump_float(std::string_view name, double d) override;
+ void dump_string(std::string_view name, std::string_view s) override;
+ std::ostream& dump_stream(std::string_view name) override;
+ void dump_format_va(std::string_view name, const char *ns, bool quoted, const char *fmt, va_list ap) override;
int get_len() const override;
void write_raw_data(const char *data) override;
private:
void write_data(const char *fmt, ...);
- void dump_value_int(const char *name, const char *fmt, ...);
+ void dump_value_int(std::string_view name, const char *fmt, ...);
char *buf = nullptr;
int len = 0;