本文整理汇总了C++中variant::serialize_to_string方法的典型用法代码示例。如果您正苦于以下问题:C++ variant::serialize_to_string方法的具体用法?C++ variant::serialize_to_string怎么用?C++ variant::serialize_to_string使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类variant
的用法示例。
在下文中一共展示了variant::serialize_to_string方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: variant
variant variant::operator+(const variant& v) const
{
if(type_ == TYPE_INT && v.type_ == TYPE_INT) {
//strictly an optimization -- this is handled below, but the case
//of adding two integers is the most common so we want it to be fast.
return variant(int_value_ + v.int_value_);
}
if(type_ == TYPE_STRING) {
if(v.type_ == TYPE_MAP) {
return variant(as_string() + v.as_string());
} else if(v.type_ == TYPE_STRING) {
return variant(as_string() + v.as_string());
}
std::string s;
v.serialize_to_string(s);
return variant(as_string() + s);
}
if(v.type_ == TYPE_STRING) {
std::string s;
serialize_to_string(s);
return variant(s + v.as_string());
}
if(type_ == TYPE_DECIMAL || v.type_ == TYPE_DECIMAL) {
return variant(as_decimal() + v.as_decimal());
}
if(type_ == TYPE_INT) {
return variant(int_value_ + v.as_int());
}
if(type_ == TYPE_NULL) {
return v;
} else if(v.type_ == TYPE_NULL) {
return *this;
}
if(type_ == TYPE_LIST) {
if(v.type_ == TYPE_LIST) {
std::vector<variant> res;
res.reserve(list_->elements.size() + v.list_->elements.size());
for(size_t i = 0; i<list_->elements.size(); ++i) {
const variant& var = list_->elements[i];
res.push_back(var);
}
for(size_t j = 0; j<v.list_->elements.size(); ++j) {
const variant& var = v.list_->elements[j];
res.push_back(var);
}
return variant(&res);
}
}
if(type_ == TYPE_MAP) {
if(v.type_ == TYPE_MAP) {
std::map<variant,variant> res(map_->elements);
for(std::map<variant,variant>::const_iterator i = v.map_->elements.begin(); i != v.map_->elements.end(); ++i) {
res[i->first] = i->second;
}
return variant(&res);
}
}
return variant(as_int() + v.as_int());
}