本文整理汇总了C++中AutoBuffer::getBuffer方法的典型用法代码示例。如果您正苦于以下问题:C++ AutoBuffer::getBuffer方法的具体用法?C++ AutoBuffer::getBuffer怎么用?C++ AutoBuffer::getBuffer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AutoBuffer
的用法示例。
在下文中一共展示了AutoBuffer::getBuffer方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
char *attribute_to_string(const AttributeType *attr) {
IService *iserv;
AutoBuffer *buf = &strBuffer;
if (attr->is_nil()) {
buf->write_string("None");
} else if (attr->is_int64() || attr->is_uint64()) {
buf->write_uint64(attr->to_uint64());
} else if (attr->is_string()) {
buf->write_string('\'');
buf->write_string(attr->to_string());
buf->write_string('\'');
} else if (attr->is_bool()) {
if (attr->to_bool()) {
buf->write_string("true");
} else {
buf->write_string("false");
}
} else if (attr->is_list()) {
AttributeType list_item;
unsigned list_sz = attr->size();
buf->write_string('[');
for (unsigned i = 0; i < list_sz; i++) {
list_item = (*attr)[i];
attribute_to_string(&list_item);
if (i < (list_sz - 1)) {
buf->write_string(',');
}
}
buf->write_string(']');
} else if (attr->is_dict()) {
AttributeType dict_item;
unsigned dict_sz = attr->size();;
buf->write_string('{');
for (unsigned i = 0; i < dict_sz; i++) {
buf->write_string('\'');
buf->write_string(attr->u_.dict[i].key_.to_string());
buf->write_string('\'');
buf->write_string(':');
const AttributeType &dict_value = (*attr)[i];
attribute_to_string(&dict_value);
if (i < (dict_sz - 1)) {
buf->write_string(',');
}
}
buf->write_string('}');
} else if (attr->is_data()) {
buf->write_string('(');
if (attr->size() > 0) {
for (unsigned n = 0; n < attr->size()-1; n++) {
buf->write_byte((*attr)(n));
buf->write_string(',');
}
buf->write_byte((*attr)(attr->size()-1));
}
buf->write_string(')');
} else if (attr->is_iface()) {
IFace *iface = attr->to_iface();
if (strcmp(iface->getFaceName(), IFACE_SERVICE) == 0) {
iserv = static_cast<IService *>(iface);
buf->write_string('{');
buf->write_string("'Type':'");
buf->write_string(iface->getFaceName());
buf->write_string("','ModuleName':'");
buf->write_string(iserv->getObjName());
buf->write_string("'}");
} else {
RISCV_printf(NULL, LOG_ERROR,
"Not implemented interface to dict. method");
}
}
return buf->getBuffer();
}
示例2: while
const char *string_to_attribute(const char *cfg,
AttributeType *out) {
const char *pcur = skip_special_symbols(cfg);
if (pcur[0] == '\'' || pcur[0] == '"') {
AutoBuffer buf;
uint8_t t1 = pcur[0];
int str_sz = 0;
pcur++;
while (*pcur != t1 && *pcur != '\0') {
pcur++;
str_sz++;
}
buf.write_bin(&cfg[1], str_sz);
pcur++;
out->make_string(buf.getBuffer());
} else if (pcur[0] == '[') {
pcur++;
pcur = skip_special_symbols(pcur);
AttributeType new_item;
out->make_list(0);
while (*pcur != ']' && *pcur != '\0') {
pcur = string_to_attribute(pcur, &new_item);
out->realloc_list(out->size() + 1);
(*out)[out->size() - 1] = new_item;
pcur = skip_special_symbols(pcur);
if (*pcur == ',') {
pcur++;
pcur = skip_special_symbols(pcur);
}
}
pcur++;
pcur = skip_special_symbols(pcur);
} else if (pcur[0] == '{') {
AttributeType new_key;
AttributeType new_value;
out->make_dict();
pcur++;
pcur = skip_special_symbols(pcur);
while (*pcur != '}' && *pcur != '\0') {
pcur = string_to_attribute(pcur, &new_key);
pcur = skip_special_symbols(pcur);
if (*pcur == ':') {
pcur++;
}
pcur = skip_special_symbols(pcur);
pcur = string_to_attribute(pcur, &new_value);
(*out)[new_key.to_string()] = new_value;
pcur = skip_special_symbols(pcur);
if (*pcur == ',') {
pcur++;
pcur = skip_special_symbols(pcur);
}
}
pcur++;
pcur = skip_special_symbols(pcur);
if (out->has_key("Type")) {
if (strcmp((*out)["Type"].to_string(), IFACE_SERVICE) == 0) {
IService *iserv;
iserv = static_cast<IService *>(
RISCV_get_service((*out)["ModuleName"].to_string()));
out->attr_free();
*out = AttributeType(iserv);
} else {
RISCV_printf(NULL, LOG_ERROR,
"Not implemented string to dict. attribute");
}
}
} else if (pcur[0] == '(') {
AutoBuffer buf;
char byte_value;
pcur++;
pcur = skip_special_symbols(pcur);
while (*pcur != ')' && *pcur != '\0') {
byte_value = 0;
for (int n = 0; n < 2; n++) {
if (*pcur >= 'A' && *pcur <= 'F') {
byte_value = (byte_value << 4) | ((*pcur - 'A') + 10);
} else {
byte_value = (byte_value << 4) | (*pcur - '0');
}
pcur++;
}
buf.write_bin(&byte_value, 1);
pcur = skip_special_symbols(pcur);
if (*pcur == ',') {
pcur++;
pcur = skip_special_symbols(pcur);
}
}
out->make_data(buf.size(), buf.getBuffer());
pcur++;
pcur = skip_special_symbols(pcur);
} else {
//.........这里部分代码省略.........
示例3:
char *AttributeType::to_config() {
strBuffer.clear();
attribute_to_string(this);
return strBuffer.getBuffer();
}