Commit 92b6d86c authored by Stanislav Kinsbursky's avatar Stanislav Kinsbursky Committed by Pavel Emelyanov

protobuf: helper for show function selection introduced

Signed-off-by: 's avatarStanislav Kinsbursky <skinsbursky@openvz.org>
Signed-off-by: 's avatarPavel Emelyanov <xemul@parallels.com>
parent f64633bd
...@@ -264,56 +264,52 @@ static size_t pb_show_prepare_field_context(const ProtobufCFieldDescriptor *fd, ...@@ -264,56 +264,52 @@ static size_t pb_show_prepare_field_context(const ProtobufCFieldDescriptor *fd,
return fsize; return fsize;
} }
static void pb_show_field(const ProtobufCFieldDescriptor *fd, static pb_pr_show_t get_pb_show_function(int type)
unsigned long nr_fields, pb_pr_ctl_t *ctl)
{ {
pb_pr_show_t show; switch (type) {
pb_pr_field_t *field = &ctl->cur;
unsigned long counter;
size_t fsize;
print_tabs(ctl);
pr_msg("%s: ", fd->name);
fsize = pb_show_prepare_field_context(fd, ctl);
switch (fd->type) {
case PROTOBUF_C_TYPE_INT32: case PROTOBUF_C_TYPE_INT32:
case PROTOBUF_C_TYPE_SINT32: case PROTOBUF_C_TYPE_SINT32:
case PROTOBUF_C_TYPE_UINT32: case PROTOBUF_C_TYPE_UINT32:
case PROTOBUF_C_TYPE_SFIXED32: case PROTOBUF_C_TYPE_SFIXED32:
show = pb_msg_int32x; return pb_msg_int32x;
break;
case PROTOBUF_C_TYPE_INT64: case PROTOBUF_C_TYPE_INT64:
case PROTOBUF_C_TYPE_SINT64: case PROTOBUF_C_TYPE_SINT64:
case PROTOBUF_C_TYPE_SFIXED64: case PROTOBUF_C_TYPE_SFIXED64:
case PROTOBUF_C_TYPE_FIXED32: case PROTOBUF_C_TYPE_FIXED32:
case PROTOBUF_C_TYPE_UINT64: case PROTOBUF_C_TYPE_UINT64:
case PROTOBUF_C_TYPE_FIXED64: case PROTOBUF_C_TYPE_FIXED64:
show = pb_msg_int64x; return pb_msg_int64x;
break;
case PROTOBUF_C_TYPE_STRING: case PROTOBUF_C_TYPE_STRING:
show = pb_msg_string; return pb_msg_string;
break;
case PROTOBUF_C_TYPE_MESSAGE: case PROTOBUF_C_TYPE_MESSAGE:
show = show_nested_message; return show_nested_message;
break;
case PROTOBUF_C_TYPE_ENUM: case PROTOBUF_C_TYPE_ENUM:
show = show_enum; return show_enum;
break;
case PROTOBUF_C_TYPE_BOOL:
show = show_bool;
fsize = 4;
break;
case PROTOBUF_C_TYPE_FLOAT: case PROTOBUF_C_TYPE_FLOAT:
case PROTOBUF_C_TYPE_DOUBLE: case PROTOBUF_C_TYPE_DOUBLE:
case PROTOBUF_C_TYPE_BOOL:
case PROTOBUF_C_TYPE_BYTES: case PROTOBUF_C_TYPE_BYTES:
return show_bool;
default: default:
show = pb_msg_unk; BUG();
nr_fields = 1;
break;
} }
return pb_msg_unk;
}
static void pb_show_field(const ProtobufCFieldDescriptor *fd,
unsigned long nr_fields, pb_pr_ctl_t *ctl)
{
pb_pr_show_t show;
pb_pr_field_t *field = &ctl->cur;
unsigned long counter;
size_t fsize;
print_tabs(ctl);
pr_msg("%s: ", fd->name);
fsize = pb_show_prepare_field_context(fd, ctl);
show = get_pb_show_function(fd->type);
show(field->data, ctl); show(field->data, ctl);
field->data += fsize; field->data += fsize;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment