Re: mutable

2009-09-23 Thread jayt0...@gmail.com

that's the document I was looking for.  thanks so much!

Jay

On Sep 23, 10:23 am, Kenton Varda  wrote:
> The different accessor functions for C++ protobuf classes are documented in
> detail here:
>
> http://code.google.com/apis/protocolbuffers/docs/reference/cpp-genera...
>
> Message objects can be large, so you should avoid copying them if possible.
>  Instead, you should use the mutable_() accessor to get a pointer to the
> sub-message early on, and then modify that sub-message directly, rather than
> build a separate object and then copy it.  For example:
>
> DON'T do this:
>   Foo foo;
>   SetupFoo(&foo);
>   Bar bar;
>   bar.mutable_foo()->CopyFrom(foo);
>
> Do this instead:
>   Bar bar;
>   SetupFoo(bar.mutable_foo());
>
> This avoids copying, thus making your code more efficient.  It's also
> shorter.
>
> On Wed, Sep 23, 2009 at 8:13 AM, 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?
>
> > Thanks!
>
> > Jay
--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread Kenton Varda
The different accessor functions for C++ protobuf classes are documented in
detail here:

http://code.google.com/apis/protocolbuffers/docs/reference/cpp-generated.html

Message objects can be large, so you should avoid copying them if possible.
 Instead, you should use the mutable_() accessor to get a pointer to the
sub-message early on, and then modify that sub-message directly, rather than
build a separate object and then copy it.  For example:

DON'T do this:
  Foo foo;
  SetupFoo(&foo);
  Bar bar;
  bar.mutable_foo()->CopyFrom(foo);

Do this instead:
  Bar bar;
  SetupFoo(bar.mutable_foo());

This avoids copying, thus making your code more efficient.  It's also
shorter.

On Wed, Sep 23, 2009 at 8:13 AM, 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?
>
> Thanks!
>
> Jay
> >
>

--~--~-~--~~~---~--~~
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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread Henner Zeller

On Wed, Sep 23, 2009 at 09:53, jayt0...@gmail.com  wrote:
>
> what about if you have something like
>
>  message foo1 {
>    optional int32 value1 = 1;
>    optional int32 value2 = 2;
>
>  }
>
>  message foo2 {
>    repeated foo1 stuff1 = 1;
>    optional foo1 stuff2 = 2;
>  }
>
> do you know how to add another stuff1 to foo2 structure?

 foo1* added_value = foo2_message.add_stuff1();
 added_value->set_value1(42);
 added_value->set_value2(43);

 .. or the usual with CopyFrom()
 foo2_message.add_stuff1()->CopyFrom(some_foo1);

>
>
> On Sep 23, 8:45 am, "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.
>>
>> On Sep 23, 8:25 am, Henner Zeller  wrote:
>>
>> > Hi,
>>
>> > On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread jayt0...@gmail.com

what about if you have something like

 message foo1 {
optional int32 value1 = 1;
optional int32 value2 = 2;

 }

 message foo2 {
repeated foo1 stuff1 = 1;
optional foo1 stuff2 = 2;
  }

do you know how to add another stuff1 to foo2 structure?


On Sep 23, 8:45 am, "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.
>
> On Sep 23, 8:25 am, Henner Zeller  wrote:
>
> > Hi,
>
> > On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread jayt0...@gmail.com

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  wrote:
> On Wed, Sep 23, 2009 at 08:45, 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  wrote:
> >> Hi,
>
> >> On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread jayt0...@gmail.com

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  wrote:
> On Wed, Sep 23, 2009 at 08:45, 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  wrote:
> >> Hi,
>
> >> On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread Henner Zeller

On Wed, Sep 23, 2009 at 08:54, jayt0...@gmail.com  wrote:
>
> 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.

So a string you can just set like that
  message Foo {
 optional string value = 1;
 }

 Foo message;
 message.set_value("hello world");

>
> 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  wrote:
>> On Wed, Sep 23, 2009 at 08:45, 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  wrote:
>> >> Hi,
>>
>> >> On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread jayt0...@gmail.com

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  wrote:
> On Wed, Sep 23, 2009 at 08:45, 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  wrote:
> >> Hi,
>
> >> On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread Henner Zeller

On Wed, Sep 23, 2009 at 08:45, 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  wrote:
>> Hi,
>>
>> On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread Henner Zeller

On Wed, Sep 23, 2009 at 08:37, jayt0...@gmail.com  wrote:
>
> wow.  I will try that.  Yes, I am trying to set a complete 'foo'
> message.
>
> Is there documentation anywhere on this? I am coming up empty with web
> searches...

The api-documentation has it
  
http://code.google.com/apis/protocolbuffers/docs/reference/cpp/google.protobuf.message.html

.. and the tutorial mentions them as well, but not with an example
  http://code.google.com/apis/protocolbuffers/docs/cpptutorial.html

>
> On Sep 23, 8:25 am, Henner Zeller  wrote:
>> Hi,
>>
>> On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread jayt0...@gmail.com

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.


On Sep 23, 8:25 am, Henner Zeller  wrote:
> Hi,
>
> On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread jayt0...@gmail.com

wow.  I will try that.  Yes, I am trying to set a complete 'foo'
message.

Is there documentation anywhere on this? I am coming up empty with web
searches...

On Sep 23, 8:25 am, Henner Zeller  wrote:
> Hi,
>
> On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread Henner Zeller

>  Bar bar_message;
>  bar_message.mutable_bar()->CopyFrom(foo_message);

.. and that should of course be a
bar_message.mutable_foo()->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
-~--~~~~--~~--~--~---



Re: mutable

2009-09-23 Thread Henner Zeller

Hi,
On Wed, Sep 23, 2009 at 08:13, 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
-~--~~~~--~~--~--~---