so this has to be done whenever there is a compound type? I.e. types
used for messages that are defined in other messages?

If not, what is the rule for when a mutable pointer has to be
obtained?

I am also noticing that I am having what appears to be this same
problem when using 'string' type for foo1.

Trying to find a pattern here...

Thanks so much for your help.  You are a life saver...

Jay


On Sep 23, 8:47 am, Henner Zeller <h.zel...@acm.org> wrote:
> On Wed, Sep 23, 2009 at 08:45, jayt0...@gmail.com <jayt0...@gmail.com> wrote:
>
> > message foo1 {
> >   optional int32 value1 = 1;
> >   optional int32 value2 = 2;
> > }
>
> > message foo2 {
> >   optional foo1 stuff1 = 1;
> >   optional foo2 stuff2 = 2;
> > }
>
> > foo1 msg_foo1;
> > foo2 msg_foo2;
>
> > msg_foo2.set_stuff1(foo1);
>
> > This is the concept of what I'm trying to do.
>
> Yeah, that will work with CopyFrom()
>   msg_foo2.mutable_stuff1()->CopyFrom(foo1);
>
>
>
> > On Sep 23, 8:25 am, Henner Zeller <h.zel...@acm.org> wrote:
> >> Hi,
>
> >> On Wed, Sep 23, 2009 at 08:13, jayt0...@gmail.com <jayt0...@gmail.com> 
> >> wrote:
>
> >> > I am having trouble accessing many members of my .proto file.  It
> >> > seems that compound members are not accessible with set_() method
> >> > calls.  I saw in your example code the use of mutable_() calls. What
> >> > does this apply to and is there documentation on it? could this be the
> >> > solution to my problem?
>
> >> You should describe your problem more closely, it is not quite clear
> >> what you mean.
>
> >> If you have a message Bar, that contains a message Foo, say:
>
> >> message Foo {
> >>    optional int32 value = 1;
>
> >> }
>
> >> message Bar {
> >>    optional Foo foo = 1;
>
> >> }
>
> >> you would access 'foo' to set a value with
> >>    Bar message;
> >>    message.mutable_foo()->set_value(42);
> >> If there is no 'foo', it will implicitly be created (so has_bar() will
> >> return 'true' afterwards').
>
> >> .. while accessing can be const
> >>    if (message.has_foo())
> >>       printf("%d", message.bar().value());
>
> >> But it sounds like you would like to 'set' a complete Foo message. So
> >> if you want to 'set' a complete Foo, you would use CopyFrom()
> >>   Foo foo_message;
> >>   foo_message.set_value(42);
>
> >>   Bar bar_message;
> >>   bar_message.mutable_bar()->CopyFrom(foo_message);
>
> >> -h
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To post to this group, send email to protobuf@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