Hi,

sorry for asking for advice so soon again.

I have progressed a bit futher and I am now trying to display decoded data. 
For that purpose I have prepared some data and tried to decode them but I 
have encountered problem with repeated structures and with nested messages. 
I dont know how to get count of repeats in case of repeated fields so its 
problematic to address them. In case of nested messages I have experiencing 
difficulties how to get message.

Here is function I have made so far. Note that I am suspecting that it will 
probably need some more tweaking so it can be called recursively (work 
still in progress). For now I am satisfied just by displaying data on first 
level.

void ExpandSubMessage(Message *message, Descriptor *descriptor)
{
    for (int i = 0; i < descriptor->field_count(); i++)
    {
        const FieldDescriptor* field = descriptor->field(i);
        switch (field->type())
        {
            case FieldDescriptor::TYPE_INT32:
            {
                int nVal = message->GetReflection()->GetInt32(*message, 
field);
                printf("%s = %d\n", field->name().c_str(), nVal);

                break;
            }
            case FieldDescriptor::TYPE_STRING:
            {
                std::string strVal = 
message->GetReflection()->GetString(*message, field);
                printf("%s = %s\n", field->name().c_str(), strVal.c_str());

                break;
            }
//            case FieldDescriptor::TYPE_ENUM: 
message->GetReflection()->GetEnum(*message, field); break;
            case FieldDescriptor::TYPE_MESSAGE:
            {
                Message *messVal;
                if (field->is_repeated())
                {
                    message->GetReflection()->GetRepeatedMessage(*message, 
field, 1);
                }
                else
                {
                    message->GetReflection()->GetMessage(*messVal, field);
                }
                printf("%s = %s\n", field->name().c_str(), 
/*messVal.DebugString().c_str()*/"Test");

                break;
            }
        }
    }
}

I have tried to look for details in specification on your pages but didn't 
find anything that would answer my question.

May I once again ask for your assistance?

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to