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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to