In descriptor.proto, you'll see an experimental map field.  It's not usable
atm.
In the meantime, you could always simulate a map serialization using a
repeated message with
odd field numbers as $key and even as $value (sequential).

On Wed, Oct 6, 2010 at 2:23 PM, Igor Gatis <igorga...@gmail.com> wrote:

> Not sure whether this has been discussed before. In any case...
>
> It would be nice to have mapped fields, e.g. key-value pairs. It would work
> similar to repeated fields, which are implicit maps, e.g 0..N keyed
> messages. Mapped fields would break from 0..N keys to int or string keys.
> Integers are very compact and that is very attractive in terms of wire
> format but settle with integer keys are not really greater than 0..N keys.
> Thus, string seems more suitable keys of mapped fields. Thus, it seems each
> item of a mapped field could be defined by the following template-like proto
> message:
>
> message KeyValuePair_of_SomeMessageType {
>   required string key = 1;
>   optional SomeMessageType value = 2;
> }
>
>
> Let's pick a example. Consider the following messages:
>
> message Foo {
>   optional int int_field = 1;
>   ...
> }
>
> message Bar {
>   mapped Foo foo = 1;
> }
>
> Internally, protobuf would read the above code as something like:
>
> message Foo {
>   optional int int_field = 1;
>   ...
> }
>
> // Known in code generation time only.
> message KeyValuePair_of_Foo {
>   required string key = 1;
>   optional Foo value = 2;
> }
>
> message Bar {
>   repeated KeyValuePair_of_Foo foo = 1;
> }
>
>
> And generated C++ code for Bar would look like:
>
> int32 foo_size() const;
> bool has_foo(const string& key) const;
> const Foo& foo(const string& key) const;
> Foo* mutable_foo(const string& key);
> void put_foo(const string& key, const Foo& foo);
> void remove_foo(const string& key);
> const RepeatedPtrField<string>& foo_keys() const;
> const RepeatedPtrField<const Foo&>& foo_values() const;
>
>
> Thoughts?
>
> -Gatis
>
> --
> 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.
>



-- 
When the cat is away, the mouse is alone.
- David Yu

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