Amazing! Completely overlooked that method. Thanks a ton!

On May 4, 12:46 pm, Jason Hsueh <jas...@google.com> wrote:
> Ah, you want AddMessage() instead then. That'll return a pointer to a valid
> message object, and you can call GetReflection() on that.
>
>
>
> On Tue, May 4, 2010 at 9:43 AM, Ryan <droopyk...@gmail.com> wrote:
> > Ah, yes, I will update that loop.
>
> > I'm still a little confused about something though. Ultimately I am
> > trying to create an entry, and set a field, within this nested-
> > repeated message. However, how can I create an entry without first
> > getting the reflection for the nested message? My .proto file is as
> > follows:
>
> > package db;
> > message Database {
>
> > message Team {
> > required string name = 1;
> > optional string city = 2;
> > }
>
> > // true if the data should be stored to the database
> > required bool write = 1;
>
> >  // fill this in to ask about the items in the 'roster' or
> > 'league'
> > optional string query = 2;
>
> > message Player {
> > required string name = 1;
> > optional float batting_avg = 2;
> > }
> > // list of players
> > repeated Player roster = 3;
> > // list of teams
> > repeated Team league = 4;
> > }
>
> > I am trying to dynamically create a new entry in roster, and set the
> > name and batting_avg of the Player within that entry.
>
> > This is my first time using protocol buffers, and I feel like I must
> > be missing a fundamental step here =)
>
> > Thanks for the help!
>
> > -Ryan
>
> > On May 4, 12:23 pm, Jason Hsueh <jas...@google.com> wrote:
> > > Your msg is completely empty. There aren't any entries in the repeated
> > field
> > > - FieldSize() should be returning 0. Your loop needs to terminate when i
> > <
> > > size, not i <= size - accessing the 1st element of an empty repeated
> > field
> > > is going to return an invalid pointer.
>
> > > FYI bounds checking is done in debug mode, so you'd get more informative
> > > assertion failures rather than segfaults.
>
> > > On Mon, May 3, 2010 at 10:12 PM, Ryan <droopyk...@gmail.com> wrote:
> > > > Hello all,
>
> > > > I am getting a segmentation fault when trying to use the
> > > > MutableRepeatedMessage() class with a nested repeated method. My
> > > > simple C++ code is as follows:
>
> > > > /* Decleration in bufferDB.h*/
> > > >        private:
> > > >                        std::string serialData;
> > > >                        Message* msg;
> > > >                        Message* nestedMsg;
> > > >                        const Descriptor* msgDescript;
> > > >                        const Reflection* msgReflect;
> > > >                        const FieldDescriptor* msgField;
>
> > > >                        const Descriptor* nestedDescript;
> > > >                        const Reflection* nestedReflect;
> > > >                        const FieldDescriptor* nestedField;
>
> > > > /*Definition in bufferDB.cpp */
> > > > msg = new db::Database;
> > > >        msgDescript = msg->GetDescriptor();
> > > >        msgReflect = msg->GetReflection();
> > > >        msgField = msgDescript->field(2);
>
> > >        //msgReflect->MutableRepeatedMessage(msg, msgField, 0)-
>
> > > > >DiscardUnknownFields();
>
> > >         if (msgField->cpp_type() == FieldDescriptor::CPPTYPE_MESSAGE)
>
> > > >         {
> > > >                printf("Field is a MESSAGE\n");
> > > >              if (msgField->is_repeated())
> > > >              {
> > > >                        printf("Field is Repeated\n");
> > > >                int size = msgReflect->FieldSize(*msg, msgField);
> > > >                        printf("Field size is %d\n",size);
> > > >                for (int i = 0; i <= size; i++)
> > > >                {
> > > >                        printf("I went inside this loop");
> > > >                        nestedReflect =
> > > > msgReflect->MutableRepeatedMessage(msg, msgField,
> > > > i)->GetReflection();
>
> > > >                }
> > > >              }
> > > >              else
> > > >              {
> > > >                        printf("Field is NOT repeated");
> > > >                const Message& sub_message =
> > msgReflect->GetMessage(*msg,
> > > > msgField);
> > > >              }
> > > >          }
>
> > > > The segmentation fault occurs when I call GetReflection(). Am I doing
> > > > something wrong with the use of the mutable message pointer being
> > > > returned from MutableRepeatedMessage?
>
> > > > Any help anyone could give me would be great. Thanks!
>
> > > > -Ryan
>
> > > > --
> > > > You received this message because you are subscribed to the Google
> > Groups
> > > > "Protocol Buffers" group.
> > > > To post to this group, send email to proto...@googlegroups.com.
> > > > To unsubscribe from this group, send email to
> > > > protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
> > <protobuf%2bunsubscr...@googlegroups.com<protobuf%252bunsubscr...@googlegroups.com>
>
> > > > .
> > > > For more options, visit this group at
> > > >http://groups.google.com/group/protobuf?hl=en.
>
> > > --
> > > You received this message because you are subscribed to the Google Groups
> > "Protocol Buffers" group.
> > > To post to this group, send email to proto...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
> > .
> > > For more options, visit this group athttp://
> > groups.google.com/group/protobuf?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google Groups
> > "Protocol Buffers" group.
> > To post to this group, send email to proto...@googlegroups.com.
> > To unsubscribe from this group, send email to
> > protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com>
> > .
> > For more options, visit this group at
> >http://groups.google.com/group/protobuf?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Protocol Buffers" group.
> To post to this group, send email to proto...@googlegroups.com.
> To unsubscribe from this group, send email to 
> protobuf+unsubscr...@googlegroups.com.
> For more options, visit this group 
> athttp://groups.google.com/group/protobuf?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to proto...@googlegroups.com.
To unsubscribe from this group, send email to 
protobuf+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/protobuf?hl=en.

Reply via email to